o
    _~#g                     @   s   d Z ddlmZmZ ddlZddlZddlZddlmZ ddl	Z
ddl	mZmZmZmZ ddlmZ ddlmZ G dd dZG d	d
 d
ZG dd dZdd Zdd ZdS )z+
Tests for scalar Timedelta arithmetic ops
    )datetime	timedeltaN)OutOfBoundsTimedelta)NaT	Timedelta	Timestampoffsets)opsc                   @   s   e Zd ZdZejdedddedde	
dde	
ddedgd	d
 Zejdedededdde	
dde	
dd e ed gdd Zejdejejgdd Zdd Zejdejejgdd Zejdejejgdd Zejdejejgdd Zejdejejgdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Z d.d/ Z!d0d1 Z"d2d3 Z#d4d5 Z$d6d7 Z%d8d9 Z&ejdejejgd:d; Z'ejdejejgd<d= Z(d>d? Z)d@dA Z*dBdC Z+dDS )E TestTimedeltaAdditionSubtractionz\
    Tests for Timedelta methods:

        __add__, __radd__,
        __sub__, __rsub__
    ten_seconds
   sunitsecondsl    d(	 nsc                 C   D   t d}t d}t d}|| }||ksJ || }||ks J d S )Nz20130101 09:01:12.123456z20130101 09:01:22.12345620130101 09:01:02.123456r   )selfr   baseexpected_addexpected_subresult r   /var/www/static.ux5.de/https/Moving-Object-Detection-with-OpenCV/env/lib/python3.10/site-packages/pandas/tests/scalar/timedelta/test_arithmetic.pytest_td_add_sub_ten_seconds"      z<TestTimedeltaAdditionSubtraction.test_td_add_sub_ten_secondsone_day_ten_secsz1 day, 00:00:10z1 days, 00:00:10   daysr   Dc                 C   r   )Nz20130102 09:01:12.123456z20130103 09:01:22.123456r   r   )r   r   r   r   r   r   r   r   r   #test_td_add_sub_one_day_ten_seconds8   r   zDTestTimedeltaAdditionSubtraction.test_td_add_sub_one_day_ten_secondsopc                 C   s   t ddd}||tddd}|tju rt|tsJ |tdddks%J ||td}t|ts3J |tdks;J ||td	}t|tsJJ |td
ksRJ ||t}|tu s]J d S )Nr   dr     r       z2018-01-12 18:09z2018-01-22 18:09z
2018-01-12
2018-01-22)	r   r   operatoradd
isinstancer   np
datetime64r   r   r%   tdr   r   r   r   test_td_add_datetimelike_scalarN   s   

z@TestTimedeltaAdditionSubtraction.test_td_add_datetimelike_scalarc                 C   s   t dd}d}tjt|d |tddd  W d    n1 s#w   Y  d}tjt|d |tdd	  W d    d S 1 sDw   Y  d S )
Nz
1700-01-01r   z3Cannot cast 259987 from D to 'ns' without overflow.matchi r#   r   z>Cannot cast 259987 days 00:00:00 to unit='ns' without overflowr"   )r   as_unitpytestraisesr   r   r   )r   tsmsgr   r   r   test_td_add_timestamp_overflowe   s   "z?TestTimedeltaAdditionSubtraction.test_td_add_timestamp_overflowc                 C   s@   t ddd}||t dd}t|t sJ |t ddksJ d S )Nr   r&   r   r4      r   r,   r/   r   r   r   test_td_add_tdo   s   z/TestTimedeltaAdditionSubtraction.test_td_add_tdc                 C   s@   t ddd}||tdd}t|t sJ |t ddksJ d S )Nr   r&   r   	   r4      r   r   r,   r/   r   r   r   test_td_add_pytimedeltaw   s   z8TestTimedeltaAdditionSubtraction.test_td_add_pytimedeltac                 C   sB   t ddd}||tdd}t|t sJ |t ddksJ d S )Nr   r&   r   r#      r4   r   r-   timedelta64r,   r/   r   r   r   test_td_add_timedelta64~   s   z8TestTimedeltaAdditionSubtraction.test_td_add_timedelta64c                 C   sB   t ddd}||td}t|t sJ |t dddksJ d S )Nr   r&   r   rC   r"   hoursr   r   Hourr,   r/   r   r   r   test_td_add_offset   s   z3TestTimedeltaAdditionSubtraction.test_td_add_offsetc                 C   s>   t ddd}t ddd}|| }t|t sJ ||ksJ d S Nr   r&   r   r   r   r<   r   r0   expectedr   r   r   r   test_td_sub_td   s
   z/TestTimedeltaAdditionSubtraction.test_td_sub_tdc                 C   h   t ddd}t ddd}||  }t|t sJ ||ksJ | | }t|t s,J ||ks2J d S rL   )r   to_pytimedeltar,   rM   r   r   r   test_td_sub_pytimedelta      z8TestTimedeltaAdditionSubtraction.test_td_sub_pytimedeltac                 C   rP   rL   )r   to_timedelta64r,   rM   r   r   r   test_td_sub_timedelta64   rS   z8TestTimedeltaAdditionSubtraction.test_td_sub_timedelta64c                 C   s$   t ddd}|t }|tu sJ d S Nr   r&   r   r   r   r   r0   r   r   r   r   test_td_sub_nat   s   z0TestTimedeltaAdditionSubtraction.test_td_sub_natc                 C   sB   t ddd}td}|| }|tu sJ || }|tu sJ d S Nr   r&   r   r   r   r-   rE   r   )r   r0   td_natr   r   r   r   test_td_sub_td64_nat   s   
