U
    ¾mœdB€  ã                   @   s<  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 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S )!z test the scalar Timedelta é    )Ú	timedelta)ÚgivenÚ
strategiesN)Úlib)ÚNaTÚiNaT)ÚNpyDatetimeUnit)ÚOutOfBoundsTimedelta)Ú	TimedeltaÚTimedeltaIndexÚ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Ú_cresor   Ú	NPY_FR_usÚvalueÚ	NPY_FR_msÚNPY_FR_s)ÚselfÚtdÚresÚrt© r$   úe/home/sam/Atlas/atlas_env/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ú>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   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,   r-   Ú
ValueError©r    r!   r"   Úexpectedr$   r$   r%   Útest_as_unit_roundingG   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_nanoT   s    
z TestAsUnit.test_as_unit_non_nanoN)Ú__name__Ú
__module__Ú__qualname__r&   r/   r6   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_strg   s    zTestNonNano.unit_strc                 C   s   d|› �}t t|ƒjS )NZNPY_FR_)Úgetattrr   r   )r    rF   Úattrr$   r$   r%   Úunitk   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    rI   r   r   r$   r$   r%   Úvalq   s    
zTestNonNano.valc                 C   s   t  ||¡S rC   )r
   r+   )r    rI   rJ   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    rI   rJ   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 rC   )Úabsr   r   )r    r!   rI   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!   rI   r"   r5   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!   rI   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   rI   )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 )NrK   r   )Úto_pytimedeltar   Útyper   r4   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   r   Údtyper   r   rQ   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 | ¡ | }| ¡ | ¡  }||ks|t ‚t dtj	j
¡}t dtjj
¡}|| }|dks°t ‚|| }|dksÄt ‚d S )Nr   ç      @z?Cannot cast 106752 days 00:00:00 to unit='ns' without overflow.r)   é2   gü©ñÒMbP?r   ©r   r
   r   r,   r-   r	   rU   r+   r   r   r   r   )	r    r!   rS   r.   r"   r5   ÚleftÚrightÚresultr$   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 ©NrP   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 | ¡ | }|dkslt ‚t dtj	j
¡}t dtjj
¡}|| }|dks t ‚|| }|dks´t ‚d S )	Nr   rb   rP   r(   r)   r   i‚Ã  rc   rd   )r    r!   rS   r.   r"   re   rf   rg   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 ri   )r]   rj   r   r   r   r   Úarrayr<   r$   r$   r%   Útest_floordiv_numericî   s    z!TestNonNano.test_floordiv_numericc              	   C   sX  t dd� d¡}|| }|j|jks(t‚|j|jd ks<t‚|| }|j|jksTt‚|j|jd ksht‚|| }|j|jks€t‚|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   r   iô  r(   r)   )r
   r   r   r   r   r,   r-   r	   )r    r!   rS   rg   Zother2r.   r$   r$   r%   Útest_addsub_mismatched_reso  s.    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 rC   )Úmaxr   r   r   r]   ÚiinfoÚint64rr   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 rp   )r
   r+   r   Ú
resolutionr   )r    r!   r5   rg   r$   r$   r%   Útest_resolution.  s    zTestNonNano.test_resolutionN)r>   r?   r@   r,   ZfixturerF   rI   rJ   r!   rL   rN   rO   rR   rT   rW   ra   rh   rk   rl   rn   ro   rs   rw   ry   r$   r$   r$   r%   rA   f   s.   



