B
    `,3                 @   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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d*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Z d8d9 Z!ejd:d;d<gd=d> Z"d?d@ Z#dAdB Z$dCdD Z%dEdF Z&dGdH Z'dIS )J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   r         )pdSeriesilocassert_series_equal)selfdataserresultexpected r   R/home/dcms/DCMS/lib/python3.7/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   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   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   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 }|||st d S )Nr   )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stt|t|stt|| }t|dkst|j	|j	kstd S )N)r   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   s\   t ddg}tt ||  W d Q R X tj|dd}tt ||  W d Q R X d S )NTFboolean)r   )r   r/   pytestraises
IndexErrorr   )r   r   r4   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 )Nr3   )r   r6   r   T   r   r   r   r   )r   r/   r   r2   shaper   r)   r'   r(   r	   r   taker0   r   )r   r   r4   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 )Nr3   )r   r6   r   Tr   F)
r   r/   r   r2   r<   NAZfillnar0   r	   r   )r   r   r4   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Int64)r   listzinteger-arrayznumpy-array)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(   r=   r0   r   r	   r   )r   r   rB   r   r   r   r   r   test_getitem_integer_array   s    
z+BaseGetitemTests.test_getitem_integer_arrayc          	   C   s*   d}t jt|d ||  W d Q R X d S )Nz9Cannot index with an integer indexer containing NA values)match)r7   r8   
ValueError)r   r   rB   msgr   r   r   (test_getitem_integer_with_missing_raises   s    z9BaseGetitemTests.test_getitem_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)   )r   r   r   r   r   r   test_getitem_slice   s    z#BaseGetitemTests.test_getitem_slicec             C   s  t j|dd tt|D d}|d|jd ks8t|ddg}|jddg }| || |td}|jdd	g }| || |d
d kst||j	
 d	 d kstt j|d d tdd}|d|jd kst|tdd}|jd	ddg }| || |d}|d ks,t|d|jd ksFt|d
|jd
 ks`t|t|d ksxtt |}|d d d }|d	d kst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    ZabcdefcbdZ)r   r	   ranger   getr
   r)   r   rJ   r%   maxrC   )r   r   r@   r   r   s2r   r   r   test_get   s.     

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)   )r   r   r   r   r   r   test_take_sequence  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 |sttjtdd | t|d g W d Q R X d S )Nr   r    r   T)
allow_fill
fill_valuezout of bounds)rF   )r=   r   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.ttt | dg W d Q R X tjtdd | ddg W d Q R X d S )Nr   r    T)rZ   zcannot do a non-empty take)rF   r   )r=   r)   r7   r8   r9   )r   r   r-   r,   emptyr   r   r   r   test_take_empty.  s    z BaseGetitemTests.test_take_emptyc             C   sJ   t |}|d| |d dg}|dd|d |d g}| || d S )Nr   r   r    )r   r=   r0   )r   r   nr   r   r   r   r   test_take_negative:  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)r[   rZ   )_from_sequencer   r=   r0   )r   r+   r[   nar/   r   r   r   r   r   test_take_non_na_fill_valueA  s    z,BaseGetitemTests.test_take_non_na_fill_valuec          	   C   s.   t t |jddg|dd W d Q R X d S )Nr   T)r[   rZ   )r7   r8   rG   r=   )r   r   r-   r   r   r   &test_take_pandas_style_negative_raisesL  s    z7BaseGetitemTests.test_take_pandas_style_negative_raisesrZ   TFc          	   C   s>   |d d }t t |jtddg|d W d Q R X d S )Nr   r   )rZ   )r7   r8   r9   r=   r   Zasarray)r   r   rZ   Zarrr   r   r   test_take_out_of_bounds_raisesP  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	   r=   ra   r   r   r   )r   r   r@   r   r   r   r   r   test_take_seriesV  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   )r%   r    )r   )r   r	   reindexr=   r   r   ra   r   )r   r   r-   r@   r   r   r_   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   )r[   )ra   r   r   r	   rh   r   )r   r+   Zvalidrb   r/   r   r   r   r   r   r   test_reindex_non_na_fill_values  s    
z/BaseGetitemTests.test_reindex_non_na_fill_valuec             C   s4   t d|i}|jdgdf }|jjjdks0td S )Nr   r   r   )r   r   r"   Z_mgr_blockndimr)   )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 d Q R X tjt|d |  W d Q R X d S )Nr   r   z6can only convert an array of size 1 to a Python scalar)rF   )r   r	   itemr)   r7   r8   rG   )r   r   r@   r   rH   r   r   r   	test_item  s    
zBaseGetitemTests.test_itemN)(__name__
__module____qualname____doc__r   r   r!   r#   r$   r&   r*   r.   r1   r5   r:   r>   rA   r7   markZparametrizer   r/   r   rE   r?   rI   rK   rX   rY   r\   r^   r`   rc   re   rf   rg   ri   rj   rn   rp   r   r   r   r   r   	   sH   				*$#	r   )numpyr   r7   Zpandasr   baser   r   r   r   r   r   <module>   s   