a
    oÝEb{  ã                   @   s*  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m	Z	 d dl
Zd dl
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"dd„ Z#ej$ %d d!d"g¡d#d$„ ƒZ&d%d&„ Z'eed'�d(d)„ ƒZ(dS )*é    )Údatetime)ÚgivenN)Únp_version_under1p19)Ú	is_scalar)Ú	DataFrameÚDatetimeIndexÚSeriesÚStringDtypeÚ	TimestampÚ
date_rangeÚisna)ÚOPTIONAL_ONE_OF_ALL)ÚdefaultÚfloat_stringÚmixed_floatÚ	mixed_int)Úparamsc                 C   sR   | j dkr$ttj dd¡g d¢d�S | j dkr2|S | j dkr@|S | j dkrN|S d S )	Nr   é   é   ©ÚAÚBÚC©Úcolumnsr   r   r   )Úparamr   ÚnpÚrandomÚrandn)ÚrequestÚfloat_string_frameZmixed_float_frameÚmixed_int_frame© r"   úf/home/ja/django-apps/lartica_env/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"   r.   r#   Ú	_safe_add%   s    r5   c                   @   s  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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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&e	j
 dBi dCdDig¡dEdF„ ƒZ'dGdH„ Z(dIdJ„ Z)dKdL„ Z*e	j
 dMg dN¢¡dOdP„ ƒZ+dDS )QÚ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)r5   ÚwhereÚvaluesr2   r   r   r8   ÚtmÚassert_series_equalÚassert_frame_equalÚdtypesÚall)	r4   ÚcondÚcheck_dtypesÚother1ÚrsZrs2ÚkÚvÚexpr"   r"   r#   Ú
_check_get1   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    rG   r4   Úmsgr@   r"   r"   r#   Útest_where_get0   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,   r-   r"   r"   r#   Ú
<dictcomp>K   s   ÿzCTestDataFrameIndexingWhere.test_where_upcasting.<locals>.<dictcomp>)Úfloat32Úfloat64Úint32Úint64r   r+   rT   rU   rV   rW   r7   )r   Úilocr>   r   r   r&   r;   r<   ©rO   r4   ÚresultÚexpectedr"   r"   r#   Útest_where_upcastingH   s     þÿüùz/TestDataFrameIndexingWhere.test_where_upcastingc           
      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}d }||u rŒt}tj|dd��" |||t|ƒjƒ W d   ƒ n1 sÂ0    Y  |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 )NFr7   )r8   Úname)Zcheck_dtype)r9   Ú	enumerater   r:   Úreindexr8   Úfillnar   Ú
