U
    `»{jl~  ã                   @   sX  d Z ddlmZ ddlmZmZ ddlZddl	Z	ddl
mZ ddlmZmZ ddlm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 G d
d„ dƒZG dd„ dƒZdd„ ZG dd„ dƒZG dd„ dƒZ e	j! "dedƒdfedƒdfeddd�dfeddd�dfeddd�dfedƒdfedfg¡dd„ ƒZ#dd „ Z$d!d"„ Z%d#d$„ Z&d%d&„ Z'dS )'z test the scalar Timedelta é    )Ú	timedelta)ÚgivenÚ
strategiesN)Úlib)ÚNaTÚiNaT)ÚNpyDatetimeUnit)ÚOutOfBoundsTimedelta)Ú	TimedeltaÚTimedeltaIndexÚoffsetsÚto_timedeltac                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
Ú
TestAsUnitc                 C   s4  t dd�}| d¡|kst‚| d¡}|j|jd ks:t‚|jtjjksLt‚| d¡}|j|jksft‚|j|jksvt‚| d¡}|j|jd ks”t‚|jtjjks¦t‚| d¡}|j|jksÀt‚|j|jksÐt‚| d¡}|j|jd	 ksît‚|jtjjk�st‚| d¡}|j|jk�st‚|j|jk�s0t‚d S )
Né   ©ÚdaysÚnsÚuséè  Úmsé@B Úsé Êš;)	r
   Ú_as_unitÚAssertionErrorÚvalueÚ_resor   Ú	NPY_FR_usÚ	NPY_FR_msÚNPY_FR_s)ÚselfÚtdÚresÚrt© r$   úk/var/www/html/bwave/python/venv/lib/python3.8/site-packages/pandas/tests/scalar/timedelta/test_timedelta.pyÚtest_as_unit   s(    






zTestAsUnit.test_as_unitc              	   C   sn   d}t  |tjj¡}d}tjt|d�� | d¡ W 5 Q R X | d¡}|j|d ksXt	‚|j
tjjksjt	‚d S )Nì     À&oz>Cannot cast 106752 days 00:00:00 to unit='ns' without overflow©Úmatchr   r   r   )r
   Ú_from_value_and_resor   r   r   ÚpytestÚraisesr	   r   r   r   r   )r    r   r!   Úmsgr"   r$   r$   r%   Útest_as_unit_overflows;   s    
z!TestAsUnit.test_as_unit_overflowsc              	   C   sv   t dd�}| d¡}t dd�}||ks*t‚|jtjjks<t‚|jdksJt‚tjt	dd�� |jddd	� W 5 Q R X d S )
NiÜ  ©Úmicrosecondsr   r   )ÚmillisecondszCannot losslessly convert unitsr(   F)Zround_ok)
r
   r   r   r   r   r   r   r+   r,   Ú
ValueError©r    r!   r"   Úexpectedr$   r$   r%   Útest_as_unit_roundingH   s    


z TestAsUnit.test_as_unit_roundingc                 C   sÂ   t dd� d¡}|jdkst‚|jdks,t‚|jjdks<t‚|jdksJt‚| ¡ dksZt‚| d¡}|jdksrt‚|jjdks‚t‚|jjdks’t‚|jdks t‚|j	dks®t‚| ¡ dks¾t‚d S )	Nr   r   r   i \&é€Q r   l    `®;P r   )
r
   r   r   r   r   Ú
