U
    sVcl~                     @   sX  d Z ddlmZ ddlmZmZ ddlZddl	Z	ddl
mZ ddlmZm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 ddlmZ G d
d dZG dd dZdd ZG dd dZG dd dZ e	j!"deddfeddfeddddfeddddfeddddfeddfedfgdd Z#dd  Z$d!d" Z%d#d$ Z&d%d& Z'dS )'z test the scalar Timedelta     )	timedelta)given
strategiesN)lib)NaTiNaT)NpyDatetimeUnit)OutOfBoundsTimedelta)	TimedeltaTimedeltaIndexoffsetsto_timedeltac                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )

TestAsUnitc                 C   s4  t dd}|d|kst|d}|j|jd ks:t|jtjjksLt|d}|j|jksft|j|jksvt|d}|j|jd kst|jtjjkst|d}|j|jkst|j|jkst|d}|j|jd	 kst|jtjjkst|d}|j|jkst|j|jks0td S )
N   daysnsus  ms@B s ʚ;)	r
   _as_unitAssertionErrorvalue_resor   	NPY_FR_us	NPY_FR_msNPY_FR_s)selftdresrt r$   P/tmp/pip-unpacked-wheel-xj8nt62q/pandas/tests/scalar/timedelta/test_timedelta.pytest_as_unit   s(    






zTestAsUnit.test_as_unitc              	   C   sn   d}t |tjj}d}tjt|d |d W 5 Q R X |d}|j|d ksXt	|j
tjjksjt	d S )N     &oz>Cannot cast 106752 days 00:00:00 to unit='ns' without overflowmatchr   r   r   )r
   _from_value_and_resor   r   r   pytestraisesr	   r   r   r   r   )r    r   r!   msgr"   r$   r$   r%   test_as_unit_overflows;   s    
z!TestAsUnit.test_as_unit_overflowsc              	   C   sv   t dd}|d}t dd}||ks*t|jtjjks<t|jdksJttjt	dd |jddd	 W 5 Q R X d S )
Ni  microsecondsr   r   )millisecondszCannot losslessly convert unitsr(   F)Zround_ok)
r
   r   r   r   r   r   r   r+   r,   
ValueErrorr    r!   r"   expectedr$   r$   r%   test_as_unit_roundingH   s    


