o
    Û­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r|S | j dkr"|S | j dkr)|S d S )	Nr   é   ©é   é   ©ÚAÚBÚC©Úcolumnsr   r   r   )Úparamr   ÚnpÚrandomÚdefault_rngÚstandard_normal)ÚrequestÚfloat_string_frameÚmixed_float_frameÚmixed_int_frame© r&   úc/var/www/html/CropPilot/venv/lib/python3.10/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 )NÚuint8)Ú
issubclassÚdtypeÚtyper   ÚintegerÚfloating)Úsr&   r&   r'   Úis_ok(   s   ÿz_safe_add.<locals>.is_okc                 3   s0   � | ]\}}ˆ |ƒr||d  fn||fV  qdS )é   Nr&   )Ú.0Úcr/   ©r0   r&   r'   Ú	<genexpr>-   s   €. z_safe_add.<locals>.<genexpr>)r   ÚdictÚitems©Údfr&   r4   r'   Ú	_safe_add&   s   r:   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   sl   ddd„}|}||u r+d}t jt|d�� |dk W d   ƒ d S 1 s$w   Y  d S |dk}|||ƒ d S )NTc           	      S   s”   t | ƒ}|  ||¡}|  |j|¡}| ¡ D ]\}}tt || | | || ¡|jd�}tj||dd� qt 	||¡ |rF|j
| j
k ¡ sHJ ‚d S d S )N©ÚindexF)Úcheck_names)r:   ÚwhereÚvaluesr7   r   r   r=   ÚtmÚassert_series_equalÚassert_frame_equalÚdtypesÚall)	r9   ÚcondÚcheck_dtypesÚother1ÚrsÚ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#   rN   r9   ÚmsgrF   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 )r1   r   ©r+   )r   )r2   r3   r&   r&   r'   Ú
<dictcomp>O   s    ÿÿzCTestDataFrameIndexingWhere.test_where_upcasting.<locals>.<dictcomp>)Úfloat32Úfloat64Úint32Úint64r   r1   r[   r\   r]   r^   r<   )r   ÚilocrD   r   r   r+   rA   rB   ©rV   r9   ÚresultÚexpectedr&   r&   r'   Útest_where_upcastingL   s    þÿüùz/TestDataFrameIndexingWhere.test_where_upcastingz4ignore:Downcasting object dtype arrays:FutureWarningc                 C   sÂ   ddd„}|}||u r+d}t jt|d�� |dk W d   ƒ d S 1 s$w   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 ]Y\}}|| }| | j}||  | | j¡ d¡j}	t|ƒr-|}
nt|t	j
ƒrBt|d d …|f |jd�j}
n|| j}
|	 ¡ rM|nt	  |	||
¡}t||j|d�}tj||dd� q|rwt|t	j
ƒsy|j| jk ¡ s{J ‚d S d S d S )NFr<   )r=   Úname)Úcheck_dtype)r?   Ú	enumerater   r@   Úreindexr=   Úfillnar   Ú
isinstancer   Úndarrayr   rE   rA   rB   rD   )r9   rF   ÚotherrG   rI   ÚirK   ra   Údr3   ÚoÚ
new_valuesrb   r&   r&   r'   Ú_check_aligni   s"   

ÿzETestDataFrameIndexingWhere.test_where_alignment.<locals>._check_alignrO   rP   r   r1   c                 s   s    � | ]}t |jtjƒ V  qd S )N)r*   r,   r   r-   )r2   r/   r&   r&   r'   r5   ˜   s   € zBTestDataFrameIndexingWhere.test_where_alignment.<locals>.<genexpr>)rG   rR   )	rS   rT   rU   r:   r@   rE   rD   r   Únan)rV   r(   r#   rp   r9   rW   rF   rG   r&   r&   r'   Útest_where_alignmentf   s$   
ÿ

ÿþz/TestDataFrameIndexingWhere.test_where_alignmentzignore::DeprecationWarningc                 C   sR  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 s:w   Y  |j
d d…d d …f j}t|ƒ}d	}tjt|d�� | 	||¡ W d   ƒ n1 siw   Y  tjt|d�� | d
¡ W d   ƒ n1 s…w   Y  tjt|d�� | d¡ W d   ƒ d S 1 s¢w   Y  d S )Nr   r   r   r   r   r1   z4other must be the same shape as self when an ndarrayrP   ú,Array conditional must be same shape as selfT)r   r   r   r    r!   r@   rS   rT   Ú
ValueErrorr?   r_   r:   Úmask)rV   r9   rF   Úerr1rW   Úerr2rH   r&   r&   r'   Útest_where_invalidœ   s*   ÿÿÿÿ"ÿz-TestDataFrameIndexingWhere.test_where_invalidc                 C   sª   d	dd„}|}||u r+d}t jt|d�� |dk W d   ƒ d S 1 s$w   Y  d S ||u r4| 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 s%J ‚t 	||¡ |rR| j
 ¡ D ]!\}}t|jtjƒrH||  ¡ sHt d¡}|| j|ksQJ ‚q2d S d S )NTF)Úcopy©Úinplacer\   )ry   Úreindex_likerh   Úinfer_objectsru   r?   r   rq   rA   rC   rD   r7   r*   r,   r-   rE   r+   )	r9   rF   rG   ÚdfiÚecondrb   Úreturn_valuerK   rL   r&   r&   r'   Ú
