U
    ¾mœd€”  ã                   @   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   úf/home/sam/Atlas/atlas_env/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   sl   t dƒ d¡}d}tjt|d�� |tddd�  W 5 Q R X d}tjt|d�� |tdd	�  W 5 Q R X 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*t‚|t dd�ks<t‚d S )Nr   r%   r   r3   é   ©r   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*t‚|t dd�ks<t‚d S )Nr   r%   r   é	   r3   é   ©r   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,t‚|t dd�ks>t‚d S )Nr   r%   r   éüÿÿÿr"   é   r3   ©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   rB   ©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   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 ƒs2t‚||ks>t‚| ¡ | }t|t ƒsXt‚||ksdt‚d S rK   )r   Úto_pytimedeltar+   r   rL   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 rK   )r   Úto_timedelta64r+   r   rL   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,   rD   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   éï   ÚhrH   rU   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é   ç       @r1   )r   r,   Úint64Úfloat64r5   r6   Ú	TypeError)r   r/   r8   Ú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'r1   ú|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,   Úarrayr5   r6   rc   Újoin©r   r/   rd   r8   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 rW   )r   r   r   r,   r-   rU   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ÿÿÿr\   )r   rI   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,   rh   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:00rq   r_   r\   Z0D)r   r,   rh   r   rD   rs   rt   )r   Únowru   rv   rw   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 )Nry   rq   r_   r\   zAunsupported operand type\(s\) for \-: 'Timedelta' and 'Timestamp'r1   )r   r,   rh   r   rD   r5   r6   rc   )r   rz   ru   r8   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 )Nro   rp   z20130102 9:01z20121231 9:02rq   rr   )r   r$   ru   rv   rw   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 )Nry   rq   Z2D)r   r,   rh   r   rs   rt   )r   r$   rz   ru   rv   rw   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 )Nrf   ú2 Daysr   ©r   r,   rh   rQ   rs   rt   ©r   r/   rd   rM   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 )Nrf   z
2000-01-01z
2000-01-02z
1999-12-31)r   ÚpdÚto_datetimeÚvaluesrs   rt   )r   r/   rd   rM   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*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 )Nrf   r_   r   )r   r,   rh   Úasm8r+   r   )r   r/   rd   r   r   r   r   Útest_td_add_sub_ndarray_0dB  s    z;TestTimedeltaAdditionSubtraction.test_td_add_sub_ndarray_0dN),Ú__name__Ú
__module__Ú__qualname__Ú__doc__r5   ÚmarkÚparametrizer   r   r,   rD   r   ZSecondr   ZDayr#   r)   r*   r	   Zraddr0   r9   r<   r@   rE   rJ   rN   rP   rR   rV   rZ   r]   re   rk   rl   rn   rx   r{   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__
    rY   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   rg   znumpy.timedelta64ZNaTTyper   z'unsupported operand type\(s\) for \*: 'z' and 'ú'z1ufunc '?multiply'? cannot use operands with typesr1   )r   ri   r5   r6   rc   )r   r$   rY   r/   Ztypsr8   r   r   r   Útest_td_mul_natf  s    þÿz3TestTimedeltaMultiplicationDivision.test_td_mul_natÚnanÚNaNc                 C   s&   t ddd�}|||ƒ}|tks"t‚d S rS   rT   )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&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_   rB   g      ø?é   é   ©r—   r   éÿÿÿÿg      ð¿r^   r1   r&   r   )
