U
    f/e                     @  s   d dl mZ d dlmZ d dlZd dlZd dlZd dlm	Z	m
Z
 d dlZd dlmZ ejddddd	 ZG d
d dZG dd deZG dd deZG dd deZG dd deZG dd deZdS )    )annotations)	timedeltaN)IS64is_platform_windowsTclass)ZautouseZscopec                 #  sv    j }t|j|j|jg} fdd} jj}|js<|j	rDd V  n.|D ]"}||sHt
d|j d| qHd V  d S )Nc                   s.   | \ j jj}t fdd|D S )Nc                 3  s,   | ]$}|j ko" |j ko"|j kV  qd S Nname.0xdtypeklassmethod G/tmp/pip-unpacked-wheel-tiezk1ph/pandas/tests/indexing/test_coercion.py	<genexpr>    s    z<check_comprehensiveness.<locals>.has_test.<locals>.<genexpr>)nodesessionitemsany)comboZ	cls_funcsrequestr   r   has_test   s
    

z)check_comprehensiveness.<locals>.has_testztest method is not defined: z, )cls	itertoolsproductklassesdtypesr   configoptionlfkeywordAssertionError__name__)r   r   Zcombosr   optsr   r   r   r   check_comprehensiveness   s    r(   c                	   @  s6   e Zd ZddgZddddddd	d
dg	Zedd ZdS )CoercionBaseindexseriesobjectint64float64
complex128bool
datetime64datetime64tztimedelta64Zperiodc                 C  s   t | d S r   NotImplementedErrorselfr   r   r   r   D   s    zCoercionBase.methodN)r&   
__module____qualname__r   r    propertyr   r   r   r   r   r)   5   s   r)   c                
   @  s  e Zd ZdZdd Zejddefdefdefdefgd	d
 Z	ejdde
