o
    5c9                     @   s\   d dl Zd dlZd dlmZmZmZmZ d dlZ	d dl
mZ d dlmZ G dd deZdS )    N)DatetimeTZDtypeIntervalDtypePandasDtypePeriodDtype)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-dfdg Z.dhdi Z/djdk Z0dGS )lBaseSetitemTestsc                 C   s   | j S Nindexx r   Y/var/www/html/gps/gps/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_sequence4   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_raises=   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_indexerN   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_broadcastsU   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)   rD   arrr   r   r   test_setitem_scalar\   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   rL   )r&   	DataFramer   aranger   rE   r    r)   dfr   r   r   test_setitem_loc_scalar_mixedc      z.BaseSetitemTests.test_setitem_loc_scalar_mixedc                 C   s6   t d|i}|d |jd< |jd |d ksJ d S )NrL   r$   
   rL   r&   rN   rE   rP   r   r   r   test_setitem_loc_scalar_singleh      z/BaseSetitemTests.test_setitem_loc_scalar_singlec                 C   s8   t ||d}|d |jd< |jd |d ksJ d S )NrJ   r$   rT   rV   rP   r   r   r   ,test_setitem_loc_scalar_multiple_homogoneousm      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 )NrJ   r$   r   r$   rM   )r&   rN   r   rO   r   rF   rE   rP   r   r   r   test_setitem_iloc_scalar_mixedr   rS   z/BaseSetitemTests.test_setitem_iloc_scalar_mixedc                 C   s6   t d|i}|d |jd< |jd |d ksJ d S )NrL   r$   )rU   r   rT   r&   rN   rF   rE   rP   r   r   r   test_setitem_iloc_scalar_singlew   rX   z0BaseSetitemTests.test_setitem_iloc_scalar_singlec                 C   s8   t ||d}|d |jd< |jd |d ksJ d S )NrJ   r$   )rU   r$   rT   r]   rP   r   r   r   -test_setitem_iloc_scalar_multiple_homogoneous|   rZ   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   r2      r   r,   taker&   r'   r@   )r    r)   r   r*   rH   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 lengthr0   r   r`   r   )r   r>   r&   r'   r4   r5   
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`   Tr2   rc   r   )r&   r>   r   zerosshapeNAr'   allrk   r   r   r   'test_setitem_mask_boolean_array_with_na   s   
 z8BaseSetitemTests.test_setitem_mask_boolean_array_with_naidx)r   r$   rB   Int64)r   zinteger-arrayra   c                 C   sR   |d d   }|g d}|rt|}t|}|d ||< | || d S rb   rf   )r    r)   rr   r*   rH   rh   r   r   r   test_setitem_integer_array   s   

z+BaseSetitemTests.test_setitem_integer_arrayzidx, box_in_seriesr   r$   rB   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 )re   )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 valuesr0   r   )r,   r&   r'   r   r   r4   r5   r6   )r    r)   rr   r*   rH   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   TrB   c                    s    S r   r   r   r   r   r   r      s    z<BaseSetitemTests.test_setitem_mask_aligned.<locals>.<lambda>rc      r   r$      r&   r'   r   rm   r   r   rG   )r    r)   r~   rD   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   TrB   rU   r   r$   r   )r    r)   rD   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}| || | }d|jd d df< | || ||d< t ||d}| || d S NrK   r$   rL   rJ   )r&   rN   r,   r   assert_frame_equalrE   r    r)   rQ   resultrh   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&   rN   r   r,   r   rE   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 )	NrK   r$   zLength of values \(rc   z$\) does not match length of index \(z\)r0   rL   )r&   rN   r   r4   r5   r6   )r    r)   rQ   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< | || d S )NrB   )r   r   r[   r	   r$   )r&   r'   rg   r
   r8   )r    r)   r:   rh   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 )Nrc   rd   r   r2   rf   )r    r)   r*   rH   rh   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 )Nrc   )abcder	   rd   r   r2   r   )r,   r&   r'   rg   r
   rF   r@   rE   )r    r)   rH   srh   r   r   r   r   test_setitem_loc_iloc_slice1  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 )Nrc   rB   r$   )r4   r5   r6   r    r)   rH   r   r   r   )test_setitem_slice_mismatch_length_raises>  s   "z:BaseSetitemTests.test_setitem_slice_mismatch_length_raisesc                 C   s<   |d d   }|dd  |d d< | ||dd   d S )Nrc   )r,   assert_extension_array_equalr   r   r   r   test_setitem_slice_arrayC  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 )Nrc   r   r$   )r,   r4   r5   r6   r   r   r   r   &test_setitem_scalar_key_sequence_raiseH  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_viewsM  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&   rN   r'   r
   rE   r   )r    r)   r"   rQ   rh   r   keyr   r   r   ,test_setitem_with_expansion_dataframe_columnV  s
   z=BaseSetitemTests.test_setitem_with_expansion_dataframe_columnc                 C   s   t d|d d i}|d |jd< t d|d d i}| || ||jd< t dt j|d |d |g|jdi}| || d S )Nr)   r$   )r$   r)   rB   )rB   r)   r   r   )r&   rN   rE   r   r'   r   )r    r)   na_valuerQ   rh   r   r   r   test_setitem_with_expansion_row`  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}| || d S )Nr)   name)r
   r   r   )r
   r   r   )r&   r'   r
   objectrE   astyper8   )r    r)   r"   r:   r   r   rh   r   r   r   test_setitem_seriesn  s   
z$BaseSetitemTests.test_setitem_seriesc           
      C   sx  t d|i}t|jttttf}t|jt j	j
j}t jjj}|jjd }| }d}d }	|r7t|jts7t}	tj|	|d ||jd d < W d    n1 sPw   Y  | || |jd d |jd d< | || t|jtrud }	tj|	|d |j|jd d < W d    n1 sw   Y  | || |s|s|jjd |u sJ |jd d |jd d< | || d S )NrK   r   z.will attempt to set the values inplace insteadr0   )r&   rN   
isinstancer   r   r   r   r   _mgrcore	internalsArrayManageroptionsmodecopy_on_writearraysr,   FutureWarningrw   assert_produces_warningrF   r   values)
r    r)   rQ   has_can_hold_elementusing_array_managerusing_copy_on_writeblk_dataorigr|   warnr   r   r   test_setitem_frame_2d_values}  s8   
z-BaseSetitemTests.test_setitem_frame_2d_valuesc                 C   sF   t j|dd}tt|}t|d}|| }|d= | || d S )Nr)   r   r$   )r&   r'   r   rO   r   deleter8   )r    r)   r:   takerrh   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 r0   r   )r4   r5   r6   	TypeError)r    r)   invalid_scalarr|   r   r   r   test_setitem_invalid  s   
"z%BaseSetitemTests.test_setitem_invalid)1__name__
__module____qualname__r4   fixturer"   r+   r/   r=   rA   rC   markparametrizerI   rR   rW   rY   r\   r^   r_   r   r>   r&   ro   ri   rl   rq   rt   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      s    	
		

		$


	
	
-r   )numpyr   r4   pandas.core.dtypes.dtypesr   r   r   r   pandasr&   pandas._testing_testingrw    pandas.tests.extension.base.baser   r   r   r   r   r   <module>   s    