a
    Pf                     @   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   sD   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   f/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/scalar/timedelta/test_arithmetic.pytest_td_add_sub_ten_seconds"   s    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   sD   t d}t d}t d}|| }||ks,J || }||ks@J d S )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   s    zDTestTimedeltaAdditionSubtraction.test_td_add_sub_one_day_ten_secondsopc                 C   s   t ddd}||tddd}|tju r6t|ts6J |tdddksJJ ||td}t|tsfJ |tdksvJ ||td	}t|tsJ |td
ksJ ||t}|tu sJ 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 sF0    Y  d}tjt|d |tdd	  W d    n1 s0    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   r2      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   	   r2      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!      r2   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   rA   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   r.   expectedr   r   r   r   test_td_sub_td   s
    z/TestTimedeltaAdditionSubtraction.test_td_sub_tdc                 C   sh   t ddd}t ddd}||  }t|t s2J ||ks>J | | }t|t sXJ ||ksdJ d S rJ   )r   to_pytimedeltar*   rK   r   r   r   test_td_sub_pytimedelta   s    z8TestTimedeltaAdditionSubtraction.test_td_sub_pytimedeltac                 C   sh   t ddd}t ddd}||  }t|t s2J ||ks>J | | }t|t sXJ ||ksdJ d S rJ   )r   to_timedelta64r*   rK   r   r   r   test_td_sub_timedelta64   s    z8TestTimedeltaAdditionSubtraction.test_td_sub_timedelta64c                 C   s$   t ddd}|t }|tu s J d S Nr   r$   r   r   r   r   r.   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+   rC   r   )r   r.   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      hrG   rT   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 ]}tjt|d ||  W d    n1 sX0    Y  tjt|d ||  W d    n1 s0    Y  tjt|d ||  W d    n1 s0    Y  tjt|d ||  W d    q(1 s0    Y  q(d S )Nr   r$   r   unsupported operand type          @r0   )r   r+   int64float64r4   r5   	TypeError)r   r.   r7   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 sL0    Y  dddg}tjt|d ||  W d    n1 s0    Y  d}tjt|d ||  W d    n1 s0    Y  d	}tjt|d ||  W d    n1 s0    Y  d S )