jfde
jfde
jfdefgdd Zejde
de
jfe
de
jfgdd Zejdde
jfde
jfde
jfdefgdd Zejdde
jfde
jfde
jfdefgdd Zejddefdefdefdefdefde
jfgdd Zejdeddfdefdefgdd Zejdejddddfejdd defedefdefgd!d" Zejded#d$fdefdefgd%d& Zd'd( Zd)d* Zejddefd+efdefgd,d- Z ejdd+e
jfde
jfdefgd.d/ Z!ejdd+efd0e
jfdefgd1d2 Z"ejj#d3d4d5d6 Z$ejj#d3d4d7d8 Z%ejj#d3d4d9d: Z&ejj#d3d4d;d< Z'ejj#d3d4d=d> Z(ejj#d3d4d?d@ Z)ejj#d3d4dAdB Z*dCS )DTestSetitemCoercionsetitemc                 C  s.   |  }||d< t|| |j|ks*tdS )z4test series value's coercion triggered by assignment   N)copytmassert_series_equalr   r%   )r7   original_seriesZ	loc_valueZexpected_seriesexpected_dtypetempr   r   r   !_assert_setitem_series_conversionM   s    z5TestSetitemCoercion._assert_setitem_series_conversionzval,exp_dtyper=   皙?      ?      ?Tc                 C  sB   t td}|jtkstt d|ddg}| |||| d S )Nabcdacd)pdSerieslistr   r,   r%   rD   r7   val	exp_dtypeobjexpr   r   r   test_setitem_series_object]   s    z.TestSetitemCoercion.test_setitem_series_objectc                 C  s   t ddddg}|jtjks"t|tjkrjt ddddg}| |d|tj tj	j
dd}|j| t d|ddg}| |||| d S )Nr=            rE   z GH12747 The result must be floatreason)rK   rL   r   npr-   r%   r.   rD   pytestmarkxfailr   
add_marker)r7   rO   rP   r   rQ   rR   r[   r   r   r   test_setitem_series_int64g   s    
z-TestSetitemCoercion.test_setitem_series_int64i   c           	   	   C  s   t jddddgtjd}|jtjks(t|tjkrvt jddddgtjd}| |||tj tj	j
dd}|j| |tjkrd nt}d	}tj||d
 t jd|ddgtjd}W 5 Q R X | |||| d S )Nr=   rT   rU   rV   r   r   z6BUG: it must be pd.Series([1, 1, 3, 4], dtype=np.int16rW   z2Values are too large to be losslessly cast to int8match)rK   rL   rY   int8r   r%   int16rD   rZ   r[   r\   r   r]   FutureWarningr?   assert_produces_warning)	r7   rO   rP   r   rQ   rR   r[   warnmsgr   r   r   test_setitem_series_int8x   s    
"z,TestSetitemCoercion.test_setitem_series_int8c                 C  sH   t ddddg}|jtjks"tt d|ddg}| |||| d S )NrE   皙@ffffff
@皙@)rK   rL   r   rY   r.   r%   rD   rN   r   r   r   test_setitem_series_float64   s    z/TestSetitemCoercion.test_setitem_series_float64c                 C  sH   t ddddg}|jtjks"tt d|ddg}| |||| d S )NrF          @       @      @      @      @      @)rK   rL   r   rY   r/   r%   rD   rN   r   r   r   test_setitem_series_complex128   s    
z2TestSetitemCoercion.test_setitem_series_complex1283rU   c                 C  sL   t ddddg}|jtjks"tt jd|ddg|d}| |||| d S )NTFr_   )rK   rL   r   rY   bool_r%   rD   rN   r   r   r   test_setitem_series_bool   s    z,TestSetitemCoercion.test_setitem_series_bool
2012-01-01datetime64[ns]r   c                 C  sp   t t dt dt dt dg}|jdks8tt t d|t dt dg}| |||| d S )N
2011-01-01
2011-01-02
2011-01-03
2011-01-04ru   rK   rL   	Timestampr   r%   rD   rN   r   r   r   test_setitem_series_datetime64   s     z2TestSetitemCoercion.test_setitem_series_datetime64
US/Easterntzdatetime64[ns, US/Eastern]z
US/Pacificc              	   C  s   d}t t jd|dt jd|dt jd|dt jd|dg}|jdksLtt t jd|d|t jd|dt jd|dg}| |||| d S )Nr}   rv   r~   rw   rx   ry   r   rz   )r7   rO   rP   r   rQ   rR   r   r   r    test_setitem_series_datetime64tz   s"    
z4TestSetitemCoercion.test_setitem_series_datetime64tzz12 daytimedelta64[ns]c                 C  sp   t t dt dt dt dg}|jdks8tt t d|t dt dg}| |||| d S )N1 day2 day3 day4 dayr   )rK   rL   	Timedeltar   r%   rD   rN   r   r   r   test_setitem_series_timedelta64   s    z3TestSetitemCoercion.test_setitem_series_timedelta64c                 C  s>   t ddg}t|j|d d < t ddg}t|| d S )NrH   r=   )rK   rL   rM   valuesr?   r@   )r7   Zserexpectedr   r   r   0test_setitem_series_no_coercion_from_values_list  s    zDTestSetitemCoercion.test_setitem_series_no_coercion_from_values_listc                 C  s   |  }d||< tjdddddg|d}t|| |jj|ksDt|  }d|j|< tjdddddg|d}t|| |jj|kstdS )z-test index's coercion triggered by assign key   r=   rT   rU   rV   r*   N)	r>   rK   rL   r?   r@   r*   r   r%   loc)r7   rA   Zloc_keyZexpected_indexrB   rC   rR   r   r   r    _assert_setitem_index_conversion  s    
z4TestSetitemCoercion._assert_setitem_index_conversionr   c              	   C  s   t jddddgtdd}|jjtks*t|tkrb| }d}t	j
||d d	|d	< W 5 Q R X n$t td|g }| |||| d S )
Nr=   rT   rU   rV   rG   r   /index 5 is out of bounds for axis 0 with size 4r`   r   )rK   rL   rM   r*   r   r,   r%   
IndexErrorr>   rZ   raisesIndexr   )r7   rO   rP   rQ   rC   rg   	exp_indexr   r   r   test_setitem_index_object!  s    z-TestSetitemCoercion.test_setitem_index_objectc                 C  sL   t ddddg}|jjtjks$tt dddd|g}| |||| d S )Nr=   rT   rU   rV   r   )	rK   rL   r*   r   rY   r-   r%   r   r   )r7   rO   rP   rQ   r   r   r   r   test_setitem_index_int641  s    z,TestSetitemCoercion.test_setitem_index_int64gffffff@c           	   	   C  s   t jddddgddddgd	}|jjtjks0t|tkr| }d
}t	j
||d d|d< W 5 Q R X t	jjdd}|j| t dddd|g}| |||| d S )Nr=   rT   rU   rV   rE   g @g@gffffff@r   r   r`   r   z%TODO_GH12747 The result must be floatrW   )rK   rL   r*   r   rY   r.   r%   r   r>   rZ   r   r[   r\   r   r]   r   r   )	r7   rO   rP   r   rQ   rC   rg   r[   r   r   r   r   test_setitem_index_float64;  s    z.TestSetitemCoercion.test_setitem_index_float64Test not implementedrW   c                 C  s   t d S r   r4   r6   r   r   r   test_setitem_series_periodM  s    z.TestSetitemCoercion.test_setitem_series_periodc                 C  s   t d S r   r4   r6   r   r   r   test_setitem_index_complex128Q  s    z1TestSetitemCoercion.test_setitem_index_complex128c                 C  s   t d S r   r4   r6   r   r   r   test_setitem_index_boolU  s    z+TestSetitemCoercion.test_setitem_index_boolc                 C  s   t d S r   r4   r6   r   r   r   test_setitem_index_datetime64Y  s    z1TestSetitemCoercion.test_setitem_index_datetime64c                 C  s   t d S r   r4   r6   r   r   r   test_setitem_index_datetime64tz]  s    z3TestSetitemCoercion.test_setitem_index_datetime64tzc                 C  s   t d S r   r4   r6   r   r   r   test_setitem_index_timedelta64a  s    z2TestSetitemCoercion.test_setitem_index_timedelta64c                 C  s   t d S r   r4   r6   r   r   r   test_setitem_index_periode  s    z-TestSetitemCoercion.test_setitem_index_periodN)+r&   r8   r9   r   rD   rZ   r[   parametrizer,   rS   rY   r-   r.   r/   r^   Zint32rb   rc   rh   rl   rp   rr   rs   rK   r{   r|   r   r   r   r   r   r   r   r   r   r\   r   r   r   r   r   r   r   r   r   r   r   r;   I   s    
 
 
 
	


	

	 
 
 






r;   c                	   @  s  e Zd ZdgZdZdd Zejddde	fdde	fdde	fd	d	e	fgd
d Z
ejdddejfddejfdde	fd	d	e	fgdd Zejdddejfddejfdde	fd	d	e	fgdd Zejjdeddfejddddfgddgdejdedejddddgdd Zdd Zejdejd d!d"d d#fedede	fdde	fd	d	e	fgd$d% Zejjd&d'd(d) Zejjd&d'd*d+ Zd,S )-TestInsertIndexCoercionr*   insertc                 C  s2   |  }|d|}t|| |j|ks.tdS )z!test coercion triggered by insertr=   N)r>   r   r?   assert_index_equalr   r%   r7   originalvaluer   rB   targetresr   r   r   _assert_insert_conversiono  s    z1TestInsertIndexCoercion._assert_insert_conversionz"insert, coerced_val, coerced_dtyper=   rE   Fr   c                 C  sD   t td}|jtkstt d|dddg}| |||| d S )NrG   rH   brI   rJ   )rK   r   rM   r   r,   r%   r   r7   r   coerced_valcoerced_dtyperQ   rR   r   r   r   test_insert_index_objectv  s    
z0TestInsertIndexCoercion.test_insert_index_objectc                 C  sJ   t ddddg}|jtjks"tt d|dddg}| |||| d S )Nr=   rT   rU   rV   )rK   Z
Int64Indexr   rY   r-   r%   r   r   r   r   r   r   test_insert_index_int64  s    
z/TestInsertIndexCoercion.test_insert_index_int64      ?c                 C  sJ   t ddddg}|jtjks"tt d|dddg}| |||| d S )Nr   g       @g      @g      @)rK   ZFloat64Indexr   rY   r.   r%   r   r   r   r   r   r   test_insert_index_float64  s    
z1TestInsertIndexCoercion.test_insert_index_float64fill_val,exp_dtypert   ru   r}   r~   r   r1   r2   idsinsert_value
Asia/Tokyoc                 C  s  t jddddg|jd}|j|ks&tt jd| dddg|jd}| |||| |jrt d}|d|}|	t
d|}	|	jt
kstt||	 t jddd}|d|}|	t
d|}	|	jt
kstt||	 nHt jddd}|d|}|	t
d|}	|	jt
ks tt||	 d}
|d|
}|	t
d|
}	|	d |
ks`t|	jt
ksptt||	 d S )	Nrv   rw   rx   ry   r~   rt   r=   r   )rK   DatetimeIndexr   r   r%   dater   r{   r   astyper,   r?   r   )r7   r   fill_valrP   r   rQ   rR   tsresultr   itemr   r   r   test_insert_index_datetimes  s@    
 
z3TestInsertIndexCoercion.test_insert_index_datetimesc                 C  s   t ddddg}|jdks tt dddddg}| |t d|d t ddfD ]<}|d|}|t	d|}|jt	kstt
|| qXd S )	Nr   r   r   r   r   z10 dayrt   r=   )rK   TimedeltaIndexr   r%   r   r   r{   r   r   r,   r?   r   )r7   rQ   rR   r   r   r   r   r   r   test_insert_index_timedelta64  s       z5TestInsertIndexCoercion.test_insert_index_timedelta64z2012-01Mfreq	period[M]c           
   
   C  sJ  t jddddgdd}|jdks$tt jddd|t jdddt jdddt jdddg}t|t jrt j|dd}| |||| | |t||| n|d|}|	t
d|}t|| t|t js|dt|}|	t
dt|}t|| d	}	tjt|	d
* tt t j|dd W 5 Q R X W 5 Q R X d S )Nz2011-01z2011-02z2011-03z2011-04r   r   r   r   z%Unexpected keyword arguments {'freq'}r`   )rK   PeriodIndexr   r%   Period
isinstancer   strr   r   r,   r?   r   r{   rZ   r   	TypeErrorre   rd   r   )
r7   r   r   r   rQ   datarR   r   r   rg   r   r   r   test_insert_index_period  s.    
z0TestInsertIndexCoercion.test_insert_index_periodr   rW   c                 C  s   t d S r   r4   r6   r   r   r   test_insert_index_complex128  s    z4TestInsertIndexCoercion.test_insert_index_complex128c                 C  s   t d S r   r4   r6   r   r   r   test_insert_index_bool   s    z.TestInsertIndexCoercion.test_insert_index_boolN)r&   r8   r9   r   r   r   rZ   r[   r   r,   r   rY   r-   r.   r   r   rK   r{   r   r   r   r   r\   r   r   r   r   r   r   r   j  sp   	


	


	
,	
%
r   c                	   @  s*  e Zd ZdZdd Zejddefdefdefdefgd	d
 Z	ejdde
jfde
jfde
jfdefgdd Zejdde
jfde
jfde
jfdefgdd Zejdde
jfde
jfde
jfdefgdd Zejddefdefdefde
jfgdd Zejjdeddfejdddefgddgddd Zejdeded ed gdd Zejjd d!d"d# Zejjd$d!d%d& Zejjd$d!d'd( Zejjd$d!d)d* Zejjd$d!d+d, Zejd-ejd.d/e d.d/e
!d.d0gd1d2 Z"d3d4 Z#d5S )6TestWhereCoercionwherec                 C  s2   |  }|||}t|| |j|ks.tdS )z test coercion triggered by whereN)r>   r   r?   assert_equalr   r%   )r7   r   condr   r   rB   r   r   r   r   r   _assert_where_conversion)  s    z*TestWhereCoercion._assert_where_conversionr   r=   rE   rF   Tc           
        s   |}|t d}|jtkst|ddddg} dkrF|tjkrFd}n }|d|d|g}| || ||  dkr|ddddg}	n| fddd	D }	|d|	d d|	d
 g}| |||	|| d S )NrG   TFr=   rH   rI   c                 3  s   | ]}|  V  qd S r   r   r
   r   r   r   r   G  s     z6TestWhereCoercion.test_where_object.<locals>.<genexpr>r            rU   )rM   r   r,   r%   rK   rL   r   )
