o
    _~#gu[                     @   s*  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mZmZ ddlm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to_timedeltac                   @   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)smsus)paramsc                 C   s   |j S N)param)selfrequest r   /var/www/static.ux5.de/https/Moving-Object-Detection-with-OpenCV/env/lib/python3.10/site-packages/pandas/tests/scalar/timedelta/test_timedelta.pyunit_str   s   zTestNonNano.unit_strc                 C   s   d| }t t|jS )NNPY_FR_)getattrr   value)r   r   attrr   r   r   unit    s   
zTestNonNano.unitc                 C   s<   d}|t jjkr|}|S |t jjkr|d }|S |d }|S )Nl     &o  @B )r   	NPY_FR_usr   	NPY_FR_ms)r   r   r   r   r   r   r   val&   s   zTestNonNano.valc                 C   s   t ||S r   )r   _from_value_and_reso)r   r   r"   r   r   r   td2   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#   _value_cresodays)r   r   r"   r$   r   r   r   test_from_value_and_reso6   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 r   )absr'   )r   r$   r   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$   r   resexpectedr   r   r   test_sub_preserves_resoB   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$   r   r,   r   r   r   test_mul_preserves_resoH   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 ns)r(   r   r   )r   r$   otherr   r   r   test_cmp_cross_resoO   s
   zTestNonNano.test_cmp_cross_resoc                 C   s2   |  }tdd}t|tu sJ ||ksJ d S )Nr%   r(   )to_pytimedeltar   type)r   r$   r,   r-   r   r   r   test_to_pytimedeltaW   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   NPY_FR_sr   dtyper!   r    r0   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 )N         @z?Cannot cast 106752 days 00:00:00 to unit='ns' without overflow.match2   gMbP?r   r   r&   pytestraisesr	   r7   r#   r   r    r   r!   )	r   r$   r4   msgr,   r-   leftrightresultr   r   r   test_truediv_timedeltalikeh   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 Nr/   g       @)r@   nanr   r&   r'   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 )	NrF   rG   r/   >Cannot cast 106752 days 00:00:00 to unit='ns' without overflowrH   r   i  rJ   rK   )r   r$   r4   rN   r,   rO   rP   rQ   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 rS   )r@   rT   r   r&   r'   arrayrU   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 )NrF   r6   r     rW   rH   )r   as_unitr'   r(   rL   rM   r	   )r   r$   r4   rQ   other2rN   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 NrF   )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 r   )maxr'   r&   r@   iinfoint64ra   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 r_   )r   r#   r'   
resolution)r   r$   r-   rQ   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\   rc   hash)r   second_resolution_maxr   r   r   	test_hash   s   zTestNonNano.test_hash)ri   N)__name__
__module____qualname__rL   fixturer   r   r"   r$   r)   r+   r.   r1   r5   r9   rE   rR   rV   rX   rZ   r^   rb   rf   rh   rl   r   r   r   r   r      s2    



