a
    é´«jç”  ã                   @   sj  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g d¢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)d-d.„ Z*ej" #d/d0dd1de d2d3d4ƒg¡d5d6„ ƒZ+d7d8„ Z,dS )9é    )Ú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   sV   | j dkr(ttj d¡ d¡g d¢d�S | j dkr6|S | j dkrD|S | j dkrR|S d S )	Nr   é   ©é   é   ©ÚAÚBÚC©Úcolumnsr   r   r   )Úparamr   ÚnpÚrandomÚdefault_rngÚstandard_normal)ÚrequestÚfloat_string_frameZmixed_float_frameÚmixed_int_frame© r%   úe/var/www/html/laksyashrimp/venv/lib/python3.9/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>-   ó    z_safe_add.<locals>.<genexpr>)r   ÚdictÚitems©Údfr%   r1   r&   Ú	_safe_add&   s    r8   c                   @   sR  e Zd Zdd„ Zdd„ Zej d¡dd„ ƒZej d¡d	d
„ ƒZ	ej d¡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g d¢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g d¢g d!¢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d0d1„ Zd2d3„ Zd4d5„ Z d6d7„ Z!d8d9„ Z"d:d;„ Z#d<d=„ Z$d>d?„ Z%d@dA„ Z&dBdC„ Z'dDdE„ Z(ej dFi dGdHig¡dIdJ„ ƒZ)dKdL„ Z*dMdN„ Z+dOdP„ Z,dQdR„ Z-ej dSg dT¢¡dUdV„ ƒZ.dHS )WÚTestDataFrameIndexingWherec                 C   sj   ddd„}|}||u rTd}t jt|d�� |dk W d   ƒ n1 sF0    Y  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ŒJ ‚d S )N©ÚindexF)Zcheck_names)r8   ÚwhereÚvaluesr5   r   r   r;   ÚtmÚassert_series_equalÚassert_frame_equalÚdtypesÚall)	r7   ÚcondÚcheck_dtypesÚother1ÚrsZrs2ÚkÚvÚexpr%   r%   r&   Ú
_check_get2   s    $z=TestDataFrameIndexingWhere.test_where_get.<locals>._check_getúI'>' not supported between instances of 'str' and 'int'|Invalid comparison©Úmatchr   )T)ÚpytestÚraisesÚ	TypeError)Úselfr'   r#   rJ   r7   ÚmsgrC   r%   r%   r&   Útest_where_get1   s    
ÿ&z)TestDataFrameIndexingWhere.test_where_getc                 C   sj   t dd„ dD ƒƒ}d|jdd d …f< |j}tt d¡t d¡t d¡t d	¡gg d¢d
�}t ||¡ d S )Nc                 S   s    i | ]}|t d gd |d�“qS )r.   r   ©r)   )r   )r/   r0   r%   r%   r&   Ú
<dictcomp>O   s   ÿzCTestDataFrameIndexingWhere.test_where_upcasting.<locals>.<dictcomp>)Úfloat32Úfloat64Úint32Úint64r   r.   rV   rW   rX   rY   r:   )r   ÚilocrA   r   r   r)   r>   r?   ©rQ   r7   ÚresultÚexpectedr%   r%   r&   Útest_where_upcastingL   s     þÿüùz/TestDataFrameIndexingWhere.test_where_upcastingz4ignore:Downcasting object dtype arrays:FutureWarningc                 C   sÀ   ddd„}|}||u rTd}t jt|d�� |dk W d   ƒ n1 sF0    Y  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îJ ‚d S )NFr:   )r;   Úname)Zcheck_dtype)r<   Ú	enumerater   r=   Úreindexr;   Úfillnar   Ú
isinstancer   Zndarrayr   rB   r>   r?   rA   )r7   rC   ÚotherrD   rF   ÚirG   r\   Údr0   ÚoÚ
new_valuesr]   r%   r%   r&   Ú_check_aligni   s    

