o
    թZh:                     @   s6   d dl Zd dlZd dlZd dlmZ G dd dZdS )    Nc                
   @   s  e Zd Zejdd dd dd dd dd dd dd gg d	d
dd Zejdddd Zdd Zdd Zdd Z	dd Z
dd Zdd Zejdddgd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zejjd.eg d/ejg d/d0d1ejdddejejgd0d1gg d2d3d4d5 Zd6d7 Zd8d9 Zejjd:g d;ejg d;d<d1eg d;gg d=d3d>d? Zejjd@dAdBdCejgdDfejdAdBdCejgdejjdEdFdGejdAdBdCejgd<d1dDfejdAdBdCejgd<d1dDfgg dHd3dIdJ Z ejdKddDgejdddLgdMdN Z!ejdddLgdOdP Z"dQdR Z#dSdT Z$dUdV Z%dWdX Z&dYdZ Z'd[d\ Z(d]d^ Z)d_d` Z*dadb Z+dcdd Z,dedf Z-dgdh Z.didj Z/dkdl Z0dmdn Z1dodp Z2dqdr Z3dLS )sBaseSetitemTestsc                 C   s   | j S Nindexx r   Z/var/www/html/lang_env/lib/python3.10/site-packages/pandas/tests/extension/base/setitem.py<lambda>   s    zBaseSetitemTests.<lambda>c                 C   s
   t | jS r   )listr   r   r   r   r	   r
      s   
 c                 C   s   t d S r   )slicer   r   r   r	   r
      s    c                 C   s   t dt| S )Nr   )r   lenr   r   r   r	   r
      s    c                 C   s   t t| S r   )ranger   r   r   r   r	   r
      s    c                 C   s   t tt| S r   )r   r   r   r   r   r   r	   r
      s    c                 C   s   t jt| tdS Ndtype)npZonesr   boolr   r   r   r	   r
      s    )r   zlist[index]Z
null_sliceZ
full_slicer   zlist(range)mask)paramsidsc                 C   s   |j S )z
        Fixture for an indexer to pass to obj.loc to get/set the full length of the
        object.

        In some cases, assumes that obj.index is the default RangeIndex.
        )param)selfrequestr   r   r	   full_indexer	   s   zBaseSetitemTests.full_indexerT)Zautousec                 C   sT   |j r&|j}|jdd dkrd S |jjdd }|dkr(td d S d S d S )N[r   test_is_immutable.r   z4__setitem__ test not applicable with immutable dtype)_is_immutablenodenamesplitfunction__qualname__pytestskip)r   r   r   r   Z
defined_inr   r   r	   skip_if_immutable&   s   z"BaseSetitemTests.skip_if_immutablec                 C   sh   |j jr"tt |d |d< W d    d S 1 sw   Y  d S |d |d< |d |d ks2J d S )Nr      )r   r   r$   raises	TypeError)r   datar   r   r	   r   6   s   "z"BaseSetitemTests.test_is_immutablec                 C   s2   |rt |}|d |d< |d |d ksJ d S Nr'   r   pdSeriesr   r*   box_in_seriesr   r   r	   test_setitem_scalar_series>   s   
z+BaseSetitemTests.test_setitem_scalar_seriesc                 C   sZ   |rt |}| }|d |d g|ddg< |d |d ks!J |d |d ks+J d S r+   )r-   r.   copyr   r*   r0   originalr   r   r	   test_setitem_sequenceD   s   
z&BaseSetitemTests.test_setitem_sequencec                 C   s   t |}| }|d g}|r|j||jd}d}tjt|dd ||ddg< W d    n1 s5w   Y  t	
|| tjt|dd ||td< W d    n1 s[w   Y  t	
|| d S )	Nr   r   z5cannot set using a {} indexer with a different lengthz	list-likematchr'   r      )r-   r.   r2   Z_from_sequencer   r$   r(   
ValueErrorformattmassert_series_equalr   )r   r*   Zas_arrayserr4   valuexprr   r   r	   .test_setitem_sequence_mismatched_length_raisesM   s   

