o
    ҷh։                     @   sD  d Z ddlmZ ddl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 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S )!z test the scalar Timedelta     )	timedeltaN)given
strategies)lib)NaTiNaT)NpyDatetimeUnit)OutOfBoundsTimedelta)	TimedeltaTimedeltaIndexto_timedeltac                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )

TestAsUnitc                 C   s.  t dd}|d|u sJ |d}|j|jd ksJ |jtjjks&J |d}|j|jks3J |j|jks;J |d}|j|jd ksJJ |jtjjksSJ |d}|j|jks`J |j|jkshJ |d}|j|jd	 kswJ |jtjjksJ |d}|j|jksJ |j|jksJ d S )
N   daysnsus  ms@B s ʚ;)	r
   as_unit_value_cresor   	NPY_FR_usvalue	NPY_FR_msNPY_FR_s)selftdresrt r#   _/var/www/html/venv/lib/python3.10/site-packages/pandas/tests/scalar/timedelta/test_timedelta.pytest_as_unit   s(   






zTestAsUnit.test_as_unitc                 C   s   d}t |tjj}d}tjt|d |d W d    n1 s#w   Y  |d}|j	|d ks6J |j
tjjks?J d S )N     &o>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   s   t dd}|d}t dd}||ksJ |jtjjksJ |jdks%J tjt	dd |jddd	 W d    d S 1 s?w   Y  d S )
Ni  microsecondsr   r   )millisecondszCannot losslessly convert unitsr(   F)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J |jdksJ |jjdksJ |jdks%J | dks-J |d}|jdks9J |jjdksAJ |jjdksIJ |jdksPJ |jdksWJ | dks_J d S )	Nr   r   r   i \&Q r   l    `;P r   )	r
   r   r   r   
components_dtotal_secondshours_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.   r6   r>   r#   r#   r#   r$   r      s
    r   c                   @   s   e Zd Zejg d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-d+d,Zd*S ).TestNonNano)r   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 )NNPY_FR_)getattrr   r   )r   rG   attrr#   r#   r$   unitl   s   
zTestNonNano.unitc                 C   s<   d}|t jjkr|}|S |t jjkr|d }|S |d }|S )Nr&   r   r   )r   r   r   r   )r   rK   r   r   r#   r#   r$   valr   s   zTestNonNano.valc                 C   s   t ||S rD   )r
   r*   )r   rK   rL   r#   r#   r$   r    ~   s   zTestNonNano.tdc                 C   s:   t ||}|j|ksJ |j|ksJ |jdksJ d S )N  )r
   r*   r   r   r   )r   rK   rL   r    r#   r#   r$   test_from_value_and_reso   s   z$TestNonNano.test_from_value_and_resoc                 C   s6   t |j|ks	J | j|ksJ |
 j|ksJ d S rD   )absr   )r   r    rK   r#   r#   r$   test_unary_non_nano   s   zTestNonNano.test_unary_non_nanoc                 C   s2   || }t d|}||ksJ |j|ksJ d S )Nr   )r
   r*   r   )r   r    rK   r!   r5   r#   r#   r$   test_sub_preserves_reso   s   z#TestNonNano.test_sub_preserves_resoc                 C   s.   |d }|j |j d ksJ |j|ksJ d S )N   )r   r   r   r    rK   r!   r#   r#   r$   test_mul_preserves_reso   s   z#TestNonNano.test_mul_preserves_resoc                 C   s@   t ddd}||k sJ ||ksJ ||krJ ||ksJ d S )Ni r   )r   rK   r
   )r   r    otherr#   r#   r$   test_cmp_cross_reso   s
   zTestNonNano.test_cmp_cross_resoc                 C   s2   |  }tdd}t|tu sJ ||ksJ d S )NrM   r   )to_pytimedeltar   typer4   r#   r#   r$   test_to_pytimedelta   s   
zTestNonNano.test_to_pytimedeltac                 C   s   |  | |jfD ]=}t|tjsJ |d|jksJ |tj	j
kr,|jdks+J q
|tjj
kr:|jdks9J q
|tjj
krG|jdksGJ q
d S )Ni8m8[s]zm8[ms]zm8[us])to_timedelta64to_numpyasm8
isinstancenptimedelta64viewr   r   r   r   dtyper   r   rS   r#   r#   r$   test_to_timedelta64   s   zTestNonNano.test_to_timedelta64c           	      C   s   || dksJ d| | dksJ t |j}d}tjt|d ||  W d    n1 s/w   Y  | | }| |  }||ksHJ t dtjj	}t dtj
j	}|| }|dksbJ || }|dkslJ d S )Nr         @z?Cannot cast 106752 days 00:00:00 to unit='ns' without overflow.r(   2   gMbP?r   r
   r   r+   r,   r	   rX   r*   r   r   r   r   )	r   r    rV   r-   r!   r5   leftrightresultr#   r#   r$   test_truediv_timedeltalike   s    