zETestDataFrameIndexingWhere.test_where_alignment.<locals>._check_alignrK   rL   r   r.   c                 s   s   | ]}t |jtjƒ V  qd S )N)r(   r*   r   r+   )r/   r,   r%   r%   r&   r2   ˜   r3   zBTestDataFrameIndexingWhere.test_where_alignment.<locals>.<genexpr>)rD   )T)	rN   rO   rP   r8   r=   rB   rA   r   Únan)rQ   r'   r#   ri   r7   rR   rC   rD   r%   r%   r&   Útest_where_alignmentf   s    
ÿ&z/TestDataFrameIndexingWhere.test_where_alignmentzignore::DeprecationWarningc                 C   sT  t tj d¡ d¡g d¢d�}|dk}|d jdd…d d …f }d}tjt|d�� | 	||¡ W d   ƒ n1 st0    Y  |j
d d…d d …f j}t|ƒ}d	}tjt|d�� | 	||¡ W d   ƒ n1 sÒ0    Y  tjt|d�� | d
¡ W d   ƒ n1 �s0    Y  tjt|d�� | d¡ W d   ƒ n1 �sF0    Y  d S )Nr   r   r   r   r   r.   z4other must be the same shape as self when an ndarrayrL   ú,Array conditional must be same shape as selfT)r   r   r   r    r!   r=   rN   rO   Ú
ValueErrorr<   rZ   r8   Úmask)rQ   r7   rC   Zerr1rR   Zerr2rE   r%   r%   r&   Útest_where_invalidœ   s"    ÿ***z-TestDataFrameIndexingWhere.test_where_invalidc                 C   s¨   d	dd„}|}||u rTd}t jt|d�� |dk W d   ƒ n1 sF0    Y  d S ||u rf| d¡}|dk}|||ƒ |dk}|||ƒ |dkdd … }|||ƒ d S )
NTc           	      S   s¨   |   ¡ }| | ¡ d¡jdd�}| | ¡}|j|tjdd�}|d u sJJ ‚t 	||¡ |r¤| j
 ¡ D ]>\}}t|jtjƒr�||  ¡ s�t d¡}|| j|ksdJ ‚qdd S )NTF)Úcopy©ÚinplacerW   )rp   Zreindex_likerb   Zinfer_objectsrn   r<   r   rj   r>   r@   rA   r5   r(   r*   r+   rB   r)   )	r7   rC   rD   ZdfiZecondr]   Úreturn_valuerG   rH   r%   r%   r&   Ú
_check_set¸   s    
z=TestDataFrameIndexingWhere.test_where_set.<locals>._check_setrK   rL   r   rW   r.   )T)rN   rO   rP   Úastype)rQ   r'   r#   r$   rt   r7   rR   rC   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Úbrz   r.   )r   Úranger<   ra   r;   r>   r@   r[   r%   r%   r&   Útest_where_series_slicingÞ   s    z4TestDataFrameIndexingWhere.test_where_series_slicingÚklassc                 C   sš   t dg d¢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 )Nrz   ©r.   r   r   FTr   r   r{   )r   r   rj   r<   r>   r@   )rQ   r~   r7   rC   r]   r\   r%   r%   r&   Útest_where_array_likeæ   s    z0TestDataFrameIndexingWhere.test_where_array_likerC   r.   r   r   r   rx   rz   )r   r   rx   ÚTrueÚFalsez
2017-01-01z
2017-01-02c                 C   sP   t dg d¢iƒ}d}tjt|d�� | |¡ W d   ƒ n1 sB0    Y  d S )Nrz   r   ú(Boolean array expected for the conditionrL   ©r   rN   rO   rm   r<   ©rQ   rC   r7   rR   r%   r%   r&   Útest_where_invalid_input_single÷   s    z:TestDataFrameIndexingWhere.test_where_invalid_input_singlerw   )rw   é   é	   ry   z
2017-01-03c                 C   sV   t g d¢g d¢dœƒ}d}tjt|d�� | |¡ W d   ƒ n1 sH0    Y  d S )Nr   )r   r   r   ry   rƒ   rL   r„   r…   r%   r%   r&   Ú!test_where_invalid_input_multiple	  s    z<TestDataFrameIndexingWhere.test_where_invalid_input_multiplec                 C   s”   t g d¢g d¢gƒ}t g d¢g d¢gƒ}| |¡}t dtjdgtjtjdggƒ}t ||¡ g d¢|_| |¡}t tj|j|jd	�}t ||¡ d S )
Nr   ©rw   r   é   )TFT©FFTç      ð?r   r‹   )rz   r{   r0   ©r;   r   )r   r<   r   rj   r>   r@   r   r;   )rQ   r7   rC   r\   r]   r%   r%   r&   Útest_where_dataframe_col_match  s    


