a
    oÝEb$@  ã                   @   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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+dRdS„ Z,dTS )UÚBaseGetitemTestsz%Tests for ExtensionArray.__getitem__.c                 C   sT   t  |¡}|jd d… }t  |d d… ¡}|  ||¡ |jg d¢ }|  ||¡ d S )Né   ©r   é   é   é   )ÚpdÚSeriesÚilocÚassert_series_equal©ÚselfÚdataÚserÚresultÚexpected© r   úc/home/ja/django-apps/lartica_env/lib/python3.9/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g d¢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   ©Únamer   r   )	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   sT   t  |¡}|jd d… }t  |d d… ¡}|  ||¡ |jg d¢ }|  ||¡ d S )Nr   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g d¢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   Ú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J ‚t |¡d }t ||jjƒs:J ‚d S ©Nr   )Ú
isinstancer   Útyper	   r
   ©r   r   r   r   r   r   Útest_getitem_scalaru   s    z$BaseGetitemTests.test_getitem_scalarc                 C   s6  d}t jt|d�� |d  W d   ƒ n1 s00    Y  t jt|d�� |d  W d   ƒ n1 sf0    Y  t|ƒ}d dddd	|› d
|› �d|d › d|› �d|d › d|› �g¡}t jt|d�� ||d   W d   ƒ n1 sê0    Y  t jt|d�� || d   W d   ƒ n1 �s(0    Y  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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� }|  ||¡ d S )Nr   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*J ‚t|t|ƒƒs<J ‚t jt|ƒtd�}t |¡| }t|ƒdkslJ ‚|j|jks|J ‚d|d< || }t|ƒdksœJ ‚t|t|ƒƒs®J ‚t |¡| }t|ƒdksÌJ ‚|j|jksÜJ ‚d S )Nr   r   Tr   )	r   Úzerosr!   Úboolr.   r/   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 sH0    Y  tj|dd�}tjt|d�� ||  W d   ƒ n1 sŒ0    Y  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s2J ‚t|t|ƒƒsDJ ‚t  |¡| }t|ƒdksbJ ‚|j	|j	ksrJ ‚d|d d…< | 
g d¢¡}|| }|  ||¡ t  |¡}t  |¡| }|  ||¡ d S )NrC   r   rF   r   Té   )r   r   r   r   r   )r	   r?   r   rB   Úshaper!   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Úidx©r   r   r   ZInt64r   )Úlistúinteger-arrayznumpy-array)Úidsc                 C   sl   || }t |ƒdksJ ‚t|t|ƒƒs*J ‚| g d¢¡}|  ||¡ t |¡}t |¡| }|  ||¡ d S )Nr   rP   )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_arrayr   r   r   rQ   rR   c                 C   s>   d}t jt|d�� ||  W d   ƒ n1 s00    Y  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   s^   d}t j|dd„ tt|ƒƒD ƒd�}tjt|d�� ||  W d   ƒ n1 sP0    Y  d S )NrU   c                 S   s   g | ]}t  d ¡‘qS )r   )ÚtmZrands)Ú.0Ú_r   r   r   Ú
<listcomp>  ó    zTBaseGetitemTests.test_getitem_series_integer_with_missing_raises.<locals>.<listcomp>©r+   r2   )r	   r
   Úranger!   r5   r6   rV   )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J ‚|t dƒ }t|t|ƒƒs<J ‚d S )Nr   r   )Úslicer.   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s8J ‚| ddg¡}|jddg }|  ||¡ | tdƒ¡}|jdd	g }|  ||¡ | d
