o
    g:                     @   s8   d dl Zd dlZd dl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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d+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Z d9d: Z!d;d< Z"ejd=d>d?gd@dA Z#dBdC Z$dDdE Z%dFdG Z&dHdI Z'dJdK Z(dLdM Z)dNS )O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   a/home/ubuntu/cloudmapper/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 }| || |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_block0   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_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 }| || |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_frameO   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_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   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/   r0   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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 matchbooleanr   )r    r7   r"   pytestraises
IndexErrorr	   )r   r   r<   msgr   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 || }| || d S )Nr;   r   r@   r   T   )r   r   r   r   r   )r	   r7   r    r:   shaper"   r/   r0   r
   r   taker8   r   )r   r   r<   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 )Nr;   r   r@   r   Tr   F)
r	   r7   r    r:   rG   NAfillnar8   r
   r   )r   r   r<   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|| }| || d S )Nr   rO   )r"   r/   r0   rH   r8   r	   r
   r   )r   r   rN   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    d S 1 sw   Y  d S )Nz9Cannot index with an integer indexer containing NA valuesr>   )rA   rB   
ValueError)r   r   rN   rD   r   r   r   (test_getitem_integer_with_missing_raises   s   
"z9BaseGetitemTests.test_getitem_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 }|  || |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   )r8   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d}|jdd	g }| || |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 }| || |d}|d u sJ |d|jd ksJ |d
|jd
 ksJ |t|d u sJ t |}|d d d }|d	d u sJ d S )Nc                 S   s   g | ]}d | qS )r   r   ).0ir   r   r   
<listcomp>  s    z-BaseGetitemTests.test_get.<locals>.<listcomp>r,   r   r      r   r   r   r'   abcdefcbd)r   r   r   Z)r	   r
   ranger"   getr   r   rW   r,   maxrQ   )r   r   rL   r   r   s2r   r   r   test_get  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s*J d S )Nr   r   r   r   r   r   r   )r	   r
   r   r1   r   r   r   test_take_sequence/  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 boundsr>   )rH   r   rA   rB   rC   r"   )r   r   r5   r4   r   r   r   r   	test_take5  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rk   z;cannot do a non-empty take from an empty axes|out of boundsr>   zcannot do a non-empty taker   )rH   rA   rB   rC   )r   r   r5   r4   emptyr   rD   r   r   r   test_take_emptyB  s   "z BaseGetitemTests.test_take_emptyc                 C   sJ   t |}|d| |d dg}|dd|d |d g}| || d S )Nr   r   r'   )r"   rH   r8   )r   r   nr   r   r   r   r   test_take_negativeP  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rl   rk   )_from_sequencer   rH   r8   )r   r3   rl   naarrr   r   r   r   r   test_take_non_na_fill_valueW  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 r>   r   Trs   )rA   rB   rU   rH   )r   r   r5   r   r   r   &test_take_pandas_style_negative_raisesb  s   "z7BaseGetitemTests.test_take_pandas_style_negative_raisesrk   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-boundsr>   r   rn   )rA   rB   rC   rH   r    asarray)r   r   rk   rv   r   r   r   test_take_out_of_bounds_raisesf  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
   rH   rt   r"   r   r   )r   r   rL   r   r   r   r   r   test_take_seriesm  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 )Nri   r]   r'   r   r   r   )r	   r
   reindexrH   r   r"   rt   r   )r   r   r5   rL   r   r   rq   r   r   r   test_reindexv  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   rO   )rl   )rt   r   r	   r
   r~   r   )r   r3   validru   rv   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 scalarr>   )r	   r
   itemrA   rB   rU   )r   r   rL   r   rD   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   col1helloworldr   r   zslice(None, 1, None))r	   r   StringArrayr   r    r7   objectr   assert_equalstrr   )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-   r2   r6   r9   r=   rE   rI   rM   rA   markparametrizer	   r7   r    rT   rJ   rV   rX   rY   rh   rj   rm   rp   rr   rw   rz   r|   r}   r   r   r   r   r   r   r   r   r   r      sX    			
$
$
#
		r   )numpyr    rA   pandasr	    pandas.tests.extension.base.baser   r   r   r   r   r   <module>   s
    