r   r   r,   r’   r   Ú_valuer5   r6   rc   r   )r   r$   r/   r   r8   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 )Nrf   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 )Nrf   r_   r   ú2 days)r   r,   rh   Úndimr   Útype)r   r/   rd   rM   rw   r   r   r   Útest_td_mul_numeric_ndarray_0d£  s    
zBTestTimedeltaMultiplicationDivision.test_td_mul_numeric_ndarray_0dc              	   C   sz   t dƒ}t t dƒ ¡ g¡}dtj› dtj› d�}tjt|d�� ||  W 5 Q R X tjt|d�� ||  W 5 Q R X d S )Nrf   r   z:ufunc '?multiply'? cannot use operands with types dtype\('zm8\[ns\]'\) and dtype\('zm8\[ns\]'\)r1   )	r   r,   rh   rQ   rs   ZENDIANr5   r6   rc   rj   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   éð   é<   r\   r˜   )r   r   rI   r   r,   rD   Úisnanr   rU   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,   rD   rœ   r   rU   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_   é   r3   r;   rU   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 rS   rT   )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 )Nrf   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 )Nrf   r   )r   r,   rh   r+   r   )r   r/   rd   rw   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¥   r\   g      Ð?)r   r   rI   r   r,   rD   rU   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'r1   ú<unsupported operand type\(s\) for /: 'float' and 'Timedelta')r   r   r,   r¦   r   rD   r5   r6   rc   r-   r’   )r   r/   r   r8   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°   r1   z$cannot use operands with types dtype)r   r,   rh   Úobjectrb   rs   rt   r’   r5   r6   rc   )r   r/   ru   r   rM   r8   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,   rh   r‡   r   )r   r/   ru   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˜   ©rG   r—   r   éþÿÿÿr_   )r   r   rO   rQ   ©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¦   rD   ©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   rI   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·   rg   z.Invalid dtype datetime64\[D\] for __floordiv__z8'dtype' is an invalid keyword argument for this functionz5ufunc '?floor_divide'? cannot use operands with typesr1   ú
2016-01-01zdatetime64[us]r²   )r   ri   r5   r6   rc   r,   r-   ©r   r/   r8   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,   rb   Úint32Úuint8)r   r/   rM   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,   rh   rQ   r   ra   rs   rt   rD   r’   )r   r/   rº   rw   rM   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,   ra   r³   Úkindr   )r   r/   Úserrw   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   rO   rQ   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   rD   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   rI   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'r1   )	r   r,   r-   rÍ   ÚNotImplementedr   r5   r6   rc   )r   r/   Zdt64r8   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`   r=   z9unsupported operand type\(s\) for //: '.*' and 'Timedeltar1   )r   rÍ   r,   r’   rÔ   r   rb   rÅ   rÄ   r5   r6   rc   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,   rh   rQ   r   ra   rs   rt   rD   r’   )r   r/   rº   rw   rM   ru   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 dtyper1   r   r   r   )r,   rh   r5   r6   rc   r   )r   Zintsr8   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Ø   r1   )r   rƒ   rÉ   r,   ra   rÍ   rÔ   r   r5   r6   rc   )r   r/   rË   rw   r8   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é%   ©rG   rB   r   r¥   r–   r   )r   r+   r   r   r   rU   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   rX   rU   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_   r\   r   rC   rU   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_   rH   rU   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•   r:   rš   )r   r+   r   ÚintrU   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Ü   r^   r1   r(   )r   r5   r6   rc   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?   rU   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_   rC   rU   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 operandr1   r(   é   ç      0@úInvalid dtype inté   é   )r   r5   r6   rc   r   r,   rh   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_   rB   rF   g  $Ç±åBr   r   r   r   rÜ   )r   Údivmodr   r+   r,   r’   r   rU   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_   rB   rF   r   r3   r   rÜ   é6   )r   rì   r   r   r+   r   r,   r¦   rU   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_   rB   rF   rA   r   éòÿÿÿr   r¸   rÜ   )r   rì   r   rI   r   r+   rU   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_   rB   rF   zAunsupported operand type\(s\) for //: 'Timedelta' and 'Timestamp'r1   r(   )r   r5   r6   rc   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_   rB   rF   r   r3   r   rÜ   )rì   r   r   r   r+   rm   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î   rA   rÜ   r   rð   r   r¸   )rì   r   rI   r   r   r+   rm   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–   r^   r1   r(   ræ   rç   rè   ré   rê   )r   r5   r6   rc   rì   r   r,   rh   rÁ   r   r   r   Útest_rdivmod_invalid¤  s    
z8TestTimedeltaMultiplicationDivision.test_rdivmod_invalidru   ro   rp   ry   rq   c              	   C   s0   d}t jt|d�� ||tdƒƒ W 5 Q R X d S )Nz7unsupported operand type|cannot use operands with typesr1   rq   )r5   r6   rc   r   )r   r$   ru   r8   r   r   r   Ú(test_td_op_timedelta_timedeltalike_array¸  s    zLTestTimedeltaMultiplicationDivision.test_td_op_timedelta_timedeltalike_arrayN)Gr‰   rŠ   r‹   rŒ   r5   r�   rŽ   r   r,   rD   r)   Úmulr	   Zrmulr‘   r’   rb   Ú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rsubrh   r   r   rö   r   r   r   r   r�   W  s”    ÿ
ýþ
	
	

	 ÿþþr�   c                   @   s^   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	e
