
    xKg                        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j4                  d	      Z ej4                  d
      Zd ZdZdZeez   Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+d Z,d Z-d Z.d Z/d Z0d Z1d Z2d  Z3 G d! d"e      Z4ejj                  Z6ejn                  Z8 G d# d$e      Z9 G d% d&e      Z: G d' d(e:      Z; G d) d*e      Z< G d+ d,e<      Z= G d- d.e      Z> G d/ d0e      Z? G d1 d2e      Z@ G d3 d4e      ZAeBd5k(  r ej                          yy)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                 X    t        j                  | j                        }|j                  S N)r   
from_dtypedtypeunit)valtys     _/home/alanp/www/video.onchill/myenv/lib/python3.12/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                     | |z   S r    xys     r   add_usecaser+   %       q5Lr   c                     | |z
  S r   r'   r(   s     r   sub_usecaser.   (   r,   r   c                     | |z  S r   r'   r(   s     r   mul_usecaser0   +   r,   r   c                     | |z  S r   r'   r(   s     r   div_usecaser2   .   r,   r   c                     | |z  S r   r'   r(   s     r   floordiv_usecaser4   1       6Mr   c                     | |k(  S r   r'   r(   s     r   
eq_usecaser7   4   r5   r   c                     | |k7  S r   r'   r(   s     r   
ne_usecaser9   7   r5   r   c                     | |k  S r   r'   r(   s     r   
lt_usecaser;   :   r,   r   c                     | |k  S r   r'   r(   s     r   
le_usecaser=   =   r5   r   c                     | |kD  S r   r'   r(   s     r   
gt_usecaser?   @   r,   r   c                     | |k\  S r   r'   r(   s     r   
ge_usecaserA   C   r5   r   c                     | S r   r'   r)   s    r   pos_usecaserD   F   	    2Ir   c                     |  S r   r'   rC   s    r   neg_usecaserG   I   rE   r   c                     t        |       S r   )absrC   s    r   abs_usecaserJ   L       q6Mr   c                     t        |       S r   )hashrC   s    r   hash_usecaserN   O   s    7Nr   c                     t        | |      S r   minr(   s     r   min_usecaserR   R       q!9r   c                     t        | |      S r   maxr(   s     r   max_usecaserW   U   rS   r   c                     t        |       S r   )intrC   s    r   int_cast_usecaserZ   X   rK   r   c                       fd}|S )Nc                     | z   S r   r'   )r)   consts    r   add_constantz'make_add_constant.<locals>.add_constant\   s    5yr   r'   )r]   r^   s   ` r   make_add_constantr_   [   s    r   c                   .    e Zd ZdZd Zd Zd Zd Zd Zy)TestModuleHelpersz?
    Test the various helpers in numba.npdatetime_helpers.
    c                     t         j                  t        j                  t        t
              D ];  \  }} j                   ||      ||f        j                   ||      ||f       = t        D ]2  } j                   |d              j                   d|             4 t        dz   D ]  } j                   ||               fd} |t                |t
               y )N rc   c                     t        |       D ]?  \  }}| d | D ]2  }j                   ||             j                   ||             4 A y r   )	enumerate
assertTrueassertFalsegroupiabfselfs       r   check_units_groupzDTestModuleHelpers.test_can_cast_timedelta.<locals>.check_units_groupq   sL    !%(1rAOOAaG,$$Qq!W-	 # )r   )	r   can_cast_timedelta_units	itertoolsproduct
date_units
time_unitsrh   	all_unitsrg   )ro   rl   rm   r   rp   rn   s   `    @r   test_can_cast_timedeltaz)TestModuleHelpers.test_can_cast_timedeltaf   s    77%%j*=DAqQq!Wq!f-Qq!Wq!f- > DQtR[)OOAb$K(  %DOOAdDM* &	. 	*%*%r   c                 r    t         j                  t        dz   D ]  } j                   ||      d        t        D ]  } j                   d|      d        t	        j
                  t        t              D ]7  \  }} j                   ||      d         j                   ||      d        9  fd} |t                |t                j                   dd      d        j                   dd	      d
        j                   dd      d        j                   dd      d       y )Nrd      rc   c                     t        |       D ]D  \  }}| d | D ]7  }j                   ||      d||f       j                   ||      d        9 F y )Nry   )rf   assertGreaterassertIsri   s       r   rp   zFTestModuleHelpers.test_timedelta_conversion.<locals>.check_units_group   sV    !%(1rA&&qAwAq6:MM!Aq'40 # )r   r   r      r   r      r   i`'  r!   l     !3)	r   get_timedelta_conversion_factorrv   assertEqualrr   rs   ru   rt   r|   )ro   r   rl   rm   rp   rn   s   `    @r   test_timedelta_conversionz+TestModuleHelpers.test_timedelta_conversion|   s   >>%DQtT]A. &DQr4[!, %%j*=DAqMM!Aq'4(MM!Aq'4( >	1 	*%*% 	3b)3f-3k23'BCr   c                 R    t         j                   fd}t        j                  t        t
              D ]  \  }} |||        t        j                  t        t              D ]  \  }} ||        t        j                  t
        t              D ]  \  }} ||        t        j                  t
        t
              D ]  \  }} ||        t        D ]S  } j                   ||      |ddf        j                   |d      |ddf        j                   d|      d       U  j                   dd      d        j                   dd      d        j                   dd      d        j                   d	d
      d        j                   d
