a
    ž
žd5  ć                   @   s
  d Z ddlZddlZddlZddlZddlZddlZddlm	Z	m
Z
mZ ddlmZ ddlmZmZ ddlmZ ddlmZmZmZ ddlmZmZ e d	”Ze d
”Zdd ZdZdZee 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-d. Z0d/d0 Z1d1d2 Z2d3d4 Z3G d5d6 d6eZ4ej5Z6ej7Z8G d7d8 d8eZ9G d9d: d:eZ:G d;d< d<e:Z;G d=d> d>eZ<G d?d@ d@e<Z=G dAdB dBeZ>G dCdD dDeZ?G dEdF dFeZ@eAdGkre B”  dS )Hz0
Test np.datetime64 and np.timedelta64 support.
é    N)ŚjitŚ	vectorizeŚnjit)Śnumpy_version)ŚtypesŚconfig)ŚTypingError)ŚTestCaseŚtagŚskip_parfors_unsupported)Śnpdatetime_helpersŚnumpy_supportztimedelta64[M]ztimedelta64[Y]c                 C   s   t  | j”}|jS ©N)r   Z
from_dtypeŚdtypeŚunit)ŚvalŚty© r   śd/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/numba/tests/test_npdatetime.pyŚ
value_unit   s    r   )ŚYŚM)ŚWŚDŚhŚmŚsŚmsŚusŚnsŚpsŚfsŚasc                 C   s   | | S r   r   ©ŚxŚyr   r   r   Śadd_usecase%   s    r&   c                 C   s   | | S r   r   r#   r   r   r   Śsub_usecase(   s    r'   c                 C   s   | | S r   r   r#   r   r   r   Śmul_usecase+   s    r(   c                 C   s   | | S r   r   r#   r   r   r   Śdiv_usecase.   s    r)   c                 C   s   | | S r   r   r#   r   r   r   Śfloordiv_usecase1   s    r*   c                 C   s   | |kS r   r   r#   r   r   r   Ś
eq_usecase4   s    r+   c                 C   s   | |kS r   r   r#   r   r   r   Ś
ne_usecase7   s    r,   c                 C   s   | |k S r   r   r#   r   r   r   Ś
lt_usecase:   s    r-   c                 C   s   | |kS r   r   r#   r   r   r   Ś
le_usecase=   s    r.   c                 C   s   | |kS r   r   r#   r   r   r   Ś
gt_usecase@   s    r/   c                 C   s   | |kS r   r   r#   r   r   r   Ś
ge_usecaseC   s    r0   c                 C   s   | 
 S r   r   ©r$   r   r   r   Śpos_usecaseF   s    r2   c                 C   s   |  S r   r   r1   r   r   r   Śneg_usecaseI   s    r3   c                 C   s   t | S r   )Śabsr1   r   r   r   Śabs_usecaseL   s    r5   c                 C   s   t | S r   )Śhashr1   r   r   r   Śhash_usecaseO   s    r7   c                 C   s
   t | |S r   ©Śminr#   r   r   r   Śmin_usecaseR   s    r:   c                 C   s
   t | |S r   ©Śmaxr#   r   r   r   Śmax_usecaseU   s    r=   c                 C   s   t | S r   )Śintr1   r   r   r   Śint_cast_usecaseX   s    r?   c                    s    fdd}|S )Nc                    s   |   S r   r   r1   ©Śconstr   r   Śadd_constant\   s    z'make_add_constant.<locals>.add_constantr   )rA   rB   r   r@   r   Śmake_add_constant[   s    rC   c                   @   s8   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d ZdS )ŚTestModuleHelpersz?
    Test the various helpers in numba.npdatetime_helpers.
    c                    s²   t j t tt”D ]4\}}  ||||f”   ||||f” qtD ]$}  |d”   d|” qLtd D ]}  ||” qz fdd}|t |t d S )NŚ ©rE   c                    sH   t | D ]:\}}| d | D ]$}  ||”   ||” qqd S r   )Ś	enumerateŚ
