o
    Û­j9=  ã                   @   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dZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
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g d¢ejg d¢d d!�e g d¢¡gg d"¢d#�d$d%„ ƒZejjdd&d'd(ejgejd&d'd(ejgd d!�gd)d*gd#�d+d,„ ƒZejjd-d.�ejjdd&d'd(ejgejd&d'd(ejgd d!�gd)d*gd#�d/d0„ ƒƒZd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Z d9d:„ Z!d;d<„ Z"d=d>„ Z#d?d@„ Z$dAdB„ Z%ej dCdDdEg¡dFdG„ ƒZ&dHdI„ Z'dJdK„ Z(dLdM„ Z)dNdO„ Z*dPdQ„ Z+dRS )SÚBaseGetitemTestsz%Tests for ExtensionArray.__getitem__.c                 C   sT   t  |¡}|jd d… }t  |d d… ¡}t ||¡ |jg d¢ }t ||¡ d S )Né   ©r   é   é   é   )ÚpdÚSeriesÚilocÚtmÚassert_series_equal©ÚselfÚdataÚserÚresultÚexpected© r   ú`/var/www/html/CropPilot/venv/lib/python3.10/site-packages/pandas/tests/extension/base/getitem.pyÚtest_iloc_series   ó   
z!BaseGetitemTests.test_iloc_seriesc                 C   s&  t  |tjt|ƒdd�dœ¡}t  d|d d… i¡}|jd d…dgf }t ||¡ |jg d¢dgf }t ||¡ t j|d d… dd�}|jd d…df }t 	||¡ |jd d…df }t 	||¡ |jd d …d d d	…f }t ||dg ¡ |d
dg jd d …d d d	…f }t ||d
g ¡ d S )NÚint64©Údtype©ÚAÚBr   r   r   r   ©Únamer   r   )
r   Ú	DataFrameÚnpÚarangeÚlenr
   r   Úassert_frame_equalr	   r   ©r   r   Údfr   r   r   r   r   Útest_iloc_frame   s    z BaseGetitemTests.test_iloc_framec                 C   sò   t  d|i¡}|jd d …d d …f }t ||¡ |jd d …d d…f }t ||¡ |jd d …d d…f }t ||¡ |jd d …d d d…f }t ||¡ |jd d …dd…f }t ||jd d …d d…f ¡ |jd d …dd …f }t ||¡ d S )Nr   r   r   r   éÿÿÿÿ)r   r   r
   r   r#   )r   r   r%   r   r   r   r   Útest_iloc_frame_single_block0   s   z-BaseGetitemTests.test_iloc_frame_single_blockc                 C   sT   t  |¡}|jd d… }t  |d d… ¡}t ||¡ |jg d¢ }t ||¡ d S )Nr   r   r   )r   r	   Úlocr   r   r   r   r   r   Útest_loc_seriesF   r   z BaseGetitemTests.test_loc_seriesc                 C   sÊ   t  |tjt|ƒdd�dœ¡}t  d|d d… i¡}|jd d…dgf }t ||¡ |jg d¢dgf }t ||¡ t j|d d… dd�}|jd d…df }t 	||¡ |jd d…df }t 	||¡ d S )	Nr   r   r   r   r   r   r   r   )
r   r   r    r!   r"   r)   r   r#   r	   r   r$   r   r   r   Útest_loc_frameO   s   zBaseGetitemTests.test_loc_framec                 C   s~   t  d|i¡}t j|d gdgd|jd�}|jd }t ||¡ t j|d gdgt|ƒd |jd�}|jd }t ||¡ d S )Nr   r   )Úindexr   r   r'   r   )	r   r   r	   r   r)   r   r   r"   r
   r$   r   r   r   Ú test_loc_iloc_frame_single_dtypee   s   