r7   index_or_seriesr   rP   r   rQ   r   Zret_valrR   r   r   r   r   test_where_object2  s    z#TestWhereCoercion.test_where_objectc           	        s   |}|t jkr"|tjkr"td |ddddg}|jtjksBt|ddddg}|d d g}| 	|| ||  dkr|ddddg}n| fdd	d
D }|d|d d|d g}| 	||||| d S )NComplex Index not supportedr=   rT   rU   rV   TFc                 3  s   | ]}|  V  qd S r   r   r
   r   r   r   r   ^  s     z5TestWhereCoercion.test_where_int64.<locals>.<genexpr>r   )
rK   r   rY   r/   rZ   skipr   r-   r%   r   	r7   r   r   rP   r   rQ   r   rR   r   r   r   r   test_where_int64L  s    
z"TestWhereCoercion.test_where_int64zfill_val, exp_dtypec           	        s   |}|t jkr"|tjkr"td |ddddg}|jtjksBt|ddddg}|d d g}| 	|| ||  dkr|ddddg}n| fdd	d
D }|d|d d|d g}| 	||||| d S )Nr   rE   ri   rj   rk   TFc                 3  s   | ]}|  V  qd S r   r   r
   r   r   r   r   t  s     z7TestWhereCoercion.test_where_float64.<locals>.<genexpr>r   r=   rU   )