assertTrueŚassertFalse©ŚgroupŚiŚaŚb©ŚfŚselfr   r   Ścheck_units_groupq   s    zDTestModuleHelpers.test_can_cast_timedelta.<locals>.check_units_group)	r   Zcan_cast_timedelta_unitsŚ	itertoolsŚproductŚ
date_unitsŚ
time_unitsrI   Ś	all_unitsrH   )rQ   rM   rN   r   rR   r   rO   r   Śtest_can_cast_timedeltaf   s    z)TestModuleHelpers.test_can_cast_timedeltac                    sę   t j td D ]}  ||d” qtD ]}  d|d” q*t tt”D ],\}}  ||d ”   ||d ” qN fdd}|t |t   ddd”   d	d
d”   d	dd”   d	dd” d S )NrF   é   rE   c                    sR   t | D ]D\}}| d | D ].}  ||d||f”   ||d ” qqd S )NrY   )rG   ZassertGreaterŚassertIsrJ   rO   r   r   rR      s    zFTestModuleHelpers.test_timedelta_conversion.<locals>.check_units_groupr   r   é   r   r   éØ   r   i`'  r   l     Ē!3)	r   Zget_timedelta_conversion_factorrW   ŚassertEqualrS   rT   rV   rU   rZ   )rQ   r   rM   rN   rR   r   rO   r   Śtest_timedelta_conversion|   s    z+TestModuleHelpers.test_timedelta_conversionc                    sņ  t j  fdd}t tt”D ]\}}||| q t tt”D ]\}} || q@t tt”D ]\}} || q`t tt”D ]\}} || qtD ]F}  |||ddf”   |d|ddf”   d|d” q  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d”   dd
d”   ddd”   dd
d”   ddd”   ddd” d S )Nc                    s8     t”  | | W d    n1 s*0    Y  d S r   )ŚassertRaisesŚRuntimeError)Śdt_unitŚtd_unitrO   r   r   Ścheck_error   s    zFTestModuleHelpers.test_datetime_timedelta_scaling.<locals>.check_errorrY   rE   )rE   rY   rY   r   r   )r   r[   rY   )r   rY   r[   r   r   )r   é   rY   )r   rY   rd   r   )r   é:	 rY   )r   rY   re   r"   )r"   ģ     ČNĪZorY   )r"   rY   rf   )r   é±: é  )r   rg   iš
  )r   rg   éĄ  )r   rg   i@  )r   ģ   YĄ` rh   )r   rj   ri   )r   Z!get_datetime_timedelta_conversionrS   rT   rV   rU   rW   r]   )rQ   rc   ra   rb   r   r   rO   r   Śtest_datetime_timedelta_scaling   s:    z1TestModuleHelpers.test_datetime_timedelta_scalingc                 C   s¬   t j}tD ]:}|  ||||” |  |d||” |  ||d|” q
|  |ddd” t tt”D ]\}}|  |||d ” qdt tt”D ]\}}|  ||||” qd S )NrE   )	r   Z combine_datetime_timedelta_unitsrW   r]   rS   rT   rV   rU   rZ   )rQ   rP   r   ra   rb   r   r   r   Ś%test_combine_datetime_timedelta_units¼   s    z7TestModuleHelpers.test_combine_datetime_timedelta_unitsc                 C   s®   t j}tD ]}|  |||” q
d}d}t ||”D ]\}}|  |||” q4t ||”D ]\}}|  |||” qZt ||”D ](\}}|  |||” |  |||” qd S )N)r   r   r   r   )	r   r   r   r   r   r   r    r!   r"   )r   Ś	same_kindrW   rH   rS   rT   rI   )rQ   rP   ŚuŚAŚBrM   rN   r   r   r   Śtest_same_kindČ   s    z TestModuleHelpers.test_same_kindN)	Ś__name__Ś
__module__Ś__qualname__Ś__doc__rX   r^   rk   rl   rq   r   r   r   r   rD   a   s   'rD   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
ŚTestMiscCompilingc                    s@    fdd}t  d”t  d”t  d”}|| d}|| d S )Nc                    s@   t | ddt}tddtddf}t| }  || |” d S )NT©ZnopythonrY   r   é   r   )r   r&   ŚDTŚTDŚassertPreciseEqual)ŚsigrP   ŚargsŚexpected©rQ   r   r   Ś_check_explicit_signatureŽ   s    zPTestMiscCompiling.test_jit_explicit_signature.<locals>._check_explicit_signaturer   r   z5NPDatetime('us')(NPDatetime('ms'), NPTimedelta('us')))r   Z
NPDatetimeŚNPTimedelta©rQ   r   r|   r   r   r   Śtest_jit_explicit_signatureŻ   s
    z-TestMiscCompiling.test_jit_explicit_signaturec                    s<    fdd}t  d”t  d”t j}|| d}|| d S )Nc                    s0   t | gddt}  |tddtd” d S )NTrw   rx   é   é   )r   r(   r{   rz   )r|   rP   r   r   r   r   ķ   s    zVTestMiscCompiling.test_vectorize_explicit_signature.<locals>._check_explicit_signaturer   z)NPTimedelta('s')(NPTimedelta('s'), int64))r   r   Śint64r   r   r   r   Ś!test_vectorize_explicit_signatureģ   s
    z3TestMiscCompiling.test_vectorize_explicit_signaturec                    s*    fdd}|t d |t dd d S )Nc                    s<   t | }tdd|}tdd}||}  |||” d S ©NTrw   é   r   ©rC   r   rz   r{   ©rA   ŚpyfuncrP   r$   r~   r   r   r   Ścheckü   s
    
z7TestMiscCompiling.test_constant_datetime.<locals>.checkz
2001-01-01ŚNaTr   ©ry   ©rQ   r   r   r   r   Śtest_constant_datetimeū   s    z(TestMiscCompiling.test_constant_datetimec                    s:    fdd}|t dd |t dd |t dd d S )Nc                    s<   t | }tdd|}tdd}||}  |||” d S r   r   r   r   r   r   r     s
    
z8TestMiscCompiling.test_constant_timedelta.<locals>.checkr   r   éü’’’r   )rz   r   r   r   r   Śtest_constant_timedelta  s    z)TestMiscCompiling.test_constant_timedeltaN)rr   rs   rt   r   r   r   r   r   r   r   r   rv   Ū   s   
rv   c                   @   s   e Zd Ze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!d" Zd#S )$ŚTestTimedeltaArithmeticT©Zforceobjc                 C   s   t f i | j¤|S r   ©r   Śjitargs©rQ   r   r   r   r   r     s    zTestTimedeltaArithmetic.jitc                    s(    t”  fdd}|tdtdtd |tddtddtdd |tddtddtdd |tdd	tdd
tdd
 |tdtdtd |tddtdd
tdd |tddtddtdd  ttf”&  tddtdd
 W d    n1 s0    Y  d S )Nc                    s(      | ||”    || |” d S r   ©r{   ©rM   rN   r~   rO   r   r   r     s    z/TestTimedeltaArithmetic.test_add.<locals>.checkrY   rx   r   r   r   iBB r   r   é	   r   r   r   )r   r&   rz   r_   Ś	TypeErrorr   r   r   rO   r   Śtest_add  s    
z TestTimedeltaArithmetic.test_addc                    s(    t”  fdd}|tdtdtd |tddtddtdd |tddtddtdd |tdd	tdd
tdd
 |tdtdtd |tddtdd
tdd |tddtddtdd  ttf”&  tddtdd
 W d    n1 s0    Y  d S )Nc                    s*      | ||”    || | ” d S r   r   r   rO   r   r   r   -  s    z/TestTimedeltaArithmetic.test_sub.<locals>.checkr   rx   rY   r   r   i¾Ę- r   r   é   r   r   r   )r   r'   rz   r_   r   r   r   r   rO   r   Śtest_sub+  s    
z TestTimedeltaArithmetic.test_subc                    s    t”  fdd}|tdt d”td |tddtd |tdddtdd |tdddtdd |tdd	td
 |tdd	td |tdddtdd |tddtd
 |tdddtdd |tddtdtdd |tdddtdd d S )Nc                    s(      | ||”    || |” d S r   r   r   rO   r   r   r   @  s    z/TestTimedeltaArithmetic.test_mul.<locals>.checkr   rx   r   r    r   rd   ē      ų?é
   éł’’’iö’’’g      ųæŚnanl            é   r   )r   r(   rz   ŚnpŚuint32Śfloatr   r   rO   r   Śtest_mul>  s    
z TestTimedeltaArithmetic.test_mulc                    sf    t”   t” fdd}|tddt d”tdd |tddtd |tdddtdd |td	ddtd	d |tddd
td	d |td	dd
td	d |tddtd |tdddtdd |td	ddtd	d |tdddtd	d |td	ddtd	d |tddtdtd	d |td	dtdtd	d d S )Nc                    s(      | ||”   | ||” d S r   r   r   ©ŚdivŚfloordivrQ   r   r   r   W  s    z/TestTimedeltaArithmetic.test_div.<locals>.checkéż’’’r    rx   é’’’’r   rY   r   r   rd   g      ą?é   r¢   r    r   g      @g        r£   )r   r)   r*   rz   r„   r¦   r§   r   r   r©   r   Śtest_divT  s     

z TestTimedeltaArithmetic.test_divc                    s6    t”  fdd}|tdtdd |tddtddd |tddtddd	 |tdtd
td |tdtd
td |td
td
td |tdtdtd |tdtdtd |tdtd
td  ttf”&  tddtdd W d    n1 s(0    Y  d S )Nc                    s      | ||” d S r   r   r   ©rŖ   rQ   r   r   r   n  s    z;TestTimedeltaArithmetic.test_homogeneous_div.<locals>.checkrd   r   g«ŖŖŖŖŖ@r   r   gQFoĖZc?g«ŖŖŖŖ:¢@r   z+infr¢   z-infr£   ZnatrY   r   r   )r   r)   rz   r§   r_   r   r   r   r   r°   r   Śtest_homogeneous_divl  s    
z,TestTimedeltaArithmetic.test_homogeneous_divc                    sP    t”   t” fdd}|tdtdd |tdtdd |tddtddd |tddtddd |tddtddd |tdd	tddd |tdd
tddd |tdtdd |tdd	tddd |tdtdd |tdd
tddd |tdd
tddd |tddtddd d S )Nc                    sr   |}| }t  | ”st  | ”r&d}d}  | ||”   || |”  | ||”  || |” d S ©NFT©r„   Śisnatr{   ©rM   rN   r~   Śexpected_valŚnot_expected_val©ŚeqŚnerQ   r   r   r     s    z1TestTimedeltaArithmetic.test_eq_ne.<locals>.checkrY   rx   FTr   iŠ  r   r   r[   r   ŚNatém  r   in  r   r   )r   r+   r,   rz   r   r   rø   r   Ś
test_eq_ne  s     

z"TestTimedeltaArithmetic.test_eq_nec                    s4    t”  t”  fdd}|tdtdd |tdtdd |tdtdd |tddtddd |tddtddd |tddtddd |tddtd	dd |tddtd
dd |tdtdd |tddtddd |tdtdd  ttf”& tddtdd W d    n1 sT0    Y   ttf”&  tddtdd W d    n1 s0    Y   ttf”& tddtdd W d    n1 są0    Y   ttf”&  tddtdd W d    n1 s&0    Y  d S )Nc                    sN   |}| }t  | ”st  | ”r&d}d} | ||”   | ||” d S ©NFr³   rµ   ©ŚgeŚltrQ   r   r   r   ¦  s    z1TestTimedeltaArithmetic.test_lt_ge.<locals>.checkrY   rx   TFr   r   é=   é<   r»   r   ģū’’’’’’’ r   r¼   r   r   )r   r-   r0   rz   r_   r   r   r   r   ræ   r   Ś
test_lt_ge£  s,    

666z"TestTimedeltaArithmetic.test_lt_gec                    sL    t”  t”  fdd}|tdtdd |tdtdd |tdtdd |tddtddd |tddtddd |tddtddd |tddtd	dd |tddtd
dd |tddtddd |tdtdd |tddtddd |tdtdd  ttf”& tddtdd W d    n1 sl0    Y   ttf”&  tddtdd W d    n1 s²0    Y   ttf”& tddtdd W d    n1 sų0    Y   ttf”&  tddtdd W d    n1 s>0    Y  d S )Nc                    sN   |}| }t  | ”st  | ”r&d}d} | ||”   | ||” d S r¾   r³   rµ   ©ŚgtŚlerQ   r   r   r   Ķ  s    z1TestTimedeltaArithmetic.test_le_gt.<locals>.checkrY   rx   TFr   r   rĀ   rĆ   é;   r»   r   rÄ   r   r¼   r   r   )r   r.   r/   rz   r_   r   r   r   r   rĘ   r   Ś
test_le_gtŹ  s.    

666z"TestTimedeltaArithmetic.test_le_gtc                    sj     t”  fdd}|td |td |tdd |tdd |td |tdd d S )Nc                    s      | | 
 ” d S r   r   ©rM   ©ŚposrQ   r   r   r   ó  s    z/TestTimedeltaArithmetic.test_pos.<locals>.checkr   r   r   r   )r   r2   rz   r   r   rĢ   r   Śtest_posń  s    
z TestTimedeltaArithmetic.test_posc                    sj     t”  fdd}|td |td |tdd |tdd |td |tdd d S )Nc                    s      | |  ” d S r   r   rĖ   ©ŚnegrQ   r   r   r   ’  s    z/TestTimedeltaArithmetic.test_neg.<locals>.checkr   r   r   r   )r   r3   rz   r   r   rĻ   r   Śtest_negż  s    
z TestTimedeltaArithmetic.test_negc                    sj     t”  fdd}|td |td |tdd |tdd |td |tdd d S )Nc                    s      | t| ” d S r   )r{   r4   rĖ   rO   r   r   r     s    z/TestTimedeltaArithmetic.test_abs.<locals>.checkr   r   r   r   )r   r5   rz   r   r   rO   r   Śtest_abs	  s    
z TestTimedeltaArithmetic.test_absc                    s`     t”  fdd}d}d}t|| tft| tft|  D ]\}}|||  qFd S )Nc                    s      | t| ” d S r   )r{   r6   rĖ   rO   r   r   r     s    z0TestTimedeltaArithmetic.test_hash.<locals>.check))r   )r   )r   r   )r   r   )é   r   )rx   r   )rx   r   )rx   r   )r   r   )r¼   r   )é'  r   )éšŲ’’r   ©r   )r   r   )r   r   )r­   ))Ś2014)Ś2016)Ś2000)ś2014-02)ś2014-03)ś2014-04)ś2016-02)ś
2000-12-31)ś
2014-01-16)ś
2014-01-05)ś
2014-01-07)ś
2014-01-06)ś
2014-02-02)ś
2014-02-27)ś
2014-02-16)ś
2014-03-01)ś2000-01-01T01:02:03.002Z)ś2000-01-01T01:02:03ZrÖ   )r   r7   Śziprz   Ślenry   )rQ   r   ZTD_CASESZDT_CASESZcaseŚtypr   rO   r   Ś	test_hash  s    
’z!TestTimedeltaArithmetic.test_hashc                    s     ”  fdd}tdtdtdtdftddtddtddtddffD ]$}t ||”D ]\}}||| qjqZd S )Nc                    s      | || |” d S r   r   ©rM   rN   ©rP   rQ   Śusecaser   r   r   +  s    z4TestTimedeltaArithmetic._test_min_max.<locals>.checkr   rY   rx   r   r   )r   rz   rS   rT   ©rQ   rļ   r   ZcasesrM   rN   r   rī   r   Ś_test_min_max)  s    
"žz%TestTimedeltaArithmetic._test_min_maxc                 C   s   |   t” d S r   ©rń   r:   r   r   r   r   Śtest_min5  s    z TestTimedeltaArithmetic.test_minc                 C   s   |   t” d S r   ©rń   r=   r   r   r   r   Śtest_max8  s    z TestTimedeltaArithmetic.test_maxN)rr   rs   rt   Śdictr   r   r   r   rØ   rÆ   r±   r½   rÅ   rŹ   rĪ   rŃ   rŅ   rģ   rń   ró   rõ   r   r   r   r   r     s"   
#''r   c                   @   s   e Zd ZeddZdd ZdS )ŚTestTimedeltaArithmeticNoPythonTrw   c                    s     t”  fdd}dD ]\}}|t|| d” qdD ]}|t| d” q>jtdd  td	 W d    n1 s0    Y  d S )
Nc                    s      | t| ” d S r   )r{   r>   rĖ   rO   r   r   r   B  s    z<TestTimedeltaArithmeticNoPython.test_int_cast.<locals>.check))r   r   )r   r   )i0u  r   )i ¦żr   )rY   r   ztimedelta64[ns])r×   rŲ   rŁ   rŚ   rŪ   rÜ   rŻ   rŽ   rß   rą   rį   rā   rć   rä   rå   rę   rē   rč   śdatetime64[ns]z;Only datetime64[ns] can be converted, but got datetime64[y])Śmsgr×   )r   r?   rz   Śastypery   r_   r   )rQ   r   Śdeltar   Śtimer   rO   r   Śtest_int_cast@  s    
z-TestTimedeltaArithmeticNoPython.test_int_castN)rr   rs   rt   rö   r   rż   r   r   r   r   r÷   <  s   
r÷   c                   @   sd   e Zd ZeddZ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S )ŚTestDatetimeArithmeticTr   c                 C   s   t f i | j¤|S r   r   r   r   r   r   r   Z  s    zTestDatetimeArithmetic.jitc                 c   sB   t  ” & t jddtd d V  W d    n1 s40    Y  d S )NŚignorez-Implicitly casting between incompatible kinds)ŚmessageŚcategory)ŚwarningsŚcatch_warningsŚfilterwarningsŚDeprecationWarningr   r   r   r   Śsilence_numpy_warnings]  s    
žz-TestDatetimeArithmetic.silence_numpy_warningsc                    sÖ    t”   t” fdd}|tdtddtd |tdtddtd |tdtd	d
tdd
 |tdtddtd |tdtddtd |tdtddtd |tdtddtd |tdtddtd |tdd
