U
    Mf{                     @   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dd	d
dg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   sT   | j dkr&ttjdddddgdS | j dkr4|S | j d	krB|S | j d
krP|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!   J/tmp/pip-unpacked-wheel-eb6vo0j3/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>,   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dddg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dddgdddg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
dMdNdOdPdQgdRdS Z+dDS )TTestDataFrameIndexingWherec              	   C   sV   ddd}|}||kr@d}t jt|d |dk W 5 Q R X 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 std S )NindexF)Zcheck_names)r3   wherevaluesr0   r   r   r6   tmassert_series_equalassert_frame_equaldtypesallAssertionError)	r2   condcheck_dtypesother1rsZrs2kvexpr!   r!   r"   
_check_get1   s    $z=TestDataFrameIndexingWhere.test_where_get.<locals>._check_get6'>' not supported between instances of 'str' and 'int'matchr   )Tpytestraises	TypeError)selfr#   r   rF   r2   msgr?   r!   r!   r"   test_where_get0   s    
z)TestDataFrameIndexingWhere.test_where_getc                 C   sn   t dd dD }d|jdd d f< |j}ttdtdtdtd	gdddd	g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*   rS   rT   rU   rV   r5   )r   ilocr<   r   r   r%   r9   r:   rN   r2   resultexpectedr!   r!   r"   test_where_upcastingH   s     
z/TestDataFrameIndexingWhere.test_where_upcastingc           
   	   C   s   ddd}|}||kr@d}t jt|d |dk W 5 Q R X d S |dkdd  }|||t| |dk}d }||krxt}tj|dd |||t|j W 5 Q R X |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
rt|d d |f |jdj}
n
|| j}
|	 r|nt	 |	||
}t||j|d}tj||dd q|rt|t	j
s|j| jk std S )NFr5   )r6   name)Zcheck_dtype)r7   	enumerater   r8   reindexr6   fillnar   
isinstancer   Zndarrayr   r=   r9   r:   r<   r>   )r2   r?   otherr@   rB   irC   rY   dr,   oZ
new_valuesrZ   r!   r!   r"   _check_alignd   s    

zETestDataFrameIndexingWhere.test_where_alignment.<locals>._check_alignrG   rH   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.      s     zBTestDataFrameIndexingWhere.test_where_alignment.<locals>.<genexpr>)r@   )T)rK   rL   rM   r3   FutureWarningr9   assert_produces_warningr8   r=   r<   r   nan)
rN   r#   r   r    re   r2   rO   r?   warnr@   r!   r!   r"   test_where_alignmentb   s$    
z/TestDataFrameIndexingWhere.test_where_alignmentc              	   C   s   t tjdddddgd}|dk}|d jdd	d d f }d
}tjt|d ||| W 5 Q R X |j	d d	d d f j}t
|}d}tjt|d ||| W 5 Q R X tjt|d |d W 5 Q R X tjt|d |d W 5 Q R X d S )Nr   r   r   r   r   r   r   r*      z4other must be the same shape as self when an ndarrayrH   ,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err2rA   r!   r!   r"   test_where_invalid   s    z-TestDataFrameIndexingWhere.test_where_invalidc              	   C   s   ddd}|}||kr@d}t jt|d |dk W 5 Q R X d S |dk}||| |dk}||| |dkdd  }||| d S )	NTc           	      S   s   |   }|| d}|| }|j|tjdd}|d ksBtt	|| |r| j
 D ]>\}}t|jtjr||  std}|| j|ks\tq\d S )NTinplacerT   )copyZreindex_liker_   ro   r7   r   ri   r>   r9   r;   r<   r0   r$   r&   r'   r=   r%   )	r2   r?   r@   ZdfiZecondrZ   return_valuerC   rD   r!   r!   r"   