j dddg¡dd„ ƒZdS )ÚTestTimedeltaComparisonc                 C   s¶  dD ]È}t j |¡j}t j |¡j}|tjk s2t‚|tjks@t‚|tjkrNt‚|tjkr\t‚|tjksjt‚|tjkrxt‚|tjks†t‚|tjks”t‚|tjk r¢t‚|tjkr°t‚|tjks¾t‚|tjkrt‚qdD ]Þ}t j |¡j}t j |¡j}|tjk�st‚|tjk�st‚|tjk �r"t‚|tjk�r2t‚|tjk�sBt‚|tjk�rRt‚|tjk �sbt‚|tjk�srt‚|tjk�r‚t‚|tjk�r’t‚|tjk�s¢t‚|tjkrÒt‚qÒd S )N)r   rÓ   )Úmsr   )r   Úmaxr4   Úminr   r   )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@t‚|j|jksPt‚||ks\t‚||krht‚||k rtt‚||kr€t‚||ksŒt‚||ks˜t‚|tdd� d¡ }||ks¸t‚||krÄt‚||k sÐt‚||ksÜt‚||krèt‚||krôt‚d S )NiÿÉš;iQ r    r"   r   r   r   )r   r,   rD   r!   r   r   r   r4   )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 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,   rh   r´   ÚboolÚallr   Úshape)r   r/   rd   ru   rw   rM   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,   rh   rs   rt   )r   Zperiodsru   r   rM   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   rh   r  rs   rt   )r   ru   r/   rM   r   r   r   r   Útest_compare_td64_ndarray7  s    z1TestTimedeltaComparison.test_compare_td64_ndarrayc                 C   sˆ   G dd„ dƒ}t dƒ}|dks"t‚|dks.t‚||ƒ ks<t‚||dd�ksNt‚||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__Q  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_resultT  s    
zVTestTimedeltaComparison.test_compare_custom_object.<locals>.CustomClass.generic_resultc                 S   s   |   ¡ S r  ©r  ©r   rd   r   r   r   Ú__eq__Z  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   ÚCustomClassP  s   r  Ú1sÚstringr   Fr  TN)r   r   )r   r  Útr   r   r   Útest_compare_custom_objectJ  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)'r1   )r   r5   r6   rc   )r   r  r  r8   r   r   r   Útest_compare_unknown_typel  s    z1TestTimedeltaComparison.test_compare_unknown_typeN)r‰   rŠ   r‹   rþ   rÿ   r  r  r  r	  r  r5   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  rf   )r   Ú__add__rÔ   r   Ú__sub__Ú__truediv__Ú__mul__Ú__floordiv__)r  rd   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 )	Nrf   Úarg   r^   z3can only concatenate str \(not "Timedelta"\) to strzmust be str, not Timedeltar1   z"not supported between instances of)r   ri   r5   r6   rc   r   )r/   ÚleftÚrightr8   r   r   r   Útest_ops_error_str‰  s    ýÿr%  )rŒ   r   r   r)   Únumpyr,   r5   Zpandas.errorsr   Zpandasrƒ   r   r   r   r   Zpandas._testingZ_testingrs   Zpandas.corer	   r
   r�   rú   r!  r%  r   r   r   r   Ú<module>   s*     ?    u 4