d	      d        j                   d	d      d        j                   dd	      d        j                   dd      d        j                   dd      d        j                   dd
      d        j                   dd	      d        j                   dd
      d        j                   dd	      d        j                   dd      d        j                   dd      d       y )Nc                 l    j                  t              5   | |       d d d        y # 1 sw Y   y xY wr   )assertRaisesRuntimeError)dt_unittd_unitrn   ro   s     r   check_errorzFTestModuleHelpers.test_datetime_timedelta_scaling.<locals>.check_error   s'    ""<0'7# 100s   
*3ry   rc   )rc   ry   ry   r   r   )r   r}   ry   )r   ry   r}   r   r   )r      ry   )r   ry   r   r   )r   :	 ry   )r   ry   r   r%   )r%        NZory   )r%   ry   r   )r   :   )r   r   i
  )r   r     )r   r   i@  )r      Y` r   )r   r   r   )r   !get_datetime_timedelta_conversionrr   rs   ru   rt   rv   r   )ro   r   r   r   r   rn   s   `    @r   test_datetime_timedelta_scalingz1TestModuleHelpers.test_datetime_timedelta_scaling   sc   @@	$ !* 1 1*j IGW) !J !* 1 1*j IGWgw !J ) 1 1*j IGWgw !J ) 1 1*j IGWgw !J DQtT]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                    t         j                  }t        D ]M  }| j                   |||      |       | j                   |d|      |       | j                   ||d      |       O | j                   |dd      d       t	        j
                  t        t              D ]  \  }}| j                   |||      d          t	        j
                  t        t              D ]  \  }}| j                   |||      |         y )Nrc   )	r    combine_datetime_timedelta_unitsrv   r   rr   rs   ru   rt   r|   )ro   rn   r   r   r   s        r   %test_combine_datetime_timedelta_unitsz7TestModuleHelpers.test_combine_datetime_timedelta_units   s    ??DQtT]D1Qr4[$/QtR[$/  	2rB' ) 1 1*j IGWMM!GW-t4 !J ) 1 1*j IGWQw0': !Jr   c                    t         j                  }t        D ]  }| j                   |||              d}d}t	        j
                  ||      D ]  \  }}| j                   |||              t	        j
                  ||      D ]  \  }}| j                   |||              t	        j
                  ||      D ]5  \  }}| j                   |||             | j                   |||             7 y )N)r   r   r   r   )	r   r   r   r    r!   r"   r#   r$   r%   )r   	same_kindrv   rg   rr   rs   rh   )ro   rn   uABrl   rm   s          r   test_same_kindz TestModuleHelpers.test_same_kind   s    ((AOOAaG$  ?%%a+DAqOOAaG$ ,%%a+DAqOOAaG$ ,%%a+DAqQq!W%Qq!W% ,r   N)	__name__