_check_set   s    
z=TestDataFrameIndexingWhere.test_where_set.<locals>._check_setrG   rH   r   r*   )TrJ   )rN   r#   r   ru   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brz   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dddg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*   rl   r   FTr{   )r   r   ri   r7   r9   r;   )rN   r~   r2   r?   rZ   rY   r!   r!   r"   test_where_array_like   s    z0TestDataFrameIndexingWhere.test_where_array_liker?   r*   r   rl   r   rx   rz   TrueFalsez
2017-01-01z
2017-01-02c              	   C   s>   t ddddgi}d}tjt|d || W 5 Q R X d S )Nrz   r*   rl   r   (Boolean array expected for the conditionrH   r   rK   rL   rn   r7   rN   r?   r2   rO   r!   r!   r"   test_where_invalid_input_single   s    z:TestDataFrameIndexingWhere.test_where_invalid_input_singlerw      	   ry   z
2017-01-03c              	   C   sF   t dddgdddgd}d}tjt|d || W 5 Q R X d S )Nr*   rl   r   ry   r   rH   r   r   r!   r!   r"   !test_where_invalid_input_multiple   s    z<TestDataFrameIndexingWhere.test_where_invalid_input_multiplec                 C   s   t dddgdddgg}t dddgdddgg}||}t d	tjdgtjtjdgg}t|| d
ddg|_||}t tj|j|jd}t|| d S )Nr*   rl   r   rw   r      TF      ?rz   r{   r,   r6   r   )r   r7   r   ri   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 dddgdddgg}dg}tjt|d	 || W 5 Q R X t dddgtjtjtjgg}|t|}t	|| t
d
dd
dg}tjt|d	 || W 5 Q R X t tjtjtjgdddgg}|t|}t	|| d S )Nrm   r*   rl   r   rw   r   r   TrH   F)r   rK   rL   rn   r7   r   ri   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 ddddgddddg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 kstt|| d S )Nr          @      @      @ry   rT   rQ   rl   Trq   )r   r   ri   r7   r9   r;   rs   r>   )rN   r2   rZ   rY   rt   r!   r!   r"   test_where_bug6  s      z)TestDataFrameIndexingWhere.test_where_bugc                 C   s   t tjddddg|dtjdddd	g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 kstt|| d S )Nr*   rl   r   rw   rQ   r   r   r   r   rT   ry   Trq   )	r   r   r   ri   r7   r9   r;   rs   r>   )rN   Zany_signed_int_numpy_dtyper2   rZ   rY   rt   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*   rl   r   rw   r   r   )r   r*   rl   r   r   r   r   r*   )r   r   ri   r   rs   r7   r9   r;   )rN   rz   r{   Zdo_not_replacerZ   rY   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 5 Q R X ||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20130104r   r   r   i  r*   r   zF'>' not supported between instances of 'float' and 'datetime.datetime'rH   r   r   r   )r   r   r   r   r   r   rK   rL   rM   rW   rs   ri   locr9   r;   )rN   r2   ZstamprO   rY   rZ   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 5 Q R X d S )NZseries
   rx   r   r*   rl   r   rw   r   r   ZTestr   zboolean setting on mixed-typerH   Trq   )r   r   r|   astypefloatr   ri   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"t||}t|| d S )Nrz   r   )r   r<   objectr=   r>   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 ksjt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   rw   r   r*   r   rl   )r   r   r   r   ri   rW   r1   r!   r!   r"   create  s
    z;TestDataFrameIndexingWhere.test_where_align.<locals>.creater   axisTrr   r   r   c                 S   s   |  | dk|S Nr   )r7   )xyr!   r!   r"   <lambda>      z=TestDataFrameIndexingWhere.test_where_align.<locals>.<lambda>)r   r6   Zrowsr*   r   )r_   Zmeanr7   pdnotnar9   r;   r>   applyr   r6   r   )rN   r   r2   rZ   rY   rt   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      ?      ?rl   y      @      ?rz   r{   r   y      @      ?r   )r   r   ri   absr9   r;   )rN   rZ   r2   r!   r!   r"   test_where_complex  s    z-TestDataFrameIndexingWhere.test_where_complexc           	   	   C   sf  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 kst	t|| t ddgddggdd}|j||dd}t|| | }|j||dd	d
}|d kst	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 kst	t|| |rtnd }t dtj
gdtj
gg}tj|dd |j||dd}W 5 Q R X t|| t tjddgddtjtj
tj
gddd}| }|j||dd	d
}|d ksVt	t|| d S )Nrl   Fr   r*   rT   rQ   r6   r   Tr   rr   r   r   rw   rV   rf   rH   r   )r   r   r   r   r   r7   r9   r;   rs   r>   ri   rg   rh   r   )	rN   using_array_managerr2   ro   r(   rZ   rY   rt   rj   r!   r!   r"   test_where_axis  sR    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 kstt|| |j
||dd}td|j|jd}|d d|d< |d d|d< t|| | }|j
||ddd}|d ksdtt|| | jd	dd}| }tj|jd	d d f< |
||}t|| |j
||dd}t|| | }|j
||dd}|d kstt|| | }|j
||ddd}|d ks,tt|| | jd	d	d}	| }tj|jd d d	f< |
||	}t|| |j
||	dd}t|| | }|j
||	dd}|d kstt|| | }|j
||	ddd}|d kstt|| d S )Nr   rl   r   )r   rl   )sizerV   rQ   Tr*   )Zignore_indexr   F)r   r6   r5   r   r   r   r   r   r6   r   rq   r   )r   concatr   r   r   r   randintr   r6   r   r7   r   r9   r;   rs   r>   Zdropri   r   )
rN   r2   ro   s1s2rY   rZ   rt   d1Zd2r!   r!   r"   test_where_axis_multiple_dtypes  st    z:TestDataFrameIndexingWhere.test_where_axis_multiple_dtypesc                 C   sH  t dddgdddgddd	gg}|d
d dd }t dddgdddgddd	gg}t|| t|||dk|d  |dd dd }t dddgdddgdddgg}t|| t|||d dkd |d dd dd }t dddgdddgd	ddgg}t|| t||d |d dk|d d  d S )Nr*   rl   r   rw   r   r   rx   r   r   c                 S   s   | dkS )Nrw   r!   r   r!   r!   r"   r   R  r   z@TestDataFrameIndexingWhere.test_where_callable.<locals>.<lambda>c                 S   s   | d S )Nr*   r!   r   r!   r!   r"   r   R  r   c                 S   s   | d dkj S )Nrl   r   )r8   r   r!   r!   r"   r   X  r   c                 S   s   dS )Nc   r!   r   r!   r!   r"   r   X  r   r   r   c                 S   s   | dkS )Nr   r!   r   r!   r!   r"   r   ^  r   c                 S   s   | d S )Nr   r!   r   r!   r!   r"   r   ^  r                     r      )r   r7   r9   r;   )rN   r2   rY   rE   r!   r!   r"   test_where_callableO  s        z.TestDataFrameIndexingWhere.test_where_callablec                 C   s   t tdddg|ddgd}t tdddg|ddgd}t d	d	d
gdgd}t tdddg|ddgd}|tkr|d }|d }|d }|d }|||}t|| d S )NZ20150101Z20150102Z20150103)tzdater   Z20150104Z20150105TF)r   r   r   r7   r9   assert_equal)rN   Ztz_naive_fixtureframe_or_seriesZobj1obj2ro   rE   rY   r!   r!   r"   test_where_tz_valuesc  s(    z/TestDataFrameIndexingWhere.test_where_tz_valuesc                 C   sz   t tdddtdd}tdddgdddgg}||}t dtjtjgtjtjd	ggtdd}t	|| d S )
Nr   rl   r   ABCr   TFr   r   )
r   r   arangereshapelistr   r7   ri   r9   r;   )rN   r2   ro   rY   rZ   r!   r!   r"   test_df_where_change_dtypez  s    
 z5TestDataFrameIndexingWhere.test_df_where_change_dtypekwargsra   Nc           	      C   s  t tdddtdd}tdddgdddgg}|jd|_|jd|_|j	d|_	|j