z9TestDataFrameIndexingWhere.test_where_dataframe_col_matchc                 C   s  d}t g d¢g d¢gƒ}dg}tjt|d�� | |¡ W d   ƒ n1 sL0    Y  t g d¢tjtjtjggƒ}| t|ƒ¡}t 	||¡ t 
g d¢¡}tjt|d�� | |¡ W d   ƒ n1 sÈ0    Y  t tjtjtjgg d¢gƒ}| t|ƒ¡}t 	||¡ d S )Nrl   r   rŠ   TrL   )FTFT)r   rN   rO   rm   r<   r   rj   r   r>   r@   Úarray)rQ   rR   r7   rC   r]   Úoutr%   r%   r&   Útest_where_ndframe_align-  s    ((z3TestDataFrameIndexingWhere.test_where_ndframe_alignc                 C   sœ   t g d¢g d¢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 u sŒJ ‚t ||¡ d S )N)r�   ç       @ç      @ç      @©r•   r”   r“   r�   ry   rW   rT   r”   r•   r   Trq   )r   r   rj   r<   r>   r@   rp   )rQ   r7   r]   r\   rs   r%   r%   r&   Útest_where_bugC  s    ÿ þz)TestDataFrameIndexingWhere.test_where_bugc                 C   s    t tjg d¢|d�tjg d¢dd�dœƒ}t g d¢g d¢dœƒ |ddœ¡}| |dkd	¡}t ||¡ | ¡ }|j|dkd	d
d�}|d u s�J ‚t ||¡ d S )N©r.   r   r   rw   rT   r–   rW   ry   )éÿÿÿÿr™   r   rw   )r•   r”   r™   r™   r   r™   Trq   )r   r   r�   ru   r<   r>   r@   rp   )rQ   Zany_signed_int_numpy_dtyper7   r]   r\   rs   r%   r%   r&   Útest_where_bug_mixedT  s     þÿÿþz/TestDataFrameIndexingWhere.test_where_bug_mixedc                 C   sJ  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 }| ¡ }||| < d
}tjt|d�� | ||¡}W d   ƒ n1 s–0    Y  t 	||¡ t ddgddgdœƒ}t tjdgdtjgdœƒ}| ¡ ||kB }| ¡ }||| < tjt|d�� | ||¡}W d   ƒ n1 �s00    Y  t 	||¡ d S )Nr.   r   r   rw   r   r‹   )r   r.   r   r‡   rˆ   ú<Downcasting behavior in Series and DataFrame methods 'where'rL   r   ©r   r.   )
r   r   rj   r   rp   r>   Úassert_produces_warningÚFutureWarningr<   r@   )rQ   rz   r{   Zdo_not_replacer]   rR   r\   r%   r%   r&   Útest_where_bug_transpositioni  s"    $
*
,z7TestDataFrameIndexingWhere.test_where_bug_transpositionc                 C   sÒ   t tddd�tddd�tj d¡ d¡dœƒ}tddd	ƒ}d
}tjt	|d�� ||k W d   ƒ n1 sj0    Y  ||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20130104r   r   iÝ  r.   r   zF'>' not supported between instances of 'float' and 'datetime.datetime'rL   r™   r   r   r   )r   r   r   r   r    r!   r   rN   rO   rP   rZ   rp   rj   Úlocr>   r@   )rQ   r7   ZstamprR   r\   r]   r%   r%   r&   Útest_where_datetime‚  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ƒ}| 	¡ }t
|ƒ }|j|d dd� t dtjgd dgdd gdœƒ}t ||¡ | 	¡ }d || < t ||¡ d S )NZseriesé
   rx   r   r.   r   r   rw   r   r‹   ZTestr   Trq   r�   )r   r   r|   ru   Úfloatr   rj   r>   r@   rp   r   r<   )rQ   r7   r]   Úorigrn   r%   r%   r&   Útest_where_none™  s0    "ÿþÿ
