a
    Pfu[                     @   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+d,Zd)S )-TestNonNano)smsus)paramsc                 C   s   |j S N)param)selfrequest r   e/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/scalar/timedelta/test_timedelta.pyunit_str   s    zTestNonNano.unit_strc                 C   s   d| }t t|jS )NZNPY_FR_)getattrr   value)r   r   attrr   r   r   unit    s    
zTestNonNano.unitc                 C   s8   d}|t jjkr|}n|t jjkr,|d }n|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s6J 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s2J 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r0J ||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 ]z}t|tjs(J |d|jks<J |tj	j
krX|jdksJ q|tjj
krt|jdksJ q|tjj
kr|jdksJ qd S )Ni8m8[s]zm8[ms]zm8[us])to_timedelta64to_numpyZasm8
isinstancenptimedelta64viewr%   r   ZNPY_FR_sr   dtyper    r   r/   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^0    Y  | | }| |  }||ksJ t dtjj	}t dtj
j	}|| }|dksJ || }|dksJ d S )N         @z?Cannot cast 106752 days 00:00:00 to unit='ns' without overflow.match2   gMbP?r   r   r%   pytestraisesr	   r6   r"   r   r   r   r    )	r   r#   r3   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sZJ |j|jksjJ 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^0    Y  | | }|dksJ t dtjj	}t dtj
j	}|| }|dksJ || }|dksJ d S )	NrC   rD   r.   >Cannot cast 106752 days 00:00:00 to unit='ns' without overflowrE   r   i  rG   rH   )r   r#   r3   rK   r+   rL   rM   rN   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sZJ |j|jksjJ |t t j tu sJ |t d }|j|jd ksJ |j|jksJ |t d }|j|jd ksJ |j|jksJ d S rP   )r>   rQ   r   r%   r&   arrayrR   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sTJ |j|jd kshJ || }|j|jksJ |j|jd ksJ || }|j|jksJ |jd|j ksJ t d}d}tjt|d ||  W d    n1 s0    Y  tjt|d ||  W d    n1 s00    Y  tjt|d ||  W d    n1 sh0    Y  tjt|d ||  W d    n1 s0    Y  d S )NrC   r5   r     rT   rE   )r   as_unitr&   r'   rI   rJ   r	   )r   r#   r3   rN   Zother2rK   r   r   r   test_addsub_mismatched_reso   s.    &((z'TestNonNano.test_addsub_mismatched_resoc                 C   s:   |j |ksJ |j j|jks J |j jtjd ks6J d S NrC   )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int64r]   r   r   r   test_max   s    zTestNonNano.test_maxc                 C   s4   t d|j}|j}||ks J |j|jks0J d S r[   )r   r"   r&   
resolution)r   r#   r,   rN   r   r   r   test_resolution   s    zTestNonNano.test_resolutionN)returnc                 C   s    t ddj}t|sJ d S )Nr   r   )r   rY   r_   hash)r   Zsecond_resolution_maxr   r   r   	test_hash   s    zTestNonNano.test_hash)__name__
__module____qualname__rI   Zfixturer   r   r!   r#   r(   r*   r-   r0   r4   r8   rB   rO   rS   rU   rW   rZ   r^   rb   rd   rg   r   r   r   r   r      s0   



