
    sh_                        S r SSKrSSKrSSKrSSKrSSKrSSKrSSKJ	r	J
r
Jr  SSKJr  SSKJrJr  SSKJr  SSKJrJrJr  SSKJrJr  \R4                  " S	5      r\R4                  " S
5      rS rSrSr\\-   r S r!S r"S r#S r$S r%S r&S r'S r(S r)S r*S r+S r,S r-S r.S r/S r0S r1S r2S  r3 " S! S"\5      r4\Rj                  r6\Rn                  r8 " S# S$\5      r9 " S% S&\5      r: " S' S(\:5      r; " S) S*\5      r< " S+ S,\<5      r= " S- S.\5      r> " S/ S0\5      r? " S1 S2\5      r@ " S3 S4\5      rA\BS5:X  a  \R                  " 5         gg)6z0
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                 Z    [         R                  " U R                  5      nUR                  $ N)r   
from_dtypedtypeunit)valtys     o/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/tests/test_npdatetime.py
value_unitr      s    		!	!#))	,B77N    )YM)WDhmsmsusnspsfsasc                 
    X-   $ r    xys     r   add_usecaser+   %   	    5Lr   c                 
    X-
  $ r   r'   r(   s     r   sub_usecaser.   (   r,   r   c                 
    X-  $ r   r'   r(   s     r   mul_usecaser0   +   r,   r   c                 
    X-  $ r   r'   r(   s     r   div_usecaser2   .   r,   r   c                 
    X-  $ r   r'   r(   s     r   floordiv_usecaser4   1   	    6Mr   c                 
    X:H  $ r   r'   r(   s     r   
eq_usecaser7   4   r5   r   c                 
    X:g  $ r   r'   r(   s     r   
ne_usecaser9   7   r5   r   c                 
    X:  $ r   r'   r(   s     r   
lt_usecaser;   :   r,   r   c                 
    X:*  $ r   r'   r(   s     r   
le_usecaser=   =   r5   r   c                 
    X:  $ r   r'   r(   s     r   
gt_usecaser?   @   r,   r   c                 
    X:  $ r   r'   r(   s     r   