isinstancer   Zndarrayr   r?   r;   r<   r>   )r4   r@   ÚotherrA   rC   ÚirD   rZ   Údr-   ÚoÚ
new_valuesr[   r"   r"   r#   Ú_check_alignd   s    

zETestDataFrameIndexingWhere.test_where_alignment.<locals>._check_alignrH   rI   r   r+   úDowncasting integer-dtypec                 s   s   | ]}t |jtjƒ V  qd S )N)r%   r'   r   r(   )r,   r)   r"   r"   r#   r/   •   r0   zBTestDataFrameIndexingWhere.test_where_alignment.<locals>.<genexpr>)rA   )T)rL   rM   rN   r5   ÚFutureWarningr;   Úassert_produces_warningr:   r?   r>   r   Únan)
rO   r$   r    r!   rg   r4   rP   r@   ÚwarnrA   r"   r"   r#   Útest_where_alignmentb   s$    
&0z/TestDataFrameIndexingWhere.test_where_alignmentc                 C   sP  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 sp0    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 �sB0    Y  d S )Nr   r   r   r   r   r+   é   z4other must be the same shape as self when an ndarrayrI   ú,Array conditional must be same shape as selfT)r   r   r   r   r:   rL   rM   Ú
ValueErrorr9   rX   r5   Úmask)rO   r4   r@   Zerr1rP   Zerr2rB   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 |dk}|||ƒ |dk}|||ƒ |dkdd … }|||ƒ d S )	NTc           	      S   s    |   ¡ }| | ¡ d¡}| | ¡}|j|tjdd�}|d u sBJ ‚t ||¡ |rœ| j	 
¡ D ]>\}}t|jtjƒrˆ||  ¡ sˆt d¡}|| j|ks\J ‚q\d S )NT©ÚinplacerU   )ÚcopyZreindex_liker`   rq   r9   r   rk   r;   r=   r>   r2   r%   r'   r(   r?   r&   )	r4   r@   rA   ZdfiZecondr[   Úreturn_valuerD   rE   r"   r"   r#   Ú
_check_set°   s    
z=TestDataFrameIndexingWhere.test_where_set.<locals>._check_setrH   rI   r   r+   )TrK   )rO   r$   r    rw   r4   rP   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Úbr|   r+   )r   Úranger9   r_   r8   r;   r=   rY   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 )Nr|   ©r+   rn   r   FTrn   r   r}   )r   r   rk   r9   r;   r=   )rO   r€   r4   r@   r[   rZ   r"   r"   r#   Útest_where_array_likeÙ   s    z0TestDataFrameIndexingWhere.test_where_array_liker@   r+   r   rn   r   rz   r|   )rn   r   rz   Ú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 )Nr|   r�   ú(Boolean array expected for the conditionrI   ©r   rL   rM   rp   r9   ©rO   r@   r4   rP   r"   r"   r#   Útest_where_invalid_input_singleê   s    z:TestDataFrameIndexingWhere.test_where_invalid_input_singlery   )ry   é   é	   r{   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�   )rn   rn   rn   r{   r…   rI   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�   ©ry   r   é   )TFT©FFTç      ð?r   r�   )r|   r}   r-   ©r8   r   )r   r9   r   rk   r;   r=   r   r8   )rO   r4   r@   rZ   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 )Nro   r�   rŒ   TrI   )FTFT)r   rL   rM   rp   r9   r   rk   r   r;   r=   Úarray)rO   rP   r4   r@   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�   r{   rU   rR   r–   r—   rn   Trs   )r   r   rk   r9   r;   r=   ru   )rO   r4   r[   rZ   rv   r"   r"   r#   Útest_where_bug6  s    ÿ þz)TestDataFrameIndexingWhere.test_where_bugc                 C   s¬   t tjg d¢|d�tj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+   rn   r   ry   rR   r˜   rU   r{   r–   r—   rn   Trs   )r   r   r’   rk   r9   r;   r=   ru   )rO   Zany_signed_int_numpy_dtyper4   r[   rZ   rv   r"   r"   r#   Útest_where_bug_mixedG  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+   rn   r   ry   r   r�   )r   r+   rn   r‰   rŠ   r   ©r   r+   )r   r   rk   r   ru   r9   r;   r=   )rO   r|   r}   Zdo_not_replacer[   rZ   r"   r"   r#   Útest_where_bug_transposition]  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 d   ƒ n1 sd0    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   iÝ  r+   r   zF'>' not supported between instances of 'float' and 'datetime.datetime'rI   éÿÿÿÿr   r   r   )r   r   r   r   r   r   rL   rM   rN   rX   ru   rk   Úlocr;   r=   )rO   r4   ZstamprP   rZ   r[   r"   r"   r#   Útest_where_datetimes  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 d   ƒ n1 sº0    Y  d S )NZseriesé
   rz   r   r+   rn   r   ry   r   r�   ZTestr   zboolean setting on mixed-typerI   Trs   )r   r   r~   ÚastypeÚfloatr   rk   r;   r=   rL   rM   rN   r9   r   )rO   r4   r[   rP   r"   r"   r#   Útest_where_noneŠ  s    "ÿþÿz*TestDataFrameIndexingWhere.test_where_nonec                 C   s<   t dgd�}|}|jtk ¡ s"J ‚| |¡}t ||¡ d S )Nr|   r   )r   r>   Úobjectr?   r9   r;   r=   )rO   r4   r@   rZ   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   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   ry   r�   r+   r‰   rn   )r   r   r   r   rk   rX   r3   r"   r"   r#   Úcreateª  s
    z;TestDataFrameIndexingWhere.test_where_align.<locals>.creater   ©ÚaxisT©rt   rª   r   c                 S   s   |   | dk|¡S ©Nr   )r9   )ÚxÚyr"   r"   r#   Ú<lambda>¼  r0   z=TestDataFrameIndexingWhere.test_where_align.<locals>.<lambda>)r®   r8   Úrowsr+   r�   )r`   Úmeanr9   ÚpdÚnotnar;   r=   Úapplyr   r8   r   )rO   r¨   r4   r[   rZ   rv   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      ð?      ð?rn   y      @      ð?r|   r}   r   y      @      ð?r   )r   r   rk   Úabsr;   r=   )rO   r[   r4   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 ||¡ 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 u �s˜J ‚t ||¡ |�r®t
nd }t dtj	gdtj	ggƒ}tj|dd��  |j||dd�}W d   ƒ n1 �s 0    Y  t ||¡ t tjddgdd�tjtj	tj	gdd�dœƒ}| ¡ }|j||dd	d
�}|d u �slJ ‚t ||¡ d S )Nrn   Fr   r+   rU   rR   r8   r©   T©rª   rt   r   r   ry   rW   rh   rI   rœ   )r   r   r   r   r   r9   r;   r=   ru   rk   ri   rj   r’   )	rO   Úusing_array_managerr4   rq   r)   r[   rZ   rv   rl   r"   r"   r#   Útest_where_axisÑ  sR    0þÿz*TestDataFrameIndexingWhere.test_where_axisc           
      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 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 �sdJ ‚t ||¡ | ¡ jd	dd�}| ¡ }tj|jd	d d …f< | 
