o
    թZh                     @   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_frameZmixed_float_framemixed_int_frame r%   ]/var/www/html/lang_env/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 )NZuint8)
issubclassdtypetyper   integerZ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,   r-   r%   r&   	<genexpr>-   s   . z_safe_add.<locals>.<genexpr>)r   dictitemsdfr%   r1   r&   	_safe_add&   s   r7   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)Zcheck_names)r7   wherevaluesr4   r   r   r:   tmassert_series_equalassert_frame_equaldtypesall)	r6   condcheck_dtypesother1rsZrs2kvexpr%   r%   r&   
_check_get2   s   $z=TestDataFrameIndexingWhere.test_where_get.<locals>._check_get6'>' not supported between instances of 'str' and 'int'matchr   T)pytestraises	TypeError)selfr'   r#   rI   r6   msgrB   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>L   s    zCTestDataFrameIndexingWhere.test_where_upcasting.<locals>.<dictcomp>)float32float64int32int64r   r.   rV   rW   rX   rY   r9   )r   ilocr@   r   r   r)   r=   r>   rQ   r6   resultexpectedr%   r%   r&   test_where_upcastingI   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 )NFr9   )r:   name)Zcheck_dtype)r;   	enumerater   r<   reindexr:   fillnar   
isinstancer   Zndarrayr   rA   r=   r>   r@   )r6   rB   otherrC   rE   irF   r\   dr0   o
new_valuesr]   r%   r%   r&   _check_alignf   s"   

zETestDataFrameIndexingWhere.test_where_alignment.<locals>._check_alignrJ   rK   r   r.   c                 s   s     | ]}t |jtj V  qd S )N)r(   r*   r   r+   )r/   r,   r%   r%   r&   r2      s    zBTestDataFrameIndexingWhere.test_where_alignment.<locals>.<genexpr>)rC   rM   )	rN   rO   rP   r7   r<   rA   r@   r   nan)rQ   r'   r#   ri   r6   rR   rB   rC   r%   r%   r&   test_where_alignmentc   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 sw   Y  tjt|d |d W d    d S 1 sw   Y  d S )Nr   r   r   r   r   r.   z4other must be the same shape as self when an ndarrayrK   ,Array conditional must be same shape as selfT)r   r   r   r    r!   r<   rN   rO   
ValueErrorr;   rZ   r7   mask)rQ   r6   rB   Zerr1rR   Zerr2rD   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inplacerW   )rp   Zreindex_likerb   Zinfer_objectsrn   r;   r   rj   r=   r?   r@   r4   r(   r*   r+   rA   r)   )	r6   rB   rC   ZdfiZecondr]   return_valuerF   rG   r%   r%   r&   
_check_set   s   
z=TestDataFrameIndexingWhere.test_where_set.<locals>._check_setrJ   rK   r   rW   r.   rM   )rN   rO   rP   astype)rQ   r'   r#   r$   rt   r6   rR   rB   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~   r6   rB   r]   r\   r%   r%   r&   test_where_array_like   s   z0TestDataFrameIndexingWhere.test_where_array_likerB   r.   r   r   r   rx   rz   )r   r   rx   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 )Nrz   r   (Boolean array expected for the conditionrK   r   rN   rO   rm   r;   rQ   rB   r6   rR   r%   r%   r&   test_where_invalid_input_single   s
   "z:TestDataFrameIndexingWhere.test_where_invalid_input_singlerw   )rw      	   ry   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   ry   r   rK   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   r6   rB   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 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 )Nrl   r   r   TrK   )FTFT)r   rN   rO   rm   r;   r   rj   r   r=   r?   array)rQ   rR   r6   rB   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 sFJ t|| d S )N)r          @      @      @r   r   r   r   ry   rW   rT   r   r   r   Trq   )r   r   rj   r;   r=   r?   rp   )rQ   r6   r]   r\   rs   r%   r%   r&   test_where_bug:  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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_dtyper6   r]   r\   rs   r%   r%   r&   test_where_bug_mixedK  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 sw   Y  t	|| d S )Nr.   r   r   rw   r   r   )r   r.   r   r   r   <Downcasting behavior in Series and DataFrame methods 'where'rK   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_transposition`  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 )NZ20130102r   periodsZ20130104r   r   i  r.   r   zF'>' not supported between instances of 'float' and 'datetime.datetime'rK   r   r   r   r   )r   r   r   r   r    r!   r   rN   rO   rP   rZ   rp   rj   locr=   r?   )rQ   r6   ZstamprR   r\   r]   r%   r%   r&   test_where_datetimey  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   r6   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   r@   objectrA   r;   r=   r?   )rQ   r6   rB   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 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   rw   r   r.   r   )r   r   r   r    r!   rj   rZ   r5   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>  s    z=TestDataFrameIndexingWhere.test_where_align.<locals>.<lambda>r   r:   rowsr.   r   )rb   meanr;   pdnotnar=   r?   applyr   r:   r   )rQ   r   r6   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]   r6   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   r.   rW   rT   r:   r   Tr   rr   r   )
