U
    +if                     @  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 d dlmZ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_windows)Float64Index
Int64IndexTclass)Zautouse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 V/home/mars/bis/venv/lib/python3.8/site-packages/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   H   s    zCoercionBase.methodN)r)   
__module____qualname__r"   r#   propertyr   r   r   r   r   r,   9   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  sL   |  }||d< t|| |j|ks*t|  }||jd< t|| dS )z4test series value's coercion triggered by assignment   N)copytmassert_series_equalr   r(   loc)r:   original_seriesZ	loc_valueZexpected_seriesexpected_dtypetempr   r   r   !_assert_setitem_series_conversionQ   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(   rH   r:   val	exp_dtypeobjexpr   r   r   test_setitem_series_object_   s    z.TestSetitemCoercion.test_setitem_series_objectc                 C  sH   t ddddg}|jtjks"tt d|ddg}| |||| d S Nr@            )rO   rP   r   npr0   r(   rH   rR   r   r   r   test_setitem_series_int64i   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r6d nt}d}tj||d t jd|ddgtjd}W 5 Q R X t jd|ddg|d}| 	|||| d S )Nr@   rY   rZ   r[   r   z2Values are too large to be losslessly cast to int8match)
rO   rP   r\   int8r   r(   FutureWarningrB   assert_produces_warningrH   )r:   rS   rT   rU   warnmsgrV   r   r   r   test_setitem_series_int8t   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 )NrI   皙@ffffff
@皙@)rO   rP   r   r\   r1   r(   rH   rR   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 )NrJ          @       @      @      @      @      @)rO   rP   r   r\   r2   r(   rH   rR   r   r   r   test_setitem_series_complex128   s    
z2TestSetitemCoercion.test_setitem_series_complex1283rZ   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^   )rO   rP   r   r\   bool_r(   rH   rR   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-04rs   )rO   rP   	Timestampr   r(   rH   rR   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 }t|dd d k	r|j|d	 jkrt}tj	|d
d | 
|||| W 5 Q R X d S )Nrz   rt   r{   ru   rv   rw   r}   r|   r   zmismatched timezonesr_   )rO   rP   rx   r   r(   getattrr|   rb   rB   rc   rH   )r:   rS   rT   r|   rU   rV   rd   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   )rO   rP   	Timedeltar   r(   rH   rR   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 )NrL   r@   )rO   rP   rQ   valuesrB   rC   )r:   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|tr(|jjtjkr(t}t	| d||< W 5 Q R X t
jdddddg|d}t|| |jj|kszt|  }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 keyN   r@   rY   rZ   r[   r-   )rA   
isinstanceintr-   r   r\   r1   rb   rB   rc   rO   rP   rC   r(   rD   )r:   rE   Zloc_keyZexpected_indexrF   rG   rd   rV   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@   rY   rZ   r[   rK   r   /index 5 is out of bounds for axis 0 with size 4r_   r   )rO   rP   rQ   r-   r   r/   r(   
IndexErrorrA   pytestraisesIndexr   )r:   rS   rT   rU   rG   re   	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@   rY   rZ   r[   r   )	rO   rP   r-   r   r\   r0   r(   r   r   )r:   rS   rT   rU   r   r   r   r   test_setitem_index_int642  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}tjt|d d|d< W 5 Q R X W 5 Q R X t	jjdd}|j| t dddd|g}	| |||	| d S )Nr@   rY   rZ   r[   rI   g @g@gffffff@r   r   r_   zTreating integers as positionalr   z%TODO_GH12747 The result must be floatreason)rO   rP   r-   r   r\   r1   r(   r   rA   r   r   rB   rc   rb   markxfailr   
add_markerr   r   )
r:   rS   rT   r   rU   rG   re   Zdepr_msgr   r   r   r   r   test_setitem_index_float64<  s    z.TestSetitemCoercion.test_setitem_index_float64Test not implementedr   c                 C  s   t d S r
   r7   r9   r   r   r   test_setitem_series_periodQ  s    z.TestSetitemCoercion.test_setitem_series_periodc                 C  s   t d S r
   r7   r9   r   r   r   test_setitem_index_complex128U  s    z1TestSetitemCoercion.test_setitem_index_complex128c                 C  s   t d S r
   r7   r9   r   r   r   test_setitem_index_boolY  s    z+TestSetitemCoercion.test_setitem_index_boolc                 C  s   t d S r
   r7   r9   r   r   r   test_setitem_index_datetime64]  s    z1TestSetitemCoercion.test_setitem_index_datetime64c                 C  s   t d S r
   r7   r9   r   r   r   test_setitem_index_datetime64tza  s    z3TestSetitemCoercion.test_setitem_index_datetime64tzc                 C  s   t d S r
   r7   r9   r   r   r   test_setitem_index_timedelta64e  s    z2TestSetitemCoercion.test_setitem_index_timedelta64c                 C  s   t d S r
   r7   r9   r   r   r   test_setitem_index_periodi  s    z-TestSetitemCoercion.test_setitem_index_periodN)+r)   r;   r<   r   rH   r   r   parametrizer/   rW   r\   r0   r1   r2   r]   Zint32ra   Zint16rf   rj   rn   rp   rq   rO   rx   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r>   M   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)rA   r   rB   assert_index_equalr   r(   r:   originalvaluer   rF   targetresr   r   r   _assert_insert_conversions  s    z1TestInsertIndexCoercion._assert_insert_conversionz"insert, coerced_val, coerced_dtyper@   rI   Fr   c                 C  sD   t td}|jtkstt d|dddg}| |||| d S )NrK   rL   brM   rN   )rO   r   rQ   r   r/   r(   r   r:   r   coerced_valcoerced_dtyperU   rV   r   r   r   test_insert_index_objectz  s    
z0TestInsertIndexCoercion.test_insert_index_objectc                 C  sH   t ddddg}|jtjks ttd|dddg}| |||| d S rX   )r   r   r\   r0   r(   rO   r   r   r   r   r   r   test_insert_index_int64  s    
z/TestInsertIndexCoercion.test_insert_index_int64      ?c                 C  sH   t ddddg}|jtjks ttd|dddg}| |||| d S )Nr   g       @g      @g      @)r   r   r\   r1   r(   rO   r   r   r   r   r   r   test_insert_index_float64  s    
z1TestInsertIndexCoercion.test_insert_index_float64fill_val,exp_dtyperr   rs   rz   r{   r}   r4   r5   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}tjtd	d
 |d|}W 5 Q R X |	t