!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sHJ t jjtjjks\J t jt dksnJ t jjtjjksJ d S r[   )r   r\   r   r%   r&   r   Z	NPY_FR_nsr   r_   r>   r`   ra   rc   r   r   r   r   'test_timedelta_class_min_max_resolution   s    rk   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:0    Y  tjt|d |   W d    n1 sr0    Y  d}tjt|d |   W d    n1 s0    Y  d S )N
   dr   zbad operand type for unary ~rE   z0ufunc 'invert' not supported for the input types)r   rI   rJ   	TypeErrorr6   r;   )r   r#   rK   Z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s4J |
 t dddksJJ t||ksZJ t| |kslJ t| t dksJ d S )Nrm   rn   ro   z-10dZ10d)r   r)   r]   r   r   r   test_unary_ops  s    z$TestTimedeltaUnaryOps.test_unary_opsN)rh   ri   rj   rq   rs   r   r   r   r   rl      s   rl   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#ed$d%d&d'Zd(d) Zd*d+ Zd,d- Zd.d/ Z d$S )0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s8J d S )Nro   )r   r%   str)r   r   r   r,   rN   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| s8J d S )Nz1 days, 10:11:12.100123456g@)r   tmZassert_almost_equaltotal_secondsr>   rQ   isnan)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s0J ||ks<J t|trPt|t rTJ |t|jdksjJ | }|t|jdksJ ||ksJ t|tjsJ qt d}|| ksJ d S )Nrm   rn   ro   z1 days, 10:11:12.012345r1   z1 days, 10:11:12.012345678)r   r6   r=   r   r>   r?   r%   r;   )r   r#   ZpydtZ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sHJ d}tjt|dd	 |j	 W d    n1 s|0    Y  tjt|d
d	 |j
 W d    n1 s0    Y  tjt|dd	 |j W d    n1 s0    Y  ||j ||j ||j ||j td}t|tdks@J t|dksRJ | tdksfJ tdj dks|J 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 s0    Y  tjt|d
d	 |j
 W d    n1 sJ0    Y  tjt|dd	 |j W d    n1 s0    Y  t d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sJ ||j ||j	 ||j
 ||j ||j ||j ||j tdj}|jdkslJ |j	dks|J |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:12rC   i@  r   z('Timedelta' object has no attribute '{}'hoursrE   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nanosecondsrI   rJ   AttributeErrorformatr   r   r   r   r)   ru   r%   
components)r   r~   rz   rK   r#   tupr   r   r   test_fieldsG  st    $$$



&&&







zTestTimedeltas.test_fieldsc                 C   s    t ddd}td|ksJ d S )NrC   r   ro   Z
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sJJ |dtks\J d S )NZnatMra   rQ   )r   r<   rA   kindastyper   )r   rN   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s0J t dddtddksLJ t dddtddkshJ t dddtddksJ t dddtddksJ t dddtdd	ksJ d S )
Nr   r1   rm   ro   r   r   r   rn   D)r   r>   r?   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sHJ t tddtdddkslJ d S )	NrC   r   r   m8[ns])r   r   r5   r   )r   r   r>   r?   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 sN0    Y  tjt|d |jdd W d    n1 s0    Y  d S )NZ10m7sz$dtype and copy arguments are ignoredrE   r:   T)copy)r   r;   r<   rI   rJ   
ValueError)r   r#   rK   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 )Nrm   rn   ro   )r   r=   r   r]   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s8J t dtddksPJ t d	tddkshJ 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sFJ t dtddks`J t dtddkszJ 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s6J t d(|td&d' ksVJ t d)|td&d'kstJ 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 d0}tjt|d1 t d2 W d    n1 s\0    Y  d3}tjt|d1 t d4 W d    n1 s0    Y  d S )5Nc                 S   s
   |  dS Nr   r   vr   r   r   conv  s    z9TestTimedeltas.test_short_format_converters.<locals>.conv10rm   r1   Z10ns100d   Z100nsZ1000r   Z1000nsZ1000NSZ10usi'  Z100usi Z1000usr   Z1000UsZ1000uSZ1msZ10msi Z100msi Z1000msi ʚ;z-1sZ1s10sl    d(	 Z100sl    h] Z1000sl    J)Z1drC   r   z-1dZ1DZ10DZ100DZ1000DZ10000Dz 10000D z
 - 10000D zinvalid unit abbreviationrE   Z1foozunit abbreviation w/o a numberZfoo)r   r>   r?   rI   rJ   r   )r   r   rK   r   r   r   test_short_format_converters  sJ      (z+TestTimedeltas.test_short_format_convertersc                 C   sh  dd }t dd}td||ks(J td||ks<J td|| ksRJ td|t dd	ksnJ 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 d}tjt|d td W d    n1 sZ0    Y  d S )Nc                 S   s
   |  dS r   r   r   r   r   r   r     s    z8TestTimedeltas.test_full_format_converters.<locals>.convrC   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 unitsrE   z- 1days, 00)r>   r?   r   rI   rJ   r   )r   r   Zd1rK   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   rw   Zround_trip_pickle)r   r   Z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 shJ t dd
}t|t| ksJ d S )NrC   r   r5   r.   c                 S   s    g | ]}t d dt |d qS )rC   r   r5   r2   ).0nr   r   r   
<listcomp>#      z?TestTimedeltas.test_timedelta_hash_equality.<locals>.<listcomp>   c                 s   s"   | ]}t |t | kV  qd S r   )rf   r6   )r   r#   r   r   r   	<genexpr>$  r   z>TestTimedeltas.test_timedelta_hash_equality.<locals>.<genexpr>r1   )r   r   rf   rangeallr6   )r   r   r#   rn   ZtdsZns_tdr   r   r   test_timedelta_hash_equality  s    


