o
    d                     @   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   sR   | 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randn)requestfloat_string_frameZmixed_float_frameZmixed_int_frame r!   Z/app/.heroku/python/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!   r-   r"   	_safe_add$   s   r3   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&dBdC Z'e	j
dDi dEdFigdGdH Z(dIdJ Z)dKdL Z*dMdN Z+dOdP Z,e	j
dQg dRdSdT Z-dFS )U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)r3   wherevaluesr0   r   r   r6   tmassert_series_equalassert_frame_equaldtypesall)	r2   condcheck_dtypesother1rsZrs2kvexpr!   r!   r"   
_check_get0   s   $z=TestDataFrameIndexingWhere.test_where_get.<locals>._check_get6'>' not supported between instances of 'str' and 'int'matchr   Tpytestraises	TypeError)selfr#   r    rE   r2   msgr>   r!   r!   r"   test_where_get/   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>J   s    zCTestDataFrameIndexingWhere.test_where_upcasting.<locals>.<dictcomp>)float32float64int32int64r   r*   rS   rT   rU   rV   r5   )r   ilocr<   r   r   r%   r9   r:   rN   r2   resultexpectedr!   r!   r"   test_where_upcastingG   s    z/TestDataFrameIndexingWhere.test_where_upcastingc                 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 )NFr5   )r6   name)Zcheck_dtype)r7   	enumerater   r8   reindexr6   fillnar   
isinstancer   Zndarrayr   r=   r9   r:   r<   )r2   r>   otherr?   rA   irB   rY   dr,   o
new_valuesrZ   r!   r!   r"   _check_alignc   s"   

zETestDataFrameIndexingWhere.test_where_alignment.<locals>._check_alignrF   rG   r   r*   c                 s   s     | ]}t |jtj V  qd S )N)r$   r&   r   r'   )r+   r(   r!   r!   r"   r.      s    zBTestDataFrameIndexingWhere.test_where_alignment.<locals>.<genexpr>)r?   rI   )	rK   rL   rM   r3   r8   r=   r<   r   nan)rN   r#   r    rf   r2   rO   r>   r?   r!   r!   r"   test_where_alignmenta   s"   


z/TestDataFrameIndexingWhere.test_where_alignmentc                 C   sN  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 s8w   Y  |j	d dd d f j}t
|}d
}tjt|d	 ||| W d    n1 sgw   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 ndarrayrG   ,Array conditional must be same shape as selfT)r   r   r   r   r8   rK   rL   
ValueErrorr7   rW   r3   mask)rN   r2   r>   Zerr1rO   Zerr2r@   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 |dk}||| |dk}||| |dkdd  }||| d S )	NTc           	      S   s   |   }|| d}|| }|j|tjdd}|d u s!J t|| |rN| j	
 D ]!\}}t|jtjrD||  sDtd}|| j|ksMJ q.d S d S )NTinplacerT   )copyZreindex_liker_   rl   r7   r   rg   r9   r;   r<   r0   r$   r&   r'   r=   r%   )	r2   r>   r?   ZdfiZecondrZ   return_valuerB   rC   r!   r!   r"   
_check_set   s   
z=TestDataFrameIndexingWhere.test_where_set.<locals>._check_setrF   rG   r   r*   rI   rJ   )rN   r#   r    rr   r2   rO   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brw   r*   )r   ranger7   r^   r6   r9   r;   rX   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 )Nrw   r*   ri   r   FTri   r   rx   )r   r   rg   r7   r9   r;   )rN   r{   r2   r>   rZ   rY   r!   r!   r"   test_where_array_like   s   z0TestDataFrameIndexingWhere.test_where_array_liker>   r*   r   ri   r   ru   rw   )ri   r   ru   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 )Nrw   r|   (Boolean array expected for the conditionrG   r   rK   rL   rk   r7   rN   r>   r2   rO   r!   r!   r"   test_where_invalid_input_single   s
   "z:TestDataFrameIndexingWhere.test_where_invalid_input_singlert   )rt      	   rv   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|   )ri   ri   ri   rv   r   rG   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|   rt   r      )TFTFFT      ?r   r   )rw   rx   r,   r6   r   )r   r7   r   rg   r9   r;   r   r6   )rN   r2   r>   rY   rZ   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 )Nrj   r|   r   TrG   )FTFT)r   rK   rL   rk   r7   r   rg   r   r9   r;   array)rN   rO   r2   r>   rZ   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   rv   rT   rQ   r   r   ri   Trn   )r   r   rg   r7   r9   r;   rp   )rN   r2   rZ   rY   rq   r!   r!   r"   test_where_bug1  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 sNJ t|| d S )Nr*   ri   r   rt   rQ   r   rT   rv   r   r   ri   Trn   )r   r   r   rg   r7   r9   r;   rp   )rN   Zany_signed_int_numpy_dtyper2   rZ   rY   rq   r!   r!   r"   test_where_bug_mixedB  s    z/TestDataFrameIndexingWhere.test_where_bug_mixedc                 C   s   t ddgddgddgd}t tjdgd	tjgtjtjgd}| ||kB }| }||| < |||}t|| t ddgdd