ýÿ
z*TestDataFrameIndexingWhere.test_where_nonec                 C   s<   t dgd�}|}|jtk ¡ s"J ‚| |¡}t ||¡ d S )Nrz   r   )r   rA   ÚobjectrB   r<   r>   r@   )rQ   r7   rC   r\   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 u sjJ ‚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   sV   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   r   r   rw   r‹   r.   r‡   )r   r   r   r    r!   rj   rZ   r6   r%   r%   r&   ÚcreateÆ  s
    z;TestDataFrameIndexingWhere.test_where_align.<locals>.creater   ©ÚaxisT©rr   r¬   r   c                 S   s   |   | dk|¡S ©Nr   )r<   )ÚxÚyr%   r%   r&   Ú<lambda>Ø  r3   z=TestDataFrameIndexingWhere.test_where_align.<locals>.<lambda>©r°   r;   Úrowsr.   rŽ   )rb   Úmeanr<   ÚpdÚnotnar>   r@   Úapplyr   r;   r   )rQ   rª   r7   r]   r\   rs   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      ð?      ð?r   y      @      ð?rz   r{   r   y      @      ð?r   )r   r   rj   Úabsr>   r@   )rQ   r]   r7   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 u s�J ‚t ||¡ t ddgddggdd�}|j||dd	�}t ||¡ | 	¡ }|j||dd
d�}|d u söJ ‚t ||¡ d S )Nr   )r   r   Fr   r.   rW   rT   r;   r«   T©r¬   rr   r   )
r   r   r   r    r!   r   r<   r>   r@   rp   ©rQ   r7   rn   Úserr]   r\   rs   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 ||¡ | ¡ }tjt	dd��" |j||d
dd�}W d   ƒ n1 s°0    Y  |d u sÆJ ‚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œƒ}| ¡ }tjt	dd��" |j||ddd�}W d   ƒ n1 �st0    Y  |d u �sŒJ ‚t ||¡ d S )Nr.   r   r   rw   rY   rT   Fr   rW   r;   r«   úincompatible dtyperL   Tr»   r   rœ   )r   r   r   rj   r<   r>   r@   rp   r�   rž   r�   r¼   r%   r%   r&   Útest_where_axis_with_upcast  s0    0þÿ2z6TestDataFrameIndexingWhere.test_where_axis_with_upcastc           
      C   st  t jttj d¡ d¡ƒttj d¡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 u sèJ ‚t ||¡ |j||dd�}td|j|j	d�}|d  d¡|d< |d  d¡|d< t ||¡ | ¡ }|j||ddd�}|d u �snJ ‚t ||¡ | ¡ jd	dd�}| ¡  d¡}tj|jd	d d …f< | ||¡}t ||¡ |j||dd�}t ||¡ | ¡ }tjtdd��  |j||dd�}W d   ƒ n1 �s 0    Y  |d u �s8J ‚t ||¡ | ¡ }tjtdd��" |j||ddd�}W d   ƒ n1 �s„0    Y  |d u �sœJ ‚t ||¡ | ¡ jd	d	d�}	| ¡ }tj|jd d …d	f< | ||	¡}t ||¡ |j||	dd�}t ||¡ | ¡ }|j||	dd�}|d u �s0J ‚t ||¡ | ¡ }|j||	ddd�}|d u �sdJ ‚t ||¡ d S )Nr   )r¤   r   r   r¤   )ÚsizerY   rT   Tr.   )Zignore_indexr¬   F)r   r;   r:   r   r«   r�   r   r»   r;   r“   r¥   r¿   rL   rq   r­   )rµ   Úconcatr   r   r   r    r!   Zintegersr   r;   r   r<   ru   r>   r@   rp   Zdroprj   r¢   r�   rž   )