componentsZ_dÚtotal_secondsÚhoursÚ_h©r    r!   r"   r$   r$   r%   Útest_as_unit_non_nanoU   s    
z TestAsUnit.test_as_unit_non_nanoN)Ú__name__Ú
__module__Ú__qualname__r&   r.   r5   r<   r$   r$   r$   r%   r      s   r   c                   @   sÈ   e Zd Zejdddgd�dd„ ƒZejdd„ ƒZejd	d
„ ƒZej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d#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+S ),ÚTestNonNanor   r   r   )Úparamsc                 C   s   |j S ©N)Úparam)r    Úrequestr$   r$   r%   Úunit_strh   s    zTestNonNano.unit_strc                 C   s   d|› �}t t|ƒjS )NZNPY_FR_)Úgetattrr   r   )r    rE   Úattrr$   r$   r%   Úunitl   s    
zTestNonNano.unitc                 C   s8   d}|t jjkr|}n|t jjkr,|d }n|d }|S )Nr'   r   r   )r   r   r   r   )r    rH   r   r   r$   r$   r%   Úvalr   s    
zTestNonNano.valc                 C   s   t  ||¡S rB   )r
   r*   )r    rH   rI   r$   r$   r%   r!   ~   s    zTestNonNano.tdc                 C   s:   t  ||¡}|j|kst‚|j|ks(t‚|jdks6t‚d S )Né ¡ )r
   r*   r   r   r   r   )r    rH   rI   r!   r$   r$   r%   Útest_from_value_and_reso‚   s    z$TestNonNano.test_from_value_and_resoc                 C   s6   t |ƒj|kst‚| j|ks"t‚|
 j|ks2t‚d S rB   )Úabsr   r   )r    r!   rH   r$   r$   r%   Útest_unary_non_nano‰   s    zTestNonNano.test_unary_non_nanoc                 C   s2   || }t  d|¡}||ks t‚|j|ks.t‚d S )Nr   )r
   r*   r   r   )r    r!   rH   r"   r4   r$   r$   r%   Útest_sub_preserves_resoŽ   s    z#TestNonNano.test_sub_preserves_resoc                 C   s.   |d }|j |j d kst‚|j|ks*t‚d S )Né   )r   r   r   ©r    r!   rH   r"   r$   r$   r%   Útest_mul_preserves_reso”   s    z#TestNonNano.test_mul_preserves_resoc                 C   s@   t ddd�}||k st‚||ks$t‚||kr0t‚||ks<t‚d S )Niÿ  r   )r   rH   )r
   r   )r    r!   Úotherr$   r$   r%   Útest_cmp_cross_reso›   s
    zTestNonNano.test_cmp_cross_resoc                 C   s2   |  ¡ }tdd�}t|ƒtks"t‚||ks.t‚d S )NrJ   r   )Úto_pytimedeltar   Útyper   r3   r$   r$   r%   Útest_to_pytimedelta£   s    
zTestNonNano.test_to_pytimedeltac                 C   s”   |  ¡ | ¡ |jfD ]z}t|tjƒs(t‚| d¡|jks<t‚|t	j
jkrX|jdksŽt‚q|t	jjkrt|jdksŽt‚q|t	jjkr|jdkst‚qd S )NÚi8úm8[s]zm8[ms]zm8[us])Úto_timedelta64Úto_numpyZasm8Ú
isinstanceÚnpÚtimedelta64r   Úviewr   r   r   Údtyper   r   rP   r$   r$   r%   Útest_to_timedelta64©   s    zTestNonNano.test_to_timedelta64c              	   C   s~   || dkst ‚d| | dks$t ‚t|jƒ}d}tjt|d�� ||  W 5 Q R X tjt|d�� | ¡ |  W 5 Q R X d S )Nr   ç      @ú-with mismatched resolutions are not supportedr(   ©r   r
   r   r+   r,   r2   rT   ©r    r!   rR   r-   r$   r$   r%   Útest_truediv_timedeltalikeµ   s    
z&TestNonNano.test_truediv_timedeltalikec                 C   sn   |t j tkst‚|d }|j|jd ks.t‚|j|jks>t‚|d }|j|jd ksZt‚|j|jksjt‚d S ©NrO   g       @)r\   Únanr   r   r   r   r;   r$   r$   r%   Útest_truediv_numericÂ   s    z TestNonNano.test_truediv_numericc              	   C   s~   || dkst ‚d| | dks$t ‚t|jƒ}d}tjt|d�� ||  W 5 Q R X tjt|d�� | ¡ |  W 5 Q R X d S )Nr   ra   rO   rb   r(   rc   rd   r$   r$   r%   Útest_floordiv_timedeltalikeÍ   s    
z'TestNonNano.test_floordiv_timedeltalikec                 C   sê   |t j tkst‚|d }|j|jd ks.t‚|j|jks>t‚|d }|j|jd ksZt‚|j|jksjt‚|t  t j¡ tks‚t‚|t  d¡ }|j|jd ks¤t‚|j|jks´t‚|t  d¡ }|j|jd ksÖt‚|j|jksæt‚d S rf   )r\   rg   r   r   r   r   Úarrayr;   r$   r$   r%   Útest_floordiv_numericÚ   s    z!TestNonNano.test_floordiv_numericc              	   C   sR  t dd�}|| }|j|jks"t‚|j|jd ks6t‚|| }|j|jksNt‚|j|jd ksbt‚|| }|j|jkszt‚|j|jd ksŽt‚|| }|j|jks¦t‚|jd|j ksºt‚t dƒ}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 d S )Nr   r   iô  z‹Timedelta addition/subtraction with mismatched resolutions is not allowed when casting to the lower resolution would require lossy roundingr(   )r
   r   r   r   r+   r,   r2   )r    r!   rR   ÚresultZother2r-   r$   r$   r%   Útest_addsub_mismatched_resoï   s0    