z&TestNonNano.test_truediv_timedeltalikec                 C   sn   |t j tu s	J |d }|j|jd ksJ |j|jksJ |d }|j|jd ks-J |j|jks5J d S NrR   g       @)ra   nanr   r   r   r=   r#   r#   r$   test_truediv_numeric   s   z TestNonNano.test_truediv_numericc                 C   s   || dksJ d| | dksJ t |j}d}tjt|d ||  W d    n1 s/w   Y  | | }|dks@J t dtjj	}t dtj
j	}|| }|dksZJ || }|dksdJ d S )	Nr   rf   rR   r'   r(   r   i  rg   rh   )r   r    rV   r-   r!   ri   rj   rk   r#   r#   r$   test_floordiv_timedeltalike   s   

z'TestNonNano.test_floordiv_timedeltalikec                 C   s   |t j tu s	J |d }|j|jd ksJ |j|jksJ |d }|j|jd ks-J |j|jks5J |t t j tu sAJ |t d }|j|jd ksRJ |j|jksZJ |t d }|j|jd kskJ |j|jkssJ d S rm   )ra   rn   r   r   r   arrayr=   r#   r#   r$   test_floordiv_numeric   s   z!TestNonNano.test_floordiv_numericc                 C   s  t ddd}|| }|j|jksJ |j|jd ksJ || }|j|jks*J |j|jd ks4J || }|j|jks@J |j|jd ksJJ || }|j|jksVJ |jd|j ks`J t d}d}tjt|d ||  W d    n1 s|w   Y  tjt|d ||  W d    n1 sw   Y  tjt|d ||  W d    n1 sw   Y  tjt|d ||  W d    d S 1 sw   Y  d S )Nr   r   r     r'   r(   )r
   r   r   r   r+   r,   r	   )r   r    rV   rk   other2r-   r#   r#   r$   test_addsub_mismatched_reso  s6   



"z'TestNonNano.test_addsub_mismatched_resoc                 C   s:   |j |ksJ |j j|jksJ |j jtjd ksJ d S Nr   )minr   r   r   r   r    r#   r#   r$   test_min%  s   zTestNonNano.test_minc                 C   s>   |j |ksJ |j j|jksJ |j jttjj ksJ d S rD   )maxr   r   ra   iinfoint64rx   r#   r#   r$   test_max*  s   zTestNonNano.test_maxc                 C   s4   t d|j}|j}||ksJ |j|jksJ d S rv   )r
   r*   r   
resolution)r   r    r5   rk   r#   r#   r$   test_resolution/  s   zTestNonNano.test_resolutionreturnNc                 C   s    t ddj}t|sJ d S )Nr   r   )r
   r   rz   hash)r   second_resolution_maxr#   r#   r$   	test_hash5  s   zTestNonNano.test_hash)r   N)r?   r@   rA   r+   fixturerG   rK   rL   r    rN   rP   rQ   rT   rW   rZ   re   rl   ro   rp   rr   ru   ry   r}   r   r   r#   r#   r#   r$   rB   g   s2    



!rB   c                   C   s   t jt tjd ksJ t jjtjjksJ t jt t	
t	jjks$J t jjtjjks.J t jt dks7J t jjtjjksAJ d S rv   )r
   rw   r   r   r   r   	NPY_FR_nsr   rz   ra   r{   r|   r~   r#   r#   r#   r$   'test_timedelta_class_min_max_resolution<  s   r   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 d    n1 sw   Y  tjt|d |   W d    n1 s9w   Y  d}tjt|d |   W d    d S 1 sXw   Y  d S )N
   drK   zbad operand type for unary ~r(   z0ufunc 'invert' not supported for the input types)r
   r+   r,   	TypeErrorrX   r]   )r   r    r-   umsgr#   r#   r$   test_invertJ  s   "z!TestTimedeltaUnaryOps.test_invertc                 C   s   t ddd}| t dddksJ | t dksJ |
 t dddks%J t||ks-J t| |ks6J t| t dksAJ d S )Nr   r   r   z-10d10d)r
   rO   rx   r#   r#   r$   test_unary_opsY  s   z$TestTimedeltaUnaryOps.test_unary_opsN)r?   r@   rA   r   r   r#   r#   r#   r$   r   I  s    r   c                   @   s  e Zd Zejdg d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"g d#d$d% Zd&d' Zd(d) Zd*d+ Zejd,d-ed.ed/fd0ed1ed2fd3ed4ed5fd6ed7ed8fd9ed:ed;fd<ed=ed>fd?ed@edAfdBedCedDfdEedFedGfdHedIedJfg
