o
    gQ/                     @   sD   d dl Zd dlZd dlZd dlmZ d dlm	Z	 G dd de	Z
dS )    N)BaseExtensionTestsc                
   @   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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)d*d+ejd,d,d,ejejgd*d+gg d-d.d/d0 Zd1d2 Zd3d4 Zejjd5g d6ejg d6d7d+eg d6gg d8d.d9d: Zejjd;d<d=d>ejgd?fejd<d=d>ejgd,ejjd@dAdBejd<d=d>ejgd7d+d?fejd<d=d>ejgd7d+d?fgg dCd.dDdE ZejdFd,d?gejdddGgdHdI ZejdddGgdJdK Z dLdM Z!dNdO Z"dPdQ Z#dRdS Z$dTdU Z%dVdW Z&dXdY Z'dZd[ Z(d\d] Z)d^d_ Z*d`da Z+dbdc Z,ddde Z-dGS )fBaseSetitemTestsc                 C   s   | j S Nindexx r	   a/home/ubuntu/cloudmapper/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_indexerc                 C   s2   |rt |}|d |d< |d |d ksJ d S N   r   pdSeriesr   data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%   r&   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jt|dd ||t	d< W d    n1 sXw   Y  | || d S )Nr   z5cannot set using a {} indexer with a different lengthz	list-likematchr    r      )
r"   r#   r(   _from_sequencepytestraises
ValueErrorformatassert_series_equalr   )r   r%   as_arrayserr*   valuexprr	   r	   r
   .test_setitem_sequence_mismatched_length_raises6   s   


z?BaseSetitemTests.test_setitem_sequence_mismatched_length_raisesc                 C   s8   |rt |}| }g |tjg td< | || d S r   )r"   r#   r(   r   arrayintassert_equalr)   r	   r	   r
   test_setitem_empty_indexerG   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_broadcastsN   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%   r@   arrr	   r	   r
   test_setitem_scalarU   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   rH   )r"   	DataFramer   aranger   rA   r   r%   dfr	   r	   r
   test_setitem_loc_scalar_mixed\      z.BaseSetitemTests.test_setitem_loc_scalar_mixedc                 C   s6   t d|i}|d |jd< |jd |d ksJ d S )NrH   r    
   rH   r"   rJ   rA   rL   r	   r	   r
   test_setitem_loc_scalar_singlea      z/BaseSetitemTests.test_setitem_loc_scalar_singlec                 C   s8   t ||d}|d |jd< |jd |d ksJ d S )NrF   r    rP   rR   rL   r	   r	   r
   ,test_setitem_loc_scalar_multiple_homogoneousf      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 )NrF   r    r   r    rI   )r"   rJ   r   rK   r   rB   rA   rL   r	   r	   r
   test_setitem_iloc_scalar_mixedk   rO   z/BaseSetitemTests.test_setitem_iloc_scalar_mixedc                 C   s6   t d|i}|d |jd< |jd |d ksJ d S )NrH   r    )rQ   r   rP   r"   rJ   rB   rA   rL   r	   r	   r
   test_setitem_iloc_scalar_singlep   rT   z0BaseSetitemTests.test_setitem_iloc_scalar_singlec                 C   s8   t ||d}|d |jd< |jd |d ksJ d S )NrF   r    )rQ   r    rP   rY   rL   r	   r	   r
   -test_setitem_iloc_scalar_multiple_homogoneousu   rV   z>BaseSetitemTests.test_setitem_iloc_scalar_multiple_homogoneousr   )TTTFFbooleanr   T)numpy-arrayzboolean-arrayzboolean-array-na)r   c                 C   sR   |d d   }|g d}|rt|}t|}|d ||< | || d S N   r   r   r   r.      r   r(   taker"   r#   r<   )r   r%   r   r&   rD   expectedr	   r	   r
   test_setitem_maskz   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   r\   r   )r   r:   r"   r#   r0   r1   
