o
    gS                     @   s   d 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
 ddlZddlmZmZmZmZ ddlm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)lib)NaTiNaT)	TimedeltaTimedeltaIndexoffsetsto_timedeltac                   @   s   e Zd Zdd ZdS )TestTimedeltaUnaryOpsc                 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 )N
   dunitz-10d10d)r   absselftd r   j/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/pandas/tests/scalar/timedelta/test_timedelta.pytest_unary_ops   s   z$TestTimedeltaUnaryOps.test_unary_opsN)__name__
__module____qualname__r   r   r   r   r   r
      s    r
   c                   @   sV  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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jgd d! Zejd"g d#d$d% Zd&d' Zd(d) Zd*d+ Zejd,d-ed.ed/fd0ed1ed2fd3ed4ed5fd6ed7ed8fd9ed:ed;fd<ed=ed>fd?ed@edAfdBedCedDfdEedFedGfdHedIedJfg
dKdL ZdMdN ZdOdP ZejdQedRejdSejejejgdTdU ZdVdW ZdXdY Z dZd[ Z!d\d] Z"d^d_ Z#d`da Z$dbdc Z%ddde Z&dfdg Z'dhdi Z(djS )kTestTimedeltaszunit, value, expected))usgsh|#@i'  )msgr#@i )sgh#@l   c(	 c                 C   s<   t ||d}|j|ksJ t t|| }|j|ksJ d S )Nr   )r   valuestr)r   r   r   expectedresultr   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_secondsnpnanisnan)r   rngexptr   r   r   test_total_seconds_scalar6   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 )Nr   r   r   z1 days, 10:11:12.012345nsz1 days, 10:11:12.012345678)r   to_pytimedelta
isinstancer   r'   timedelta64r   to_timedelta64)r   r   pydttd64r   r   r   test_conversion?   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 N)r/   int)r   r   r   r   checkT   s   z)TestTimedeltas.test_fields.<locals>.checkz1 days, 10:11:12   i@  r   z('Timedelta' object has no attribute '{}'hoursmatch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	   dayssecondsmicrosecondsnanosecondspytestraisesAttributeErrorformatr9   r<   r=   r   r   r    r   
components)r   r7   r*   msgr   tupr   r   r   test_fieldsS   s   











zTestTimedeltas.test_fieldsc                 C   s    t ddd}td|ksJ d S )Nr8   r   r   
P0DT0H0M1S)r   r	   )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Mint64r(   )r	   to_numpydtypekindastyper   )r   r"   r   r   r   test_nat_converters   s   z"TestTimedeltas.test_nat_converterszunit, np_unitc                 C      g | ]}|d fqS )Wr   .0r   r   r   r   
<listcomp>       zTestTimedeltas.<listcomp>)rY   wc                 C   rX   )Dr   rZ   r   r   r   r\      r]   )r_   r   rB   dayDaysDayc                 C   rX   )mr   rZ   r   r   r   r\          )	rc   minuteminr<   tMinuteMinMinutesTc                 C   rX   )r   r   rZ   r   r   r   r\      rd   )r   rC   secsecondSSecondsSecSecondc                 C   rX   )r   r   rZ   r   r   r   r\      rd   )r   r=   millisecondmillimillislMSMillisecondsMillisecondMilliMillisLc                 C   rX   )r   r   rZ   r   r   r   r\      rd   )r   rD   microsecondmicromicrosuUSMicrosecondsMicrosecondMicroMicrosUc                 C   rX   )r-   r   rZ   r   r   r   r\      rd   )r-   rE   
nanosecondnanonanosnNSNanoseconds
NanosecondNanoNanosNwrapperc                    s&  t  fddtd 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skJ tdd}||kswJ td }||ksJ td }||ksJ d S )	Nc                    s   g | ]}t | qS r   )r'   r0   )r[   i)np_unitr   r   r\         z3TestTimedeltas.test_unit_parser.<locals>.<listcomp>   r   c                    s   g | ]}|   qS r   r   )r[   xr   r   r   r\   
  r      ztimedelta64[ns]2)r   r'   arangetolistr	   ranger$   assert_index_equalr   r0   rV   )r   r   r   r   r!   r"   str_reprr   )r   r   r   test_unit_parser   s*   WzTestTimedeltas.test_unit_parserr   )YyrQ   c                 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 supportedr:   r   r8   r   )rF   rG   
ValueErrorr   r	   )r   r   rK   r   r   r   test_unit_m_y_raises  s   "z#TestTimedeltas.test_unit_m_y_raisesc                 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   r-   r   r   r   r   r   r   r_   )r   r'   r0   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 )	Nr8   rC   r   m8[ns])rD   r   rB   r_   )r   r   r'   r0   rV   r   r   r   r   test_timedelta_conversions2  s   

(z)TestTimedeltas.test_timedelta_conversionsc                 C   s    t d}| | ksJ d S )N10m7s)r   r1   rS   r   r   r   r   test_to_numpy_alias;  s   z"TestTimedeltas.test_to_numpy_aliasz
freq,s1,s2r   1 days 02:34:56.789123456-1 days 02:34:56.789123456r   z1 days 02:34:56.789123000z-1 days 02:34:56.789123000r{   z1 days 02:34:56.789000000z-1 days 02:34:56.789000000rn   z1 days 02:34:57z-1 days 02:34:572Sz1 days 02:34:56z-1 days 02:34:565Sz1 days 02:34:55z-1 days 02:34:55rk   z1 days 02:35:00z-1 days 02:35:0012Tz1 days 02:36:00z-1 days 02:36:00Hz1 days 03:00:00z-1 days 03:00:00r   z1 daysz-1 daysc                 C   s@   t d}t d}||}||ksJ ||}||ksJ d S )Nr   r   )r   round)r   freqs1s2t1t2r1r2r   r   r   
test_round@  s   