z5TestTimedeltaAdditionSubtraction.test_td_sub_td64_natc                 C   s@   t ddd}|td }t|t sJ |t dddksJ d S )Nr   r&   r   r       hrI   rX   r   r   r   test_td_sub_offset   s   z3TestTimedeltaAdditionSubtraction.test_td_sub_offsetc              	   C   s
  t ddd}d}ddtdtdfD ]n}tjt|d ||  W d    n1 s,w   Y  tjt|d ||  W d    n1 sGw   Y  tjt|d ||  W d    n1 sbw   Y  tjt|d ||  W d    n1 s}w   Y  qd S )Nr   r&   r   unsupported operand type          @r2   )r   r-   int64float64r6   r7   	TypeError)r   r0   r9   otherr   r   r   test_td_add_sub_numeric_raises   s"   



z?TestTimedeltaAdditionSubtraction.test_td_add_sub_numeric_raisesc                 C   s  t d}tdg}d}tjt|d |tdg  W d    n1 s&w   Y  dddg}tjt|d ||  W d    n1 sHw   Y  d}tjt|d ||  W d    n1 sew   Y  d	}tjt|d ||  W d    d S 1 sw   Y  d S )
N1 dayr    z;unsupported operand type\(s\) for \+: 'Timedelta' and 'int'r2   |zEunsupported operand type\(s\) for \+: 'numpy.ndarray' and 'Timedelta'z;Concatenation operation is not implemented for NumPy arraysz:unsupported operand type\(s\) for -: 'Timedelta' and 'int'zDunsupported operand type\(s\) for -: 'numpy.ndarray' and 'Timedelta')r   r-   arrayr6   r7   rf   joinr   r0   rg   r9   r   r   r   test_td_add_sub_int_ndarray   s,   


"z<TestTimedeltaAdditionSubtraction.test_td_add_sub_int_ndarrayc                 C   s>   t ddd}t| }|tu sJ td| }|tu sJ d S rZ   )r   r   r-   r.   rX   r   r   r   test_td_rsub_nat   s
   z1TestTimedeltaAdditionSubtraction.test_td_rsub_natc                 C   s<   t dtddd }t|tsJ |tdddksJ d S )Nr    r   r&   r   ir_   )r   rJ   r   r,   r   r   r   r   r   test_td_rsub_offset   s   z4TestTimedeltaAdditionSubtraction.test_td_rsub_offsetc                 C   sH   t tdtdg}t tdtdg}|td }t|| d S )N20130101 9:0120121230 9:02z20121231 9:01z20121229 9:021Dr-   rk   r   r   tmassert_numpy_array_equal)r   arrexpresr   r   r   ,test_td_sub_timedeltalike_object_dtype_array   s   zMTestTimedeltaAdditionSubtraction.test_td_sub_timedeltalike_object_dtype_arrayc                 C   sl   t d}t|tdtddg}t|td tdtddtd g}|td }t|| d S )N2021-11-09 09:54:00rt   rb   r_   0D)r   r-   rk   r   rE   rv   rw   )r   nowrx   ry   rz   r   r   r   7test_td_sub_mixed_most_timedeltalike_object_dtype_array   s   