z?BaseSetitemTests.test_setitem_sequence_mismatched_length_raisesc                 C   s8   |rt |}| }g |tjg td< t|| d S r   )r-   r.   r2   r   arrayintr;   assert_equalr3   r   r   r	   test_setitem_empty_indexer^   s
   
z+BaseSetitemTests.test_setitem_empty_indexerc                 C   sJ   |rt |}|d |ddg< |d |d ksJ |d |d ks#J d S )N   r   r'   r,   r/   r   r   r	    test_setitem_sequence_broadcastse   s
   
z1BaseSetitemTests.test_setitem_sequence_broadcastssetterlocilocc                 C   s8   t |}t||}|d |d< |d |d ksJ d S r+   )r-   r.   getattr)r   r*   rG   arrr   r   r	   test_setitem_scalarl   s   

z$BaseSetitemTests.test_setitem_scalarc                 C   sB   t tt||d}|d |jd< |jd |d ksJ d S )NABr'   r   rO   )r-   	DataFramer   aranger   rH   r   r*   dfr   r   r	   test_setitem_loc_scalar_mixeds      z.BaseSetitemTests.test_setitem_loc_scalar_mixedc                 C   s6   t d|i}|d |jd< |jd |d ksJ d S )NrO   r'   
   rO   r-   rQ   rH   rS   r   r   r	   test_setitem_loc_scalar_singlex      z/BaseSetitemTests.test_setitem_loc_scalar_singlec                 C   s8   t ||d}|d |jd< |jd |d ksJ d S )NrM   r'   rW   rY   rS   r   r   r	   ,test_setitem_loc_scalar_multiple_homogoneous}      z=BaseSetitemTests.test_setitem_loc_scalar_multiple_homogoneousc                 C   sB   t tt||d}|d |jd< |jd |d ksJ d S )NrM   r'   r   r'   rP   )r-   rQ   r   rR   r   rI   rH   rS   r   r   r	   test_setitem_iloc_scalar_mixed   rV   z/BaseSetitemTests.test_setitem_iloc_scalar_mixedc                 C   s6   t d|i}|d |jd< |jd |d ksJ d S )NrO   r'   )rX   r   rW   r-   rQ   rI   rH   rS   r   r   r	   test_setitem_iloc_scalar_single   r[   z0BaseSetitemTests.test_setitem_iloc_scalar_singlec                 C   s8   t ||d}|d |jd< |jd |d ksJ d S )NrM   r'   )rX   r'   rW   r`   rS   r   r   r	   -test_setitem_iloc_scalar_multiple_homogoneous   r]   z>BaseSetitemTests.test_setitem_iloc_scalar_multiple_homogoneousr   )TTTFFbooleanr   )numpy-arrayzboolean-arrayzboolean-array-na)r   c                 C   sR   |d d   }|g d}|rt|}t|}|d ||< t|| d S N   r   r   r   r8      r   r2   taker-   r.   r;   rC   )r   r*   r   r0   rK   expectedr   r   r	   test_setitem_mask   s   


z"BaseSetitemTests.test_setitem_maskc                 C   s   t ddg}|rt|}tjtdd |d ||< W d    n1 s&w   Y  tj|dd}tjtdd |d ||< W d    d S 1 sKw   Y  d S )NTFzwrong lengthr6   r   rc   r   )r   rA   r-   r.   r$   r(   
IndexErrorr   r*   r0   r   r   r   r	   test_setitem_mask_raises   s   
"z)BaseSetitemTests.test_setitem_mask_raisesc                 C   sn   t jtj|jdddd}d|d d< t j|dd< |r!t |}|d ||< |d d |d k s5J d S )Nr   r   rc   Tr8   rf   r   )r-   rA   r   zerosshapeNAr.   allrn   r   r   r	   'test_setitem_mask_boolean_array_with_na   s   
 z8BaseSetitemTests.test_setitem_mask_boolean_array_with_naidx)r   r'   rE   ZInt64)r   zinteger-arrayrd   c                 C   sR   |d d   }|g d}|rt|}t|}|d ||< t|| d S re   ri   )r   r*   ru   r0   rK   rk   r   r   r	   test_setitem_integer_array   s   

z+BaseSetitemTests.test_setitem_integer_arrayzidx, box_in_seriesr   r'   rE   FzGH-31948)reason)Zmarks)z
list-Falsez	list-Truezinteger-array-Falsezinteger-array-Truec                 C   sp   |  }|rtj|dd tt|D d}d}tjt|d |d ||< W d    d S 1 s1w   Y  d S )Nc                 S   s   g | ]}t d | qS )d   )chr).0ir   r   r	   
<listcomp>   s    zMBaseSetitemTests.test_setitem_integer_with_missing_raises.<locals>.<listcomp>r   z9Cannot index with an integer indexer containing NA valuesr6   r   )r2   r-   r.   r   r   r$   r(   r9   )r   r*   ru   r0   rK   msgr   r   r	   (test_setitem_integer_with_missing_raises   s    "z9BaseSetitemTests.test_setitem_integer_with_missing_raisesas_callableNc                    s   t |}tjt|td d d d< |r fdd}n }|r't||}n|}|dd ||< |dd ||< |d |d ksCJ |d	 |d
 ksMJ d S )Nr   TrE   c                    s    S r   r   r   r   r   r	   r
      s    z<BaseSetitemTests.test_setitem_mask_aligned.<locals>.<lambda>rf      r   r'      r-   r.   r   rp   r   r   rJ   )r   r*   r   rG   r=   Zmask2targetr   r   r	   test_setitem_mask_aligned   s   
z*BaseSetitemTests.test_setitem_mask_alignedc                 C   st   t |}tjt|td}d|d d< |rt||}n|}|d ||< |d |d ks.J |d |d ks8J d S )Nr   TrE   rX   r   r'   r   )r   r*   rG   r=   r   r   r   r   r	   test_setitem_mask_broadcast   s   
z,BaseSetitemTests.test_setitem_mask_broadcastc                 C   s   t d|i}| }d|d< t |dgt| d}t|| | }d|jd d df< t|| ||d< t ||d}t|| d S NrN   r'   rO   rM   )r-   rQ   r2   r   r;   assert_frame_equalrH   r   r*   rT   resultrk   r   r   r	   test_setitem_expand_columns  s   z,BaseSetitemTests.test_setitem_expand_columnsc                 C   sx   t ddgt| i}| }||d< t dgt| |d}t|| | }||jd d df< t|| d S r   )r-   rQ   r   r2   r;   r   rH   r   r   r   r	   "test_setitem_expand_with_extension  s   z3BaseSetitemTests.test_setitem_expand_with_extensionc                 C   s~   t ddgt| i}dt|d d  dt| d}tjt|d |d d |d< W d    d S 1 s8w   Y  d S )	NrN   r'   zLength of values \(rf   z$\) does not match length of index \(z\)r6   rO   )r-   rQ   r   r$   r(   r9   )r   r*   rT   r?   r   r   r	   !test_setitem_frame_invalid_length(  s   "z2BaseSetitemTests.test_setitem_frame_invalid_lengthc                 C   sP   t j|d d ddgd}t j|ddg|jd}|d |d< t|| d S )NrE   )r   r   r^   r   r'   )r-   r.   rj   r   r;   r<   )r   r*   r=   rk   r   r   r	   test_setitem_tuple_index1  s   z)BaseSetitemTests.test_setitem_tuple_indexc                 C   sV   |d d   }|g d}|rt|}t|}|d |d d< t|| d S )Nrf   rg   r   r8   ri   )r   r*   r0   rK   rk   r   r   r	   test_setitem_slice7  s   

z#BaseSetitemTests.test_setitem_slicec                 C   s   |d d   }tj|g dd}tj|g d|jd}|  }|d |jd d< t|| |  }|d |jd d< t|| d S )Nrf   )abcder   rg   r   r8   r   )	r2   r-   r.   rj   r   rI   r;   rC   rH   )r   r*   rK   srk   r   r   r   r	   test_setitem_loc_iloc_sliceA  s   z,BaseSetitemTests.test_setitem_loc_iloc_slicec                 C   sP   |d d }t t |d d |d d< W d    d S 1 s!w   Y  d S )Nrf   rE   r'   )r$   r(   r9   r   r*   rK   r   r   r	   )test_setitem_slice_mismatch_length_raisesN  s   "z:BaseSetitemTests.test_setitem_slice_mismatch_length_raisesc                 C   s<   |d d   }|dd  |d d< t||dd   d S )Nrf   )r2   r;   Zassert_extension_array_equalr   r   r   r	   test_setitem_slice_arrayS  s   z)BaseSetitemTests.test_setitem_slice_arrayc                 C   sP   |d d   }tt |ddg |d< W d    d S 1 s!w   Y  d S )Nrf   r   r'   )r2   r$   r(   r9   r   r   r   r	   &test_setitem_scalar_key_sequence_raiseX  s   "z7BaseSetitemTests.test_setitem_scalar_key_sequence_raisec                 C   sL   |  }|d d  }|d |d< |d |d ksJ |d |d ks$J d S r+   )view)r   r*   Zview1Zview2r   r   r	   test_setitem_preserves_views]  s
   z-BaseSetitemTests.test_setitem_preserves_viewsc                 C   sP   t dt |i }}t j|jd}||}|d |j|df< t|| d S )Nr   r   )r-   rQ   r.   r   rH   r;   r   )r   r*   r   rT   rk   r   keyr   r   r	   ,test_setitem_with_expansion_dataframe_columnf  s
   z=BaseSetitemTests.test_setitem_with_expansion_dataframe_columnc                 C   s   t d|d d i}|d |jd< t d|d d i}t|| ||jd< t dt j|d |d |g|jdi}t|| d S )Nr*   r'   )r'   r*   rE   )rE   r*   r   r   )r-   rQ   rH   r;   r   r.   r   )r   r*   Zna_valuerT   rk   r   r   r	   test_setitem_with_expansion_rowp  s   
 z0BaseSetitemTests.test_setitem_with_expansion_rowc                 C   s\   t j|dd}t j|jtdd}||}||j|< t j|t|jdtd}t|| d S )Nr*   r    )r   r   r    )r   r    r   )r-   r.   r   objectrH   Zastyper;   r<   )r   r*   r   r=   r   r   rk   r   r   r	   test_setitem_series~  s   
z$BaseSetitemTests.test_setitem_seriesc                 C   s   t d|i}t|jt jjj}t jjj	}|jj
d }| }| |jd d < t|| |jd d  |jd d< t|| |j|jd d < t|| |s^|s^|jj
d |u s^J |jd d |jd d< t|| d S )NrN   r   )r-   rQ   
isinstanceZ_mgrcoreZ	internalsZArrayManageroptionsmodeZcopy_on_writeZarraysr2   rI   r;   r   values)r   r*   rT   Zusing_array_managerZusing_copy_on_writeZblk_dataorigr   r   r	   test_setitem_frame_2d_values  s   
z-BaseSetitemTests.test_setitem_frame_2d_valuesc                 C   sF   t j|dd}tt|}t|d}|| }|d= t|| d S )Nr*   r   r'   )r-   r.   r   rR   r   deleter;   r<   )r   r*   r=   Ztakerrk   r   r   r	   test_delitem_series  s   z$BaseSetitemTests.test_delitem_seriesc                 C   s   d}t jttf|d ||d< W d    n1 sw   Y  t jttf|d ||d d < W d    d S 1 s:w   Y  d S )N r6   r   )r$   r(   r9   r)   )r   r*   Zinvalid_scalarr}   r   r   r	   test_setitem_invalid  s   
"z%BaseSetitemTests.test_setitem_invalidc                 C   s   |  }t||d}|jddgd d f j|jddgd d f< |jdd d f |d k s2J |jdd d f |d k sCJ d S )N)r   r   r'   r   )r2   r-   rQ   rH   r   rs   )r   r*   r4   rT   r   r   r	   test_setitem_2d_values  s
   *"&z'BaseSetitemTests.test_setitem_2d_values)4__name__
__module__r#   r$   Zfixturer   r&   r   r1   r5   r@   rD   rF   markZparametrizerL   rU   rZ   r\   r_   ra   rb   r   rA   r-   rr   rl   ro   rt   rv   r   Zxfailr~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	   r      s    	

	
	

		$


	
	
r   )	numpyr   r$   Zpandasr-   Zpandas._testingZ_testingr;   r   r   r   r   r	   <module>   s
    