ÿz'TestNonNano.test_addsub_mismatched_resoc                 C   s:   |j |kst‚|j j|jks t‚|j jtjd ks6t‚d S ©Nr   )Úminr   r   r   r   ©r    r!   r$   r$   r%   Útest_min  s    zTestNonNano.test_minc                 C   s>   |j |kst‚|j j|jks t‚|j jt tj¡j ks:t‚d S rB   )Úmaxr   r   r   r\   ÚiinfoÚint64rp   r$   r$   r%   Útest_max  s    zTestNonNano.test_maxc                 C   s4   t  d|j¡}|j}||ks t‚|j|jks0t‚d S rn   )r
   r*   r   Ú
resolutionr   )r    r!   r4   rl   r$   r$   r%   Útest_resolution  s    zTestNonNano.test_resolutionN)r=   r>   r?   r+   ZfixturerE   rH   rI   r!   rK   rM   rN   rQ   rS   rV   r`   re   rh   ri   rk   rm   rq   ru   rw   r$   r$   r$   r%   r@   g   s.   



#r@   c                   C   s†   t jt tjd ƒkst‚t jjtjjks,t‚t jt t	 
t	j¡jƒksHt‚t jjtjjks\t‚t jt dƒksnt‚t jjtjjks‚t‚d S rn   )r
   ro   r   r   r   r   r   Z	NPY_FR_nsrr   r\   rs   rt   rv   r$   r$   r$   r%   Ú'test_timedelta_class_min_max_resolution#  s    rx   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestTimedeltaUnaryOpsc              	   C   s€   t ddd�}d}tjt|d�� |  W 5 Q R X tjt|d�� | ¡   W 5 Q R X d}tjt|d�� | ¡   W 5 Q R X d S )Né
   Úd©rH   zbad operand type for unary ~r(   z0ufunc 'invert' not supported for the input types)r
   r+   r,   Ú	TypeErrorrT   rY   )r    r!   r-   Zumsgr$   r$   r%   Útest_invert1  s    z!TestTimedeltaUnaryOps.test_invertc                 C   s†   t ddd�}| t ddd�ks"t‚| t dƒks4t‚|
 t ddd�ksJt‚t|ƒ|ksZt‚t| ƒ|kslt‚t| ƒt dƒks‚t‚d S )Nrz   r{   r|   éöÿÿÿz-10dZ10d)r
   r   rL   rp   r$   r$   r%   Útest_unary_ops@  s    z$TestTimedeltaUnaryOps.test_unary_opsN)r=   r>   r?   r~   r€   r$   r$   r$   r%   ry   0  s   ry   c                   @   sˆ  e Zd Zej ddddg¡dd„ ƒZdd„ Zd	d
„ Zdd„ Z	dd„ Z
dd„ Zej ddd„ dD ƒdd„ dD ƒ dd„ dD ƒ dd„ dD ƒ dd„ dD ƒ dd„ dD ƒ dd„ d D ƒ ¡ej d!ejeejg¡d"d#„ ƒƒZej d$d%d&d'g¡d(d)„ ƒZd*d+„ Zd,d-„ Zd.d/„ Zej d0d1ed2ƒed3ƒfd4ed5ƒed6ƒfd7ed8ƒed9ƒfd:ed;ƒed<ƒfd=ed>ƒed?ƒfd@edAƒedBƒfdCedDƒedEƒfdFedGƒedHƒfdIedJƒedKƒfdLedMƒedNƒfg
¡dOdP„ ƒZdQdR„ ZdSdT„ ZejjdUdVdW�eejedX ej dY�dZ�ej d[ej!ej"ej#g¡d\d]„ ƒƒƒZ$ej d$d^d_d`dag¡dbdc„ ƒZ%ddde„ Z&dfdg„ Z'dhdi„ Z(djdk„ Z)dldm„ Z*dndo„ Z+dpdq„ Z,drds„ Z-dtdu„ Z.dvS )wÚTestTimedeltaszunit, value, expected)r   gsh‘í|ÿ#@i'  )r   g¿rÞÿÿ#@i–˜ )r   gúh÷ÿÿÿ#@l   ÿc(	 c                 C   s<   t ||d�}|j|kst‚t t|ƒ| ƒ}|j|ks8t‚d S )Nr|   )r
   r   r   Ústr)r    rH   r   r4   rl   r$   r$   r%   Ú&test_rounding_on_int_unit_constructionO  s    
