U
    `»{j?‹  ã                   @   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,t‚|| }||ks@t‚d S )Nz20130101 09:01:12.123456z20130101 09:01:22.123456ú20130101 09:01:02.123456©r   ÚAssertionError)Úselfr   ÚbaseÚexpected_addÚexpected_subÚresult© r   úl/var/www/html/bwave/python/venv/lib/python3.8/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,t‚|| }||ks@t‚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kr6t|tƒs6t‚|tdddƒksJt‚||tdƒƒ}t|tƒsft‚|tdƒksvt‚||t d	¡ƒ}t|tƒs”t‚|td
ƒks¤t‚||t	ƒ}|t	ksºt‚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   r   ÚnpÚ
datetime64r   ©r   r"   Útdr   r   r   r   Útest_td_add_datetimelike_scalarN   s    

z@TestTimedeltaAdditionSubtraction.test_td_add_datetimelike_scalarc              	   C   sf   d}t jt|d�� tdƒtddd�  W 5 Q R X d}t jt|d�� tdƒtdd�  W 5 Q R X d S )	Nz2Cannot cast 259987 from D to 'ns' without overflow©Úmatchz
1700-01-01i“÷ r    r   z<Cannot cast 259987 days, 0:00:00 to unit=ns without overflow©r   )ÚpytestÚraisesr   r   r   r   )r   Ú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*t‚|t dd�ks<t‚d S )Nr   r#   r   r1   é   ©r   r)   r   r,   r   r   r   Útest_td_add_tdn   s    z/TestTimedeltaAdditionSubtraction.test_td_add_tdc                 C   s@   t ddd�}||tdd�ƒ}t|t ƒs*t‚|t dd�ks<t‚d S )Nr   r#   r   é	   r1   é   ©r   r   r)   r   r,   r   r   r   Útest_td_add_pytimedeltav   s    z8TestTimedeltaAdditionSubtraction.test_td_add_pytimedeltac                 C   sB   t ddd�}||t dd¡ƒ}t|t ƒs,t‚|t dd�ks>t‚d S )Nr   r#   r   éüÿÿÿr    é   r1   ©r   r*   Útimedelta64r)   r   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*t‚|t ddd�ks>t‚d S )Nr   r#   r   r>   ©r   Úhours©r   r   ÚHourr)   r   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.t‚||ks:t‚d S ©Nr   r#   r   r   r   r7   ©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 ƒs2t‚||ks>t‚| ¡ | }t|t ƒsXt‚||ksdt‚d S rG   )r   Úto_pytimedeltar)   r   rH   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 ƒs2t‚||ks>t‚| ¡ | }t|t ƒsXt‚||ksdt‚d S rG   )r   Úto_timedelta64r)   r   rH   r   r   r   Útest_td_sub_timedelta64Ÿ   s    z8TestTimedeltaAdditionSubtraction.test_td_sub_timedelta64c                 C   s$   t ddd�}|t }|tks t‚d S ©Nr   r#   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ks*t‚|| }|tks>t‚d S ©Nr   r#   r   r   ©r   r*   r@   r   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(t‚|t ddd�ks<t‚d S )Nr   r#   r   r   éï   ÚhrD   rQ   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 5 Q R X tjt|d�� ||  W 5 Q R X tjt|d�� ||  W 5 Q R X tjt|d�� ||  W 5 Q R X q(d S )Nr   r#   r   úunsupported operand typeé   ç       @r/   )r   r*   Úint64Úfloat64r2   r3   Ú	TypeError)r   r-   r4   Ú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 5 Q R X d ddg¡}tjt|d�� ||  W 5 Q R X d}tjt|d�� ||  W 5 Q R X d	}tjt|d�� ||  W 5 Q R X d S )
Nú1 dayr   z;unsupported operand type\(s\) for \+: 'Timedelta' and 'int'r/   ú|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*   Úarrayr2   r3   r_   Újoin©r   r-   r`   r4   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ks t‚t d¡| }|tks:t‚d S rS   )r   r   r   r*   r+   rQ   r   r   r   Útest_td_rsub_natê   s
    z1TestTimedeltaAdditionSubtraction.test_td_rsub_natc                 C   s<   t  d¡tddd� }t|tƒs$t‚|tddd�ks8t‚d S )Nr   r   r#   r   iÿÿÿrX   )r   rE   r   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*   rd   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:00rm   r[   rX   Z0D)r   r*   rd   r   r@   ro   rp   )r   Únowrq   rr   rs   r   r   r   Ú7test_td_sub_mixed_most_timedeltalike_object_dtype_arrayþ   s    
