o
    ҷh9                     @   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   V/var/www/html/venv/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)nponesr   boolr   r   r   r	   r
      s    )r   zlist[index]
null_slice
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)autousec                 C   s6   |j r|j}|jdd dkrd S td d S d S )N[r   test_is_immutablez4__setitem__ test not applicable with immutable dtype)_is_immutablenodenamesplitpytestskip)r   r   r   r"   r   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    0   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_series8   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+   r1   originalr   r   r	   test_setitem_sequence>   s   
z&BaseSetitemTests.test_setitem_sequencec                 C   s   t |}| }|d g}|r||}d}tjt|dd ||ddg< W d    n1 s2w   Y  t	|| tjt|dd ||t
d< W d    n1 sXw   Y  t	|| d S )Nr   z5cannot set using a {} indexer with a different lengthz	list-likematchr(   r      )r.   r/   r3   _from_sequencer%   r)   
ValueErrorformattmassert_series_equalr   )r   r+   as_arrayserr5   valuexprr   r   r	   .test_setitem_sequence_mismatched_length_raisesG   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/   r3   r   arrayintr=   assert_equalr4   r   r   r	   test_setitem_empty_indexerX   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-   r0   r   r   r	    test_setitem_sequence_broadcasts_   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+   rJ   arrr   r   r	   test_setitem_scalarf   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   rR   )r.   	DataFramer   aranger   rK   r   r+   dfr   r   r	   test_setitem_loc_scalar_mixedm      z.BaseSetitemTests.test_setitem_loc_scalar_mixedc                 C   s6   t d|i}|d |jd< |jd |d ksJ d S )NrR   r(   
   rR   r.   rT   rK   rV   r   r   r	   test_setitem_loc_scalar_singler      z/BaseSetitemTests.test_setitem_loc_scalar_singlec                 C   s8   t ||d}|d |jd< |jd |d ksJ d S )NrP   r(   rZ   r\   rV   r   r   r	   ,test_setitem_loc_scalar_multiple_homogoneousw      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 )NrP   r(   r   r(   rS   )r.   rT   r   rU   r   rL   rK   rV   r   r   r	   test_setitem_iloc_scalar_mixed|   rY   z/BaseSetitemTests.test_setitem_iloc_scalar_mixedc                 C   s6   t d|i}|d |jd< |jd |d ksJ d S )NrR   r(   )r[   r   rZ   r.   rT   rL   rK   rV   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 )NrP   r(   )r[   r(   rZ   rc   rV   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   r9      r   r3   taker.   r/   r=   rF   )r   r+   r   r1   rN   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 lengthr7   r   rf   r   )r   rD   r.   r/   r%   r)   
IndexErrorr   r+   r1   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   rf   Tr9   ri   r   )r.   rD   r   zerosshapeNAr/   allrq   r   r   r	   'test_setitem_mask_boolean_array_with_na   s   
 z8BaseSetitemTests.test_setitem_mask_boolean_array_with_naidx)r   r(   rH   Int64)r   zinteger-arrayrg   c                 C   sR   |d d   }|g d}|rt|}t|}|d ||< t|| d S rh   rl   )r   r+   rx   r1   rN   rn   r   r   r	   test_setitem_integer_array   s   

z+BaseSetitemTests.test_setitem_integer_arrayzidx, box_in_seriesr   r(   rH   FzGH-31948)reason)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 valuesr7   r   )r3   r.   r/   r   r   r%   r)   r;   )r   r+   rx   r1   rN   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   TrH   c                    s    S r   r   r   r   r   r	   r
      s    z<BaseSetitemTests.test_setitem_mask_aligned.<locals>.<lambda>ri      r   r(      r.   r/   r   rs   r   r   rM   )r   r+   r   rJ   r@   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   TrH   r[   r   r(   r   )r   r+   rJ   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 NrQ   r(   rR   rP   )r.   rT   r3   r   r=   assert_frame_equalrK   r   r+   rW   resultrn   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.   rT   r   r3   r=   r   rK   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 )	NrQ   r(   zLength of values \(ri   z$\) does not match length of index \(z\)r7   rR   )r.   rT   r   r%   r)   r;   )r   r+   rW   rB   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 )NrH   )r   r   ra   r   r(   )r.   r/   rm   r   r=   r>   )r   r+   r@   rn   r   r   r	   test_setitem_tuple_index+  s   z)BaseSetitemTests.test_setitem_tuple_indexc                 C   sV   |d d   }|g d}|rt|}t|}|d |d d< t|| d S )Nri   rj   r   r9   rl   )r   r+   r1   rN   rn   r   r   r	   test_setitem_slice1  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 )Nri   )abcder   rj   r   r9   r   )	r3   r.   r/   rm   r   rL   r=   rF   rK   )r   r+   rN   srn   r   r   r   r	   test_setitem_loc_iloc_slice;  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 )Nri   rH   r(   )r%   r)   r;   r   r+   rN   r   r   r	   )test_setitem_slice_mismatch_length_raisesH  s   "z:BaseSetitemTests.test_setitem_slice_mismatch_length_raisesc                 C   s<   |d d   }|dd  |d d< t||dd   d S )Nri   )r3   r=   assert_extension_array_equalr   r   r   r	   test_setitem_slice_arrayM  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 )Nri   r   r(   )r3   r%   r)   r;   r   r   r   r	   &test_setitem_scalar_key_sequence_raiseR  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+   view1view2r   r   r	   test_setitem_preserves_viewsW  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.   rT   r/   r   rK   r=   r   )r   r+   r   rW   rn   r   keyr   r   r	   ,test_setitem_with_expansion_dataframe_column`  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+   rH   )rH   r+   r   r   )r.   rT   rK   r=   r   r/   r   )r   r+   na_valuerW   rn   r   r   r	   test_setitem_with_expansion_rowj  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   objectrK   astyper=   r>   )r   r+   r   r@   r   r   rn   r   r   r	   test_setitem_seriesx  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|| |sZ|sZ|jj
d |u sZJ |jd d |jd d< t|| d S )NrQ   r   )r.   rT   
isinstance_mgrcore	internalsArrayManageroptionsmodecopy_on_writearraysr3   rL   r=   r   values)r   r+   rW   using_array_managerusing_copy_on_write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   rU   r   deleter=   r>   )r   r+   r@   takerrn   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 r7   r   )r%   r)   r;   r*   )r   r+   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   )r3   r.   rT   rK   r   rv   )r   r+   r5   rW   r   r   r	   test_setitem_2d_values  s
   *"&z'BaseSetitemTests.test_setitem_2d_values)4__name__
__module____qualname__r%   fixturer   r'   r    r2   r6   rC   rG   rI   markparametrizerO   rX   r]   r_   rb   rd   re   r   rD   r.   ru   ro   rr   rw   rz   r   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%   pandasr.   pandas._testing_testingr=   r   r   r   r   r	   <module>   s
    