o
    ҷhsC                     @   s  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
 d dlmZmZmZmZ dd Zd	d
 Zdd 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%g d)d*d+ Z$ejd,d-ed.d/d0d1d1d2d3fd4ed5d/d0d1d1d2d3fd6ed7d2d8d9d:fd;ed<d=fd>ed1d?fd@edAdBfdCedAdDfdEedAdFdGdGd:fdHedAdIfdJed dIfdKedLd dMfdNedAdOfdPedAdAdQfdRedLdOfdSedTdIfdUedAdOfdVed5d0dWfdXed5dYdWfdZed.dYdWfgd[d\ Z%ejd]g d^d_d` Z&ejdaedbd=dcfedAdAdAdAdAdAdAdAdddefedAd?edAd= dffedAd?edAd= dgfedAd?d9edhd=  difgdjdk Z'dldm Z(dndo Z)dpdq Z*ejdredsde+dtffedsde+dtffeg dude+dtffgdvdw Z,ejdxdydz d{D d|d} Z-d~d Z.dd Z/dd Z0dS )    )	timedelta)productN)OutOfBoundsTimedelta)NpyDatetimeUnit)NaT	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match     NZoWunitg NgmC)pytestraisesr   r    r   r   b/var/www/html/venv/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 )Nl    J.mhz123456789000000000 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} t| }|j| dksJ |jtjjksJ t dd}t|}|jtj	jks0J ||ks6J |j
dks=J t dd}t|}| dksOJ |jtjjksXJ d S )	Ni90  msi8i  Dr   usl    J))r   r   r   _valueview_cresor   	NPY_FR_msvalueNPY_FR_sdaystotal_seconds	NPY_FR_us)r   tdobj2td2obj3td3r   r   r    test_from_td64_retain_resolution*   s   r.   c                  C   s:   t ddd} t| }| | ksJ |jtjjksJ d S )N      )r&   minutes)r   r   to_pytimedeltar"   r   r(   r$   )r)   resultr   r   r   test_from_pytimedelta_us_reso@   s   r4   c                  C   s   t  } t| jtjjksJ t  } t| jtjjksJ t 	 } t| jtj
jks-J t  } t| jtjjks<J t  } t| jtjjksKJ t  } t| jtjjksZJ t  } t| jtjjksiJ d S N)r   Nanor   r"   r   	NPY_FR_nsr$   Micror(   Millir#   Secondr%   MinuteHourDay)tickr   r   r   test_from_tick_resoH   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
   r   m8[ns]r   dr   g      $@z10 daysr&   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r1   z1.5 mZ   rF   1 minutez	1 minutesz1 sz1 secondz	1 secondsz1 msrG   z1 milliz1 millisecondz1 usrH   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&   rI   z10 days 1 hz10 days 1 h 1m 1sr&   rI   r1   rF   z-10 days 1 h 1m 1sz-10 days 1 h 1m 1s 3usr0   )r&   rI   r1   rF   rH   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  r   g      %@   1Hz0 days, 02:00:00zfoo bar)r   r   astyper!   r   r    strr   r   r   
ValueErrorr	   r   r<   r:   )expectedmsgr3   r   r   r   test_construction`   s   






$r^   itemr   rD   r   r   mr   r   )r&   rF   rH   rG   r1   rI   weeksnpdtypec                 C   sD   |\}}t d|dd}tdi || dij|ks J d S )NrJ   rA   r   r   )r   r   rY   r!   r   r    )rb   r_   pykwargnpkwargr\   r   r   r   #test_td_construction_with_np_dtypes   s   $re   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    rZ   
_repr_base)rf   r)   r   r   r   test_td_from_repr_roundtrip   s
   rm   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  t td	d
}|jtjj	ksSJ |j
d	ksZJ d S )N1dayi3zCCannot cast 1742682816000000000000 from ns to 'ns' without overflowr
   z2Cannot cast 139993 from D to 'ns' without overflowi" r   r   i rC   )r   r    r   r   r   r   r"   r   r(   r$   r&   )r$   r]   r)   r   r   r   test_overflow_on_construction  s   