z TestAsUnit.test_as_unit_roundingc                 C   s   t ddd}|jdkst|jdks,t|jjdks<t|jdksJt| dksZt|d}|jdksrt|jjdkst|jjdkst|jdkst|j	dkst| dkstd S )	Nr   r   r   i \&Q r   l    `;P r   )
r
   r   r   r   r   
componentsZ_dtotal_secondshoursZ_hr    r!   r"   r$   r$   r%   test_as_unit_non_nanoU   s    
z TestAsUnit.test_as_unit_non_nanoN)__name__
__module____qualname__r&   r.   r5   r;   r$   r$   r$   r%   r      s   r   c                   @   s   e Zd Zejdddgddd Zejdd Zejd	d
 Zej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dd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+S ),TestNonNanor   r   r   )paramsc                 C   s   |j S N)param)r    requestr$   r$   r%   unit_strh   s    zTestNonNano.unit_strc                 C   s   d| }t t|jS )NZNPY_FR_)getattrr   r   )r    rD   attrr$   r$   r%   unitl   s    
zTestNonNano.unitc                 C   s8   d}|t jjkr|}n|t jjkr,|d }n|d }|S )Nr'   r   r   )r   r   r   r   )r    rG   r   r   r$   r$   r%   valr   s    
zTestNonNano.valc                 C   s   t ||S rA   )r
   r*   )r    rG   rH   r$   r$   r%   r!   ~   s    zTestNonNano.tdc                 C   s:   t ||}|j|kst|j|ks(t|jdks6td S )N  )r
   r*   r   r   r   r   )r    rG   rH   r!   r$   r$   r%   test_from_value_and_reso   s    z$TestNonNano.test_from_value_and_resoc                 C   s6   t |j|kst| j|ks"t|
 j|ks2td S rA   )absr   r   )r    r!   rG   r$   r$   r%   test_unary_non_nano   s    zTestNonNano.test_unary_non_nanoc                 C   s2   || }t d|}||ks t|j|ks.td S )Nr   )r
   r*   r   r   )r    r!   rG   r"   r4   r$   r$   r%   test_sub_preserves_reso   s    z#TestNonNano.test_sub_preserves_resoc                 C   s.   |d }|j |j d kst|j|ks*td S )N   )r   r   r   r    r!   rG   r"   r$   r$   r%   test_mul_preserves_reso   s    z#TestNonNano.test_mul_preserves_resoc                 C   s@   t ddd}||k st||ks$t||kr0t||ks<td S )Ni r   )r   rG   )r
   r   )r    r!   otherr$   r$   r%   test_cmp_cross_reso   s
    zTestNonNano.test_cmp_cross_resoc                 C   s2   |  }tdd}t|tks"t||ks.td S )NrI   r   )to_pytimedeltar   typer   r3   r$   r$   r%   test_to_pytimedelta   s    
zTestNonNano.test_to_pytimedeltac                 C   s   |  | |jfD ]z}t|tjs(t|d|jks<t|t	j
jkrX|jdkstq|t	jjkrt|jdkstq|t	jjkr|jdkstqd S )Ni8m8[s]zm8[ms]zm8[us])to_timedelta64to_numpyZasm8
isinstancenptimedelta64r   viewr   r   r   dtyper   r   rO   r$   r$   r%   test_to_timedelta64   s    zTestNonNano.test_to_timedelta64c              	   C   s~   || dkst d| | dks$t t|j}d}tjt|d ||  W 5 Q R X tjt|d | |  W 5 Q R X d S )Nr         @-with mismatched resolutions are not supportedr(   r   r
   r   r+   r,   r2   rS   r    r!   rQ   r-   r$   r$   r%   test_truediv_timedeltalike   s    
z&TestNonNano.test_truediv_timedeltalikec                 C   sn   |t j tkst|d }|j|jd ks.t|j|jks>t|d }|j|jd ksZt|j|jksjtd S NrN   g       @)r[   nanr   r   r   r   r:   r$   r$   r%   test_truediv_numeric   s    z TestNonNano.test_truediv_numericc              	   C   s~   || dkst d| | dks$t t|j}d}tjt|d ||  W 5 Q R X tjt|d | |  W 5 Q R X d S )Nr   r`   rN   ra   r(   rb   rc   r$   r$   r%   test_floordiv_timedeltalike   s    
z'TestNonNano.test_floordiv_timedeltalikec                 C   s   |t j tkst|d }|j|jd ks.t|j|jks>t|d }|j|jd ksZt|j|jksjt|t t j tkst|t d }|j|jd kst|j|jkst|t d }|j|jd kst|j|jkstd S re   )r[   rf   r   r   r   r   arrayr:   r$   r$   r%   test_floordiv_numeric   s    z!TestNonNano.test_floordiv_numericc              	   C   sR  t dd}|| }|j|jks"t|j|jd ks6t|| }|j|jksNt|j|jd ksbt|| }|j|jkszt|j|jd kst|| }|j|jkst|jd|j kstt d}d}tjt|d ||  W 5 Q R X tjt|d ||  W 5 Q R X tjt|d ||  W 5 Q R X tjt|d ||  W 5 Q R X d S )Nr   r   i  zTimedelta addition/subtraction with mismatched resolutions is not allowed when casting to the lower resolution would require lossy roundingr(   )r
   r   r   r   r+   r,   r2   )r    r!   rQ   resultZother2r-   r$   r$   r%   test_addsub_mismatched_reso   s0    
z'TestNonNano.test_addsub_mismatched_resoc                 C   s:   |j |kst|j j|jks t|j jtjd ks6td S Nr   )minr   r   r   r   r    r!   r$   r$   r%   test_min  s    zTestNonNano.test_minc                 C   s>   |j |kst|j j|jks t|j jttjj ks:td S rA   )maxr   r   r   r[   iinfoint64ro   r$   r$   r%   test_max  s    zTestNonNano.test_maxc                 C   s4   t d|j}|j}||ks t|j|jks0td S rm   )r
   r*   r   