N1 dayr   z;unsupported operand type\(s\) for \+: 'Timedelta' and 'int'r0   |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+   arrayr4   r5   rb   joinr   r.   rc   r7   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 rV   )r   r   r+   r,   rT   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s8J d S )Nr   r   r$   r   ir[   )r   rH   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+   rg   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:00rp   r^   r[   Z0D)r   r+   rg   r   rC   rr   rs   )r   nowrt   ru   rv   r   r   r   7test_td_sub_mixed_most_timedeltalike_object_dtype_array   s    
zXTestTimedeltaAdditionSubtraction.test_td_sub_mixed_most_timedeltalike_object_dtype_arrayc                 C   sf   t d}t|tdtddg}d}tjt|d td|  W d    n1 sX0    Y  d S )Nrx   rp   r^   r[   zAunsupported operand type\(s\) for \-: 'Timedelta' and 'Timestamp'r0   )r   r+   rg   r   rC   r4   r5   rb   )r   ry   rt   r7   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 )Nrn   ro   z20130102 9:01z20121231 9:02rp   rq   )r   r#   rt   ru   rv   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 )Nrx   rp   Z2D)r   r+   rg   r   rr   rs   )r   r#   ry   rt   ru   rv   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 )Nre   2 Daysr   r   r+   rg   rP   rr   rs   r   r.   rc   rL   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 )Nre   z
2000-01-01zM8[ns]dtypez
2000-01-02z
1999-12-31r   r+   rg   rr   rs   )r   r.   rc   rL   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 sPJ |d| ks`J || }t|t svJ |d| ksJ || }t|t sJ |d| ksJ d S )Nre   r^   r   )r   r+   rg   asm8r*   )r   r.   rc   r   r   r   r   test_td_add_sub_ndarray_0dB  s    z;TestTimedeltaAdditionSubtraction.test_td_add_sub_ndarray_0dN),__name__
__module____qualname____doc__r4   markparametrizer   r   r+   rC   r   ZSecondr   ZDayr"   r(   r)   r	   Zraddr/   r8   r;   r?   rD   rI   rM   rO   rQ   rU   rY   r\   rd   rj   rk   rm   rw   rz   r{   r|   r}   r   r   r   r   r   r   r   r
      sh   




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










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__
    rX   r   r   r#   c                 C   sr   t ddd}dg d}dd| d| dd	g}tjt|d
 ||| W d    n1 sd0    Y  d S )Nr   r$   r   rf   )znumpy.timedelta64ZNaTTyper   z'unsupported operand type\(s\) for \*: 'z' and ''z1ufunc '?multiply'? cannot use operands with typesr0   r   rh   r4   r5   rb   )r   r#   rX   r.   Ztypsr7   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 rR   rS   )r   r#   r   r.   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sDJ ||tjtu sXJ |d	|jd	|j ksrJ |d
|jd
|j ksJ d}tjt|d" ||tddd W d    n1 s0    Y  tjt|d ||| W d    n1 s0    Y  d S )N   minutesr^   rA   g      ?      r   r   g      r]   r0   r%   r   )	r   r+   r   r   _valuer4   r5   rb   r   )r   r#   r.   r   r7   r   r   r   test_td_mul_scalar  s    


0z6TestTimedeltaMultiplicationDivision.test_td_mul_scalarc                 C   sT   t d}tdg}tt d g}|| }t|| || }t|| d S )Nre   r^   r~   r   r   r   r   r   test_td_mul_numeric_ndarray  s    z?TestTimedeltaMultiplicationDivision.test_td_mul_numeric_ndarrayc                 C   st   t d}td}|jdks J t d}|| }t|t u s@J ||ksLJ || }t|t u sdJ ||kspJ d S )Nre   r^   r   2 days)r   r+   rg   ndimtype)r   r.   rc   rL   rv   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^0    Y  tjt|d ||  W d    n1 s0    Y  d S )Nre   r~   z:ufunc '?multiply'? cannot use operands with types dtype\('zm8\[ns\]'\) and dtype\('zm8\[ns\]'\)r0   )	r   r+   rg   rP   rr   ZENDIANr4   r5   rb   ri   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s6J |tdd dksNJ t|t s`J d S )	Nr   r$   r   r      <   r[   r   )r   r   rH   r+   rC   isnanr   rT   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sLJ |tdd }||jksjJ t d}|tdd }|dksJ |tdd }|dksJ |tdd }||jksJ d S )	Nz1 days 2 hours 3 nsr   r!   l     "R: r    ʚ;r   im )r   r+   rC   r   rT   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s4J |d }t|t sJJ |t ddks\J d S )Nr   r$   r   r^      r2   r:   rT   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 s4J d S rR   rS   )r   r   r.   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 )Nre   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s4J d S )Nre   r   )r   r+   rg   r*   )r   r.   rc   rv   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   rH   r+   rC   rT   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|s8J td| }t|sTJ d}tjt|d td|  W d    n1 s0    Y  d}tjt|d tj	|  W d    n1 s0    Y  d S )Nr   r$   r   r   zGunsupported operand type\(s\) for /: 'numpy.datetime64' and 'Timedelta'r0   <unsupported operand type\(s\) for /: 'float' and 'Timedelta')
r   r   r+   r   rC   r4   r5   rb   r,   r   )r   r.   r   r7   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 s0    Y  tjtjgtjd}d}tj	t
|d ||  W d    n1 s0    Y  d S )	Nr   r$   r   r   r   r   r0   z$cannot use operands with types dtype)r   r+   rg   objectra   rr   rs   r   r4   r5   rb   )r   r.   rt   r   rL   r7   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+   rg   r   )r   r.   rt   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sVJ d S )Nr   r   rF   r   r   r^   )r   rN   rP   r   r.   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 s0J t|td sHJ d S )Nr   r   r   r   )r   r+   r   r   r   rC   r   r.   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s8J d S )Nr   r   r   r   r^   \   )r   r   rH   Z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    n1 sP0    Y  d S )
Nr   r   r   rf   )z.Invalid dtype datetime64\[D\] for __floordiv__z8'dtype' is an invalid keyword argument for this functionz5ufunc '?floor_divide'? cannot use operands with typesr0   
2016-01-01zdatetime64[us]r   )r   rh   r4   r5   rb   r+   r,   r   r.   r7   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s8J |td |ksNJ |td |ksdJ |td |kszJ d S )Nr   r   r   r       r^   r_   )r   r+   ra   int32uint8)r   r.   rL   r   r   r   test_td_floordiv_numeric_scalarw  s    zCTestTimedeltaMultiplicationDivision.test_td_floordiv_numeric_scalarc                 C   s   t ddd}t ddd}|t|  dks2J 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+   rg   rP   r`   rr   rs   rC   r   )r   r.   r   rv   rL   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s6J d S )Nr   r   r   r   r   m)r   pdSeriesr+   r`   r   kind)r   r.   serrv   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sBJ d| | dks\J d S )Nr   r   r   r   r   r^   r   )r   __rfloordiv__rN   rP   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   rC   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   r^   )r   rH   r   r   r   r   r   test_td_rfloordiv_offsets  s    z=TestTimedeltaMultiplicationDivision.test_td_rfloordiv_offsetsc                 C   sh   t ddd}tdd}||tu s*J d}tjt|d ||  W d    n1 sZ0    Y  d S )Nr   r   r   uszHunsupported operand type\(s\) for //: 'numpy.datetime64' and 'Timedelta'r0   )r   r+   r,   r   NotImplementedr4   r5   rb   )r   r.   Zdt64r7   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 s2J |dtu sDJ |tdtu s\J |tdtu stJ |tdtu sJ d}tj	t
|d td|  W d    n1 s0    Y  tj	t
|d td|  W d    n1 s0    Y  tj	t
|d td|  W d    n1 s<0    Y  d S )	Nr   r   g      @r^   r_   r<   z9unsupported operand type\(s\) for //: '.*' and 'Timedeltar0   )r   r   r+   r   r   ra   r   r   r4   r5   rb   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s4J |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+   rg   rP   r`   rr   rs   rC   r   )r   r.   r   rv   rL   rt   r   r   r   %test_td_rfloordiv_timedeltalike_array  s    
zITestTimedeltaMultiplicationDivision.test_td_rfloordiv_timedeltalike_arrayc                 C   sX   t g dd }d}tjt|d  |tddd  W d    n1 sJ0    Y  d S )N)irPi isPitPi vPr   Invalid dtyper0   r   r   r   )r+   rg   r4   r5   rb   r   )r   Zintsr7   r   r   r   test_td_rfloordiv_intarray  s    z>TestTimedeltaMultiplicationDivision.test_td_rfloordiv_intarrayc                 C   sr   t ddd}tjdgtjd}||}|tu s4J d}tjt	|d ||  W d    n1 sd0    Y  d S )Nr   r   r   r   r   r0   )
r   r   r   r+   r`   r   r   r4   r5   rb   )r   r.   r   rv   r7   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s8J |tdd }t|t sTJ |t dksdJ |t }|tu sxJ d S )N%   rF   rA   r   r   r   r   )r   r*   r   r   rT   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   rW   rT   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   r^   r[   r   rB   rT   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s8J d S )Nr   r   r   r^   rG   rT   r   r   r   test_mod_offset  s    
z3TestTimedeltaMultiplicationDivision.test_mod_offsetc                 C   s   t dd}|d }t|t s J |t dks0J |d }t|t sFJ |t dddksZJ |td }t|t stJ |t dddksJ d S )	Nr   r   r^   r   g   mBr   r9   r   )r   r*   intrT   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>0    Y  tjt|d |g   W d    n1 st0    Y  d S )Nr   r   r]   r0   r'   )r   r4   r5   rb   r   r   r   r   r   test_mod_invalid8  s    
*z4TestTimedeltaMultiplicationDivision.test_mod_invalidc                 C   s<   t dd}tdd| }t|t s&J |t ddks8J d S )Nr   r   r   r   r>   rT   r   r   r   test_rmod_pytimedeltaB  s    
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   r^   rB   rT   r   r   r   test_rmod_timedelta64J  s    
z9TestTimedeltaMultiplicationDivision.test_rmod_timedelta64c                 C   s   t dd}d}tjt|d td|  W d    n1 s>0    Y  tjt|d d|  W d    n1 st0    Y  tjt|d d|  W d    n1 s0    Y  d}tjt|d" td	d
g|  W d    n1 s0    Y  d S )Nr   r   zunsupported operandr0   r'            0@Invalid dtype int      )r   r4   r5   rb   r   r+   rg   r   r   r   r   test_rmod_invalidQ  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sVJ |s^J t|tj}|d tu szJ |d tu sJ d S )
Nr^   rA   rE   g  $Br   r   r   r   r   )r   divmodr*   r+   r   r   rT   r   r   r   test_divmod_numericf  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sTJ t|d}|d t ddkstJ t|d t sJ |d t dksJ t|t}t|d sJ |d tu sJ d S )	Nr^   rA   rE   r   r2   r   r   6   )r   r   r   r*   r   r+   r   rT   r   r   r   test_divmodt  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sTJ d S )
Nr^   rA   rE   r@   r   r   r   r   )r   r   r   rH   r*   rT   r   r   r   test_divmod_offset  s
    z6TestTimedeltaMultiplicationDivision.test_divmod_offsetc                 C   sP   t ddd}d}tjt|d t|td W d    n1 sB0    Y  d S )Nr^   rA   rE   zAunsupported operand type\(s\) for //: 'Timedelta' and 'Timestamp'r0   r'   )r   r4   r5   rb   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sPJ d S )Nr^   rA   rE   r   r2   r   r   )r   r   r   r*   rl   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s8J |d tddksNJ d S )Nr   r@   r   r   r   r   r   )r   r   rH   r   r*   rl   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@0    Y  tjt|d td| W d    n1 sx0    Y  tjt|d td| W d    n1 s0    Y  d}tjt|d$ ttd	d
g| W d    n1 s0    Y  d S )Nr   r   r]   r0   r'   r   r   r   r   r   )r   r4   r5   rb   r   r   r+   rg   r   r   r   r   test_rdivmod_invalid  s    
,((z8TestTimedeltaMultiplicationDivision.test_rdivmod_invalidrt   rn   ro   rx   rp   c                 C   sD   d}t jt|d ||td W d    n1 s60    Y  d S )Nz7unsupported operand type|cannot use operands with typesr0   rp   )r4   r5   rb   r   )r   r#   rt   r7   r   r   r   (test_td_op_timedelta_timedeltalike_array  s    zLTestTimedeltaMultiplicationDivision.test_td_op_timedelta_timedeltalike_arrayN)Gr   r   r   r   r4   r   r   r   r+   rC   r(   mulr	   Zrmulr   r   ra   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   truedivZrdivZrsubrg   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 ]}t j|j}t j|j}|tjk s2J |tjks@J |tjkrNJ |tjkr\J |tjksjJ |tjkrxJ |tjksJ |tjksJ |tjk rJ |tjkrJ |tjksJ |tjkrJ q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r2J |tjksBJ |tjkrRJ |tjk sbJ |tjksrJ |tjkrJ |tjkrJ |tjksJ |tjkrJ qd S )N)r   r   )msr   )r   maxr3   minr   )r   r   ZtdmaxZ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sPJ ||ks\J ||krhJ ||k rtJ ||krJ ||ksJ ||ksJ |tddd }||ksJ ||krJ ||k sJ ||ksJ ||krJ ||krJ d S )Niɚ;iQ r   r!   r   r   r   )r   r+   rC   r    r   r   r3   )r   ZpytdZtd64r.   Z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r8J ||ksDJ ||ksPJ ||k r\J ||krhJ |d| krxJ |d| ksJ |d| ksJ |d| k sJ |d| krJ |d| krJ d S )Nr   r^   )Z_as_pd_timedeltar*   r   )r   Ztick_classesclsoffr.   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 sLJ tj||g||ggtd}||k}tjddgddggtd}|j|jksJ ||k sJ d S )Nr   z3 hoursr   FT)r   r+   rg   r   boolallshape)r   r.   rc   rt   rv   rL   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   Zperiodsrt   r   rL   r   r   r   test_compare_timedelta_ndarray0  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+   ZarangeZastyper   rg   r  rr   rs   )r   rt   r.   rL   r   r   r   r   test_compare_td64_ndarray8  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sNJ ||ddk s`J ||ddk rrJ ||ddksJ d	S )
z
        Make sure non supported operations on Timedelta returns NonImplemented
        and yields to other operand (GH#20829).
        c                   @   s4   e Zd Zd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__R  s    zPTestTimedeltaComparison.test_compare_custom_object.<locals>.CustomClass.__init__c                 S   s   | j d u rtS | j S d S r	  )r  r   r   r   r   r   generic_resultU  s    