z5TestTimedeltas.test_rounding_on_int_unit_constructionc                 C   s<   t dƒ}d}t | ¡ |¡ t tjƒ}t | ¡ ¡s8t‚d S )Nz1 days, 10:11:12.100123456g‘šþ@)r
   ÚtmZassert_almost_equalr8   r\   rg   Úisnanr   )r    ÚrngZexptr$   r$   r%   Útest_total_seconds_scalar^  s
    
z(TestTimedeltas.test_total_seconds_scalarc                 C   sÂ   t ddd�t dƒfD ]�}| ¡ }|t |ƒks0t‚||ks<t‚t|tƒrPt|t ƒrTt‚|t |jd¡ksjt‚| ¡ }|t |jd¡ksˆt‚||ks”t‚t|tjƒst‚qt dƒ}|| ¡ ks¾t‚d S )Nrz   r{   r|   z1 days, 10:11:12.012345r   z1 days, 10:11:12.012345678)	r
   rT   r   r[   r   r\   r]   r   rY   )r    r!   ZpydtZtd64r$   r$   r%   Útest_conversiong  s    zTestTimedeltas.test_conversionc              	   C   sR  dd„ }t dƒ}|jdkst‚|jdks,t‚|jdks:t‚|jdksHt‚d}tjt| 	d¡d	�� |j
 W 5 Q R X tjt| 	d
¡d	�� |j W 5 Q R X tjt| 	d¡d	�� |j W 5 Q R X ||jƒ ||jƒ ||jƒ ||jƒ tdƒ}t|ƒtdƒk�st‚t|ƒdk�st‚| tdƒk�s*t‚tdƒj dk�s@t‚tdƒjdk�sTt‚t dƒ}|jdk�slt‚|jdk�s|t‚|jdk�sŒt‚|jdk�sœt‚d}tjt| 	d¡d	�� |j
 W 5 Q R X tjt| 	d
¡d	�� |j W 5 Q R X tjt| 	d¡d	�� |j W 5 Q R X t ddƒj}|jdk�s.t‚|j
dk�s>t‚|jdk�sNt‚|jdk�s^t‚|jdk�snt‚|jdk�s~t‚|jdk�sŽt‚||jƒ ||j
ƒ ||jƒ ||jƒ ||jƒ ||jƒ ||jƒ tdƒj}|jdk�sît‚|j
dk�sþt‚|jdk�st‚|jdk�st‚|jdk�s.t‚|jdk�s>t‚|jdk�sNt‚d S )Nc                 S   s   t | tƒst‚d S rB   )r[   Úintr   )r   r$   r$   r%   Úcheck|  s    z)TestTimedeltas.test_fields.<locals>.checkz1 days, 10:11:12r   i@�  r   z('Timedelta' object has no attribute '{}'r9   r(   Úminutesr1   z-1 days, 10:11:12z13:48:48z-1 days +10:11:12z0 days 13:48:48l     �gè4 lüÿÿÿ  �gè4 z-1 days, 10:11:12.100123456éÿÿÿÿi‡ iÈ  r   é   é;   iç  z-1 days 1 uséþÿÿÿ)r   r   r   Úsecondsr0   Únanosecondsr+   r,   ÚAttributeErrorÚformatr9   r‹   r1   r
   rL   r‚   r   r7   )r    rŠ   r†   r-   r!   Útupr$   r$   r%   Útest_fields{  st    











zTestTimedeltas.test_fieldsc                 C   s    t ddd�}tdƒ|kst‚d S )Nr   r   r|   Z
P0DT0H0M1S)r
   r   r   )r    r4   r$   r$   r%   Útest_iso_conversionÅ  s    z"TestTimedeltas.test_iso_conversionc                 C   s`   t dƒ ¡ }|jjdkst‚| d¡tks.t‚t dƒ ¡ }|jjdksJt‚| d¡tks\t‚d S )NZnatÚMrt   rg   )r   rZ   r_   Úkindr   Úastyper   )r    rl   r$   r$   r%   Útest_nat_convertersÊ  s    z"TestTimedeltas.test_nat_converterszunit, np_unitc                 C   s   g | ]}|d f‘qS )ÚWr$   ©Ú.0r   r$   r$   r%   Ú
