a
    GGb                     @  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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 v o" |j v o"|j v V  qd S Nname.0xdtypeklassmethod Blib/python3.9/site-packages/pandas/tests/indexing/test_coercion.py	<genexpr>$   s   z<check_comprehensiveness.<locals>.has_test.<locals>.<genexpr>)nodeZ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   ZconfigZoptionZlfkeywordAssertionError__name__)r   r   Zcombosr   Zoptsr   r   r   r   check_comprehensiveness   s    r%   c                   @  s(   e Zd ZddgZg d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*J |  }||jd< t|| dS )z4test series value's coercion triggered by assignment   N)copytmassert_series_equalr   loc)r4   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J t d|ddg}| |||| d S )Nabcdacd)pdSerieslistr   r)   rB   r4   val	exp_dtypeobjexpr   r   r   test_setitem_series_object_   s    z.TestSetitemCoercion.test_setitem_series_objectc                 C  sD   t g d}|jtjksJ t d|ddg}| |||| d S )Nr:            r:   rT   rU   )rI   rJ   r   npr*   rB   rL   r   r   r   test_setitem_series_int64i   s    z-TestSetitemCoercion.test_setitem_series_int64i   c                 C  s   t jg dtjd}|jtjks$J |tju r2d nt}d}tj||d( t jd|ddgtjd}W d    n1 sv0    Y  t jd|ddg|d}| |||| d S )NrR   r   z2Values are too large to be losslessly cast to int8matchr:   rT   rU   )	rI   rJ   rV   int8r   FutureWarningr<   assert_produces_warningrB   )r4   rM   rN   rO   warnmsgrP   r   r   r   test_setitem_series_int8t   s    6z,TestSetitemCoercion.test_setitem_series_int8c                 C  sD   t g d}|jtjksJ t d|ddg}| |||| d S )NrC   皙@ffffff
@皙@rC   rc   rd   )rI   rJ   r   rV   r+   rB   rL   r   r   r   test_setitem_series_float64   s    z/TestSetitemCoercion.test_setitem_series_float64c                 C  sD   t g d}|jtjksJ t d|ddg}| |||| d S )NrD          @       @      @      @      @      @rD   rh   ri   )rI   rJ   r   rV   r,   rB   rL   r   r   r   test_setitem_series_complex128   s    
z2TestSetitemCoercion.test_setitem_series_complex1283rT   c                 C  sH   t g d}|jtjksJ t jd|ddg|d}| |||| d S )NTFTFTFrX   )rI   rJ   r   rV   bool_rB   rL   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s8J t t d|t dt dg}| |||| d S )N
2011-01-01
2011-01-02
2011-01-03
2011-01-04rp   )rI   rJ   	Timestampr   rB   rL   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sLJ t t jd|d|t jd|dt jd|dg}d }t|dd d ur|j|d	 jkrt}tj|d
d  | 	|||| W d    n1 s0    Y  d S )Nrw   rq   rx   rr   rs   rt   rz   ry   r   zmismatched timezonesrY   )
rI   rJ   ru   r   getattrry   r\   r<   r]   rB   )r4   rM   rN   ry   rO   rP   r^   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s8J t t d|t dt dg}| |||| d S )N1 day2 day3 day4 dayr}   )rI   rJ   	Timedeltar   rB   rL   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 )NrF   r:   )rI   rJ   rK   valuesr<   r=   )r4   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 d   n1 sP0    Y  t
jg d|d}t|| |jj|ksJ |  }d|j|< t
jg d|d}t|| |jj|ksJ dS )z-test index's coercion triggered by assign keyN   )r:   rS   rT   rU   r   r'   )r;   
isinstanceintr'   r   rV   r+   r\   r<   r]   rI   rJ   r=   r>   )r4   r?   Zloc_keyZexpected_indexr@   rA   r^   rP   r   r   r    _assert_setitem_index_conversion  s    &
z4TestSetitemCoercion._assert_setitem_index_conversionr   c                 C  s   t jg dtdd}|jjtks&J |tu rr| }d}tj	||d d|d< W d    q1 sf0    Y  n$t 
td|g }| |||| d S )NrR   rE   r   /index 5 is out of bounds for axis 0 with size 4rY   r   )rI   rJ   rK   r'   r   r)   
IndexErrorr;   pytestraisesIndexr   )r4   rM   rN   rO   rA   r_   	exp_indexr   r   r   test_setitem_index_object"  s    (z-TestSetitemCoercion.test_setitem_index_objectc                 C  sH   t g d}|jjtjks J t dddd|g}| |||| d S )NrR   r   r:   rS   rT   )rI   rJ   r'   r   rV   r*   r   r   )r4   rM   rN   rO   r   r   r   r   test_setitem_index_int642  s    z,TestSetitemCoercion.test_setitem_index_int64gffffff@c           
   	   C  s   t jg dg dd}|jjtjks(J |tu r| }d}tj	||dJ d}t