ýÿzXTestTimedeltaAdditionSubtraction.test_td_sub_mixed_most_timedeltalike_object_dtype_arrayc              	   C   sR   t dƒ}t |tdƒt dd¡g¡}d}tjt|d�� tdƒ|  W 5 Q R X d S )Nru   rm   r[   rX   zAunsupported operand type\(s\) for \-: 'Timedelta' and 'Timestamp'r/   )r   r*   rd   r   r@   r2   r3   r_   )r   rv   rq   r4   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 )Nrk   rl   z20130102 9:01z20121231 9:02rm   rn   )r   r"   rq   rr   rs   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 )Nru   rm   Z2D)r   r*   rd   r   ro   rp   )r   r"   rv   rq   rr   rs   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 )Nrb   ú2 Daysr   ©r   r*   rd   rM   ro   rp   ©r   r-   r`   rI   r   r   r   r   Útest_td_add_sub_td64_ndarray%  s    z=TestTimedeltaAdditionSubtraction.test_td_add_sub_td64_ndarrayc                 C   sx   t dƒ}t dg¡j}t dg¡j}t || |¡ t || |¡ t dg¡j}t | | |¡ t || |¡ d S )Nrb   z
2000-01-01z
2000-01-02z
1999-12-31)r   ÚpdÚto_datetimeÚvaluesro   rp   )r   r-   r`   rI   r   r   r   Útest_td_add_sub_dt64_ndarray5  s    z=TestTimedeltaAdditionSubtraction.test_td_add_sub_dt64_ndarrayc                 C   s°   t dƒ}t |j¡}|| }t|t ƒs*t‚|d| ks:t‚|| }t|t ƒsPt‚|d| ks`t‚|| }t|t ƒsvt‚|d| ks†t‚|| }t|t ƒsœt‚|d| ks¬t‚d S )Nrb   r[   r   )r   r*   rd   Úasm8r)   r   )r   r-   r`   r   r   r   r   Útest_td_add_sub_ndarray_0dA  s    z;TestTimedeltaAdditionSubtraction.test_td_add_sub_ndarray_0dN),Ú__name__Ú
__module__Ú__qualname__Ú__doc__r2   ÚmarkÚparametrizer   r   r*   r@   r   ZSecondr   ZDayr!   r'   r(   r	   Zraddr.   r5   r8   r<   rA   rF   rJ   rL   rN   rR   rV   rY   ra   rg   rh   rj   rt   rw   rx   ry   rz   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__
    rU   r   r   r"   c              	   C   s`   t ddd�}d dddg¡}d d|› d	|› d