||¡}t ||¡ |j
||dd�}t ||¡ | ¡ }|j
||dd�}|d u �søJ ‚t ||¡ | ¡ }|j
||ddd�}|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 �sÀJ ‚t ||¡ | ¡ }|j
||	ddd�}|d u �sôJ ‚t ||¡ d S )Nr¢   rn   r   )r¢   rn   )ÚsizerW   rR   Tr+   )Zignore_indexrª   F)r   r8   r7   r   r©   r�   r   r¸   r8   r•   rs   r«   )r²   Úconcatr   r   r   r   Úrandintr   r8   r   r9   r£   r;   r=   ru   Zdroprk   r    )
rO   r4   rq   Ús1Ús2rZ   r[   rv   Zd1Zd2r"   r"   r#   Útest_where_axis_multiple_dtypes  st    þú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Œ   )rz   r‰   rŠ   c                 S   s   | dkS )Nry   r"   ©r­   r"   r"   r#   r¯   R  r0   z@TestDataFrameIndexingWhere.test_where_callable.<locals>.<lambda>c                 S   s   | d S )Nr+   r"   rÁ   r"   r"   r#   r¯   R  r0   )rn   r   ry   )r   r   r�   ry   r+   c                 S   s   | d dkj S )Nrn   r   )r:   rÁ   r"   r"   r#   r¯   X  r0   c                 S   s   dS )Néc   r"   rÁ   r"   r"   r#   r¯   X  r0   )rÂ   rn   rÂ   )ry   rÂ   r�   )rÂ   r‰   rÂ   rn   r   rÂ   c                 S   s   | dkS )Nr‰   r"   rÁ   r"   r"   r#   r¯   ^  r0   c                 S   s   | d S )Nr¢   r"   rÁ   r"   r"   r#   r¯   ^  r0   )é   é   é   )é   é   é   )rŠ   r¢   é   r‰   r¢   )r   r9   r;   r=   )rO   r4   rZ   rF   r"   r"   r#   Útest_where_callableO  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   r9   r;   Úassert_equal)rO   Ztz_naive_fixtureÚframe_or_seriesZobj1Úobj2rq   rF   rZ   r"   r"   r#   Útest_where_tz_valuesc  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�   rn   r   ÚABCr   ©TFFrŽ   r   r   )
r   r   ÚarangeÚreshapeÚlistr’   r9   rk   r;   r=   )rO   r4   rq   rZ   r[   r"   r"   r#   Útest_df_where_change_dtypez  s    
 ÿz5TestDataFrameIndexingWhere.test_df_where_change_dtypeÚkwargsrb   Nc           	      C   s  t t d¡ dd¡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�   rn   r   rÖ   r   r×   rŽ   Úcategoryr   )Ú