__module____qualname____doc__rw   r   r   r   r   r'   r   r   ra   ra   a   s#    &,D2%VN
;&r   ra   c                   $    e Zd Zd Zd Zd Zd Zy)TestMiscCompilingc                       fd} t        j                  d      t        j                  d      t        j                  d            } ||       d} ||       y )Nc                      t        | d      t              }t        dd      t        dd      f}t        | }j	                   || |       y )NTnopythonry   r       r!   )r   r+   DTTDassertPreciseEqual)sigrn   argsexpectedro   s       r   _check_explicit_signaturezPTestMiscCompiling.test_jit_explicit_signature.<locals>._check_explicit_signature   sJ    'C$'4Aa;1d+D"D)H##AtHh7r   r!   r    z5NPDatetime('us')(NPDatetime('ms'), NPTimedelta('us')))r   
NPDatetimeNPTimedeltaro   r   r   s   `  r   test_jit_explicit_signaturez-TestMiscCompiling.test_jit_explicit_signature   sN    	8 %et$U%5%5d%;U=N=Nt=TU!#&E!#&r   c                       fd} t        j                  d      t        j                  d      t         j                        } ||       d} ||       y )Nc                      t        | gd      t              }j                   |t        d      d      t        d             y )NTr   r         )r   r0   r   r   )r   rn   ro   s     r   r   zVTestMiscCompiling.test_vectorize_explicit_signature.<locals>._check_explicit_signature   s8    /	3%$/<A ##AbeQKA7r   r   z)NPTimedelta('s')(NPTimedelta('s'), int64))r   r   int64r   s   `  r   !test_vectorize_explicit_signaturez3TestMiscCompiling.test_vectorize_explicit_signature   sG    	8 %e$U%6%6s%;U[[I!#&9!#&r   c                 V      fd} |t        d              |t        dd             y )Nc                     t        |       } t        d      |      }t        dd      } ||      }j                   ||      |       y NTr      r   r_   r   r   r   r]   pyfuncrn   r)   r   ro   s        r   checkz7TestMiscCompiling.test_constant_datetime.<locals>.check   F    &u-F"T"6*A1c
AayH##AaD(3r   z
2001-01-01NaTr   )r   ro   r   s   ` r   test_constant_datetimez(TestMiscCompiling.test_constant_datetime   s%    	4 	bbnr   c                 |      fd} |t        dd              |t        dd              |t        dd             y )Nc                     t        |       } t        d      |      }t        dd      } ||      }j                   ||      |       y r   r   r   s        r   r   z8TestMiscCompiling.test_constant_timedelta.<locals>.check  r   r   r   r   r   )r   r   s   ` r   test_constant_timedeltaz)TestMiscCompiling.test_constant_timedelta  s4    	4 	bCjbSkbnr   N)r   r   r   r   r   r   r   r'   r   r   r   r      s    ''	r   r   c                   ~    e Zd Z ed      Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zy)TestTimedeltaArithmeticTforceobjc                 8     t        di | j                  |      S Nr'   r   jitargsro   r   s     r   r   zTestTimedeltaArithmetic.jit      "s"T\\"6**r   c                      j                  t               f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              j                  t        t
        f      5   t        dd      t        dd	             d d d        y # 1 sw Y   y xY w)Nc                 j    j                   | |      |       j                   ||       |       y r   r   rl   rm   r   rn   ro   s      r   r   z/TestTimedeltaArithmetic.test_add.<locals>.check  /    ##AaGX6##AaGX6r   ry   r   r   r   r!   iBB r   r   	   r   r    r   )r   r+   r   r   	TypeErrorr	   ro   r   rn   s   ` @r   test_addz 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   E22E;c                      j                  t               f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              j                  t        t
        f      5   t        dd      t        dd	             d d d        y # 1 sw Y   y xY w)Nc                 l    j                   | |      |       j                   ||       |        y r   r   r   s      r   r   z/TestTimedeltaArithmetic.test_sub.<locals>.check-  s1    ##AaGX6##AaGhY7r   r   r   ry   r   r!   i- r   r      r   r    r   )r   r.   r   r   r   r	   r   s   ` @r   test_subz 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                      j                  t               fd} |t        d      t        j                  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             y )Nc                 j    j                   | |      |       j                   ||       |       y r   r   r   s      r   r   z/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_mulz 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                      j                  t               j                  t               fd} |t        dd      t	        j
                  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             y )Nc                 j    j                   | |      |       j                   | |      |       y r   r   )rl   rm   r   divfloordivro   s      r   r   z/TestTimedeltaArithmetic.test_div.<locals>.checkW  s/    ##C1Ix8##HQNH=r   r#   r   r   ry   r   r   r   g      ?   r   r   r   g      @g        r   )r   r2   r4   r   r   r   r   )ro   r   r   r   s   ` @@r   test_divz 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                 D     j                  t               f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              j	                  t
        t        f      5   t        dd      t        dd             d d d        y # 1 sw Y   y xY w)Nc                 8    j                   | |      |       y r   r   )rl   rm   r   r   ro   s      r   r   z;TestTimedeltaArithmetic.test_homogeneous_div.<locals>.checkn  s    ##C1Ix8r   r   r   g@r!   r    gQFoZc?g:@r   z+infr   z-infr   natry   r   r   )r   r2   r   r   r   r   r	   )ro   r   r   s   ` @r   test_homogeneous_divz,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   /FFc                      j                  t               j                  t               f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k  r[ |t        dd	      t        dd      d        |t        dd	      t        dd      d        |t        dd      t        dd      d       y  j                  t        t        f      5   t        dd	      t        dd             d d d         j                  t        t        f      5   t        dd	      t        dd             d d d        y # 1 sw Y   KxY w# 1 sw Y   y xY w)Nc                 4   |}| }t        j                  |       st        j                  |       rd}d}j                   | |      |       j                   ||       |       j                   | |      |       j                   ||       |       y NFTr   isnatr   )rl   rm   r   expected_valnot_expected_valeqnero   s        r   r   z1TestTimedeltaArithmetic.test_eq_ne.<locals>.check  s    #L#+| xx{bhhqk$#' ##Bq!Hl;##Bq!Hl;##Bq!H.>?##Bq!H.>?r   ry   r   FTr   i  r    r   r}   r   Nat)ry      m  r   in  r   r   )r   r7   r9   r   r   r   r   r	   )ro   r   r   r   s   ` @@r   
test_eq_nez"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     j                  t               j                  t               f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        j	                  t
        t        f      5   t        dd      t        dd             d d d         j	                  t
        t        f      5   t        dd      t        dd             d d d         j	                  t
        t        f      5   t        dd      t        dd             d d d         j	                  t
        t        f      5   t        dd      t        dd             d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   cxY w# 1 sw Y   y xY w)Nc                     |}| }t        j                  |       st        j                  |       rd}d}j                   | |      |       j                   | |      |       y NFr   )rl   rm   r   r   r   geltro   s        r   r   z1TestTimedeltaArithmetic.test_lt_ge.<locals>.check  s_    #L#+| xx{bhhqk$#( ##Bq!Hl;##Bq!H.>?r   ry   r   TFr   r   =   <   r   r     r   r  r   r   )r   r;   rA   r   r   r   r	   )ro   r   r  r  s   ` @@r   