ÿ
z1BaseGetitemTests.test_loc_iloc_frame_single_dtypec                 C   s>   |d }t ||jjƒsJ ‚t |¡d }t ||jjƒsJ ‚d S ©Nr   )Ú
isinstancer   Útyper   r	   ©r   r   r   r   r   r   Útest_getitem_scalart   s   z$BaseGetitemTests.test_getitem_scalarc                 C   s6  d}t jt|d�� |d  W d   ƒ n1 sw   Y  t jt|d�� |d  W d   ƒ n1 s3w   Y  t|ƒ}d dddd	|› d
|› �d|d › d|› �d|d › d|› �g¡}t jt|d�� ||d   W d   ƒ n1 suw   Y  t jt|d�� || d   W d   ƒ d S 1 s”w   Y  d S )Nz{only integers, slices \(`:`\), ellipsis \(`...`\), numpy.newaxis \(`None`\) and integer or boolean arrays are valid indices©ÚmatchÚfoog      @ú|zlist index out of rangezindex out of boundszOut of bounds accessz loc must be an integer between -z and zindex r   z' is out of bounds for axis 0 with size zindex -)ÚpytestÚraisesÚ
IndexErrorr"   Újoin)r   r   ÚmsgÚubr   r   r   Útest_getitem_invalid{   s0   ÿ
ÿ
ÿúÿ
ÿ"ÿz%BaseGetitemTests.test_getitem_invalidc                 C   s   |d }|||ƒsJ ‚d S r.   r   )r   Údata_missingÚna_cmpÚna_valuer   r   r   r   Útest_getitem_scalar_na—   s   z'BaseGetitemTests.test_getitem_scalar_nac                 C   sL   |g  }t |ƒdksJ ‚t|t|ƒƒsJ ‚|tjg dd� }t ||¡ d S )Nr   r   r   )r"   r/   r0   r    Úarrayr   Úassert_extension_array_equal)r   r   r   r   r   r   r   Útest_getitem_empty›   s
   z#BaseGetitemTests.test_getitem_emptyc                 C   sà   t jt|ƒtd�}|| }t|ƒdksJ ‚t|t|ƒƒsJ ‚t jt|ƒtd�}t |¡| }t|ƒdks6J ‚|j|jks>J ‚d|d< || }t|ƒdksNJ ‚t|t|ƒƒsWJ ‚t |¡| }t|ƒdksfJ ‚|j|jksnJ ‚d S )Nr   r   Tr   )	r    Úzerosr"   Úboolr/   r0   r   r	   r   )r   r   Úmaskr   r   r   r   Útest_getitem_mask¤   s   z"BaseGetitemTests.test_getitem_maskc                 C   sœ   t  ddg¡}dt|ƒ› �}tjt|d�� ||  W d   ƒ n1 s$w   Y  tj|dd�}tjt|d�� ||  W d   ƒ d S 1 sGw   Y  d S )NTFz-Boolean index has wrong length: 2 instead of r3   Úbooleanr   )r    rB   r"   r7   r8   r9   r   )r   r   rG   r;   r   r   r   Útest_getitem_mask_raises¼   s   