d|}	t||	 nHt jddd}|d|}|	t
d|}	|	jt
ks,tt||	 d}
|d|
}|	t
d|
}	|	d |
kslt|	jt
ks|tt||	 d S )Nrt   ru   rv   rw   r{   rr   r@   r   mismatched timezoner_   )rO   DatetimeIndexr|   r   r(   dater   rx   r   astyper/   rB   r   rc   rb   )r:   r   fill_valrT   r   rU   rV   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 dayrr   r@   )rO   TimedeltaIndexr   r(   r   r   rx   r   r   r/   rB   r   )r:   rU   rV   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_   )rO   PeriodIndexr   r(   Periodr   r   strr   r   r/   rB   r   rx   r   r   	TypeErrorrc   rb   r   )
r:   r   r   r   rU   datarV   r   r   re   r   r   r   test_insert_index_period  s.    
z0TestInsertIndexCoercion.test_insert_index_periodr   r   c                 C  s   t d S r
   r7   r9   r   r   r   test_insert_index_complex128#  s    z4TestInsertIndexCoercion.test_insert_index_complex128c                 C  s   t d S r
   r7   r9   r   r   r   test_insert_index_bool'  s    z.TestInsertIndexCoercion.test_insert_index_boolN)r)   r;   r<   r"   r   r   r   r   r   r/   r   r\   r0   r1   r   r   rO   rx   r   r   r   r   r   r   r   r   r   r   r   r   n  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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-d/gd0d1 Z"d2d3 Z#d4S )5TestWhereCoercionwherec                 C  s2   |  }|||}t|| |j|ks.tdS )z test coercion triggered by whereN)rA   r   rB   assert_equalr   r(   )r:   r   condr   r   rF   r   r   r   r   r   _assert_where_conversion0  s    z*TestWhereCoercion._assert_where_conversionr   r@   rI   rJ   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 )NrK   TFr@   rL   rM   c                 3  s   | ]}|  V  qd S r
   r   r   r   r   r   r   N  s     z6TestWhereCoercion.test_where_object.<locals>.<genexpr>r            rZ   )rQ   r   r/   r(   rO   rP   r   )