jt|d d|d< W d    n1 s|0    Y  W d    n1 s0    Y  tjjdd	}|j| t d
ddd|g}	| |||	| d S )NrR   )rC    @@ffffff@r   r   rY   zTreating integers as positionalr   z%TODO_GH12747 The result must be floatreasonrC   r   r   r   )rI   rJ   r'   r   rV   r+   r   r;   r   r   r<   r]   r\   markxfailr   
add_markerr   r   )
r4   rM   rN   r   rO   rA   r_   Zdepr_msgr   r   r   r   r   test_setitem_index_float64<  s    Dz.TestSetitemCoercion.test_setitem_index_float64Test not implementedr   c                 C  s   t d S r	   r1   r3   r   r   r   test_setitem_series_periodQ  s    z.TestSetitemCoercion.test_setitem_series_periodc                 C  s   t d S r	   r1   r3   r   r   r   test_setitem_index_complex128U  s    z1TestSetitemCoercion.test_setitem_index_complex128c                 C  s   t d S r	   r1   r3   r   r   r   test_setitem_index_boolY  s    z+TestSetitemCoercion.test_setitem_index_boolc                 C  s   t d S r	   r1   r3   r   r   r   test_setitem_index_datetime64]  s    z1TestSetitemCoercion.test_setitem_index_datetime64c                 C  s   t d S r	   r1   r3   r   r   r   test_setitem_index_datetime64tza  s    z3TestSetitemCoercion.test_setitem_index_datetime64tzc                 C  s   t d S r	   r1   r3   r   r   r   test_setitem_index_timedelta64e  s    z2TestSetitemCoercion.test_setitem_index_timedelta64c                 C  s   t d S r	   r1   r3   r   r   r   test_setitem_index_periodi  s    z-TestSetitemCoercion.test_setitem_index_periodN)+r$   r5   r6   r   rB   r   r   parametrizer)   rQ   rV   r*   r+   r,   rW   Zint32r[   Zint16r`   re   rj   rm   rn   rI   ru   rv   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r8   M   s   
 
 
 
	


	

	








r8   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.J dS )z!test coercion triggered by insertr:   N)r;   r   r<   assert_index_equalr   r4   originalvaluer   r@   targetresr   r   r   _assert_insert_conversions  s    z1TestInsertIndexCoercion._assert_insert_conversionz"insert, coerced_val, coerced_dtyper:   rC   Fr   c                 C  sD   t td}|jtksJ t d|dddg}| |||| d S )NrE   rF   brG   rH   )rI   r   rK   r   r)   r   r4   r   coerced_valcoerced_dtyperO   rP   r   r   r   test_insert_index_objectz  s    
z0TestInsertIndexCoercion.test_insert_index_objectc                 C  sD   t g d}|jtjksJ td|dddg}| |||| d S )NrR   r:   rS   rT   rU   )r   r   rV   r*   rI   r   r   r   r   r   r   test_insert_index_int64  s    
z/TestInsertIndexCoercion.test_insert_index_int64      ?c                 C  sD   t g d}|jtjksJ td|dddg}| |||| d S )N)r          @      @      @r   r   r   r   )r   r   rV   r+   rI   r   r   r   r   r   r   test_insert_index_float64  s    
z1TestInsertIndexCoercion.test_insert_index_float64fill_val,exp_dtypero   rp   rw   rx   rz   r.   r/   idsinsert_value
Asia/Tokyoc                 C  s  t jg d|jd}|j|ks"J t jd| dddg|jd}| |||| |jrt d}|d|}|t	d|}	|	jt	ksJ t
||	 t jdd	d}t
jtd
d |d|}W d    n1 s0    Y  |t	d|}	t
||	 nHt jdd	d}|d|}|t	d|}	|	jt	ks>J t
||	 d}
|d|
}|t	d|
}	|	d |
ks~J |	jt	ksJ t
||	 d S )N)rq   rr   rs   rt   rx   rq   rr   rs   rt   ro   r:   r   mismatched timezonerY   )rI   DatetimeIndexry   r   dater   ru   r   astyper)   r<   r   r]   r\   )r4   r   fill_valrN   r   rO   rP   Ztsresultr   itemr   r   r   test_insert_index_datetimes  s>    

*z3TestInsertIndexCoercion.test_insert_index_datetimesc                 C  s   t g d}|jdksJ t g d}| |t d|d t ddfD ]<}|d|}|td|}|jtks~J t	
|| qNd S )N)r~   r   r   r   r}   )r~   10 dayr   r   r   r   ro   r:   )rI   TimedeltaIndexr   r   r   ru   r   r   r)   r<   r   )r4   rO   rP   r   r   r   r   r   r   test_insert_index_timedelta64  s    z5TestInsertIndexCoercion.test_insert_index_timedelta64z2012-01Mfreq	period[M]c           
   	   C  sp  t jg ddd}|jdks J 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J t
t t j|dd W d    n1 sB0    Y  W d    n1 sb0    Y  d S )N)2011-012011-022011-032011-04r   r   r   r   r   r   r   r   z%Unexpected keyword arguments {'freq'}rY   )rI   PeriodIndexr   Periodr   r   strr   r   r)   r<   r   ru   r   r   	TypeErrorr]   r\   r   )
r4   r   r   r   rO   datarP   r   r   r_   r   r   r   test_insert_index_period  s.    
z0TestInsertIndexCoercion.test_insert_index_periodr   r   c                 C  s   t d S r	   r1   r3   r   r   r   test_insert_index_complex128#  s    z4TestInsertIndexCoercion.test_insert_index_complex128c                 C  s   t d S r	   r1   r3   r   r   r   test_insert_index_bool'  s    z.TestInsertIndexCoercion.test_insert_index_boolN)r$   r5   r6   r    r   r   r   r   r   r)   r   rV   r*   r+   r   r   rI   ru   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.J dS )z test coercion triggered by whereN)r;   r   r<   assert_equalr   )r4   r   condr   r   r@   r   r   r   r   r   _assert_where_conversion0  s    z*TestWhereCoercion._assert_where_conversionr   r:   rC   rD   Tc           
        s   |}|t d}|jtksJ |g d} du rB|tju rBd}n }|d|d|g}| || ||  du r~|g d}	n| fdd	d
D }	|d|	d d|	d g}| |||	|| d S )NrE   rl   Tr:   rF   rG   TFTTc                 3  s   | ]}|  V  qd S r	   r   r   r   r   r   r   N      z6TestWhereCoercion.test_where_object.<locals>.<genexpr>r            rT   )rK   r   r)   rI   rJ   r   )
r4   index_or_seriesr   rN   r   rO   r   Zret_valrP   r   r   r   r   test_where_object9  s    z#TestWhereCoercion.test_where_objectc                   s   |}|t ju r2|tju r2tjjdd}|j| |g d}|j	tj
ksNJ |g d}|d d g}	| || |	|  du r|g d}
n| fd	d
dD }
|d|
d d|
d g}	| |||
|	| d S )NComplex Index not supportedr   rR   rl   r:   rT   Tr   c                 3  s   | ]}|  V  qd S r	   r   r   r   r   r   r   g  r   z5TestWhereCoercion.test_where_int64.<locals>.<genexpr>r   )rI   r   rV   r,   r   r   r   r   r   r   r*   r   r4   r   r   rN   r   r   r   rO   r   rP   r   r   r   r   test_where_int64S  s    z"TestWhereCoercion.test_where_int64zfill_val, exp_dtypec                   s   |}|t ju r2|tju r2tjjdd}|j| |g d}|j	tj
ksNJ |g d}|d d g}	| || |	|  du r|g d}
n| fd	d
dD }
|d|
d d|
d g}	| |||
|	| d S )Nr   r   ra   rl   rC   rc   Tr   c                 3  s   | ]}|  V  qd S r	   r   r   r   r   r   r     r   z7TestWhereCoercion.test_where_float64.<locals>.<genexpr>r   r:   rT   )rI   r   rV   r,   r   r   r   r   r   r   r+   r   r   r   r   r   test_where_float64k  s    z$TestWhereCoercion.test_where_float64c                   s   t j}|g d}|jtjks"J |g d}|d d g}| || ||  du rf|g d}n| fddd	D }|d|d
 d|d g|d}| ||||| d S )Nrf   rl   rD   rh   Tr   c                 3  s   | ]}|  V  qd S r	   r   r   r   r   r   r     r   zATestWhereCoercion.test_where_series_complex128.<locals>.<genexpr>r   r:   rT   rX   )rI   rJ   r   rV   r,   r   r4   r   rN   r   rO   r   rP   r   r   r   r   test_where_series_complex128  s    
z.TestWhereCoercion.test_where_series_complex128c                   s   t j}|g d}|jtjks"J |g d}|d d g}| || ||  du rf|g d}n| fdddD }|d|d d|d g}| ||||| d S )	Nrl   Tr   c                 3  s   | ]}|  V  qd S r	   r   r   r   r   r   r     r   z;TestWhereCoercion.test_where_series_bool.<locals>.<genexpr>r   r:   rT   )rI   rJ   r   rV   rm   r   r   r   r   r   test_where_series_bool  s    z(TestWhereCoercion.test_where_series_boolro   rp   rw   rx   r.   r/   r   c              	   C  s  t t dt dt dt dg}|jdks8J t g d}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 )Nrq   rr   rs   rt   rp   rl   rU   periodsz2012-01-02 00:00rw   rx   z2012-01-04 00:00r:   rT   )rI   rJ   ru   r   r   
date_rangery   )r4   r   rN   rO   r   rP   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<J t g d}|||}t |d ||d |g}t|| t t j|d	d
}t t dt dt dt dg}| 	||||| d S )Nrp   rq   rr   rs   rt   rl   r   rS   rU   r   
2012-01-02
2012-01-04)
rI   r   ru   r   r   r   r<   r   r   r   )	r4   r   rN   rO   r   r   r   r   rP   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sJJ t g d	}|||}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 )Nro   rw   rx   rq   rr   rs   rt   rp   rl   r   rS   rX   rU   r   r   r   )
rI   ru   r)   r   r   r   r<   r   r   r   )	r4   r   rN   rO   r   r   r   r   rP   r   r   r   test_where_index_datetime64tz  s0    
z/TestWhereCoercion.test_where_index_datetime64tzr   r   c                 C  s   t d S r	   r1   r3   r   r   r   test_where_index_complex128$  s    z-TestWhereCoercion.test_where_index_complex128c                 C  s   t d S r	   r1   r3   r   r   r   test_where_index_bool(  s    z'TestWhereCoercion.test_where_index_boolc                 C  s   t d S r	   r1   r3   r   r   r   test_where_series_timedelta64,  s    z/TestWhereCoercion.test_where_series_timedelta64c                 C  s   t d S r	   r1   r3   r   r   r   test_where_series_period0  s    z*TestWhereCoercion.test_where_series_periodr   	   ZdaysDc                 C  s   t jddd}tg d}t d||dg}|||}t|| tdd}t j	|d |||d	 gt
d
}|d |u sJ |||}t|| d S )Nz1 DayrU   r   )TFFTz4 DaysNaTnsr   rT   rX   r:   )rI   Ztimedelta_rangerV   arrayr   r   r<   r   r.   r   r)   )r4   r   Ztdir   r   r   Zdtnatr   r   r   test_where_index_timedelta644  s    z.TestWhereCoercion.test_where_index_timedelta64c           
      C  s.  t jdddd}|d}tg d}|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-01rT   ZQS)r   r   Q)FTF
   r:   rX   r   rS   rU   r   z
2020-04-21r   )rI   r   Z	to_periodrV   r   r   r   r   r<   r   Zasarrayr)   r   r   r   )
r4   ZdtiZpir   r   r   r   otherZtdZperr   r   r   test_where_index_periodG  s&    
z)TestWhereCoercion.test_where_index_periodN)$r$   r5   r6   r   r   r   r   r   r)   r   rV   r*   r+   r,   r   r   r   rm   r   rI   ru   r   Zto_datetime64Zto_pydatetimer   r   r   r   r   r   r   r   r   r0   r  r  r   r   r   r   r   ,  sz   	
 
 
	


'




 
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g d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-d. Zejjddd/d0 Zd1S )2TestFillnaSeriesCoercionfillnar   r   c                 C  s   t d S r	   r1   r3   r   r   r   test_has_comprehensive_testsk  s    z5TestFillnaSeriesCoercion.test_has_comprehensive_testsc                 C  s0   |  }||}t|| |j|ks,J dS )z!test coercion triggered by fillnaN)r;   r  r<   r   r   r   r   r   r   _assert_fillna_conversiono  s    
z2TestFillnaSeriesCoercion._assert_fillna_conversionzfill_val, fill_dtyper:   rC   rD   Tc                 C  sH   |}|dt jddg}|jtks$J |d|ddg}| |||| d S )NrF   rG   rH   )rV   nanr   r)   r
  r4   r   r   
fill_dtyper   rO   rP   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&J |d|ddg}|t jkrN|tjkrNt}| |||| d S )NrC   rc   rd   )	rV   r  r   r+   r,   rI   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$J t d|ddg}| |||| d S )NrD   rh   ri   )rI   rJ   rV   r  r   r,   r
  )r4   r   r  rO   rP   r   r   r   test_fillna_series_complex128  s    
z6TestFillnaSeriesCoercion.test_fillna_series_complex128ro   rp   rw   rx   r   )r.   r/   r)   r)   r   c                 C  sl   |}|t dt jt dt dg}|jdks6J |t d|t dt dg}| |||| d S )Nrq   rs   rt   rp   )rI   ru   r   r   r
  r  r   r   r   test_fillna_datetime  s"    z-TestFillnaSeriesCoercion.test_fillna_datetimerz   r   c           	      C  s   |}d}|t jd|dt jt jd|dt jd|dg}|jdksFJ |t jd|d|t jd|dt jd|dg}d }t|dd d ur|j|d jkrt}tj|d	d
  | 	|||| W d    n1 s0    Y  d S )Nrw   rq   rx   rs   rt   rz   ry   r   r   rY   )
rI   ru   r   r   r{   ry   r\   r<   r]   r
  )	r4   r   r   r  r   ry   rO   rP   r^   r   r   r   test_fillna_datetime64tz  s,     z1TestFillnaSeriesCoercion.test_fillna_datetime64tzc                 C  s   t d S r	   r1   r3   r   r   r   test_fillna_series_int64  s    z1TestFillnaSeriesCoercion.test_fillna_series_int64c                 C  s   t d S r	   r1   r3   r   r   r   test_fillna_index_int64  s    z0TestFillnaSeriesCoercion.test_fillna_index_int64c                 C  s   t d S r	   r1   r3   r   r   r   test_fillna_series_bool  s    z0TestFillnaSeriesCoercion.test_fillna_series_boolc                 C  s   t d S r	   r1   r3   r   r   r   test_fillna_index_bool  s    z/TestFillnaSeriesCoercion.test_fillna_index_boolc                 C  s   t d S r	   r1   r3   r   r   r   test_fillna_series_timedelta64  s    z7TestFillnaSeriesCoercion.test_fillna_series_timedelta64c                 C  s   t d S r	   r1   r3   r   r   r   test_fillna_series_period   s    z2TestFillnaSeriesCoercion.test_fillna_series_periodc                 C  s   t d S r	   r1   r3   r   r   r   test_fillna_index_timedelta64  s    z6TestFillnaSeriesCoercion.test_fillna_index_timedelta64c                 C  s   t d S r	   r1   r3   r   r   r   test_fillna_index_period  s    z1TestFillnaSeriesCoercion.test_fillna_index_periodN)r$   r5   r6   r   r   r   r   r	  r
  r   r)   r  rV   r+   r,   r  r  rI   ru   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g d"dd#d$ Zejg d"g d%d&d'd( Zejd)d* Zd+d, Zejjd-g d.dd/ejjd0d1d2gdd/d3d4 Zejjd-g d5dd/ejjd0g d5dd/d6d7 Zejjd8d9d:d; Zd<S )=TestReplaceSeriesCoercionr(   replacezdict[str, list]reprF   r   r)   rU   r   r*   rC   rb   r+   rD   rg   r,   TFr-   rq   rs   rp   )ZUTCrw   zdatetime64[ns, ]rx   r~   r   r}   dict)paramsc                 C  s   |j S r	   Zparamr4   r   r   r   r   how$  s    zTestReplaceSeriesCoercion.how)	r)   r*   r+   r,   r-   rp   datetime64[ns, UTC]rz   r}   c                 C  s   |j S r	   r!  r"  r   r   r   from_key(  s    z"TestReplaceSeriesCoercion.from_key)	r)   r*   r+   r,   r-   r.   r/   r/   r0   )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  rI   rJ   
ValueError)r4   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s6J |drN|drNd S |dv rZd S ||}|d	krt|d
v s|dkr|dv rtrt rt	
d| d|  t j| j| |d|d}n$t j| j| |dd}|j|ksJ t|| d S )NrT   rU   Zxxxr
   yyyr'   r   datetime)rz   r$  r+   r*   r,   )r*   r+   z32-bit platform buggy: z -> )r'   r   r   )rI   r   rJ   r  r   
startswithr  r   r   r   skipr<   r=   	r4   r#  r&  r%  r)  r'   rO   r   rP   r   r   r   test_replace_series`  s&    

z-TestReplaceSeriesCoercion.test_replace_seriesr&  )r}   r-   r)   r,   r+   r*   )Zindirectr%  r$  rz   c           	      C  st   t jddgdd}t j| j| |dd}|j|ks6J ||}t j| j| |dd}|j|ksdJ t|| d S )NrT   rU   xyzr
   r*  r+  )rI   r   rJ   r  r   r  r<   r=   r/  r   r   r   test_replace_series_datetime_tz~  s    	
