U
    fª/eø  ã                   @   sV   d Z ddlZddlmZmZmZmZmZ ddl	m
Z G dd„ dƒZdd„ Zdd	„ ZdS )
zC
Tests for DataFrame.mask; tests DataFrame.where as a side-effect.
é    N)ÚNAÚ	DataFrameÚSeriesÚStringDtypeÚisnac                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚTestDataFrameMaskc                 C   sÚ   t tj dd¡ƒ}|dk}| |tj¡}t || |dk¡¡ t || | ¡¡ t tj dd¡ƒ}| ||¡}t || |dk|¡¡ t || | |¡¡ t ddgƒ}| dgdgg¡}t tjdgƒ}t ||¡ d S )Né   é   r   é   é   TF)	r   ÚnpÚrandomÚrandnÚwhereÚnanÚtmÚassert_frame_equalÚmask)ÚselfÚdfÚcondÚrsÚotherÚresÚexp© r   úI/tmp/pip-unpacked-wheel-tiezk1ph/pandas/tests/frame/indexing/test_mask.pyÚ	test_mask   s    zTestDataFrameMask.test_maskc                 C   sº   t tj dd¡ƒ}|dk}| ¡ }|j|dd}|d ks<t‚t || |¡¡ t || 	| ¡¡ | ¡ }|j|| dd}|d ksˆt‚t || || ¡¡ t || 	| | ¡¡ d S )Nr   r	   r   T)Zinplace)
r   r   r   r   Úcopyr   ÚAssertionErrorr   r   r   )r   r   r   ÚrdfZreturn_valuer   r   r   Útest_mask_inplace&   s    z#TestDataFrameMask.test_mask_inplacec                 C   sB   t ddggƒ}| t ddggƒ¡}t tjdggƒ}t ||¡ d S )Nr
   r   TF)r   r   r   r   r   r   )r   r   r   Zexpecr   r   r   Útest_mask_edge_case_1xN_frame8   s    z/TestDataFrameMask.test_mask_edge_case_1xN_framec                 C   sH  t dddgdddgddd	ggƒ}| d
d„ dd„ ¡}t dddgdddgdd	dggƒ}t ||¡ t || |dk|d ¡¡ | dd„ dd„ ¡}t dddgdddgddd	ggƒ}t ||¡ t || |d dkd¡¡ |d  dd„ dd„ ¡}t dddgdddgdddggƒ}t ||¡ t ||d  |d dk|d d ¡¡ d S )Nr
   r   r	   é   r   é   é   é   é	   c                 S   s   | dkS )Nr#   r   ©Úxr   r   r   Ú<lambda>B   ó    z6TestDataFrameMask.test_mask_callable.<locals>.<lambda>c                 S   s   | d S )Nr
   r   r(   r   r   r   r*   B   r+   é
   c                 S   s   | d dkj S )Nr   r   )Úvaluesr(   r   r   r   r*   H   r+   c                 S   s   dS )Néc   r   r(   r   r   r   r*   H   r+   r.   r   c                 S   s   | dkS )Nr&   r   r(   r   r   r   r*   N   r+   c                 S   s   | d S )Nr,   r   r(   r   r   r   r*   N   r+   é   é   é   )r   r   r   r   )r   r   Úresultr   r   r   r   Útest_mask_callable?   s        z$TestDataFrameMask.test_mask_callablec                 C   s\   t tj dd¡d}| |dk¡}|dk}t|ƒ}| t¡ |¡}| |¡}t	 
||¡ d S )Néd   é2   )Údatar   )r   r   r   r   r   r   ZastypeÚobjectr   r   r   )r   r   Zboolsr   Úexpectedr2   r   r   r   Útest_mask_dtype_bool_conversionS   s    
z1TestDataFrameMask.test_mask_dtype_bool_conversionc              	   C   sn   t dtdƒiƒ}t ddddddgiƒ}|d dk}d}tjt|d	 | |dd
¡}W 5 Q R X t ||¡ d S )NÚar   éÿÿÿÿr
   r	   r   r   z~In a future version of pandas all arguments of DataFrame.mask except for the arguments 'cond' and 'other' will be keyword-only)ÚmatchF)r   Úranger   Úassert_produces_warningÚFutureWarningr   r   )r   r   r8   r   Úmsgr2   r   r   r   Útest_mask_pos_args_deprecation]   s    ÿz0TestDataFrameMask.test_mask_pos_args_deprecationN)	Ú__name__Ú
__module__Ú__qualname__r   r!   r"   r3   r9   rA   r   r   r   r   r      s   
r   c              	   C   sT   t tj dd¡ƒ}| t k	r"|d }|dk}t t¡ |j|ddd W 5 Q R X d S )Nr#   r	   r   r;   T)Ztry_cast)r   r   r   r   r   r>   r?   r   )Zframe_or_seriesÚobjr   r   r   r   Útest_mask_try_cast_deprecatedk   s    rF   c                  C   s   t ddddtgiddddgtƒ d	} t dd
dgiddgtƒ d	}tddddgƒ}|  ||¡}t dtd
dtgiddddgtƒ d	}t ||¡ d S )NÚAZfooÚbarZbazZid1Zid2Zid3Zid4)ÚindexZdtypeÚthisÚthatFT)r   r   r   r   r   r   r   )r   Zfiltered_dfZ
filter_serr2   r8   r   r   r   Útest_mask_stringdtypex   s$    
ý
  ÿ
ýrL   )Ú__doc__Znumpyr   Zpandasr   r   r   r   r   Zpandas._testingZ_testingr   r   rF   rL   r   r   r   r   Ú<module>   s   Z