!rA   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 rp   )r
   rq   r   r   r   r   r   Z	NPY_FR_nsr   rt   r]   ru   rv   rx   r$   r$   r$   r%   Ú'test_timedelta_class_min_max_resolution5  s    rz   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©rI   zbad operand type for unary ~r)   z0ufunc 'invert' not supported for the input types)r
   r,   r-   Ú	TypeErrorrU   rZ   )r    r!   r.   Zumsgr$   r$   r%   Útest_invertC  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 )Nr|   r}   r~   éöÿÿÿz-10dZ10d)r
   r   rM   rr   r$   r$   r%   Útest_unary_opsR  s    z$TestTimedeltaUnaryOps.test_unary_opsN)r>   r?   r@   r€   r‚   r$   r$   r$   r%   r{   B  s   r{   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    rI   r   r5   rg   r$   r$   r%   Ú&test_rounding_on_int_unit_constructiona  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_equalr9   r]   rj   Úisnanr   )r    ÚrngZexptr$   r$   r%   Útest_total_seconds_scalarp  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 )Nr|   r}   r~   z1 days, 10:11:12.012345r   z1 days, 10:11:12.012345678)	r
   rU   r   r\   r   r]   r^   r   rZ   )r    r!   ZpydtZtd64r$   r$   r%   Útest_conversiony  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 rC   )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 '{}'r:   r)   Úminutesr2   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   Úsecondsr1   Únanosecondsr,   r-   ÚAttributeErrorÚformatr:   r�   r2   r
   rM   r„   r   r8   )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    r5   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ÚMrv   rj   )r   r[   r`   Úkindr   Úastyper   )r    rg   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DaysZDayc                 C   s   g | ]}|d f‘qS )Úmr$   rž   r$   r$   r%   r    è  s   ÿ)	r¤   Úminuterq   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   r2   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   r1   Ú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 ƒ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>é   úm8[ns])r`   r~   c                    s   g | ]}|› ˆ › �‘qS r$   r$   )rŸ   Úxr~   r$   r%   r    E  s     rP   ztimedelta64[ns]Ú2)r   r]   ZarangeÚtolistr   Úranger†   Zassert_index_equalr
   r^   r›   r   )r    rI   r·   rµ   r5   rg   Zstr_reprr$   )r·   rI   r%   Útest_unit_parserä  s,    WþzTestTimedeltas.test_unit_parserrI   Ú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)   r|   r   rP   )r,   r-   r3   r
   r   )r    rI   r.   r$   r$   r%   Útest_unit_m_y_raisesW  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   r|   r~   r   r   r   r}   r¢   )r
   r]   r^   r   ©r    r$   r$   r%   Útest_numeric_conversionsc  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   r¹   r0   r   r   r¢   )r
   r   r]   r^   r›   r   rÂ   r$   r$   r%   Útest_timedelta_conversionsm  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)   rY   T)Úcopy)r
   rZ   r[   r   r,   r-   r3   )r    r!   r.   r$   r$   r%   Útest_to_numpy_aliasv  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_round‚  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-   r3   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
   rq   Úceilr   rt   Úfloorr,   r-   ÚOverflowErrorÚjoin)r    rg   r5   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)rJ   Ú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   rq   l    XŽp7 Úhl     qar¢   l     ž"R: )r]   rv   r
   r   rM   r   )r    rJ   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Ê   rq   rË   z1 days 02:34:00)r
   r   rÍ   r   r   rÙ   rØ   )r    rI   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 )Nr|   r}   r~   )r
   r\   r   r   rr   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Ú10r|   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-   r3   )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è   8  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-   r3   )r    rè   Zd1r.   r$   r$   r%   Útest_full_format_converters7  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_pickleU  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   rP   c                 S   s    g | ]}t d d�t |d� ‘qS )r   rÄ   r   )r
   )rŸ   r³   r$   r$   r%   r    c  s     z?TestTimedeltas.test_timedelta_hash_equality.<locals>.<listcomp>é   c                 s   s"   | ]}t |ƒt | ¡ ƒkV  qd S rC   )ÚhashrU   )rŸ   r!   r$   r$   r%   Ú	<genexpr>d  s     z>TestTimedeltas.test_timedelta_hash_equality.<locals>.<genexpr>r   )r
   r   rð   r   r½   ÚallrU   )r    rç   r!   r}   ZtdsZns_tdr$   r$   r%   Útest_timedelta_hash_equalityZ  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)   rP   zACannot cast -9223372036854775809 from ns to 'ns' without overflowz@Cannot cast 9223372036854775808 from ns to 'ns' without overflow)r
   rq   rt   r   r   r   r   Úi8maxr   r,   r-   rÚ   r	   )r    Zmin_tdZmax_tdr.   r!   r$   r$   r%   Útest_implementation_limitsj  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
   r9   r   rÂ   r$   r$   r%   Útest_total_seconds_precision‰  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   r:   rÌ   )r   r�   r§   )r   r’   rª   )r   r2   r¬   )r   r1   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
   rx   r   )r    r!   rg   r$   r$   r%   Útest_resolution_deprecated›  s
    z)TestTimedeltas.test_resolution_deprecatedN)/r>   r?   r@   r,   ÚmarkÚparametrizer…   r‰   rŠ   r—   r˜   rœ   r]   rm   Ú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ƒ   `  s´   ýþ
	J	ÿþþþðþã.þÒ?þÁþS

	ýýýéþ
	 ÿ$
2		rƒ   zvalue, expectedZ10STz-10Sr|   r   r~   Fr�   c                 C   s   t | ƒ|kst‚d S rC   )Úboolr   )r   r5   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~   r7   r   r   )r
   r   r’   r1   r“   r   r   )r!   rg   r5   r$   r$   r%   Ú"test_timedelta_attribute_precision¸  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   Zpandas._testingZ_testingr†   r   rA   rz   r{   rƒ   rþ   rÿ   r  r  r$   r$   r$   r%   Ú<module>   sD   J P    K


ùþ