!r   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 r_   )r   r`   r   r&   r'   r   	NPY_FR_nsr   rc   r@   rd   re   rg   r   r   r   r   'test_timedelta_class_min_max_resolution   s   rr   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r   zbad operand type for unary ~rH   z0ufunc 'invert' not supported for the input types)r   rL   rM   	TypeErrorr7   r<   )r   r$   rN   umsgr   r   r   test_invert   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 )Nrt   ru   rv   z-10d10d)r   r*   ra   r   r   r   test_unary_ops  s   z$TestTimedeltaUnaryOps.test_unary_opsN)rm   rn   ro   ry   r|   r   r   r   r   rs      s    rs   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dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zejjejjdd eejej d! d" ejd" d#d$ed%d&fd'd(Zd)d* Zd+d, Zd-d. Zd/d0 Z d&S )1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 )Nrv   )r   r&   str)r   r   r   r-   rQ   r   r   r   &test_rounding_on_int_unit_construction  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_equaltotal_secondsr@   rT   isnan)r   rngexptr   r   r   test_total_seconds_scalar+  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 )Nrt   ru   rv   z1 days, 10:11:12.012345r2   z1 days, 10:11:12.012345678)r   r7   r?   r   r@   rA   r&   r<   )r   r$   pydttd64r   r   r   test_conversion4  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 r   )r?   int)r   r   r   r   checkH  s   z)TestTimedeltas.test_fields.<locals>.checkz1 days, 10:11:12rF   i@  r   z('Timedelta' object has no attribute '{}'hoursrH   minutesmillisecondsz-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(   secondsmicrosecondsnanosecondsrL   rM   AttributeErrorformatr   r   r   r   r*   r~   r&   
components)r   r   r   rN   r$   tupr   r   r   test_fieldsG  s   











zTestTimedeltas.test_fieldsc                 C   s    t ddd}td|ksJ d S )NrF   r   rv   
P0DT0H0M1Sr
   )r   r-   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Mre   rT   )r   r=   rD   kindastyper   )r   rQ   r   r   r   test_nat_converters  s   z"TestTimedeltas.test_nat_convertersc                 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   r2   rt   rv   r   r   r   ru   D)r   r@   rA   r   r   r   r   test_numeric_conversions  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 )	NrF   r   r   m8[ns])r   r   r6   r   )r   r   r@   rA   r   r   r   r   r   test_timedelta_conversions  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 ignoredrH   r;   T)copy)r   r<   r=   rL   rM   
ValueError)r   r$   rN   r   r   r   test_to_numpy_alias  s   "z"TestTimedeltas.test_to_numpy_aliasc                 C   s,   t ddd}t|t sJ t|tsJ d S )Nrt   ru   rv   )r   r?   r   ra   r   r   r   test_identity  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   conv     
z9TestTimedeltas.test_short_format_converters.<locals>.conv10rt   r2   10ns100d   100ns1000r   1000ns1000NS10usi'  100usi 1000usr   1000Us1000uS1ms10msi 100msi 1000msi ʚ;z-1s1s10sl    d(	 100sl    h] 1000sl    J)1drF   r   z-1d1D10D100D1000D10000Dz 10000D z
 - 10000D zinvalid unit abbreviationrH   1foozunit abbreviation w/o a numberfoo)r   r@   rA   rL   rM   r   )r   r   rN   r   r   r   test_short_format_converters  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     r   z8TestTimedeltas.test_full_format_converters.<locals>.convrF   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 unitsrH   z- 1days, 00)r@   rA   r   rL   rM   r   )r   r   d1rN   r   r   r   test_full_format_converters  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 )NrF   r   r6   r/   c                 S   s    g | ]}t d dt |d qS )rF   r   r6   r3   ).0nr   r   r   
<listcomp>#  s     z?TestTimedeltas.test_timedelta_hash_equality.<locals>.<listcomp>   c                 s   s$    | ]}t |t | kV  qd S r   )rj   r7   )r   r$   r   r   r   	<genexpr>$  s   " z>TestTimedeltas.test_timedelta_hash_equality.<locals>.<genexpr>r2   )r   r   rj   rangeallr7   )r   r   r$   ru   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).)reasonrF   r[   )	min_value	max_valuehalf_microsecondsri   Nc                 C   s>   |d }t |}t|}||kst|t|ksJ d S d S )Nr[   )r   r@   rA   rj   )r   r   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 )NrF   r2   zint too (large|big) to convertrH   r/   zACannot cast -9223372036854775809 from ns to 'ns' without overflowz@Cannot cast 9223372036854775808 from ns to 'ns' without overflow)r   r`   rc   r&   r   r   i8maxr   rL   rM   OverflowErrorr	   )r   min_tdmax_tdrN   r$   r   r   r   test_implementation_limitsB  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_precisiona  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 )NrF   r6   r      r(   r   h)r(   r   r`   )r(   r   r   )r(   r   r   )r(   r   r   )r(   r   r2   )r   resolution_stringr   r   r   r   test_resolution_stringj  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      r   rF   )r   )r   rg   )r   r$   rQ   r   r   r   test_resolution_deprecateds  s
   z)TestTimedeltas.test_resolution_deprecated)!rm   rn   ro   rL   markparametrizer   r   r   r   r   r   r   r   r   r   r   r   r   r   
skip_ubsanxfailr   stintegerssysmaxsizer   r   r   r   r   r   r   r   r   r   r}     sD    
	K	
	2		r}   zvalue, expectedr   Tz-10srt   r2   rv   Frz   c                 C   s   t | |u sJ d S r   )bool)r   r-   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s+J d S )Nl   ?2\BT, r2   rv   iQ r   r   )r   r(   r   r   r   r&   )r$   rQ   r-   r   r   r   "test_timedelta_attribute_precision  s   



r  )"__doc__datetimer   r   
hypothesisr   r   r   numpyr@   rL   pandas._libsr   pandas._libs.tslibsr   r   pandas._libs.tslibs.dtypesr   pandas.errorsr	   pandasr   r   pandas._testing_testingr   r   rr   rs   r}   r   r   r  r  r   r   r   r   <module>   s@     V  f