ge_usecaserA   C   r5   r   c                     U 7$ r   r'   r)   s    r   pos_usecaserD   F   	    2Ir   c                     U * $ r   r'   rC   s    r   neg_usecaserG   I   rE   r   c                     [        U 5      $ r   )absrC   s    r   abs_usecaserJ   L       q6Mr   c                     [        U 5      $ r   )hashrC   s    r   hash_usecaserN   O   s    7Nr   c                     [        X5      $ r   minr(   s     r   min_usecaserR   R       q9r   c                     [        X5      $ r   maxr(   s     r   max_usecaserW   U   rS   r   c                     [        U 5      $ r   )intrC   s    r   int_cast_usecaserZ   X   rK   r   c                    ^  U 4S jnU$ )Nc                    > U T-   $ r   r'   )r)   consts    r   add_constant'make_add_constant.<locals>.add_constant\   s    5yr   r'   )r]   r^   s   ` r   make_add_constantr`   [   s    r   c                   6    \ rS rSrSrS rS rS rS rS r	Sr
g	)
TestModuleHelpersa   z7
Test the various helpers in numba.npdatetime_helpers.
c                   ^ ^ [         R                  m[        R                  " [        [
        5       H7  u  pT R                  T" X5      X45        T R                  T" X!5      X45        M9     [         H3  nT R                  T" US5      5        T R                  T" SU5      5        M5     [        S-    H  nT R                  T" X35      5        M     UU 4S jnU" [        5        U" [
        5        g )N re   c                    > [        U 5       H?  u  pU S U  H1  nTR                  T" X25      5        TR                  T" X#5      5        M3     MA     g r   )	enumerate
assertTrueassertFalsegroupiabfselfs       r   check_units_groupDTestModuleHelpers.test_can_cast_timedelta.<locals>.check_units_groupq   sF    !%(rAOOAaG,$$QqW-	 # )r   )	r   can_cast_timedelta_units	itertoolsproduct
date_units
time_unitsrj   	all_unitsri   )rq   rn   ro   r   rr   rp   s   `    @r   test_can_cast_timedelta)TestModuleHelpers.test_can_cast_timedeltaf   s    77%%j*=DAQqWqf-QqWqf- > DQtR[)OOAb$K(  %DOOAdM* &	. 	*%*%r   c                 z  ^ ^ [         R                  m[        S-    H  nT R                  T" X5      S5        M     [         H  nT R                  T" SU5      S5        M     [        R
                  " [        [        5       H5  u  p#T R                  T" X#5      S 5        T R                  T" X25      S 5        M7     UU 4S jnU" [        5        U" [        5        T R                  T" SS5      S5        T R                  T" SS	5      S
5        T R                  T" SS5      S5        T R                  T" SS5      S5        g )Nrf      re   c                    > [        U 5       HC  u  pU S U  H5  nTR                  T" X25      SX245        TR                  T" X#5      S 5        M7     ME     g )Nr}   )rh   assertGreaterassertIsrk   s       r   rr   FTestModuleHelpers.test_timedelta_conversion.<locals>.check_units_group   sN    !%(rA&&qwA6:MM!A'40 # )r   r   r      r   r      r   i`'  r!   l     !3)	r   get_timedelta_conversion_factorry   assertEqualru   rv   rx   rw   r   )rq   r   rn   ro   rr   rp   s   `    @r   test_timedelta_conversion+TestModuleHelpers.test_timedelta_conversion|   s    >>%DQt]A. &DQr4[!, %%j*=DAMM!A'4(MM!A'4( >	1 	*%*% 	3b)3f-3k23'BCr   c                 ^  ^ ^ [         R                  mUU 4S jn[        R                  " [        [
        5       H  u  p#U" X#5        M     [        R                  " [        [        5       H  u  p#T" X#5        M     [        R                  " [
        [        5       H  u  p#T" X#5        M     [        R                  " [
        [
        5       H  u  p#T" X#5        M     [         HS  nT R                  T" XD5      USS45        T R                  T" US5      USS45        T R                  T" SU5      S5        MU     T R                  T" SS5      S5        T R                  T" SS5      S5        T R                  T" SS5      S5        T R                  T" S	S
5      S5        T R                  T" S
S	5      S5        T R                  T" S	S5      S5        T R                  T" SS	5      S5        T R                  T" SS5      S5        T R                  T" SS5      S5        T R                  T" SS
5      S5        T R                  T" SS	5      S5        T R                  T" SS
5      S5        T R                  T" SS	5      S5        T R                  T" SS5      S5        T R                  T" SS5      S5        g )Nc                 t   > TR                  [        5         T" X5        S S S 5        g ! , (       d  f       g = fr   )assertRaisesRuntimeError)dt_unittd_unitrp   rq   s     r   check_errorFTestModuleHelpers.test_datetime_timedelta_scaling.<locals>.check_error   s%    ""<0'# 100s   	)
7r}   re   )re   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%        NZor}   )r%   r}   r   )r   :   )r   r   i
  )r   r     )r   r   i@  )r      Y` r   )r   r   r   )r   !get_datetime_timedelta_conversionru   rv   rx   rw   ry   r   )rq   r   r   r   r   rp   s   `    @r   test_datetime_timedelta_scaling1TestModuleHelpers.test_datetime_timedelta_scaling   sQ   @@	$ !* 1 1*j IG) !J !* 1 1*j IGg !J ) 1 1*j IGg !J ) 1 1*j IGg !J DQt]T1aL9QtR[4A,7Qr4[*5  	2rJ/3l33l33k23k23&=>3&=>3';<4';<3&@A3&DE3&EF3&IJ3&OP3&TUr   c                    [         R                  n[         HM  nU R                  U" X"5      U5        U R                  U" SU5      U5        U R                  U" US5      U5        MO     U R                  U" SS5      S5        [        R
                  " [        [        5       H  u  p4U R                  U" X45      S 5        M     [        R
                  " [        [        5       H  u  p4U R                  U" X45      U5        M     g )Nre   )	r    combine_datetime_timedelta_unitsry   r   ru   rv   rx   rw   r   )rq   rp   r   r   r   s        r   %test_combine_datetime_timedelta_units7TestModuleHelpers.test_combine_datetime_timedelta_units   s    ??DQt]D1Qr4[$/QtR[$/  	2rB' ) 1 1*j IGMM!G-t4 !J ) 1 1*j IGQw0': !Jr   c                    [         R                  n[         H  nU R                  U" X"5      5        M     SnSn[        R
                  " X35       H  u  pVU R                  U" XV5      5        M     [        R
                  " XD5       H  u  pVU R                  U" XV5      5        M     [        R
                  " X45       H3  u  pVU R                  U" XV5      5        U R                  U" Xe5      5        M5     g )N)r   r   r   r   )	r   r   r   r    r!   r"   r#   r$   r%   )r   	same_kindry   ri   ru   rv   rj   )rq   rp   uABrn   ro   s          r   test_same_kind TestModuleHelpers.test_same_kind   s    ((AOOAaG$  ?%%a+DAOOAaG$ ,%%a+DAOOAaG$ ,%%a+DAQqW%QqW% ,r   r'   N)__name__
__module____qualname____firstlineno____doc__rz   r   r   r   r   __static_attributes__r'   r   r   rb   rb   a   s#    &,D2%VN
;&r   rb   c                   ,    \ rS rSrS rS rS rS rSrg)TestMiscCompiling   c                    ^  U 4S jn[         R                  " S5      " [         R                  " S5      [         R                  " S5      5      nU" U5        SnU" U5        g )Nc                    > [        U SS9" [        5      n[        SS5      [        SS5      4n[        U6 nTR	                  U" U6 U5        g )NTnopythonr}   r       r!   )r   r+   DTTDassertPreciseEqual)sigrp   argsexpectedrq   s       r   _check_explicit_signaturePTestMiscCompiling.test_jit_explicit_signature.<locals>._check_explicit_signature   sH    C$'4Aa;1d+D"D)H##AtHh7r   r!   r    z5NPDatetime('us')(NPDatetime('ms'), NPTimedelta('us')))r   
NPDatetimeNPTimedeltarq   r   r   s   `  r   test_jit_explicit_signature-TestMiscCompiling.test_jit_explicit_signature   sL    	8 t$U%5%5d%;U=N=Nt=TU!#&E!#&r   c                    ^  U 4S jn[         R                  " S5      " [         R                  " S5      [         R                  5      nU" U5        SnU" U5        g )Nc                    > [        U /SS9" [        5      nTR                  U" [        S5      S5      [        S5      5        g )NTr   r         )r   r0   r   r   )r   rp   rq   s     r   r   VTestMiscCompiling.test_vectorize_explicit_signature.<locals>._check_explicit_signature   s6    3%$/<A ##AbeQKA7r   r   z)NPTimedelta('s')(NPTimedelta('s'), int64))r   r   int64r   s   `  r   !test_vectorize_explicit_signature3TestMiscCompiling.test_vectorize_explicit_signature   sE    	8 $U%6%6s%;U[[I!#&9!#&r   c                 X   ^  U 4S jnU" [        S5      5        U" [        SS5      5        g )Nc                    > [        U 5      n[        SS9" U5      n[        SS5      nU" U5      nTR                  U" U5      U5        g NTr      r   r`   r   r   r   r]   pyfuncrp   r)   r   rq   s        r   check7TestMiscCompiling.test_constant_datetime.<locals>.check   D    &u-FT"6*A1c
AayH##AaD(3r   z
2001-01-01NaTr   )r   rq   r   s   ` r   test_constant_datetime(TestMiscCompiling.test_constant_datetime   s%    	4 	bbnr   c                 ~   ^  U 4S jnU" [        SS5      5        U" [        SS5      5        U" [        SS5      5        g )Nc                    > [        U 5      n[        SS9" U5      n[        SS5      nU" U5      nTR                  U" U5      U5        g r   r   r   s        r   r   8TestMiscCompiling.test_constant_timedelta.<locals>.check  r   r   r   r   r   )r   r   s   ` r   test_constant_timedelta)TestMiscCompiling.test_constant_timedelta  s4    	4 	bCjbSkbnr   r'   N)	r   r   r   r   r   r   r   r   r   r'   r   r   r   r      s    ''	r   r   c                       \ rS rSr\" SS9rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rSrg)TestTimedeltaArithmetici  Tforceobjc                 8    [        S0 U R                  D6" U5      $ Nr'   r   jitargsrq   r   s     r   r   TestTimedeltaArithmetic.jit      "T\\"6**r   c                   ^ ^ T R                  [        5      mUU 4S jnU" [        S5      [        S5      [        S5      5        U" [        SS5      [        SS5      [        SS5      5        U" [        SS5      [        SS5      [        SS5      5        U" [        SS5      [        SS	5      [        S
S	5      5        U" [        S5      [        S5      [        S5      5        U" [        SS5      [        SS	5      [        SS5      5        U" [        SS5      [        SS5      [        SS5      5        T R                  [        [
        45         T" [        SS5      [        SS	5      5        S S S 5        g ! , (       d  f       g = f)Nc                 f   > TR                  T" X5      U5        TR                  T" X5      U5        g r   r   rn   ro   r   rp   rq   s      r   r   /TestTimedeltaArithmetic.test_add.<locals>.check  +    ##AaGX6##AaGX6r   r}   r   r   r   r!   iBB r   r   	   r   r    r   )r   r+   r   r   	TypeErrorr	   rq   r   rp   s   ` @r   test_add TestTimedeltaArithmetic.test_add  s   HH[!	7 	beRUBqE"bCj"Q*bCj1bCj"Q+r'4'89bCj"Q*bCj1biA5	*bnbCj"UC.9bnbDk2eT?;	;78bCj"Q*% 988   E33
Fc                   ^ ^ T R                  [        5      mUU 4S jnU" [        S5      [        S5      [        S5      5        U" [        SS5      [        SS5      [        SS5      5        U" [        SS5      [        SS5      [        SS5      5        U" [        SS5      [        SS	5      [        S
S	5      5        U" [        S5      [        S5      [        S5      5        U" [        SS5      [        SS	5      [        SS5      5        U" [        SS5      [        SS5      [        SS5      5        T R                  [        [
        45         T" [        SS5      [        SS	5      5        S S S 5        g ! , (       d  f       g = f)Nc                 h   > TR                  T" X5      U5        TR                  T" X5      U* 5        g r   r   r   s      r   r   /TestTimedeltaArithmetic.test_sub.<locals>.check-  s-    ##AaGX6##AaGhY7r   r   r   r}   r   r!   i- r   r      r   r    r   )r   r.   r   r   r   r	   r   s   ` @r   test_sub TestTimedeltaArithmetic.test_sub+  s   HH[!	8 	beRUBqE"bCj"Q*bCj1bCj"Q+r'4'89bCj"Q*bCj1biA5	*bnbCj"UC.9bnbDk2eT?;	;78bCj"Q*% 988r   c                   ^ ^ T R                  [        5      mUU 4S jnU" [        S5      [        R                  " S5      [        S5      5        U" [        S5      S[        S5      5        U" [        SS5      S[        SS5      5        U" [        SS5      S[        SS5      5        U" [        S5      S[        S	5      5        U" [        S
5      S[        S5      5        U" [        SS5      S[        SS5      5        U" [        S
5      S[        S	5      5        U" [        SS5      S[        SS5      5        U" [        SS5      [        S5      [        SS5      5        U" [        SS5      S[        SS5      5        g )Nc                 f   > TR                  T" X5      U5        TR                  T" X5      U5        g r   r   r   s      r   r   /TestTimedeltaArithmetic.test_mul.<locals>.check@  r   r   r   r   r   r#   r   r         ?
   ig      nanl               r   )r   r0   r   npuint32floatr   s   ` @r   test_mul TestTimedeltaArithmetic.test_mul>  s   HH[!	7
 	beRYYq\2a5)beQ1bDk1bDk*boq"UD/2beS"R&!bfc2c7#bDk4C/bfdBrF#botRt_5bDk5<E49bor2a;/r   c                   ^ ^^ T R                  [        5      mT R                  [        5      mUUU 4S jnU" [        SS5      [        R
                  " S5      [        SS5      5        U" [        S5      S[        S5      5        U" [        SS5      S[        SS5      5        U" [        SS5      S[        SS5      5        U" [        SS5      S	[        SS5      5        U" [        SS5      S	[        SS5      5        U" [        S
5      S[        S5      5        U" [        SS5      S[        SS5      5        U" [        SS5      S[        SS5      5        U" [        SS5      S[        SS5      5        U" [        SS5      S[        SS5      5        U" [        SS5      [        S5      [        SS5      5        U" [        SS5      [        S5      [        SS5      5        g )Nc                 f   > TR                  T" X5      U5        TR                  T" X5      U5        g r   r   )rn   ro   r   divfloordivrq   s      r   r   /TestTimedeltaArithmetic.test_div.<locals>.checkW  s+    ##CIx8##HQNH=r   r#   r   r   r}   r   r   r   g      ?   r   r   r   g      @g        r   )r   r2   r4   r   r  r  r  )rq   r   r  r	  s   ` @@r   test_div TestTimedeltaArithmetic.test_divT  sg   hh{#88,-	>
 	bTlBIIaL"R,7beQ1bTlAr"d|,boq"UD/2bDk1bo.boq"UD/2beS"R&!bTlCB.bosBudO4bDk35$0bosBudO4bDk5<E49bouU|Rt_=r   c                 P  ^ ^ T R                  [        5      mUU 4S jnU" [        S5      [        S5      S5        U" [        SS5      [        SS5      S5        U" [        SS5      [        SS5      S5        U" [        S5      [        S	5      [        S
5      5        U" [        S5      [        S	5      [        S5      5        U" [        S	5      [        S	5      [        S5      5        U" [        S5      [        S5      [        S5      5        U" [        S5      [        S5      [        S5      5        U" [        S5      [        S	5      [        S5      5        T R	                  [
        [        45         T" [        SS5      [        SS5      5        S S S 5        g ! , (       d  f       g = f)Nc                 6   > TR                  T" X5      U5        g r   r   )rn   ro   r   r  rq   s      r   r   ;TestTimedeltaArithmetic.test_homogeneous_div.<locals>.checkn  s    ##CIx8r   r   r   g@r!   r    gQFoZc?g:@r   z+infr   z-infr   natr}   r   r   )r   r2   r   r  r   r   r	   )rq   r   r  s   ` @r   test_homogeneous_div,TestTimedeltaArithmetic.test_homogeneous_divl  s!   hh{#	9 	beRUG$bDk2a;
3bDk2a;
3beRUE&M*bfbeU6]+beRUE%L)biAe-beRYe-biAe-	;781c
Bq#J' 988s   0F
F%c                   ^ ^^ T R                  [        5      mT R                  [        5      mUUU 4S jnU" [        S5      [        S5      S5        U" [        S5      [        S5      S5        U" [        SS5      [        SS5      S5        U" [        SS5      [        SS5      S5        U" [        SS5      [        SS5      S5        U" [        SS5      [        SS5      S5        U" [        SS	5      [        S
S5      S5        U" [        S5      [        S5      S5        U" [        SS5      [        SS5      S5        U" [        S5      [        S5      S5        [        S:  a[  U" [        SS	5      [        SS5      S5        U" [        SS	5      [        SS5      S5        U" [        SS5      [        SS5      S5        g T R                  [        [        45         T" [        SS	5      [        SS5      5        S S S 5        T R                  [        [        45         T" [        SS	5      [        SS5      5        S S S 5        g ! , (       d  f       NP= f! , (       d  f       g = f)Nc                 L  > UnU(       + n[         R                  " U 5      (       d  [         R                  " U 5      (       a  SnSnTR                  T" X5      U5        TR                  T" X5      U5        TR                  T" X5      U5        TR                  T" X5      U5        g NFTr  isnatr   )rn   ro   r   expected_valnot_expected_valeqnerq   s        r   r   1TestTimedeltaArithmetic.test_eq_ne.<locals>.check  s    #L#+| xx{{bhhqkk$#' ##BqHl;##BqHl;##BqH.>?##BqH.>?r   r}   r   FTr   i  r    r   r   r   Nat)r}      m  r   in  r   r   )r   r7   r9   r   r   r   r   r	   )rq   r   r  r  s   ` @@r   
test_eq_ne"TestTimedeltaArithmetic.test_eq_ne  s   XXj!XXj!	@ 	beRUE"beRUD!bCj"Q*e,bCj"Q*d+bsmR3Z/btnbCj$/bCj"R+t,biED)bor%~t4biA&7""Q*bclE2"Q*bclE2"UC."UC.$7 ""I{#;<2a:r#s|, =""I{#;<2a:r#s|, =< =<<<s   II
I
I!c                 ~  ^ ^^ T R                  [        5      mT R                  [        5      mUUU 4S jnU" [        S5      [        S5      S5        U" [        S5      [        S5      S5        U" [        S5      [        S5      S5        U" [        SS5      [        SS5      S5        U" [        SS5      [        SS5      S5        U" [        SS5      [        SS5      S5        U" [        SS5      [        SS5      S5        U" [        SS5      [        S	S5      S5        U" [        S
5      [        S
5      S5        U" [        S
S5      [        S
S5      S5        U" [        S
5      [        S5      S5        T R	                  [
        [        45         T" [        SS5      [        SS5      5        S S S 5        T R	                  [
        [        45         T" [        SS5      [        SS5      5        S S S 5        T R	                  [
        [        45         T" [        SS5      [        SS5      5        S S S 5        T R	                  [
        [        45         T" [        SS5      [        SS5      5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nr= f! , (       d  f       g = f)Nc                    > UnU(       + n[         R                  " U 5      (       d  [         R                  " U 5      (       a  SnSnTR                  T" X5      U5        TR                  T" X5      U5        g NFr  )rn   ro   r   r  r  geltrq   s        r   r   1TestTimedeltaArithmetic.test_lt_ge.<locals>.check  s_    #L#+| xx{{bhhqkk$#( ##BqHl;##BqH.>?r   r}   r   TFr   r   =   <   r   r     r   r"  r   r   )r   r;   rA   r   r   r   r	   )rq   r   r(  r)  s   ` @@r   
test_lt_ge"TestTimedeltaArithmetic.test_lt_ge  s   XXj!XXj!	@ 	beRUD!beRUE"beRUE"bCj"Q*d+bCj"Q*e,bCj"Q*e,bCj"R+t,bCj"R+u-biEE*bor%~u5biJ.	;78r!Sz2c3<( 9	;78r!Sz2c3<( 9 	;78r%~r%~. 9	;78r%~r%~. 98 9888 9888s0   I;JJJ.;
J	
J
J+.
J<c                   ^ ^^ T R                  [        5      mT R                  [        5      mUUU 4S jnU" [        S5      [        S5      S5        U" [        S5      [        S5      S5        U" [        S5      [        S5      S5        U" [        SS5      [        SS5      S5        U" [        SS5      [        SS5      S5        U" [        SS5      [        SS5      S5        U" [        SS5      [        SS5      S5        U" [        SS5      [        S	S5      S5        U" [        SS5      [        S
S5      S5        U" [        S5      [        S5      S5        U" [        SS5      [        SS5      S5        U" [        S5      [        S5      S5        T R	                  [
        [        45         T" [        SS5      [        SS5      5        S S S 5        T R	                  [
        [        45         T" [        SS5      [        SS5      5        S S S 5        T R	                  [
        [        45         T" [        SS5      [        SS5      5        S S S 5        T R	                  [
        [        45         T" [        SS5      [        SS5      5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nr= f! , (       d  f       g = f)Nc                    > UnU(       + n[         R                  " U 5      (       d  [         R                  " U 5      (       a  SnSnTR                  T" X5      U5        TR                  T" X5      U5        g r'  r  )rn   ro   r   r  r  gtlerq   s        r   r   1TestTimedeltaArithmetic.test_le_gt.<locals>.check  s_    #L#+| xx{{bhhqkk$#( ##BqHl;##BqH.>?r   r}   r   TFr   r   r+  r,  ;   r   r    r-  r   r"  r   r   )r   r=   r?   r   r   r   r	   )rq   r   r2  r3  s   ` @@r   
test_le_gt"TestTimedeltaArithmetic.test_le_gt  s   XXj!XXj!
	@ 	beRUD!beRUD!beRUE"bCj"Q*d+bCj"Q*d+bCj"Q*e,bCj"R+t,bCj"R+t,bCj"R+u-biED)bor%~t4biJ.	;78r!Sz2c3<( 9	;78r!Sz2c3<( 9 	;78r%~r%~. 9	;78r%~r%~. 98 9888 9888s0   /J0J*1J;2K
J'*
J8;
K	
Kc                   ^ ^ T R                  [        5      mUU 4S jnU" [        S5      5        U" [        S5      5        U" [        SS5      5        U" [        SS5      5        U" [        S5      5        U" [        SS5      5        g )Nc                 8   > TR                  T" U 5      U 75        g r   r   )rn   posrq   s    r   r   /TestTimedeltaArithmetic.test_pos.<locals>.check      ##CFQB/r   r   r   r    r   )r   rD   r   )rq   r   r:  s   ` @r   test_pos TestTimedeltaArithmetic.test_pos  d    hh{#	0 	bebfbDkbTlbibor   c                   ^ ^ T R                  [        5      mUU 4S jnU" [        S5      5        U" [        S5      5        U" [        SS5      5        U" [        SS5      5        U" [        S5      5        U" [        SS5      5        g )Nc                 8   > TR                  T" U 5      U * 5        g r   r   )rn   negrq   s    r   r   /TestTimedeltaArithmetic.test_neg.<locals>.check  r<  r   r   r   r    r   )r   rG   r   )rq   r   rB  s   ` @r   test_neg TestTimedeltaArithmetic.test_neg  r?  r   c                   ^ ^ T R                  [        5      mUU 4S jnU" [        S5      5        U" [        S5      5        U" [        SS5      5        U" [        SS5      5        U" [        S5      5        U" [        SS5      5        g )Nc                 H   > TR                  T" U 5      [        U 5      5        g r   )r   rI   rn   rp   rq   s    r   r   /TestTimedeltaArithmetic.test_abs.<locals>.check      ##AaD#a&1r   r   r   r    r   )r   rJ   r   r   s   ` @r   test_abs TestTimedeltaArithmetic.test_abs  sd    HH[!	2 	bebfbDkbTlbibor   c                   ^ ^ T R                  [        5      mUU 4S jnSnSn[        X#-   [        4[	        U5      -  [
        4[	        U5      -  -   5       H  u  pEU" U" U6 5        M     [        S:  aU  T R                  [        5       nT" [        S5      5        S S S 5        T R                  S[        WR                  5      5        g g ! , (       d  f       N5= f)Nc                 p  > [         S:  a  U R                  R                  S:X  a  g TR                  R	                  SS5      (       a,  TR                  T" U 5      U R                  [        5      5        g TR                  T" U 5      [        U 5      5        g TR                  T" U 5      [        U 5      5        g )Nr   r   timedelta64r   F)	r   r   namer   getr   astyperY   rM   rH  s    r   r   0TestTimedeltaArithmetic.test_hash.<locals>.check  s    &
 77<<=0
 <<##J66++AaD!((3-@++AaD$q':''!d1g6r   ))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  ))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:03ZrX  rO  r   zCan't hash generic timedelta64)r   rN   zipr   lenr   r   r   
ValueErrorassertInstr	exception)rq   r   TD_CASESDT_CASEScasetypraisesrp   s   `      @r   	test_hash!TestTimedeltaArithmetic.test_hash  s    HH\"	7&B9 X0 US]2bUS]5JJLID#t*L F""":.&"Q% /MM:C@P@P<QR #..s   	C


Cc                 H  ^ ^^ T R                  T5      mUU U4S jn[        S5      [        S5      [        S5      [        S5      4[        SS5      [        SS5      [        SS5      [        SS5      44 H*  n[        R                  " X35       H  u  pEU" XE5        M     M,     g )Nc                 B   > TR                  T" X5      T" X5      5        g r   r   rn   ro   rp   rq   usecases     r   r   4TestTimedeltaArithmetic._test_min_max.<locals>.checkH      ##AaGWQ];r   r   r}   r   r   r   )r   r   ru   rv   rq   r{  r   casesrn   ro   rp   s   ``    @r   _test_min_max%TestTimedeltaArithmetic._test_min_maxF  s    HHW	< UBqE2a5"U),3ZAsR3ZE3@
E "))%7a 8	
r   c                 .    U R                  [        5        g r   r  rR   rq   s    r   test_min TestTimedeltaArithmetic.test_minR      ;'r   c                 .    U R                  [        5        g r   r  rW   r  s    r   test_max TestTimedeltaArithmetic.test_maxU  r  r   r'   N)r   r   r   r   dictr   r   r   r   r  r  r  r#  r.  r6  r=  rD  rK  rv  r  r  r  r   r'   r   r   r   r     sa    D!G+&&&&0,>0(()-V%/N%/N


'SR
((r   r   c                   &    \ rS rSr\" SS9rS rSrg)TestTimedeltaArithmeticNoPythoniY  Tr   c                 f  ^ ^ T R                  [        5      mUU 4S jnS H%  u  p#U" [        X#5      R                  S5      5        M'     S H#  nU" [	        U5      R                  S5      5        M%     T R                  [        SS9   T" [	        S5      5        S S S 5        g ! , (       d  f       g = f)	Nc                 H   > TR                  T" U 5      [        U 5      5        g r   )r   rY   rH  s    r   r   <TestTimedeltaArithmeticNoPython.test_int_cast.<locals>.check_  rJ  r   ))r   r"   )r   r"   )i0u  r"   )i r"   )r}   r   ztimedelta64[ns])rY  rZ  r[  r\  r]  r^  r_  r`  ra  rb  rc  rd  re  rf  rg  rh  ri  rj  datetime64[ns]z;Only datetime64[ns] can be converted, but got datetime64[y])msgrY  )r   rZ   r   rS  r   r   r	   )rq   r   deltar   timerp   s   `    @r   test_int_cast-TestTimedeltaArithmeticNoPython.test_int_cast]  s    HH%&	25MU"U/(():;<5-D
 "T(//"234- { 2A C bjMC C Cs   B""
B0r'   N)r   r   r   r   r  r   r  r   r'   r   r   r  r  Y  s    D!Gr   r  c                   t    \ rS rSr\" SS9rS r\R                  S 5       r	S r
S rS rS	 rS
 rS rS rSrg)TestDatetimeArithmeticis  Tr   c                 8    [        S0 U R                  D6" U5      $ r   r   r   s     r   r   TestDatetimeArithmetic.jitw  r   r   c              #      #    [         R                  " 5          [         R                  " SS[        S9  S v   S S S 5        g ! , (       d  f       g = f7f)Nignorez-Implicitly casting between incompatible kinds)messagecategory)warningscatch_warningsfilterwarningsDeprecationWarningr  s    r   silence_numpy_warnings-TestDatetimeArithmetic.silence_numpy_warningsz  s:      $$&##H,[-?A 	 '&&s   AA 	A 
A
Ac                 
  ^ ^^ T R                  [        5      mT R                  [        5      mUU U4S jnU" [        S5      [	        SS5      [        S5      5        U" [        S5      [	        SS5      [        S5      5        U" [        S5      [	        SS	5      [        S
S	5      5        U" [        S5      [	        SS5      [        S5      5        U" [        S5      [	        SS5      [        S5      5        U" [        S5      [	        SS5      [        S5      5        U" [        S5      [	        SS5      [        S5      5        U" [        S5      [	        SS5      [        S5      5        U" [        SS	5      [	        SS	5      [        S
S	5      5        U" [        S5      [	        SS5      [        S5      5        U" [        S5      [	        SS5      [        S5      5        U" [        S5      [	        SS	5      [        S5      5        U" [        S5      [	        SS5      [        S5      5        U" [        S5      [	        SS5      [        S 5      5        S! GH  nS" GH	  n[        X#-   5      n[	        SS5      [	        SS	5      [	        S#S5      [	        S$S5      [	        S%S5      [	        S&S5      [	        S#S	5      [	        S$S	5      [	        S%S	5      [	        S&S	5      [	        S#S5      [	        S$S5      [	        S%S5      [	        S&S5      4 HX  nT R                  T" XE5      XE-   XE45        T R                  T" XT5      XE-   XE45        T R                  T" XE* 5      XE-   XE45        MZ     GM     GM     U" [        S'5      [	        S5      [        S'5      5        U" [        S'S(5      [	        SS5      [        S'S(5      5        U" [        S'S(5      [	        SS5      [        S'S5      5        U" [        S5      [	        S'S	5      [        S'S	5      5        U" [        S)5      [	        S'S	5      [        S'S5      5        U" [        S'S(5      [	        S'S5      [        S'S5      5        TT4 H  nT R                  [        [        45         U" [        S*S)5      [	        S*S5      5        S+S+S+5        T R                  [        [        45         U" [        S*S)5      [	        S*S5      5        S+S+S+5        M     g+! , (       d  f       NT= f! , (       d  f       M  = f),zA
Test `datetime64 + timedelta64` and `datetime64 - timedelta64`.
c                    > TR                  5          TR                  T" X5      X U45        TR                  T" X5      X U45        TR                  T" X* 5      X U45        TR                  X-   U5        S S S 5        g ! , (       d  f       g = fr   r  r   )rn   ro   r   addrq   subs      r   r   <TestDatetimeArithmetic.test_add_sub_timedelta.<locals>.check  sw    ,,.''A	8VD''A	8VD''Ar
H!fE''x8 /..s   A$A??
BrY  r   r   rZ  r   r]  r   r   ra  r   r   rb  r[  r"  r`  r\  r_  r^  z
2014-02-03rc  re  rU  rh  z
2012-02-02z
2012-02-29z
2012-02-16rj  r   z2000-01-01T03:02:03Zr    ri  )6006016048011900190422002300230424006001)re   -01-12d   rV  irW  r   r   
2014-01-01r}   N)	r   r+   r.   r   r   r   r   r   r	   )	rq   r   dt_str	dt_suffixdttdrp   r  r  s	   `      @@r   test_add_sub_timedelta-TestDatetimeArithmetic.test_add_sub_timedelta  s    hh{#hh{#	9 	bj"Q*bj1bj"Q*bm4bj"Q*bs&;<bj"Q*b&67bj"S#,<(89bmR3ZI7bmR3ZI7bmR3ZL)9:bs#R3ZL#1FGb2sR-=>b2sR-=>b1c
B|,<=b'("Q*b9O6PQb'("Q+r:T7UV'F 0	*+a:r!Szc3<E3dC="VS/c3<E3dC="VS/c3<E3dC="VS/;B $$S["'B8D$$S["'B8D$$SS\27RHE; 0'" 	biA5	*bnbCj"UC.9bnbDk2eT?;bj"UC."UC.9b5#5#?bnbor%? sA""I{#;<"Q%r!Sz2 =""I{#;<"Q%r!Sz2 =< <<<<s   5S!6S2!
S/	2
T	c                     / SQn/ SQn[         R                  " X5       VVs/ s H  u  p4[        X4-   5      PM     nnnXQ Vs/ s H  n[        US5      PM     sn-  nU$ s  snnf s  snf )N)r  r  r  196819691973r[  200420052100r  2401)re   r  r  z-02-28z-12-31z-01-05T12:30:56Zz-01-05T12:30:56.008Zr   )ru   rv   r   )rq   dt_yearsdt_suffixesrn   ro   dtsr   s          r   datetime_samples'TestDatetimeArithmetic.datetime_samples  sh    CC'0'8'8'OP'OVar!%y'OPH-Hq1c
H--
 Q-s   AA%c                 X  ^ ^ T R                  [        5      mSU U4S jjnU" [        S5      [        S5      [        SS5      5        U" [        S5      [        S5      [        S	S
5      5        U" [        S5      [        S5      [        SS5      5        U" [        SS
5      [        S5      [        SS
5      5        U" [        SS
5      [        S5      [        SS5      5        U" [        S5      [        S5      [        S5      5        T R	                  5          T R                  5       n[        R                  " X"5       HQ  u  p4[        R                  " [        U5      [        U5      5      (       d  M5  T R                  T" X45      X4-
  X445        MS     SSS5        g! , (       d  f       g= f)z!
Test `datetime64 - datetime64`.
Nc                    > TR                  5          TR                  T" X5      X-
  X45        TR                  T" X5      X-
  X45        TR                  X-
  U5        S S S 5        g ! , (       d  f       g = fr   r  )rn   ro   r   rq   r  s      r   r   >TestDatetimeArithmetic.test_datetime_difference.<locals>.check  sa    ,,.''A	151&A''A	151&A''x8	 /..s   AA((
A6rY  2017r  r   r\  z2017-01ir   z
2014-02-28z
2015-03-01ir   r   r[  z
2000-01-01r   )r   r.   r   r   r  r  ru   rv   r   r   r   r   )rq   r   r  rn   ro   r  s   `    @r   test_datetime_difference/TestDatetimeArithmetic.test_datetime_difference  s5    hh{#	9 	9 	bj"V*bSk2bmR	]BsCL9b< 0"T3-@bnbj"UC.9bnb.5#?biEBuI.((*'')C!))#3*44Z]JqMRR''A	151&A 4 +**s   A<F
F)c           
        ^ ^	^
^^^^^ T R                  [        5      m
T R                  [        5      mT R                  [        5      mT R                  [        5      mT R                  [
        5      mT R                  [        5      mU
UUUUUU 4S jm	U	UUUU 4S jnT	" [        S5      [        S5      S5        T	" [        S5      [        S5      S5        T	" [        S5      [        S5      S5        T	" [        S5      [        SS	5      S5        T	" [        S5      [        SS	5      S5        T	" [        S5      [        SS	5      S5        T	" [        S
5      [        SS	5      S5        T	" [        SS5      [        SS5      S5        T	" [        SS5      [        SS5      S5        U" [        SS5      [        S5      S5        T	" [        S5      [        S5      S5        T R                  5       nU H  nUR                  R                  R                  S5      S   S S n[        R                  U5      n[        XUS-    nU H  nUR                  SU-  5      n[        R                   " [#        U5      [#        U5      5      (       d  MG  T	" X8S5        U" X8[$        R&                  " SU5      -   S5        U" U[$        R&                  " SU5      -
  US5        M     M     g )Nc                   > UnU(       + n[         R                  " U 5      (       d  [         R                  " U5      (       a  SnSnTR                  T" X5      X45        TR                  T" X5      X45        TR                  T" X5      X45        TR                  T" X5      X45        TR                  T	" X5      X45        TR                  T" X5      X45        TR                  T	" X5      X45        TR                  T" X5      X45        TR                  5          TR	                  T" X5      X0X45        TR	                  T" X5      X0X45        TR	                  T
" X5      X@X45        TR	                  T
" X5      X@X45        U(       a  TR                  T" X5      X45        TR                  T" X5      X45        TR                  T" X5      X45        TR                  T" X5      X45        TR                  T	" X5      X45        TR                  T" X5      X45        TR                  T	" X5      X45        TR                  T" X5      X45        TR	                  X:H  U5        S S S 5        g ! , (       d  f       g = fr  )r  r  rj   r  r   ri   )rn   ro   r   r  r  r  r(  r2  r3  r)  r  rq   s        r   check_eq9TestDatetimeArithmetic.test_comparisons.<locals>.check_eq  s!   #L#+| xx{{bhhqkk$#'   AA62  AA62  AA62  AA62  AA62  AA62  AA62  AA62,,.''1,A@PQ''1,A@PQ''12BDTU''12BDTUOOBqHqf5OOBqHqf5OOBqHqf5OOBqHqf5$$RXv6$$RXv6$$RXv6$$RXv6''=# /..s   EI22
J c                 "  > UnU(       + n[         R                  " U 5      (       d  [         R                  " U5      (       a  SnSnT
R                  5          T
R                  [        5      nT
R                  U" X5      X0X45        T
R                  T" X5      X0X45        T
R                  T" X5      X@X45        T
R                  T	" X5      X@X45        U(       a	  T" XS5        T
R                  X:  U5        S S S 5        g ! , (       d  f       g = fr'  )r  r  r  r   r;   r   )rn   ro   r   r  r  r)  r  r(  r2  r3  rq   s         r   check_lt9TestDatetimeArithmetic.test_comparisons.<locals>.check_lt  s    #L#+| xx{{bhhqkk$#( ,,.XXj)''1,A@PQ''1,A@PQ''12BDTU''12BDTUQ5)''|< /..s   B"D  
DrY  r  Fz2014-01Tr  r   z
2014-01-02rd  z2014-01-01T00:01:00Zr   z2014-01-01T00:01Zr   z2014-01-01T00:01:01Zr   r   [r}   r  r   zM8[%s])r   r7   r9   r;   r=   r?   rA   r   r  r   ro  splitry   indexrS  r   r   r   r  rP  )rq   r  r  rn   a_unitrm   unitsr   ro   r  r  r(  r2  r3  r)  r  s   `        @@@@@@@r   test_comparisons'TestDatetimeArithmetic.test_comparisons  sN   XXj!XXj!XXj!XXj!XXj!XXj!#	> #	>J	= 	=, 	FRZ/FR	]D1FR-t4FRc2D9I< 5t<L!2lC#8%@L!2lC#8$?*C0$c*D	2*C0$c*E	3 	E3FT2EBuIt, ##%AWW[[&&s+A.s3F'Aa!$EHHX_-*44Z]5?]D Dt$q$ 77>R^^At44a>  r   c                 P  ^ ^^ T R                  T5      mUU U4S jn[        SS5      [        SS5      [        SS5      [        SS5      4[        SS5      [        SS5      [        SS5      [        SS5      44 H*  n[        R                  " X35       H  u  pEU" XE5        M     M,     g )Nc                 B   > TR                  T" X5      T" X5      5        g r   r   rz  s     r   r   3TestDatetimeArithmetic._test_min_max.<locals>.checkQ  r}  r   r   r"   r}   r   r   r   )r   r   ru   rv   r~  s   ``    @r   r  $TestDatetimeArithmetic._test_min_maxO  s    HHW	< 4["Q+r!T{BudOD3ZAsR3ZE3@
E "))%7a 8	
r   c                 .    U R                  [        5        g r   r  r  s    r   r  TestDatetimeArithmetic.test_min[  r  r   c                 .    U R                  [        5        g r   r  r  s    r   r  TestDatetimeArithmetic.test_max^  r  r   r'   N)r   r   r   r   r  r   r   
contextlibcontextmanagerr  r  r  r  r  r  r  r  r   r'   r   r   r  r  s  sR    D!G+  ?3BB6d?L
((r   r  c                        \ rS rSr\" SS9rSrg)TestDatetimeArithmeticNoPythonia  Tr   r'   N)r   r   r   r   r  r   r   r'   r   r   r  r  a  s    D!Gr   r  c                   D    \ rS rSrSrSS04S jrS rSS04S jrS rS	r	g
)TestMetadataScalingFactorif  zZ
Tests than non-1 scaling factors are not supported in datetime64
and timedelta64 dtypes.
r   Tc                     [        S0 UD6" [        5      nU R                  U" [        SS5      [        S5      5      5        g )NrY  10Y2010r'   )r   r7   ri   r   rq   r   r  s      r   test_datetime'TestMetadataScalingFactor.test_datetimel  s0    ^7^J'2fe,bj9:r   c                 z    U R                  5          U R                  SS0S9  S S S 5        g ! , (       d  f       g = fNr   T)r   )assertTypingErrorr  r  s    r   test_datetime_npm+TestMetadataScalingFactor.test_datetime_npmp  s0    ##%
4'89 &%%   ,
:c           	          [        S0 UD6" [        5      nU R                  U" [        SS5      [        SS5      5      5        g )Nr   r     r   r'   )r   r7   ri   r   r  s      r   test_timedelta(TestMetadataScalingFactor.test_timedeltat  s1    ^7^J'2a<B56r   c                 z    U R                  5          U R                  SS0S9  S S S 5        g ! , (       d  f       g = fr  )r  r  r  s    r   test_timedelta_npm,TestMetadataScalingFactor.test_timedelta_npmx  s0    ##%D(9: &%%r  r'   N)
r   r   r   r   r   r  r  r  r  r   r'   r   r   r  r  f  s/    
 &0$5 ;: '1%6 7;r   r  c                       \ rS rSrS rSrg)TestDatetimeDeltaOpsi}  c                 ~   S nUn[        U5      n[        R                  " S[        5      [        R                  " S[        5      4[        R                  " S[        5      [        R                  " S[        5      4[        R                  " S[        5      [        R                  " S[        5      4[        R                  " S[        5      [        R                  " S[        5      4[        R                  " S[        5      S4[        R                  " S[        5      [        R                  " S[        R
                  5      4[        R                  " S[        5      [        R                  " S[        R                  5      4/nU H7  u  pVU R                  [        R                  " U" XV5      U" XV5      5      5        M9     g)z3
Test the division of a timedelta by numeric types
c                 
    X-  $ r   r'   )rn   ro   s     r   arr_div.TestDatetimeDeltaOps.test_div.<locals>.arr_div  s	    5Lr   r   r}   N)	r   r  onesTIMEDELTA_MTIMEDELTA_Yr   float64ri   array_equal)rq   r  py_funccfunc
test_casesrn   ro   s          r   r  TestDatetimeDeltaOps.test_div~  s   	 WWWQ$bgga&=>WWQ$bgga&=>WWQ$bgga&=>WWQ$bgga&=>WWQ$a(WWQ$bgga&:;WWQ$bgga&<=

 DAOOBNN71=%+FG r   r'   N)r   r   r   r   r  r   r'   r   r   r  r  }  s    Hr   r  c                       \ rS rSrS rS r\S 5       rS r\S 5       r	S r
S rS	 rS
 rS rS rS rS rS rS rS r\S 5       r\S 5       r\S 5       r\S 5       rS rSrg)TestDatetimeArrayOpsi  c           
        ^ U4S jn[         R                  " [         R                  " S5      [         R                  " S5      [         R                  " S5      [         R                  " S5      /SS9n[         R                  " [         R                  " S5      [         R                  " S5      [         R                  " S5      [         R                  " S5      /SS9nUn[        US	9" U5      nU[         R                  " S
5      4U[         R                  " S
5      4U[         R                  " S5      4U[         R                  " S5      4/nT[         R
                  L am  UR                  [         R                  " S
5      U4[         R                  " S
5      U4[         R                  " S5      U4[         R                  " S5      U4/5        U H7  u  pU R                  [         R                  " U" X5      U" X5      5      5        M9     g)zI
Test the addition/subtraction of a datetime array with a timedelta type
c                    > T" X5      $ r   r'   rn   ro   	operations     r   impl6TestDatetimeArrayOps._test_td_add_or_sub.<locals>.impl  s    Q?"r   
2011-01-01
1971-02-02
2021-03-03
2004-12-07r  r   zdatetime64[D]parallel  i*N)	r  array
datetime64r   rP  r  extendri   r  )rq   r  r   r  arr_onearr_twor  r  r  rn   ro   s    `         r   _test_td_add_or_sub(TestDatetimeArrayOps._test_td_add_or_sub  s   	# ((l3l3l3l3	
 ./ ((l3l3l3l3	
 -. h'-bnnT*+bnnT*+bnnV,-bnnV,-	

 %w/%w/'1'1	  DAOOBNN71=%+FG r   c                 D    U R                  [        R                  S5        g r'  r'  r  r  r  s    r   test_add_td TestDatetimeArrayOps.test_add_td  s      /r   c                 D    U R                  [        R                  S5        g NTr*  r  s    r   test_add_td_parallel)TestDatetimeArrayOps.test_add_td_parallel  s      .r   c                 D    U R                  [        R                  S5        g r'  r'  r  subtractr  s    r   test_sub_td TestDatetimeArrayOps.test_sub_td  s      e4r   c                 D    U R                  [        R                  S5        g r.  r2  r  s    r   test_sub_td_parallel)TestDatetimeArrayOps.test_sub_td_parallel  s      d3r   c                 h  ^ [         U4S j5       nTR                  n[        R                  " SU S35      nU R	                  [
        [        4U5         U" [        R                  " [        R                  " S5      /SS9[        R                  " SS5      5        S	S	S	5        g	! , (       d  f       g	= f)
z}
Tests that attempting to add/sub a datetime64 and timedelta64
with types that cannot be cast raises a reasonable exception.
c                    > T" X5      $ r   r'   r  s     r   r  <TestDatetimeArrayOps._test_add_sub_td_no_match.<locals>.impl  s    Q?"r   zufunc 'z<' is not supported between datetime64[ns] and timedelta64[M]r  r  r  r!  r   N)r   r   reescapeassertRaisesRegexr	   r   r  r"  r#  rP  )rq   r  r  fnamer   s    `   r   _test_add_sub_td_no_match.TestDatetimeArrayOps._test_add_sub_td_no_match  s    
 
	# 
	# ""99w /B B D##[)$<hG"--57/1tC( HGGs   AB##
B1c                 B    U R                  [        R                  5        g r   )r@  r  r  r  s    r   test_add_td_no_match)TestDatetimeArrayOps.test_add_td_no_match  s    &&rvv.r   c                 B    U R                  [        R                  5        g r   )r@  r  r3  r  s    r   test_sub_td_no_match)TestDatetimeArrayOps.test_sub_td_no_match  s    &&r{{3r   c                    [         R                  " [        SS5      [        SS5      [        SS5      [        SS5      /5      [         R                  " [        SS5      [        SS5      [        SS5      [        S	S5      [        S
S5      /5      [         R                  " [        SS5      [        SS5      [        SS5      [        S	S5      [        S
S5      /5      [         R                  " [        SS5      [        SS5      [        SS5      [        S	S5      [        S
S5      [        SS5      /5      [         R                  " [        SS5      [        SS5      [        SS5      [        SS5      [        S	S5      [        S
S5      /5      [         R                  " [        SS5      [        SS5      /5      [         R                  " [        SS5      [        SS5      [        SS5      /5      [         R                  " [        SS5      [        SS5      [        SS5      [        SS5      /5      [         R                  " [        SS5      [        SS5      [        SS5      [        SS5      /5      [         R                  " [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      /5      [         R                  " [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      /5      [         R                  " [        SS5      /5      [         R                  " [        SS5      [        SS5      [        SS5      /5      /nU$ )Nr   r"   r}   r   r   r  r  z
1900-01-01r  r  r   r   r   )r  r"  r   r   )rq   r  s     r   _get_testcases#TestDatetimeArrayOps._get_testcases  s   HH1d1d1d1d	  HH<&<&<&<&<&  HH<%<%<%<%<%  HH<&<&<&<&<&5$  HH5$<&<&<&<&<&  HH<&5$  HH5$5$5$ 
 HH1d1d1d1d	  HH1c
1c
1c
1c
	  HH5$1d1d1d1d  HH1d1d1d1d5$  HH5$  HH5$5$5$ WP

b r   c                   ^ U(       a  T[         R                  L a  S nO
S nOU4S jnUn[        US9" U5      nU R                  5       nU H  nU" U5      n	U" U5      n
[         R                  " U	5      (       d  [         R                  " U
5      (       aL  U R                  [         R                  " U	5      5        U R                  [         R                  " U
5      5        M  U R                  X5        M     g )Nc                 "    U R                  5       $ r   rP   arrs    r   r  0TestDatetimeArrayOps._test_min_max.<locals>.impl:      779$r   c                 "    U R                  5       $ r   rU   rM  s    r   r  rO  =  rP  r   c                    > T" U 5      $ r   r'   )rN  r  s    r   r  rO  @  s     ~%r   r  )r  rQ   r   rI  r  ri   r   )rq   r  r   methodr  r  r  r  rN  py_resc_ress    `         r   r  "TestDatetimeArrayOps._test_min_max7  s    BFF"%%& h'-((*
CS\F#JExx288E?? 010  / r   c                 2    U R                  [        SS5        g r'  )r  rQ   r  s    r   test_min_func"TestDatetimeArrayOps.test_min_funcP      3u-r   c                 F    U R                  [        R                  SS5        g r'  r  r  rQ   r  s    r   test_np_min_func%TestDatetimeArrayOps.test_np_min_funcS      2665%0r   c                 F    U R                  [        R                  SS5        g r  r\  r  s    r   test_min_method$TestDatetimeArrayOps.test_min_methodV      2665$/r   c                 2    U R                  [        SS5        g r'  )r  rV   r  s    r   test_max_func"TestDatetimeArrayOps.test_max_funcY  rZ  r   c                 F    U R                  [        R                  SS5        g r'  r  r  rV   r  s    r   test_np_max_func%TestDatetimeArrayOps.test_np_max_func\  r_  r   c                 F    U R                  [        R                  SS5        g r  rh  r  s    r   test_max_method$TestDatetimeArrayOps.test_max_method_  rc  r   c                 F    U R                  [        R                  SS5        g NTFr\  r  s    r   test_min_func_parallel+TestDatetimeArrayOps.test_min_func_parallelb      2664/r   c                 F    U R                  [        R                  SS5        g r.  r\  r  s    r   test_min_method_parallel-TestDatetimeArrayOps.test_min_method_parallelf      2664.r   c                 F    U R                  [        R                  SS5        g ro  rh  r  s    r   test_max_func_parallel+TestDatetimeArrayOps.test_max_func_parallelj  rr  r   c                 F    U R                  [        R                  SS5        g r.  rh  r  s    r   test_max_method_parallel-TestDatetimeArrayOps.test_max_method_paralleln  rv  r   c           	        ^  SSK JnJnJn  XU/nU Vs/ s H  n[	        U5      PM     nnU 4S jnT R                  5       n[        XF5       H  u  pU H  n[        R                  " U5      n[        S[        SUR                  5      S-   5       HN  n[        R                  R                  SUR                  U5      nX   nUS:X  a  Uu  nU" XX5        U" XX5        MP     M     M     g s  snf )Nr}   )searchsortedsearchsorted_leftsearchsorted_rightc                 H   > U " X#5      nU" X#5      nTR                  XE5        g r   r   )r   r  rn   vr   gotrq   s         r   r   >TestDatetimeArrayOps.test_searchsorted_datetime.<locals>.checky  s#    a|H+C##H2r   r   r   )test_np_functionsr~  r  r  r   rI  rk  r  sortrangerQ   sizerandomrandint)rq   r~  r  r  pyfunc_listfn
cfunc_listr   r  r   r  rN  nidxvsr  s   `               r   test_searchsorted_datetime/TestDatetimeArrayOps.test_searchsorted_datetimer  s    	
 	
 $8JK(34"c"g
4	3
 ##% 9MFggclq#a"2Q"67A))++Asxx;CBAv fS4&1 8  : 5s   C*r'   N)r   r   r   r   r'  r+  r   r/  r4  r7  r@  rC  rF  rI  r  rX  r]  ra  re  ri  rl  rp  rt  rx  r{  r  r   r'   r   r   r  r    s    $HL0 / /5 4 4&/4Rh02.10.10 0 0 / / 0 0 / /2r   r  c                       \ rS rSrS rSrg)TestDatetimeTypeOpsi  c                    ^  [         S 5       n[         S 5       n[         S 5       n[        R                  " SS5      n[        R                  " SS5      nXT-
  nU 4S jnUUU/nUUU/n	[        R                  " X5       H  u  pU" X5        M     g )Nc                 "    [        U [        5      $ r   )
isinstancecomplexrn   s    r   
is_complex@TestDatetimeTypeOps.test_isinstance_datetime.<locals>.is_complex  s    a))r   c                 6    [        U [        R                  5      $ r   )r  r  r#  r  s    r   is_datetimeATestDatetimeTypeOps.test_isinstance_datetime.<locals>.is_datetime  s    a//r   c                 6    [        U [        R                  5      $ r   )r  r  rP  r  s    r   is_timedeltaBTestDatetimeTypeOps.test_isinstance_datetime.<locals>.is_timedelta  s    a00r   r}   r"   r   c                    > TR                  U R                   S[        U5      R                   S35         U " U5      nU R                  U5      nTR	                  X#5        S S S 5        g ! , (       d  f       g = f)N())subTestr   typer  r   )jit_funcr)   r  expectrq   s       r   r   ;TestDatetimeTypeOps.test_isinstance_datetime.<locals>.check  sb    !2!2 31T!W5E5E4FaHIqk!))!,  - JIIs   +A**
A8)r   r  r#  ru   rv   )rq   r  r  r  dt_adt_btd_cr   fnsr   r  args   `           r   test_isinstance_datetime,TestDatetimeTypeOps.test_isinstance_datetime  s    		* 
	*		0 
	0		1 
	1 }}Q%}}Q%{	. 
 

 !((3GB"N 4r   r'   N)r   r   r   r   r  r   r'   r   r   r  r    s     r   r  __main__)Dr   r  ru   r<  unittestr  numpyr  numbar   r   r   numba.np.numpy_supportr   
numba.corer   r   numba.core.errorsr	   numba.tests.supportr
   r   r   numba.npr   r   r   r
  r  r   rw   rx   ry   r+   r.   r0   r2   r4   r7   r9   r;   r=   r?   rA   rD   rG   rJ   rN   rR   rW   rZ   r`   rb   rP  r   r#  r   r   r   r  r  r  r  r  r  r  r   mainr'   r   r   <module>r     s     	    & & 0 $ ) G G 6hh'(hh'(
 
J
#	s& s&l ^^]]3 3lE(h E(P
&= 4l(X l(\"%; "
; ;.H8 H.t28 t2p!( !H zMMO r   