a
    oÝEb†  ã                   @   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*dBS )CÚ 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   úm/home/ja/django-apps/lartica_env/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ƒs”J ‚|td
ƒks¤J ‚||tƒ}|tu sºJ ‚d S )Nr   Údr   éà  r   é   z2018-01-12 18:09z2018-01-22 18:09z
2018-01-12ú
2018-01-22)	r   r   ÚoperatorÚaddÚ
isinstancer   ÚnpÚ
datetime64r   ©r   r!   Útdr   r   r   r   Útest_td_add_datetimelike_scalarN   s    

z@TestTimedeltaAdditionSubtraction.test_td_add_datetimelike_scalarc                 C   sŠ   d}t jt|d��$ tdƒtddd�  W d   ƒ n1 s<0    Y  t jt|d��" tdƒtdd�  W d   ƒ n1 s|0    Y  d S )Nzint too (large|big) to convert©Úmatchz
1700-01-01i“÷ r   r   ©r   )ÚpytestÚraisesÚOverflowErrorr   r   r   r   )r   Úmsgr   r   r   Útest_td_add_timestamp_overflowe   s
    2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   r0   é   ©r   r(   r+   r   r   r   Útest_td_add_tdm   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   é	   r0   é   ©r   r   r(   r+   r   r   r   Útest_td_add_pytimedeltau   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   é   r0   ©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   r>   ©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   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 ƒs2J ‚||ks>J ‚| ¡ | }t|t ƒsXJ ‚||ksdJ ‚d S rG   )r   Úto_pytimedeltar(   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 ƒs2J ‚||ks>J ‚| ¡ | }t|t ƒsXJ ‚||ksdJ ‚d S rG   )r   Úto_timedelta64r(   rH   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)   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(J ‚|t ddd�ks<J ‚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 d   ƒ n1 sX0    Y  tjt|d�� ||  W d   ƒ n1 sŽ0    Y  tjt|d�� ||  W d   ƒ n1 sÄ0    Y  tjt|d�� ||  W d   ƒ q(1 sú0    Y  q(d S )Nr   r"   r   úunsupported operand typeé   ç       @r.   )r   r)   Úint64Úfloat64r1   r2   Ú	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 d   ƒ n1 sL0    Y  d ddg¡}tjt|d�� ||  W d   ƒ n1 s�0    Y  d}tjt|d�� ||  W d   ƒ n1 sÊ0    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'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)   Úarrayr1   r2   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u s J ‚t d¡| }|tu s:J ‚d S rS   )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$J ‚|tddd�ks8J ‚d S )Nr   r   r"   r   iÿÿÿrX   )r   rE   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   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 )Nru   rm   r[   rX   zAunsupported operand type\(s\) for \-: 'Timedelta' and 'Timestamp'r.   )r   r)   rd   r   r@   r1   r2   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_ndarray4  s    z=TestTimedeltaAdditionSubtraction.test_td_add_sub_dt64_ndarrayN)+Ú__name__Ú
__module__Ú__qualname__Ú__doc__r1   Ú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
      sf   


ûþ


ûþ









r
   c                
   @   st  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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#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<ej de