zVTestTimedeltaComparison.test_compare_custom_object.<locals>.CustomClass.generic_resultc                 S   s   |   S r	  r  r   rc   r   r   r   __eq__[  s    zNTestTimedeltaComparison.test_compare_custom_object.<locals>.CustomClass.__eq__c                 S   s   |   S r	  r  r  r   r   r   __gt__^  s    zNTestTimedeltaComparison.test_compare_custom_object.<locals>.CustomClass.__gt__)N)r   r   r   r  r  r  r  r   r   r   r   CustomClassQ  s   r  1sstringr   Fr
  TN)r   )r   r  tr   r   r   test_compare_custom_objectK  s    z2TestTimedeltaComparison.test_compare_custom_objectvalr  r   c                 C   s   t d}d}tjt|d ||k W d    n1 s80    Y  tjt|d ||k W d    n1 sn0    Y  tjt|d ||k W d    n1 s0    Y  tjt|d ||k  W d    n1 s0    Y  d S )Nr  z>not supported between instances of 'Timedelta' and '(int|str)'r0   )r   r4   r5   rb   )r   r  r  r7   r   r   r   test_compare_unknown_typem  s    &&&z1TestTimedeltaComparison.test_compare_unknown_typeN)r   r   r   r4   r   Z
skip_ubsanr   r   r  r  r  r  r  r   r  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 sRJ ||tu sdJ ||tu svJ 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   r  re   )r   __add__r   __sub____truediv____mul____floordiv__)r  rc   r.   r   r   r   test_ops_notimplemented|  s    r  c               	   C   s   t d} | dfd| ffD ]\}}dg d}tjt|d ||  W d    n1 sZ0    Y  d}tjt|d ||k W d    n1 s0    Y  ||krJ ||ksJ qd S )Nre   arf   )r]   z3can only concatenate str \(not "Timedelta"\) to strzmust be str, not Timedeltar0   z"not supported between instances ofr   )r.   leftrightr7   r   r   r   test_ops_error_str  s    &&r#  )r   r   r   r(   numpyr+   r4   Zpandas.errorsr   Zpandasr   r   r   r   r   Zpandas._testingZ_testingrr   Zpandas.corer	   r
   r   r   r  r#  r   r   r   r   <module>   s*     ?    u 5