_check_set¸   s   
üz=TestDataFrameIndexingWhere.test_where_set.<locals>._check_setrO   rP   r   r\   r1   rR   )rS   rT   rU   Úastype)rV   r(   r#   r%   r�   r9   rW   rF   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‡   r1   )r   Úranger?   rg   r=   rA   rC   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 )Nr‡   ©r1   r   r   FTr   r   rˆ   )r   r   rq   r?   rA   rC   )rV   r‹   r9   rF   rb   ra   r&   r&   r'   Útest_where_array_likeæ   s   z0TestDataFrameIndexingWhere.test_where_array_likerF   r1   r   r   r   r…   r‡   )r   r   r…   ÚTrueÚFalsez
2017-01-01z
2017-01-02c                 C   sR   t dg d¢iƒ}d}tjt|d�� | |¡ W d   ƒ d S 1 s"w   Y  d S )Nr‡   rŒ   ú(Boolean array expected for the conditionrP   ©r   rS   rT   rt   r?   ©rV   rF   r9   rW   r&   r&   r'   Útest_where_invalid_input_single÷   s
   "ÿz:TestDataFrameIndexingWhere.test_where_invalid_input_singler„   )r„   é   é	   r†   z
2017-01-03c                 C   sX   t g d¢g d¢dœƒ}d}tjt|d�� | |¡ W d   ƒ d S 1 s%w   Y  d S )NrŒ   )r   r   r   r†   r�   rP   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Œ   ©r„   r   é   )TFT©FFTç      ð?r   r˜   )r‡   rˆ   r3   ©r=   r   )r   r?   r   rq   rA   rC   r   r=   )rV   r9   rF   ra   rb   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 s&w   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 sdw   Y  t tjtjtjgg d¢gƒ}| t|ƒ¡}t 	||¡ d S )Nrs   rŒ   r—   TrP   )FTFT)r   rS   rT   rt   r?   r   rq   r   rA   rC   Úarray)rV   rW   r9   rF   rb   Ú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 sFJ ‚t ||¡ d S )N)rš   ç       @ç      @ç      @©r¢   r¡   r    rš   r†   r\   rY   r¡   r¢   r   Trz   )r   r   rq   r?   rA   rC   ry   )rV   r9   rb   ra   r€   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 sHJ ‚t ||¡ d S )N©r1   r   r   r„   rY   r£   r\   r†   )éÿÿÿÿr¦   r   r„   )r¢   r¡   r¦   r¦   r   r¦   Trz   )r   r   r�   r‚   r?   rA   rC   ry   )rV   Úany_signed_int_numpy_dtyper9   rb   ra   r€   r&   r&   r'   Útest_where_bug_mixedT  s    þÿÿþz/TestDataFrameIndexingWhere.test_where_bug_mixedc                 C   sH  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 sKw   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 s—w   Y  t 	||¡ d S )Nr1   r   r   r„   r   r˜   )r   r1   r   r”   r•   ú<Downcasting behavior in Series and DataFrame methods 'where'rP   r   ©r   r1   )
r   r   rq   r   ry   rA   Úassert_produces_warningÚFutureWarningr?   rC   )rV   r‡   rˆ   Údo_not_replacerb   rW   ra   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 s5w   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 )NÚ20130102r   ©ÚperiodsÚ20130104r   r   iÝ  r1   r   zF'>' not supported between instances of 'float' and 'datetime.datetime'rP   r¦   r   r   r   )r   r   r   r   r    r!   r   rS   rT   rU   r_   ry   rq   ÚlocrA   rC   )rV   r9   ÚstamprW   ra   rb   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 )NÚseriesé
   r…   r   r1   r   r   r„   r   r˜   ÚTestr   Trz   rš   )r   r   r‰   r‚   Úfloatr   rq   rA   rC   ry   r   r?   )rV   r9   rb   Úorigru   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 )Nr‡   r   )r   rD   ÚobjectrE   r?   rA   rC   )rV   r9   rF   ra   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 s5J ‚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   r„   r˜   r1   r”   )r   r   r   r    r!   rq   r_   r8   r&   r&   r'   ÚcreateÆ  s
   z;TestDataFrameIndexingWhere.test_where_align.<locals>.creater   ©ÚaxisT©r{   rÀ   r   c                 S   s   |   | dk|¡S ©Nr   )r?   )ÚxÚyr&   r&   r'   Ú<lambda>Ø  s    z=TestDataFrameIndexingWhere.test_where_align.<locals>.<lambda>©rÄ   r=   Úrowsr1   r›   )rh   Úmeanr?   ÚpdÚnotnarA   rC   Úapplyr   r=   r   )rV   r¾   r9   rb   ra   r€   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      @      ð?r‡   rˆ   r   y      @      ð?r   )r   r   rq   ÚabsrA   rC   )rV   rb   r9   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 sHJ ‚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   r1   r\   rY   r=   r¿   T©rÀ   r{   r   )