rQ   r7   rn   Ús1Ús2r\   r]   rs   Zd1Zd2r%   r%   r&   Útest_where_axis_multiple_dtypes%  s~    þþ÷02z:TestDataFrameIndexingWhere.test_where_axis_multiple_dtypesc                 C   s0  t g d¢g d¢g d¢gƒ}| dd„ dd„ ¡}t g d¢g d¢g d¢gƒ}t ||¡ t || |d	k|d
 ¡¡ | dd„ dd„ ¡}t g d¢g d¢g d¢gƒ}t ||¡ t || |d dkd¡¡ |d  dd„ dd„ ¡}t g d¢g d¢g d¢gƒ}t ||¡ t ||d  |d dk|d d ¡¡ d S )Nr   rŠ   )rx   r‡   rˆ   c                 S   s   | dkS )Nrw   r%   ©r¯   r%   r%   r&   r±   u  r3   z@TestDataFrameIndexingWhere.test_where_callable.<locals>.<lambda>c                 S   s   | d S ©Nr.   r%   rÆ   r%   r%   r&   r±   u  r3   )r   r   rw   )r   r   r‹   rw   r.   c                 S   s   | d dkj S )Nr   r   )r=   rÆ   r%   r%   r&   r±   {  r3   c                 S   s   dS )Néc   r%   rÆ   r%   r%   r&   r±   {  r3   )rÈ   r   rÈ   )rw   rÈ   r‹   )rÈ   r‡   rÈ   r   r   rÈ   c                 S   s   | dkS )Nr‡   r%   rÆ   r%   r%   r&   r±   �  r3   c                 S   s   | d S )Nr¤   r%   rÆ   r%   r%   r&   r±   �  r3   )é   é   é   )é   é   é   )rˆ   r¤   é   r‡   r¤   )r   r<   r>   r@   )rQ   r7   r\   rI   r%   r%   r&   Útest_where_callabler  s    z.TestDataFrameIndexingWhere.test_where_callablec                 C   s¤   t tg d¢|d�dgd�}t tg d¢|d�dgd�}t g d¢dgd�}t tg d¢|d�dgd�}|tu rˆ|d }|d }|d }|d }| ||¡}t ||¡ d S )N)Ú20150101Ú20150102Ú20150103)ÚtzÚdater   )rÓ   Z20150104Ú20150105©TTF)rÑ   rÒ   rÖ   )r   r   r   r<   r>   Úassert_equal)rQ   Ztz_naive_fixtureÚframe_or_seriesZobj1Úobj2rn   rI   r\   r%   r%   r&   Útest_where_tz_values†  s(    þþþz/TestDataFrameIndexingWhere.test_where_tz_valuesc                 C   sv   t t d¡ dd¡tdƒd�}t g d¢g d¢g¡}| |¡}t dtjtjgtjtjd	ggtdƒd�}t 	||¡ d S )
Nr‹   r   r   ÚABCr   ©TFFrŒ   r   r   )
r   r   ÚarangeÚreshapeÚlistr�   r<   rj   r>   r@   )rQ   r7   rn   r\   r]   r%   r%   r&   Útest_df_where_change_dtype�  s    
 ÿz5TestDataFrameIndexingWhere.test_df_where_change_dtypeÚkwargsrd   Nc           
      C   s  t jdt jd� dd¡}t|tdƒd�}t  g d¢g d¢g¡}|j d	¡|_|j	 d	¡|_	|j
 d	¡|_