zXTestTimedeltaAdditionSubtraction.test_td_sub_mixed_most_timedeltalike_object_dtype_arrayc                 C   sh   t d}t|tdtddg}d}tjt|d td|  W d    d S 1 s-w   Y  d S )Nr|   rt   rb   r_   zAunsupported operand type\(s\) for \-: 'Timedelta' and 'Timestamp'r2   )r   r-   rk   r   rE   r6   r7   rf   )r   r~   rx   r9   r   r   r   8test_td_rsub_mixed_most_timedeltalike_object_dtype_array  s   "zYTestTimedeltaAdditionSubtraction.test_td_rsub_mixed_most_timedeltalike_object_dtype_arrayc                 C   sJ   t tdtdg}t tdtdg}||td}t|| d S )Nrr   rs   z20130102 9:01z20121231 9:02rt   ru   )r   r%   rx   ry   rz   r   r   r   ,test_td_add_timedeltalike_object_dtype_array  s   zMTestTimedeltaAdditionSubtraction.test_td_add_timedeltalike_object_dtype_arrayc                 C   sR   t d}t|tdg}t|td tdg}||td}t|| d S )Nr|   rt   2D)r   r-   rk   r   rv   rw   )r   r%   r~   rx   ry   rz   r   r   r   2test_td_add_mixed_timedeltalike_object_dtype_array  s
   zSTestTimedeltaAdditionSubtraction.test_td_add_mixed_timedeltalike_object_dtype_arrayc                 C   s   t d}t| g}tt d g}|| }t|| || }t|| || }t||d  || }t||d  d S )Nri   2 Daysr   r   r-   rk   rT   rv   rw   r   r0   rg   rN   r   r   r   r   test_td_add_sub_td64_ndarray&  s   z=TestTimedeltaAdditionSubtraction.test_td_add_sub_td64_ndarrayc                 C   s~   t d}tjdgdd}tjdgdd}t|| | t|| | tjdgdd}t| | | t|| | d S )Nri   z
2000-01-01zM8[ns]dtypez
2000-01-02z
1999-12-31r   r-   rk   rv   rw   )r   r0   rg   rN   r   r   r   test_td_add_sub_dt64_ndarray6  s   z=TestTimedeltaAdditionSubtraction.test_td_add_sub_dt64_ndarrayc                 C   s   t d}t|j}|| }t|t sJ |d| ksJ || }t|t s(J |d| ks0J || }t|t s;J |d| ksCJ || }t|t sNJ |d| ksVJ d S )Nri   rb   r   )r   r-   rk   asm8r,   )r   r0   rg   r   r   r   r   test_td_add_sub_ndarray_0dB  s   z;TestTimedeltaAdditionSubtraction.test_td_add_sub_ndarray_0dN),__name__
__module____qualname____doc__r6   markparametrizer   r   r-   rE   r   Secondr   Dayr$   r*   r+   r	   raddr1   r:   r=   rA   rF   rK   rO   rR   rU   rY   r]   r`   rh   rn   ro   rq   r{   r   r   r   r   r   r   r   r   r   r   r   r
      sj    
















r
   c                
   @   s  e Zd ZdZejdee	dde	dgejde
jejgdd Zejdejed	edgejde
jejgd
d Zejde
jejg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jed	edgdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Z d(d) Z!d*d+ Z"d,d- Z#d.d/ Z$d0d1 Z%d2d3 Z&d4d5 Z'd6d7 Z(d8d9 Z)d:d; Z*d<d= Z+d>d? Z,d@dA Z-dBdC Z.dDdE Z/dFdG Z0dHdI Z1dJdK Z2dLdM Z3dNdO Z4dPdQ Z5dRdS Z6dTdU Z7dVdW Z8dXdY Z9dZd[ Z:d\d] Z;d^d_ Z<d`da Z=dbdc Z>ddde Z?ejde
jeje
j@ejAejBgejdfeCeDdgeDdhgeCeDdieEdjggdkdl ZFdmS )n#TestTimedeltaMultiplicationDivisionz
    Tests for Timedelta methods:

        __mul__, __rmul__,
        __div__, __rdiv__,
        __truediv__, __rtruediv__,
        __floordiv__, __rfloordiv__,
        __mod__, __rmod__,
        __divmod__, __rdivmod__
    r\   r   r   r%   c                 C   st   t ddd}dg d}dd| d| dd	g}tjt|d
 ||| W d    d S 1 s3w   Y  d S )Nr   r&   r   rj   )znumpy.timedelta64NaTTyper   z'unsupported operand type\(s\) for \*: 'z' and ''z1ufunc '?multiply'? cannot use operands with typesr2   r   rl   r6   r7   rf   )r   r%   r\   r0   typsr9   r   r   r   test_td_mul_natf  s   "z3TestTimedeltaMultiplicationDivision.test_td_mul_natnanNaNc                 C   s&   t ddd}|||}|tu sJ d S rV   rW   )r   r%   r   r0   r   r   r   r   test_td_mul_nanw  s   
z3TestTimedeltaMultiplicationDivision.test_td_mul_nanc                 C   s  t dd}||d}|t ddksJ ||d}|t dddks"J ||tjtu s,J |d	|jd	|j ks9J |d
|jd
|j ksFJ d}tjt|d ||tddd W d    n1 scw   Y  tjt|d ||| W d    d S 1 sw   Y  d S )N   minutesrb   rC   g      ?      r   r   g      ra   r2   r'   r    )	r   r-   r   r   _valuer6   r7   rf   r   )r   r%   r0   r   r9   r   r   r   test_td_mul_scalar  s   


