o
    5c4                     @   s0  d dl mZ d dlmZ d dlZd dlZd dlmZ d dl	m
Z
mZmZ dd Zdd	 Zd
d Zejdedddddddd ejdejejejejejejgdd Zejdg ddd Zdd Zejdg dd d! Zejd"d#e
d$d%d&d'd'd(d)fd*e
d+d%d&d'd'd(d)fd,e
d-d(d.d/d0fd1e
d2d3fd4e
d'd5fd6e
d7d8fd9e
d7d:fd;e
d7d<d=d=d0fd>e
d7d?fd@e
d d?fdAe
dBd dCfdDe
d7dEfdFe
d7d7dGfdHe
dBdEfdIe
dJd?fdKe
d7dEfdLe
d+d&dMfdNe
d+dOdMfdPe
d$dOdMfgdQdR ZejdSg dTdUdV ZejdWe
dXd3dYfe
d7d7d7d7d7d7d7d7dZd[fe
d7d5e
d7d3 d\fe
d7d5e
d7d3 d]fe
d7d5d/e
d^d3  d_fgd`da Z dbdc Z!ddde Z"ejdfe
dgde#dhffedgde#dhffeg dide#dhffgdjdk Z$ejdldmdn doD dpdq Z%drds Z&dS )t    )	timedelta)productN)OutOfBoundsTimedelta)	Timedeltaoffsetsto_timedeltac                   C   sz   t jtdd tddd W d    n1 sw   Y  t jtdd tddd W d    d S 1 s6w   Y  d S )Nzwithout overflowmatchl     NZoWunitg NgmC)pytestraisesr   r    r   r   e/var/www/html/gps/gps/lib/python3.10/site-packages/pandas/tests/scalar/timedelta/test_constructors.py'test_construct_with_weeks_unit_overflow   s   "r   c                  C   s   t dd} tjtdd t| dd W d    n1 sw   Y  tjtdd t| dd W d    n1 s;w   Y  tjtdd t|  W d    d S 1 sWw   Y  d S )Ni[hz123456789 hoursr   psr   ns)nptimedelta64r   r   r   r   )objr   r   r   "test_construct_from_td64_with_unit   s   
"r   c                  C   s  t dddd} tdddj| ksJ tdddj| ks"J tdj| ks+J tdd	j| ks5J tdd	j| ks?J | t dd
dd7 } tdj| ksVJ tdddj| ksaJ tdddj| kslJ tdddj| kswJ tdjdksJ dttdv sJ tdjdksJ dttdv 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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d0ksJ td1tdd0ksJ td2tdd0ksJ td3tdd0ksJ td4td5ksJ td6td7ksJ td8td7ksJ td9td7ksJ td:tddd;ksJ td<tddd;ksJ td=tddddd>ksJ td?tddddd> ksJ td?tddddd> ks!J td@tdddddAdB ks2J tdCtddddDdAdB ksCJ dE}tj	t
|dF tdG W d    n	1 s\w   Y  tj	t
|dF tdH W d    n	1 sxw   Y  dI}tj	t
|dF tdJ W d    n	1 sw   Y  dK}tj	t
|dF t  W d    n	1 sw   Y  dL}tj	t
|dF tdM W d    n	1 sw   Y  dN}tj	t
|dF tddO W d    n	1 sw   Y  t dd
ddt dPdQdd } tdRd
dj| ksJ ttdStdSdks(J ttdStdSdks7J ttdStdSd%ksFJ tdT} tdT}|| ksUJ ttdStdUkscJ dL}tj	t
|dF tdV W d    d S 1 s}w   Y  d S )WN
   Dm8[ns]i8dr   g      $@z10 daysdayssz10 days 00:00:10r   secondsi'  )r   millisecondsi )r   microsecondsl   >P- z0 days 22:58:59.999850l   @B]? z1 days 10:11:12.001z0:00:00r   )hoursz00:00:00z-1:00:00   z	-01:00:00z1 hz1 hourz1 hrz1 hoursz-1 hoursz1 mminutesz1.5 mZ   r"   1 minutez	1 minutesz1 sz1 secondz	1 secondsz1 msr#   z1 milliz1 millisecondz1 usr$   u   1 µsz1 microsz1 microsecondz1.5 microsecondz00:00:00.000001500z1 nsz00:00:00.000000001z1 nanoz1 nanosecondz10 days 1 hourr   r%   z10 days 1 hz10 days 1 h 1m 1sr   r%   r(   r"   z-10 days 1 h 1m 1sz-10 days 1 h 1m 1s 3us   )r   r%   r(   r"   r$   z-10 days 1 h 1.5m 1s 3us   'only leading negative signs are allowedr   z-10 days -1 h 1.5m 1s 3usz10 days -1 h 1.5m 1s 3uszno units specifiedz3.1415zcannot construct a Timedeltazunit abbreviation w/o a numberfoozMcannot construct a Timedelta from the passed arguments, allowed keywords are )dayi  msg      %@   1Hz0 days, 02:00:00zfoo bar)r   r   astypeviewr   valuestrr   r   r   
ValueErrorr   r   HourSecond)expectedmsgresultr   r   r   test_construction(   s   






$rB   itemr   r    usr5   mr   r
   )r   r"   r$   r#   r(   r%   weeksnpdtypec                 C   sD   |\}}t d|dd}tdi || dij|ks J d S )Nr&   r   r   r   )r   r   r8   r9   r   r:   )rG   rC   pykwargnpkwargr?   r   r   r   #test_td_construction_with_np_dtypes   s   $rJ   val)1sz-1s1usz-1usz1 dayz-1 dayz-23:59:59.999999z-1 days +23:59:59.999999z-1ns1nsz-23:59:59.999999999c                 C   s^   t | }t |j|ksJ t t||ksJ t |jdd|ks#J t | |ks-J d S )Nall)format)r   r:   r;   
_repr_base)rK   tdr   r   r   test_td_from_repr_roundtrip   s
   rS   c                  C   s   t djd } d}tjt|d t |  W d    n1 sw   Y  d}tjt|d t ddd W d    n1 s>w   Y  d	}tjt|d t td
d W d    d S 1 s_w   Y  d S )N1dayi3zCCannot cast 1742682816000000000000 from ns to 'ns' without overflowr   z2Cannot cast 139993 from D to 'ns' without overflowi" r   r   z<Cannot cast 259987 days, 0:00:00 to unit=ns without overflowi r   )r   r:   r   r   r   r   r:   r@   r   r   r   test_overflow_on_construction   s   
"rV   zval, unit, name))i  Mz months)i;  r
   z weeks)i  r   z days)i ' r   z hours)i)	rE   z minutes)l   }K r    z secondsc                 C   s   t | |}|dddk sJ t| | }tjt|d t| W d    n1 s.w   Y  t|d |d ks?J |d9 }|dddksOJ tjtd| d t| W d    n1 sgw   Y  t|d |d ksxJ d S )Nr   r   r   r   r&   -)	r   r   r8   r9   r;   r   r   r   r   )rK   r   nametd64r@   r   r   r   $test_construction_out_of_bounds_td64   s   

r\   zfmt,expzP6DT0H50M3.010010012S   2   r0   r      )r   r(   r"   r#   r$   nanosecondszP-6DT0H50M3.010010012SiP4DT12H30M5S         r/   zP0DT0H0M0.000000123S{   r`   zP0DT0H0M0.00001Sr-   zP0DT0H0M0.001Sr&   r,   
P0DT0H1M0Sr'   P1DT25H61M61S   =   PT1Sr*   PT0SP1WT0S   r!   P1Dr   P1DT1Hr.   P1WPT300Si,  P1DT0H0M00000000000SzPT-6H3M)r%   r(   z-PT6H3Mz	-PT-6H+3Mc                 C   s   t | |ksJ d S Nr   )fmtexpr   r   r   test_iso_constructor  s   -ry   rw   )PPPPPPPPPPPPPDTHMSP0DT999H999M999SzP1DT0H0M0.0000000000000SzP1DT0H0M0.SPz-Pc                 C   sF   d|  }t jt|d t|  W d    d S 1 sw   Y  d S )Nz#Invalid ISO 8601 Duration format - r   r   r   r<   r   )rw   r@   r   r   r   test_iso_constructor_raises<  s   

"r   zconstructed_td, conversiond   100ns)r   r%   r(   rF   r"   r#   r$   r`   l   )D^_ 1us1ns999ns990nsc                 C   s   | t |ksJ d S ru   rv   )constructed_td
conversionr   r   r   "test_td_constructor_on_nanosecondsN  s   r   c                  C   sB   d} t jt| d tdd W d    d S 1 sw   Y  d S )Nz1Invalid type <class 'str'>. Must be int or float.r   abcrf   )r   r   	TypeErrorr   )r@   r   r   r   test_td_constructor_value_errori  s   "r   c                  C   s(   t tdd} t | }|| u sJ d S )Nr&   r    )r   r   r   )r?   rA   r   r   r   #test_timedelta_constructor_identityo  s   r   z%constructor, value, unit, expectation10szunit must not be specified)1r6   r0   c                 C   sH   |\}}t j||d | ||d}W d    d S 1 sw   Y  d S )Nr   r   )r   r   )constructorr:   r   expectationrx   r	   _r   r   r   test_string_with_unitv  s   	"r   r:   c                 C   s(   g | ]}t d |dD ]}d|q
qS )z+-, )repeat )r   join).0
repetitionelementsr   r   r   
<listcomp>  s    
r   )r&   r6   c                 C   sL   | dkrdnd}t jt|d t|  W d    d S 1 sw   Y  d S )Nz--zsymbols w/o a numberr2   r   r~   rU   r   r   r   test_string_without_numbers  s   
"r   c                  C   s*   G dd dt } | d}t|| sJ d S )Nc                   @   s   e Zd ZdS )z2test_subclass_respected.<locals>.MyCustomTimedeltaN)__name__
__module____qualname__r   r   r   r   MyCustomTimedelta  s    r   r+   )r   
isinstance)r   rR   r   r   r   test_subclass_respected  s   r   )'datetimer   	itertoolsr   numpyr   r   pandas._libs.tslibsr   pandasr   r   r   r   r   rB   markparametrizelistitemsint64int32int16float64float32float16rJ   rS   rV   r\   ry   r   r   r   r   r<   r   r   r   r   r   r   r   <module>   s    	}



,