|j|fi |¤Ž}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i |¤Ž}t|dd�}	t ||	¡ d S )Nr‹   rT   r   r   rÜ   r   rÝ   rŒ   Úcategoryr   )Ú
categoriesr.   rw   r   r   r   )r_   )r   rÞ   rY   rß   r   rà   r�   r   ru   r   r   r<   rµ   ZCategoricalrj   r>   r@   r   r?   )
rQ   râ   Údatar7   rn   r\   r   r   r   r]   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.   rz   r{   ©rå   r   rã   r¥   )	r   ru   r<   rp   r   rj   r¢   r>   rØ   r[   r%   r%   r&   Ú test_where_categorical_filteringÃ  s    z;TestDataFrameIndexingWhere.test_where_categorical_filteringc                 C   sÜ   t g d¢g d¢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|d d… ddgd�}t g d¢dtj
dgdœƒ}|j	||dd
�}t ||¡ d S )Nr   rŠ   ©r   r   rx   rˆ   rT   Fr.   r   r«   r   rw   r‹   r   r   r   r:   )r.   rx   r   )r   rµ   r�   ÚNAr   r   ZonesÚshapeÚboolr<   rj   r>   r@   )rQ   r7   Úarrr½   rn   r\   r]   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µ   ÚIntervalr<   r¶   r>   r@   r?   )rQ   r7   Úresr½   r%   r%   r&   Útest_where_interval_noopá  s    z3TestDataFrameIndexingWhere.test_where_interval_noopc                 C   sÒ   |t  dd¡gd ƒ}|ddgƒ}d}tjt|d��" | | ¡  |¡}W d   ƒ n1 s\0    Y  t || t	j
¡¡ tjtdd��$ |j| ¡ |dd	� W d   ƒ n1 s²0    Y  t || t¡¡ d S )
Nr   r   r�   r“   r›   rL   ú%Setting an item of incompatible dtypeTrq   )rµ   rï   r>   r�   rž   r<   r¶   rØ   ru   r   rY   rn   r¨   )rQ   rÙ   Úobjrd   rR   rð   r%   r%   r&   Ú#test_where_interval_fullop_downcastë  s    0ÿ2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 jtdd��. tt d¡d tjd� |¡}W d   ƒ n1 sB0    Y  | ¡ }t 	g d¢¡}| 
| d¡}t  ||¡ | dd	¡}| 
| d¡}t  ||¡ | |d¡}t  ||¡ | |d¡}	t  |	|¡ d
}
t jt|
d�� | 
|d¡}W d   ƒ n1 �s0    Y  td|j|jd�}t  ||¡ t jtdd��" |j| ddd� W d   ƒ n1 �sh0    Y  t  || t¡¡ d S )Nzis deprecatedrL   r   i Êš;rT   ©FFFZfoor™   r.   r›   rw   rŽ   rò   Trq   )r>   r�   rž   r   r   rÞ   rY   ÚviewZto_framer�   r<   r?   rß   r@   rn   r   r;   r   ru   r¨   )rQ   r)   r½   r7   rn   rð   Zmask2Úres2Zres3Zres4rR   Zres5r]   r%   r%   r&   Útest_where_datetimelike_noopÿ  s.    <,ÿ2z7TestDataFrameIndexingWhere.test_where_datetimelike_noop)/Ú__name__Ú
__module__Ú__qualname__rS   r^   rN   ÚmarkÚfilterwarningsrk   ro   rv   r}   Ú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&   r9   0   sz   

5



)
ûþ

ýûþ
#	! M

