U
    ÎZjó@  ã                   @   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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dd d!gejdd d!gd"d#�e dd d!g¡gd$d%d&g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.d/„ ƒƒZd0d1„ Zd2d3„ Zd4d5„ Zd6d7„ Z d8d9„ Z!d:d;„ Z"d<d=„ Z#d>d?„ Z$d@dA„ Z%ej dBdCdDg¡dEdF„ ƒZ&dGdH„ Z'dIdJ„ Z(dKdL„ Z)dMdN„ Z*dOdP„ Z+dQdR„ Z,dSS )TÚBaseGetitemTestsz%Tests for ExtensionArray.__getitem__.c                 C   sX   t  |¡}|jd d… }t  |d d… ¡}|  ||¡ |jddddg }|  ||¡ d S )Né   r   é   é   é   )ÚpdÚSeriesÚilocÚassert_series_equal©ÚselfÚdataÚserÚresultÚexpected© r   úf/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/pandas/tests/extension/base/getitem.pyÚtest_iloc_series   s    
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 }|  ||¡ |jdddd	gdgf }|  ||¡ t j|d d… dd
�}|jd d…df }|  ||¡ |jd d…df }|  ||¡ |jd d …d d d…f }|  ||dg ¡ |ddg jd d …d d d…f }|  ||dg ¡ d S )NÚint64©Údtype©ÚAÚBr   r   r   r   r   r   ©Únamer   )	r   Ú	DataFrameÚnpÚarangeÚlenr
   Ú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 }|  ||¡ |jd d …d d…f }|  ||¡ |jd d …d d…f }|  ||¡ |jd d …d d d…f }|  ||¡ |jd d …dd…f }|  ||jd d …d d…f ¡ |jd d …dd …f }|  ||¡ d S )Nr   r   r   r   éÿÿÿÿ)r   r   r
   r!   )r   r   r#   r   r   r   r   Útest_iloc_frame_single_block1   s    z-BaseGetitemTests.test_iloc_frame_single_blockc                 C   sX   t  |¡}|jd d… }t  |d d… ¡}|  ||¡ |jddddg }|  ||¡ d S )Nr   r   r   r   r   )r   r	   Úlocr   r   r   r   r   Útest_loc_seriesG   s    
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 }|  ||¡ |jddd	dgdgf }|  ||¡ t j|d d… dd
�}|jd d…df }|  ||¡ |jd d…df }|  ||¡ d S )Nr   r   r   r   r   r   r   r   r   r   )	r   r   r   r   r    r'   r!   r	   r   r"   r   r   r   Útest_loc_frameP   s    zBaseGetitemTests.test_loc_framec                 C   s~   t  d|i¡}t j|d gdgd|jd�}|jd }|  ||¡ t j|d gdgt|ƒd |jd�}|jd }|  ||¡ d S )Nr   r   )Úindexr   r   r%   r   )r   r   r	   r   r'   r   r    r
   r"   r   r   r   Ú test_loc_iloc_frame_single_dtypef   s    
  
 ÿ