r   r   r   r    r!   r   r?   rA   rC   ry   ©rV   r9   ru   Úserrb   ra   r€   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 sXw   Y  |d u scJ ‚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 s¹w   Y  |d u sÄJ ‚t ||¡ d S )Nr1   r   r   r„   r^   rY   Fr   r\   r=   r¿   úincompatible dtyperP   TrÏ   r   rª   )r   r   r   rq   r?   rA   rC   ry   r«   r¬   r�   rÐ   r&   r&   r'   Útest_where_axis_with_upcast  s4   ÿþÿÿz6TestDataFrameIndexingWhere.test_where_axis_with_upcastc           
      C   sr  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 stJ ‚t ||¡ |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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w   Y  |d u �sJ ‚t ||¡ | ¡ }tjtdd�� |j||ddd�}W d   ƒ n	1 �sAw   Y  |d u �sMJ ‚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   )r·   r   r   r·   )Úsizer^   rY   Tr1   )Úignore_indexrÀ   F)r   r=   r<   r   r¿   rš   r   rÏ   r=   r    r¹   rÓ   rP   rz   rÁ   )rÉ   Úconcatr   r   r   r    r!   Úintegersr   r=   r   r?   r‚   rA   rC   ry   Údroprq   r³   r«   r¬   )
rV   r9   ru   Ús1Ús2ra   rb   r€   Úd1Úd2r&   r&   r'   Útest_where_axis_multiple_dtypes%  s‚   þþ÷ÿÿ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—   )r…   r”   r•   c                 S   ó   | dkS )Nr„   r&   ©rÃ   r&   r&   r'   rÅ   u  ó    z@TestDataFrameIndexingWhere.test_where_callable.<locals>.<lambda>c                 S   ó   | d S ©Nr1   r&   rà   r&   r&   r'   rÅ   u  rá   )r   r   r„   )r   r   r˜   r„   r1   c                 S   s   | d dkj S )Nr   r   )r@   rà   r&   r&   r'   rÅ   {  s    c                 S   s   dS )Néc   r&   rà   r&   r&   r'   rÅ   {  s    )rä   r   rä   )r„   rä   r˜   )rä   r”   rä   r   r   rä   c                 S   rß   )Nr”   r&   rà   r&   r&   r'   rÅ   �  rá   c                 S   râ   )Nr·   r&   rà   r&   r&   r'   rÅ   �  rá   )é   é   é   )é   é   é   )r•   r·   é   r”   r·   )r   r?   rA   rC   )rV   r9   ra   rM   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 rD|d }|d }|d }|d }| ||¡}t ||¡ d S )N)Ú20150101Ú20150102Ú20150103)ÚtzÚdater   )rï   Ú20150104Ú20150105©TTF)rí   rî   ró   )r   r   r   r?   rA   Úassert_equal)rV   Útz_naive_fixtureÚframe_or_seriesÚobj1Úobj2ru   rM   ra   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?   rq   rA   rC   )rV   r9   ru   ra   rb   r&   r&   r'   Útest_df_where_change_dtype�  s   
 ÿz5TestDataFrameIndexingWhere.test_df_where_change_dtypeÚkwargsrk   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˜   rY   r   r   rû   r   rü   r™   Úcategoryr   )Ú
