U
    `»{jŽ‹  ã                   @   sV  d dl m Z  d dlmZ d dlZd dlZd dlmZ d dlZ	d dlm
Z
mZmZmZmZmZmZmZ d dlmZ d dlmZ ejddd	d
gd�dd„ ƒZdd„ ZG d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$ %d$d%d&g¡d'd(„ ƒZ&d)d*„ Z'eed+�d,d-„ ƒZ(d.d/„ Z)d0d1„ Z*d2d3„ Z+d4d5„ Z,d6d7„ Z-dS )8é    )Údatetime)ÚgivenN)Ú	is_scalar)Ú	DataFrameÚDatetimeIndexÚIndexÚSeriesÚStringDtypeÚ	TimestampÚ
date_rangeÚisna)ÚOPTIONAL_ONE_OF_ALLÚdefaultÚfloat_stringÚmixed_floatÚ	mixed_int)Úparamsc                 C   sT   | j dkr&ttj dd¡dddgd�S | j dkr4|S | j d	krB|S | j d
krP|S d S )Nr   é   é   ÚAÚBÚC©Úcolumnsr   r   r   )Úparamr   ÚnpÚrandomÚrandn)ÚrequestÚfloat_string_frameZmixed_float_frameZmixed_int_frame© r    úe/var/www/html/bwave/python/venv/lib/python3.8/site-packages/pandas/tests/frame/indexing/test_where.pyÚwhere_frame   s    



r"   c                    s&   dd„ ‰ t t‡ fdd„|  ¡ D ƒƒƒS )Nc                 S   s    t | jjtjtjfƒo| jdkS )NZuint8)Ú
issubclassÚdtypeÚtyper   ÚintegerZfloating)Úsr    r    r!   Úis_ok&   s    ÿz_safe_add.<locals>.is_okc                 3   s.   | ]&\}}ˆ |ƒr||d  fn||fV  qdS )é   Nr    )Ú.0Úcr'   ©r(   r    r!   Ú	<genexpr>+   s     z_safe_add.<locals>.<genexpr>)r   ÚdictÚitems©Údfr    r,   r!   Ú	_safe_add$   s    r2   c                   @   s8  e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Ze	j
 deeejg¡dd„ ƒZe	j
 ddgdgdggedgdgdggƒeddddgiƒdgdgdggedƒgejgedƒggg¡dd„ ƒZe	j
 dddgddgddggeddgddgddggƒddgddgddggedddgdddgd œƒejedƒgedƒejged!ƒed!ƒggg¡d"d#„ ƒZd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Zd4d5„ Z d6d7„ Z!d8d9„ Z"d:d;„ Z#d<d=„ Z$d>d?„ Z%d@dA„ Z&dBdC„ Z'e	j
 dDi dEdFig¡dGdH„ ƒZ(dIdJ„ Z)dKdL„ Z*dMdN„ Z+dOdP„ Z,e	j
 dQdRdSdTdUg¡dVdW„ ƒZ-dFS )XÚTestDataFrameIndexingWherec              	   C   sV   ddd„}|}||kr@d}t jt|d�� |dk W 5 Q R X d S |dk}|||ƒ d S )NTc           	      S   s�   t | ƒ}|  ||¡}|  |j|¡}| ¡ D ]<\}}tt || | | || ¡|jd�}tj||dd� q*t 	||¡ |rŒ|j
| j
k ¡ sŒt‚d S )N©ÚindexF)Zcheck_names)r2   ÚwhereÚvaluesr/   r   r   r5   ÚtmÚassert_series_equalÚassert_frame_equalÚdtypesÚallÚAssertionError)	r1   ÚcondÚcheck_dtypesÚother1ÚrsZrs2ÚkÚvÚexpr    r    r!   Ú
_check_get0   s    $z=TestDataFrameIndexingWhere.test_where_get.<locals>._check_getú6'>' not supported between instances of 'str' and 'int'©Úmatchr   )T©ÚpytestÚraisesÚ	TypeError)Úselfr"   r   rE   r1   Úmsgr>   r    r    r!   Útest_where_get/   s    
z)TestDataFrameIndexingWhere.test_where_getc                 C   sn   t dd„ dD ƒƒ}d|jdd d …f< |j}tt d¡t d¡t d¡t d	¡gdddd	gd
�}t ||¡ d S )Nc                 S   s    i | ]}|t d gd |d�“qS )r)   r   ©r$   )r   )r*   r+   r    r    r!   Ú
<dictcomp>J   s   ÿ zCTestDataFrameIndexingWhere.test_where_upcasting.<locals>.<dictcomp>)Úfloat32Úfloat64Úint32Úint64r   r)   rR   rS   rT   rU   r4   )r   Úilocr;   r   r   r$   r8   r9   ©rM   r1   ÚresultÚexpectedr    r    r!   Útest_where_upcastingG   s     þÿü
ùz/TestDataFrameIndexingWhere.test_where_upcastingc              	   C   s¬   ddd„}|}||kr@d}t jt|d�� |dk W 5 Q R X d S |dkdd … }|||t|ƒƒ |dk}|||t|ƒjƒ |dk}tdd	„ |jD ƒƒ}|||tj|d
� d S )NTc                 S   sò   |   ||¡}t|jƒD ]²\}}|| }| | j}||  | | j¡ d¡j}	t|ƒrZ|}
n4t|t	j
ƒr„t|d d …|f |jd�j}
n
|| j}
|	 ¡ rš|nt	  |	||
¡}t||j|d�}tj||dd� q|rît|t	j
ƒsî|j| jk ¡ sît‚d S )NFr4   )r5   Úname)Zcheck_dtype)r6   Ú	enumerater   r7   Úreindexr5   Úfillnar   Ú
isinstancer   Zndarrayr   r<   r8   r9   r;   r=   )r1   r>   Úotherr?   rA   ÚirB   rX   Údr+   ÚoÚ
new_valuesrY   r    r    r!   Ú_check_alignc   s    

zETestDataFrameIndexingWhere.test_where_alignment.<locals>._check_alignrF   rG   r   r)   c                 s   s   | ]}t |jtjƒ V  qd S )N)r#   r%   r   r&   )r*   r'   r    r    r!   r-   �   s     zBTestDataFrameIndexingWhere.test_where_alignment.<locals>.<genexpr>)r?   )T)	rJ   rK   rL   r2   r7   r<   r;   r   Únan)rM   r"   r   re   r1   rN   r>   r?   r    r    r!   Útest_where_alignmenta   s    
z/TestDataFrameIndexingWhere.test_where_alignmentc              	   C   sþ   t tj dd¡dddgd�}|dk}|d jdd	…d d …f }d
}tjt|d�� | ||¡ W 5 Q R X |j	d d	…d d …f j}t
|ƒ}d}tjt|d�� | ||¡ W 5 Q R X tjt|d�� | d¡ W 5 Q R X tjt|d�� | d¡ W 5 Q R X d S )Nr   r   r   r   r   r   r   r)   é   z4other must be the same shape as self when an ndarrayrG   ú,Array conditional must be same shape as selfT)r   r   r   r   r7   rJ   rK   Ú
ValueErrorr6   rV   r2   Úmask)rM   r1   r>   Zerr1rN   Zerr2r@   r    r    r!   Útest_where_invalid“   s    z-TestDataFrameIndexingWhere.test_where_invalidc              	   C   s‚   ddd„}|}||kr@d}t jt|d�� |dk W 5 Q R X d S |dk}|||ƒ |dk}|||ƒ |dkdd … }|||ƒ d S )	NTc           	      S   s    |   ¡ }| | ¡ d¡}| | ¡}|j|tjdd�}|d ksBt‚t 	||¡ |rœ| j
 ¡ D ]>\}}t|jtjƒrˆ||  ¡ sˆt d¡}|| j|ks\t‚q\d S )NT©ÚinplacerS   )ÚcopyZreindex_liker^   rk   r6   r   rf   r=   r8   r:   r;   r/   r#   r%   r&   r<   r$   )	r1   r>   r?   ZdfiZecondrY   Úreturn_valuerB   rC   r    r    r!   Ú
_check_set«   s    
z=TestDataFrameIndexingWhere.test_where_set.<locals>._check_setrF   rG   r   r)   )TrI   )rM   r"   r   rq   r1   rN   r>   r    r    r!   Útest_where_set¨   s    


z)TestDataFrameIndexingWhere.test_where_setc                 C   sR   t tdƒtddƒdœƒ}| |d dk¡}||d dk  |j¡}t ||¡ d S )Nr   é   é   ©ÚaÚbrv   r)   )r   Úranger6   r]   r5   r8   r:   rW   r    r    r!   Útest_where_series_slicingÌ   s    z4TestDataFrameIndexingWhere.test_where_series_slicingÚklassc                 C   sœ   t ddddgiƒ}dgdgdgg}t dtjddgiƒ}| ||ƒ¡}t ||¡ d|d< dtjdg|d< ddgddgddgg}| ||ƒ¡}t ||¡ d S )Nrv   r)   rh   r   FTrw   )r   r   rf   r6   r8   r:   )rM   rz   r1   r>   rY   rX   r    r    r!   Útest_where_array_likeÔ   s    z0TestDataFrameIndexingWhere.test_where_array_liker>   r)   r   rh   r   rt   rv   ÚTrueÚFalsez
2017-01-01z
2017-01-02c              	   C   s>   t ddddgiƒ}d}tjt|d�� | |¡ W 5 Q R X d S )Nrv   r)   rh   r   ú(Boolean array expected for the conditionrG   ©r   rJ   rK   rj   r6   ©rM   r>   r1   rN   r    r    r!   Útest_where_invalid_input_singleå   s    z:TestDataFrameIndexingWhere.test_where_invalid_input_singlers   é   é	   ru   z
2017-01-03c              	   C   sF   t dddgdddgdœƒ}d}tjt|d�� | |¡ W 5 Q R X d S )Nr)   rh   r   ru   r~   rG   r   r€   r    r    r!   Ú!test_where_invalid_input_multiple÷   s    z<TestDataFrameIndexingWhere.test_where_invalid_input_multiplec                 C   sž   t dddgdddggƒ}t dddgdddggƒ}| |¡}t d	tjdgtjtjdggƒ}t ||¡ d
ddg|_| |¡}t tj|j|jd�}t ||¡ d S )Nr)   rh   r   rs   r   é   TFç      ð?rv   rw   r+   ©r5   r   )r   r6   r   rf   r8   r:   r   r5   )rM   r1   r>   rX   rY   r    r    r!   Útest_where_dataframe_col_match  s    

z9TestDataFrameIndexingWhere.test_where_dataframe_col_matchc              	   C   sð   d}t dddgdddggƒ}dg}tjt|d	�� | |¡ W 5 Q R X t dddgtjtjtjggƒ}| t|ƒ¡}t 	||¡ t 
d
dd
dg¡}tjt|d	�� | |¡ W 5 Q R X t tjtjtjgdddggƒ}| t|ƒ¡}t 	||¡ d S )Nri   r)   rh   r   rs   r   r…   TrG   F)r   rJ   rK   rj   r6   r   rf   r   r8   r:   Úarray)rM   rN   r1   r>   rY   Úoutr    r    r!   Útest_where_ndframe_align  s    z3TestDataFrameIndexingWhere.test_where_ndframe_alignc                 C   s¤   t ddddgddddgdœdd�}t tjtjddgddtjtjgdœdd�}| |dktj¡}t ||¡ | ¡ }|j|dktjd	d
�}|d ks”t‚t ||¡ d S )Nr†   ç       @ç      @ç      @ru   rS   rP   rh   Trm   )r   r   rf   r6   r8   r:   ro   r=   )rM   r1   rY   rX   rp   r    r    r!   Útest_where_bug1  s     ÿ þz)TestDataFrameIndexingWhere.test_where_bugc                 C   s´   t tjddddg|d�tjdddd	gd
d�dœƒ}t tjtjddgddtjtjgdœd
d�}| |dktj¡}t ||¡ | ¡ }|j|dktjdd�}|d ks¤t‚t ||¡ d S )Nr)   rh   r   rs   rP   rŽ   r�   rŒ   r†   rS   ru   Trm   )	r   r   r‰   rf   r6   r8   r:   ro   r=   )rM   Zany_signed_int_numpy_dtyper1   rY   rX   rp   r    r    r!   Útest_where_bug_mixedB  s    þÿ þz/TestDataFrameIndexingWhere.test_where_bug_mixedc                 C   sè   t ddgddgddgdœƒ}t tjdgd	tjgtjtjgdœƒ}| ¡ ||kB }| ¡ }||| < | ||¡}t ||¡ t ddgdd
gdœƒ}t tjdgdtjgdœƒ}| ¡ ||kB }| ¡ }||| < | ||¡}t ||¡ d S )Nr)   rh   r   rs   r   r…   )r   r)   rh   r‚   rƒ   r   ©r   r)   )r   r   rf   r   ro   r6   r8   r:   )rM   rv   rw   Zdo_not_replacerY   rX   r    r    r!   Útest_where_bug_transpositionX  s    $

z7TestDataFrameIndexingWhere.test_where_bug_transpositionc              	   C   sâ   t tddd�tddd�tj d¡dœƒ}tdddƒ}d	}tjt|d
�� ||k W 5 Q R X ||j	d d …d d…f |k }| 
¡ }tj|jddgdf< |rœtnd }d}tj||d
�� tj|jd d …df< W 5 Q R X t ||¡ d S )NZ20130102r   ©ÚperiodsZ20130104©r   r   r   iÝ  r)   r   zF'>' not supported between instances of 'float' and 'datetime.datetime'rG   éÿÿÿÿr   r   ú&will attempt to set the values inplacer   )r   r   r   r   r   r   rJ   rK   rL   rV   ro   rf   ÚlocÚFutureWarningr8   Úassert_produces_warningr:   )rM   Úusing_array_managerr1   ZstamprN   rX   rY   Úwarnr    r    r!   Útest_where_datetimen  s$    


ýÿz.TestDataFrameIndexingWhere.test_where_datetimec                 C   s´   t dttdƒƒiƒ t¡}d ||dk< t dtdddddd	d
dtjtjg
ƒiƒ}t ||¡ t dtjddœtjdtjdœgƒ}d}t	j
t|d�� |jt|ƒ d dd� W 5 Q R X d S )NZseriesé
   rt   r   r)   rh   r   rs   r   r…   ZTestr•   zboolean setting on mixed-typerG   Trm   )r   r   rx   ÚastypeÚfloatr   rf   r8   r:   rJ   rK   rL   r6   r   )rM   r1   rY   rN   r    r    r!   Útest_where_none‰  s    "ÿþÿz*TestDataFrameIndexingWhere.test_where_nonec                 C   s<   t dgd�}|}|jtk ¡ s"t‚| |¡}t ||¡ d S )Nrv   r   )r   r;   Úobjectr<   r=   r6   r8   r:   )rM   r1   r>   rX   r    r    r!   Ú9test_where_empty_df_and_empty_cond_having_non_bool_dtypesŸ  s
    
zTTestDataFrameIndexingWhere.test_where_empty_df_and_empty_cond_having_non_bool_dtypesc                 C   s   dd„ }|ƒ }|  | ¡ ¡}|jt |¡| ¡ dd�}t ||¡ |jt |¡| ¡ ddd�}|d ksjt‚t ||¡ |ƒ   d¡}|jdd	„ |d d
�}|j|dk|d dd�}t ||¡ |j|dk|d dd�}t ||¡ |ƒ }|  d¡}| t |¡t	d|j
|jd�¡}t ||¡ d S )Nc                  S   sR   t tj dd¡ƒ} tj| jdd…df< tj| jdd…df< tj| jdd…d	f< | S )
Nrž   r   r   r   rs   r…   r)   r‚   rh   )r   r   r   r   rf   rV   r0   r    r    r!   Úcreate©  s
    z;TestDataFrameIndexingWhere.test_where_align.<locals>.creater   ©ÚaxisT©rn   r¦   r   c                 S   s   |   | dk|¡S ©Nr   )r6   )ÚxÚyr    r    r!   Ú<lambda>»  ó    z=TestDataFrameIndexingWhere.test_where_align.<locals>.<lambda>©rª   r5   Úrowsr)   r‡   )r^   Zmeanr6   ÚpdÚnotnar8   r:   r=   Úapplyr   r5   r   )rM   r¤   r1   rY   rX   rp   r    r    r!   Útest_where_align¨  s*    
 ÿz+TestDataFrameIndexingWhere.test_where_alignc                 C   s\   t ddgtjdggddgd�}t ddgddggddgd�}tj|| ¡ dk< t ||¡ d S )	Ny      ð?      ð?rh   y      @      ð?rv   rw   r   y      @      ð?r   )r   r   rf   Úabsr8   r:   )rM   rY   r1   r    r    r!   Útest_where_complexÉ  s    z-TestDataFrameIndexingWhere.test_where_complexc                 C   s  t tj dd¡ƒ}t ddgddggƒ}tddgƒ}t ddgddggdd�}|j||dd�}t ||¡ | ¡ }|j||dd	d
�}|d ksŒt	‚t ||¡ t ddgddggdd�}|j||dd�}t ||¡ | ¡ }|j||dd	d
�}|d ksòt	‚t ||¡ d S )Nrh   Fr   r)   rS   rP   r5   r¥   T©r¦   rn   r   )
r   r   r   r   r   r6   r8   r:   ro   r=   )rM   r›   r1   rk   ÚserrY   rX   rp   r    r    r!   Útest_where_axisÐ  s"    z*TestDataFrameIndexingWhere.test_where_axisc                 C   s>  t ddgddggdd�}t ddgddggƒ}tdtjgƒ}t ddgtjtjggd	d�}|j||d
d�}t ||¡ | ¡ }|j||d
dd�}|d ks˜t‚t ||¡ t dtjgdtjggƒ}|j||dd�}t ||¡ t tj	ddgdd�tj	tjtjgd	d�dœƒ}| ¡ }|j||ddd�}|d k�s.t‚t ||¡ d S )Nr)   rh   r   rs   rU   rP   Fr   rS   r5   r¥   Trµ   r   r‘   )
r   r   r   rf   r6   r8   r:   ro   r=   r‰   )rM   r1   rk   r¶   rY   rX   rp   r    r    r!   Útest_where_axis_with_upcastè  s,    þÿz6TestDataFrameIndexingWhere.test_where_axis_with_upcastc              	   C   s0  t jttj dd¡ƒttjjdddd�dd�gdd	d
�}td|j|jd�}t	d	|jd�}t	d|jd�}|j
||dd�}td|j|jd�}|d  d¡|d< |d  d¡|d< t ||¡ | ¡ }|j
||ddd�}|d ksÞt‚t ||¡ |j
||dd�}td|j|jd�}|d  d¡|d< |d  d¡|d< t ||¡ | ¡ }|j
||ddd�}|d k�sdt‚t ||¡ | ¡ jd	dd�}	| ¡ }tj|jd	d d …f< | 
||	¡}t ||¡ |j
||	dd�}t ||¡ | ¡ }|j
||	dd�}|d k�søt‚t ||¡ | ¡ }|j
||	ddd�}|d k�s,t‚t ||¡ | ¡ jd	d	d�}
| ¡ }|�r\tnd }d}tj||d�� tj|jd d …d	f< W 5 Q R X | 
||
¡}t ||¡ |j
||
dd�}t ||¡ | ¡ }|j
||
dd�}|d k�sìt‚t ||¡ | ¡ }|j
||
ddd�}|d k�s t‚t ||¡ d S )Nrž   rh   r   )rž   rh   )ÚsizerU   rP   Tr)   )Zignore_indexr¦   F)r   r5   r4   r   r¥   r†   r   rµ   r5   rŒ   rm   r§   r—   rG   )r¯   Úconcatr   r   r   r   Úrandintr   r5   r   r6   rŸ   r8   r:   ro   r=   Zdroprf   r˜   r™   rš   )rM   r›   r1   rk   Ús1Ús2rX   rY   rp   Zd1Zd2rœ   rN   r    r    r!   Útest_where_axis_multiple_dtypes  sz    þúz:TestDataFrameIndexingWhere.test_where_axis_multiple_dtypesc                 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)   rh   r   rs   r   r…   rt   r‚   rƒ   c                 S   s   | dkS )Nrs   r    ©r©   r    r    r!   r«   S  r¬   z@TestDataFrameIndexingWhere.test_where_callable.<locals>.<lambda>c                 S   s   | d S ©Nr)   r    r¿   r    r    r!   r«   S  r¬   c                 S   s   | d dkj S )Nrh   r   )r7   r¿   r    r    r!   r«   Y  r¬   c                 S   s   dS )Néc   r    r¿   r    r    r!   r«   Y  r¬   rÁ   r   c                 S   s   | dkS )Nr‚   r    r¿   r    r    r!   r«   _  r¬   c                 S   s   | d S )Nrž   r    r¿   r    r    r!   r«   _  r¬   é   é   é   é   é   é   rž   é   )r   r6   r8   r:   )rM   r1   rX   rD   r    r    r!   Útest_where_callableP  s        z.TestDataFrameIndexingWhere.test_where_callablec                 C   s¬   t tdddg|d�dgd�}t tdddg|d�dgd�}t d	d	d
gdgd�}t tdddg|d�dgd�}|tkr�|d }|d }|d }|d }| ||¡}t ||¡ d S )NZ20150101Z20150102Z20150103)ÚtzÚdater   Z20150104Z20150105TF)r   r   r   r6   r8   Úassert_equal)rM   Ztz_naive_fixtureÚframe_or_seriesZobj1Úobj2rk   rD   rX   r    r    r!   Útest_where_tz_valuesd  s(    þþþz/TestDataFrameIndexingWhere.test_where_tz_valuesc                 C   sz   t t d¡ dd¡tdƒd�}t dddgdddgg¡}| |¡}t dtjtjgtjtjd	ggtdƒd�}t 	||¡ d S )
Nr…   rh   r   ÚABCr   TFr   r   )
r   r   ÚarangeÚreshapeÚlistr‰   r6   rf   r8   r:   )rM   r1   rk   rX   rY   r    r    r!   Útest_df_where_change_dtype{  s    
 ÿz5TestDataFrameIndexingWhere.test_df_where_change_dtypeÚkwargsr`   Nc           	      C   s  t t d¡ dd¡tdƒd�}t dddgdddgg¡}|j d¡|_|j d¡|_|j	 d¡|_	|j