rK   r   rY   r/   rZ   r   r   r.   r%   r   r   r   r   r   test_where_float64b  s    
z$TestWhereCoercion.test_where_float64c                   s   t j}|ddddg}|jtjks&t|ddddg}|d d g}| || ||  dkrr|ddddg}n| fddd	D }|d|d
 d|d g|d}| ||||| d S )NrF   rm   rn   ro   TFc                 3  s   | ]}|  V  qd S r   r   r
   r   r   r   r     s     zATestWhereCoercion.test_where_series_complex128.<locals>.<genexpr>r   r=   rU   r_   )rK   rL   r   rY   r/   r%   r   r7   r   rP   r   rQ   r   rR   r   r   r   r   test_where_series_complex128x  s    
z.TestWhereCoercion.test_where_series_complex128c                   s   t j}|ddddg}|jtjks&t|ddddg}|d d g}| || ||  dkrr|ddddg}n| fdddD }|d|d d|d g}| ||||| d S )NTFc                 3  s   | ]}|  V  qd S r   r   r
   r   r   r   r     s     z;TestWhereCoercion.test_where_series_bool.<locals>.<genexpr>r   r=   rU   )rK   rL   r   rY   rr   r%   r   r   r   r   r   test_where_series_bool  s    z(TestWhereCoercion.test_where_series_boolrt   ru   r}   r~   r1   r2   r   c              	   C  s  t t dt dt dt dg}|jdks8tt ddddg}t t d|t d|g}| ||||| t t j|dd	}|jrt t dt jd