categoriesr1   r„   r   r   r   )rd   )r   rý   r^   rþ   r   rÿ   r�   r   r‚   r   r   r?   rÉ   ÚCategoricalrq   rA   rC   r   rB   )
rV   r  Údatar9   ru   ra   r   r   r   rb   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   r1   r‡   rˆ   ©r  r   r  r¹   )	r   r‚   r?   ry   r   rq   r³   rA   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   r…   r•   rY   Fr1   r   r¿   r   r„   r˜   r   r   r   r<   )r1   r…   r   )r   rÉ   r�   ÚNAr   r   ÚonesÚshapeÚboolr?   rq   rA   rC   )rV   r9   ÚarrrÑ   ru   ra   rb   Ú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Ê   rA   rC   rB   )rV   r9   Ú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.w   Y  t || t	j
¡¡ tjtdd�� |j| ¡ |dd	� W d   ƒ n1 sYw   Y  t || t¡¡ d S )
Nr   r   rš   r    r©   rP   ú%Setting an item of incompatible dtypeTrz   )rÉ   r  rA   r«   r¬   r?   rÊ   rõ   r‚   r   r^   ru   r¼   )rV   r÷   Úobjrk   rW   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 jtdd�� tt d¡d tjd� |¡}W d   ƒ n1 s!w   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ƒw   Y  td|j|jd�}t  ||¡ t jtdd�� |j| ddd� W d   ƒ n1 s²w   Y  t  || t¡¡ d S )Nzis deprecatedrP   r   i Êš;rY   ©FFFÚfoor¦   r1   r©   r„   r›   r  Trz   )rA   r«   r¬   r   r   rý   r^   ÚviewÚto_framer�   r?   rB   rþ   rC   ru   r   r=   r   r‚   r¼   )rV   r+   rÑ   r9   ru   r  Úmask2Úres2Úres3Úres4rW   Úres5rb   r&   r&   r'   Útest_where_datetimelike_noopÿ  s4    ÿÿÿýz7TestDataFrameIndexingWhere.test_where_datetimelike_noop)/Ú__name__Ú
__module__Ú__qualname__rX   rc   rS   ÚmarkÚfilterwarningsrr   rx   rƒ   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'   r;   0   s|    


5


)
ûþ

ýûþ
#	! M

þ	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   r   rY   Tr   i   rª   )r   rý   r‚   Úint16rþ   r   Úzerosr  r  r?   r�   r]   rA   rC   )r  r9   ru   r  rb   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   )ry   r   r?   rA   rõ   )r÷   ra   rb   ÚcolÚ	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)r‡   rˆ   r3   rm   )Úid1Úid2Úid3Úid4)r=   r+   rˆ   r3   r0  r1  )FTTFTrz   )r	   r   r?   rÉ   r
  rA   rõ   ru   )r÷   r  Úfiltered_objÚ
filter_serra   rb   r&   r&   r'   Útest_where_string_dtypeM  s$   ÿÿýr5  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 )NTr„   F)TFTF)ÚAAAÚBBBÚCCCrY   )r   r?   r   r�   rq   r¼   rA   rC   )Údf_maskra   rb   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 )NÚ20130101Ú20130103r1   r   r	  )
r   r
   rÉ   r(  r   rq   r?   ÚnotnullrA   rC   )rb   ra   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=   Úf8)r   r   rq   r   Úaxesr‚   r¼   r?   ÚTrA   rC   )ra   r=   r   ru   r‡   rˆ   r3   rm   r&   r&   r'   Ú&test_where_duplicate_axes_mixed_dtypes‚  s   