<listcomp>Õ  s     zTestTimedeltas.<listcomp>)r›   Úwc                 C   s   g | ]}|d f‘qS )ÚDr$   rœ   r$   r$   r%   rž   Ö  s     )r    r{   r   ÚdayZDaysÚDayc                 C   s   g | ]}|d f‘qS )Úmr$   rœ   r$   r$   r%   rž   ×  s   ÿ)	r£   Úminutero   r‹   ÚtZMinuteZMinZMinutesÚTc                 C   s   g | ]}|d f‘qS )r   r$   rœ   r$   r$   r%   rž   å  s   ÿ)r   r�   ÚsecÚsecondÚSZSecondsZSecZSecondc                 C   s   g | ]}|d f‘qS )r   r$   rœ   r$   r$   r%   rž   ò  s   ÿ)r   r1   ZmillisecondZmilliZmillisÚlZMSZMillisecondsZMillisecondZMilliZMillisÚLc                 C   s   g | ]}|d f‘qS )r   r$   rœ   r$   r$   r%   rž     s   ÿ)r   r0   ÚmicrosecondÚmicroÚmicrosÚuZUSZMicrosecondsZMicrosecondZMicroZMicrosÚUc                 C   s   g | ]}|d f‘qS )r   r$   rœ   r$   r$   r%   rž     s   ÿ)r   r‘   Z
nanosecondZnanoÚnanosÚnZNSZNanosecondsZ
NanosecondZNanoZNanosÚNÚwrapperc                    s*  t ‡ fdd„t d¡ ¡ D ƒƒ}t|tdƒƒˆd�}t ||¡ t |tdƒƒˆd�}t ||¡ ‡fdd„t d¡D ƒ}t||ƒƒ}t ||¡ t||ƒƒ}t ||¡ tt 	dˆ ¡ 
d¡ƒ}tdˆd�}||ksÖt‚tdˆd�}||ksît‚tdˆ› �ƒ}||k�s
t‚tdˆ› �ƒ}||k�s&t‚d S )	Nc                    s   g | ]}t  |ˆ ¡‘qS r$   )r\   r]   )r�   Úi)Únp_unitr$   r%   rž   +  s     z3TestTimedeltas.test_unit_parser.<locals>.<listcomp>é   r|   c                    s   g | ]}|› ˆ › �‘qS r$   r$   )r�   Úxr|   r$   r%   rž   2  s     rO   ztimedelta64[ns]Ú2)r   r\   ZarangeÚtolistr   Úranger„   Zassert_index_equalr
   r]   r™   r   )r    rH   r¶   r´   r4   rl   Zstr_reprr$   )r¶   rH   r%   Útest_unit_parserÓ  s*    WÿzTestTimedeltas.test_unit_parserrH   ÚYÚyr—   c              	   C   sx   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dg|ƒ W 5 Q R X d S )Nz/Units 'M', 'Y', and 'y' are no longer supportedr(   rz   r   rO   )r+   r,   r2   r
   r   )r    rH   r-   r$   r$   r%   Útest_unit_m_y_raisesD  s    z#TestTimedeltas.test_unit_m_y_raisesc                 C   sÀ   t dƒt dd¡kst‚t dƒt dd¡ks0t‚t ddd�t dd¡ksLt‚t ddd�t dd¡ksht‚t ddd�t dd¡ks„t‚t ddd�t dd¡ks t‚t ddd�t dd	¡ks¼t‚d S )
Nr   r   rz   r|   r   r   r   r{   r    )r
   r\   r]   r   ©r    r$   r$   r%   Útest_numeric_conversionsP  s    z'TestTimedeltas.test_numeric_conversionsc                 C   sp   t tdd�ƒt dd¡ d¡ks$t‚t tdd�ƒt dd¡ d¡ksHt‚t tdd�ƒt dd¡ d¡kslt‚d S )	Nr   ©r�   r   úm8[ns]r/   r   r   r    )r
   r   r\   r]   r™   r   rÀ   r$   r$   r%   Útest_timedelta_conversionsZ  s    ÿ
ÿ
z)TestTimedeltas.test_timedelta_conversionsc              	   C   sn   t dƒ}| ¡ | ¡ kst‚d}tjt|d�� | d¡ W 5 Q R X tjt|d�� |jdd� W 5 Q R X d S )NZ10m7sz$dtype and copy arguments are ignoredr(   rX   T)Úcopy)r
   rY   rZ   r   r+   r,   r2   )r    r!   r-   r$   r$   r%   Útest_to_numpy_aliasc  s    z"TestTimedeltas.test_to_numpy_aliasz
freq,s1,s2r³   ú1 days 02:34:56.789123456ú-1 days 02:34:56.789123456r°   z1 days 02:34:56.789123000z-1 days 02:34:56.789123000r«   z1 days 02:34:56.789000000z-1 days 02:34:56.789000000r©   ú1 days 02:34:57z-1 days 02:34:57Z2Sz1 days 02:34:56z-1 days 02:34:56Z5Sz1 days 02:34:55z-1 days 02:34:55r¦   ú1 days 02:35:00z-1 days 02:35:00Z12Tz1 days 02:36:00z-1 days 02:36:00ÚHz1 days 03:00:00z-1 days 03:00:00r{   z1 daysz-1 daysc                 C   s@   t dƒ}t dƒ}| |¡}||ks&t‚| |¡}||ks<t‚d S )NrÇ   rÈ   )r
   Úroundr   )r    ÚfreqÚs1Ús2Út1Út2Úr1Úr2r$   r$   r%   Ú