gd}t tjdgdtjgd}| ||kB }| }||| < |||}t|| d S )Nr*   ri   r   rt   r   r   )r   r*   ri   r   r   r   r   r*   )r   r   rg   r   rp   r7   r9   r;   )rN   rw   rx   Zdo_not_replacerZ   rY   r!   r!   r"   test_where_bug_transpositionX  s   $

z7TestDataFrameIndexingWhere.test_where_bug_transpositionc                 C   s   t tdddtdddtjdd}tddd}d	}tjt|d
 ||k W d    n1 s2w   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'rG   r   r   r   )r   r   r   r   r   r   rK   rL   rM   rW   rp   rg   locr9   r;   )rN   r2   ZstamprO   rY   rZ   r!   r!   r"   test_where_datetimen  s    



z.TestDataFrameIndexingWhere.test_where_datetimec                 C   s   t dttdit}d ||dk< t dtdddddd	d
dtjtjg
i}t|| t dtjddtjdtjdg}d}t	j
t|d |jt| d dd W d    d S 1 s^w   Y  d S )NZseries
   ru   r   r*   ri   r   rt   r   r   ZTestr   zboolean setting on mixed-typerG   Trn   )r   r   ry   astypefloatr   rg   r9   r;   rK   rL   rM   r7   r   )rN   r2   rZ   rO   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 )Nrw   r   )r   r<   objectr=   r7   r9   r;   )rN   r2   r>   rY   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   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   rt   r   r*   r   ri   )r   r   r   r   rg   rW   r1   r!   r!   r"   create  s
   z;TestDataFrameIndexingWhere.test_where_align.<locals>.creater   axisTro   r   r   c                 S   s   |  | dk|S Nr   )r7   )xyr!   r!   r"   <lambda>  s    z=TestDataFrameIndexingWhere.test_where_align.<locals>.<lambda>r   r6   rowsr*   r   )r_   meanr7   pdnotnar9   r;   applyr   r6   r   )rN   r   r2   rZ   rY   rq   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      ?      ?ri   y      @      ?rw   rx   r   y      @      ?r   )r   r   rg   absr9   r;   )rN   rZ   r2   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 sFJ t|| t ddgddggdd}|j||dd}t|| | }|j||dd	d
}|d u syJ t|| d S )Nri   Fr   r*   rT   rQ   r6   r   Tr   ro   r   )	r   r   r   r   r   r7   r9   r;   rp   rN   r2   rl   serrZ   rY   rq   r!   r!   r"   test_where_axis  s"   z*TestDataFrameIndexingWhere.test_where_axisc                 C   s<  t ddgddggdd}t ddgddgg}tdtjg}t ddgtjtjggd	d}|j||d
d}t|| | }|j||d
dd}|d u sLJ t|| t dtjgdtjgg}|j||dd}t|| t tjddgddtjtjtjgd	dd}| }|j||ddd}|d u sJ t|| d S )Nr*   ri   r   rt   rV   rQ   Fr   rT   r6   r   Tr   r   r   )	r   r   r   rg   r7   r9   r;   rp   r   r   r!   r!   r"   test_where_axis_with_upcast  s,   z6TestDataFrameIndexingWhere.test_where_axis_with_upcastc           
      C   s  t jttjddttjjddddddgdd	d
}td|j|jd}t	d	|jd}t	d|jd}|j
||dd}td|j|jd}|d d|d< |d d|d< t|| | }|j
||ddd}|d u soJ 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|| | }|j
||dd}|d u sJ 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 saJ t|| | }|j
||	ddd}|d u s{J t|| d S )Nr   ri   r   )r   ri   )sizerV   rQ   Tr*   )Zignore_indexr   F)r   r6   r5   r   r   r   r   r   r6   r   r   rn   r   )r   concatr   r   r   r   randintr   r6   r   r7   r   r9   r;   rp   Zdroprg   r   )
rN   r2   rl   s1s2rY   rZ   rq   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   )ru   r   r   c                 S      | dkS )Nrt   r!   r   r!   r!   r"   r   M      z@TestDataFrameIndexingWhere.test_where_callable.<locals>.<lambda>c                 S      | d S Nr*   r!   r   r!   r!   r"   r   M  r   )ri   r   rt   )r   r   r   rt   r*   c                 S   s   | d dkj S )Nri   r   )r8   r   r!   r!   r"   r   S  s    c                 S   s   dS )Nc   r!   r   r!   r!   r"   r   S  s    )r   ri   r   )rt   r   r   )r   r   r   ri   r   r   c                 S   r   )Nr   r!   r   r!   r!   r"   r   Y  r   c                 S   r   )Nr   r!   r   r!   r!   r"   r   Y  r   )         )         )r   r      r   r   )r   r7   r9   r;   )rN   r2   rY   rD   r!   r!   r"   test_where_callableJ  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   r7   r9   assert_equal)rN   Ztz_naive_fixtureframe_or_seriesZobj1obj2rl   rD   rY   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   ri   r   ABCr   TFFr   r   r   )
r   r   arangereshapelistr   r7   rg   r9   r;   )rN   r2   rl   rY   rZ   r!   r!   r"   test_df_where_change_dtypeu  s   
 z5TestDataFrameIndexingWhere.test_df_where_change_dtypekwargsra   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   rQ   ri   r   r   r   r   r   categoryr   )