tdd
tdd
 |tdtddtd |tdtddtd |tdtdd
td |tdtddtd |tdtdd td! d"D ]š}d#D ]ä}t|| }tddtdd
td$dtd%dtd&dtd'dtd$d
td%d
td&d
td'd
td$dtd%dtd&dtd'dfD ]\}  |||| ||f”   |||| ||f”  || || ||f” q&q¢q|td(tdtd( |td(d)tddtd(d) |td(d)tdd td(d  |tdtd(d
td(d
 |td*td(d
td(d |td(d)td(d td(d   fD ]} ttf”& |td+d*td+d W d,   n1 s~0    Y   ttf”& |td+d*td+d W d,   n1 sÄ0    Y  q>d,S )-zQ
        Test `datetime64 + timedelta64` and `datetime64 - timedelta64`.
        c                    s     ” j   | ||| |f”   || || |f”  | | || |f”  | | |” W d    n1 sx0    Y  d S r   ©r  r{   r   ©ŚaddrQ   Śsubr   r   r   m  s
    
z<TestDatetimeArithmetic.test_add_sub_timedelta.<locals>.checkr×   rx   r   rŲ   r   rŪ   r   r   rß   r   r   rą   rŁ   r¼   rŽ   rŚ   rŻ   rÜ   z
2014-02-03rį   rć   rÓ   rę   z
2012-02-02z
2012-02-29z
2012-02-16rč   r   z2000-01-01T03:02:03Zr   rē   )Ś600Ś601Ś604Z801Z1900Z1904Z2200Z2300Z2304Ś2400Z6001)rE   ś-01ś-12éd   rŌ   i’’’rÕ   r   r   ś
2014-01-01rY   N)	r   r&   r'   ry   rz   r]   r_   r   r   )rQ   r   Zdt_strZ	dt_suffixŚdtŚtdrP   r   r  r   Śtest_add_sub_timedeltag  sT    

	ś*6z-TestDatetimeArithmetic.test_add_sub_timedeltac                 C   s<   g d¢}g d¢}dd t  ||”D }|dd |D 7 }|S )N)r  r  r  Z1968Z1969Z1973rŁ   Z2004Z2005Z2100r  Z2401)rE   r  r  z-02-28z-12-31z-01-05T12:30:56Zz-01-05T12:30:56.008Zc                 S   s   g | ]\}}t || qS r   r   )Ś.0rM   rN   r   r   r   Ś