test_lt_gez"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                      j                  t               j                  t               f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        j	                  t
        t        f      5   t        dd      t        dd             d d d         j	                  t
        t        f      5   t        dd      t        dd             d d d         j	                  t
        t        f      5   t        dd      t        dd             d d d         j	                  t
        t        f      5   t        dd      t        dd             d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   cxY w# 1 sw Y   y xY w)Nc                     |}| }t        j                  |       st        j                  |       rd}d}j                   | |      |       j                   | |      |       y r  r   )rl   rm   r   r   r   gtlero   s        r   r   z1TestTimedeltaArithmetic.test_le_gt.<locals>.check  s_    #L#+| xx{bhhqk$#( ##Bq!Hl;##Bq!H.>?r   ry   r   TFr   r   r  r	  ;   r   r    r
  r   r  r   r   )r   r=   r?   r   r   r   r	   )ro   r   r  r  s   ` @@r   
test_le_gtz"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/J$0J01J<J!$J-0J9<Kc                      j                  t               fd} |t        d              |t        d              |t        dd              |t        dd              |t        d              |t        dd             y )Nc                 8    j                   |       |        y r   r   )rl   posro   s    r   r   z/TestTimedeltaArithmetic.test_pos.<locals>.check      ##CFQB/r   r   r   r    r   )r   rD   r   )ro   r   r  s   ` @r   test_posz TestTimedeltaArithmetic.test_pos  d    hh{#	0 	bebfbDkbTlbibor   c                      j                  t               fd} |t        d              |t        d              |t        dd              |t        dd              |t        d              |t        dd             y )Nc                 8    j                   |       |         y r   r   )rl   negro   s    r   r   z/TestTimedeltaArithmetic.test_neg.<locals>.check  r  r   r   r   r    r   )r   rG   r   )ro   r   r  s   ` @r   test_negz TestTimedeltaArithmetic.test_neg  r  r   c                      j                  t               fd} |t        d              |t        d              |t        dd              |t        dd              |t        d              |t        dd             y )Nc                 H    j                   |       t        |              y r   )r   rI   rl   rn   ro   s    r   r   z/TestTimedeltaArithmetic.test_abs.<locals>.check      ##AaD#a&1r   r   r   r    r   )r   rJ   r   r   s   ` @r   test_absz TestTimedeltaArithmetic.test_abs  sd    HH[!	2 	bebfbDkbTlbibor   c                       j                  t               fd}d}d}t        ||z   t        ft	        |      z  t
        ft	        |      z  z         D ]  \  }} | ||         y )Nc                 H    j                   |       t        |              y r   )r   rM   r  s    r   r   z0TestTimedeltaArithmetic.test_hash.<locals>.check  s    ##AaD$q'2r   ))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:03Zr&  )r   rN   zipr   lenr   )ro   r   TD_CASESDT_CASEScasetyprn   s   `     @r   	test_hashz!TestTimedeltaArithmetic.test_hash  sm    HH\"	3B9 X0 US]2bUS]5JJLID##t*Lr   c                 B     j                         f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        j                  ||      D ]  \  }} |||        + y )Nc                 F    j                   | |       | |             y r   r   rl   rm   rn   ro   usecases     r   r   z4TestTimedeltaArithmetic._test_min_max.<locals>.check3      ##AaGWQ];r   r   ry   r   r   r   )r   r   rr   rs   ro   rC  r   casesrl   rm   rn   s   ``    @r   _test_min_maxz%TestTimedeltaArithmetic._test_min_max1  s    HHW	< UBqE2a5"U),3ZAsR3ZE3@
E "))%71a 8	
r   c                 .    | j                  t               y r   rG  rR   ro   s    r   test_minz TestTimedeltaArithmetic.test_min=      ;'r   c                 .    | j                  t               y r   rG  rW   rJ  s    r   test_maxz TestTimedeltaArithmetic.test_max@  rL  r   N)r   r   r   dictr   r   r   r   r   r   r   r  r  r  r  r  r   r?  rG  rK  rO  r'   r   r   r   r     s_    D!G+&&&&0,>0(()-V%/N%/N


(
((r   r   c                   $    e Zd Z ed      Zd Zy)TestTimedeltaArithmeticNoPythonTr   c                 \     j                  t               fd}dD ]&  \  }} |t        ||      j                  d             ( dD ]"  } |t	        |      j                  d             $  j                  t        d      5   t	        d             d d d        y # 1 sw Y   y xY w)	Nc                 H    j                   |       t        |              y r   )r   rY   r  s    r   r   z<TestTimedeltaArithmeticNoPython.test_int_cast.<locals>.checkJ  r  r   ))r   r"   )r   r"   )i0u  r"   )i r"   )ry   r   ztimedelta64[ns])r'  r(  r)  r*  r+  r,  r-  r.  r/  r0  r1  r2  r3  r4  r5  r6  r7  r8  datetime64[ns]z;Only datetime64[ns] can be converted, but got datetime64[y])msgr'  )r   rZ   r   astyper   r   r	   )ro   r   deltar   timern   s   `    @r   test_int_castz-TestTimedeltaArithmeticNoPython.test_int_castH  s    HH%&	25MUD"UD/(():;<5-D
 "T(//"234- { 2A C bjMC C Cs   B""B+N)r   r   r   rP  r   rZ  r'   r   r   rR  rR  D  s    D!Gr   rR  c                   r    e Zd Z ed      Zd Zej                  d        Zd Z	d Z
d Zd Zd	 Zd
 Zd Zy)TestDatetimeArithmeticTr   c                 8     t        di | j                  |      S r   r   r   s     r   r   zTestDatetimeArithmetic.jitb  r   r   c              #      K   t        j                         5  t        j                  ddt               d  d d d        y # 1 sw Y   y xY ww)Nignorez-Implicitly casting between incompatible kinds)messagecategory)warningscatch_warningsfilterwarningsDeprecationWarningrJ  s    r   silence_numpy_warningsz-TestDatetimeArithmetic.silence_numpy_warningse  s;      $$&##H,[-?A 	 '&&s   A!A	AA