categoriesr*   rt   r   r   r   )r\   )r   r   rV   r   r   r   r   r   r   r   r   r7   r   ZCategoricalrg   r9   r;   r   r:   )
rN   r   datar2   rl   rY   r   r   r   rZ   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*   rw   rx   r   r   r   r   )	r   r   r7   rp   r   rg   r   r9   r   rX   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   ru   r   rQ   Fr*   r   r   r   rt   r   ri   r   r   r5   )r*   ru   r   )r   r   r   NAr   r   Zonesshapeboolr7   r   r   r9   r;   )rN   r2   arrr   rl   rY   rZ   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   Intervalr7   r   r9   r;   r:   )rN   r2   resr   r!   r!   r"   test_where_interval_noop  s   z3TestDataFrameIndexingWhere.test_where_interval_noopc                 C   sr   |t ddgd }|ddg}||  |}t||tj |j	| |dd t||t
 d S )Nr   ri   r   r   Trn   )r   r   r7   r   r9   r   r   r   rV   rl   r   )rN   r   objra   r   r!   r!   r"   #test_where_interval_fullop_downcast  s   z>TestDataFrameIndexingWhere.test_where_interval_fullop_downcastr%   )ztimedelta64[ns]zdatetime64[ns]zdatetime64[ns, Asia/Tokyo]z	Period[D]c                 C   s   t tdd tjd|}| }tg d}|| d}t	|| |
dd}|| d}t|| ||d}t	|| ||d}	t|	| ||d}
td|j|jd	}t|
| |j| dd
d t||t d S )Nr   i ʚ;rQ   FFFZfoor   r*   rt   r   Trn   )r   r   r   rV   viewZto_framer   r7   r9   r:   r   r;   rl   r   r6   r   r   r   )rN   r%   r   r2   rl   r   Zmask2Zres2Zres3Zres4Zres5rZ   r!   r!   r"   test_where_datetimelike_noop  s"   z7TestDataFrameIndexingWhere.test_where_datetimelike_noop).__name__
__module____qualname__rP   r[   rh   rm   rs   rz   rK   markparametrizer   tupler   r   r}   r   r   r
   r   NaTr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r!   r!   r!   r"   r4   .   sv    2$



	!H

	r4   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   ri   rQ   Tr   i   r   )r   r   r   Zint16r   r   Zzerosr   r   r7   r   rU   r9   r;   )r   r2   rl   r   rZ   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   ri   )rp   r   r7   r9   r   )r   rY   rZ   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)rw   rx   r,   rc   )Zid1id2id3Zid4)r6   r%   rx   r,   r   r   )FTTFTrn   )r	   r   r7   r   r   r9   r   rl   )r   r   Zfiltered_objZ