zTestTimedeltas.test_roundc              	   C   sR   t d}dD ] \}}tjt|d || W d    n1 s!w   Y  qd S )Nr   ))r   z,<YearEnd: month=12> is a non-fixed frequency)rQ   z#<MonthEnd> is a non-fixed frequency)foobarzInvalid frequency: foobarr:   )r   rF   rG   r   r   )r   r   r   rK   r   r   r   test_round_invalidf  s   z!TestTimedeltas.test_round_invalidc                 C   s   t jd}t jt dd t d }||ksJ t jd}t jt d }||ks+J tjtdd t jd W d    n1 sCw   Y  dd	d
g}tjt|d t jd W d    d S 1 shw   Y  d S )Nr   r8   r   ii2zvalue too larger:   |z)Python int too large to convert to C longzint too big to convert)	r   rf   ceilmaxfloorrF   rG   OverflowErrorjoin)r   r"   r!   rK   r   r   r    test_round_implementation_boundsq  s   "z/TestTimedeltas.test_round_implementation_boundsr   d   methodc                 C   s  t jjtd tjt jd}t|}||d|ksJ ||d}d}t || j	|k s-J |j	| dks6J ||d}d}t || j	|k sIJ |j	| dksRJ ||d	}d
}t || j	|k seJ |j	| dksnJ ||d}d}t || j	|k sJ |j	| dksJ ||d}d}t || j	|k sJ |j	| dksJ ||d}d}t || j	|k sJ |j	| dksJ d S )Nr8   )rT   r-   r     r   r   @B r    ʚ;rf   l    Xp7 hl     qar_   l     "R: )
r'   randomrandintr   r   i8maxrR   r   r   r   )r   r   r   requestvalr   resr   r   r   r   test_round_sanity  s6   





z TestTimedeltas.test_round_sanityc                 C   sp   t tdddtd }td tdtjfD ]}||vsJ qt tg}td tdtjfD ]}||v s5J q-d S )Nr   r   r   r8   r(   )r	   r   r   Hourr   floatr'   r(   )r   r   vr   r   r   test_contains  s   
zTestTimedeltas.test_containsc                 C   s,   t ddd}t|t sJ t|tsJ d S )Nr   r   r   )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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   rV   r   r   r   r   conv     
z9TestTimedeltas.test_short_format_converters.<locals>.conv10r   r-   10ns100r   100ns1000r   1000ns1000NS10usi'  100usi 1000usr   1000Us1000uS1ms10msi 100msi 1000msr   z-1s1s10sl    d(	 100sl    h] 1000sl    J)1dr8   r_   z-1d1D10D100D1000D10000Dz 10000D z
 - 10000D zinvalid unit abbreviationr:   1foozunit abbreviation w/o a numberfoo)r   r'   r0   rF   rG   r   )r   r   rK   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>.convr8   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 unitsr:   z- 1days, 00)r'   r0   r   rF   rG   r   )r   r   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   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 )Nr8   r_   r   r   c                 S   s    g | ]}t d dt |d qS )r8   r   r   )r   )r[   r   r   r   r   r\     s     z?TestTimedeltas.test_timedelta_hash_equality.<locals>.<listcomp>   c                 s   s$    | ]}t |t | kV  qd S r5   )hashr.   )r[   r   r   r   r   	<genexpr>  s   " z>TestTimedeltas.test_timedelta_hash_equality.<locals>.<genexpr>r-   )r   r   r   r   allr.   )r   r   r   r   tdsns_tdr   r   r   test_timedelta_hash_equality  s   


z+TestTimedeltas.test_timedelta_hash_equalityc                 C   sf  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 tj	t
|d t |jd d W d    n1 sw   Y  tj	t
|d t |jd d W d    d S 1 sw   Y  d S )Nr8   r-   zint too (large|big) to convertr:   r   )r   rf   r   r   r   r   r   r   rF   rG   r   )r   min_tdmax_tdrK   r   r   r   r   test_implementation_limits%  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_precisionB  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 )Nr8   r   r_      rB   r9   r   )rB   r<   rk   )rB   rC   rn   )rB   r=   r{   )rB   rD   r   )rB   rE   r   )r   resolution_stringr   r   r   r   test_resolution_stringK  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  r8   )rE   )r   
resolution)r   r   r"   r   r   r   test_resolution_deprecatedT  s
   z)TestTimedeltas.test_resolution_deprecatedN))r   r   r   rF   markparametrizer#   r,   r4   rM   rO   rW   r'   arraylistpdIndexr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r	  r  r  r   r   r   r   r   &   s    
	J	.?S

	

$2		r   zvalue, expected10STz-10Sr   r-   r   Fr   c                 C   s   t | |u sJ d S r5   )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, r-   r   iQ r   r   )r   rB   rC   rD   rE   r   )r   r"   r!   r   r   r   "test_timedelta_attribute_precisionq  s   



r  )__doc__datetimer   numpyr'   rF   pandas._libsr   pandas._libs.tslibsr   r   pandasr  r   r   r   r	   pandas._testing_testingr$   r
   r   r  r  r  r  r   r   r   r   <module>   s8        >