"z6TestTimedeltaMultiplicationDivision.test_td_mul_scalarc                 C   sT   t d}tdg}tt d g}|| }t|| || }t|| d S )Nri   rb   r   r   r   r   r   r   test_td_mul_numeric_ndarray  s   z?TestTimedeltaMultiplicationDivision.test_td_mul_numeric_ndarrayc                 C   sz   t d}tjdtjd}|jdksJ t d}|| }t|t u s#J ||ks)J || }t|t u s5J ||ks;J d S )Nri   rb   r   r   2 days)r   r-   rk   rd   ndimtype)r   r0   rg   rN   rz   r   r   r   test_td_mul_numeric_ndarray_0d  s   zBTestTimedeltaMultiplicationDivision.test_td_mul_numeric_ndarray_0dc                 C   s   t d}tt d g}dtj dtj d}tjt|d ||  W d    n1 s/w   Y  tjt|d ||  W d    d S 1 sKw   Y  d S )Nri   r   z:ufunc '?multiply'? cannot use operands with types dtype\('zm8\[ns\]'\) and dtype\('zm8\[ns\]'\)r2   )	r   r-   rk   rT   rv   ENDIANr6   r7   rf   rm   r   r   r    test_td_mul_td64_ndarray_invalid  s   

"zDTestTimedeltaMultiplicationDivision.test_td_mul_td64_ndarray_invalidc                 C   sd   t ddd}|td }|dksJ || dksJ |tdd dks'J t|t s0J d S )	Nr   r&   r   r       <   r_   r   )r   r   rJ   r-   rE   isnanr   rX   r   r   r    test_td_div_timedeltalike_scalar  s   zDTestTimedeltaMultiplicationDivision.test_td_div_timedeltalike_scalarc                 C   s   t d}|tdd }||jd ksJ |tdd }||jd ks&J |tdd }||jks5J t d}|tdd }|dksGJ |tdd }|dksUJ |tdd }||jksdJ d S )	Nz1 days 2 hours 3 nsr    r#   l     "R: r    ʚ;r   im )r   r-   rE   r   rX   r   r   r   test_td_div_td64_non_nano  s   z=TestTimedeltaMultiplicationDivision.test_td_div_td64_non_nanoc                 C   s`   t ddd}|d }t|t sJ |t ddksJ |d }t|t s%J |t ddks.J d S )Nr   r&   r   rb      r4   r<   rX   r   r   r   test_td_div_numeric_scalar  s   z>TestTimedeltaMultiplicationDivision.test_td_div_numeric_scalarc                 C   s8   t ddd}|| }|tu sJ || }|tu sJ d S rV   rW   )r   r   r0   r   r   r   r   test_td_div_nan  s
   
z3TestTimedeltaMultiplicationDivision.test_td_div_nanc                 C   sX   t d}tt d g}tdg}|| }t|| || }t||d  d S )Nri   r   g      ?r   r   r   r   r   r   test_td_div_td64_ndarray  s   z<TestTimedeltaMultiplicationDivision.test_td_div_td64_ndarrayc                 C   s8   t d}td}|| }t|t sJ ||ksJ d S )Nri   r    )r   r-   rk   r,   )r   r0   rg   rz   r   r   r   test_td_div_ndarray_0d	  s
   
z:TestTimedeltaMultiplicationDivision.test_td_div_ndarray_0dc                 C   sB   t ddd}td| }|dksJ tdd| dksJ d S )	Nr   r&   r   r    gq?r   r_   g      ?)r   r   rJ   r-   rE   rX   r   r   r   !test_td_rdiv_timedeltalike_scalar  s   zETestTimedeltaMultiplicationDivision.test_td_rdiv_timedeltalike_scalarc                 C   s   t ddd}t| }t|sJ d | }t|sJ td| }t|s*J d}tjt|d td|  W d    n1 sEw   Y  d}tjt|d tj	|  W d    d S 1 sdw   Y  d S )Nr   r&   r   r   zGunsupported operand type\(s\) for /: 'numpy.datetime64' and 'Timedelta'r2   <unsupported operand type\(s\) for /: 'float' and 'Timedelta')
r   r   r-   r   rE   r6   r7   rf   r.   r   )r   r0   r   r9   r   r   r   test_td_rdiv_na_scalar  s   "z:TestTimedeltaMultiplicationDivision.test_td_rdiv_na_scalarc                 C   s  t ddd}tj|gtd}|| }tjdgtjd}t|| td g}|| }ttjg}t|| tjtjgtd}d}tj	t
|d ||  W d    n1 sYw   Y  tjtjgtjd}d}tj	t
|d ||  W d    d S 1 sw   Y  d S )	Nr   r&   r   r   r    r   r2   z$cannot use operands with types dtype)r   r-   rk   objectre   rv   rw   r   r6   r7   rf   )r   r0   rx   r   rN   r9   r   r   r   test_td_rdiv_ndarray1  s&   

"z8TestTimedeltaMultiplicationDivision.test_td_rdiv_ndarrayc                 C   s,   t ddd}t|j}|| dksJ d S )Nr   r&   r   r    )r   r-   rk   r   )r   r0   rx   r   r   r   test_td_rdiv_ndarray_0dH  s   z;TestTimedeltaMultiplicationDivision.test_td_rdiv_ndarray_0dc                 C   sZ   t ddd}t ddd}|| dksJ | |  dksJ d| |  dks+J d S )Nr   r   rH   r   r    rb   )r   rQ   rT   r   r0   scalarr   r   r   %test_td_floordiv_timedeltalike_scalarR  s
   zITestTimedeltaMultiplicationDivision.test_td_floordiv_timedeltalike_scalarc                 C   sL   t ddd}|tj tu sJ t|t sJ t|td s$J d S )Nr   r   r   r   )r   r-   r   r   r   rE   r   r0   r   r   r   test_td_floordiv_null_scalar[  s   z@TestTimedeltaMultiplicationDivision.test_td_floordiv_null_scalarc                 C   s<   t ddd}|td dksJ |td dksJ d S )Nr   r   r   r    rb   \   )r   r   rJ   Minuter   r   r   r   test_td_floordiv_offsetsc  s   z<TestTimedeltaMultiplicationDivision.test_td_floordiv_offsetsc                 C   s`   t ddd}dg d}tjt|d |tjddd	  W d    d S 1 s)w   Y  d S )