Ac                 	     j                  t               j                  t               f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        ||z         }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 ]`  } j                   ||      ||z   ||f        j                   ||      ||z   ||f        j                   ||       ||z   ||f       b    |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 ]  } j                  t        t        f      5   |t        d*d)      t	        d*d             d+d+d+        j                  t        t        f      5   |t        d*d)      t	        d*d             d+d+d+        y+# 1 sw Y   MxY w# 1 sw Y   xY w),zQ
        Test `datetime64 + timedelta64` and `datetime64 - timedelta64`.
        c                 $   j                         5  j                   | |      || |f       j                   ||       || |f       j                   | |       || |f       j                  | |z   |       d d d        y # 1 sw Y   y xY wr   rf  r   )rl   rm   r   addro   subs      r   r   z<TestDatetimeArithmetic.test_add_sub_timedelta.<locals>.checku  s    ,,.''Aq	8aVD''Aq	8aVD''Ar
Hq!fE''Ax8 /..s   A+BBr'  r   r   r(  r   r+  r   r   r/  r   r   r0  r)  r  r.  r*  r-  r,  z
2014-02-03r1  r3  r#  r6  z
2012-02-02z
2012-02-29z
2012-02-16r8  r   z2000-01-01T03:02:03Zr    r7  )6006016048011900190422002300230424006001)rc   -01-12d   r$  ir%  r   r   
2014-01-01ry   N)	r   r+   r.   r   r   r   r   r   r	   )	ro   r   dt_str	dt_suffixdttdrn   rj  rk  s	   `      @@r   test_add_sub_timedeltaz-TestDatetimeArithmetic.test_add_sub_timedeltao  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R["r'B8D$$SR["r'B8D$$SbS\27RH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   8S"9S."S+	.S7	c                     g d}g d}t        j                  ||      D cg c]  \  }}t        ||z          }}}||D cg c]  }t        |d       c}z  }|S c c}}w c c}w )N)rl  rm  rn  196819691973r)  200420052100ru  2401)rc   rw  rx  z-02-28z-12-31z-01-05T12:30:56Zz-01-05T12:30:56.008Zr   )rr   rs   r   )ro   dt_yearsdt_suffixesrl   rm   dtsr   s          r   datetime_samplesz'TestDatetimeArithmetic.datetime_samples  sn    CC'0'8'8;'OP'OVar!a%y'OPH-Hq1c
H--
 Q-s   AA"c                 B     j                  t              d f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              j	                         5   j                         }t        j                  ||      D ]M  \  }}t        j                  t        |      t        |            s/ j                   ||      ||z
  ||f       O 	 ddd       y# 1 sw Y   yxY w)z1
        Test `datetime64 - datetime64`.
        Nc                     j                         5  j                   | |      | |z
  | |f       j                   ||       || z
  | |f       j                  | |z
  |       d d d        y # 1 sw Y   y xY wr   ri  )rl   rm   r   ro   rk  s      r   r   z>TestDatetimeArithmetic.test_datetime_difference.<locals>.check  so    ,,.''Aq	1q51a&A''Aq	1q51a&A''Ax8	 /..s   AA//A8r'  2017r   r   r*  z2017-01ir   z
2014-02-28z
2015-03-01ir   r   r)  z
2000-01-01r   )r   r.   r   r   rf  r  rr   rs   r   r   r   r   )ro   r   r  rl   rm   rk  s   `    @r   test_datetime_differencez/TestDatetimeArithmetic.test_datetime_difference  s7    hh{#	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!))#s31*44Z]JqMR''Aq	1q51a&A 4 +**s   A7FFc           
         	
  j                  t              
 j                  t               j                  t               j                  t               j                  t
               j                  t              
 fd		 f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        j                         }|D ]  }|j                  j                  j                  d      d   d d }t        j                  |      }t        ||dz    }|D ]  }|j                  d|z        }t        j                   t#        |      t#        |            s@ 	||d        |||t%        j&                  d|      z   d        ||t%        j&                  d|      z
  |d         y )Nc                 ,   |}| }t        j                  |       st        j                  |      rd}d}j                   | |      | |f       j                   | |      | |f       j                   ||       | |f       j                   ||       | |f       j                   	| |      | |f       j                   | |      | |f       j                   	||       | |f       j                   ||       | |f       j                         5  j	                   | |      || ||f       j	                   ||       || ||f       j	                   
| |      || ||f       j	                   
||       || ||f       |r؉j                   | |      | |f       j                   | |      | |f       j                   ||       | |f       j                   ||       | |f       j                   	| |      | |f       j                   | |      | |f       j                   	||       | |f       j                   ||       | |f       j	                  | |k(  |       d d d        y # 1 sw Y   y xY wr   )r   r   rh   rf  r   rg   )rl   rm   r   r   r   r   r  r  r  r  r   ro   s        r   check_eqz9TestDatetimeArithmetic.test_comparisons.<locals>.check_eq  sw   #L#+| xx{bhhqk$#'   AqAq62  AqAq62  AqAq62  AqAq62  AqAq62  AqAq62  AqAq62  AqAq62,,.''1a,Ax@PQ''1a,Ax@PQ''1a2BQ8DTU''1a2BQ8DTUOOBq!Hq!f5OOBq!Hq!f5OOBq!Hq!f5OOBq!Hq!f5$$R1X1v6$$R1X1v6$$R1X1v6$$R1X1v6''Q=# /..s   E$J

Jc                 
   |}| }t        j                  |       st        j                  |      rd}d}
j                         5  
j                  t              }
j                   || |      || ||f       
j                   ||       || ||f       
j                   | |      || ||f       
j                   	||       || ||f       |r
 | |d       
j                  | |k  |       d d d        y # 1 sw Y   y xY wr  )r   r   rf  r   r;   r   )rl   rm   r   r   r   r  r  r  r  r  ro   s         r   check_ltz9TestDatetimeArithmetic.test_comparisons.<locals>.check_lt  s    #L#+| xx{bhhqk$#( ,,.XXj)''1a,Ax@PQ''1a,Ax@PQ''1a2BQ8DTU''1a2BQ8DTUQ5)''A|< /..s   B+C99Dr'  r  Fz2014-01Trz  r   z
2014-01-02r2  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   r7   r9   r;   r=   r?   rA   r   r  r   strsplitrv   indexrW  r   r   r   r   timedelta64)ro   r  r  rl   a_unitrk   unitsr   rm   r  r   r  r  r  r  r   s   `        @@@@@@@r   test_comparisonsz'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At$Aq$ 77>R^^At44a>  r   c                 J     j                         f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        j                  ||      D ]  \  }} |||        + y )Nc                 F    j                   | |       | |             y r   r   rB  s     r   r   z3TestDatetimeArithmetic._test_min_max.<locals>.check<  rD  r   r   r"   ry   r   r   r   )r   r   rr   rs   rE  s   ``    @r   rG  z$TestDatetimeArithmetic._test_min_max:  s    HHW	< 4["Q+r!T{BudOD3ZAsR3ZE3@
E "))%71a 8	
r   c                 .    | j                  t               y r   rI  rJ  s    r   rK  zTestDatetimeArithmetic.test_minF  rL  r   c                 .    | j                  t               y r   rN  rJ  s    r   rO  zTestDatetimeArithmetic.test_maxI  rL  r   N)r   r   r   rP  r   r   
contextlibcontextmanagerrf  r  r  r  r  rG  rK  rO  r'   r   r   r\  r\  ^  sR    D!G+  ?3BB6d?L
((r   r\  c                       e Zd Z ed      Zy)TestDatetimeArithmeticNoPythonTr   N)r   r   r   rP  r   r'   r   r   r  r  L  s    D!Gr   r  c                   8    e Zd ZdZddifdZd ZddifdZd Zy)	TestMetadataScalingFactorzf
    Tests than non-1 scaling factors are not supported in datetime64
    and timedelta64 dtypes.
    r   Tc                      t        di |t              }| j                   |t        dd      t        d                   y )Nr'  10Y2010r'   )r   r7   rg   r   ro   r   r   s      r   test_datetimez'TestMetadataScalingFactor.test_datetimeW  s2    S^7^J'2fe,bj9:r   c                 v    | j                         5  | j                  ddi       d d d        y # 1 sw Y   y xY wNr   T)r   )assertTypingErrorr  rJ  s    r   test_datetime_npmz+TestMetadataScalingFactor.test_datetime_npm[  s0    ##%
