U
    ¾mœd‰  ã                   @   sn  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!ej" #d d!d"g¡d#d$„ ƒZ$d%d&„ Z%eed'�d(d)„ ƒZ&d*d+„ Z'd,d-„ Z(d.d/„ Z)d0d1„ Z*ej" #d2d3d!d4de d5d6d7ƒg¡d8d9„ ƒZ+d:d;„ Z,dS )<é    )Ú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    ú_/home/sam/Atlas/atlas_env/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< tj|jd d …df< 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   r   )r   r   r   r   r   r   rJ   rK   rL   rV   ro   rf   Úlocr8   r:   )rM   r1   ZstamprN   rX   rY   r    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   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‰   r±   r    r    r!   Útest_where_axis_with_upcastä  s,    þÿz6TestDataFrameIndexingWhere.test_where_axis_with_upcastc           
      C   s
  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�}| ¡  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�s2t‚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 ||¡ d S )Nr™   rh   r   )r™   rh   )ÚsizerU   rP   Tr)   )Zignore_indexr¡   F)r   r5   r4   r   r    r†   r   r°   r5   rŒ   r›   rm   r¢   )rª   Úconcatr   r   r   r   Úrandintr   r5   r   r6   rš   r8   r:   ro   r=   Zdroprf   r—   )
rM   r1   rk   Ús1Ús2rX   rY   rp   Zd1Zd2r    r    r!   Útest_where_axis_multiple_dtypes  st    þú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¦   M  r§   z@TestDataFrameIndexingWhere.test_where_callable.<locals>.<lambda>c                 S   s   | d S ©Nr)   r    r»   r    r    r!   r¦   M  r§   c                 S   s   | d dkj S )Nrh   r   )r7   r»   r    r    r!   r¦   S  r§   c                 S   s   dS )Néc   r    r»   r    r    r!   r¦   S  r§   r½   r   c                 S   s   | dkS )Nr‚   r    r»   r    r    r!   r¦   Y  r§   c                 S   s   | d S )Nr™   r    r»   r    r    r!   r¦   Y  r§   é   é   é   é   é   é   r™   é   )r   r6   r8   r:   )rM   r1   rX   rD   r    r    r!   Útest_where_callableJ  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_values^  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_dtypeu  s    
 ÿz5TestDataFrameIndexingWhere.test_df_where_change_dtypeÚkwargsr`   Nc           
      C   s  t jdt jd� dd¡}t|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…   rP   rh   r   rÌ   r   TFÚcategoryr   )Ú
categoriesr)   rs   r   r•   r   )r[   )r   rÍ   rU   rÎ   r   rÏ   r‰   r   rš   r   r   r6   rª   ZCategoricalrf   r8   r:   r   r9   )
rM   rÑ   Údatar1   rk   rX   r   r   r   rY   r    r    r!   Útest_df_where_with_category�  s    z6TestDataFrameIndexingWhere.test_df_where_with_categoryc                 C   sv   t ddgddggddgd�}|d  d¡|d< | |d dk¡}| ¡  ddi¡}tj|jdd d …f< t ||¡ d S )Nr   r)   rv   rw   ©rÔ   r   rÒ   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$
ûþ

ýûþ
	!H

üþ	r3   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_comparison3  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_coerceC  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_dtypesO  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_nah  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   ro   r  r‰   r�   )ZdtiZdtar`   r1   rk   rY   r    r    r!   Útest_where_dt64_2dÒ  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  Úreplacementgü©ñÒMbP?Úsnakeiæ  r   rs   c                 C   sT   t dddgtjdd ggƒ}| t |¡| ¡}t dddg| d| ggƒ}t ||¡ d S )Nr†   g‘(,*‹0EÚninegš™™™™™¹?)r   r   rf   r6   rª   rñ   r8   r:   )r	  r1   rX   rY   r    r    r!   Útest_where_int_overflowú  s    r  c                  C   sd   t ddgddgdœƒ} t ddgddgdœƒ}| j|dd� t dtjgtjdgdœƒ}t | |¡ d S )	Nr)   rh   r¤   r¥   ru   TFrm   )r   r6   r   rf   r8   r:   )r1   r>   rY   r    r    r!   Útest_where_inplace_no_other  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!   Ú<module>   sN   (


     R

-

 ÿ
	