þ	r9   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   r   rT   Tr   i   rœ   )r   rÞ   ru   Zint16rß   r   Zzerosrë   rì   r<   r�   rX   r>   r@   )rí   r7   rn   rð   r]   r%   r%   r&   Ú%test_where_int_downcasting_deprecated.  s    ,r  c                 C   sv   | g d¢ƒ}|  ¡ }| tu r$|d n|}| |dk ¡}|d9 }t ||¡ | |dkg d¢¡}|d9 }t ||¡ d S )Nr˜   r   r   r   )rp   r   r<   r>   rØ   )rÙ   r\   r]   ÚcolZ	where_resr%   r%   r&   Útest_where_copies_with_noop<  s    r  c                 C   s°   | g d¢g d¢t ƒ d�}| ddgddgt ƒ d�}tg d¢ƒ}| ||¡}| tjddtjgg d¢t ƒ d�}t ||¡ | | |¡}t ||¡ |j| |d	d
� t ||¡ d S )N)rz   r{   r0   rf   )Zid1Úid2Úid3Zid4)r;   r)   r{   r0   r  r  )FTTFTrq   )r	   r   r<   rµ   rê   r>   rØ   rn   )rÙ   ró   Zfiltered_objZ
filter_serr\   r]   r%   r%   r&   Útest_where_string_dtypeM  s$    ÿÿýr  c                  C   sr   t dgd dgd g d¢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 )NTrw   F)TFTF)ZAAAZBBBZCCCrT   )r   r<   r   r�   rj   r¨   r>   r@   )Zdf_maskr\   r]   r%   r%   r&   Útest_where_bool_comparisonf  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.   r   ré   )
r   r
   rµ   r   r   rj   r<   Únotnullr>   r@   )r]   r\   r%   r%   r&   Útest_where_none_nan_coercev  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   r;   Zf8)r   r   rj   r   Zaxesru   r¨   r<   ÚTr>   r@   )r\   r;   r   rn   rz   r{   r0   rf   r%   r%   r&   Ú&test_where_duplicate_axes_mixed_dtypes‚  s    

r  c                  C   sB   t ddgdtjgdœƒ} |  ¡ }|  t | ¡d ¡}t ||¡ d S )Nr�   r“   r   ry   )	r   r   rj   rp   r<   rµ   r  r>   r@   )r7   r]   r\   r%   r%   r&   Útest_where_columns_casting‘  s    r  Úas_catTFc           
      C   s¶  t jdddd�}|r| d¡}| |ƒ}t j d¡}tjg d¢|jd�j}|rRd	}nd
}|�rt	j
t|d�� | ||¡ W d   ƒ n1 sŒ0    Y  t	j
t|d�� | ||¡ W d   ƒ n1 sÆ0    Y  t	j
t|d��  |j||dd� W d   ƒ n1 �s0    Y  n | t¡ ||¡}| ||¡}	t |	|¡ | t¡ ||¡}| ||¡}	t |	|¡ tjtdd��  |j||dd� W d   ƒ n1 �sœ0    Y  t ||¡ d S )Nú
2016-01-01r   ÚD)r¡   Úfreqrã   úm8[ns]r×   ©ZndminzUCannot setitem on a Categorical with a new category \(NaT\), set the categories firstzvalue should be a 'Period'rL   Trq   rò   )rµ   Zperiod_rangeru   r   Zto_numpyr   r�   Úndimr
  rN   rO   rP   r<   rn   r¨   r>   rØ   r�   rž   )
rÙ   r  r"   Úidxró   Ztdnatrn   rR   r]   r\   r%   r%   r&   Útest_where_period_invalid_na›  s8    
ÿ**2ÿ0r  c              	   C   sÀ   t jg d¢|d�}| |ƒ}tjg d¢|jd�j}d}tjt jg D ]x}tj	t
|d�� | ||¡ W d   ƒ n1 sv0    Y  tj	t
|d�� | ||¡ W d   ƒ qB1 s°0    Y  qBd S )Nr   rT   r×   r  z3Invalid value '.*' for dtype '(U?Int|Float)\d{1,2}'rL   )rµ   r�   r   r  r
  r>   ZNP_NAT_OBJECTSr   rN   rO   rP   r<   rn   )rÙ   Zany_numeric_ea_dtyperí   ró   rn   rR   Ú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 )Nrz   Trq   )r   r<   rµ   r  rp   r>   rØ   )rå   r7   Zdf_copyr%   r%   r&   Útest_where_inplace_castingÞ  s    r  c               	   C   s  t g d¢ƒ} t g d¢¡}tjdd�}d}tjt|d�� |  ||¡}W d   ƒ n1 sZ0    Y  t |||gdd�}t 	||¡ t 