4'89 &%%   /8c           	           t        di |t              }| j                   |t        dd      t        dd                   y )Nr   r     r   r'   )r   r7   rg   r   r  s      r   test_timedeltaz(TestMetadataScalingFactor.test_timedelta_  s3    S^7^J'2a<B56r   c                 v    | j                         5  | j                  ddi       d d d        y # 1 sw Y   y xY wr  )r  r  rJ  s    r   test_timedelta_npmz,TestMetadataScalingFactor.test_timedelta_npmc  s0    ##%D(9: &%%r  N)r   r   r   r   r  r  r  r  r'   r   r   r  r  Q  s/    
 &0$5 ;: '1%6 7;r   r  c                       e Zd Zd Zy)TestDatetimeDeltaOpsc                 d   d }|}t        |      }t        j                  dt              t        j                  dt              ft        j                  dt              t        j                  dt              ft        j                  dt              t        j                  dt              ft        j                  dt              t        j                  dt              ft        j                  dt              dft        j                  dt              t        j                  dt        j
                        ft        j                  dt              t        j                  dt        j                        fg}|D ]8  \  }}| j                  t        j                   |||       |||                   : y)zC
        Test the division of a timedelta by numeric types
        c                     | |z  S r   r'   )rl   rm   s     r   arr_divz.TestDatetimeDeltaOps.test_div.<locals>.arr_divm  s    q5Lr   r   ry   N)	r   r   onesTIMEDELTA_MTIMEDELTA_Yr   float64rg   array_equal)ro   r  py_funccfunc