resolutionr   )r    r!   r4   rk   r$   r$   r%   test_resolution  s    zTestNonNano.test_resolutionN)r<   r=   r>   r+   ZfixturerD   rG   rH   r!   rJ   rL   rM   rP   rR   rU   r_   rd   rg   rh   rj   rl   rp   rt   rv   r$   r$   r$   r%   r?   g   s.   



#r?   c                   C   s   t jt tjd kstt jjtjjks,tt jt t	
t	jjksHtt jjtjjks\tt jt dksntt jjtjjkstd S rm   )r
   rn   r   r   r   r   r   Z	NPY_FR_nsrq   r[   rr   rs   ru   r$   r$   r$   r%   'test_timedelta_class_min_max_resolution#  s    rw   c                   @   s   e Zd Zdd Zdd ZdS )TestTimedeltaUnaryOpsc              	   C   s   t ddd}d}tjt|d |  W 5 Q R X tjt|d |   W 5 Q R X d}tjt|d |   W 5 Q R X d S )N
   drG   zbad operand type for unary ~r(   z0ufunc 'invert' not supported for the input types)r
   r+   r,   	TypeErrorrS   rX   )r    r!   r-   Zumsgr$   r$   r%   test_invert1  s    z!TestTimedeltaUnaryOps.test_invertc                 C   s   t ddd}| t dddks"t| t dks4t|
 t dddksJtt||ksZtt| |ksltt| t dkstd S )Nry   rz   r{   z-10dZ10d)r
   r   rK   ro   r$   r$   r%   test_unary_ops@  s    z$TestTimedeltaUnaryOps.test_unary_opsN)r<   r=   r>   r}   r   r$   r$   r$   r%   rx   0  s   rx   c                   @   s  e Zd Zejddddgdd Zdd Zd	d
 Zdd Z	dd Z
dd Zejddd dD dd dD  dd dD  dd dD  dd dD  dd dD  dd d D  ejd!ejeejgd"d# Zejd$d%d&d'gd(d) Zd*d+ Zd,d- Zd.d/ Zejd0d1ed2ed3fd4ed5ed6fd7ed8ed9fd:ed;ed<fd=ed>ed?fd@edAedBfdCedDedEfdFedGedHfdIedJedKfdLedMedNfg
dOdP ZdQdR ZdSdT ZejjdUdVdWeejedX ej dYdZejd[ej!ej"ej#gd\d] Z$ejd$d^d_d`dagdbdc Z%ddde Z&dfdg Z'dhdi Z(djdk Z)dldm Z*dndo Z+dpdq Z,drds Z-dtdu Z.dvS )wTestTimedeltaszunit, value, expected)r   gsh|#@i'  )r   gr#@i )r   gh#@l   c(	 c                 C   s<   t ||d}|j|kstt t|| }|j|ks8td S )Nr{   )r
   r   r   str)r    rG   r   r4   rk   r$   r$   r%   &test_rounding_on_int_unit_constructionO  s    
z5TestTimedeltas.test_rounding_on_int_unit_constructionc                 C   s<   t d}d}t| | t tj}t| s8td S )Nz1 days, 10:11:12.100123456g@)r
   tmZassert_almost_equalr8   r[   rf   isnanr   )r    rngZexptr$   r$   r%   test_total_seconds_scalar^  s
    
z(TestTimedeltas.test_total_seconds_scalarc                 C   s   t dddt dfD ]}| }|t |ks0t||ks<tt|trPt|t rTt|t|jdksjt| }|t|jdkst||kstt|tjstqt d}|| kstd S )Nry   rz   r{   z1 days, 10:11:12.012345r   z1 days, 10:11:12.012345678)	r
   rS   r   rZ   r   r[   r\   r   rX   )r    r!   ZpydtZtd64r$   r$   r%   test_conversiong  s    zTestTimedeltas.test_conversionc              	   C   sR  dd }t d}|jdkst|jdks,t|jdks:t|jdksHtd}tjt|	dd	 |j
 W 5 Q R X tjt|	d