Nr   r   r   rj   )z.Invalid dtype datetime64\[D\] for __floordiv__z8'dtype' is an invalid keyword argument for this functionz8this function got an unexpected keyword argument 'dtype'z5ufunc '?floor_divide'? cannot use operands with typesr2   
2016-01-01zdatetime64[us]r   )r   rl   r6   r7   rf   r-   r.   r   r0   r9   r   r   r   test_td_floordiv_invalid_scalari  s   "zCTestTimedeltaMultiplicationDivision.test_td_floordiv_invalid_scalarc                 C   s~   t ddd}t ddd}|d |ksJ |d |ksJ |td |ks'J |td |ks2J |td |ks=J d S )Nr   r   r   r        rb   rc   )r   r-   re   int32uint8)r   r0   rN   r   r   r   test_td_floordiv_numeric_scalarx  s   zCTestTimedeltaMultiplicationDivision.test_td_floordiv_numeric_scalarc                 C   s   t ddd}t ddd}|t|  dksJ d| t| g }tjdgtjd}t|| d| t| tdg }tdtjg}t|| d S )Nr   r   r   r    r   r   r   )	r   r-   rk   rT   rd   rv   rw   rE   r   )r   r0   r   rz   rN   r   r   r   $test_td_floordiv_timedeltalike_array  s    zHTestTimedeltaMultiplicationDivision.test_td_floordiv_timedeltalike_arrayc                 C   s:   t ddd}tjdgtjd}|| }|jjdksJ d S )Nr   r   r   r    r   m)r   pdSeriesr-   rd   r   kind)r   r0   serrz   r   r   r   test_td_floordiv_numeric_series  s   zCTestTimedeltaMultiplicationDivision.test_td_floordiv_numeric_seriesc                 C   s`   t ddd}t ddd}||dksJ | | dks!J d| | dks.J d S )Nr   r   r   r    r   rb   r   )r   __rfloordiv__rQ   rT   r   r   r   r   &test_td_rfloordiv_timedeltalike_scalar  s
   zJTestTimedeltaMultiplicationDivision.test_td_rfloordiv_timedeltalike_scalarc                 C   s>   t ddd}t|tsJ t|tdsJ d S )Nr   r   r   )r   r-   r   r   r   rE   r   r   r   r   test_td_rfloordiv_null_scalar  s   zATestTimedeltaMultiplicationDivision.test_td_rfloordiv_null_scalarc                 C   s    t dtdd dksJ d S )Nr       r   rb   )r   rJ   r   r   r   r   r   test_td_rfloordiv_offsets  s    z=TestTimedeltaMultiplicationDivision.test_td_rfloordiv_offsetsc                 C   sj   t ddd}tdd}||tu sJ d}tjt|d ||  W d    d S 1 s.w   Y  d S )Nr   r   r   uszHunsupported operand type\(s\) for //: 'numpy.datetime64' and 'Timedelta'r2   )r   r-   r.   r   NotImplementedr6   r7   rf   )r   r0   dt64r9   r   r   r    test_td_rfloordiv_invalid_scalar  s   