ÿ
"ÿz)BaseGetitemTests.test_getitem_mask_raisesc                 C   sÈ   t jtj|jdd�dd�}|| }t|ƒdksJ ‚t|t|ƒƒs"J ‚t  |¡| }t|ƒdks1J ‚|j	|j	ks9J ‚d|d d…< | 
g d¢¡}|| }t ||¡ t  |¡}t  |¡| }t ||¡ d S )NrF   r   rI   r   Té   )r   r   r   r   r   )r   rB   r    rE   Úshaper"   r/   r0   r	   r   Útaker   rC   r   )r   r   rG   r   r   r   r   r   Útest_getitem_boolean_array_maskÆ   s   
z0BaseGetitemTests.test_getitem_boolean_array_maskc                 C   s†   t jtj|jdd�dd�}t j|d d…< d|dd…< || }|| d¡ }t ||¡ t  	|¡}|| }|| d¡ }t 
||¡ d S )NrF   r   rI   r   Tr   F)r   rB   r    rE   rL   ÚNAÚfillnar   rC   r	   r   )r   r   rG   r   r   Úsr   r   r   Ú(test_getitem_boolean_na_treated_as_falseÙ   s   
z9BaseGetitemTests.test_getitem_boolean_na_treated_as_falseÚidx©r   r   r   ÚInt64r   )Úlistúinteger-arrayznumpy-array)Úidsc                 C   sl   || }t |ƒdksJ ‚t|t|ƒƒsJ ‚| g d¢¡}t ||¡ t |¡}t |¡| }t ||¡ d S )Nr   rT   )	r"   r/   r0   rM   r   rC   r   r	   r   )r   r   rS   r   r   r   r   r   Útest_getitem_integer_arrayë   s   
z+BaseGetitemTests.test_getitem_integer_arrayr   r   r   rV   rW   c                 C   s@   d}t jt|d�� ||  W d   ƒ d S 1 sw   Y  d S )Nú9Cannot index with an integer indexer containing NA valuesr3   )r7   r8   Ú
ValueError)r   r   rS   r;   r   r   r   Ú(test_getitem_integer_with_missing_raisesû   s   
"ÿz9BaseGetitemTests.test_getitem_integer_with_missing_raiseszSTries label-based and raises KeyError; in some cases raises when calling np.asarray)Úreasonc                 C   s`   d}t j|dd„ tt|ƒƒD ƒd�}tjt|d�� ||  W d   ƒ d S 1 s)w   Y  d S )NrZ   c                 S   s   g | ]}t d | ƒ‘qS )éd   )Úchr©Ú.0Úir   r   r   Ú
<listcomp>  s    zTBaseGetitemTests.test_getitem_series_integer_with_missing_raises.<locals>.<listcomp>©r,   r3   )r   r	   Úranger"   r7   r8   r[   )r   r   rS   r;   r   r   r   r   Ú/test_getitem_series_integer_with_missing_raises  s
   
 
"ÿz@BaseGetitemTests.test_getitem_series_integer_with_missing_raisesc                 C   s@   |t dƒ }t|t|ƒƒsJ ‚|t dƒ }t|t|ƒƒsJ ‚d S )Nr   r   )Úslicer/   r0   r1   r   r   r   Útest_getitem_slice  s   z#BaseGetitemTests.test_getitem_slicec                 C   sÔ   |dd d …f }t  ||¡ |d d …df }t  ||¡ |dd d…f }t  ||d d… ¡ |d d…df }t  ||d d… ¡ |dd d d…f }t  ||d d d… ¡ |d d d…df }t  ||d d d… ¡ d S )N.r   r   )r   rC   r1   r   r   r   Útest_getitem_ellipsis_and_slice  s   z0BaseGetitemTests.test_getitem_ellipsis_and_slicec                 C   sø  t j|dd„ tt|ƒƒD ƒd�}| d¡|jd ksJ ‚| ddg¡}|jddg }t ||¡ | tdƒ¡}|jdd	g }t ||¡ | d
¡d u sMJ ‚| |j	 
¡ d	 ¡d u s[J ‚t j|d d… tdƒd�}| d¡|jd kstJ ‚| tddƒ¡}|jg d¢ }t ||¡ | d¡}|d u s”J ‚d}tjt|d��+ | d¡|jd ksªJ ‚| d
¡|jd
 ks¶J ‚| t|ƒ¡d u sÁJ ‚W d   ƒ n1 sËw   Y  t  |¡}t d ¡� |d d d… }W d   ƒ n1 sìw   Y  | d	¡d u súJ ‚d S )Nc                 S   s   g | ]}d | ‘qS )r   r   r`   r   r   r   rc   4  s    z-BaseGetitemTests.test_get.<locals>.<listcomp>rd   r   r   é   r   r   r   r'   ÚabcdefÚcÚbÚd)r   r   r   ÚZz;Series.__getitem__ treating keys as positions is deprecatedr3   )r   r	   re   r"   Úgetr
   r   r   rg   r,   ÚmaxrV   Úassert_produces_warningÚFutureWarning)r   r   rQ   r   r   r;   Ús2r   r   r   Útest_get2  s8    
ý
þzBaseGetitemTests.test_getc                 C   sX   t  |¡g d¢ }|jd |d ksJ ‚|jd |d ksJ ‚|jd |d ks*J ‚d S )N©r   r   r   r   r   r   r   )r   r	   r
   r1   r   r   r   Útest_take_sequenceY  s   z#BaseGetitemTests.test_take_sequencec                 C   sÈ   |  ddg¡}|j|jksJ ‚|d |d ksJ ‚|d |d ks#J ‚|j ddgd|d�}|d |d ks7J ‚||d |ƒs@J ‚tjtdd�� |  t|ƒd g¡ W d   ƒ d S 1 s]w   Y  d S )Nr   r'   r   T)Ú
allow_fillÚ
fill_valuezout of boundsr3   )rM   r   r7   r8   r9   r"   )r   r   r@   r?   r   r   r   r   Ú	test_take_  s   "ÿzBaseGetitemTests.test_takec                 C   s®   |d d… }|j dgdd�}||d |ƒsJ ‚d}tjt|d�� |  dg¡ W d   ƒ n1 s1w   Y  tjtdd�� |  ddg¡ W d   ƒ d S 1 sPw   Y  d S )	Nr   r'   T©rx   z;cannot do a non-empty take from an empty axes|out of boundsr3   zcannot do a non-empty taker   )rM   r7   r8   r9   )r   r   r@   r?   Úemptyr   r;   r   r   r   Útest_take_emptyl  s   ÿ"ÿz BaseGetitemTests.test_take_emptyc                 C   sJ   t |ƒ}| d| |d dg¡}| dd|d |d g¡}t ||¡ d S )Nr   r   r'   )r"   rM   r   rC   )r   r   Únr   r   r   r   r   Útest_take_negativez  s   z#BaseGetitemTests.test_take_negativec                 C   sX   |d }|d }|j |||g|jd�}|jddg|dd�}| ddg¡}t ||¡ d S )Nr   r   r   r'   T©ry   rx   )Ú_from_sequencer   rM   r   rC   )r   r>   ry   ÚnaÚarrr   r   r   r   r   Útest_take_non_na_fill_value�  s   ÿz,BaseGetitemTests.test_take_non_na_fill_valuec                 C   sH   t jtdd�� |jddg|dd� W d   ƒ d S 1 sw   Y  d S )NÚ r3   r   éþÿÿÿTr€   )r7   r8   r[   rM   )r   r   r@   r   r   r   Ú&test_take_pandas_style_negative_raisesŒ  s   "ÿz7BaseGetitemTests.test_take_pandas_style_negative_raisesrx   TFc                 C   sX   |d d… }t jtdd�� |jt ddg¡|d� W d   ƒ d S 1 s%w   Y  d S )Nr   zout of bounds|out-of-boundsr3   r   r{   )r7   r8   r9   rM   r    Úasarray)r   r   rx   rƒ   r   r   r   Útest_take_out_of_bounds_raises�  s   "ÿz/BaseGetitemTests.test_take_out_of_bounds_raisesc                 C   sb   t  |¡}| ddg¡}t j|j|d |t|ƒd  g|jd�dt|ƒd gd�}t ||¡ d S )Nr   r'   r   r   rd   )r   r	   rM   r�   r"   r   r   r   )r   r   rQ   r   r   r   r   r   Útest_take_series—  s   
"þz!BaseGetitemTests.test_take_seriesc                 C   sÖ   t  |¡}| g d¢¡}t j| g d¢¡g d¢d�}t ||¡ t|ƒ}| dd|g¡}t j|j||d |g|jd�dd|gd�}t ||¡ | ||d g¡}t j|j||g|jd�||d gd�}t ||¡ d S )Nrv   rd   r'   r   r   r   )	r   r	   ÚreindexrM   r   r   r"   r�   r   )r   r   r@   rQ   r   r   r~   r   r   r   Útest_reindex   s    
þÿzBaseGetitemTests.test_reindexc                 C   sl   |d }|d }|j ||g|jd�}t |¡}|jg d¢|d�}t |j |||g|jd�¡}t ||¡ d S )Nr   r   r   rT   )ry   )r�   r   r   r	   r‹   r   r   )r   r>   Úvalidr‚   rƒ   r   r   r   r   r   r   Útest_reindex_non_na_fill_value´  s   
ÿz/BaseGetitemTests.test_reindex_non_na_fill_valuec                 C   sh   t  d|i¡}|jdgdf }|jdksJ ‚|jjd jdks!J ‚t|jdƒr0|jjjdks2J ‚d S d S )Nr   r   r   Úblocks)r   r   r)   ÚndimÚ_mgrÚarraysÚhasattrÚ_block)r   r   r%   Úresr   r   r   Útest_loc_len1Á  s   ÿzBaseGetitemTests.test_loc_len1c                 C   s¨   t  |¡}|d d…  ¡ }||d ksJ ‚d}tjt|d�� |d d…  ¡  W d   ƒ n1 s1w   Y  tjt|d�� | ¡  W d   ƒ d S 1 sMw   Y  d S )Nr   r   z6can only convert an array of size 1 to a Python scalarr3   )r   r	   Úitemr7   r8   r[   )r   r   rQ   r   r;   r   r   r   Ú	test_itemÊ  s   
ÿ
"ÿzBaseGetitemTests.test_itemN),Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r&   r(   r*   r+   r-   r2   r=   rA   rD   rH   rJ   rN   rR   r7   ÚmarkÚparametrizer   rB   r    rY   rO   r\   Úxfailrf   rh   ri   ru   rw   rz   r}   r   r„   r‡   r‰   rŠ   rŒ   rŽ   r–   r˜   r   r   r   r   r      sj    			
$ý
$ý
ÿ$ý'
		r   )	Únumpyr    r7   Úpandasr   Úpandas._testingÚ_testingr   r   r   r   r   r   Ú<module>   s
    