�dg¡}tjt|d�� |||ƒ W 5 Q R X d S )Nr   r#   r   rc   znumpy.timedelta64ZNaTTyper   z'unsupported operand type\(s\) for \*: 'z' and 'ú'z1ufunc '?multiply'? cannot use operands with typesr/   )r   re   r2   r3   r_   )r   r"   rU   r-   Ztypsr4   r   r   r   Útest_td_mul_nate  s    þÿz3TestTimedeltaMultiplicationDivision.test_td_mul_natÚnanÚNaNc                 C   s&   t ddd�}|||ƒ}|tks"t‚d S rO   rP   )r   r"   rŽ   r-   r   r   r   r   Útest_td_mul_nanv  s    
z3TestTimedeltaMultiplicationDivision.test_td_mul_nanc              	   C   sä   t dd�}||dƒ}|t dd�ks&t‚||dƒ}|t ddd�ksDt‚||tjƒtksXt‚|d	|ƒjd	|j ksrt‚|d
|ƒjd
|j ksŒt‚d}tjt|d�� ||t	dddƒƒ W 5 Q R X tjt|d�� |||ƒ W 5 Q R X d S )Né   ©Úminutesr[   r>   g      ø?é   é   ©r“   r   éÿÿÿÿg      ð¿rZ   r/   r$   r   )
r   r   r*   rŽ   r   Úvaluer2   r3   r_   r   )r   r"   r-   r   r4   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 )Nrb   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 t‚t dƒ}|| }t|ƒt ks@t‚||ksLt‚|| }t|ƒt ksdt‚||kspt‚d S )Nrb   r[   r   ú2 days)r   r*   rd   Úndimr   Útype)r   r-   r`   rI   rs   r   r   r   Útest_td_mul_numeric_ndarray_0d¢  s    
zBTestTimedeltaMultiplicationDivision.test_td_mul_numeric_ndarray_0dc              	   C   sh   t dƒ}t t dƒ ¡ g¡}d}tjt|d�� ||  W 5 Q R X tjt|d�� ||  W 5 Q R X d S )Nrb   r{   z_ufunc '?multiply'? cannot use operands with types dtype\('<m8\[ns\]'\) and dtype\('<m8\[ns\]'\)r/   )r   r*   rd   rM   r2   r3   r_   rf   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&t‚|| dks6t‚|t dd¡ dksNt‚t |t ¡s`t‚d S )	Nr   r#   r   r   éð   é<   rX   r”   )r   r   rE   r   r*   r@   Úisnanr   rQ   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*t‚|t dd¡ }||jd ksLt‚|t dd¡ }||jksjt‚t dƒ}|t dd¡ }|dksŽt‚|t dd¡ }|dksªt‚|t dd¡ }||jksÈt‚d S )	Nz1 days 2 hours 3 nsr   r    l     ž"R: r   é Êš;r   i m )r   r*   r@   r˜   r   rQ   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"t‚|t dd�ks4t‚|d }t|t ƒsJt‚|t dd�ks\t‚d S )Nr   r#   r   r[   é   r1   r7   rQ   r   r   r   Útest_td_div_numeric_scalarà  s    z>TestTimedeltaMultiplicationDivision.test_td_div_numeric_scalarc                 C   s8   t ddd�}|| }|tks t‚|| }|tks4t‚d S rO   rP   )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 )Nrb   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(t‚||ks4t‚d S )Nrb   r   )r   r*   rd   r)   r   )r   r-   r`   rs   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&t‚t dd¡| dks>t‚d S )	Nr   r#   r   r   gq?r¡   rX   g      Ð?)r   r   rE   r   r*   r@   rQ   r   r   r   Ú!test_td_rdiv_timedeltalike_scalar  s    zETestTimedeltaMultiplicationDivision.test_td_rdiv_timedeltalike_scalarc              	   C   s¬   t ddd�}t| }t |¡s"t‚d | }t |¡s8t‚t d¡| }t |¡sTt‚d}tjt|d�� t 	d¡|  W 5 Q R X d}tjt|d�� tj
|  W 5 Q R X d S )Nr   r#   r   r   zGunsupported operand type\(s\) for /: 'numpy.datetime64' and 'Timedelta'r/   ú<unsupported operand type\(s\) for /: 'float' and 'Timedelta')r   r   r*   r¢   r   r@   r2   r3   r_   r+   rŽ   )r   r-   r   r4   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 5 Q R X tjtjgtjd�}d}tj	t
|d�� ||  W 5 Q R X d S )	Nr   r#   r   ©Údtyper   r¬   r/   z$cannot use operands with types dtype)r   r*   rd   Úobjectr^   ro   rp   rŽ   r2   r3   r_   )r   r-   rq   r   rI   r4   r   r   r   Útest_td_rdiv_ndarray1  s"    z8TestTimedeltaMultiplicationDivision.test_td_rdiv_ndarrayc                 C   s,   t ddd�}t |j¡}|| dks(t‚d S )Nr   r#   r   r   )r   r*   rd   rƒ   r   )r   r-   rq   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(t‚| | ¡  dks>t‚d| | ¡  dksVt‚d S )Nr‘   r”   ©rC   r“   r   éþÿÿÿr[   )r   r   rK   rM   ©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kst‚t |t ¡s0t‚t |t d¡ ¡sHt‚d S )Nr‘   r”   r³   r   )r   r*   rŽ   r   r   r¢   r@   ©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"t‚|t d¡ dks8t‚d S )Nr‘   r”   r³   r   r[   é\   )r   r   rE   r   ZMinuter¸   r   r   r   Útest_td_floordiv_offsetsc  s    z<TestTimedeltaMultiplicationDivision.test_td_floordiv_offsetsc              	   C   sL   t ddd�}d dddg¡}tjt|d�� |tjd	d
d�  W 5 Q R X d S )Nr‘   r”   r³   rc   z.Invalid dtype datetime64\[D\] for __floordiv__z8'dtype' is an invalid keyword argument for this functionz5ufunc '?floor_divide'? cannot use operands with typesr/   ú
2016-01-01zdatetime64[us]r®   )r   re   r2   r3   r_   r*   r+   ©r   r-   r4   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(t‚|d |ks8t‚|t d¡ |ksNt‚|t d¡ |ksdt‚|t d¡ |kszt‚d S )Nr‘   r”   r³   r   é    r[   r\   )r   r   r*   r^   Úint32Úuint8)r   r-   rI   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s2t‚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*   rd   rM   r   r]   ro   rp   r@   rŽ   )r   r-   r¶   rs   rI   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s6t‚d S )Nr‘   r”   r³   r   r®   Úm)r   r   ÚSeriesr*   r]   r¯   Úkindr   )r   r-   Úserrs   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*t‚|  | ¡ ¡dksBt‚d|  | ¡ ¡dks\t‚d S )Nr‘   r³   r”   r   r´   r[   r   )r   Ú__rfloordiv__r   rK   rM   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 t‚t | t d¡¡¡s:t‚d S )Nr‘   r³   r   )r   r*   r¢   rÉ   r   r   r@   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t‚d S )Nr   é   r’   r[   )r   rE   r   r   ©r   r   r   r   Útest_td_rfloordiv_offsets²  s    z=TestTimedeltaMultiplicationDivision.test_td_rfloordiv_offsetsc              	   C   sT   t ddd�}t dd¡}| |¡tks*t‚d}tjt|d�� ||  W 5 Q R X d S )Nr‘   r³   r¼   ÚuszHunsupported operand type\(s\) for //: 'numpy.datetime64' and 'Timedelta'r/   )	r   r*   r+   rÉ   ÚNotImplementedr   r2   r3   r_   )r   r-   Zdt64r4   r   r   r   Ú test_td_rfloordiv_invalid_scalar¶  s    ÿzDTestTimedeltaMultiplicationDivision.test_td_rfloordiv_invalid_scalarc              	   C   s  t ddd�}| tj¡tks t‚| d¡tks2t‚| d¡tksDt‚| t d¡¡tks\t‚| t d¡¡tkstt‚| t d¡¡tksŒt‚d}t	j
t|d�� t d¡|  W 5 Q R X t	j
t|d�� t d¡|  W 5 Q R X t	j
t|d�� t d¡|  W 5 Q R X d S )	Nr‘   r³   g      @r[   r\   r9   z9unsupported operand type\(s\) for //: '.*' and 'Timedeltar/   )r   rÉ   r*   rŽ   rÐ   r   r^   rÁ   rÀ   r2   r3   r_   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s4t‚| 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*   rd   rM   r   r]   ro   rp   r@   rŽ   )r   r-   r¶   rs   rI   rq   r   r   r   Ú%test_td_rfloordiv_timedeltalike_arrayØ  s    
zITestTimedeltaMultiplicationDivision.test_td_rfloordiv_timedeltalike_arrayc              	   C   sH   t  ddddg¡d }d}tjt|d�� |tdd	d
�  W 5 Q R X d S )Ni€rPi isPi€ºtPi vPr¤   úInvalid dtyper/   r   r   r   )r*   rd   r2   r3   r_   r   )r   Úintsr4   r   r   r   Útest_td_rfloordiv_intarrayé  s    z>TestTimedeltaMultiplicationDivision.test_td_rfloordiv_intarrayc              	   C   s^   t ddd�}tjdgtjd�}| |¡}|tks4t‚d}tj	t
|d�� ||  W 5 Q R X d S )Nr‘   r³   r   r®   rÔ   r/   )r   r   rÅ   r*   r]   rÉ   rÐ   r   r2   r3   r_   )r   r-   rÇ   rs   r4   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&t‚|t dd�ks8t‚|tdd� }t|t ƒsTt‚|t dƒksdt‚|t }|tksxt‚d S )Né%   ©rC   r>   r   r¡   r’   r   )r   r)   r   r   r   rQ   r   r   r   Útest_mod_timedeltalike   s    
z:TestTimedeltaMultiplicationDivision.test_mod_timedeltalikec                 C   s*   t dd�}|t dd¡ }|tks&t‚d S )NrØ   rÙ   r   r   rT   rQ   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(t‚|t dd�ks:t‚d S )NrØ   rÙ   r[   rX   r   r?   rQ   r   r   r   Útest_mod_timedelta64  s    
z8TestTimedeltaMultiplicationDivision.test_mod_timedelta64c                 C   s<   t dd�}|t d¡ }t|t ƒs&t‚|t dd�ks8t‚d S )NrØ   rÙ   r¦   r[   rD   rQ   r   r   r   Útest_mod_offset  s    
z3TestTimedeltaMultiplicationDivision.test_mod_offsetc                 C   sŒ   t dd�}|d }t|t ƒs t‚|t dƒks0t‚|d }t|t ƒsFt‚|t ddd�ksZt‚|tdƒ }t|t ƒstt‚|t ddd�ksˆt‚d S )	NrØ   rÙ   r[   r   g   ¢”mBr‘   r6   r–   )r   r)   r   ÚintrQ   r   r   r   Útest_mod_numeric'  s    
z4TestTimedeltaMultiplicationDivision.test_mod_numericc              	   C   sZ   t dd�}d}tjt|d�� |tdƒ  W 5 Q R X tjt|d�� |g   W 5 Q R X d S )NrØ   rÙ   rZ   r/   r&   )r   r2   r3   r_   r   r½   r   r   r   Útest_mod_invalid8  s    
z4TestTimedeltaMultiplicationDivision.test_mod_invalidc                 C   s<   t dd�}tdd�| }t|t ƒs&t‚|t dd�ks8t‚d S )Nr‘   r’   r”   r   r;   rQ   r   r   r   Útest_rmod_pytimedeltaB  s    
z9TestTimedeltaMultiplicationDivision.test_rmod_pytimedeltac                 C   s>   t dd�}t dd¡| }t|t ƒs(t‚|t dd�ks:t‚d S )Nr‘   r’   r¦   rÄ   r[   r?   rQ   r   r   r   Útest_rmod_timedelta64J  s    
z9TestTimedeltaMultiplicationDivision.test_rmod_timedelta64c              	   C   s¬   t dd�}d}tjt|d�� tdƒ|  W 5 Q R X tjt|d�� d|  W 5 Q R X tjt|d�� d|  W 5 Q R X d}tjt|d�� t d	d
g¡|  W 5 Q R X d S )Nr‘   r’   zunsupported operandr/   r&   é   ç      0@úInvalid dtype inté   é   )r   r2   r3   r_   r   r*   rd   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.t‚t|d t ƒs@t‚|d t dd	�ksVt‚|s^t‚t|tjƒ}|d tkszt‚|d tksŠt‚d S )
Nr[   r>   rB   g  $Ç±åBr   r   r   r   rÙ   )r   Údivmodr   r)   r*   rŽ   r   rQ   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,t‚t|d t ƒs>t‚|d t dd�ksTt‚t|dƒ}|d t dd�kstt‚t|d t ƒs†t‚|d t dƒksšt‚t|tƒ}t |d ¡s¶t‚|d tksÆt‚d S )	Nr[   r>   rB   r   r1   r   rÙ   é6   )r   ré   r   r   r)   r   r*   r¢   rQ   r   r   r   Útest_divmodt  s    