d	 |j W 5 Q R X tjt|	dd	 |j W 5 Q R X ||j ||j ||j ||j td}t|tdkstt|dkst| tdks*ttdj dks@ttdjdksTtt d}|jdkslt|jdks|t|jdkst|jdkstd}tjt|	dd	 |j
 W 5 Q R X tjt|	d
d	 |j W 5 Q R X tjt|	dd	 |j W 5 Q R X t ddj}|jdks.t|j
dks>t|jdksNt|jdks^t|jdksnt|jdks~t|jdkst||j ||j
 ||j ||j ||j ||j ||j tdj}|jdkst|j
dkst|jdkst|jdkst|jdks.t|jdks>t|jdksNtd S )Nc                 S   s   t | tstd S rA   )rZ   intr   )r   r$   r$   r%   check|  s    z)TestTimedeltas.test_fields.<locals>.checkz1 days, 10:11:12r   i@  r   z('Timedelta' object has no attribute '{}'r9   r(   minutesr1   z-1 days, 10:11:12z13:48:48z-1 days +10:11:12z0 days 13:48:48l     g4 l  g4 z-1 days, 10:11:12.100123456i i  r      ;   i  z-1 days 1 us)r   r   r   secondsr0   nanosecondsr+   r,   AttributeErrorformatr9   r   r1   r
   rK   r   r   r7   )r    r   r   r-   r!   tupr$   r$   r%   test_fields{  st    











zTestTimedeltas.test_fieldsc                 C   s    t ddd}td|kstd S )Nr   r   r{   Z
P0DT0H0M1S)r
   r   r   )r    r4   r$   r$   r%   test_iso_conversion  s    z"TestTimedeltas.test_iso_conversionc                 C   s`   t d }|jjdkst|dtks.tt d }|jjdksJt|dtks\td S )NZnatMrs   rf   )r   rY   r^   kindr   astyper   )r    rk   r$   r$   r%   test_nat_converters  s    z"TestTimedeltas.test_nat_converterszunit, np_unitc                 C   s   g | ]}|d fqS )Wr$   .0r   r$   r$   r%   
<listcomp>  s     zTestTimedeltas.<listcomp>)r   wc                 C   s   g | ]}|d fqS )Dr$   r   r$   r$   r%   r     s     )r   rz   r   dayZDaysDayc                 C   s   g | ]}|d fqS )mr$   r   r$   r$   r%   r     s   )	r   minutern   r   tZMinuteZMinZMinutesTc                 C   s   g | ]}|d fqS )r   r$   r   r$   r$   r%   r     s   )r   r   secsecondSZSecondsZSecZSecondc                 C   s   g | ]}|d fqS )r   r$   r   r$   r$   r%   r     s   )r   r1   ZmillisecondZmilliZmillislZMSZMillisecondsZMillisecondZMilliZMillisLc                 C   s   g | ]}|d fqS )r   r$   r   r$   r$   r%   r     s   )r   r0   microsecondmicroZmicrosuZUSZMicrosecondsZMicrosecondZMicroZMicrosUc                 C   s   g | ]}|d fqS )r   r$   r   r$   r$   r%   r     s   )r   r   Z
nanosecondZnanonanosnZNSZNanosecondsZ
NanosecondZNanoZNanosNwrapperc                    s*  t  fddtd D }t|tdd}t|| t |tdd}t|| fddtdD }t||}t|| t||}t|| tt	d 
d}tdd}||ksttdd}||ksttd }||ks
ttd }||ks&td S )	Nc                    s   g | ]}t | qS r$   )r[   r\   )r   i)np_unitr$   r%   r   +  s     z3TestTimedeltas.test_unit_parser.<locals>.<listcomp>   r{   c                    s   g | ]}|   qS r$   r$   )r   xr{   r$   r%   r   2  s     rN   ztimedelta64[ns]2)r   r[   Zarangetolistr   ranger   Zassert_index_equalr
   r\   r   r   )r    rG   r   r   r4   rk   Zstr_reprr$   )r   rG   r%   test_unit_parser  s*    WzTestTimedeltas.test_unit_parserrG   Yyr   c              	   C   sx   d}t jt|d td| W 5 Q R X t jt|d td| W 5 Q R X t jt|d tddg| W 5 Q R X d S )Nz/Units 'M', 'Y', and 'y' are no longer supportedr(   ry   r   rN   )r+   r,   r2   r
   r   )r    rG   r-   r$   r$   r%   test_unit_m_y_raisesD  s    z#TestTimedeltas.test_unit_m_y_raisesc                 C   s   t dtddkstt dtddks0tt dddtddksLtt dddtddkshtt dddtddkstt dddtddkstt dddtdd	kstd S )