z9TestReplaceSeriesCoercion.test_replace_series_datetime_tz)rp   r$  rz   c                 C  s   t jddgdd}t j| j| |dd}|j|ks6J d }t |}t|jt jrpt|jt jrp|j|jkrpt}d}	tj	||	d |
|}
W d    n1 s0    Y  t j| j| |dd}|j|ksJ t|
| d S )	NrT   rU   r1  r
   r*  r+  zexplicitly cast to objectrY   )rI   r   rJ   r  r   r   ZDatetimeTZDtyper\   r<   r]   r  r=   )r4   r#  r&  r%  r)  r'   rO   r^   Zrep_serr_   r   rP   r   r   r   %test_replace_series_datetime_datetime  s$    

(z?TestReplaceSeriesCoercion.test_replace_series_datetime_datetimer   r   c                 C  s   t d S r	   r1   r3   r   r   r   test_replace_series_period  s    z4TestReplaceSeriesCoercion.test_replace_series_periodN)r$   r5   r6   r    r   r  __annotations__rI   ru   ry   keyr   r   fixturer#  r%  r&  r)  r0  r   r   r2  r3  r   r4  r   r   r   r   r    sf   






r  )Z
__future__r   r,  r   r   ZnumpyrV   r   Zpandas.compatr   r   ZpandasrI   Zpandas._testingZ_testingr<   Zpandas.core.apir   r   r7  r%   r&   r8   r   r   r  r  r   r   r   r   <module>   s,   

  # ?  ; )