|f|}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|}t|dd}t|| d S )Nr   rl   r   r   r   TFcategoryr   )
categoriesr*   rw   r   r   r   )r\   )r   r   r   r   r   r   r   r   r   r   r7   r   ZCategoricalri   r9   r;   r   r:   )	rN   r   r2   ro   rY   r   r   r   rZ   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*   rz   r{   )datar   r   )	r   r   r7   rs   r   ri   r   r9   r   rX   r!   r!   r"    test_where_categorical_filtering  s    z;TestDataFrameIndexingWhere.test_where_categorical_filteringc                 C   s   t dddgdddg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 dddgdtjdgd}|d 
t|d< |j	||dd}t|| d S )Nr*   rl   r   rw   r   r   r   r   rx   r   rQ   Fr   r   r   r   r5   )r   r   r   NAr   r   Zonesshapeboolr7   r   r   r9   r;   )rN   r2   arrserro   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   ZIntervalr7   r   r9   r;   r:   )rN   r2   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dddg}|| d}t	|| |
dd}|| d}t|| ||d}t	|| ||d}	t|	| d S )Nr   i ʚ;rQ   FZfoor   r*   )r   r   r   rV   viewZto_framer   r7   r9   r:   r   r;   ro   )
rN   r%   r   r2   ro   r   Zmask2Zres2Zres3Zres4r!   r!   r"   test_where_datetimelike_noop  s    z7TestDataFrameIndexingWhere.test_where_datetimelike_noop),__name__
__module____qualname__rP   r[   rk   rp   rv   r}   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"   r4   /   sx   6$



	!7G

	r4   c              	   C   sP   t tjdd}t|| }|dk}tt |j|ddd W 5 Q R X d S )Nrw   r   r   r   F)Ztry_cast)	r   r   r   r   r9   get_objrh   rg   r7   )r   objro   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 5 Q R X t|d d df t jd	gd t jdd
}t
|| d S )Nr   r   rl   rQ   Tr   rf   rH   i   r   )r   r   r   Zint16r   r   zerosr   r   rg   r9   rh   r7   r   rU   r;   )r   r   r2   ro   rO   rj   r   rZ   r!   r!   r"   %test_where_int_downcasting_deprecated  s    ,r   c                 C   s~   | ddddg}|  }| tkr(|d n|}||dk }|d9 }t|| ||dkddddg}|d9 }t|| d S )Nr*   rl   r   rw   r   r   )rs   r   r7   r9   r   )r   rY   rZ   colZ	where_resr!   r!   r"   test_where_copies_with_noop  s    r   c                 C   s   | ddddgddddgt  d	}| ddgddgt  d	}td
ddd
g}|||}| tjddtjgddddgt  d	}t|| d S )Nrz   r{   r,   rc   Zid1Zid2Zid3Zid4)r6   r%   FT)r	   r   r7   r   r   r9   r   )r   r   Zfiltered_objZ
filter_serrY   rZ   r!   r!   r"   test_where_string_dtype  s$    
 
   
r   c                  C   sv   t dgd dgd ddddg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)ZAAAZBBBZCCCrQ   )r   r7   r   r   ri   r   r9   r;   )Zdf_maskrY   rZ   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*   rl   r   )
r   r
   r   r   r   ri   r7   notnullr9   r;   )rZ   rY   r!   r!   r"   test_where_none_nan_coerce6  s    