Nr   r   ry   r{   r   r   r   rz   r   )r
   r[   r\   r   r    r$   r$   r%   test_numeric_conversionsP  s    z'TestTimedeltas.test_numeric_conversionsc                 C   sp   t tddtdddks$tt tddtdddksHtt tddtdddksltd S )	Nr   r   r   m8[ns]r/   r   r   r   )r
   r   r[   r\   r   r   r   r$   r$   r%   test_timedelta_conversionsZ  s    

z)TestTimedeltas.test_timedelta_conversionsc              	   C   sn   t d}| | kstd}tjt|d |d W 5 Q R X tjt|d |jdd W 5 Q R X d S )NZ10m7sz$dtype and copy arguments are ignoredr(   rW   T)copy)r
   rX   rY   r   r+   r,   r2   )r    r!   r-   r$   r$   r%   test_to_numpy_aliasc  s    z"TestTimedeltas.test_to_numpy_aliasz
freq,s1,s2r   1 days 02:34:56.789123456-1 days 02:34:56.789123456r   z1 days 02:34:56.789123000z-1 days 02:34:56.789123000r   z1 days 02:34:56.789000000z-1 days 02:34:56.789000000r   1 days 02:34:57z-1 days 02:34:57Z2Sz1 days 02:34:56z-1 days 02:34:56Z5Sz1 days 02:34:55z-1 days 02:34:55r   1 days 02:35:00z-1 days 02:35:00Z12Tz1 days 02:36:00z-1 days 02:36:00Hz1 days 03:00:00z-1 days 03:00:00rz   z1 daysz-1 daysc                 C   s@   t d}t d}||}||ks&t||}||ks<td S )Nr   r   )r
   roundr   )r    freqs1s2t1t2Zr1Zr2r$   r$   r%   
test_roundo  s    

zTestTimedeltas.test_roundc              
   C   s>   t d}dD ],\}}tjt|d || W 5 Q R X qd S )Nr   ))r   z,<YearEnd: month=12> is a non-fixed frequency)r   z#<MonthEnd> is a non-fixed frequency)ZfoobarzInvalid frequency: foobarr(   )r
   r+   r,   r2   r   )r    r   r   r-   r$   r$   r%   test_round_invalid  s    z!TestTimedeltas.test_round_invalidc              	   C   s   t jd}t jt dd t d }||ks0tt jd}t jt d }||ksVttjtdd t jd W 5 Q R X d	d	d
g}tjt|d t jd W 5 Q R X d S )Nr   r   r   ii2zvalue too larger(   |z)Python int too large to convert to C longzint too big to convert)
r
   rn   ceilr   rq   floorr+   r,   OverflowErrorjoin)r    rk   r4   r-   r$   r$   r%    test_round_implementation_bounds  s    z/TestTimedeltas.test_round_implementation_boundszFailing on buildsF)reasonstrictr   )Z	min_valueZ	max_value)rH   methodc                 C   s  t |}t|}||d|ks$t||d}d}t || j|k sJt|j| dks\t||d}d}t || j|k st|j| dkst||d}d}t || j|k st|j| dkst||d	}d
}t || j|k st|j| dkst||d}d}t || j|k s.t|j| dksBt||d}d}t || j|k sjt|j| dks~td S )Nr   r   r   r   r   r   r   r   rn   l    Xp7 hl     qar   l     "R: )r[   rs   r
   r   rK   r   )r    rH   r   r!   r"   r   r$   r$   r%   test_round_sanity  s6    