filter_serrY   rZ   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 )NTrt   F)TFTF)ZAAAZBBBZCCCrQ   )r   r7   r   r   rg   r   r9   r;   )Zdf_maskrY   rZ   r!   r!   r"   test_where_bool_comparison3  s   r  c                  C   sF   t tdtjtdgddtjgd} | |  d }t	||  d S )NZ20130101Z20130103r*   ri   r   )
r   r
   r   r   r   rg   r7   notnullr9   r;   )rZ   rY   r!   r!   r"   test_where_none_nan_coerceC  s   
r  c                  C   s   t dtjggtddgd} | j\}}t ddgg||d}| t|}| d|}| j|jj}| |}t	
|d|d t	
|d|d t	
|d|d d S )Nr   r   r   T)r   r   r6   Zf8)r   r   rg   r   Zaxesr   r   r7   Tr9   r;   )rY   r6   r   rl   rw   rx   r,   rc   r!   r!   r"   &test_where_duplicate_axes_mixed_dtypesO  s   

r  c                  C   sB   t ddgdtjgd} |  }| t| d }t|| d S )Nr   r   r   rv   )	r   r   rg   rp   r7   r   r  r9   r;   )r2   rZ   rY   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|	| |j||dd 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'rG   Trn   )r   Zperiod_ranger   r   Zto_numpyr   r   ndimr  rK   rL   rM   r7   rl   r   r9   r   )
r   r  r   idxr   Ztdnatrl   rO   rZ   rY   r!   r!   r"   test_where_period_invalid_nah  s8   
"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|   rQ   r   r  z1Invalid value '.*' for dtype (U?Int|Float)\d{1,2}rG   )r   r   r   r  r  r9   ZNP_NAT_OBJECTSr   rK   rL   rM   r7   rl   )r   Zany_numeric_ea_dtyper   r   rl   rO   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 )Nrw   Trn   )r   r7   r   r  rp   r9   r   )r   r2   Zdf_copyr!   r!   r"   test_where_inplace_casting  s   r  c                  C   sT   t g d} tg d}tjdd}| ||}t |||gdd}t|| d S )Nr|   r   r*   )daysr  rQ   )r   r   r   r   Z	Timedeltar7   r9   r:   )r   rl   tdr   rZ   r!   r!   r"   test_where_downcast_to_td64  s   r  c                 C   s~   |  ||}t|| | | |}t|| |  } | j| |dd | s7| }|d t|d< t| | d S )NTrn   r   )r7   r9   r;   rl   rp   r=   r   r   )r2   rl   ra   rZ   r   r!   r!   r"   _check_where_equivalences  s   r  c                  C   s   t ddd} | jdd}||d  }t|ddgd	}t|  }d
|d d df< t|d d df |d d df d}t|||| d
|d< ttj	|d |d |d gt
d|d d df d}t|||| d
|d d < |}t|||| d S )Nr  r   r   r   ri   )r   r   r   r   r   Tr*   r   r   )r*   r   )ri   r   rQ   )r   _datar   r   r   Zasarrayr   rp   r  r   r   )ZdtiZdtara   r2   rl   rZ   r!   r!   r"   test_where_dt64_2d  s$   &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*   ri   ZInt64rQ   r|   rv   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   r7   r   rg   r9   r;   )r2   rY   rZ   r!   r!   r"   )test_where_producing_ea_cond_for_np_dtype  s   ""r  replacementgMbP?snakei  r   rt   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   rg   r7   r   r  r9   r;   )r  r2   rY   rZ   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*   ri   r   r   rv   TFrn   )r   r7   r   rg   r9   r;   )r2   r>   rZ   r!   r!   r"   test_where_inplace_no_other  s
   r  )-r   Z
hypothesisr   numpyr   rK   Zpandas.core.dtypes.commonr   Zpandasr   r   r   r   r   r	   r
   r   r   Zpandas._testingZ_testingr9   Zpandas._testing._hypothesisr   Zfixturer#   r3   r4   r   r   r   r  r  r  r  r   r   r  r  r  r  r  r  r  r  r  r!   r!   r!   r"   <module>   sN    (


     R

-


	