dKdL ZdMdN ZdOdP ZeejedQ ejdRdSejdTej ej!ej"gdUdV Z#ejd"g dWdXdY Z$dZd[ Z%d\d] Z&d^d_ Z'd`da Z(dbdc Z)ejj*dddeeeje+j, dQ df e+j,df dRdge-dhdifdjdkZ.dldm Z/dndo Z0dpdq Z1drds Z2diS )tTestTimedeltaszunit, value, expected))r   gsh|#@i'  )r   gr#@i )r   gh#@l   c(	 c                 C   s<   t ||d}|j|ksJ t t|| }|j|ksJ d S )Nr   )r
   r   str)r   rK   r   r5   rk   r#   r#   r$   &test_rounding_on_int_unit_constructionh  s   
z5TestTimedeltas.test_rounding_on_int_unit_constructionc                 C   s<   t d}d}t| | t tj}t| sJ d S )Nz1 days, 10:11:12.100123456g@)r
   tmassert_almost_equalr:   ra   rn   isnan)r   rngexptr#   r#   r$   test_total_seconds_scalarw  s
   
z(TestTimedeltas.test_total_seconds_scalarc                 C   s   t dddt dfD ]H}| }|t |ksJ ||ksJ t|tr(t|t r*J |t|jdks5J | }|t|jdksDJ ||ksJJ t|tjsRJ q
t d}|| ks_J d S )Nr   r   r   z1 days, 10:11:12.012345r   z1 days, 10:11:12.012345678)r
   rX   r`   r   ra   rb   r   r]   )r   r    pydttd64r#   r#   r$   test_conversion  s   zTestTimedeltas.test_conversionc                 C   s  dd }t d}|jdksJ |jdksJ |jdksJ |jdks$J d}tjt|dd	 |j	 W d    n1 s>w   Y  tjt|d
d	 |j
 W d    n1 s[w   Y  tjt|dd	 |j W d    n1 sxw   Y  ||j ||j ||j ||j td}t|tdksJ t|dksJ | tdksJ tdj dksJ tdjdksJ t d}|jdksJ |jdksJ |jdksJ |jdksJ d}tjt|dd	 |j	 W d    n1 sw   Y  tjt|d
d	 |j
 W d    n	1 sw   Y  tjt|dd	 |j W d    n	1 s9w   Y  t ddj}|jdksLJ |j	dksTJ |j
dks\J |jdksdJ |jdkslJ |jdkstJ |jdks|J ||j ||j	 ||j
 ||j ||j ||j ||j tdj}|jdksJ |j	dksJ |j
dksJ |jdksJ |jdksJ |jdksJ |jdksJ d S )Nc                 S   s   t | tsJ d S rD   )r`   int)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 '{}'r;   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   secondsr0   nanosecondsr+   r,   AttributeErrorformatr;   r   r1   r
   rO   r   r   r8   )r   r   r   r-   r    tupr#   r#   r$   test_fields  s   











zTestTimedeltas.test_fieldsc                 C   s    t ddd}td|ksJ d S )Nr   r   r   
P0DT0H0M1S)r
   r   )r   r5   r#   r#   r$   test_iso_conversion  s   z"TestTimedeltas.test_iso_conversionc                 C   s`   t d }|jjdksJ |dtksJ t d }|jjdks%J |dtks.J d S )NnatMr|   rn   )r   r^   rd   kindastyper   )r   rk   r#   r#   r$   test_nat_converters  s   z"TestTimedeltas.test_nat_converterszunit, np_unitc                 C      g | ]}|d fqS )Wr#   .0r   r#   r#   r$   