IndexErrorr   r%   r&   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   r\   Tr.   r_   r   )r"   r:   r   zerosshapeNAr#   allrg   r	   r	   r
   'test_setitem_mask_boolean_array_with_na   s   
 z8BaseSetitemTests.test_setitem_mask_boolean_array_with_naidx)r   r    r>   Int64)r   zinteger-arrayr]   c                 C   sR   |d d   }|g d}|rt|}t|}|d ||< | || d S r^   rb   )r   r%   rn   r&   rD   rd   r	   r	   r
   test_setitem_integer_array   s   

z+BaseSetitemTests.test_setitem_integer_arrayzidx, box_in_seriesr   r    r>   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 )ra   )tmrands).0_r	   r	   r
   
<listcomp>   s    zMBaseSetitemTests.test_setitem_integer_with_missing_raises.<locals>.<listcomp>r   z9Cannot index with an integer indexer containing NA valuesr,   r   )r(   r"   r#   r   r   r0   r1   r2   )r   r%   rn   r&   rD   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   Tr>   c                    s    S r   r	   r   r   r	   r
   r      s    z<BaseSetitemTests.test_setitem_mask_aligned.<locals>.<lambda>r_      r   r       r"   r#   r   ri   r   r   rC   )r   r%   rz   r@   r6   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   Tr>   rQ   r   r    r~   )r   r%   r@   r6   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}| || | }d|jd d df< | || ||d< t ||d}| || d S NrG   r    rH   rF   )r"   rJ   r(   r   assert_frame_equalrA   r   r%   rM   resultrd   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}| || | }||jd d df< | || d S r   )r"   rJ   r   r(   r   rA   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 )	NrG   r    zLength of values \(r_   z$\) does not match length of index \(z\)r,   rH   )r"   rJ   r   r0   r1   r2   )r   r%   rM   r8   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< | || d S )Nr>   )r   r   rW   r   r    )r"   r#   rc   r   r4   )r   r%   r6   rd   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< | || d S )Nr_   r`   r   r.   rb   )r   r%   r&   rD   rd   r	   r	   r
   test_setitem_slice   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< | || |  }|d |jd d< | || d S )Nr_   )abcder   r`   r   r.   r   )r(   r"   r#   rc   r   rB   r<   rA   )r   r%   rD   srd   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 )Nr_   r>   r    )r0   r1   r2   r   r%   rD   r	   r	   r
   )test_setitem_slice_mismatch_length_raises7  s   "z:BaseSetitemTests.test_setitem_slice_mismatch_length_raisesc                 C   s<   |d d   }|dd  |d d< | ||dd   d S )Nr_   )r(   assert_extension_array_equalr   r	   r	   r
   test_setitem_slice_array<  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 )Nr_   r   r    )r(   r0   r1   r2   r   r	   r	   r
   &test_setitem_scalar_key_sequence_raiseA  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_viewsF  s
   z-BaseSetitemTests.test_setitem_preserves_viewsc                 C   sP   t dt |i }}t j|jd}||}|d |j|df< | || d S )Nr%   r   )r"   rJ   r#   r   rA   r   )r   r%   r   rM   rd   r   keyr	   r	   r
   ,test_setitem_with_expansion_dataframe_columnO  s
   z=BaseSetitemTests.test_setitem_with_expansion_dataframe_columnc                 C   s\   t j|dd}t j|jtdd}||}||j|< t j|t|jdtd}| || d S )Nr%   name)r   r   r   )r   r   r   )r"   r#   r   objectrA   astyper4   )r   r%   r   r6   r   r   rd   r	   r	   r
   test_setitem_seriesY  s   
z$BaseSetitemTests.test_setitem_seriesc                 C   sF   t j|dd}tt|}t|d}|| }|d= | || d S )Nr%   r   r    )r"   r#   r   rK   r   deleter4   )r   r%   r6   takerrd   r	   r	   r
   test_delitem_seriesh  s   z$BaseSetitemTests.test_delitem_series).__name__
__module____qualname__r0   fixturer   r'   r+   r9   r=   r?   markparametrizerE   rN   rS   rU   rX   rZ   r[   r   r:   r"   rk   re   rh   rm   rp   r   xfailry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	   r	   r	   r
   r   	   s    	
		

		$


	
	
r   )numpyr   r0   pandasr"   pandas._testing_testingrs    pandas.tests.extension.base.baser   r   r	   r	   r	   r
   <module>   s    