z1BaseGetitemTests.test_loc_iloc_frame_single_dtypec                 C   s>   |d }t ||jjƒst‚t |¡d }t ||jjƒs:t‚d S ©Nr   )Ú
isinstancer   ÚtypeÚAssertionErrorr   r	   ©r   r   r   r   r   r   Útest_getitem_scalaru   s    z$BaseGetitemTests.test_getitem_scalarc                 C   sä   d}t jt|d�� |d  W 5 Q R X t jt|d�� |d  W 5 Q R X t|ƒ}d dddd	|› d
|› �d|d › d|› �d|d › d|› �g¡}t jt|d�� ||d   W 5 Q R X t jt|d�� || d   W 5 Q R X d S )Nz{only integers, slices \(`:`\), ellipsis \(`...`\), numpy.newaxis \(`None`\) and integer or boolean arrays are valid indices©ÚmatchZ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   ÚmsgZubr   r   r   Útest_getitem_invalid|   s(    ÿúÿ
z%BaseGetitemTests.test_getitem_invalidc                 C   s   |d }|||ƒst ‚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t‚t|t|ƒƒs*t‚|tjg dd� }|  ||¡ d S )Nr   r   r   )r    r/   r-   r.   r   ÚarrayÚ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*t‚t|t|ƒƒs<t‚t jt|ƒtd�}t |¡| }t|ƒdkslt‚|j	|j	ks|t‚d|d< || }t|ƒdksœt‚t|t|ƒƒs®t‚t |¡| }t|ƒdksÌt‚|j	|j	ksÜt‚d S )Nr   r   Tr   )
r   Úzerosr    Úboolr/   r-   r.   r   r	   r   )r   r   Úmaskr   r   r   r   Útest_getitem_mask¥   s    z"BaseGetitemTests.test_getitem_maskc              	   C   sr   t  ddg¡}dt|ƒ› �}tjt|d�� ||  W 5 Q R X tj|dd�}tjt|d�� ||  W 5 Q R X d S )NTFz-Boolean index has wrong length: 2 instead of r2   Úbooleanr   )r   r?   r    r5   r6   r7   r   )r   r   rD   r9   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s2t‚t|t|ƒƒsDt‚t  	|¡| }t|ƒdksbt‚|j
|j
ksrt‚d|d d…< | dddd	d
g¡}|| }|  ||¡ t  	|¡}t  	|¡| }|  ||¡ d S )NrC   r   rF   r   Té   r   r   r   r   )r   r?   r   rB   Úshaper    r/   r-   r.   r	   r   Útaker@   r   )r   r   rD   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  |¡}|| }|| d¡ }|  	||¡ d S )NrC   r   rF   r   Tr   F)
r   r?   r   rB   rI   ÚNAZfillnar@   r	   r   )r   r   rD   r   r   Úsr   r   r   Ú(test_getitem_boolean_na_treated_as_falseÚ   s    
z9BaseGetitemTests.test_getitem_boolean_na_treated_as_falseÚidxr   r   r   ZInt64r   Úlistzinteger-arrayznumpy-array)Zidsc                 C   sn   || }t |ƒdkst‚t|t|ƒƒs*t‚| dddg¡}|  ||¡ t |¡}t |¡| }|  ||¡ d S )Nr   r   r   r   )	r    r/   r-   r.   rJ   r@   r   r	   r   )r   r   rO   r   r   r   r   r   Útest_getitem_integer_arrayì   s    
z+BaseGetitemTests.test_getitem_integer_arrayc              	   C   s*   d}t jt|d�� ||  W 5 Q R X d S )Nú9Cannot index with an integer indexer containing NA valuesr2   )r5   r6   Ú
ValueError)r   r   rO   r9   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   sJ   d}t j|dd„ tt|ƒƒD ƒd�}tjt|d�� ||  W 5 Q R X d S )NrR   c                 S   s   g | ]}t  d ¡‘qS )r   )ÚtmZrands)Ú.0Ú_r   r   r   Ú
<listcomp>  s     zTBaseGetitemTests.test_getitem_series_integer_with_missing_raises.<locals>.<listcomp>©r*   r2   )r   r	   Úranger    r5   r6   rS   )r   r   rO   r9   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t‚|t dƒ }t|t|ƒƒs<t‚d S )Nr   r   )Úslicer-   r.   r/   r0   r   r   r   Útest_getitem_slice  s    z#BaseGetitemTests.test_getitem_slicec                 C   sÔ   |dd d …f }|   ||¡ |d d …df }|   ||¡ |dd d…f }|   ||d d… ¡ |d d…df }|   ||d d… ¡ |dd d d…f }|   ||d d d… ¡ |d d d…df }|   ||d d d… ¡ d S )N.r   r   )r@   r0   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s8t‚| ddg¡}|jddg }|  ||¡ tj	t
dd	�� | tdƒ¡}W 5 Q R X |jd
dg }|  ||¡ | d¡d ks´t‚| |j ¡ d ¡d ksÐt‚t j|d d… tdƒd�}| d¡|jd k�st‚| tddƒ¡}|jdddg }|  ||¡ | d¡}|d k�sHt‚| d¡|jd k�sbt‚| d¡|jd k�s|t‚| t|ƒ¡d k�s”t‚t  |¡}t 	d ¡� |d d d… }W 5 Q R X | d¡d k�sÖt‚d S )Nc                 S   s   g | ]}d | ‘qS )r   r   )rW   Úir   r   r   rY   5  s     z-BaseGetitemTests.test_get.<locals>.<listcomp>rZ   r   r   é   r   zlabel-basedr2   r   r   r%   ZabcdefÚcÚbÚdÚZ)r   r	   r[   r    Úgetr
   r/   r   rV   Zassert_produces_warningÚFutureWarningr]   r*   ÚmaxrP   )r   r   rM   r   r   Ús2r   r   r   Útest_get3  s2     

zBaseGetitemTests.test_getc                 C   sZ   t  |¡dddg }|jd |d ks*t‚|jd |d ks@t‚|jd |d ksVt‚d S )Nr   r   r   r   )r   r	   r
   r/   r0   r   r   r   Útest_take_sequenceY  s    z#BaseGetitemTests.test_take_sequencec              	   C   s²   |  ddg¡}|j|jkst‚|d |d ks2t‚|d |d ksFt‚|j ddgd|d�}|d |d ksnt‚||d |ƒs€t‚tjtdd�� |  t|ƒd g¡ W 5 Q R X d S )Nr   r%   r   T)Ú