<listcomp>­  ó    z;TestDatetimeArithmetic.datetime_samples.<locals>.<listcomp>c                 S   s   g | ]}t |d qS )r   r   )r  r   r   r   r   r  ®  r  )rS   rT   )rQ   Zdt_yearsZdt_suffixesŚdtsr   r   r   Śdatetime_samplesØ  s
    z'TestDatetimeArithmetic.datetime_samplesc                    s6     t”d fdd	}|tdtdtdd |tdtd	td
d |tdtdtdd |tddtdtdd |tddtdtdd |tdtdtd   ” `   ” }t ||”D ]:\}}t 	t
|t
|”sōqÖ  |||| ||f” qÖW d   n1 s(0    Y  dS )z1
        Test `datetime64 - datetime64`.
        Nc                    st      ” X   | || | | |f”   || ||  | |f”   | | |” W d    n1 sf0    Y  d S r   r  r   ©rQ   r
  r   r   r   ¶  s    
z>TestDatetimeArithmetic.test_datetime_difference.<locals>.checkr×   Ś2017r¬   r   rŚ   z2017-01iŻ’’’r   z
2014-02-28z
2015-03-01iž’’r   r   rŁ   z
2000-01-01)N)r   r'   ry   rz   r  r  rS   rT   r   rm   r   r{   )rQ   r   r  rM   rN   r   r  r   Śtest_datetime_difference±  s    

z/TestDatetimeArithmetic.test_datetime_differencec           	   	      s    t”  t”  t”  t”  t”  t”fdd  fdd} tdtdd  tdtdd	  tdtd
d	  tdtd
dd	  tdtd
dd	  td
td
dd  tdtddd	  tddtddd	  tddtddd |tddtdd	  tdtdd	  ” }|D ]Ŗ}|j	j
 d”d d d }t |”}t||d  }|D ]j}| d| ”}t t|t|”sŹq ||d	 |||t d|” d	 ||t d|” |d	 qqbd S )Nc                    s4  |}| }t  | ”st  |”rÖd}d} | || |f”  | || |f”  || | |f”  || | |f”  | || |f”  | || |f”  || | |f”  || | |f”  ” >   | ||| ||f”   || || ||f”  | ||| ||f”  || || ||f” |r  | || |f”  | || |f”  || | |f”  || | |f”  | || |f”  | || |f”  || | |f”  || | |f”  | |k|” W d    n1 s&0    Y  d S r²   )r„   r“   rI   r  r{   rH   rµ   )r¹   rĄ   rĒ   rČ   rĮ   rŗ   rQ   r   r   Ścheck_eqÕ  s8    z9TestDatetimeArithmetic.test_comparisons.<locals>.check_eqc                    sä   |}| }t  | ”st  |”r&d}d} ” ¢  t”} || ||| ||f”  || || ||f”  | ||| ||f”  || || ||f” |r² | |d  | |k |” W d    n1 sÖ0    Y  d S r¾   )r„   r“   r  r   r-   r{   )rM   rN   r~   r¶   r·   rĮ   )r  rĄ   rĒ   rČ   rQ   r   r   Ścheck_ltś  s    

z9TestDatetimeArithmetic.test_comparisons.<locals>.check_ltr×   r  Fz2014-01Tr  r   z
2014-01-02rā   z2014-01-01T00:01:00Zr   z2014-01-01T00:01Zr   z2014-01-01T00:01:01Zr   r   ś[rY   r­   r   zM8[%s])r   r+   r,   r-   r.   r/   r0   ry   r  r   ŚstrŚsplitrW   Śindexrś   r   rm   r   r„   Śtimedelta64)	rQ   r  r  rM   Za_unitrL   Zunitsr   rN   r   )r  r¹   rĄ   rĒ   rČ   rĮ   rŗ   rQ   r   Śtest_comparisonsĢ  sJ    





%

’

’

’z'TestDatetimeArithmetic.test_comparisonsc                    s     ”  fdd}tddtddtddtddftddtddtddtddffD ]$}t ||”D ]\}}||| qrqbd S )	Nc                    s      | || |” d S r   r   rķ   rī   r   r   r   4  s    z3TestDatetimeArithmetic._test_min_max.<locals>.checkr   r   rY   rx   r   r   )r   ry   rS   rT   rš   r   rī   r   rń   2  s    
""žz$TestDatetimeArithmetic._test_min_maxc                 C   s   |   t” d S r   rņ   r   r   r   r   ró   >  s    zTestDatetimeArithmetic.test_minc                 C   s   |   t” d S r   rō   r   r   r   r   rõ   A  s    zTestDatetimeArithmetic.test_maxN)rr   rs   rt   rö   r   r   Ś
contextlibŚcontextmanagerr  r  r  r  r%  rń   ró   rõ   r   r   r   r   rž   V  s   

	A	frž   c                   @   s   e Zd ZeddZdS )ŚTestDatetimeArithmeticNoPythonTrw   N)rr   rs   rt   rö   r   r   r   r   r   r(  D  s   r(  c                   @   s0   e Zd ZdZdd Zdd Zdd Zdd	 Zd
S )ŚTestMetadataScalingFactorzf
    Tests than non-1 scaling factors are not supported in datetime64
    and timedelta64 dtypes.
    c                 K   s0   t f i |¤t}|  |tddtd” d S )Nr×   Ś10YZ2010)r   r+   rH   ry   ©rQ   r   r¹   r   r   r   Śtest_datetimeO  s    z'TestMetadataScalingFactor.test_datetimec                 C   s8   |   ”  | jdd W d    n1 s*0    Y  d S ©NTrw   )ŚassertTypingErrorr,  r   r   r   r   Śtest_datetime_npmS  s    
z+TestMetadataScalingFactor.test_datetime_npmc                 K   s2   t f i |¤t}|  |tddtdd” d S )Nrx   r*  é   r   )r   r+   rH   rz   r+  r   r   r   Śtest_timedeltaW  s    z(TestMetadataScalingFactor.test_timedeltac                 C   s8   |   ”  | jdd W d    n1 s*0    Y  d S r-  )r.  r1  r   r   r   r   Śtest_timedelta_npm[  s    
z,TestMetadataScalingFactor.test_timedelta_npmN)rr   rs   rt   ru   r,  r/  r1  r2  r   r   r   r   r)  I  s
   r)  c                   @   s   e Zd Zdd ZdS )ŚTestDatetimeDeltaOpsc                 C   sŽ   dd }|}t |}t dt”t dt”ft dt”t dt”ft dt”t dt”ft dt”t dt”ft dt”dft dt”t dtj”ft dt”t dtj”fg}|D ]&\}}|  t ||||||”” q²dS )zC
        Test the division of a timedelta by numeric types
        c                 S   s   | | S r   r   rķ   r   r   r   Śarr_dive  s    z.TestDatetimeDeltaOps.test_div.<locals>.arr_divr   rY   N)	r   r„   ZonesŚTIMEDELTA_MŚTIMEDELTA_Yr   Śfloat64rH   Śarray_equal)rQ   r4  Śpy_funcŚcfuncŚ
test_casesrM   rN   r   r   r   rÆ   a  s    ł	zTestDatetimeDeltaOps.test_divN)rr   rs   rt   rÆ   r   r   r   r   r3  `  s   r3  c                   @   s¼   e Zd Zdd Zdd Zedd Zdd Ze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edd  Zed!d" Zed#d$ Zed%d& Zd'S )(ŚTestDatetimeArrayOpsc              	      s"   fdd}t jt  d”t  d”t  d”t  d”gdd}t jt  d”t  d”t  d”t  d”gd	d}|}t|d
|}|t  d”f|t  d”f|t  d”f|t  d”fg} t ju rņ| t  d”|ft  d”|ft  d”|ft  d”|fg” |D ]&\}	}
|  t  ||	|
||	|
”” qödS )zY
        Test the addition/subtraction of a datetime array with a timedelta type
        c                    s
    | |S r   r   rķ   ©Ś	operationr   r   Śimpl}  s    z6TestDatetimeArrayOps._test_td_add_or_sub.<locals>.implś