z/TestTimedeltaMultiplicationDivision.test_divmodc                 C   sX   t ddd�}t|t d¡ƒ}|d dks,t‚t|d t ƒs>t‚|d t dd	�ksTt‚d S )
Nr[   r>   rB   r=   r   éòÿÿÿr   r´   rÙ   )r   ré   r   rE   r   r)   rQ   r   r   r   Útest_divmod_offset†  s
    z6TestTimedeltaMultiplicationDivision.test_divmod_offsetc              	   C   s<   t ddd�}d}tjt|d�� t|tdƒƒ W 5 Q R X d S )Nr[   r>   rB   zAunsupported operand type\(s\) for //: 'Timedelta' and 'Timestamp'r/   r&   )r   r2   r3   r_   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(t‚t|d tƒs:t‚|d tdd�ksPt‚d S )Nr[   r>   rB   r   r1   r   rÙ   )ré   r   r   r   r)   ri   r   r   r   Útest_rdivmod_pytimedelta—  s    z<TestTimedeltaMultiplicationDivision.test_rdivmod_pytimedeltac                 C   sR   t t d¡tdd�ƒ}|d dks&t‚t|d tƒs8t‚|d tdd�ksNt‚d S )Nrë   r=   rÙ   r   rí   r   r´   )ré   r   rE   r   r   r)   ri   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 5 Q R X tjt|d�� td|ƒ W 5 Q R X tjt|d�� td|ƒ W 5 Q R X d}tjt|d�� tt d	d
g¡|ƒ W 5 Q R X d S )Nr‘   r’   rZ   r/   r&   rã   rä   rå   ræ   rç   )r   r2   r3   r_   ré   r   r*   rd   r½   r   r   r   Útest_rdivmod_invalid¤  s    
z8TestTimedeltaMultiplicationDivision.test_rdivmod_invalidrq   rk   rl   ru   rm   c              	   C   s0   d}t jt|d�� ||tdƒƒ W 5 Q R X d S )Nz7unsupported operand type|cannot use operands with typesr/   rm   )r2   r3   r_   r   )r   r"   rq   r4   r   r   r   Ú(test_td_op_timedelta_timedeltalike_array¸  s    zLTestTimedeltaMultiplicationDivision.test_td_op_timedelta_timedeltalike_arrayN)Gr…   r†   r‡   rˆ   r2   r‰   rŠ   r   r*   r@   r'   Úmulr	   Zrmulr�   rŽ   r^   Ú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rsubrd   r   r   ró   r   r   r   r   r‹   V  s”    ÿ
ýþ
	
	

	 ÿþþr‹   c                   @   sN   e Z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ƒ}|j }t|tƒs t‚||ks,t‚||kr8t‚||ksDt‚||ksPt‚||k r\t‚||krht‚|d| krxt‚|d| ksˆt‚|d| ks˜t‚|d| k s¨t‚|d| kr¸t‚|d| krÈt‚d S )Nr”   r[   )Údeltar)   r   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 ¡ sLt‚tj||g||ggtd�}||k}tjddgddggtd�}|j|jks˜t‚||k ¡ s¨t‚d S )Nr›   z3 hoursr®   FT)r   r*   rd   r°   ÚboolÚallr   Úshape)r   r-   r`   rq   rs   rI   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   F)r   r*   rd   ro   rp   )r   Zperiodsrq   r   rI   r   r   r   Útest_compare_timedelta_ndarrayï  s
    
z6TestTimedeltaComparison.test_compare_timedelta_ndarrayc                 C   sŒ   t  d¡ d¡}t|d ƒ}t jdddddgtd�}||k}t ||¡ ||k}t ||¡ ||k}t || ¡ ||k}t || ¡ d S )Nr¦   ztimedelta64[ns]r   FTr®   )r*   ZarangeZastyper   rd   rü   ro   rp   )r   rq   r-   rI   r   r   r   r   Útest_compare_td64_ndarray÷  s    z1TestTimedeltaComparison.test_compare_td64_ndarrayc                 C   sˆ   G dd„ dƒ}t dƒ}|dkr"t‚|dkr.t‚||ƒ kr<t‚||dd�krNt‚||dd�k s`t‚||dd�k rrt‚||dd�ks„t‚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__  s    zPTestTimedeltaComparison.test_compare_custom_object.<locals>.CustomClass.__init__c                 S   s   | j d krtS | j S d S r  )r  rÐ   rÍ   r   r   r   Úgeneric_result  s    
zVTestTimedeltaComparison.test_compare_custom_object.<locals>.CustomClass.generic_resultc                 S   s   |   ¡ S r  ©r  ©r   r`   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   ÚCustomClass  s   r  Ú1sÚstringr   Fr  TN)r   r   )r   r  Útr   r   r   Útest_compare_custom_object
  s    z2TestTimedeltaComparison.test_compare_custom_objectÚvalr  r   c              	   C   s˜   t dƒ}d}tjt|d�� ||k W 5 Q R X tjt|d�� ||k W 5 Q R X tjt|d�� ||k W 5 Q R X tjt|d�� ||k  W 5 Q R X d S )Nr  z>not supported between instances of 'Timedelta' and '(int|str)'r/   )r   r2   r3   r_   )r   r  r  r4   r   r   r   Útest_compare_unknown_type,  s    z1TestTimedeltaComparison.test_compare_unknown_typeN)r…   r†   r‡   rû   rÿ   r   r  r  r2   r‰   rŠ   r  r   r   r   r   r÷   È  s   "r÷   c                  C   sz   G dd„ dƒ} | ƒ }t dƒ}| |¡tks.t‚| |¡tks@t‚| |¡tksRt‚| |¡tksdt‚| |¡tksvt‚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  rb   )r   Ú__add__rÐ   r   Ú__sub__Ú__truediv__Ú__mul__Ú__floordiv__)r  r`   r-   r   r   r   Útest_ops_notimplemented;  s    r  c               
   C   s–   t dƒ} | dfd| ffD ]x\}}d dddg¡}tjt|d�� ||  W 5 Q R X d}tjt|d�� ||k W 5 Q R X ||kr„t‚||kst‚qd S )	Nrb   Úarc   rZ   z3can only concatenate str \(not "Timedelta"\) to strzmust be str, not Timedeltar/   z"not supported between instances of)r   re   r2   r3   r_   r   )r-   ÚleftÚrightr4   r   r   r   Útest_ops_error_strI  s    ýÿr  )rˆ   r   r   r'   Únumpyr*   r2   Zpandas.errorsr   Zpandasr   r   r   r   r   Zpandas._testingZ_testingro   Zpandas.corer	   r
   r‹   r÷   r  r  r   r   r   r   Ú<module>   s(     >    vs