r   c              	   C   sh   | t d}d| j d}tjt|d ||dkdd}W 5 Q R X | dddd	d
g}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-onlyrH   r*   r   Frl   r   rw   )r|   r   r9   rh   rg   r7   r   )r   r   rO   rY   rZ   r!   r!   r"   "test_where_non_keyword_deprecationB  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   ri   rs   r7   r   r   r9   r;   )r2   rZ   rY   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dddg|jd	j}|rrd
}t	rvt
jjdd}|j| nd}t
jt|d ||| W 5 Q R X t
jt|d ||| W 5 Q R X t
jt|d |j||dd W 5 Q R X d S )Nz
2016-01-01r   D)r   freqr   zm8[ns]TFZndminzUCannot setitem on a Categorical with a new category \(NaT\), set the categories firstzWhen 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'rH   rq   )r   Zperiod_ranger   r   Zto_numpyr   r   ndimTr   rK   r   ZxfailnodeZ
add_markerrL   rM   r7   ro   )	r   r   r   idxr   Ztdnatro   rO   r   r!   r!   r"   test_where_period_invalid_naZ  s*    
r   c              
   C   s   t jdddg|d}| |}tjdddg|jdj}dd	d
dddg}tjt jg D ]P}t	j
t|d ||| W 5 Q R X t	j
t|d ||| W 5 Q R X qVd S )Nr*   rl   r   rQ   TFr   |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 NArH   )r   r   r   r   r   joinr9   ZNP_NAT_OBJECTSr   rK   rL   rM   r7   ro   )r   Zany_numeric_ea_dtyper   r   ro   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 )Nrz   Trq   )r   r7   r   r   rs   r9   r   )r   r2   Zdf_copyr!   r!   r"   test_where_inplace_casting  s    r  ))r   Z
hypothesisr   Znumpyr   rK   Zpandas.compatr   Zpandas.core.dtypes.commonr   Zpandasr   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"   <module>   s>   $	

     <

%