<listcomp>      zTestTimedeltas.<listcomp>)r   wc                 C   r   )Dr#   r   r#   r#   r$   r     r   )r   r   r   dayDaysDayc                 C   r   )mr#   r   r#   r#   r$   r         )r   minuterw   r   MinuteMinMinutesc                 C   r   )r   r#   r   r#   r#   r$   r     r   )r   r   secsecondSSecondsSecSecondc                 C   r   )r   r#   r   r#   r#   r$   r     r   )
r   r1   millisecondmillimillisMSMillisecondsMillisecondMilliMillisc                 C   r   )r   r#   r   r#   r#   r$   r     r   )r   r0   microsecondmicromicrosuUSMicrosecondsMicrosecondMicroMicrosUc                 C   r   )r   r#   r   r#   r#   r$   r   (  r   )r   r   
nanosecondnanonanosnNSNanoseconds
NanosecondNanoNanosNwrapperc                    s*  t  fddtd D 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smJ tdd}||ksyJ td
 }||ksJ td
 }||ksJ d S )Nc                    s   g | ]}t | qS r#   )ra   rb   )r   i)np_unitr#   r$   r   ?      z3TestTimedeltas.test_unit_parser.<locals>.<listcomp>   m8[ns])rd   r   c                    s   g | ]}|   qS r#   r#   )r   xr   r#   r$   r   H  r   rR   ztimedelta64[ns]2)r   ra   arangetolistr   ranger   assert_index_equalr
   rb   r   )r   rK   r   r   r5   rk   str_reprr#   )r   rK   r$   test_unit_parser  s,   SzTestTimedeltas.test_unit_parserrK   )Yyr   c                 C   s   d}t jt|d td| W d    n1 sw   Y  t jt|d td| W d    n1 s5w   Y  t jt|d tddg| W d    d S 1 sTw   Y  d S )Nz/Units 'M', 'Y', and 'y' are no longer supportedr(   r   r   rR   )r+   r,   r3   r
   r   )r   rK   r-   r#   r#   r$   test_unit_m_y_raisesZ  s   "z#TestTimedeltas.test_unit_m_y_raisesc                 C   s   t dtddksJ t dtddksJ t dddtddks&J t dddtddks4J t dddtddksBJ t dddtddksPJ t dddtdd	ks^J d S )
Nr   r   r   r   r   r   r   r   r   )r
   ra   rb   r   r#   r#   r$   test_numeric_conversionsf  s    z'TestTimedeltas.test_numeric_conversionsc                 C   sp   t tddtdddksJ t tddtdddks$J t tddtdddks6J d S )	Nr   r   r   r   r/   r   r   r   )r
   r   ra   rb   r   r   r#   r#   r$   test_timedelta_conversionsp  s   

(z)TestTimedeltas.test_timedelta_conversionsc                 C   s   t d}| | ksJ d}tjt|d |d W d    n1 s'w   Y  tjt|d |jdd W d    d S 1 sEw   Y  d S )N10m7sz$dtype and copy arguments are ignoredr(   r\   T)copy)r
   r]   r^   r+   r,   r3   )r   r    r-   r#   r#   r$   test_to_numpy_aliasy  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.789123000Lz1 days 02:34:56.789000000z-1 days 02:34:56.789000000r   1 days 02:34:57z-1 days 02:34:572Sz1 days 02:34:56z-1 days 02:34:565Sz1 days 02:34:55z-1 days 02:34:55T1 days 02:35:00z-1 days 02:35:0012Tz1 days 02:36:00z-1 days 02:36:00Hz1 days 03:00:00z-1 days 03:00:00r   z1 daysz-1 daysc                 C   s@   t d}t d}||}||ksJ ||}||ksJ d S )Nr   r   )r
   round)r   freqs1s2t1t2r1r2r#   r#   r$   
test_round  s   

zTestTimedeltas.test_roundc              	   C   sR   t d}dD ] \}}tjt|d || W d    n1 s!w   Y  qd S )Nr   ))r   z,<YearEnd: month=12> is a non-fixed frequency)r   z#<MonthEnd> is a non-fixed frequency)foobarzInvalid frequency: foobarr(   )r
   r+   r,   r3   r  )r   r
  r  r-   r#   r#   r$   test_round_invalid  s   z!TestTimedeltas.test_round_invalidc                 C   sL  t jd}t jt dd t d }||ksJ t jd}t jt d }||ks+J d}tjt|d t jd W d    n1 sEw   Y  tjt|d t jd W d    n1 sbw   Y  d}tjt|d t jd W d    n1 sw   Y  tjt|d t jd W d    d S 1 sw   Y  d S )	Nr   r   r   ii2zICannot round -106752 days \+00:12:43.145224193 to freq=s without overflowr(   zFCannot round 106751 days 23:47:16.854775807 to freq=s without overflow)	r
   rw   ceilrz   floorr+   r,   r	   r  )r   rk   r5   r-   r#   r#   r$    test_round_implementation_bounds  s*   "z/TestTimedeltas.test_round_implementation_boundsr   )	min_value	max_value)rL   methodc                    s   t  tt|} |} fdd}d}|||d d}|||d d}|||d d	}|||d
 d}|||d d}|||d d}|||d d S )Nc                    sJ  |dkrnt | j|\}}t|| }| j| }|| jksJ | j| }|| jks+J d}|dkr2n ju r]| jjkr\tj|d | | W d    d S 1 sUw   Y  d S nz ju r| jjk rtj|d | | W d    d S 1 sw   Y  d S nO||kr| jjkrtj|d | | W d    d S 1 sw   Y  d S n%| jjk rtj|d | | W d    d S 1 sw   Y  d S | |}	|	|  }