test_roundo  s    

zTestTimedeltas.test_roundc              
   C   s>   t dƒ}dD ],\}}tjt|d�� | |¡ W 5 Q R X qd S )NrÇ   ))r½   z,<YearEnd: month=12> is a non-fixed frequency)r—   z#<MonthEnd> is a non-fixed frequency)ZfoobarzInvalid frequency: foobarr(   )r
   r+   r,   r2   rÌ   )r    rÐ   rÍ   r-   r$   r$   r%   Útest_round_invalid•  s    z!TestTimedeltas.test_round_invalidc              	   C   s´   t j d¡}t jt dd� t dƒ }||ks0t‚t j d¡}t jt dƒ }||ksVt‚tjtdd�� t j d¡ W 5 Q R X d 	d	d
g¡}tjt|d�� t j d¡ W 5 Q R X d S )Nr   r   rÂ   iò§iÿ×ò2zvalue too larger(   ú|z)Python int too large to convert to C longzint too big to convert)
r
   ro   Úceilr   rr   Úfloorr+   r,   ÚOverflowErrorÚjoin)r    rl   r4   r-   r$   r$   r%   Ú test_round_implementation_bounds   s    ÿz/TestTimedeltas.test_round_implementation_boundszFailing on buildsF)ÚreasonÚstrictr   )Z	min_valueZ	max_value)rI   Úmethodc                 C   s‚  t  |¡}t|ƒ}||dƒ|ks$t‚||dƒ}d}t  || j¡|k sJt‚|j| dks\t‚||dƒ}d}t  || j¡|k s‚t‚|j| dks”t‚||dƒ}d}t  || j¡|k sºt‚|j| dksÌt‚||d	ƒ}d
}t  || j¡|k sòt‚|j| dk�st‚||dƒ}d}t  || j¡|k �s.t‚|j| dk�sBt‚||dƒ}d}t  || j¡|k �sjt‚|j| dk�s~t‚d S )Nr   r   r   r   r   r   r   r   ro   l    XŽp7 Úhl     qar    l     ž"R: )r\   rt   r
   r   rL   r   )r    rI   rÞ   r!   r"   r±   r$   r$   r%   Útest_round_sanityµ  s6    






z TestTimedeltas.test_round_sanityr   r   r   r   c                 C   s�   t dƒ |¡}| d¡}|t dƒks(t‚|j|jks8t‚| d¡}|t dƒksRt‚|j|jksbt‚| d¡}|t dƒks|t‚|j|jksŒt‚d S )NrÉ   ro   rÊ   z1 days 02:34:00)r
   r   rÌ   r   r   rØ   r×   )r    rH   r!   r"   r$   r$   r%   Útest_round_non_nanoÞ  s    


z"TestTimedeltas.test_round_non_nanoc                 C   s,   t ddd�}t|t ƒst‚t|tƒs(t‚d S )Nrz   r{   r|   )r
   r[   r   r   rp   r$   r$   r%   Útest_identityî  s    zTestTimedeltas.test_identityc              	   C   sz  dd„ }t dƒt dd¡ks t‚t dƒt dd¡ks8t‚t dƒt dd¡ksPt‚t d	ƒt dd¡ksht‚t d
