3
Ud,                 @   sB   d dl Zd dlZd dlZd dljZddlm	Z	 G dd de	Z
dS )    N   )BaseExtensionTestsc            
   @   s  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zej	j
dddg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ejdddddgejdddddgdd ejdddejejgdd gd!d"d#gd$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jd,d-d.ggd0d1d!gd$d2d3 Zej	j
d4d,d-d.ejgdfejd,d-d.ejgdej	jd5d6d7ejd,d-d.ejgd/d dfejd,d-d.ejgd/d dfgd8d9d:d;gd$d<d= Zej	j
d>ddgej	j
ddd?gd@dA Zej	j
ddd?gdBdC ZdDdE ZdFdG Z dHdI Z!ej	jdJd6dKdL Z"dMdN Z#dOdP Z$dQdR Z%dSdT Z&dUdV Z'dWdX Z(dYdZ Z)d[d\ Z*d]d^ Z+d_d` Z,d?S )aBaseSetitemTestsc             C   s2   |rt j|}|d |d< |d |d ks.td S )Nr   r   )pdSeriesAssertionError)selfdatabox_in_series r   W/var/www/html/virt/lib64/python3.6/site-packages/pandas/tests/extension/base/setitem.pytest_setitem_scalar_series   s    
z+BaseSetitemTests.test_setitem_scalar_seriesc             C   sZ   |rt j|}|j }|d |d g|ddg< |d |d ksBt|d |d ksVtd S )Nr   r   )r   r   copyr   )r   r	   r
   originalr   r   r   test_setitem_sequence   s    
z&BaseSetitemTests.test_setitem_sequencec             C   s   t j|}|j }|d g}|r*|j|}d}tjt|jdd ||ddg< W d Q R X | j|| tjt|jdd ||t	d< W d Q R X | j|| d S )Nr   z5cannot set using a {} indexer with a different lengthz	list-like)matchr   slice   )
r   r   r   Z_from_sequencepytestraises
ValueErrorformatassert_series_equalr   )r   r	   Zas_arrayserr   valuexprr   r   r   .test_setitem_sequence_mismatched_length_raises   s    


z?BaseSetitemTests.test_setitem_sequence_mismatched_length_raisesc             C   s8   |rt j|}|j }g |tjg td< | j|| d S )N)dtype)r   r   r   nparrayintassert_equal)r   r	   r
   r   r   r   r   test_setitem_empty_indxer+   s
    
z*BaseSetitemTests.test_setitem_empty_indxerc             C   sJ   |rt j|}|d |ddg< |d |d ks2t|d |d ksFtd S )N   r   r   )r   r   r   )r   r	   r
   r   r   r    test_setitem_sequence_broadcasts2   s
    
z1BaseSetitemTests.test_setitem_sequence_broadcastssetterlocilocc             C   s8   t j|}t||}|d |d< |d |d ks4td S )Nr   r   )r   r   getattrr   )r   r	   r%   arrr   r   r   test_setitem_scalar9   s    

z$BaseSetitemTests.test_setitem_scalarc             C   sB   t jtjt||d}|d |jd< |jd |d ks>td S )N)ABr   r   r,   )r   r,   )r   r,   )r   	DataFramer   arangelenr&   r   )r   r	   dfr   r   r   test_setitem_loc_scalar_mixed@   s    z.BaseSetitemTests.test_setitem_loc_scalar_mixedc             C   s6   t jd|i}|d |jd< |jd |d ks2td S )Nr,   r   
   )r2   r,   )r2   r,   )r   r-   r&   r   )r   r	   r0   r   r   r   test_setitem_loc_scalar_singleE   s    z/BaseSetitemTests.test_setitem_loc_scalar_singlec             C   s8   t j||d}|d |jd< |jd |d ks4td S )N)r+   r,   r   r2   r,   )r2   r,   )r2   r,   )r   r-   r&   r   )r   r	   r0   r   r   r   ,test_setitem_loc_scalar_multiple_homogoneousJ   s    z=BaseSetitemTests.test_setitem_loc_scalar_multiple_homogoneousc             C   sB   t jtjt||d}|d |jd< |jd |d ks>td S )N)r+   r,   r   r   r,   )r   r   )r   r,   )r   r-   r   r.   r/   r'   r&   r   )r   r	   r0   r   r   r   test_setitem_iloc_scalar_mixedO   s    z/BaseSetitemTests.test_setitem_iloc_scalar_mixedc             C   s6   t jd|i}|d |jd< |jd |d ks2td S )Nr,   r   r2   r   )r2   r   )r2   r,   )r   r-   r'   r&   r   )r   r	   r0   r   r   r   test_setitem_iloc_scalar_singleT   s    z0BaseSetitemTests.test_setitem_iloc_scalar_singlec             C   s8   t j||d}|d |jd< |jd |d ks4td S )N)r+   r,   r   r2   r,   )r2   r   )r2   r,   )r   r-   r'   r&   r   )r   r	   r0   r   r   r   -test_setitem_iloc_scalar_multiple_homogoneousY   s    z>BaseSetitemTests.test_setitem_iloc_scalar_multiple_homogoneousmaskTFboolean)r   znumpy-arrayzboolean-arrayzboolean-array-na)idsc             C   sX   |d d j  }|jdddddg}|r<tj|}tj|}|d ||< | j|| d S )N   r   r      )r   taker   r   r!   )r   r	   r8   r
   r)   expectedr   r   r   test_setitem_mask^   s    