t	|
j}||k sJ |	j| dksJ  j
u r||d ksJ d S  ju r|	| ksJ d S  ju r!|	| ks#J d S d S )Nr   zwithout overflowr   r(   rR   )divmodr   r   r  rz   r+   r,   r  rw   rO   r  )tsr   rK   divmoddifflbubr-   r!   r    clserr_clsr  r#   r$   checker  st   









z1TestTimedeltas.test_round_sanity.<locals>.checkerr   r   r   r   r   r   r   r   l    Xp7 rw   l     qahl     "R: r   )r
   r	   ra   r|   )r   rL   r  r    r!  r   r#   r  r$   test_round_sanity  s&   
2z TestTimedeltas.test_round_sanity)r   r   r   r   c                 C   s   t d|}|d}|t dksJ |j|jksJ |d}|t dks)J |j|jks1J |d}|t dks>J |j|jksFJ d S )Nr   rw   r  z1 days 02:34:00)r
   r   r  r   r  r  )r   rK   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J t|tsJ d S )Nr   r   r   )r
   r`   r   rx   r#   r#   r$   test_identity0  s   zTestTimedeltas.test_identityc                 C   s  dd }t dtddksJ t dtddksJ t dtddks(J t d	tddks4J t d
tddks@J t dtddksLJ t dtddksXJ t dtddksdJ t dtddkspJ t dtddks|J t dtddksJ t dtddksJ t dtddksJ t dtddksJ t dtddksJ t dtddksJ t dtdd ksJ t dtddksJ t dtd dksJ t d!td"dksJ t d#td$dksJ t d%|td&d'ksJ t d(|td&d' ks!J t d)|td&d'ks0J t d*|tdd'ks?J t d+|tdd'ksNJ t d,|tdd'ks]J t d-|tdd'kslJ t d.|tdd'ks{J t d/|tdd' ksJ d0}tjt|d1 t d2 W d    n	1 sw   Y  d3}tjt|d1 t d4 W d    d S 1 sw   Y  d S )5Nc                 S   
   |  dS Nr   r   vr#   r#   r$   conv6     
z9TestTimedeltas.test_short_format_converters.<locals>.conv10r   r   10ns100d   100ns1000r   1000ns1000NS10usi'  100usi 1000usr   1000Us1000uS1ms10msi 100msi 1000msr   z-1s1s10sl    d(	 100sl    h] 1000sl    J)1dr   r   z-1d1D10D100D1000D10000Dz 10000D z
 - 10000D zinvalid unit abbreviationr(   1foozunit abbreviation w/o a numberfoo)r
   ra   rb   r+   r,   r3   )r   r+  r-   r#   r#   r$   test_short_format_converters5  sN     

$z+TestTimedeltas.test_short_format_convertersc                 C   sd  dd }t dd}td||ksJ td||ksJ td|| ks)J td|t dd	ks7J td
|t dd	ksEJ td|t dd	ksSJ td|t ddksaJ td|| t dd	 ksrJ td||t dd	 ksJ td||t dd ksJ d}tjt|d td W d    d S 1 sw   Y  d S )Nc                 S   r&  r'  r(  r)  r#   r#   r$   r+  h  r,  z8TestTimedeltas.test_full_format_converters.<locals>.convr   r   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)ra   rb   r
   r+   r,   r3   )r   r+  d1r-   r#   r#   r$   test_full_format_convertersg  s,   

"


"z*TestTimedeltas.test_full_format_convertersc                 C   s"   t d}t|}||ksJ d S )Nz1 days 10:11:12.0123456)r
   r   round_trip_pickle)r   r*  v_pr#   r#   r$   test_pickle  s   
zTestTimedeltas.test_picklec                 C   s   t dd}tdd}t|t|ksJ |di}|| dks J dd tdD }tdd	 |D s4J t dd
}t|t| ksEJ d S )Nr   r   r   rR   c                 S   s    g | ]}t d dt |d qS )r   r   r   rU   )r   r   r#   r#   r$   r     s     z?TestTimedeltas.test_timedelta_hash_equality.<locals>.<listcomp>   c                 s   s$    | ]}t |t | kV  qd S rD   )r   rX   )r   r    r#   r#   r$   	<genexpr>  s   " z>TestTimedeltas.test_timedelta_hash_equality.<locals>.<genexpr>r   )r
   r   r   r   allrX   )r   r*  r    r   tdsns_tdr#   r#   r$   test_timedelta_hash_equality  s   


z+TestTimedeltas.test_timedelta_hash_equalityz;pd.Timedelta violates the Python hash invariant (GH#44504).)reasonrs   half_microsecondsr   Nc                 C   s>   |d }t |}t|}||kst|t|ksJ d S d S )Nrs   )r
   ra   rb   r   )r   rX  r   pandas_timedeltanumpy_timedeltar#   r#   r$   test_hash_equality_invariance  s   
z,TestTimedeltas.test_hash_equality_invariancec                 C   sn  t t j}t t j}|jtd ksJ |jtjksJ |t dd tu s&J d}tj	t
|d |t dd  W d    n1 sAw   Y  tj	t
|d |t dd  W d    n1 s_w   Y  t |jd d}|tu srJ d}tj	t|d t |jd d W d    n1 sw   Y  d}tj	t|d t |jd d W d    d S 1 sw   Y  d S )Nr   r   zint too (large|big) to convertr(   rR   zACannot cast -9223372036854775809 from ns to 'ns' without overflowz@Cannot cast 9223372036854775808 from ns to 'ns' without overflow)r
   rw   rz   r   r   r   i8maxr   r+   r,   OverflowErrorr	   )r   min_tdmax_tdr-   r    r#   r#   r$   test_implementation_limits  s,   

"z)TestTimedeltas.test_implementation_limitsc                 C   s   t d dks
J t d dksJ t d dksJ t d dks(J t d d d	k s4J dt d  d	k s@J d S )
N30Sg      >@0g        z-2Sg       z5.324SgK@g#B;)r
   r:   r   r#   r#   r$   test_total_seconds_precision  s   z+TestTimedeltas.test_total_seconds_precisionc                 C   s   t ddjdks
J t dddjdksJ t dddjdks J t ddd	jd
ks+J t dddjdks6J t dddjdksAJ t dddjdksLJ d S )Nr   r   r      r   r;   r  )r   r   r  )r   r   r   )r   r1   r   )r   r0   r   )r   r   r   )r
   resolution_stringr   r#   r#   r$   test_resolution_string  s   z%TestTimedeltas.test_resolution_stringc                 C   s@   t ddd}|j}|t ddksJ t j}|t ddksJ d S )N      re  r   )r   )r
   r~   )r   r    rk   r#   r#   r$   test_resolution_deprecated  s
   z)TestTimedeltas.test_resolution_deprecated)3r?   r@   rA   r+   markparametrizer   r   r   r   r   r   ra   rq   listpdIndexr   r   r   r   r   r
   r  r  r  r   stintegersr   r   r\  r  r  r  r#  r$  r%  rJ  rM  rP  rV  xfailsysmaxsizer   r[  r`  rc  rg  rj  r#   r#   r#   r$   r   g  s    
	J	*;O

	
	N
2		r   zvalue, expected10STz-10Sr   r   r   Fr   c                 C   s   t | |u sJ d S rD   )bool)r   r5   r#   r#   r$   test_truthiness  s   rw  c                  C   sZ   t ddd} | jd }|| j7 }|d9 }|| j7 }|d9 }|| j7 }| j}||ks+J d S )Nl   ?2\BT, r   r   r7   r   r   )r
   r   r   r0   r   r   )r    rk   r5   r#   r#   r$   "test_timedelta_attribute_precision  s   



rx  )%__doc__datetimer   rs  
hypothesisr   r   rp  numpyra   r+   pandas._libsr   pandas._libs.tslibsr   r   pandas._libs.tslibs.dtypesr   pandas.errorsr	   pandasrn  r
   r   r   pandas._testing_testingr   r   rB   r   r   r   rk  rl  rw  rx  r#   r#   r#   r$   <module>   sJ    J V     