test_casesrl   rm   s          r   r   zTestDatetimeDeltaOps.test_divi  s    	 WWWQ$bgga&=>WWQ$bgga&=>WWQ$bgga&=>WWQ$bgga&=>WWQ$a(WWQ$bgga&:;WWQ$bgga&<=

 DAqOOBNN71a=%1+FG r   N)r   r   r   r   r'   r   r   r  r  h  s    Hr   r  c                       e Zd Zd Zd Zed        Zd Zed        Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zed        Zed        Zed        Zed        Zd Zy)TestDatetimeArrayOpsc           
         fd}t        j                  t        j                  d      t        j                  d      t        j                  d      t        j                  d      gd      }t        j                  t        j                  d      t        j                  d      t        j                  d      t        j                  d      gd      }|} t        |	      |      }|t        j                  d
      f|t        j                  d
      f|t        j                  d      f|t        j                  d      fg}t         j
                  u ri|j                  t        j                  d
      |ft        j                  d
      |ft        j                  d      |ft        j                  d      |fg       |D ]8  \  }	}
| j                  t        j                   ||	|
       ||	|
                   : y)zY
        Test the addition/subtraction of a datetime array with a timedelta type
        c                      | |      S r   r'   rl   rm   	operations     r   implz6TestDatetimeArrayOps._test_td_add_or_sub.<locals>.impl  s    Q?"r   
2011-01-01
1971-02-02
2021-03-03
2004-12-07rU  r   zdatetime64[D]parallel  i*N)	r   array
datetime64r   r  rj  extendrg   r  )ro   r  r  r  arr_onearr_twor  r  r  rl   rm   s    `         r   _test_td_add_or_subz(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	  DAqOOBNN71a=%1+FG r   c                 D    | j                  t        j                  d       y r  r  r   rj  rJ  s    r   test_add_tdz TestDatetimeArrayOps.test_add_td  s      /r   c                 D    | j                  t        j                  d       y NTr  rJ  s    r   test_add_td_parallelz)TestDatetimeArrayOps.test_add_td_parallel  s      .r   c                 D    | j                  t        j                  d       y r  r  r   subtractrJ  s    r   test_sub_tdz TestDatetimeArrayOps.test_sub_td  s      e4r   c                 D    | j                  t        j                  d       y r  r  rJ  s    r   test_sub_td_parallelz)TestDatetimeArrayOps.test_sub_td_parallel  s      d3r   c                 Z   t         fd       }j                  }t        j                  d| d      }| j	                  t
        t        f|      5   |t        j                  t        j                  d      gd      t        j                  dd             d	d	d	       y	# 1 sw Y   y	xY w)
z
        Tests that attempting to add/sub a datetime64 and timedelta64
        with types that cannot be cast raises a reasonable exception.
        c                      | |      S r   r'   r  s     r   r  z<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  rU  r  r  r   N)r   r   reescapeassertRaisesRegexr	   r   r   r  r  r  )ro   r  r  fnamer   s    `   r   _test_add_sub_td_no_matchz.TestDatetimeArrayOps._test_add_sub_td_no_match  s    
 
	# 
	# ""99w /B B D##[)$<hG"--57/1tC( HGGs   AB!!B*c                 B    | j                  t        j                         y r   )r  r   rj  rJ  s    r   test_add_td_no_matchz)TestDatetimeArrayOps.test_add_td_no_match  s    &&rvv.r   c                 B    | j                  t        j                         y r   )r  r   r  rJ  s    r   test_sub_td_no_matchz)TestDatetimeArrayOps.test_sub_td_no_match  s    &&r{{3r   c                    t        j                  t        dd      t        dd      t        dd      t        dd      g      t        j                  t        dd      t        dd      t        dd      t        d	d      t        d