jeje
j=ej>ej?g¡ej d`e @eAdaƒeAdbƒg¡e @eAdcƒeBddƒg¡g¡dedf„ ƒƒZCdgS )hÚ#TestTimedeltaMultiplicationDivisionzà
    Tests for Timedelta methods:

        __mul__, __rmul__,
        __div__, __rdiv__,
        __truediv__, __rtruediv__,
        __floordiv__, __rfloordiv__,
        __mod__, __rmod__,
        __divmod__, __rdivmod__
    rU   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   rc   )znumpy.timedelta64ZNaTTyper   z'unsupported operand type\(s\) for \*: 'z' and 'ú'z1ufunc '?multiply'? cannot use operands with typesr.   ©r   re   r1   r2   r_   )r   r!   rU   r,   Ztypsr4   r   r   r   Útest_td_mul_natP  s    þÿz3TestTimedeltaMultiplicationDivision.test_td_mul_natÚnanÚNaNc                 C   s&   t ddd�}|||ƒ}|tu s"J ‚d S rO   rP   )r   r!   r�   r,   r   r   r   r   Útest_td_mul_nana  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sŒJ ‚d}tjt|d��" ||tdddƒƒ W d   ƒ n1 sÆ0    Y  tjt|d�� |||ƒ W d   ƒ n1 sþ0    Y  d S )Né   ©Úminutesr[   r>   g      ø?é   é   ©r’   r   éÿÿÿÿg      ð¿rZ   r.   r#   r   )	r   r)   r�   r   Úvaluer1   r2   r_   r   )r   r!   r,   r   r4   r   r   r   Útest_td_mul_scalari  s    


0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   s�   t dƒ}t t dƒ ¡ g¡}d}tjt|d�� ||  W d   ƒ n1 sL0    Y  tjt|d�� ||  W d   ƒ n1 s‚0    Y  d S )Nrb   r{   z_ufunc '?multiply'? cannot use operands with types dtype\('<m8\[ns\]'\) and dtype\('<m8\[ns\]'\)r.   )r   r)   rd   rM   r1   r2   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&J ‚|| dks6J ‚|t dd¡ dksNJ ‚t |t ¡s`J ‚d S )	Nr   r"   r   r   éð   é<   rX   r“   )r   r   rE   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*J ‚|t dd¡ }||jd ksLJ ‚|t dd¡ }||jksjJ ‚t dƒ}|t dd¡ }|dksŽJ ‚|t dd¡ }|dksªJ ‚|t dd¡ }||jksÈJ ‚d S )	Nz1 days 2 hours 3 nsr   r   l     ž"R: r   é Êš;r   i m )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"J ‚|t dd�ks4J ‚|d }t|t ƒsJJ ‚|t dd�ks\J ‚d S )Nr   r"   r   r[   é   r0   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u s J ‚|| }|tu s4J ‚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   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œ   rX   g      Ð?)r   r   rE   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"J ‚d | }t |¡s8J ‚t d¡| }t |¡sTJ ‚d}tjt|d�� t d¡|  W d   ƒ n1 sŠ0    Y  d}tjt|d�� tj	|  W d   ƒ n1 sÆ0    Y  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@   r1   r2   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 d   ƒ n1 s²0    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   ©Údtyper   r¦   r.   z$cannot use operands with types dtype)r   r)   rd   Úobjectr^   ro   rp   r�   r1   r2   r_   )r   r,   rq   r   rI   r4   r   r   r   Útest_td_rdiv_ndarray  s"    &z8TestTimedeltaMultiplicationDivision.test_td_rdiv_ndarrayc                 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“   ©rC   r’   r   éþÿÿÿr[   )r   rK   rM   ©r   r,   Úscalarr   r   r   Ú%test_td_floordiv_timedeltalike_scalar   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�   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"J ‚|t d¡ dks8J ‚d S )Nr�   r“   r¬   r   r[   é\   )r   r   rE   ZMinuter±   r   r   r   Útest_td_floordiv_offsets1  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¬   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   r1   r2   r_   r)   r*   ©r   r,   r4   r   r   r   Útest_td_floordiv_invalid_scalar7  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)   r^   Úint32Úuint8)r   r,   rI   r   r   r   Útest_td_floordiv_numeric_scalarE  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)   rd   rM   r]   ro   rp   r@   r�   )r   r,   r¯   rs   rI   r   r   r   Ú$test_td_floordiv_timedeltalike_arrayP  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   r   ÚSeriesr)   r]   r©   Úkind)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*J ‚|  | ¡ ¡dksBJ ‚d|  | ¡ ¡dks\J ‚d S )Nr�   r¬   r“   r   r­   r[   r   )r   Ú__rfloordiv__rK   rM   r®   r   r   r   Ú&test_td_rfloordiv_timedeltalike_scalarj  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   r@   r±   r   r   r   Útest_td_rfloordiv_null_scalary  s    zATestTimedeltaMultiplicationDivision.test_td_rfloordiv_null_scalarc                 C   s    t  d¡tdd� dksJ ‚d S )Nr   é   r‘   r[   )r   rE   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'r.   )r   r)   r*   rÂ   ÚNotImplementedr1   r2   r_   )r   r,   Zdt64r4   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 sŒJ ‚d}tj	t
|d�� t d¡|  W d   ƒ n1 sÂ0    Y  tj	t
|d�� t d¡|  W d   ƒ n1 sþ0    Y  tj	t
|d�� t d¡|  W d   ƒ n1 �s<0    Y  d S )	Nr�   r¬   g      @r[   r\   r9   z9unsupported operand type\(s\) for //: '.*' and 'Timedeltar.   )r   rÂ   r)   r�   rÉ   r^   rº   r¹   r1   r2   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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)   rd   rM   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   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 isPi€ºtPi vPrŸ   úInvalid dtyper.   r   r   r   )r)   rd   r1   r2   r_   r   )r   Úintsr4   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Í   r.   )
r   r   r¾   r)   r]   rÂ   rÉ   r1   r2   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&J ‚|t dd�ks8J ‚|tdd� }t|t ƒsTJ ‚|t dƒksdJ ‚|t }|tu sxJ ‚d S )Né%   ©rC   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u s&J ‚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(J ‚|t dd�ks:J ‚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&J ‚|t dd�ks8J ‚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 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sˆJ ‚d S )	NrÑ   rÒ   r[   r   g   ¢”mBr�   r6   r•   )r   r(   ÚintrQ   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Ò   rZ   r.   r%   )r   r1   r2   r_   r   r¶   r   r   r   Útest_mod_invalid  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;   rQ   r   r   r   Útest_rmod_pytimedelta  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[   r?   rQ   r   r   r   Útest_rmod_timedelta64  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 sª0    Y  d}tjt|d��" t d	d
g¡|  W d   ƒ n1 sî0    Y  d S )Nr�   r‘   zunsupported operandr.   r%   é   ç      0@úInvalid dtype inté   é   )r   r1   r2   r_   r   r)   rd   r¶   r   r   r   Útest_rmod_invalid  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 sŠJ ‚d S )
Nr[   r>   rB   g  $Ç±åBr   r   r   r   rÒ   )r   Údivmodr(   r)   r�   r   rQ   r   r   r   Útest_divmod_numeric4  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 ƒs†J ‚|d t dƒksšJ ‚t|tƒ}t |d ¡s¶J ‚|d tu sÆJ ‚d S )	Nr[   r>   rB   r   r0   r   rÒ   é6   )r   râ   r   r(   r   r)   r�   rQ   r   r   r   Útest_divmodB  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[   r>   rB   r=   r   éòÿÿÿr   r­   rÒ   )r   râ   r   rE   r(   rQ   r   r   r   Útest_divmod_offsetT  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[   r>   rB   zAunsupported operand type\(s\) for //: 'Timedelta' and 'Timestamp'r.   r%   )r   r1   r2   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(J ‚t|d tƒs:J ‚|d tdd�ksPJ ‚d S )Nr[   r>   rB   r   r0   r   rÒ   )râ   r   r   r(   ri   r   r   r   Útest_rdivmod_pytimedeltae  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   rE   r   r(   ri   r   r   r   Útest_rdivmod_offsetl  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 s°0    Y  d}tjt|d��$ tt d	d
g¡|ƒ W d   ƒ n1 sö0    Y  d S )Nr�   r‘   rZ   r.   r%   rÜ   rÝ   rÞ   rß   rà   )r   r1   r2   r_   râ   r   r)   rd   r¶   r   r   r   Útest_rdivmod_invalidr  s    
,((z8TestTimedeltaMultiplicationDivision.test_rdivmod_invalidrq   rk   rl   ru   rm   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 typesr.   rm   )r1   r2   r_   r   )r   r!   rq   r4   r   r   r   Ú(test_td_op_timedelta_timedeltalike_array†  s    zLTestTimedeltaMultiplicationDivision.test_td_op_timedelta_timedeltalike_arrayN)Drƒ   r„   r…   r†   r1   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ë   ÚtruedivZrdivZrsubrd   r   r   rì   r   r   r   r   r‰   A  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 J ‚||ks,J ‚||kr8J ‚||ksDJ ‚||ksPJ ‚||k r\J ‚||krhJ ‚|d| krxJ ‚|d| ksˆJ ‚|d| ks˜J ‚|d| k s¨J ‚|d| kr¸J ‚|d| krÈJ ‚d S )Nr“   r[   )Údeltar(   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s˜J ‚||k ¡ s¨J ‚d S )Nz2 daysz3 hoursr¨   FT)r   r)   rd   rª   ÚboolÚallÚ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g d¢td�}||k}t ||¡ ||k}t ||¡ ||k}t || ¡ ||k}t || ¡ d S )Nr¡   ztimedelta64[ns]r   )FTFFFr¨   )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"J ‚|dkr.J ‚||ƒ kr<J ‚||dd�krNJ ‚||dd�k s`J ‚||dd�k rrJ ‚||dd�ks„J ‚d	S )
zˆ
        Make sure non supported operations on Timedelta returns NonImplemented
        and yields to other operand (GH#20829).
        c                   @   s.   e Zd Zd
dd„Zdd„ Zdd„ Zdd	„ ZdS )zGTestTimedeltaComparison.test_compare_custom_object.<locals>.CustomClassNc                 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 u 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  Ú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 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 s¤0    Y  tjt|d�� ||k  W d   ƒ n1 sÚ0    Y  d S )Nr  z>not supported between instances of 'Timedelta' and '(int|str)'r.   )r   r1   r2   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  r1   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  rb   )r   Ú__add__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 ]ž\}}d g d¢¡}tjt|d�� ||  W d   ƒ n1 sZ0    Y  d}tjt|d�� ||k W d   ƒ n1 s”0    Y  ||krªJ ‚||ksJ ‚qd S )Nrb   Úarc   )rZ   z3can only concatenate str \(not "Timedelta"\) to strzmust be str, not Timedeltar.   z"not supported between instances ofr‹   )r,   ÚleftÚrightr4   r   r   r   Útest_ops_error_str  s    ÿ&&r  )r†   r   r   r&   Únumpyr)   r1   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(     )    Ys