¡d u sšJ ‚| |j 	¡ d	 ¡d u s¶J ‚t j|d d… t
dƒd�}| d¡|jd ksèJ ‚| tddƒ¡}|jg d¢ }|  ||¡ | d¡}|d u �s*J ‚| d¡|jd k�sDJ ‚| d
¡|jd
 k�s^J ‚| t|ƒ¡d u �svJ ‚t  |¡}|d d d… }| d	¡d u �s¢J ‚d S )Nc                 S   s   g | ]}d | ‘qS )r   r   )rZ   Úir   r   r   r\   5  r]   z-BaseGetitemTests.test_get.<locals>.<listcomp>r^   r   r   é   r   r   r   r&   ZabcdefÚcÚbÚd)r   r   r   ÚZ)r	   r
   r_   r!   Úgetr   r   ra   r+   ÚmaxrQ   )r   r   rM   r   r   Ús2r   r   r   Útest_get3  s.     

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sTJ ‚d S )N©r   r   r   r   r   r   r   )r	   r
   r   r0   r   r   r   Útest_take_sequenceV  s    z#BaseGetitemTests.test_take_sequencec                 C   sÆ   |  ddg¡}|j|jksJ ‚|d |d ks2J ‚|d |d ksFJ ‚|j ddgd|d�}|d |d ksnJ ‚||d |ƒs€J ‚tjtdd��$ |  t|ƒd g¡ W d   ƒ n1 s¸0    Y  d S )Nr   r&   r   T)Ú
allow_fillÚ
fill_valuezout of boundsr2   )rJ   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.J ‚d}tjt|d�� |  dg¡ W d   ƒ n1 sb0    Y  tjtdd�� |  ddg¡ W d   ƒ n1 sž0    Y  d S )	Nr   r&   T©rp   z;cannot do a non-empty take from an empty axes|out of boundsr2   zcannot do a non-empty taker   )rJ   r5   r6   r7   )r   r   r=   r<   Úemptyr   r9   r   r   r   Útest_take_emptyi  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_negativew  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©rq   rp   )Ú_from_sequencer   rJ   r@   )r   r;   rq   ÚnaÚarrr   r   r   r   r   Útest_take_non_na_fill_value~  s    ÿz,BaseGetitemTests.test_take_non_na_fill_valuec                 C   sF   t jtdd��$ |jddg|dd� W d   ƒ n1 s80    Y  d S )NÚ r2   r   éþÿÿÿTrx   )r5   r6   rV   rJ   )r   r   r=   r   r   r   Ú&test_take_pandas_style_negative_raises‰  s    z7BaseGetitemTests.test_take_pandas_style_negative_raisesrp   TFc                 C   sV   |d d… }t jtdd��( |jt ddg¡|d� W d   ƒ n1 sH0    Y  d S )Nr   zout of bounds|out-of-boundsr2   r   rs   )r5   r6   r7   rJ   r   Zasarray)r   r   rp   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�}|  ||¡ d S )Nr   r&   r   r   r^   )r	   r
   rJ   ry   r!   r   r   )r   r   rM   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|ƒ}| 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 )Nrn   r^   r&   r   r   r   )r	   r
   ÚreindexrJ   r   r!   ry   r   )r   r   r=   rM   r   r   rv   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�¡}|  ||¡ d S )Nr   r   r   rP   )rq   )ry   r   r	   r
   r‚   r   )r   r;   Zvalidrz   r{   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,J ‚|jjd jdksBJ ‚t|jdƒr`|jjjdks`J ‚d S )Nr   r   r   Úblocks)r	   r   r(   ÚndimZ_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 sb0    Y  tjt|d�� | ¡  W d   ƒ n1 s˜0    Y  d S )Nr   r   z6can only convert an array of size 1 to a Python scalarr2   )r	   r
   Úitemr5   r6   rV   )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$   r[   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   rT   rL   rW   Zxfailr`   rb   rc   rm   ro   rr   ru   rw   r|   r   r€   r�   rƒ   r„   r‹   r�   r›   r   r   r   r   r   	   sj   			
$ý
$ý
ÿ$ý#
		r   )Únumpyr   r5   Zpandasr	   Zpandas._testingZ_testingrY   Z pandas.tests.extension.base.baser   r   r   r   r   r   Ú<module>   s
   