z+TestTimedeltas.test_timedelta_hash_equalityz;pd.Timedelta violates the Python hash invariant (GH#44504).)reasonrC   rX   )Z	min_valueZ	max_valueN)half_microsecondsre   c                 C   s:   |d }t |}t|}||ks6t|t|ks6J d S )NrX   )r   r>   r?   rf   )r   r   r   Zpandas_timedeltaZnumpy_timedeltar   r   r   test_hash_equality_invariance*  s    
z,TestTimedeltas.test_hash_equality_invariancec                 C   sp  t t j}t t j}|jtd ks&J |jtjks6J |t dd tu sLJ d}tj	t
|d |t dd  W d    n1 s0    Y  tj	t
|d |t dd  W d    n1 s0    Y  t |jd d}|tu sJ d}tj	t|d  t |jd d W d    n1 s0    Y  d}tj	t|d  t |jd d W d    n1 sb0    Y  d S )NrC   r1   zint too (large|big) to convertrE   r.   zACannot cast -9223372036854775809 from ns to 'ns' without overflowz@Cannot cast 9223372036854775808 from ns to 'ns' without overflow)r   r\   r_   r%   r   r   Zi8maxr   rI   rJ   OverflowErrorr	   )r   Zmin_tdZmax_tdrK   r#   r   r   r   test_implementation_limitsB  s$    

,,0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sPJ t d d d	k shJ dt d  d	k sJ d S )
NZ30sg      >@0g        z-2sg       z5.324sgK@g#B;)r   rx   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sVJ t dddjdkslJ t dddjdksJ t dddjdksJ d S )NrC   r5   r      r'   r   h)r'   r   r\   )r'   r   r   )r'   r   r   )r'   r   r   )r'   r   r1   )r   Z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   rC   )r   )r   rc   )r   r#   rN   r   r   r   test_resolution_deprecateds  s
    z)TestTimedeltas.test_resolution_deprecated)!rh   ri   rj   rI   markparametrizerv   r{   r|   r   r   r   r   r   r   r   r   r   r   r   Z
skip_ubsanZxfailr   stZintegerssysmaxsizer}   r   r   r   r   r   r   r   r   r   rt     sB   
	K	
	2		rt   zvalue, expectedr   Tz-10srm   r1   ro   Frr   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sVJ d S )Nl   ?2\BT, r1   ro   iQ r   r   )r   r'   r   r   r   r%   )r#   rN   r,   r   r   r   "test_timedelta_attribute_precision  s    



r   )"__doc__datetimer   r   Z
hypothesisr   r   r   numpyr>   rI   Zpandas._libsr   Zpandas._libs.tslibsr   r   Zpandas._libs.tslibs.dtypesr   Zpandas.errorsr	   Zpandasr   r   Zpandas._testingZ_testingrw   r   rk   rl   rt   r   r   r   r   r   r   r   r   <module>   s>    V  f