allow_fillÚ
fill_valuezout of boundsr2   )rJ   r   r/   r5   r6   r7   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.t‚d}tjt|d�� |  dg¡ W 5 Q R X tjtdd�� |  ddg¡ W 5 Q R X d S )	Nr   r%   T©rl   z;cannot do a non-empty take from an empty axes|out of boundsr2   zcannot do a non-empty taker   )rJ   r/   r5   r6   r7   )r   r   r=   r<   Úemptyr   r9   r   r   r   Útest_take_emptyl  s    z BaseGetitemTests.test_take_emptyc                 C   sJ   t |ƒ}| d| |d dg¡}| dd|d |d g¡}|  ||¡ d S )Nr   r   r%   )r    rJ   r@   )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¡}|  ||¡ d S )Nr   r   r   r%   T©rm   rl   )Ú_from_sequencer   rJ   r@   )r   r;   rm   ÚnaÚarrr   r   r   r   r   Útest_take_non_na_fill_value�  s     ÿz,BaseGetitemTests.test_take_non_na_fill_valuec              	   C   s2   t jtdd�� |jddg|dd� W 5 Q R X d S )NÚ r2   r   éþÿÿÿTrt   )r5   r6   rS   rJ   )r   r   r=   r   r   r   Ú&test_take_pandas_style_negative_raisesŒ  s    z7BaseGetitemTests.test_take_pandas_style_negative_raisesrl   TFc              	   C   sB   |d d… }t jtdd�� |jt ddg¡|d� W 5 Q R X d S )Nr   zout of bounds|out-of-boundsr2   r   ro   )r5   r6   r7   rJ   r   Zasarray)r   r   rl   rw   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�}|  ||¡ d S )Nr   r%   r   r   rZ   )r   r	   rJ   ru   r    r   r   )r   r   rM   r   r   r   r   r   Útest_take_series—  s    
"þz!BaseGetitemTests.test_take_seriesc                 C   sÜ   t  |¡}| dddg¡}t j| dddg¡dddgd�}|  ||¡ t|ƒ}| dd|g¡}t j|j||d |g|jd�dd|gd�}|  ||¡ | ||d g¡}t j|j||g|jd�||d gd�}|  ||¡ d S )Nr   r   r   rZ   r%   r   )r   r	   ÚreindexrJ   r   r    ru   r   )r   r   r=   rM   r   r   rr   r   r   r   Útest_reindex   s"    
 þ 
ÿzBaseGetitemTests.test_reindexc                 C   sn   |d }|d }|j ||g|jd�}t |¡}|jdddg|d�}t |j |||g|jd�¡}|  ||¡ d S )Nr   r   r   r   )rm   )ru   r   r   r	   r~   r   )r   r;   Zvalidrv   rw   r   r   r   r   r   r   Útest_reindex_non_na_fill_value´  s    
ÿz/BaseGetitemTests.test_reindex_non_na_fill_valuec                 C   sd   t  d|i¡}|jdgdf }|jdks,t‚|jjd jdksBt‚t|jdƒr`|jjjdks`t‚d S )Nr   r   r   Úblocks)	r   r   r'   Úndimr/   Z_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*t‚d}tjt|d�� |d d…  ¡  W 5 Q R X tjt|d�� | ¡  W 5 Q R X d S )Nr   r   z6can only convert an array of size 1 to a Python scalarr2   )r   r	   Úitemr/   r5   r6   rS   )r   r   rM   r   r9   r   r   r   Ú	test_itemÊ  s    
zBaseGetitemTests.test_itemc                 C   s^   G dd„ dt jjƒ}t  d|tjddgtd�ƒi¡}|jd d… }|  t	|d jj
ƒd¡ d S )	Nc                       s    e Zd ZdZ‡ fdd„Z‡  ZS )zBBaseGetitemTests.test_ellipsis_index.<locals>.CapturingStringArrayz6Extend StringArray to capture arguments to __getitem__c                    s   || _ tƒ  |¡S )N)Úlast_item_argÚsuperÚ__getitem__)r   rˆ   ©Ú	__class__r   r   rŒ   Ý  s    zNBaseGetitemTests.test_ellipsis_index.<locals>.CapturingStringArray.__getitem__)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rŒ   Ú__classcell__r   r   r�   r   ÚCapturingStringArrayÚ  s   r”   Zcol1ZhelloZworldr   r   zslice(None, 1, None))r   rƒ   ZStringArrayr   r   r?   Úobjectr
   Zassert_equalÚstrrŠ   )r   r”   r#   rX   r   r   r   Útest_ellipsis_index×  s    ÿz$BaseGetitemTests.test_ellipsis_indexN)-r�   r�   r‘   r’   r   r$   r&   r(   r)   r+   r1   r:   r>   rA   rE   rG   rK   rN   r5   ÚmarkZparametrizer   r?   r   rQ   rL   rT   Zxfailr\   r^   r_   rj   rk   rn   rq   rs   rx   r{   r|   r}   r   r€   r‡   r‰   r—   r   r   r   r   r   	   sj   			
*ý
$ý
ÿ$ý&
		r   )Únumpyr   r5   Zpandasr   Zpandas._testingZ_testingrV   Z pandas.tests.extension.base.baser   r   r   r   r   r   Ú<module>   s
   