ro   z	val, unit))i;  r   )i  r   )i ' r   )i)	r`   )l   }K rD   c                 C   s&  t | |}|dddk sJ t|}|dkr!|j|ks!J |jjdks)J d}tjt	|d |
d W d    n1 sBw   Y  t|d	 |d	 ksSJ |d
9 }|dddkscJ t|}d}tjt	|d |
d W d    n1 sw   Y  t|d	 |d	 ksJ d S )NrA   r   r   Mzm8[s]z:Cannot cast 1067\d\d days .* to unit='ns' without overflowr
   r   rJ   z;Cannot cast -1067\d\d days .* to unit='ns' without overflow)r   r   rY   r!   r   asm8dtyper   r   r   as_unit)rf   r   td64r)   r]   r+   r   r   r   &test_construction_out_of_bounds_td64ns!  s&   rv   ))l    ~L{7r   )l     F\ r   )l     hH r   )l    r`   c                 C   sb   t | |}tjtt|d t| W d    n1 sw   Y  t|d |d ks/J d S )Nr
   i ʚ;)r   r   r   r   r   rZ   r   )rf   r   ru   r   r   r   %test_construction_out_of_bounds_td64sL  s
   

rw   zfmt,expzP6DT0H50M3.010010012S   2   r0   r@      )r&   r1   rF   rG   rH   nanosecondszP-6DT0H50M3.010010012SiP4DT12H30M5Sr/         rR   zP0DT0H0M0.000000123S{   r{   zP0DT0H0M0.00001SrP   zP0DT0H0M0.001SrJ   rO   
P0DT0H1M0SrK   P1DT25H61M61S   =   PT1SrM   PT0SP1WT0S   rE   P1DrC   P1DT1HrQ   P1WPT300Si,  P1DT0H0M00000000000SzPT-6H3M)rI   r1   z-PT6H3Mz	-PT-6H+3Mc                 C   s   t | |ksJ d S r5   r   )fmtexpr   r   r   test_iso_constructor^  s   -r   r   )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   )r   r]   r   r   r   test_iso_constructor_raises  s   

"r   zconstructed_td, conversiond   100ns)r&   rI   r1   ra   rF   rG   rH   r{   l   )D^_ 1us1ns999ns990nsc                 C   s   | t |ksJ d S r5   r   )constructed_td
conversionr   r   r   "test_td_constructor_on_nanoseconds  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
   abcr   )r   r   	TypeErrorr   )r]   r   r   r   test_td_constructor_value_error  s   "r   c                  C   s(   t tdd} t | }|| u sJ d S )NrJ   rD   )r   r   r   )r\   r3   r   r   r   #test_timedelta_constructor_identity  s   r   c                  C   sN   t dd} d}tjt|d t | dd W d    d S 1 s w   Y  d S )NrJ   rC   zRCannot pass both a Timedelta input and timedelta keyword arguments, got \['days'\]r
   rW   )r   r   r   r[   )r)   r]   r   r   r   (test_timedelta_pass_td_and_kwargs_raises  s   
"r   z%constructor, value, unit, expectation10szunit must not be specified)1rW   r0   c                 C   sH   |\}}t j||d | ||d}W d    d S 1 sw   Y  d S )Nr
   r   )r   r   )constructorr$   r   expectationr   r   _r   r   r   test_string_with_unit  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   )rJ   rW   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 numberrT   r
   r   )r$   r]   r   r   r   test_string_without_numbers  s   
"r   c                  C   s    t dd} t| tu sJ d S )Nr   r   )r   r   r   r   )natr   r   r   test_timedelta_new_npnat  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   rN   )r   
isinstance)r   r)   r   r   r   test_subclass_respected  s   r   c                  C   s   t ddddj} | dksJ d}t dddd }tjt|d |j W d    n1 s1w   Y  |jd	} | d
ksBJ d S )Nr@   r   r   rD   l     ,Z6G zCannot convert Timedelta to nanoseconds without overflow. Use `.asm8.view\('i8'\)` to cast represent Timedelta in its own unit \(here, s\).$i  r
   r   l    `;P )r   rt   r$   r   r   OverflowErrorrr   r!   )r3   r]   r)   r   r   r   test_non_nano_value  s   r   )1datetimer   	itertoolsr   numpyr   r   pandas._libs.tslibsr   pandas._libs.tslibs.dtypesr   pandasr   r   r   r	   r   r   r.   r4   r?   r^   markparametrizelistitemsint64int32int16float64float32float16re   rm   ro   rv   rw   r   r   r   r   r   r   r[   r   r   r   r   r   r   r   r   r   <module>   s   	}



!
		
,




	