d      g      t        j                  t        dd      t        dd      t        dd      t        d	d      t        d
d      g      t        j                  t        dd      t        dd      t        dd      t        d	d      t        d
d      t        dd      g      t        j                  t        dd      t        dd      t        dd      t        dd      t        d	d      t        d
d      g      t        j                  t        dd      t        dd      g      t        j                  t        dd      t        dd      t        dd      g      t        j                  t        dd      t        dd      t        dd      t        dd      g      t        j                  t        dd      t        dd      t        dd      t        dd      g      t        j                  t        dd      t        dd      t        dd      t        dd      t        dd      g      t        j                  t        dd      t        dd      t        dd      t        dd      t        dd      g      t        j                  t        dd      g      t        j                  t        dd      t        dd      t        dd      g      g}|S )Nr   r"   ry   r   r   r  r  z
1900-01-01r  r  r   r   r   )r   r  r   r   )ro   r  s     r   _get_testcasesz#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                    |rt         j                  u rd }n	d }nfd}|} t        |      |      }| j                         }|D ]  } ||      }	 ||      }
t        j                  |	      st        j                  |
      rI| j                  t        j                  |	             | j                  t        j                  |
             | j                  |	|
        y )Nc                 "    | j                         S r   rP   arrs    r   r  z0TestDatetimeArrayOps._test_min_max.<locals>.impl%      779$r   c                 "    | j                         S r   rU   r  s    r   r  z0TestDatetimeArrayOps._test_min_max.<locals>.impl(  r  r   c                      |       S r   r'   )r  r  s    r   r  z0TestDatetimeArrayOps._test_min_max.<locals>.impl+  s     ~%r   r  )r   rQ   r   r  r   rg   r   )ro   r  r  methodr  r  r  r  r  py_resc_ress    `         r   rG  z"TestDatetimeArrayOps._test_min_max"  s    BFF"%%& 'h'-((*
CS\F#JExx288E? 010  / r   c                 2    | j                  t        dd       y r  )rG  rQ   rJ  s    r   test_min_funcz"TestDatetimeArrayOps.test_min_func;      3u-r   c                 F    | j                  t        j                  dd       y r  rG  r   rQ   rJ  s    r   test_np_min_funcz%TestDatetimeArrayOps.test_np_min_func>      2665%0r   c                 F    | j                  t        j                  dd       y r   r  rJ  s    r   test_min_methodz$TestDatetimeArrayOps.test_min_methodA      2665$/r   c                 2    | j                  t        dd       y r  )rG  rV   rJ  s    r   test_max_funcz"TestDatetimeArrayOps.test_max_funcD  r  r   c                 F    | j                  t        j                  dd       y r  rG  r   rV   rJ  s    r   test_np_max_funcz%TestDatetimeArrayOps.test_np_max_funcG  r  r   c                 F    | j                  t        j                  dd       y r   r  rJ  s    r   test_max_methodz$TestDatetimeArrayOps.test_max_methodJ  r  r   c                 F    | j                  t        j                  dd       y NTFr  rJ  s    r   test_min_func_parallelz+TestDatetimeArrayOps.test_min_func_parallelM      2664/r   c                 F    | j                  t        j                  dd       y r  r  rJ  s    r   test_min_method_parallelz-TestDatetimeArrayOps.test_min_method_parallelQ      2664.r   c                 F    | j                  t        j                  dd       y r  r  rJ  s    r   test_max_func_parallelz+TestDatetimeArrayOps.test_max_func_parallelU  r  r   c                 F    | j                  t        j                  dd       y r  r  rJ  s    r   test_max_method_parallelz-TestDatetimeArrayOps.test_max_method_parallelY  r  r   c           	          ddl m}m}m} |||g}|D cg c]  }t	        |       }} fd} j                         }t        ||      D ]  \  }	}
|D ]  }t        j                  |      }t        dt        d|j                        dz         D ]Q  }t        j                  j                  d|j                  |      }||   }|dk(  r|\  } ||	|
||        ||	|
||       S   y c c}w )Nry   )searchsortedsearchsorted_leftsearchsorted_rightc                 N     | ||      } |||      }j                  ||       y r   r   )r   r  rl   vr   gotro   s         r   r   z>TestDatetimeArrayOps.test_searchsorted_datetime.<locals>.checkd  s)    a|H1+C##Hc2r   r   r   )test_np_functionsr  r  r  r   r  r9  r   sortrangerQ   sizerandomrandint)ro   r  r  r  pyfunc_listfn
cfunc_listr   rF  r   r  r  nidxvsr  s   `               r   test_searchsorted_datetimez/TestDatetimeArrayOps.test_searchsorted_datetime]  s    	
 	
 $%68JK(34"c"g
4	3
 ##% j9MFEggclq#a"2Q"67A))++Asxx;CSBAv feS!4&%b1 8  : 5s   C&N)r   r   r   r  r  r   r  r  r  r  r  r  r  rG  r  r   r  r  r	  r  r  r  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                       e Zd Zd Zy)TestDatetimeTypeOpsc                     t         d        }t         d        }t         d        }t        j                  dd      }t        j                  dd      }||z
  } fd}|||g}|||g}	t        j                  ||	      D ]  \  }
} ||
|        y )Nc                 "    t        | t              S r   )
isinstancecomplexrl   s    r   
is_complexz@TestDatetimeTypeOps.test_isinstance_datetime.<locals>.is_complexy  s    a))r   c                 6    t        | t        j                        S r   )r/  r   r  r1  s    r   is_datetimezATestDatetimeTypeOps.test_isinstance_datetime.<locals>.is_datetime|  s    a//r   c                 6    t        | t        j                        S r   )r/  r   r  r1  s    r   is_timedeltazBTestDatetimeTypeOps.test_isinstance_datetime.<locals>.is_timedelta  s    a00r   ry   r"   r   c                     j                  | j                   dt        |      j                   d      5   | |      }| j                  |      }j	                  ||       d d d        y # 1 sw Y   y xY w)N())subTestr   typer  r   )jit_funcr)   r  expectro   s       r   r   z;TestDatetimeTypeOps.test_isinstance_datetime.<locals>.check  sd    !2!2 31T!W5E5E4FaHIqk!))!,  f- JIIs   ,A++A4)r   r   r  rr   rs   )ro   r2  r4  r6  dt_adt_btd_cr   fnsr   r%  args   `           r   test_isinstance_datetimez,TestDatetimeTypeOps.test_isinstance_datetimex  s    		* 
	*		0 
	0		1 
	1 }}Q%}}Q%d{	. 
 

 !((d3GB"cN 4r   N)r   r   r   rC  r'   r   r   r,  r,  w  s     r   r,  __main__)Dr   r  rr   r  unittestrb  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   rt   ru   rv   r+   r.   r0   r2   r4   r7   r9   r;   r=   r?   rA   rD   rG   rJ   rN   rR   rW   rZ   r_   ra   r  r   r  r   r   r   rR  r\  r  r  r  r  r,  r   mainr'   r   r   <module>rN     s     	    & & 0 $ ) G G 6bhh'(bhh'(
 
J
#	s& s&l ^^]]3 3lp(h p(f	&= 4l(X l(\"%; "
; ;.H8 H.t28 t2p!( !H zHMMO r   