r:   index_or_seriesr   rT   r   rU   r   Zret_valrV   r   r   r   r   test_where_object9  s    z#TestWhereCoercion.test_where_objectc                   s   |}|t jkr2|tjkr2tjjdd}|j| |ddddg}|j	tj
ksRt|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   r@   rY   rZ   r[   TFc                 3  s   | ]}|  V  qd S r
   r   r   r   r   r   r   g  s     z5TestWhereCoercion.test_where_int64.<locals>.<genexpr>r   )rO   r   r\   r2   r   r   r   r   r   r   r0   r(   r   r:   r   r   rT   r   r   r   rU   r   rV   r   r   r   r   test_where_int64S  s    z"TestWhereCoercion.test_where_int64zfill_val, exp_dtypec                   s   |}|t jkr2|tjkr2tjjdd}|j| |ddddg}|j	tj
ksRt|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   r   rI   rg   rh   ri   TFc                 3  s   | ]}|  V  qd S r
   r   r   r   r   r   r     s     z7TestWhereCoercion.test_where_float64.<locals>.<genexpr>r   r@   rZ   )rO   r   r\   r2   r   r   r   r   r   r   r1   r(   r   r   r   r   r   test_where_float64k  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 )NrJ   rk   rl   rm   TFc                 3  s   | ]}|  V  qd S r
   r   r   r   r   r   r     s     zATestWhereCoercion.test_where_series_complex128.<locals>.<genexpr>r   r@   rZ   r^   )rO   rP   r   r\   r2   r(   r   r:   r   rT   r   rU   r   rV   r   r   r   r   test_where_series_complex128  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@   rZ   )rO   rP   r   r\   rp   r(   r   r   r   r   r   test_where_series_bool  s    z(TestWhereCoercion.test_where_series_boolrr   rs   rz   r{   r4   r5   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 )Nrt   ru   rv   rw   rs   TFr[   periodsz2012-01-02 00:00rz   r{   z2012-01-04 00:00r@   rZ   )rO   rP   rx   r   r(   r   
date_ranger|   )r:   r   rT   rU   r   rV   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 )Nrs   rt   ru   rv   rw   TFr   rY   r[   r   
2012-01-02
2012-01-04)rO   r   rx   r   r(   r   r   rB   r   r   r   )	r:   r   rT   rU   r   r   r   r   rV   r   r   r   test_where_index_datetime  s,    		z+TestWhereCoercion.test_where_index_datetimec           	      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}|||}t j|d ||d |gtd}t|| 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 )Nrr   rz   r{   rt   ru   rv   rw   rs   TFr   rY   r^   r[   r   r   r   )rO   rx   r/   r   r   r(   r   rB   r   r   r   )	r:   r   rT   rU   r   r   r   r   rV   r   r   r   test_where_index_datetime64tz  s0    
z/TestWhereCoercion.test_where_index_datetime64tzr   r   c                 C  s   t d S r
   r7   r9   r   r   r   test_where_index_complex128$  s    z-TestWhereCoercion.test_where_index_complex128c                 C  s   t d S r
   r7   r9   r   r   r   test_where_index_bool(  s    z'TestWhereCoercion.test_where_index_boolc                 C  s   t d S r
   r7   r9   r   r   r   test_where_series_timedelta64,  s    z/TestWhereCoercion.test_where_series_timedelta64c                 C  s   t d S r
   r7   r9   r   r   r   test_where_series_period0  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 Dayr[   r   TFz4 DaysNaTnsr   rZ   r^   r@   )rO   Ztimedelta_ranger\   arrayr   r   rB   r   r4   r   r/   r(   )r:   r   Ztdir   r   r   Zdtnatr   r   r   test_where_index_timedelta644  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-01rZ   ZQS)r   r   QFT
   r@   r^   r   rY   r[   r   z
2020-04-21r   )rO   r   Z	to_periodr\   r   r   r   r   rB   r   Zasarrayr/   r   r   r   )
r:   Zdtipir   r   r   r   othertdZperr   r   r   test_where_index_periodG  s&    
z)TestWhereCoercion.test_where_index_periodN)$r)   r;   r<   r   r   r   r   r   r/   r   r\   r0   r1   r2   r   r   r   rp   r   rO   rx   r   Zto_datetime64Zto_pydatetimer   r   r   r   r   r   r   r   r   r6   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   r   c                 C  s   t d S r
   r7   r9   r   r   r   test_has_comprehensive_testsk  s    z5TestFillnaSeriesCoercion.test_has_comprehensive_testsc                 C  s0   |  }||}t|| |j|ks,tdS )z!test coercion triggered by fillnaN)rA   r  rB   r   r   r(   r   r   r   r   _assert_fillna_conversiono  s    
z2TestFillnaSeriesCoercion._assert_fillna_conversionzfill_val, fill_dtyper@   rI   rJ   Tc                 C  sH   |}|dt jddg}|jtks$t|d|ddg}| |||| d S )NrL   rM   rN   )r\   nanr   r/   r(   r  r:   r   r   
fill_dtyper   rU   rV   r   r   r   test_fillna_objectv  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 )NrI   rh   ri   )
r\   r  r   r1   r(   r2   rO   r   r/   r  r  r   r   r   test_fillna_float64  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 )NrJ   rl   rm   )rO   rP   r\   r  r   r2   r(   r  )r:   r   r  rU   rV   r   r   r   test_fillna_series_complex128  s    
z6TestFillnaSeriesCoercion.test_fillna_series_complex128rr   rs   rz   r{   r   r4   r5   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 )Nrt   rv   rw   rs   )rO   rx   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 }t|dd d k	r|j|d jkrt}tj	|d	d
 | 
