a
    PfW                     @   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 s20    Y  t jt|d td| W d    n1 sj0    Y  t jt|d tddg| W d    n1 s0    Y  d S )Nz/Units 'M', 'Y', and 'y' are no longer supportedmatch
         )pytestraises
ValueErrorr   r   )selfr   msg r   h/var/www/ai-form-bot/venv/lib/python3.9/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 sH0    Y  t|| d S )N'8' is deprecated and will be removed in a future version.r   r   r   )r   tmassert_produces_warningFutureWarningZassert_equal)r   r   Z	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   s   g | ]}|d fqS )Wr   .0valuer   r   r   
<listcomp>9       z.TestTimedeltaConstructorUnitKeyword.<listcomp>)r3   wc                 C   s   g | ]}|d fqS )Dr   r4   r   r   r   r7   :   r8   )r:   ddaysdayZDaysDayc                 C   s   g | ]}|d fqS )mr   r4   r   r   r   r7   ;   s   )r?   minuter    minutesMinuteZMinZMinutesc                 C   s   g | ]}|d fqS )r"   r   r4   r   r   r   r7   G   s   )r"   secondssecsecondZSecondsZSecSecondc                 C   s   g | ]}|d fqS )r$   r   r4   r   r   r   r7   S   s   )
r$   millisecondsZmillisecondZmilliZmillisZMSZMillisecondsZMillisecondMilliZMillisc                 C   s   g | ]}|d fqS )r(   r   r4   r   r   r   r7   b   s   )r(   microsecondsmicrosecondmicromicrosuZUSZMicrosecondsZMicrosecondMicroZMicrosr)   c                 C   s   g | ]}|d fqS )r&   r   r4   r   r   r   r7   s   s   )r&   nanosecondsZ
nanosecondZnanoZnanosnZNSZNanosecondsZ
NanosecondNanoZNanosr'   wrapperc           	         s  t  fddtd D dd}d d} fdv rBt}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sJ t
dd}||ks.J td }||ksJJ t
d }||ksfJ W d    n1 s|0    Y  d S )Nc                    s   g | ]}t | qS r   )nptimedelta64)r5   i)np_unitr   r   r7      r8   zHTestTimedeltaConstructorUnitKeyword.test_unit_parser.<locals>.<listcomp>   m8[ns])dtyper*   r+   ))rM   r(   )r)   r(   )rP   r&   )r'   r&   z?The 'unit' keyword in TimedeltaIndex construction is deprecatedr   r,   c                    s   g | ]}|   qS r   r   )r5   xr,   r   r   r7      r8   r   ztimedelta64[ns]2)r	   rS   Zarangetolistr/   r-   r.   r   rangeZassert_index_equalr   rT   astype)	r   r   rV   rR   r0   r   warnr1   Zstr_reprr   )rV   r   r   test_unit_parser7   s8    Rz4TestTimedeltaConstructorUnitKeyword.test_unit_parserN)__name__
__module____qualname__r   markparametrizer   r2   rS   arraylistr   r`   r   r   r   r   r      sF   

	):Nr   c                  C   s|   d} t jt| d tdd W d    n1 s20    Y  d} t jt| d tdd W d    n1 sn0    Y  d S )NzKseconds=86400000000000000000, milliseconds=0, microseconds=0, nanoseconds=0r   i@B r<   zKseconds=60000000000000000000, milliseconds=0, microseconds=0, nanoseconds=0 ʚ;rA   r   r   r   r   r   r   r   r   #test_construct_from_kwargs_overflow   s    (rm   c                   C   sx   t jtdd tddd W d    n1 s00    Y  t jtdd tddd W d    n1 sj0    Y  d S )Nzwithout overflowr        NZor3   r,   g NgmCrk   r   r   r   r   'test_construct_with_weeks_unit_overflow   s    *ro   c                  C   s   t dd} tjtdd t| dd W d    n1 s<0    Y  tjtdd t| dd W d    n1 sv0    Y  tjtdd t|  W d    n1 s0    Y  d S )Nl    J.mr   z123456789000000000 hoursr   Zpsr,   r&   )rS   rT   r   r   r   r   )objr   r   r   "test_construct_from_td64_with_unit   s    **rq   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s`J ||kslJ |j