ƒt dd¡ks€t‚t dƒt dd¡ks˜t‚t dƒt dd¡ks°t‚t dƒt dd¡ksÈt‚t dƒt dd¡ksàt‚t dƒt dd¡ksøt‚t dƒt dd¡k�st‚t dƒt dd¡k�s,t‚t dƒt dd¡k�sFt‚t dƒt dd¡k�s`t‚t dƒt dd¡k�szt‚t dƒt dd¡k�s”t‚t dƒt dd¡ k�s°t‚t dƒt dd¡k�sÊt‚t dƒt d d¡k�sät‚t d!ƒt d"d¡k�sþt‚t d#ƒt d$d¡k�st‚t d%ƒ|t d&d'¡ƒk�s6t‚t d(ƒ|t d&d'¡ƒ k�sVt‚t d)ƒ|t d&d'¡ƒk�stt‚t d*ƒ|t dd'¡ƒk�s’t‚t d+ƒ|t dd'¡ƒk�s°t‚t d,ƒ|t dd'¡ƒk�sÎt‚t d-ƒ|t dd'¡ƒk�sìt‚t d.ƒ|t dd'¡ƒk�s
t‚t d/ƒ|t dd'¡ƒ k�s*t‚d0}tjt|d1�� t d2ƒ W 5 Q R X d3}tjt|d1�� t d4ƒ W 5 Q R X d S )5Nc                 S   s
   |   d¡S ©NrÃ   ©r™   ©Úvr$   r$   r%   Úconvõ  s    z9TestTimedeltas.test_short_format_converters.<locals>.convÚ10rz   r   Z10nsÚ100éd   Z100nsZ1000r   Z1000nsZ1000NSZ10usi'  Z100usi † Z1000usr   Z1000UsZ1000uSZ1msZ10msi€–˜ Z100msi áõZ1000msr   z-1sZ1sZ10sl    d(	 Z100sl    hí] Z1000sl    J)£Z1dr   r    z-1dZ1DZ10DZ100DZ1000DZ10000Dz 10000D z
 - 10000D zinvalid unit abbreviationr(   Z1foozunit abbreviation w/o a numberZfoo)r
   r\   r]   r   r+   r,   r2   )r    rç   r-   r$   r$   r%   Útest_short_format_convertersô  sJ      z+TestTimedeltas.test_short_format_convertersc              	   C   sR  dd„ }t  dd¡}tdƒ||ƒks(t‚tdƒ||ƒks<t‚tdƒ||ƒ ksRt‚tdƒ|t  dd	¡ƒksnt‚td
ƒ|t  dd	¡ƒksŠt‚tdƒ|t  dd	¡ƒks¦t‚tdƒ|t  dd¡ƒksÂt‚tdƒ|| t  dd	¡ ƒksät‚tdƒ||t  dd	¡ ƒk�st‚tdƒ||t  dd¡ ƒk�s(t‚d}tjt|d�� tdƒ W 5 Q R X d S )Nc                 S   s
   |   d¡S rã   rä   rå   r$   r$   r%   rç   '  s    z8TestTimedeltas.test_full_format_converters.<locals>.convr   r    Z1daysz1days,z- 1days,z00:00:01r   z06:00:01iaT  z
06:00:01.0z06:00:01.01iòšIr   z- 1days, 00:00:01z1days, 06:00:01z1days, 06:00:01.01zhave leftover unitsr(   z- 1days, 00)r\   r]   r
   r   r+   r,   r2   )r    rç   Zd1r-   r$   r$   r%   Útest_full_format_converters&  s*    
ÿ
"ÿÿz*TestTimedeltas.test_full_format_convertersc                 C   s"   t dƒ}t |¡}||kst‚d S )Nz1 days 10:11:12.0123456)r
   r„   Zround_trip_pickler   )r    ræ   Zv_pr$   r$   r%   Útest_pickleD  s    
zTestTimedeltas.test_picklec                 C   sŽ   t ddƒ}tdd�}t|ƒt|ƒks(t‚|di}|| dks@t‚dd„ tdƒD ƒ}tdd	„ |D ƒƒsht‚t dd
ƒ}t|ƒt| ¡ ƒksŠt‚d S )Nr   r    r   rO   c                 S   s    g | ]}t d d�t |d� ‘qS )r   rÂ   r   )r
   )r�   r²   r$   r$   r%   rž   S  s     z?TestTimedeltas.test_timedelta_hash_equality.<locals>.<listcomp>é   c                 s   s"   | ]}t |ƒt | ¡ ƒkV  qd S rB   )ÚhashrT   )r�   r!   r$   r$   r%   Ú	<genexpr>T  s     z>TestTimedeltas.test_timedelta_hash_equality.<locals>.<genexpr>r   )r
   r   rï   r   r»   ÚallrT   )r    ræ   r!   r{   ZtdsZns_tdr$   r$   r%   Útest_timedelta_hash_equalityJ  s    


z+TestTimedeltas.test_timedelta_hash_equalityc              	   C   s  t t jƒ}t t jƒ}|jtd ks&t‚|jtjks6t‚|t ddƒ tksLt‚d}t	j
t|d�� |t ddƒ  W 5 Q R X t	j
t|d�� |t ddƒ  W 5 Q R X t |jd dƒ}|tks¼t‚d}t	j
t|d�� t |jd dƒ W 5 Q R X d}t	j
t|d�� t |jd dƒ W 5 Q R X d S )Nr   r   zint too (large|big) to convertr(   rO   zACannot cast -9223372036854775809 from ns to 'ns' without overflowz@Cannot cast 9223372036854775808 from ns to 'ns' without overflow)r
   ro   rr   r   r   r   r   Úi8maxr   r+   r,   rÙ   r	   )r    Zmin_tdZmax_tdr-   r!   r$   r$   r%   Útest_implementation_limitsZ  s$    

z)TestTimedeltas.test_implementation_limitsc                 C   s„   t dƒ ¡ dkst‚t dƒ ¡ dks(t‚t dƒ ¡ dks<t‚t dƒ ¡ dksPt‚t dƒ ¡ d d	k sht‚dt dƒ ¡  d	k s€t‚d S )
NZ30Sg      >@Ú0g        z-2Sg       Àz5.324Sg²�ï§ÆK@g#B’¡œÇ;)r
   r8   r   rÀ   r$   r$   r%   Útest_total_seconds_precisiony  s    z+TestTimedeltas.test_total_seconds_precisionc                 C   sœ   t dd�jdkst‚t ddd�jdks*t‚t ddd�jdks@t‚t ddd	�jd
ksVt‚t ddd�jdkslt‚t ddd�jdks‚t‚t ddd�jdks˜t‚d S )Nr   r   r    é   ©r   r9   rË   )r   r‹   r¦   )r   r�   r©   )r   r1   r«   )r   r0   r°   )r   r‘   r³   )r
   Zresolution_stringr   rÀ   r$   r$   r%   Útest_resolution_string‚  s    z%TestTimedeltas.test_resolution_stringc                 C   s@   t ddd�}|j}|t dd�ks$t‚t j}|t dd�ks<t‚d S )Né   é   rø   r   )r‘   )r
   rv   r   )r    r!   rl   r$   r$   r%   Útest_resolution_deprecated‹  s
    z)TestTimedeltas.test_resolution_deprecatedN)/r=   r>   r?   r+   ÚmarkÚparametrizerƒ   r‡   rˆ   r•   r–   rš   r\   rj   ÚlistÚpdÚIndexr¼   r¿   rÁ   rÄ   rÆ   r
   rÔ   rÕ   rÛ   Zxfailr   ÚstZintegersr   r   ró   rÌ   rØ   r×   rà   rá   râ   rë   rì   rí   rò   rô   rö   rù   rü   r$   r$   r$   r%   r�   N  s´   ýþ
	J	ÿþþþðþã.þÒ?þÁþS

	ýýýéþ

 ÿ$
2		r�   zvalue, expectedZ10STz-10Srz   r   r|   Fr   c                 C   s   t | ƒ|kst‚d S rB   )Úboolr   )r   r4   r$   r$   r%   Útest_truthiness—  s    r  c                  C   sZ   t ddd�} | jd }|| j7 }|d9 }|| j7 }|d9 }|| j7 }| j}||ksVt‚d S )Nl   €?2\BT, r   r|   r6   r   r   )r
   r   r�   r0   r‘   r   r   )r!   rl   r4   r$   r$   r%   Ú"test_timedelta_attribute_precision¨  s    



r  c               	   C   s`   t ddd�} tjtdd�� | j}W 5 Q R X |d ks8t‚tjtdd�� t	 
¡ | _W 5 Q R X d S )Né"Ì[r   r|   zTimedelta.freqr(   úis not writable)r
   r„   Úassert_produces_warningÚFutureWarningrÍ   r   r+   r,   r’   r   r¢   )r!   rÍ   r$   r$   r%   Útest_freq_deprecatedµ  s    r
  c               	   C   sP   t ddd�} tjtdd�� | j W 5 Q R X tjtdd�� d| _W 5 Q R X d S )Nr  r   r|   zTimedelta.is_populatedr(   r  r   )r
   r„   r  r	  Zis_populatedr+   r,   r’   ©r!   r$   r$   r%   Útest_is_populated_deprecatedÁ  s
    r  c               	   C   s0   t ddd�} tjtdd�� | j W 5 Q R X d S )Nr  r   r|   zTimedelta.delta isr(   )r
   r„   r  r	  Údeltar  r$   r$   r%   Útest_delta_deprecatedË  s    r  )(Ú__doc__Údatetimer   Z
hypothesisr   r   r  Únumpyr\   r+   Zpandas._libsr   Zpandas._libs.tslibsr   r   Zpandas._libs.tslibs.dtypesr   Zpandas.errorsr	   Zpandasr   r
   r   r   r   Zpandas._testingZ_testingr„   r   r@   rx   ry   r�   rý   rþ   r  r  r
  r  r  r$   r$   r$   r%   Ú<module>   sJ   J =    M


ùþ