|||| W 5 Q R X d S )Nrz   rt   r{   rv   rw   r}   r|   r   r   r_   )rO   rx   r   r   r(   r~   r|   rb   rB   rc   r  )	r:   r   r   r  r   r|   rU   rV   rd   r   r   r   test_fillna_datetime64tz  s,     z1TestFillnaSeriesCoercion.test_fillna_datetime64tzc                 C  s   t d S r
   r7   r9   r   r   r   test_fillna_series_int64  s    z1TestFillnaSeriesCoercion.test_fillna_series_int64c                 C  s   t d S r
   r7   r9   r   r   r   test_fillna_index_int64  s    z0TestFillnaSeriesCoercion.test_fillna_index_int64c                 C  s   t d S r
   r7   r9   r   r   r   test_fillna_series_bool  s    z0TestFillnaSeriesCoercion.test_fillna_series_boolc                 C  s   t d S r
   r7   r9   r   r   r   test_fillna_index_bool  s    z/TestFillnaSeriesCoercion.test_fillna_index_boolc                 C  s   t d S r
   r7   r9   r   r   r   test_fillna_series_timedelta64  s    z7TestFillnaSeriesCoercion.test_fillna_series_timedelta64c                 C  s   t d S r
   r7   r9   r   r   r   test_fillna_series_period   s    z2TestFillnaSeriesCoercion.test_fillna_series_periodc                 C  s   t d S r
   r7   r9   r   r   r   test_fillna_index_timedelta64  s    z6TestFillnaSeriesCoercion.test_fillna_index_timedelta64c                 C  s   t d S r
   r7   r9   r   r   r   test_fillna_index_period  s    z1TestFillnaSeriesCoercion.test_fillna_index_periodN)r)   r;   r<   r   r   r   r   r  r  r   r/   r  r\   r1   r2   r	  r
  rO   rx   r  r  r  r  r  r  r  r  r  r  r   r   r   r   r  e  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]reprL   r   r/   r[   r   r0   rI   rg   r1   rJ   rk   r2   TFr3   rt   rv   rs   )UTCrz   zdatetime64[ns, ]r{   r   r   r   dict)paramsc                 C  s   |j S r
   paramr:   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_keyr4   r5   r6   )r  r   c                 C  s   |j S r
   r  r  r   r   r   to_key8  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  rO   rP   
ValueError)r:   r  r!  r"  replacerr   r   r   r%  S  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 )NrZ   r[   Zxxxr   yyyr-   r   datetime)r}   r   r1   r0   r2   )r0   r1   z32-bit platform buggy: z -> )r-   r   r   )rO   r   rP   r  r   r(   
startswithr  r   r   r   skiprB   rC   	r:   r  r"  r!  r%  r-   rU   r   rV   r   r   r   test_replace_series`  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 )NrZ   r[   xyzr   r&  r'  )	rO   r   rP   r  r   r(   r  rB   rC   r+  r   r   r   test_replace_series_datetime_tz~  s    	
z9TestReplaceSeriesCoercion.test_replace_series_datetime_tzc              	   C  s   t jddgdd}t j| j| |dd}|j|ks6td }t |}t|jt jrpt|jt jrp|j|jkrpt}d}	t	j
||	d ||}
W 5 Q R X t j| j| |dd}|j|kstt	|
| d S )	NrZ   r[   r-  r   r&  r'  zexplicitly cast to objectr_   )rO   r   rP   r  r   r(   r   ZDatetimeTZDtyperb   rB   rc   r  rC   )r:   r  r"  r!  r%  r-   rU   rd   Zrep_serre   r   rV   r   r   r   %test_replace_series_datetime_datetime  s$    

z?TestReplaceSeriesCoercion.test_replace_series_datetime_datetimer   r   c                 C  s   t d S r
   r7   r9   r   r   r   test_replace_series_period  s    z4TestReplaceSeriesCoercion.test_replace_series_periodN)r)   r;   r<   r"   r   r  __annotations__rO   rx   r|   keyr   r   fixturer  r!  r"  r%  r,  r   r   r.  r/  r   r0  r   r   r   r   r    s   





  r  )
__future__r   r(  r   r    numpyr\   r   Zpandas.compatr   r   ZpandasrO   Zpandas._testingZ_testingrB   Zpandas.core.apir   r   r3  r+   r,   r>   r   r   r  r  r   r   r   r   <module>   s,   

  # ?  ; )