dkszJ t dd}t|}| dksJ |jtjjksJ d S )	Ni90  r$   i8i  r:   rn   r(   l    J))rS   rT   r   _valueview_cresor   	NPY_FR_msr6   NPY_FR_sr<   total_seconds	NPY_FR_us)rp   tdobj2td2Zobj3Z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s6J d S )N      )r<   rA   )r   r   Zto_pytimedeltaru   r   ry   r6   )rz   r1   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sZJ t  } t| jtjjksxJ t  } t| jtjjksJ t  } t| jtjjksJ t  } t| jtjjksJ d S N)r
   rQ   r   ru   r   Z	NPY_FR_nsr6   rN   ry   rH   rv   rF   rw   rB   Hourr>   )Z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sDJ tdj| ksVJ tdd	j| ksjJ tdd	j| ks~J | t dd
dd7 } tdj| ksJ tdddj| ksJ tdddj| ksJ tdddj| ksJ tdjdksJ dttdv sJ tdjdks,J dttdv sBJ tdtddksZJ tdtddksrJ 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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d0ks(J td1tdd0ks@J td2tdd0ksXJ td3tdd0kspJ 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sZJ td@tdddddAdB ks|J tdCtddddDdAdB ksJ dE}tj	t
|dF tdG W d    n1 s0    Y  tj	t
|dF tdH W d    n1 s0    Y  dI}tj	t
|dF tdJ W d    n1 sD0    Y  dK}tj	t
|dF t  W d    n1 s~0    Y  dL}tj	t
|dF tdM W d    n1 s0    Y  dN}tj	t
|dF tddO W d    n1 s0    Y  t dd
ddt dPdQdd } tdRd
dj| ksJJ ttdStdSdkshJ ttdStdSdksJ ttdStdSd%ksJ tdT} tdT}|| ksJ ttdStdUksJ dL}tj	t
|dF tdV W d    n1 s0    Y  d S )WNr   r:   rX   rr   r;   r,   g      $@z10 daysrh   r"   z10 days 00:00:10r<   rC   i'  )r<   rG   i )r<   rI   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 mrj   z1.5 mZ   rC   1 minutez	1 minutesz1 sz1 secondz	1 secondsz1 msrG   z1 milliz1 millisecondz1 usrI   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   rA   rC   z-10 days 1 h 1m 1sz-10 days 1 h 1m 1s 3usr   )r<   r   rA   rC   rI   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 numberZfoozMcannot construct a Timedelta from the passed arguments, allowed keywords are )r=   i  r$   g      %@r   Z1hz0 days, 02:00:00zfoo bar)rS   rT   r^   rt   r   rs   strr   r   r   r   r   r
   r   rF   )r0   r   r1   r   r   r   test_construction  s    

