o
    h:                     @   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   w/var/www/html/construction_image-detection-poc/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   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#   
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 r0   )r2   r3   copyr   r/   r5   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      )r2   r3   r7   _from_sequencer   r(   r-   
ValueErrorformattmassert_series_equalr   )r   r/   as_arrayserr9   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   )r2   r3   r7   r   arrayintrA   assert_equalr8   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,   r1   r4   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 r0   )r2   r3   getattr)r   r/   rN   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   rV   )r2   	DataFramer   aranger   rO   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 )NrV   r,   
   rV   r2   rX   rO   rZ   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 )NrT   r,   r^   r`   rZ   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 )NrT   r,   r   r,   rW   )r2   rX   r   rY   r   rP   rO   rZ   r   r   r	   test_setitem_iloc_scalar_mixed   r]   z/BaseSetitemTests.test_setitem_iloc_scalar_mixedc                 C   s6   t d|i}|d |jd< |jd |d ksJ d S )NrV   r,   )r_   r   r^   r2   rX   rP   rO   rZ   r   r   r	   test_setitem_iloc_scalar_single   rb   z0BaseSetitemTests.test_setitem_iloc_scalar_singlec                 C   s8   t ||d}|d |jd< |jd |d ksJ d S )NrT   r,   )r_   r,   r^   rg   rZ   r   r   r	   -test_setitem_iloc_scalar_multiple_homogoneous   rd   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   r=      r   r7   taker2   r3   rA   rJ   )r   r/   r   r5   rR   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 lengthr;   r   rj   r   )r   rH   r2   r3   r(   r-   
IndexErrorr   r/   r5   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   rj   Tr=   rm   r   )r2   rH   r   zerosshapeNAr3   allru   r   r   r	   'test_setitem_mask_boolean_array_with_na   s   
 z8BaseSetitemTests.test_setitem_mask_boolean_array_with_naidx)r   r,   rL   Int64)r   zinteger-arrayrk   c                 C   sR   |d d   }|g d}|rt|}t|}|d ||< t|| d S rl   rp   )r   r/   r|   r5   rR   rr   r   r   r	   test_setitem_integer_array   s   

z+BaseSetitemTests.test_setitem_integer_arrayzidx, box_in_seriesr   r,   rL   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 valuesr;   r   )r7   r2   r3   r   r   r(   r-   r?   )r   r/   r|   r5   rR   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   TrL   c                    s    S r   r   r   r   r   r	   r
      s    z<BaseSetitemTests.test_setitem_mask_aligned.<locals>.<lambda>rm      r   r,      r2   r3   r   rw   r   r   rQ   )r   r/   r   rN   rD   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   TrL   r_   r   r,   r   )r   r/   rN   rD   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 NrU   r,   rV   rT   )r2   rX   r7   r   rA   assert_frame_equalrO   r   r/   r[   resultrr   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   )r2   rX   r   r7   rA   r   rO   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 )	NrU   r,   zLength of values \(rm   z$\) does not match length of index \(z\)r;   rV   )r2   rX   r   r(   r-   r?   )r   r/   r[   rF   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 )NrL   )r   r   re   r   r,   )r2   r3   rq   r   rA   rB   )r   r/   rD   rr   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 )Nrm   rn   r   r=   rp   )r   r/   r5   rR   rr   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 )Nrm   )abcder   rn   r   r=   r   )	r7   r2   r3   rq   r   rP   rA   rJ   rO   )r   r/   rR   srr   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 )Nrm   rL   r,   )r(   r-   r?   r   r/   rR   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 )Nrm   )r7   rA   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 )Nrm   r   r,   )r7   r(   r-   r?   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 r0   )view)r   r/   view1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   )r2   rX   r3   r   rO   rA   r   )r   r/   r   r[   rr   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/   rL   )rL   r/   r   r   )r2   rX   rO   rA   r   r3   r   )r   r/   na_valuer[   rr   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   )r2   r3   r   objectrO   astyperA   rB   )r   r/   r   rD   r   r   rr   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 )NrU   r   )r2   rX   
isinstance_mgrcore	internalsArrayManageroptionsmodecopy_on_writearraysr7   rP   rA   r   values)r   r/   r[   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,   )r2   r3   r   rY   r   deleterA   rB   )r   r/   rD   takerrr   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 r;   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   )r7   r2   rX   rO   r   rz   )r   r/   r9   r[   r   r   r	   test_setitem_2d_values  s
   *"&z'BaseSetitemTests.test_setitem_2d_values)4__name__
__module__r'   r(   fixturer   r+   r    r6   r:   rG   rK   rM   markparametrizerS   r\   ra   rc   rf   rh   ri   r   rH   r2   ry   rs   rv   r{   r~   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(   pandasr2   pandas._testing_testingrA   r   r   r   r   r	   <module>   s
    