ddt dt jdddg}| ||||| t t d|d t d|d g}| ||||| d S )Nrv   rw   rx   ry   ru   TFrV   periodsz2012-01-02 00:00r}   r~   z2012-01-04 00:00r=   rU   )rK   rL   r{   r   r%   r   
date_ranger   )r7   r   rP   rQ   r   rR   r   r   r   r   test_where_series_datetime64  s>    	z.TestWhereCoercion.test_where_series_datetime64r   c           	      C  s   d}t t dt dt dt dg}|jdks<tt ddddg}|||}t |d ||d	 |g}t|| t t j	|d
d}t t dt dt dt dg}| 
||||| d S )Nru   rv   rw   rx   ry   TFr   rT   rV   r   
2012-01-02
2012-01-04)rK   r   r{   r   r%   r   r   r?   r   r   r   )	r7   r   rP   rQ   r   r   r   r   rR   r   r   r   test_where_index_datetime  s,    		z+TestWhereCoercion.test_where_index_datetimez0GH 22839: do not ignore timezone, must be objectrW   c              	   C  s   t jddd}t}t t dt dt dt dg}|jdksJtt d	d
d	d
g}d}tjt|d |	|| W 5 Q R X t t j
|dd}t jt dt jdddt dt jdddg|d}| ||||| d S )Nrt   r}   r~   rv   rw   rx   ry   ru   TFz=Index\(\.\.\.\) must be called with a collection of some kindr`   rV   r   r   r   r_   )rK   r{   r,   r   r   r%   rZ   r   r   r   r   r   )r7   r   rP   rQ   r   rg   r   rR   r   r   r   test_where_index_datetime64tz  s0    
z/TestWhereCoercion.test_where_index_datetime64tzr   c                 C  s   t d S r   r4   r6   r   r   r   test_where_index_complex128  s    z-TestWhereCoercion.test_where_index_complex128c                 C  s   t d S r   r4   r6   r   r   r   test_where_index_bool  s    z'TestWhereCoercion.test_where_index_boolc                 C  s   t d S r   r4   r6   r   r   r   test_where_series_timedelta64"  s    z/TestWhereCoercion.test_where_series_timedelta64c                 C  s   t d S r   r4   r6   r   r   r   test_where_series_period&  s    z*TestWhereCoercion.test_where_series_periodr   	   daysDc                 C  s   t jddd}tddddg}t d||dg}|||}t|| tdd}t j	|d	 |||d
 gt
d}|d |kst|||}t|| d S )Nz1 DayrV   r   TFz4 DaysNaTnsr   rU   r_   r=   )rK   Ztimedelta_rangerY   arrayr   r   r?   r   r1   r   r,   r%   )r7   r   Ztdir   r   r   Zdtnatr   r   r   test_where_index_timedelta64*  s    z.TestWhereCoercion.test_where_index_timedelta64c           
      C  s0  t jdddd}|d}tdddg}|d |jd	  }t ||d
 |g}|||}t	|| tj
||jd	  td}|||}t |d |d
 |d g}t	|| t jdd}t j||d
 |gtd}|||}t	|| t dd}	t j|	|d
 |	gtd}|||	}t	|| d S )Nz
2016-01-01rU   ZQS)r   r   QFT
   r=   r_   r   rT   rV   r   z
2020-04-21r   )rK   r   Z	to_periodrY   r   r   r   r   r?   r   Zasarrayr,   r   r   r   )
r7   Zdtipir   r   r   r   othertdZperr   r   r   test_where_index_period=  s&    
z)TestWhereCoercion.test_where_index_periodN)$r&   r8   r9   r   r   rZ   r[   r   r,   r   rY   r-   r.   r/   r   r   r   rr   r   rK   r{   r   Zto_datetime64Zto_pydatetimer   r\   r   r   r   r   r   r   r   r3   r   r   r   r   r   r   r   %  s~   	
 
 
	


'





 
r   c                	   @  s  e Zd ZdZejjdddd Zdd Zej	dd	e
fd
e
fde
fde
fgdd Zej	dd	ejfd
ejfdejfde
fgdd Zej	dd	ejfd
ejfdejfde
fgdd Zejj	deddfejddde
fd	e
fde
fgddddgddd Zej	dejddddfede
fejdd de
fd	e
fde
fgd!d" Zejjddd#d$ Zejjddd%d& Zejjddd'd( Zejjddd)d* Zejjddd+d, Zejjddd-d. Zejjddd/d0 Zejjddd1d2 Zd3S )4TestFillnaSeriesCoercionfillnar   rW   c                 C  s   t d S r   r4   r6   r   r   r   test_has_comprehensive_testsa  s    z5TestFillnaSeriesCoercion.test_has_comprehensive_testsc                 C  s0   |  }||}t|| |j|ks,tdS )z!test coercion triggered by fillnaN)r>   r   r?   r   r   r%   r   r   r   r   _assert_fillna_conversione  s    
z2TestFillnaSeriesCoercion._assert_fillna_conversionzfill_val, fill_dtyper=   rE   rF   Tc                 C  sH   |}|dt jddg}|jtks$t|d|ddg}| |||| d S )NrH   rI   rJ   )rY   nanr   r,   r%   r   r7   r   r   
fill_dtyper   rQ   rR   r   r   r   test_fillna_objectl  s
    z+TestFillnaSeriesCoercion.test_fillna_objectzfill_val,fill_dtypec                 C  sb   |}|dt jddg}|jt jks&t|d|ddg}|t jkrN|tjkrNt}| 	|||| d S )NrE   rj   rk   )
rY   r  r   r.   r%   r/   rK   r   r,   r   r  r   r   r   test_fillna_float64x  s    z,TestFillnaSeriesCoercion.test_fillna_float64c                 C  sJ   t dtjddg}|jtjks$tt d|ddg}| |||| d S )NrF   rn   ro   )rK   rL   rY   r  r   r/   r%   r   )r7   r   r  rQ   rR   r   r   r   test_fillna_series_complex128  s    
z6TestFillnaSeriesCoercion.test_fillna_series_complex128rt   ru   r}   r~   r   r1   r2   r,   r   c                 C  sl   |}|t dt jt dt dg}|jdks6t|t d|t dt dg}| |||| d S )Nrv   rx   ry   ru   rK   r{   r   r   r%   r   r  r   r   r   test_fillna_datetime  s"    z-TestFillnaSeriesCoercion.test_fillna_datetimer   r   c                 C  s   |}d}|t jd|dt jt jd|dt jd|dg}|jdksFt|t jd|d|t jd|dt jd|dg}| |||| d S )Nr}   rv   r~   rx   ry   r   r  )r7   r   r   r  r   r   rQ   rR   r   r   r   test_fillna_datetime64tz  s$    z1TestFillnaSeriesCoercion.test_fillna_datetime64tzc                 C  s   t d S r   r4   r6   r   r   r   test_fillna_series_int64  s    z1TestFillnaSeriesCoercion.test_fillna_series_int64c                 C  s   t d S r   r4   r6   r   r   r   test_fillna_index_int64  s    z0TestFillnaSeriesCoercion.test_fillna_index_int64c                 C  s   t d S r   r4   r6   r   r   r   test_fillna_series_bool  s    z0TestFillnaSeriesCoercion.test_fillna_series_boolc                 C  s   t d S r   r4   r6   r   r   r   test_fillna_index_bool  s    z/TestFillnaSeriesCoercion.test_fillna_index_boolc                 C  s   t d S r   r4   r6   r   r   r   test_fillna_series_timedelta64  s    z7TestFillnaSeriesCoercion.test_fillna_series_timedelta64c                 C  s   t d S r   r4   r6   r   r   r   test_fillna_series_period  s    z2TestFillnaSeriesCoercion.test_fillna_series_periodc                 C  s   t d S r   r4   r6   r   r   r   test_fillna_index_timedelta64  s    z6TestFillnaSeriesCoercion.test_fillna_index_timedelta64c                 C  s   t d S r   r4   r6   r   r   r   test_fillna_index_period  s    z1TestFillnaSeriesCoercion.test_fillna_index_periodN)r&   r8   r9   r   rZ   r[   r\   r   r   r   r,   r  rY   r.   r/   r  r  rK   r{   r  r	  r
  r  r  r  r  r  r  r  r   r   r   r   r   [  sv   

 
	












r   c                   @  s  e Zd ZU dgZdZi Zded< ddged< dd	ged
< ddged< ddged< ddged< ededged< dD ]0Z	de	 dZ
ejde	dejde	dgee
< qxededged< ejddgdd d! Zejdd
ddddd"d#dg	dd$d% Zejdd
ddddd"d#dg	dd
dddd&d'd'd(g	d)d*d+ Zejd,d- Zd.d/ Zejjd0dddddd
gdd1ejjd2d"d#gdd1d3d4 Zejjd0dd"d#gdd1ejjd2dd"d#gdd1d5d6 Zejjd7d8d9d: Zd;S )<TestReplaceSeriesCoercionr+   replacezdict[str, list]reprH   r   r,   rV   r   r-   rE   ri   r.   rF   rm   r/   TFr0   rv   rx   ru   )UTCr}   zdatetime64[ns, ]r~   r   r   r   dict)paramsc                 C  s   |j S r   paramr7   r   r   r   r   how  s    zTestReplaceSeriesCoercion.howdatetime64[ns, UTC]r   c                 C  s   |j S r   r  r  r   r   r   from_key  s    z"TestReplaceSeriesCoercion.from_keyr1   r2   r3   )r  r   c                 C  s   |j S r   r  r  r   r   r   to_key'  s    z TestReplaceSeriesCoercion.to_keyc                 C  sP   |dkr$t t| j| | j| }n(|dkrHtj| j| | j| d}nt|S )z9
        Object we will pass to `Series.replace`
        r  r+   r   )r  zipr  rK   rL   
ValueError)r7   r  r  r  replacerr   r   r   r"  B  s    z"TestReplaceSeriesCoercion.replacerc           	      C  s   t jddgdd}t j| j| |dd}|j|ks6t|drN|drNd S |dkrZd S ||}|d	krt|d
ks|dkr|dkrtrt	 rt
d| d|  t j| j| |d|d}n$t j| j| |dd}|j|kstt|| d S )NrU   rV   Zxxxr   yyyr*   r	   datetime)r   r  r.   r-   r/   )r-   r.   z32-bit platform buggy: z -> )r*   r	   r   )rK   r   rL   r  r   r%   
startswithr  r   r   rZ   r   r?   r@   	r7   r  r  r  r"  r*   rQ   r   rR   r   r   r   test_replace_seriesO  s&    

z-TestReplaceSeriesCoercion.test_replace_seriesr  )Zindirectr  c           	      C  st   t jddgdd}t j| j| |dd}|j|ks6t||}t j| j| |dd}|j|ksdtt|| d S NrU   rV   Zxyzr   r#  r$  	rK   r   rL   r  r   r%   r  r?   r@   r'  r   r   r   test_replace_series_datetime_tzm  s    	
z9TestReplaceSeriesCoercion.test_replace_series_datetime_tzc           	      C  st   t jddgdd}t j| j| |dd}|j|ks6t||}t j| j| |dd}|j|ksdtt|| d S r)  r*  r'  r   r   r   %test_replace_series_datetime_datetime  s    
z?TestReplaceSeriesCoercion.test_replace_series_datetime_datetimer   rW   c                 C  s   t d S r   r4   r6   r   r   r   test_replace_series_period  s    z4TestReplaceSeriesCoercion.test_replace_series_periodN)r&   r8   r9   r   r   r  __annotations__rK   r{   r   keyr   rZ   fixturer  r  r  r"  r(  r[   r   r+  r,  r\   r-  r   r   r   r   r    s   





  r  )
__future__r   r%  r   r   ZnumpyrY   rZ   Zpandas.compatr   r   ZpandasrK   Zpandas._testingZ_testingr?   r0  r(   r)   r;   r   r   r   r  r   r   r   r   <module>   s*   
  # <  8 "