2011-01-01ś
1971-02-02ś
2021-03-03ś
2004-12-07rų   ©r   zdatetime64[D]©Śparalleléč  ić*’’N)	r„   ŚarrayŚ
datetime64r   r$  r	  ŚextendrH   r8  )rQ   r>  rF  r?  Zarr_oneZarr_twor9  r:  r;  rM   rN   r   r=  r   Ś_test_td_add_or_suby  sB    üūüūü
üz(TestDatetimeArrayOps._test_td_add_or_subc                 C   s   |   tjd” d S r¾   ©rK  r„   r	  r   r   r   r   Śtest_add_td  s    z TestDatetimeArrayOps.test_add_tdc                 C   s   |   tjd” d S ©NTrL  r   r   r   r   Śtest_add_td_parallel¢  s    z)TestDatetimeArrayOps.test_add_td_parallelc                 C   s   |   tjd” d S r¾   ©rK  r„   Śsubtractr   r   r   r   Śtest_sub_td¦  s    z TestDatetimeArrayOps.test_sub_tdc                 C   s   |   tjd” d S rN  rP  r   r   r   r   Śtest_sub_td_parallel©  s    z)TestDatetimeArrayOps.test_sub_td_parallelc                    s   t  fdd} j}t d| d”}|  ttf|”4 |tjt 	d”gddt 
dd	” W d
   n1 sr0    Y  d