rB  c                  C   sB   t ddgdtjgdœƒ} |  ¡ }|  t | ¡d ¡}t ||¡ d S )Nrš   r    r   r†   )	r   r   rq   ry   r?   rÉ   r=  rA   rC   )r9   rb   ra   r&   r&   r'   Útest_where_columns_casting‘  s   rC  Úas_catTFc           
      C   s´  t jdddd�}|r| d¡}| |ƒ}t j d¡}tjg d¢|jd�j}|r)d	}nd
}|r‰t	j
t|d�� | ||¡ W d   ƒ n1 sEw   Y  t	j
t|d�� | ||¡ W d   ƒ n1 sbw   Y  t	j
t|d�� |j||dd� W d   ƒ d S 1 s‚w   Y  d S | t¡ ||¡}| ||¡}	t |	|¡ | t¡ ||¡}| ||¡}	t |	|¡ tjtdd�� |j||dd� W d   ƒ n1 sÍw   Y  t ||¡ d S )Nú
2016-01-01r   ÚD)r±   Úfreqr  úm8[ns]rô   ©ÚndminzUCannot setitem on a Categorical with a new category \(NaT\), set the categories firstzvalue should be a 'Period'rP   Trz   r  )rÉ   Úperiod_ranger‚   r(  Úto_numpyr   r�   ÚndimrA  rS   rT   rU   r?   ru   r¼   rA   rõ   r«   r¬   )
r÷   rD  r"   Úidxr  Útdnatru   rW   rb   ra   r&   r&   r'   Útest_where_period_invalid_na›  s@   
ÿÿÿ"ÿÿýrP  c              	   C   sÀ   t jg d¢|d�}| |ƒ}tjg d¢|jd�j}d}tjt jg D ]<}tj	t
|d�� | ||¡ W d   ƒ n1 s;w   Y  tj	t
|d�� | ||¡ W d   ƒ n1 sXw   Y  q!d S )NrŒ   rY   rô   rI  z3Invalid value '.*' for dtype '(U?Int|Float)\d{1,2}'rP   )rÉ   r�   r   rM  rA  rA   ÚNP_NAT_OBJECTSr(  rS   rT   rU   r?   ru   )r÷   Úany_numeric_ea_dtyper  r  ru   rW   Únullr&   r&   r'   Útest_where_nullable_invalid_naÌ  s   ÿÿ€ûrT  )r  c                 C   sH   t d| iƒ}| t |¡d ¡ ¡ }|jt |¡d dd� t ||¡ d S )Nr‡   Trz   )r   r?   rÉ   r=  ry   rA   rõ   )r  r9   Údf_copyr&   r&   r'   Útest_where_inplace_castingÞ  s   rV  c               	   C   s  t g d¢ƒ} t g d¢¡}tjdd�}d}tjt|d�� |  ||¡}W d   ƒ n1 s-w   Y  t |||gdd�}t 	||¡ t 
d	d
¡�% tjd |d�� |  ||¡}W d   ƒ n1 s`w   Y  W d   ƒ n1 sow   Y  | t¡}t 	||¡ d S )NrŒ   r  r1   )Údaysr©   rP   rH  rY   zfuture.no_silent_downcastingT)r   r   r�   rÉ   Ú	TimedeltarA   r«   r¬   r?   rB   Úoption_contextr‚   r¼   )rÑ   ru   ÚtdrW   r  rb   r  Ú	expected2r&   r&   r'   Útest_where_downcast_to_td64ç  s"   ÿÿ€ÿ
r\  c                 C   s~   |   ||¡}t ||¡ |  | |¡}t ||¡ |  ¡ } | j| |dd� | ¡ s7| ¡ }|d  t¡|d< t | |¡ d S )NTrz   r   )r?   rA   rC   ru   ry   rE   r‚   r¼   )r9   ru   rk   rb   r  r&   r&   r'   Ú_check_where_equivalencesû  s   r]  c                  C   sV  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 sXw   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•w   Y  d
|d d …< |}t||||ƒ d S )NrE  r˜   r°   r   r   )r   r   r   r   r   Tr1   r   r	  r  rP   )r1   r   )r   r   rY   )r   Ú_datarþ   r   r   Úasarrayr   ry   rA   r«   r¬   r]  r�   r¼   )ÚdtiÚdtark   r9   ru   rb   r&   r&   r'   Útest_where_dt64_2d  s4   &ÿýþÿÿýrb  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 )
Nr1   r   ÚInt64rY   rŒ   r†   c                 S   s   | j dd„ dd�S )Nc                 S   rß   rã   r&   rÆ   r&   r&   r'   rÅ   7  rá   zMtest_where_producing_ea_cond_for_np_dtype.<locals>.<lambda>.<locals>.<lambda>r1   r¿   )rË   rà   r&   r&   r'   rÅ   7  s    z;test_where_producing_ea_cond_for_np_dtype.<locals>.<lambda>r   )	r   r   rÉ   r
  r?   r   rq   rA   rC   )r9   ra   rb   r&   r&   r'   Ú)test_where_producing_ea_cond_for_np_dtype4  s   ""ÿrd  Úreplacementgü©ñÒMbP?Úsnakeiæ  r   r„   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   rq   r?   rÉ   r=  rA   rC   )re  r9   ra   rb   r&   r&   r'   Útest_where_int_overflow>  s   rh  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Ä   r†   TFrz   r1   )r   r?   r   rq   rA   rC   )r9   rF   rb   r&   r&   r'   Útest_where_inplace_no_otherJ  s
   ri  )-r   Ú
hypothesisr   Únumpyr   rS   Úpandas.core.dtypes.commonr   ÚpandasrÉ   r   r   r   r   r	   r
   r   r   Úpandas._testingÚ_testingrA   Úpandas._testing._hypothesisr   Úfixturer(   r:   r;   r+  r.  r5  r:  r>  rB  rC  r$  r&  rP  rT  rV  r\  r]  rb  rd  rh  ri  r&   r&   r&   r'   Ú<module>   sP    (


      

0
$
ÿ
	