categoriesr+   ry   r   r   r   )r]   )r   r   rØ   rÙ   rÚ   r’   r   r£   r   r   r9   r²   ZCategoricalrk   r;   r=   r   r<   )	rO   rÜ   r4   rq   rZ   r   r   r   r[   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+   r|   r}   )Údatar   rÝ   )	r   r£   r9   ru   r   rk   r    r;   rÒ   rY   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 ||¡ t|d d… ddgd�}t g d¢dtjdgdœƒ}|d  
t¡|d< |j	||dd
�}t ||¡ d S )Nr�   rŒ   ©r   r   rz   rŠ   rR   Fr+   r   r©   r   ry   r�   rn   r   r   r7   )r+   rz   r   )r   r²   r’   ÚNAr   r   ZonesÚshapeÚboolr9   r£   r¦   r;   r=   )rO   r4   ÚarrÚserrq   rZ   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²   ZIntervalr9   r³   r;   r=   r<   )rO   r4   Úresrç   r"   r"   r#   Útest_where_interval_noop½  s    z3TestDataFrameIndexingWhere.test_where_interval_noopr&   )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 g d¢¡}| | d¡}t 	||¡ | 
dd¡}| | d¡}t ||¡ | |d¡}t 	||¡ | |d¡}	t |	|¡ d S )Nr   i Êš;rR   )FFFZfoorŸ   r+   )r   r   rØ   rW   ÚviewZto_framer’   r9   r;   r<   rÙ   r=   rq   )
rO   r&   rç   r4   rq   ré   Zmask2Zres2Zres3Zres4r"   r"   r#   Útest_where_datetimelike_noopÇ  s    z7TestDataFrameIndexingWhere.test_where_datetimelike_noop),Ú__name__Ú
__module__Ú__qualname__rQ   r\   rm   rr   rx   r   rL   Ú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#   r6   /   sp   6$
ûþ

ýûþ
	!7G