"zDTestTimedeltaMultiplicationDivision.test_td_rfloordiv_invalid_scalarc                 C   sJ  t ddd}|tjtu sJ |dtu sJ |dtu s"J |tdtu s.J |tdtu s:J |tdtu sFJ d}tj	t
|d td|  W d    n1 saw   Y  tj	t
|d td|  W d    n1 sw   Y  tj	t
|d td|  W d    d S 1 sw   Y  d S )	Nr   r   g      @rb   rc   r>   z9unsupported operand type\(s\) for //: '.*' and 'Timedeltar2   )r   r   r-   r   r   re   r   r   r6   r7   rf   r   r   r   r    test_td_rfloordiv_numeric_scalar  s"   "zDTestTimedeltaMultiplicationDivision.test_td_rfloordiv_numeric_scalarc                 C   s   t ddd}t ddd}|t| dksJ |td|  g}tjdgtjd}t|| td|  tdg}||}tdtj	g}t|| d S )Nr   r   r   r    r   r   r   )
r   r   r-   rk   rT   rd   rv   rw   rE   r   )r   r0   r   rz   rN   rx   r   r   r   %test_td_rfloordiv_timedeltalike_array  s   
zITestTimedeltaMultiplicationDivision.test_td_rfloordiv_timedeltalike_arrayc                 C   sZ   t g dd }d}tjt|d |tddd  W d    d S 1 s&w   Y  d S )N)irPi isPitPi vPr   Invalid dtyper2   r    r   r   )r-   rk   r6   r7   rf   r   )r   intsr9   r   r   r   test_td_rfloordiv_intarray  s
   "z>TestTimedeltaMultiplicationDivision.test_td_rfloordiv_intarrayc                 C   st   t ddd}tjdgtjd}||}|tu sJ d}tjt	|d ||  W d    d S 1 s3w   Y  d S )Nr   r   r    r   r   r2   )
r   r   r   r-   rd   r   r   r6   r7   rf   )r   r0   r   rz   r9   r   r   r    test_td_rfloordiv_numeric_series  s   

"zDTestTimedeltaMultiplicationDivision.test_td_rfloordiv_numeric_seriesc                 C   s|   t dd}|t dd }t|t sJ |t ddksJ |tdd }t|t s*J |t dks2J |t }|tu s<J d S )N%   rH   rC   r    r   r   r   )r   r,   r   r   rX   r   r   r   test_mod_timedeltalike  s   
z:TestTimedeltaMultiplicationDivision.test_mod_timedeltalikec                 C   s*   t dd}|tdd }|tu sJ d S )Nr   r   r   r   r[   rX   r   r   r   test_mod_timedelta64_nat  s   
z<TestTimedeltaMultiplicationDivision.test_mod_timedelta64_natc                 C   s>   t dd}|tdd }t|t sJ |t ddksJ d S )Nr   r   rb   r_   r    rD   rX   r   r   r   test_mod_timedelta64  s   
z8TestTimedeltaMultiplicationDivision.test_mod_timedelta64c                 C   s<   t dd}|td }t|t sJ |t ddksJ d S )Nr   r   r   rb   rI   rX   r   r   r   test_mod_offset      
z3TestTimedeltaMultiplicationDivision.test_mod_offsetc                 C   s   t dd}|d }t|t sJ |t dksJ |d }t|t s#J |t dddks-J |td }t|t s:J |t dddksDJ d S )	Nr   r   rb   r   g   mBr   r;   r   )r   r,   intrX   r   r   r   test_mod_numeric(  s   
z4TestTimedeltaMultiplicationDivision.test_mod_numericc                 C   s   t dd}d}tjt|d |td  W d    n1 sw   Y  tjt|d |g   W d    d S 1 s;w   Y  d S )Nr   r   ra   r2   r)   )r   r6   r7   rf   r   r   r   r   r   test_mod_invalid9  s   

"z4TestTimedeltaMultiplicationDivision.test_mod_invalidc                 C   s<   t dd}tdd| }t|t sJ |t ddksJ d S )Nr   r   r   r    r@   rX   r   r   r   test_rmod_pytimedeltaC  r   z9TestTimedeltaMultiplicationDivision.test_rmod_pytimedeltac                 C   s>   t dd}tdd| }t|t sJ |t ddksJ d S )Nr   r   r   r   rb   rD   rX   r   r   r   test_rmod_timedelta64K  s   
z9TestTimedeltaMultiplicationDivision.test_rmod_timedelta64c                 C   s   t dd}d}tjt|d td|  W d    n1 sw   Y  tjt|d d|  W d    n1 s:w   Y  tjt|d d|  W d    n1 sUw   Y  d}tjt|d td	d
g|  W d    d S 1 sxw   Y  d S )Nr   r   zunsupported operandr2   r)            0@Invalid dtype int      )r   r6   r7   rf   r   r-   rk   r   r   r   r   test_rmod_invalidR  s   