S )z
        Tests that attempting to add/sub a datetime64 and timedelta64
        with types that cannot be cast raises a reasonable exception.
        c                    s
    | |S r   r   rķ   r=  r   r   r?  ²  s    z<TestDatetimeArrayOps._test_add_sub_td_no_match.<locals>.implzufunc 'z<' is not supported between datetime64[ns] and timedelta64[M]r@  rų   rD  rG  r   N)r   rr   ŚreŚescapeŚassertRaisesRegexr   r   r„   rH  rI  r$  )rQ   r>  r?  Śfnamer~   r   r=  r   Ś_test_add_sub_td_no_match­  s    ’
żz.TestDatetimeArrayOps._test_add_sub_td_no_matchc                 C   s   |   tj” d S r   )rX  r„   r	  r   r   r   r   Śtest_add_td_no_matchĄ  s    z)TestDatetimeArrayOps.test_add_td_no_matchc                 C   s   |   tj” d S r   )rX  r„   rQ  r   r   r   r   Śtest_sub_td_no_matchĆ  s    z)TestDatetimeArrayOps.test_sub_td_no_matchc                    sŗ  |r" t ju rdd }q.dd }n fdd}|}t|d|}t  tddtddtd	dtd
dg”t  tddtddtddtddtddg”t  tddtddtddtddtddg”t  tddtddtddtddtddtddg”t  tddtddtddtddtddtddg”t  tddtddg”t  tddtddtddg”t  tddtd	dtd
dtddg”t  tddtd	dtd
dtddg”t  tddtddtd	dtd
dtddg”t  tddtd	dtd
dtddtddg”t  tddg”t  tddtddtddg”g}|D ]\}||}	||}
t  |	”st  |
”r¦|  t  |	”” |  t  |
”” n|  |	|
” qXd S )Nc                 S   s   |   ” S r   r8   ©Śarrr   r   r   r?  É  s    z0TestDatetimeArrayOps._test_min_max.<locals>.implc                 S   s   |   ” S r   r;   r[  r   r   r   r?  Ģ  s    c                    s    | S r   r   r[  r=  r   r   r?  Ļ  s    rE  r   r   rY   rx   r   r@  rA  z
1900-01-01rB  rC  r   r   r   )	r„   r9   r   rH  ry   rz   r“   rH   r]   )rQ   r>  rF  Śmethodr?  r9  r:  r;  r\  Zpy_resZc_resr   r=  r   rń   Ę  s¼    