z"BaseSetitemTests.test_setitem_maskc             C   sz   t jddg}|rtj|}tjtdd |d ||< W d Q R X tj|dd}tjtdd |d ||< W d Q R X d S )NTFzwrong length)r   r   r9   )r   )r   r   r   r   r   r   
IndexError)r   r	   r
   r8   r   r   r   test_setitem_mask_raisesp   s    
z)BaseSetitemTests.test_setitem_mask_raisesc             C   sn   t jtj|jdddd}d|d d< t j|dd< |rBt j|}|d ||< |d d |d kj sjtd S )Nbool)r   r9   Tr   r;   r   )	r   r   r   zerosshapeNAr   allr   )r   r	   r
   r8   r   r   r   'test_setitem_mask_boolean_array_with_na~   s    
z8BaseSetitemTests.test_setitem_mask_boolean_array_with_naidxr   r   r#   ZInt64listzinteger-arrayc             C   sX   |d d j  }|jdddddg}|r<tj|}tj|}|d ||< | j|| d S )Nr;   r   r   r<   )r   r=   r   r   r!   )r   r	   rH   r
   r)   r>   r   r   r   test_setitem_integer_array   s    

z+BaseSetitemTests.test_setitem_integer_arrayzidx, box_in_serieszGH-31948)reason)Zmarksz
list-Falsez	list-Truezinteger-array-Falsezinteger-array-Truec          
   C   sZ   |j  }|r,tj|dd tt|D d}d}tjt|d |d ||< W d Q R X d S )Nc             S   s   g | ]}t jd qS )r<   )tmZrands).0_r   r   r   
<listcomp>   s    zMBaseSetitemTests.test_setitem_integer_with_missing_raises.<locals>.<listcomp>)indexz9Cannot index with an integer indexer containing NA values)r   r   )r   r   r   ranger/   r   r   r   )r   r	   rH   r
   r)   msgr   r   r   (test_setitem_integer_with_missing_raises   s     z9BaseSetitemTests.test_setitem_integer_with_missing_raisesas_callableNc                s   t j|}tjt|td d d d< |r: fdd}n }|rNt||}n|}|dd ||< |dd ||< |d |d kst|d	 |d
 kstd S )N)r   Tr#   c                s    S )Nr   )x)r8   r   r   <lambda>   s    z<BaseSetitemTests.test_setitem_mask_aligned.<locals>.<lambda>r;      r   r      )r   r   r   rC   r/   rB   r(   r   )r   r	   rT   r%   r   Zmask2targetr   )r8   r   test_setitem_mask_aligned   s    
z*BaseSetitemTests.test_setitem_mask_alignedc             C   st   t j|}tjt|td}d|d d< |r8t||}n|}|d ||< |d |d ks\t|d |d ksptd S )N)r   Tr#   r2   r   r   )r   r   r   rC   r/   rB   r(   r   )r   r	   r%   r   r8   rY   r   r   r   test_setitem_mask_broadcast   s    
z,BaseSetitemTests.test_setitem_mask_broadcastc             C   s   t jd|i}|j }d|d< t j|dgt| d}| j|| |j }d|jd d df< | j|| ||d< t j||d}| j|| d S )Nr+   r   r,   )r+   r,   )r   r-   r   r/   assert_frame_equalr&   )r   r	   r0   resultr>   r   r   r   test_setitem_expand_columns   s    z,BaseSetitemTests.test_setitem_expand_columnsc             C   sx   t jddgt| i}|j }||d< t jdgt| |d}| j|| |j }||jd d df< | j|| d S )Nr+   r   r,   )r+   r,   )r   r-   r/   r   r\   r&   )r   r	   r0   r]   r>   r   r   r   "test_setitem_expand_with_extension   s    z3BaseSetitemTests.test_setitem_expand_with_extensionc          
   C   sh   t jddgt| i}dt|d d  dt| d}tjt|d |d d |d< W d Q R X d S )	Nr+   r   zLength of values \(r;   z$\) does not match length of index \(z\))r   r,   )r   r-   r/   r   r   r   )r   r	   r0   r   r   r   r   !test_setitem_frame_invalid_length   s    "z2BaseSetitemTests.test_setitem_frame_invalid_lengthz%GH#20441: setitem on extension types.c             C   sP   t j|d d ddgd}t j|jddg|jd}|d |d< | j|| d S )Nr#   r   r   )rP   )r   r   )r   r   )r   r   )r   r   r=   rP   r   )r   r	   sr>   r   r   r   test_setitem_tuple_index   s    z)BaseSetitemTests.test_setitem_tuple_indexc             C   s\   |d d j  }|jdddddg}|r<tj|}tj|}|d |d d< | j|| d S )Nr;   r   r   r<   )r   r=   r   r   r!   )r   r	   r
   r)   r>   r   r   r   test_setitem_slice  s    