|f|Ž}tjd	tjgd	dgd
�}tjtjtjgddgd
�}tjtjdgddgd
�}t |||dœƒ}t ||¡ |jj
|d d …d	f f|Ž}t|dd�}t ||¡ d S )Nr…   rh   r   rÐ   r   TFÚcategoryr   )Ú
categoriesr)   rs   r   r•   r   )r[   )r   r   rÑ   rÒ   rÓ   r‰   r   rŸ   r   r   r6   r¯   ZCategoricalrf   r8   r:   r   r9   )	rM   rÕ   r1   rk   rX   r   r   r   rY   r    r    r!   Útest_df_where_with_category‡  s    z6TestDataFrameIndexingWhere.test_df_where_with_categoryc                 C   sl   t ddgddggddgd�}|d  d¡|d< | |d dk¡}| ¡ }tj|jdd d …f< t ||¡ d S )Nr   r)   rv   rw   ©Údatar   rÖ   )	r   rŸ   r6   ro   r   rf   r˜   r8   rÌ   rW   r    r    r!   Ú test_where_categorical_filtering   s    z;TestDataFrameIndexingWhere.test_where_categorical_filteringc                 C   sú   t dddgdddgdœƒ}t dtjd	g¡}t|ƒ}tj|jtd
�}d|dd d …f< |j	||dd�}t dtjdgdtjdgdœƒ 
t¡}t ||¡ t|d d… ddgd�}t dddgdtjdgdœƒ}|d  
t¡|d< |j	||dd�}t ||¡ d S )Nr)   rh   r   rs   r   r…   ©r   r   rt   rƒ   rP   Fr   r¥   r   r   r4   )r   r¯   r‰   ÚNAr   r   ZonesÚshapeÚboolr6   rŸ   r¢   r8   r:   )rM   r1   Úarrr¶   rk   rX   rY   Zser2r    r    r!   Útest_where_ea_other«  s    $z.TestDataFrameIndexingWhere.test_where_ea_otherc                 C   sR   t t dd¡gƒ}| | ¡ ¡}t ||¡ |d }| | ¡ ¡}t ||¡ d S r¨   )r   r¯   ÚIntervalr6   r°   r8   r:   r9   )rM   r1   Úresr¶   r    r    r!   Útest_where_interval_noop¾  s    z3TestDataFrameIndexingWhere.test_where_interval_noopc                 C   sr   |t  dd¡gd ƒ}|ddgƒ}| | ¡  |¡}t || tj¡¡ |j	| ¡ |dd� t || t
¡¡ d S )Nr   rh   r†   rŒ   Trm   )r¯   râ   r6   r°   r8   rÌ   rŸ   r   rU   rk   r¢   )rM   rÍ   Úobjr`   rã   r    r    r!   Ú#test_where_interval_fullop_downcastÈ  s    z>TestDataFrameIndexingWhere.test_where_interval_fullop_downcastr$   ztimedelta64[ns]zdatetime64[ns]zdatetime64[ns, Asia/Tokyo]z	Period[D]c                 C   sø   t t d¡d tjd� |¡}| ¡ }t dddg¡}| | d¡}t 	||¡ | 
dd¡}| | d¡}t ||¡ | |d¡}t 	||¡ | |d¡}	t |	|¡ | |d¡}
td|j|jd	�}t |
|¡ |j| dd
d� t || t¡¡ d S )Nr   i Êš;rP   FZfoor–   r)   rs   r‡   Trm   )r   r   rÑ   rU   ÚviewZto_framer‰   r6   r8   r9   rÒ   r:   rk   r   r5   r   rŸ   r¢   )rM   r$   r¶   r1   rk   rã   Zmask2Zres2Zres3Zres4Zres5rY   r    r    r!   Útest_where_datetimelike_noopÖ  s"    z7TestDataFrameIndexingWhere.test_where_datetimelike_noop).Ú__name__Ú
__module__Ú__qualname__rO   rZ   rg   rl   rr   ry   rJ   ÚmarkÚparametrizerÓ   Útupler   r‰   r{   r   r   r
   r¯   ÚNaTr�   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!   r3   .   s|   2$
ûþ

ýûþ
	!J

üþ	r3   c              	   C   sP   t tj dd¡ƒ}t || ¡}|dk}t t¡� |j|ddd� W 5 Q R X d S )Nrs   r   r   r–   F)Ztry_cast)	r   r   r   r   r8   Úget_objrš   r™   r6   ©rÍ   rå   rk   r    r    r!   Útest_where_try_cast_deprecatedÿ  s
    rò   c                  C   sŠ   t  d¡ t j¡ dd¡} t| ƒ}t j| jtd�}d|d d …df< | 	|d¡}t| d d …df t j
dgd t jd�dœƒ}t ||¡ d S )	Nr…   r   rh   rP   Tr   i   r‘   )r   rÑ   rŸ   Zint16rÒ   r   ZzerosrÞ   rß   r6   r‰   rT   r8   r:   )rà   r1   rk   rã   rY   r    r    r!   Ú%test_where_int_downcasting_deprecated
  s    ,ró   c                 C   s~   | ddddgƒ}|  ¡ }| tkr(|d n|}| |dk ¡}|d9 }t ||¡ | |dkddddg¡}|d9 }t ||¡ d S )Nr)   rh   r   rs   r   r   )ro   r   r6   r8   rÌ   )rÍ   rX   rY   ÚcolZ	where_resr    r    r!   Útest_where_copies_with_noop  s    rõ   c                 C   sÀ   | ddddgddddgt ƒ d	�}| ddgddgt ƒ d	�}td
ddd
gƒ}| ||¡}| tjddtjgddddgt ƒ d	�}t ||¡ | | |¡}t ||¡ |j| |dd� t ||¡ d S )Nrv   rw   r+   rb   Zid1Zid2Zid3Zid4)r5   r$   FTrm   )r	   r   r6   r¯   rÝ   r8   rÌ   rk   )rÍ   rå   Zfiltered_objZ
filter_serrX   rY   r    r    r!   Útest_where_string_dtype)  s,    
 
 ÿ  ÿ
ýrö   c                  C   sv   t dgd dgd ddddgdœƒ} |  | dk¡}t tjtjgd td�dgd tjdtjdgdœƒ}t ||¡ d S )NTrs   F)ZAAAZBBBZCCCrP   )r   r6   r   r‰   rf   r¢   r8   r:   )Zdf_maskrX   rY   r    r    r!   Útest_where_bool_comparisonB  s    ÿýÿr÷   c                  C   sF   t tdƒtjtdƒgddtjgdœƒ} |  |  ¡ d ¡}t 	|| ¡ d S )NZ20130101Z20130103r)   rh   rÜ   )
r   r
   r¯   rï   r   rf   r6   Únotnullr8   r:   )rY   rX   r    r    r!   Útest_where_none_nan_coerceR  s    
þÿrù   c                  C   sÀ   t dtjggtddgƒd�} | j\}}t ddgg||d�}|  t¡ |¡}|  d¡ |¡}| j |j¡j}|  |¡}t	 
| d¡| d¡¡ t	 
| d¡| d¡¡ t	 
| d¡| d¡¡ d S )Nr   r   rÙ   T)rÚ   r   r5   Zf8)r   r   rf   r   ZaxesrŸ   r¢   r6   ÚTr8   r:   )rX   r5   r   rk   rv   rw   r+   rb   r    r    r!   Ú&test_where_duplicate_axes_mixed_dtypes^  s    

rû   c              	   C   sh   | t dƒƒ}d| j› d�}tjt|d�� | |dkdd¡}W 5 Q R X | dddd	d
gƒ}t ||¡ d S )Nr   z/In a future version of pandas all arguments of zG.where except for the arguments 'cond' and 'other' will be keyword-onlyrG   r)   rž   Frh   r   rs   )rx   ré   r8   rš   r™   r6   rÌ   )rÍ   rå   rN   rX   rY   r    r    r!   Ú"test_where_non_keyword_deprecationm  s    ÿrü   c                  C   sB   t ddgdtjgdœƒ} |  ¡ }|  t | ¡d ¡}t ||¡ d S )Nr†   rŒ   r   ru   )	r   r   rf   ro   r6   r¯   rø   r8   r:   )r1   rY   rX   r    r    r!   Útest_where_columns_casting{  s    rý   Úas_catTFc           
   	   C   sH  t jdddd�}|r| d¡}| |ƒ}t j d¡}tjdddg|jd	�j}|rTd
}nd}|rÔt	j
t|d�� | ||¡ W 5 Q R X t	j
t|d�� | ||¡ W 5 Q R X t	j
t|d�� |j||dd� W 5 Q R X np| t¡ ||¡}| ||¡}	t |	|¡ | t¡ ||¡}| ||¡}	t |	|¡ |j||dd� t ||¡ d S )Nú
2016-01-01r   ÚD)r”   ÚfreqrÖ   úm8[ns]TF©ZndminzUCannot setitem on a Categorical with a new category \(NaT\), set the categories firstzvalue should be a 'Period'rG   rm   )r¯   Zperiod_rangerŸ   rï   Zto_numpyr   r‰   Úndimrú   rJ   rK   rL   r6   rk   r¢   r8   rÌ   )
rÍ   rþ   r   Úidxrå   Ztdnatrk   rN   rY   rX   r    r    r!   Útest_where_period_invalid_na…  s2    
ÿr  c              
   C   sœ   t jdddg|d�}| |ƒ}tjdddg|jd�j}d}tjt jg D ]P}tj	t
|d	�� | ||¡ W 5 Q R X tj	t
|d	�� | ||¡ W 5 Q R X qFd S )
Nr)   rh   r   rP   TFr  z1Invalid value '.*' for dtype (U?Int|Float)\d{1,2}rG   )r¯   r‰   r   r  rú   r8   ZNP_NAT_OBJECTSrï   rJ   rK   rL   r6   rk   )rÍ   Zany_numeric_ea_dtyperà   rå   rk   rN   Únullr    r    r!   Útest_where_nullable_invalid_na³  s    r  )rÚ   c                 C   sH   t d| iƒ}| t |¡d ¡ ¡ }|jt |¡d dd� t ||¡ d S )Nrv   Trm   )r   r6   r¯   rø   ro   r8   rÌ   )rÚ   r1   Zdf_copyr    r    r!   Útest_where_inplace_castingÅ  s    r	  c                  C   sX   t dddgƒ} t dddg¡}tjdd�}|  ||¡}t |||gdd�}t ||¡ d S )Nr)   rh   r   F)Údaysr  rP   )r   r   r‰   r¯   Z	Timedeltar6   r8   r9   )r¶   rk   Útdrã   rY   r    r    r!   Útest_where_downcast_to_td64Î  s    r  c                 C   s~   |   ||¡}t ||¡ |  | |¡}t ||¡ |  ¡ } | j| |dd� | ¡ sn| ¡ }|d  t¡|d< t | |¡ d S )NTrm   r   )r6   r8   r:   rk   ro   r<   rŸ   r¢   )r1   rk   r`   rY   rã   r    r    r!   Ú_check_where_equivalencesÚ  s    r  c                  C   sö   t ddd�} | j dd¡}||d  }t|ddgd	�}t | ¡ ¡}d
|d d …df< t|d d …df |d d …df dœƒ}t||||ƒ d
|d< ttj|d |d |d gt	d�|d d …df dœƒ}t||||ƒ d
|d d …< |}t||||ƒ d S )Nrÿ   r…   r“   r   rh   )r   r   r   r   r   Tr)   r   rÜ   )r)   r   )rh   r   rP   )
r   Ú_datarÒ   r   r   Zasarrayr   r  r‰   r¢   )ZdtiZdtar`   r1   rk   rY   r    r    r!   Útest_where_dt64_2dï  s$    &þÿr  c              	   C   sv   t tj dd¡ƒ}t || ¡}|dk}t t¡� |j|ddd� W 5 Q R X t t¡� |j	|ddd� W 5 Q R X d S )Nrs   r   r   r–   Úraise)Úerrors)
r   r   r   r   r8   rð   rš   r™   r6   rk   rñ   r    r    r!   Útest_where_mask_deprecated  s    r  c                  C   sj   t tdtjdgdd�dddgdœƒ} |  dd„ ¡}t ttjtjdgdd�tjddgdœƒ}t ||¡ d S )	Nr)   rh   ZInt64rP   r   ru   c                 S   s   | j dd„ dd�S )Nc                 S   s   | dkS rÀ   r    r­   r    r    r!   r«     r¬   zMtest_where_producing_ea_cond_for_np_dtype.<locals>.<lambda>.<locals>.<lambda>r)   r¥   )r±   r¿   r    r    r!   r«     r¬   z;test_where_producing_ea_cond_for_np_dtype.<locals>.<lambda>)	r   r   r¯   rÝ   r6   r   rf   r8   r:   )r1   rX   rY   r    r    r!   Ú)test_where_producing_ea_cond_for_np_dtype  s    $"ÿr  ).r   Z
hypothesisr   Únumpyr   rJ   Zpandas.core.dtypes.commonr   Zpandasr¯   r   r   r   r   r	   r
   r   r   Zpandas._testingZ_testingr8   Zpandas._testing._hypothesisr   Zfixturer"   r2   r3   rò   ró   rõ   rö   r÷   rù   rû   rü   rý   rì   rí   r  r  r	  r  r  r  r  r  r    r    r    r!   Ú<module>   sH   (


     V

-