(((&(*r   itemr:   r"   r(   r$   r?   r   r3   )r<   rC   rI   rG   rA   r   weeksnpdtypec                 C   sD   |\}}t d|dd}tf i || dij|ks@J d S )Nr   rX   rr   )rS   rT   r^   rt   r   rs   )r   r   ZpykwargZnpkwargr0   r   r   r   #test_td_construction_with_np_dtypes  s    r   val)Z1sz-1sZ1usz-1usz1 dayz-1 dayz-23:59:59.999999z-1 days +23:59:59.999999z-1nsZ1nsz-23:59:59.999999999c                 C   s^   t | }t |j|ksJ t t||ks.J t |jdd|ksFJ t | |ksZJ d S )Nall)format)r   rs   r   Z
_repr_base)r   rz   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>0    Y  d}tjt|d t ddd W d    n1 s|0    Y  t td	d
}|jtjj	ksJ |j
d	ksJ d S )NZ1dayi3zCCannot cast 1742682816000000000000 from ns to 'ns' without overflowr   z2Cannot cast 139993 from D to 'ns' without overflowi" r:   r,   i rh   )r   rs   r   r   r   r   ru   r   ry   r6   r<   )r6   r   rz   r   r   r   test_overflow_on_construction  s    &*r   z	val, unit))i;  r3   )i  r:   )i ' r   )i)	r?   )l   }K r"   c                 C   s*  t | |}|dddk s$J t|}|dkrB|j|ksBJ |jjdksRJ d}tjt	|d |
d W d    n1 s0    Y  t|d	 |d	 ksJ |d
9 }|dddksJ t|}d}tjt	|d |
d W d    n1 s0    Y  t|d	 |d	 ks&J d S )NrX   rr   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)rS   rT   r^   rt   r   asm8rY   r   r   r   as_unit)r   r   td64rz   r   r|   r   r   r   &test_construction_out_of_bounds_td64ns  s"    (*r   ))l    ~L{7r3   )l     F\ r:   )l     hH r   )l    r?   c                 C   sb   t | |}tjtt|d t| W d    n1 s<0    Y  t|d |d ks^J d S )Nr   ri   )rS   rT   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<   rA   rC   rG   rI   rO   zP-6DT0H50M3.010010012SiZP4DT12H30M5Sr~      rW   r   zP0DT0H0M0.000000123S{   rO   zP0DT0H0M0.00001Sr   zP0DT0H0M0.001Sr   r   Z
P0DT0H1M0Srj   ZP1DT25H61M61S   =   ZPT1Sr   ZPT0SZP1WT0S   r   ZP1Drh   ZP1DT1Hr   ZP1WZPT300Si,  ZP1DT0H0M00000000000SzPT-6H3M)r   rA   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   )ZPPPPPPPPPPPPZPDTHMSZP0DT999H999M999SzP1DT0H0M0.0000000000000SzP1DT0H0M0.SPz-Pc                 C   sD   d|  }t jt|d t|  W d    n1 s60    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   Z100ns)r<   r   rA   r   rC   rG   rI   rO   l   )D^_ Z1us1nsZ999nsZ990nsc                 C   s   | t |ksJ d S r   r   )Zconstructed_td
conversionr   r   r   "test_td_constructor_on_nanosecondsF  s    r   c                  C   s@   d} t jt| d tdd W d    n1 s20    Y  d S )Nz1Invalid type <class 'str'>. Must be int or float.r   abcr   )r   r   	TypeErrorr   rl   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   rS   rT   )r0   r1   r   r   r   #test_timedelta_constructor_identityg  s    r   c                  C   sL   t dd} d}tjt|d t | dd W d    n1 s>0    Y  d S )Nr   rh   zRCannot pass both a Timedelta input and timedelta keyword arguments, got \['days'\]r   r   )r   r   r   r   )rz   r   r   r   r   (test_timedelta_pass_td_and_kwargs_raisesn  s
    
r   z%constructor, value, unit, expectationZ10szunit must not be specified)1r   r   c                 C   sF   |\}}t j||d | ||d}W d    n1 s80    Y  d S )Nr   r,   )r   r   )constructorr6   r   Zexpectationr   r   _r   r   r   test_string_with_unity  s    	r   r6   c                 C   s(   g | ] }t d |dD ]}d|qqS )z+-, )repeat )r   join)r5   Z
repetitionelementsr   r   r   r7     s   r7   )r   r   c                 C   sJ   | dkrdnd}t jt|d t|  W d    n1 s<0    Y  d S )Nz--zsymbols w/o a numberr   r   r   )r6   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   )rS   rT   r   r   )Z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)ra   rb   rc   r   r   r   r   MyCustomTimedelta  s   r   r   )r   
isinstance)r   rz   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 sb0    Y  |jd	} | d
ksJ 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   rr   l    `;P )r   r   r6   r   r   OverflowErrorr   rt   )r1   r   rz   r   r   r   test_non_nano_value  s    $r   )8datetimer   	itertoolsr   numpyrS   r   Zpandas._libs.tslibsr   Zpandas._libs.tslibs.dtypesr   Zpandasr   r   r   r	   r
   r   Zpandas._testingZ_testingr-   r   rm   ro   rq   r}   r   r   r   rd   re   rg   itemsZint64Zint32Zint16Zfloat64Zfloat32Zfloat16r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s    
	}



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