r   r   r   r    r!   r   r;   r=   r?   rp   rQ   r6   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 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 sw   Y  |d u sJ t|| d S )Nr.   r   r   rw   rY   rT   Fr   rW   r:   r   incompatible dtyperK   Tr   r   r   )r   r   r   rj   r;   r=   r?   rp   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 sJ 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 sJ t|| | }|j||	ddd}|d u sJ t|| d S )Nr   )r   r   r   r   )sizerY   rT   Tr.   )Zignore_indexr   F)r   r:   r9   r   r   r   r   r   r:   r   r   r   rK   rq   r   )r   concatr   r   r   r    r!   Zintegersr   r:   r   r;   ru   r=   r?   rp   Zdroprj   r   r   r   )
rQ   r6   rn   s1s2r\   r]   rs   Zd1Z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   )rx   r   r   c                 S      | dkS )Nrw   r%   r   r%   r%   r&   r   l      z@TestDataFrameIndexingWhere.test_where_callable.<locals>.<lambda>c                 S      | d S Nr.   r%   r   r%   r%   r&   r   l  r   )r   r   rw   )r   r   r   rw   r.   c                 S   s   | d dkj S )Nr   r   )r<   r   r%   r%   r&   r   r  s    c                 S   s   dS )Nc   r%   r   r%   r%   r&   r   r  s    )r   r   r   )rw   r   r   )r   r   r   r   r   r   c                 S   r   )Nr   r%   r   r%   r%   r&   r   x  r   c                 S   r   )Nr   r%   r   r%   r%   r&   r   x  r   )         )         )r   r      r   r   )r   r;   r=   r?   )rQ   r6   r\   rH   r%   r%   r&   test_where_callablei  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   Z2015010420150105TTF)r   r   r   )r   r   r   r;   r=   assert_equal)rQ   Ztz_naive_fixtureframe_or_seriesZobj1obj2rn   rH   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   r6   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   datar6   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   r9   )r.   rx   r   )r   r   r   NAr   r   Zonesshapeboolr;   rj   r=   r?   )rQ   r6   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   r6   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   rK   %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   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 sw   Y  td|j|jd}t || t jtdd |j| ddd W d    n1 sw   Y  t ||t d S )Nzis deprecatedrK   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   r6   rn   r   Zmask2res2Zres3Zres4rR   Zres5r]   r%   r%   r&   test_where_datetimelike_noop  s4    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&   r8   0   s|    


2


&



#	! M

	r8   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   r6   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_noop3  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_dtypeD  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_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.   r   r   )
r   r
   r   r  r   rj   r;   notnullr=   r?   )r]   r\   r%   r%   r&   test_where_none_nan_coercem  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_dtypesy  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?   )r6   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}|r)d	}nd
}|rt	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 sw   Y  d S |t||}|||}	t|	| |t||}|||}	t|	| tjtdd |j||dd W d    n1 sw   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'rK   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  s@   
"r  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   rT   r   r  z1Invalid value '.*' for dtype (U?Int|Float)\d{1,2}rK   )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   r6   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 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   r.   )daysr   rK   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"   
r  c                 C   s~   |  ||}t|| | | |}t|| |  } | j| |dd | s7| }|d t|d< t| | d S )NTrq   r   )r;   r=   r?   rn   rp   rA   ru   r   )r6   rn   rd   r]   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 sw   Y  d
|d d < |}t|||| d S )Nr  r   r   r   r   )r   r   r   r   r   Tr.   r   r   r   rK   )r.   r   )r   r   rT   )r   _datar   r   r   Zasarrayr   rp   r=   r   r   r  r   r   )ZdtiZdtard   r6   rn   r]   r%   r%   r&   test_where_dt64_2d  s4   &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   r   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   .  s    z;test_where_producing_ea_cond_for_np_dtype.<locals>.<lambda>r   )	r   r   r   r   r;   r   rj   r=   r?   )r6   r\   r]   r%   r%   r&   )test_where_producing_ea_cond_for_np_dtype+  s   ""r"  replacementgMbP?snakei  r   rw   c                 C   sr   t g dtjdd gg}|r| dvr|jtjjdd |t	
|| }t g d| d| gg}t|| d S )N)r   g(,*0Enineg?)Nr$  z'Can't set non-string into string column)reason)r   r   rj   nodeZ
add_markerrN   r   Zxfailr;   r   r  r=   r?   )r#  Zusing_infer_stringr"   r6   r\   r]   r%   r%   r&   test_where_int_overflow5  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?   )r6   rB   r]   r%   r%   r&   test_where_inplace_no_otherE  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'   r7   r8   r  r  r	  r
  r  r  r  r   r  r  r  r  r  r  r!  r"  r(  r)  r%   r%   r%   r&   <module>   sN    (


     z

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