üūūśśžżüüūū’żµRz"TestDatetimeArrayOps._test_min_maxc                 C   s   |   tdd” d S r¾   )rń   r9   r   r   r   r   Śtest_min_func0  s    z"TestDatetimeArrayOps.test_min_funcc                 C   s   |   tjdd” d S r¾   ©rń   r„   r9   r   r   r   r   Śtest_np_min_func3  s    z%TestDatetimeArrayOps.test_np_min_funcc                 C   s   |   tjdd” d S r²   r_  r   r   r   r   Śtest_min_method6  s    z$TestDatetimeArrayOps.test_min_methodc                 C   s   |   tdd” d S r¾   )rń   r<   r   r   r   r   Śtest_max_func9  s    z"TestDatetimeArrayOps.test_max_funcc                 C   s   |   tjdd” d S r¾   ©rń   r„   r<   r   r   r   r   Śtest_np_max_func<  s    z%TestDatetimeArrayOps.test_np_max_funcc                 C   s   |   tjdd” d S r²   rc  r   r   r   r   Śtest_max_method?  s    z$TestDatetimeArrayOps.test_max_methodc                 C   s   |   tjdd” d S ©NTFr_  r   r   r   r   Śtest_min_func_parallelB  s    z+TestDatetimeArrayOps.test_min_func_parallelc                 C   s   |   tjdd” d S rN  r_  r   r   r   r   Śtest_min_method_parallelF  s    z-TestDatetimeArrayOps.test_min_method_parallelc                 C   s   |   tjdd” d S rf  rc  r   r   r   r   Śtest_max_func_parallelJ  s    z+TestDatetimeArrayOps.test_max_func_parallelc                 C   s   |   tjdd” d S rN  rc  r   r   r   r   Śtest_max_method_parallelN  s    z-TestDatetimeArrayOps.test_max_method_parallelN)rr   rs   rt   rK  rM  r   rO  rR  rS  rX  rY  rZ  rń   r^  r`  ra  rb  rd  re  rg  rh  ri  rj  r   r   r   r   r<  w  s2   &

j


r<  Ś__main__)Cru   r&  rS   rT  Zunittestr  Śnumpyr„   Znumbar   r   r   Znumba.np.numpy_supportr   Z
numba.corer   r   Znumba.core.errorsr   Znumba.tests.supportr	   r
   r   Znumba.npr   r   r   r5  r6  r   rU   rV   rW   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r2   r3   r5   r7   r:   r=   r?   rC   rD   r$  rz   rI  ry   rv   r   r÷   rž   r(  r)  r3  r<  rr   Śmainr   r   r   r   Ś<module>   sl   

v6  - o ]
