o
    ŀgW                     @   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mZmZ d dlmZ 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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d0d1ed2d3d4d5d5d6d7fd8ed9d3d4d5d5d6d7fd:ed;d6d<d=d>fd?ed@dAfdBed5dCfdDedEdFfdGedEdHfdIedEdJdKdKd>fdLedEdMfdNed dMfdOedPd dQfdRedEdSfdTedEdEdUfdVedPdSfdWedXdMfdYedEdSfdZed9d4d[fd\ed9d]d[fd^ed2d]d[fgd_d` Z,ejdag dbdcdd Z-ejdeedfdAdgfedEdEdEdEdEdEdEdEdhdifedEdCedEdA djfedEdCedEdA dkfedEdCd=edldA  dmfgdndo Z.dpdq Z/drds Z0dtdu Z1ejdvedwde2dxffedwde2dxffeg dyde2dxffgdzd{ Z3ejd|d}d~ dD dd Z4dd Z5dd Z6dd Z7dS )    )	timedelta)productN)OutOfBoundsTimedelta)NpyDatetimeUnit)IndexNaT	TimedeltaTimedeltaIndexoffsetsto_timedeltac                   @   s   e Zd Zejdg ddd Zejdg d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gdd ZdS )#TestTimedeltaConstructorUnitKeywordunit)YyMc                 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 supportedmatch
         )pytestraises
ValueErrorr   r   )selfr   msg r   c/var/www/html/myenv/lib/python3.10/site-packages/pandas/tests/scalar/timedelta/test_constructors.pytest_unit_m_y_raises   s   "z8TestTimedeltaConstructorUnitKeyword.test_unit_m_y_raiseszunit,unit_depr))hH)minT)sS)msL)nsN)usUc                 C   sb   d| d}t d|d}tjt|d t d|d}W d    n1 s$w   Y  t|| d S )N'8' is deprecated and will be removed in a future version.r   r   r   )r   tmassert_produces_warningFutureWarningassert_equal)r   r   	unit_deprr   expectedresultr   r   r   !test_units_H_T_S_L_N_U_deprecated#   s   zETestTimedeltaConstructorUnitKeyword.test_units_H_T_S_L_N_U_deprecatedzunit, np_unitc                 C      g | ]}|d fqS )Wr   .0valuer   r   r   
<listcomp>9       z.TestTimedeltaConstructorUnitKeyword.<listcomp>)r6   wc                 C   r5   )Dr   r7   r   r   r   r:   :   r;   )r=   ddaysdayDaysDayc                 C   r5   )mr   r7   r   r   r   r:   ;       )rC   minuter    minutesMinuteMinMinutesc                 C   r5   )r"   r   r7   r   r   r   r:   G   rD   )r"   secondssecsecondSecondsSecSecondc                 C   r5   )r$   r   r7   r   r   r   r:   S   rD   )
r$   millisecondsmillisecondmillimillisMSMillisecondsMillisecondMilliMillisc                 C   r5   )r(   r   r7   r   r   r   r:   b   rD   )r(   microsecondsmicrosecondmicromicrosuUSMicrosecondsMicrosecondMicroMicrosr)   c                 C   r5   )r&   r   r7   r   r   r   r:   s   rD   )r&   nanoseconds
nanosecondnanonanosnNSNanoseconds
NanosecondNanoNanosr'   wrapperc           	         s  t  fddtd D dd}d d} fdv r!t}nt}d	}tj||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sJ t
dd}||ksJ td }||ksJ t
d }||ksJ W d    d S 1 sw   Y  d S )Nc                    s   g | ]}t | qS r   )nptimedelta64)r8   i)np_unitr   r   r:          zHTestTimedeltaConstructorUnitKeyword.test_unit_parser.<locals>.<listcomp>   m8[ns])dtyper*   r+   ))r]   r(   )r)   r(   )rg   r&   )r'   r&   z?The 'unit' keyword in TimedeltaIndex construction is deprecatedr   r,   c                    s   g | ]}|   qS r   r   )r8   xr,   r   r   r:      rr   r   ztimedelta64[ns]2)r	   rn   arangetolistr/   r-   r.   r   rangeassert_index_equalr   ro   astype)	r   r   rq   rm   r2   r   warnr3   str_reprr   )rq   r   r   test_unit_parser7   s:   R"z4TestTimedeltaConstructorUnitKeyword.test_unit_parserN)__name__
__module____qualname__r   markparametrizer   r4   rn   arraylistr   r   r   r   r   r   r      sH    

	):Nr   c                  C   s~   d} t jt| d tdd W d    n1 sw   Y  d} t jt| d tdd W d    d S 1 s8w   Y  d S )NzKseconds=86400000000000000000, milliseconds=0, microseconds=0, nanoseconds=0r   i@B r?   zKseconds=60000000000000000000, milliseconds=0, microseconds=0, nanoseconds=0 ʚ;rF   r   r   r   r   r   r   r   r   #test_construct_from_kwargs_overflow   s   "r   c                   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 overflowr        NZor6   r,   g NgmCr   r   r   r   r   '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r   z123456789000000000 hoursr   psr,   r&   )rn   ro   r   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  r$   i8i  r=   r   r(   l    J))rn   ro   r   _valueview_cresor   	NPY_FR_msr9   NPY_FR_sr?   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?   rF   )r   r   to_pytimedeltar   r   r   r9   )r   r3   r   r   r   test_from_pytimedelta_us_reso   s   r   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
   rk   r   r   r   	NPY_FR_nsr9   ra   r   rW   r   rO   r   rG   HourrB   )tickr   r   r   test_from_tick_reso   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 )WNr   r=   rt   r   r>   r,   g      $@z10 daysr   r"   z10 days 00:00:10r?   rJ   i'  )r?   rP   i )r?   rY   l   >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:00r   z	-01:00:00z1 hz1 hourz1 hrz1 hoursz-1 hoursz1 mr   z1.5 mZ   rJ   1 minutez	1 minutesz1 sz1 secondz	1 secondsz1 msrP   z1 milliz1 millisecondz1 usrY   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   rF   rJ   z-10 days 1 h 1m 1sz-10 days 1 h 1m 1s 3usr   )r?   r   rF   rJ   rY   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 )r@   i  r$   g      %@r   1hz0 days, 02:00:00zfoo bar)rn   ro   r|   r   r   r   strr   r   r   r   r   r
   r   rO   )r2   r   r3   r   r   r   test_construction  s   






$r   itemr=   r"   r(   r$   rC   r   r6   )r?   rJ   rY   rP   rF   r   weeksnpdtypec                 C   sD   |\}}t d|dd}tdi || dij|ks J d S )Nr   rt   r   r   )rn   ro   r|   r   r   r   )r   r   pykwargnpkwargr2   r   r   r   #test_td_construction_with_np_dtypes  s   $r   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)r   r   r   r   r   test_td_from_repr_roundtrip  s
   r   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 r   )r   r   r   r   r   r   r   r   r   r9   r?   )r9   r   r   r   r   r   test_overflow_on_construction  s   
r   z	val, unit))i;  r6   )i  r=   )i ' r   )i)	rC   )l   }K r"   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 )Nrt   r   r   r   zm8[s]z:Cannot cast 1067\d\d days .* to unit='ns' without overflowr   r&   r   z;Cannot cast -1067\d\d days .* to unit='ns' without overflow)rn   ro   r|   r   r   asm8ru   r   r   r   as_unit)r   r   td64r   r   r   r   r   r   &test_construction_out_of_bounds_td64ns  s&   r   ))l    ~L{7r6   )l     F\ r=   )l     hH r   )l    rC   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   r   )rn   ro   r   r   r   r   r   )r   r   r   r   r   r   %test_construction_out_of_bounds_td64s  s
   

r   zfmt,expzP6DT0H50M3.010010012S   2   r   r      )r?   rF   rJ   rP   rY   rc   zP-6DT0H50M3.010010012SiP4DT12H30M5Sr      rs   r   zP0DT0H0M0.000000123S{   rc   zP0DT0H0M0.00001Sr   zP0DT0H0M0.001Sr   r   
P0DT0H1M0Sr   P1DT25H61M61S   =   PT1Sr   PT0SP1WT0S   r   P1Dr   P1DT1Hr   P1WPT300Si,  P1DT0H0M00000000000SzPT-6H3M)r   rF   z-PT6H3Mz	-PT-6H+3Mc                 C   s   t | |ksJ d S r   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_raises4  s   

"r   zconstructed_td, conversiond   100ns)r?   r   rF   r   rJ   rP   rY   rc   l   )D^_ 1us1ns999ns990nsc                 C   s   | t |ksJ d S r   r   )constructed_td
conversionr   r   r   "test_td_constructor_on_nanosecondsF  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_errora  s   "r   c                  C   s(   t tdd} t | }|| u sJ d S )Nr   r"   )r   rn   ro   )r2   r3   r   r   r   #test_timedelta_constructor_identityg  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 )Nr   r   zRCannot pass both a Timedelta input and timedelta keyword arguments, got \['days'\]r   r   )r   r   r   r   )r   r   r   r   r   (test_timedelta_pass_td_and_kwargs_raisesn  s   
"r   z%constructor, value, unit, expectation10szunit must not be specified)1r   r   c                 C   sH   |\}}t j||d | ||d}W d    d S 1 sw   Y  d S )Nr   r,   )r   r   )constructorr9   r   expectationr   r   _r   r   r   test_string_with_unity  s   	"r   r9   c                 C   s(   g | ]}t d |dD ]}d|q
qS )z+-, )repeat )r   join)r8   
repetitionelementsr   r   r   r:     s    
r:   )r   r   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 numberr   r   r   )r9   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   )rn   ro   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)r   r   r   r   r   r   r   MyCustomTimedelta  s    r	  r   )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,   r"   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   r   r9   r   r   OverflowErrorr   r   )r3   r   r   r   r   r   test_non_nano_value  s   r  )8datetimer   	itertoolsr   numpyrn   r   pandas._libs.tslibsr   pandas._libs.tslibs.dtypesr   pandasr   r   r   r	   r
   r   pandas._testing_testingr-   r   r   r   r   r   r   r   r   r   r   r   itemsint64int32int16float64float32float16r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r   r   r   r   <module>   s     
	}



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