z#BaseSetitemTests.test_setitem_slicec             C   s   |d d j  }tj|dddddgd}tj|jdddd	d
g|jd}|j  }|d |jd d	< | j|| |j  }|d |jd d< | j|| d S )Nr;   abcde)rP   r   r   r<   )r   r   r   r=   rP   r'   r!   r&   )r   r	   r)   ra   r>   r]   r   r   r   test_setitem_loc_iloc_slice  s     z,BaseSetitemTests.test_setitem_loc_iloc_slicec             C   s:   |d d }t jt |d d |d d< W d Q R X d S )Nr;   r#   r   )r   r   r   )r   r	   r)   r   r   r   )test_setitem_slice_mismatch_length_raises  s    z:BaseSetitemTests.test_setitem_slice_mismatch_length_raisesc             C   s<   |d d j  }|dd  |d d< | j||dd   d S )Nr;   rk   )r   Zassert_extension_array_equal)r   r	   r)   r   r   r   test_setitem_slice_array!  s    z)BaseSetitemTests.test_setitem_slice_arrayc          
   C   s:   |d d j  }tjt |ddg |d< W d Q R X d S )Nr;   r   r   )r   r   r   r   )r   r	   r)   r   r   r   &test_setitem_scalar_key_sequence_raise&  s    z7BaseSetitemTests.test_setitem_scalar_key_sequence_raisec             C   sL   |j  }|d d  }|d |d< |d |d ks4t|d |d ksHtd S )Nr   r   )viewr   )r   r	   Zview1Zview2r   r   r   test_setitem_preserves_views+  s
    z-BaseSetitemTests.test_setitem_preserves_viewsc             C   sJ   t jdt j|i }}t j|jd}|d |j|jdf< | j|| d S )Nr	   )rP   )r   r-   r   rP   r&   r\   )r   r	   r0   r>   r]   r   r   r   (test_setitem_dataframe_column_with_index4  s    z9BaseSetitemTests.test_setitem_dataframe_column_with_indexc             C   sL   t jdt j|i }}t j|jd}|d |jd d df< | j|| d S )Nr	   )rP   )r   r-   r   rP   r&   r\   )r   r	   r0   r>   r]   r   r   r   +test_setitem_dataframe_column_without_index;  s    z<BaseSetitemTests.test_setitem_dataframe_column_without_indexc             C   s@   t j|dd }}t j|jtdd}||j|j< | j|| d S )Nr	   )name)rP   r   rr   )r   r   rP   objectr&   r   )r   r	   r   r>   r]   r   r   r   test_setitem_series_with_indexB  s    z/BaseSetitemTests.test_setitem_series_with_indexc             C   sB   t j|dd }}t j|jtdd}||jd d < | j|| d S )Nr	   )rr   )rP   r   rr   )r   r   rP   rs   r&   r   )r   r	   r   r>   r]   r   r   r   !test_setitem_series_without_indexI  s    z2BaseSetitemTests.test_setitem_series_without_index)-__name__
__module____qualname__r   r   r   r"   r$   r   markZparametrizer*   r1   r3   r4   r5   r6   r7   r   r   r   rE   r?   rA   rG   rJ   paramZxfailrS   rZ   r[   r^   r_   r`   rb   rc   ri   rj   rl   rm   ro   rp   rq   rt   ru   r   r   r   r   r   
   sb   	*	
	r   )Znumpyr   r   Zpandasr   Zpandas._testingZ_testingrL   baser   r   r   r   r   r   <module>   s
   