þ	r6   c                 C   sd   t tj dd¡ƒ}t || ¡}|dk}t t¡�  |j|ddd� W d   ƒ n1 sV0    Y  d S )Nry   r   r   rŸ   F)Ztry_cast)	r   r   r   r   r;   Úget_objrj   ri   r9   )rÓ   Úobjrq   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}| sNt	nd }t
j||d�� | |d	¡}W d   ƒ n1 s‚0    Y  t|d d …df t jd	gd t jd�d
œƒ}t
 ||¡ d S )Nr�   r   rn   rR   Tr   rh   rI   i   rœ   )r   rØ   r£   Zint16rÙ   r   Zzerosrä   rå   ri   r;   rj   r9   r’   rV   r=   )r¹   ræ   r4   rq   rP   rl   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   rn   )ru   r   r9   r;   rÒ   )rÓ   rZ   r[   ÚcolZ	where_resr"   r"   r#   Útest_where_copies_with_noop  s    rù   c                 C   sx   | 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 ||¡ d S )	N)r|   r}   r-   rd   )Zid1Úid2Úid3Zid4)r8   r&   r}   r-   rú   rû   )FTTF)r	   r   r9   r²   rã   r;   rÒ   )rÓ   rõ   Zfiltered_objZ
filter_serrZ   r[   r"   r"   r#   Útest_where_string_dtype  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 )NTry   F)TFTF)ZAAAZBBBZCCCrR   )r   r9   r   r’   rk   r¦   r;   r=   )Zdf_maskrZ   r[   r"   r"   r#   Útest_where_bool_comparison&  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+   rn   râ   )
r   r
   r²   ró   r   rk   r9   Únotnullr;   r=   )r[   rZ   r"   r"   r#   Útest_where_none_nan_coerce6  s    
þÿrÿ   c                 C   sv   | t dƒƒ}d| j› d�}tjt|d��" | |dkdd¡}W d   ƒ n1 sP0    Y  | g d¢ƒ}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-onlyrI   r+   r¢   F)r¢   r¢   rn   r   ry   )r~   rí   r;   rj   ri   r9   rÒ   )rÓ   rõ   rP   rZ   r[   r"   r"   r#   Ú"test_where_non_keyword_deprecationB  s    ÿÿ0r   c                  C   sB   t ddgdtjgdœƒ} |  ¡ }|  t | ¡d ¡}t ||¡ d S )Nr�   r•   r   r{   )	r   r   rk   ru   r9   r²   rþ   r;   r=   )r4   r[   rZ   r"   r"   r#   Útest_where_columns_castingP  s    r  Úas_catTFc           	      C   s,  t jdddd�}|r| d¡}| |ƒ}t j d¡}tjg d¢|jd�j}|rpd	}t	rtt
jjd
d�}|j |¡ nd}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  d S )Nz
2016-01-01r   ÚD)rž   ÚfreqrÝ   zm8[ns]rÑ   ©ZndminzUCannot setitem on a Categorical with a new category \(NaT\), set the categories firstz­When evaluating the f-string to generate the exception message, numpy somehow ends up trying to cast None to int, so ends up raising TypeError but with an unrelated message.)Úreasonzvalue should be a 'Period'rI   Trs   )r²   Zperiod_ranger£   ró   Zto_numpyr   r’   ÚndimÚTr   rL   rð   ZxfailÚnodeZ
add_markerrM   rN   r9   rq   )	rÓ   r  r   Úidxrõ   Ztdnatrq   rP   rð   r"   r"   r#   Útest_where_period_invalid_naZ  s*    
ÿÿ**r  c              	   C   sÊ   t jg d¢|d�}| |ƒ}tjg d¢|jd�j}d g d¢¡}tjt jg D ]x}t	j
t|d�� | ||¡ W d   ƒ n1 s€0    Y  t	j
t|d�� | ||¡ W d   ƒ qL1 sº0    Y  qLd S )Nr�   rR   rÑ   r  ú|)zGdatetime64\[.{1,2}\] cannot be converted to an? (Integer|Floating)DtypezHtimedelta64\[.{1,2}\] cannot be converted to an? (Integer|Floating)DtypezQint\(\) argument must be a string, a bytes-like object or a number, not 'NaTType'z-object cannot be converted to a FloatingDtypez 'values' contains non-numeric NArI   )r²   r’   r   r  r  Újoinr;   ZNP_NAT_OBJECTSró   rL   rM   rN   r9   rq   )rÓ   Zany_numeric_ea_dtyperæ   rõ   rq   rP   Ú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 )Nr|   Trs   )r   r9   r²   rþ   ru   r;   rÒ   )rà   r4   Zdf_copyr"   r"   r#   Útest_where_inplace_casting›  s    r  ))r   Z
hypothesisr   Únumpyr   rL   Zpandas.compatr   Zpandas.core.dtypes.commonr   Zpandasr²   r   r   r   r	   r
   r   r   Zpandas._testingZ_testingr;   Zpandas._testing._hypothesisr   Zfixturer$   r5   r6   rö   r÷   rù   rü   rý   rÿ   r   r  rð   rñ   r  r  r  r"   r"   r"   r#   Ú<module>   s>   $	

     <

%