z TestTimedeltas.test_round_sanityr   r   r   r   c                 C   s   t d|}|d}|t dks(t|j|jks8t|d}|t dksRt|j|jksbt|d}|t dks|t|j|jkstd S )Nr   rn   r   z1 days 02:34:00)r
   r   r   r   r   r   r   )r    rG   r!   r"   r$   r$   r%   test_round_non_nano  s    


z"TestTimedeltas.test_round_non_nanoc                 C   s,   t ddd}t|t stt|ts(td S )Nry   rz   r{   )r
   rZ   r   r   ro   r$   r$   r%   test_identity  s    zTestTimedeltas.test_identityc              	   C   sz  dd }t dtddks tt dtddks8tt dtddksPtt d	tddkshtt d
tddkstt dtddkstt dtddkstt dtddkstt dtddkstt dtddkstt dtddkstt dtddks,tt dtddksFtt dtddks`tt dtddksztt dtddkstt dtdd kstt dtddkstt dtd dkstt d!td"dkstt d#td$dkstt d%|td&d'ks6tt d(|td&d' ksVtt d)|td&d'ksttt d*|tdd'kstt d+|tdd'kstt d,|tdd'kstt d-|tdd'kstt d.|tdd'ks
tt d/|tdd' ks*td0}tjt|d1 t d2 W 5 Q R X d3}tjt|d1 t d4 W 5 Q R X d S )5Nc                 S   s
   |  dS Nr   r   vr$   r$   r%   conv  s    z9TestTimedeltas.test_short_format_converters.<locals>.conv10ry   r   Z10nsZ100d   Z100nsZ1000r   Z1000nsZ1000NSZ10usi'  Z100usi Z1000usr   Z1000UsZ1000uSZ1msZ10msi Z100msi Z1000msr   z-1sZ1sZ10sl    d(	 Z100sl    h] Z1000sl    J)Z1dr   r   z-1dZ1DZ10DZ100DZ1000DZ10000Dz 10000D z
 - 10000D zinvalid unit abbreviationr(   Z1foozunit abbreviation w/o a numberZfoo)r
   r[   r\   r   r+   r,   r2   )r    r   r-   r$   r$   r%   test_short_format_converters  sJ      z+TestTimedeltas.test_short_format_convertersc              	   C   sR  dd }t dd}td||ks(ttd||ks<ttd|| ksRttd|t dd	ksnttd
|t dd	ksttd|t dd	ksttd|t ddksttd|| t dd	 ksttd||t dd	 ksttd||t dd ks(td}tjt|d td W 5 Q R X d S )Nc                 S   s
   |  dS r   r   r   r$   r$   r%   r   '  s    z8TestTimedeltas.test_full_format_converters.<locals>.convr   r   Z1daysz1days,z- 1days,z00:00:01r   z06:00:01iaT  z
06:00:01.0z06:00:01.01iIr   z- 1days, 00:00:01z1days, 06:00:01z1days, 06:00:01.01zhave leftover unitsr(   z- 1days, 00)r[   r\   r
   r   r+   r,   r2   )r    r   d1r-   r$   r$   r%   test_full_format_converters&  s*    

"z*TestTimedeltas.test_full_format_convertersc                 C   s"   t d}t|}||kstd S )Nz1 days 10:11:12.0123456)r
   r   Zround_trip_pickler   )r    r   Zv_pr$   r$   r%   test_pickleD  s    
zTestTimedeltas.test_picklec                 C   s   t dd}tdd}t|t|ks(t|di}|| dks@tdd tdD }tdd	 |D shtt dd
}t|t| kstd S )Nr   r   r   rN   c                 S   s    g | ]}t d dt |d qS )r   r   r   )r
   )r   r   r$   r$   r%   r   S  s     z?TestTimedeltas.test_timedelta_hash_equality.<locals>.<listcomp>   c                 s   s"   | ]}t |t | kV  qd S rA   )hashrS   )r   r!   r$   r$   r%   	<genexpr>T  s     z>TestTimedeltas.test_timedelta_hash_equality.<locals>.<genexpr>r   )r
   r   r   r   r   allrS   )r    r   r!   rz   ZtdsZns_tdr$   r$   r%   test_timedelta_hash_equalityJ  s    


z+TestTimedeltas.test_timedelta_hash_equalityc              	   C   s  t t j}t t j}|jtd ks&t|jtjks6t|t dd tksLtd}t	j
t|d |t dd  W 5 Q R X t	j
t|d |t dd  W 5 Q R X t |jd d}|tkstd}t	j
t|d t |jd d W 5 Q R X d}t	j
t|d t |jd d W 5 Q R X d S )Nr   r   zint too (large|big) to convertr(   rN   zACannot cast -9223372036854775809 from ns to 'ns' without overflowz@Cannot cast 9223372036854775808 from ns to 'ns' without overflow)r
   rn   rq   r   r   r   r   i8maxr   r+   r,   r   r	   )r    Zmin_tdZmax_tdr-   r!   r$   r$   r%   test_implementation_limitsZ  s$    

z)TestTimedeltas.test_implementation_limitsc                 C   s   t d dkstt d dks(tt d dks<tt d dksPtt d d d	k shtdt d  d	k std S )
NZ30Sg      >@0g        z-2Sg       z5.324SgK@g#B;)r
   r8   r   r   r$   r$   r%   test_total_seconds_precisiony  s    z+TestTimedeltas.test_total_seconds_precisionc                 C   s   t ddjdkstt dddjdks*tt dddjdks@tt ddd	jd
ksVtt dddjdksltt dddjdkstt dddjdkstd S )Nr   r   r      r   r9   r   )r   r   r   )r   r   r   )r   r1   r   )r   r0   r   )r   r   r   )r
   Zresolution_stringr   r   r$   r$   r%   test_resolution_string  s    z%TestTimedeltas.test_resolution_stringc                 C   s@   t ddd}|j}|t ddks$tt j}|t ddks<td S )N      r   r   )r   )r
   ru   r   )r    r!   rk   r$   r$   r%   test_resolution_deprecated  s
    z)TestTimedeltas.test_resolution_deprecatedN)/r<   r=   r>   r+   markparametrizer   r   r   r   r   r   r[   ri   listpdZIndexr   r   r   r   r   r
   r   r   r   Zxfailr   stZintegersr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r$   r$   r$   r%   r   N  s   
	J	.?S

	

 $
2		r   zvalue, expectedZ10STz-10Sry   r   r{   Fr~   c                 C   s   t | |kstd S rA   )boolr   )r   r4   r$   r$   r%   test_truthiness  s    r   c                  C   sZ   t ddd} | jd }|| j7 }|d9 }|| j7 }|d9 }|| j7 }| j}||ksVtd S )Nl   ?2\BT, r   r{   r6   r   r   )r
   r   r   r0   r   r   r   )r!   rk   r4   r$   r$   r%   "test_timedelta_attribute_precision  s    



r   c               	   C   s`   t ddd} tjtdd | j}W 5 Q R X |d ks8ttjtdd t	
 | _W 5 Q R X d S )N"[r   r{   zTimedelta.freqr(   is not writable)r
   r   assert_produces_warningFutureWarningr   r   r+   r,   r   r   r   )r!   r   r$   r$   r%   test_freq_deprecated  s    r  c               	   C   sP   t ddd} tjtdd | j W 5 Q R X tjtdd d| _W 5 Q R X d S )Nr  r   r{   zTimedelta.is_populatedr(   r  r   )r
   r   r  r  Zis_populatedr+   r,   r   r!   r$   r$   r%   test_is_populated_deprecated  s
    r  c               	   C   s0   t ddd} tjtdd | j W 5 Q R X d S )Nr  r   r{   zTimedelta.delta isr(   )r
   r   r  r  deltar  r$   r$   r%   test_delta_deprecated  s    r	  )(__doc__datetimer   Z
hypothesisr   r   r   Znumpyr[   r+   Zpandas._libsr   Zpandas._libs.tslibsr   r   Zpandas._libs.tslibs.dtypesr   Zpandas.errorsr	   Zpandasr   r
   r   r   r   Zpandas._testingZ_testingr   r   r?   rw   rx   r   r   r   r   r   r  r  r	  r$   r$   r$   r%   <module>   sJ   J =    M