d	d
¡�J tjd |d�� |  ||¡}W d   ƒ n1 sÀ0    Y  W d   ƒ n1 sÞ0    Y  | t¡}t 	||¡ d S )Nr   rõ   r.   )Údaysr›   rL   r  rT   zfuture.no_silent_downcastingT)r   r   r�   rµ   Z	Timedeltar>   r�   rž   r<   r?   Zoption_contextru   r¨   )r½   rn   ÚtdrR   rð   r]   r÷   Z	expected2r%   r%   r&   Útest_where_downcast_to_td64ç  s    *H
r  c                 C   s~   |   ||¡}t ||¡ |  | |¡}t ||¡ |  ¡ } | j| |dd� | ¡ sn| ¡ }|d  t¡|d< t | |¡ d S )NTrq   r   )r<   r>   r@   rn   rp   rB   ru   r¨   )r7   rn   rd   r]   rð   r%   r%   r&   Ú_check_where_equivalencesû  s    r  c                  C   sX  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j	t
dd�� t||||ƒ W d   ƒ n1 s°0    Y  d
|d< ttj|d |d |d gtd�|d d …df dœƒ}tj	t
dd�� t||||ƒ W d   ƒ n1 �s,0    Y  d
|d d …< |}t||||ƒ d S )Nr  r‹   r    r   r   )r   r   r   r   r   Tr.   r   ré   rò   rL   )r.   r   )r   r   rT   )r   Ú_datarß   r   r   Zasarrayr   rp   r>   r�   rž   r  r�   r¨   )ZdtiZdtard   r7   rn   r]   r%   r%   r&   Útest_where_dt64_2d  s0    &ÿ,þÿÿ.r  c                  C   sh   t tdtjdgdd�g d¢dœƒ} |  dd„ ¡}t ttjtjdgdd�tjdd	gdœƒ}t ||¡ d S )
Nr.   r   ZInt64rT   r   ry   c                 S   s   | j dd„ dd�S )Nc                 S   s   | dkS rÇ   r%   r²   r%   r%   r&   r±   7  r3   zMtest_where_producing_ea_cond_for_np_dtype.<locals>.<lambda>.<locals>.<lambda>r.   r«   )r·   rÆ   r%   r%   r&   r±   7  r3   z;test_where_producing_ea_cond_for_np_dtype.<locals>.<lambda>r   )	r   r   rµ   rê   r<   r   rj   r>   r@   )r7   r\   r]   r%   r%   r&   Ú)test_where_producing_ea_cond_for_np_dtype4  s    ""ÿr  Úreplacementgü©ñÒMbP?Úsnakeiæ  r   rw   c                 C   sP   t g d¢tjdd ggƒ}| t |¡| ¡}t g d¢| d| ggƒ}t ||¡ d S )N)r�   g‘(,*‹0EÚninegš™™™™™¹?)r   r   rj   r<   rµ   r  r>   r@   )r   r7   r\   r]   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�   r“   r¯   r°   ry   TFrq   r.   )r   r<   r   rj   r>   r@   )r7   rC   r]   r%   r%   r&   Útest_where_inplace_no_otherJ  s
    r$  )-r   Z
hypothesisr   Únumpyr   rN   Zpandas.core.dtypes.commonr   Zpandasrµ   r   r   r   r   r	   r
   r   r   Zpandas._testingZ_testingr>   Zpandas._testing._hypothesisr   Zfixturer'   r8   r9   r  r  r  r  r	  r  r  rü   rþ   r  r  r  r  r  r  r  r#  r$  r%   r%   r%   r&   Ú<module>   sN   (


      

0
$
ÿ
	