"z5TestTimedeltaMultiplicationDivision.test_rmod_invalidc                 C   s   t ddd}t|d}|d t dddksJ t|d t s J |d t dd	ks+J |s/J t|tj}|d tu s=J |d tu sEJ d S )
Nrb   rC   rG   g  $Br   r    r   r   r   )r   divmodr,   r-   r   r   rX   r   r   r   test_divmod_numericg  s   
z7TestTimedeltaMultiplicationDivision.test_divmod_numericc                 C   s   t ddd}t|tdd}|d dksJ t|d t sJ |d t ddks*J t|d}|d t ddks:J t|d t sCJ |d t dksMJ t|t}t|d s[J |d tu scJ d S )	Nrb   rC   rG   r    r4   r   r   6   )r   r   r   r,   r   r-   r   rX   r   r   r   test_divmodu  s   

z/TestTimedeltaMultiplicationDivision.test_divmodc                 C   sX   t ddd}t|td}|d dksJ t|d t sJ |d t dd	ks*J d S )
Nrb   rC   rG   rB   r   r    r   r   )r   r   r   rJ   r,   rX   r   r   r   test_divmod_offset  s
   z6TestTimedeltaMultiplicationDivision.test_divmod_offsetc                 C   sR   t ddd}d}tjt|d t|td W d    d S 1 s"w   Y  d S )Nrb   rC   rG   zAunsupported operand type\(s\) for //: 'Timedelta' and 'Timestamp'r2   r)   )r   r6   r7   rf   r   r   r   r   r   r   test_divmod_invalid  s
   "z7TestTimedeltaMultiplicationDivision.test_divmod_invalidc                 C   sT   t tdddtdd}|d dksJ t|d tsJ |d tddks(J d S )Nrb   rC   rG   r    r4   r   r   )r   r   r   r,   rp   r   r   r   test_rdivmod_pytimedelta  s   z<TestTimedeltaMultiplicationDivision.test_rdivmod_pytimedeltac                 C   sR   t tdtdd}|d dksJ t|d tsJ |d tddks'J d S )Nr   rB   r   r   r   r    r   )r   r   rJ   r   r,   rp   r   r   r   test_rdivmod_offset  s   z7TestTimedeltaMultiplicationDivision.test_rdivmod_offsetc                 C   s  t dd}d}tjt|d ttd| W d    n1 s w   Y  tjt|d td| W d    n1 s<w   Y  tjt|d td| W d    n1 sXw   Y  d}tjt|d ttd	d
g| W d    d S 1 s|w   Y  d S )Nr   r   ra   r2   r)   r   r   r   r   r   )r   r6   r7   rf   r   r   r-   rk   r   r   r   r   test_rdivmod_invalid  s   
"z8TestTimedeltaMultiplicationDivision.test_rdivmod_invalidrx   rr   rs   r|   rt   c                 C   sF   d}t jt|d ||td W d    d S 1 sw   Y  d S )Nz7unsupported operand type|cannot use operands with typesr2   rt   )r6   r7   rf   r   )r   r%   rx   r9   r   r   r   (test_td_op_timedelta_timedeltalike_array  s   "zLTestTimedeltaMultiplicationDivision.test_td_op_timedelta_timedeltalike_arrayN)Gr   r   r   r   r6   r   r   r   r-   rE   r*   mulr	   rmulr   r   re   floatr   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   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  truedivrdivrsubrk   r   r   r  r   r   r   r   r   W  s    

	
	

	r   c                   @   sf   e Zd Zejjdd Zdd Zdd Zdd Z	d	d
 Z
dd Zdd Zejdddgdd ZdS )TestTimedeltaComparisonc                 C   s  dD ]d}t j|j}t j|j}|tjk sJ |tjks J |tjkr'J |tjkr.J |tjks5J |tjkr<J |tjksCJ |tjksJJ |tjk rQJ |tjkrXJ |tjks_J |tjkrfJ qdD ]d}t j|j}t j|j}|tjksJ |tjksJ |tjk rJ |tjkrJ |tjksJ |tjkrJ |tjk sJ |tjksJ |tjkrJ |tjkrJ |tjksJ |tjkrJ qid S )N)r   r   )msr   )r   maxr5   minr   )r   r   tdmaxtdminr   r   r   test_compare_pytimedelta_bounds  s>   z7TestTimedeltaComparison.test_compare_pytimedelta_boundsc                 C   s   t ddd}t|jdt|jd }t|}|j|jks J |j|jks(J ||ks.J ||kr4J ||k r:J ||kr@J ||ksFJ ||ksLJ |tddd }||ks\J ||krbJ ||k shJ ||ksnJ ||krtJ ||krzJ d S )Niɚ;iQ r!   r#   r   r    r   )r   r-   rE   r"   r   r   r5   )r   pytdtd64r0   td2r   r   r    test_compare_pytimedelta_bounds2  s$   z8TestTimedeltaComparison.test_compare_pytimedelta_bounds2c                 C   s   |}|d}|j }t|tsJ ||ksJ ||krJ ||ks"J ||ks(J ||k r.J ||kr4J |d| kr<J |d| ksDJ |d| ksLJ |d| k sTJ |d| kr\J |d| krdJ d S )Nr   rb   )_as_pd_timedeltar,   r   )r   tick_classesclsoffr0   r   r   r   test_compare_tick  s    z)TestTimedeltaComparison.test_compare_tickc                 C   s   t d}t d}tj||gtd}||k}tjddgtd}||k s&J tj||g||ggtd}||k}tjddgddggtd}|j|jksLJ ||k sTJ d S )Nr   z3 hoursr   FT)r   r-   rk   r   boolallshape)r   r0   rg   rx   rz   rN   r   r   r   test_comparison_object_array   s   z4TestTimedeltaComparison.test_comparison_object_arrayc                 C   sD   t dt dg}t|}|d |k}tddg}t|| d S )Nz0 days 01:00:00r   Fr   )r   periodsrx   r   rN   r   r   r   test_compare_timedelta_ndarray1  s
   
z6TestTimedeltaComparison.test_compare_timedelta_ndarrayc                 C   s   t dd}t|d }t jg dtd}||k}t|| ||k}t|| ||k}t||  ||k}t||  d S )Nr   ztimedelta64[ns]r    )FTFFFr   )r-   arangeastyper   rk   r  rv   rw   )r   rx   r0   rN   r   r   r   r   test_compare_td64_ndarray9  s   z1TestTimedeltaComparison.test_compare_td64_ndarrayc                 C   s   G dd d}t d}|dksJ |dksJ || ksJ ||ddks'J ||ddk s0J ||ddk r9J ||ddksBJ d	S )
z
        Make sure non supported operations on Timedelta returns NonImplemented
        and yields to other operand (GH#20829).
        c                   @   s0   e Zd ZddddZdd Zdd Zd	d
 ZdS )zGTestTimedeltaComparison.test_compare_custom_object.<locals>.CustomClassNreturnc                 S   s
   || _ d S N
cmp_result)r   r(  r   r   r   __init__S  s   
zPTestTimedeltaComparison.test_compare_custom_object.<locals>.CustomClass.__init__c                 S   s   | j d u rtS | j S r&  )r(  r   r   r   r   r   generic_resultV  s   
zVTestTimedeltaComparison.test_compare_custom_object.<locals>.CustomClass.generic_resultc                 S      |   S r&  r*  r   rg   r   r   r   __eq__\     zNTestTimedeltaComparison.test_compare_custom_object.<locals>.CustomClass.__eq__c                 S   r+  r&  r,  r-  r   r   r   __gt___  r/  zNTestTimedeltaComparison.test_compare_custom_object.<locals>.CustomClass.__gt__r&  )r%  N)r   r   r   r)  r*  r.  r0  r   r   r   r   CustomClassR  s
    r1  1sstringr    Fr'  TN)r   )r   r1  tr   r   r   test_compare_custom_objectL  s   z2TestTimedeltaComparison.test_compare_custom_objectvalr3  r    c                 C   s   t d}d}tjt|d ||k W d    n1 sw   Y  tjt|d ||k W d    n1 s7w   Y  tjt|d ||k W d    n1 sRw   Y  tjt|d ||k  W d    d S 1 snw   Y  d S )Nr2  z>not supported between instances of 'Timedelta' and '(int|str)'r2   )r   r6   r7   rf   )r   r6  r4  r9   r   r   r   test_compare_unknown_typen  s   



"z1TestTimedeltaComparison.test_compare_unknown_typeN)r   r   r   r6   r   
skip_ubsanr  r  r  r  r!  r$  r5  r   r7  r   r   r   r   r    s    
("r  c                  C   sz   G dd d} |  }t d}||tu sJ ||tu s J ||tu s)J ||tu s2J ||tu s;J d S )Nc                   @   s   e Zd ZdS )z&test_ops_notimplemented.<locals>.OtherN)r   r   r   r   r   r   r   Other~  s    r9  ri   )r   __add__r   __sub____truediv____mul____floordiv__)r9  rg   r0   r   r   r   test_ops_notimplemented}  s   r?  c               	   C   s   t d} | dfd| ffD ]O\}}dg d}tjt|d ||  W d    n1 s-w   Y  d}tjt|d ||k W d    n1 sJw   Y  ||krUJ ||ks[J qd S )Nri   arj   )ra   z3can only concatenate str \(not "Timedelta"\) to strzmust be str, not Timedeltar2   z"not supported between instances ofr   )r0   leftrightr9   r   r   r   test_ops_error_str  s   

rC  )r   r   r   r*   numpyr-   r6   pandas.errorsr   pandasr   r   r   r   r   pandas._testing_testingrv   pandas.corer	   r
   r   r  r?  rC  r   r   r   r   <module>   s,      ?    v 5