
    J/Ph                        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j        d	          Z ej        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j5        Z6ej7        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jC                     dS dS )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                 B    t          j        | j                  }|j        S N)r   
from_dtypedtypeunit)valtys     [/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/tests/test_npdatetime.py
value_unitr      s    		!#)	,	,B7N    )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   s    6Mr   c                     | |k    S r   r'   r(   s     r   
eq_usecaser6   4       6Mr   c                     | |k    S r   r'   r(   s     r   
ne_usecaser9   7   r7   r   c                     | |k     S r   r'   r(   s     r   
lt_usecaser;   :       q5Lr   c                     | |k    S r   r'   r(   s     r   
le_usecaser>   =   r7   r   c                     | |k    S r   r'   r(   s     r   
gt_usecaser@   @   r<   r   c                     | |k    S r   r'   r(   s     r   
ge_usecaserB   C   r7   r   c                     | 
 S r   r'   r)   s    r   pos_usecaserE   F   	    2Ir   c                     |  S r   r'   rD   s    r   neg_usecaserH   I   rF   r   c                      t          |           S r   )absrD   s    r   abs_usecaserK   L       q66Mr   c                      t          |           S r   )hashrD   s    r   hash_usecaserO   O   s    77Nr   c                 "    t          | |          S r   minr(   s     r   min_usecaserS   R       q!99r   c                 "    t          | |          S r   maxr(   s     r   max_usecaserX   U   rT   r   c                      t          |           S r   )intrD   s    r   int_cast_usecaser[   X   rL   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                   0    e Zd ZdZd Zd Zd Zd Zd ZdS )TestModuleHelpersz?
    Test the various helpers in numba.npdatetime_helpers.
    c                 (    t           j        t          j        t          t
                    D ]I\  }}                      ||          ||f                                 ||          ||f           Jt          D ]@}                      |d                                           d|                     At          dz   D ]!}                      ||                     " fd} |t                      |t
                     d S )N rd   c                     t          |           D ]P\  }}| d |         D ]@}                     ||                                          ||                     AQd S r   )	enumerate
assertTrueassertFalsegroupiabfselfs       r   check_units_groupzDTestModuleHelpers.test_can_cast_timedelta.<locals>.check_units_groupq   s    !%(( . .1rr . .AOOAAaGG,,,$$QQq!WW----	.. .r   )	r   can_cast_timedelta_units	itertoolsproduct
date_units
time_unitsri   	all_unitsrh   )rp   rm   rn   r   rq   ro   s   `    @r   test_can_cast_timedeltaz)TestModuleHelpers.test_can_cast_timedeltaf   s>   7%j*== 	. 	.DAqQQq!WWq!f---QQq!WWq!f---- 	) 	)DQQtR[[)))OOAAb$KK((((% 	+ 	+DOOAAdDMM****	. 	. 	. 	. 	. 	. 	*%%%*%%%%%r   c                     t           j        t          dz   D ]"}                      ||          d           #t          D ]"}                      d|          d           #t	          j        t          t                    D ]E\  }}                      ||          d                                  ||          d            F fd} |t                      |t                                           dd          d                                 dd	          d
                                 dd          d                                 dd          d           d S )Nre      rd   c                     t          |           D ]U\  }}| d |         D ]E}                     ||          d||f                                ||          d            FVd S )Nrz   )rg   assertGreaterassertIsrj   s       r   rq   zFTestModuleHelpers.test_timedelta_conversion.<locals>.check_units_group   s    !%(( 1 11rr 1 1A&&qqAwwAq6:::MM!!Aq''4000011 1r   r   r      r   r      r   i`'  r!   l     !3)	r   get_timedelta_conversion_factorrw   assertEqualrs   rt   rv   ru   r}   )rp   r   rm   rn   rq   ro   s   `    @r   test_timedelta_conversionz+TestModuleHelpers.test_timedelta_conversion|   s   >% 	/ 	/DQQtT]]A.... 	- 	-DQQr4[[!,,,,%j*== 	) 	)DAqMM!!Aq''4(((MM!!Aq''4((((	1 	1 	1 	1 	1 	1 	*%%%*%%% 	3b)))3f---3k2223'BCCCCCr   c                 V    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 ]h}                      ||          |ddf                                 |d          |ddf                                 d|          d           i                      dd          d                                 dd          d                                 dd          d                                 d	d
          d                                 d
d	          d                                 d	d          d                                 dd	          d                                 dd          d                                 dd          d                                 dd
          d                                 dd	          d                                 dd
          d                                 dd	          d                                 dd          d                                 dd          d           d S )Nc                                          t                    5   | |           d d d            d S # 1 swxY w Y   d S r   )assertRaisesRuntimeError)dt_unittd_unitro   rp   s     r   check_errorzFTestModuleHelpers.test_datetime_timedelta_scaling.<locals>.check_error   s    ""<00 $ $'7###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $s   6::rz   rd   )rd   rz   rz   r   r   )r   r~   rz   )r   rz   r~   r   r   )r      rz   )r   rz   r   r   )r   :	 rz   )r   rz   r   r%   )r%        NZorz   )r%   rz   r   )r   :   )r   r   i
  )r   r     )r   r   i@  )r      Y` r   )r   r   r   )r   !get_datetime_timedelta_conversionrs   rt   rv   ru   rw   r   )rp   r   r   r   r   ro   s   `    @r   test_datetime_timedelta_scalingz1TestModuleHelpers.test_datetime_timedelta_scaling   st   @	$ 	$ 	$ 	$ 	$ 	$ !* 1*j I I 	* 	*GWK)))) !* 1*j I I 	  	 GWAgw ) 1*j I I 	  	 GWAgw ) 1*j I I 	  	 GWAgw 	6 	6DQQtT]]T1aL999QQtR[[4A,777QQr4[[*55552rJ///3l3333l3333k2223k2223&=>>>3&=>>>3';<<<4';<<<3&@AAA3&DEEE3&EFFF3&IJJJ3&OPPP3&TUUUUUr   c                 F   t           j        }t          D ]b}|                      |||          |           |                      |d|          |           |                      ||d          |           c|                      |dd          d           t	          j        t          t                    D ]%\  }}|                      |||          d            &t	          j        t          t                    D ]%\  }}|                      |||          |           &d S )Nrd   )	r    combine_datetime_timedelta_unitsrw   r   rs   rt   rv   ru   r}   )rp   ro   r   r   r   s        r   %test_combine_datetime_timedelta_unitsz7TestModuleHelpers.test_combine_datetime_timedelta_units   s0   ? 	0 	0DQQtT]]D111QQr4[[$///QQtR[[$////2rB''' ) 1*j I I 	5 	5GWMM!!GW--t4444 ) 1*j I I 	; 	;GWQQw00'::::	; 	;r   c                    t           j        }t          D ]!}|                      |||                     "d}d}t	          j        ||          D ]$\  }}|                      |||                     %t	          j        ||          D ]$\  }}|                      |||                     %t	          j        ||          D ]C\  }}|                      |||                     |                      |||                     Dd S )N)r   r   r   r   )	r   r   r   r    r!   r"   r#   r$   r%   )r   	same_kindrw   rh   rs   rt   ri   )rp   ro   uABrm   rn   s          r   test_same_kindz TestModuleHelpers.test_same_kind   s)   ( 	% 	%AOOAAaGG$$$$ ?%a++ 	% 	%DAqOOAAaGG$$$$%a++ 	% 	%DAqOOAAaGG$$$$%a++ 	& 	&DAqQQq!WW%%%QQq!WW%%%%	& 	&r   N)	__name__
__module____qualname____doc__rx   r   r   r   r   r'   r   r   rb   rb   a   sp         & & &,D D D2%V %V %VN
; 
; 
;& & & & &r   rb   c                   &    e Zd Zd Zd Zd Zd ZdS )TestMiscCompilingc                       fd} t          j        d          t          j        d          t          j        d                    } ||           d} ||           d S )Nc                      t          | d          t                    }t          dd          t          dd          f}t          | }                     || |           d S )NTnopythonrz   r       r!   )r   r+   DTTDassertPreciseEqual)sigro   argsexpectedrp   s       r   _check_explicit_signaturezPTestMiscCompiling.test_jit_explicit_signature.<locals>._check_explicit_signature   se    'C$'''44Aa;;1d+D"D)H##AAtHh77777r   r!   r    z5NPDatetime('us')(NPDatetime('ms'), NPTimedelta('us')))r   
NPDatetimeNPTimedeltarp   r   r   s   `  r   test_jit_explicit_signaturez-TestMiscCompiling.test_jit_explicit_signature   s}    	8 	8 	8 	8 	8 %et$$U%5d%;%;U=Nt=T=TUU!!#&&&E!!#&&&&&r   c                       fd} t          j        d          t          j        d          t           j                  } ||           d} ||           d S )Nc                      t          | gd          t                    }                     |t          d          d          t          d                     d S )NTr   r         )r   r0   r   r   )r   ro   rp   s     r   r   zVTestMiscCompiling.test_vectorize_explicit_signature.<locals>._check_explicit_signature   sU    /	3%$///<<A ##AAbeeQKKA77777r   r   z)NPTimedelta('s')(NPTimedelta('s'), int64))r   r   int64r   s   `  r   !test_vectorize_explicit_signaturez3TestMiscCompiling.test_vectorize_explicit_signature   st    	8 	8 	8 	8 	8 %e$$U%6s%;%;U[II!!#&&&9!!#&&&&&r   c                 t      fd} |t          d                      |t          dd                     d S )Nc                     t          |           } t          d          |          }t          dd          } ||          }                     ||          |           d S NTr      r   r`   r   r   r   r^   pyfuncro   r)   r   rp   s        r   checkz7TestMiscCompiling.test_constant_datetime.<locals>.check   h    &u--F"T"""6**A1c

AvayyH##AAaDD(33333r   z
2001-01-01NaTr   r   rp   r   s   ` r   test_constant_datetimez(TestMiscCompiling.test_constant_datetime   sT    	4 	4 	4 	4 	4 	bbnnr   c                       fd} |t          dd                      |t          dd                      |t          dd                     d S )Nc                     t          |           } t          d          |          }t          dd          } ||          }                     ||          |           d S 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  sl    	4 	4 	4 	4 	4 	bCjjbSkkbnnr   N)r   r   r   r   r   r   r   r'   r   r   r   r      sP        ' ' '' ' '  	 	 	 	 	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dS )TestTimedeltaArithmeticTforceobjc                 6     t          di | j        |          S Nr'   r   jitargsrp   r   s     r   r   zTestTimedeltaArithmetic.jit  "    "s""T\""6***r   c                                           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                                          t          t
          f          5   t          dd          t          dd	                     d d d            d S # 1 swxY w Y   d S )Nc                                           | |          |                                 ||           |           d S r   r   rm   rn   r   ro   rp   s      r   r   z/TestTimedeltaArithmetic.test_add.<locals>.check  I    ##AAaGGX666##AAaGGX66666r   rz   r   r   r   r!   iBB r   r   	   r   r    r   )r   r+   r   r   	TypeErrorr	   rp   r   ro   s   ` @r   test_addz TestTimedeltaArithmetic.test_add  s   HH[!!	7 	7 	7 	7 	7 	7 	beeRUUBqEE"""bCjj"Q**bCjj111bCjj"Q++r'4'8'8999bCjj"Q**bCjj111biiA5		***bnnbCjj"UC..999bnnbDkk2eT??;;;	;788 	& 	&AbCjj"Q**%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&   ?)G55G9<G9c                                           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                                          t          t
          f          5   t          dd          t          dd	                     d d d            d S # 1 swxY w Y   d S )Nc                                           | |          |                                 ||           |            d S r   r   r   s      r   r   z/TestTimedeltaArithmetic.test_sub.<locals>.check-  sK    ##AAaGGX666##AAaGGhY77777r   r   r   rz   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 	8 	8 	8 	8 	8 	beeRUUBqEE"""bCjj"Q**bCjj111bCjj"Q++r'4'8'8999bCjj"Q**bCjj111biiA5		***bnnbCjj"UC..999bnnbDkk2eT??;;;	;788 	& 	&AbCjj"Q**%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&r   c                                           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                     d S )Nc                                           | |          |                                 ||           |           d S 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 	7 	7 	7 	7 	7
 	beeRYq\\2a55)))beeQ1bDkk1bDkk***booq"UD//222beeS"R&&!!!bffc2c77###bDkk4C///bffdBrFF###bootRt__555bDkk5<<E4999boor2a;;/////r   c                                           t                                          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                     d S )Nc                                           | |          |                                 | |          |           d S r   r   )rm   rn   r   divfloordivrp   s      r   r   z/TestTimedeltaArithmetic.test_div.<locals>.checkW  sI    ##CC1IIx888##HHQNNH=====r   r#   r   r   rz   r   r   r   g      ?   r   r   r   g      @g        r   )r   r2   r4   r   r   r   r   )rp   r   r   r   s   ` @@r   test_divz TestTimedeltaArithmetic.test_divT  s3   hh{##88,--	> 	> 	> 	> 	> 	> 	>
 	bTllBIaLL"R,,777beeQ1bTllAr"d||,,,booq"UD//222bDkk1boo...booq"UD//222beeS"R&&!!!bTllCB...boosBudOO444bDkk35$000boosBudOO444bDkk5<<E4999boouU||Rt__=====r   c                 p                          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                                          t
          t          f          5   t          dd          t          dd                     d d d            d S # 1 swxY w Y   d S )Nc                 H                          | |          |           d S r   r   )rm   rn   r   r   rp   s      r   r   z;TestTimedeltaArithmetic.test_homogeneous_div.<locals>.checkn  s)    ##CC1IIx88888r   r   r   g@r!   r    gQFoZc?g:@r   z+infr   z-infr   natrz   r   r   )r   r2   r   r   r   r   r	   )rp   r   r   s   ` @r   test_homogeneous_divz,TestTimedeltaArithmetic.test_homogeneous_divl  s    hh{##	9 	9 	9 	9 	9 	9 	beeRUUG$$$bDkk2a;;
333bDkk2a;;
333beeRUUE&MM***bffbeeU6]]+++beeRUUE%LL)))biiAe---beeRYYe---biiAe---	;788 	( 	(C1c

Bq#JJ'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s   5)H++H/2H/c                 <                          t                                          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           d S                      t          t          f          5   t          dd	          t          dd                     d d d            n# 1 swxY w Y                        t          t          f          5   t          dd	          t          dd                     d d d            d S # 1 swxY w Y   d S )Nc                 j   |}| }t          j        |           st          j        |           rd}d}                     | |          |                                ||           |                                | |          |                                ||           |           d S NFTr   isnatr   )rm   rn   r   expected_valnot_expected_valeqnerp   s        r   r   z1TestTimedeltaArithmetic.test_eq_ne.<locals>.check  s    #L#+| x{{ (bhqkk ($#' ##BBq!HHl;;;##BBq!HHl;;;##BBq!HH.>???##BBq!HH.>?????r   rz   r   FTr   i  r    r   r~   r   Nat)rz      m  r   in  r   r   )r   r6   r9   r   r   r   r   r	   )rp   r   r   r   s   ` @@r   
test_eq_nez"TestTimedeltaArithmetic.test_eq_ne  sY   XXj!!XXj!!	@ 	@ 	@ 	@ 	@ 	@ 	@ 	beeRUUE"""beeRUUD!!!bCjj"Q**e,,,bCjj"Q**d+++bsmmR3ZZ///btnnbCjj$///bCjj"R++t,,,biiED)))boor%~~t444biiA&&&7""E"Q**bcllE222E"Q**bcllE222E"UC.."UC..$77777 ""I{#;<< - -2a::r#s||,,,- - - - - - - - - - - - - - -""I{#;<< - -2a::r#s||,,,- - - - - - - - - - - - - - - - - -s$   :)J//J36J3)LLLc                                           t                                          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                                t
          t          f          5   t          dd          t          dd                     d d d            n# 1 swxY w Y                        t
          t          f          5   t          dd          t          dd                     d d d            n# 1 swxY w Y                        t
          t          f          5   t          dd          t          dd                     d d d            n# 1 swxY w Y                        t
          t          f          5   t          dd          t          dd                     d d d            d S # 1 swxY w Y   d S )Nc                     |}| }t          j        |           st          j        |           rd}d}                     | |          |                                | |          |           d S NFr   )rm   rn   r   r   r   geltrp   s        r   r   z1TestTimedeltaArithmetic.test_lt_ge.<locals>.check  s    #L#+| x{{ )bhqkk )$#( ##BBq!HHl;;;##BBq!HH.>?????r   rz   r   TFr   r   =   <   r  r     r   r  r   r   )r   r;   rB   r   r   r   r	   )rp   r   r  r	  s   ` @@r   
test_lt_gez"TestTimedeltaArithmetic.test_lt_ge  s   XXj!!XXj!!	@ 	@ 	@ 	@ 	@ 	@ 	@ 	beeRUUD!!!beeRUUE"""beeRUUE"""bCjj"Q**d+++bCjj"Q**e,,,bCjj"Q**e,,,bCjj"R++t,,,bCjj"R++u---biiEE***boor%~~u555biiJ...	;788 	) 	)Br!Szz2c3<<(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)	;788 	) 	)Br!Szz2c3<<(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	;788 	/ 	/Br%~~r%~~...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/	;788 	/ 	/Br%~~r%~~...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/sH   )III:)J//J36J3)LLL<)M22M69M6c                 P                          t                                          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                                t
          t          f          5   t          dd          t          dd                     d d d            n# 1 swxY w Y                        t
          t          f          5   t          dd          t          dd                     d d d            n# 1 swxY w Y                        t
          t          f          5   t          dd          t          dd                     d d d            n# 1 swxY w Y                        t
          t          f          5   t          dd          t          dd                     d d d            d S # 1 swxY w Y   d S )Nc                     |}| }t          j        |           st          j        |           rd}d}                     | |          |                                | |          |           d S r  r   )rm   rn   r   r   r   gtlerp   s        r   r   z1TestTimedeltaArithmetic.test_le_gt.<locals>.check  s    #L#+| x{{ )bhqkk )$#( ##BBq!HHl;;;##BBq!HH.>?????r   rz   r   TFr   r   r
  r  ;   r  r    r  r   r  r   r   )r   r>   r@   r   r   r   r	   )rp   r   r  r  s   ` @@r   
test_le_gtz"TestTimedeltaArithmetic.test_le_gt  s@   XXj!!XXj!!
	@ 
	@ 
	@ 
	@ 
	@ 
	@ 
	@ 	beeRUUD!!!beeRUUD!!!beeRUUE"""bCjj"Q**d+++bCjj"Q**d+++bCjj"Q**e,,,bCjj"R++t,,,bCjj"R++t,,,bCjj"R++u---biiED)))boor%~~t444biiJ...	;788 	) 	)Br!Szz2c3<<(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)	;788 	) 	)Br!Szz2c3<<(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	;788 	/ 	/Br%~~r%~~...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/	;788 	/ 	/Br%~~r%~~...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/sH   )I77I;>I;#)KKK)L99L= L=%)NN"Nc                 p                          t                     fd} |t          d                      |t          d                      |t          dd                      |t          dd                      |t          d                      |t          dd                     d S )Nc                 H                          |           | 
            d S r   r   )rm   posrp   s    r   r   z/TestTimedeltaArithmetic.test_pos.<locals>.check  )    ##CCFFQB/////r   r   r   r    r   )r   rE   r   )rp   r   r  s   ` @r   test_posz TestTimedeltaArithmetic.test_pos      hh{##	0 	0 	0 	0 	0 	0 	beebffbDkkbTllbiiboor   c                 p                          t                     fd} |t          d                      |t          d                      |t          dd                      |t          dd                      |t          d                      |t          dd                     d S )Nc                 H                          |           |             d S r   r   )rm   negrp   s    r   r   z/TestTimedeltaArithmetic.test_neg.<locals>.check  r  r   r   r   r    r   )r   rH   r   )rp   r   r  s   ` @r   test_negz TestTimedeltaArithmetic.test_neg  r  r   c                 p                          t                     fd} |t          d                      |t          d                      |t          dd                      |t          dd                      |t          d                      |t          dd                     d S )Nc                 `                          |           t          |                      d S r   )r   rJ   rm   ro   rp   s    r   r   z/TestTimedeltaArithmetic.test_abs.<locals>.check  -    ##AAaDD#a&&11111r   r   r   r    r   )r   rK   r   r   s   ` @r   test_absz TestTimedeltaArithmetic.test_abs  s    HH[!!	2 	2 	2 	2 	2 	2 	beebffbDkkbTllbiiboor   c                                            t                     fd}d}d}t          ||z   t          ft	          |          z  t
          ft	          |          z  z             D ]\  }} | ||            d S )Nc                 `                          |           t          |                      d S r   )r   rN   r   s    r   r   z0TestTimedeltaArithmetic.test_hash.<locals>.check  s-    ##AAaDD$q''2222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   rO   zipr   lenr   )rp   r   TD_CASESDT_CASEScasetypro   s   `     @r   	test_hashz!TestTimedeltaArithmetic.test_hash  s    HH\""	3 	3 	3 	3 	3 	3B9 X0 US]]2bUS]]5JJL L 	 	ID#E##t*	 	r   c                                                      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 ]\  }} |||           *d S )Nc                 \                          | |           | |                     d S r   r   rm   rn   ro   rp   usecases     r   r   z4TestTimedeltaArithmetic._test_min_max.<locals>.check3  3    ##AAaGGWWQ]];;;;;r   r   rz   r   r   r   )r   r   rs   rt   rp   rE  r   casesrm   rn   ro   s   ``    @r   _test_min_maxz%TestTimedeltaArithmetic._test_min_max1  s    HHW	< 	< 	< 	< 	< 	< 	< UUBqEE2a55"U)),3ZZAsR3ZZE3@
 	 	E ")%77  1a		 	r   c                 :    |                      t                     d S r   rI  rS   rp   s    r   test_minz TestTimedeltaArithmetic.test_min=      ;'''''r   c                 :    |                      t                     d S r   rI  rX   rL  s    r   test_maxz TestTimedeltaArithmetic.test_max@  rN  r   N)r   r   r   dictr   r   r   r   r   r   r   r  r  r  r  r  r"  rA  rI  rM  rQ  r'   r   r   r   r     s       dD!!!G+ + +& & &&& & &&0 0 0,> > >0( ( (()- )- )-V%/ %/ %/N%/ %/ %/N
 
 

 
 

 
 
  (
 
 
( ( (( ( ( ( (r   r   c                   ,    e Zd Z ed          Zd ZdS )TestTimedeltaArithmeticNoPythonTr   c                                           t                     fd}dD ]1\  }} |t          ||                              d                     2dD ]-} |t	          |                              d                     .                     t          d          5   t	          d                     d d d            d S # 1 swxY w Y   d S )	Nc                 `                          |           t          |                      d S r   )r   rZ   r   s    r   r   z<TestTimedeltaArithmeticNoPython.test_int_cast.<locals>.checkJ  r!  r   ))r   r"   )r   r"   )i0u  r"   )i r"   )rz   r   ztimedelta64[ns])r)  r*  r+  r,  r-  r.  r/  r0  r1  r2  r3  r4  r5  r6  r7  r8  r9  r:  datetime64[ns]z;Only datetime64[ns] can be converted, but got datetime64[y])msgr)  )r   r[   r   astyper   r   r	   )rp   r   deltar   timero   s   `    @r   test_int_castz-TestTimedeltaArithmeticNoPython.test_int_castH  sH   HH%&&	2 	2 	2 	2 	2 	25 	= 	=MUDE"UD//(():;;<<<<- 	5 	5D
 E"T((//"2334444{ 2A C C 	 	 AbjjMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   #C		CCN)r   r   r   rR  r   r\  r'   r   r   rT  rT  D  s5        dD!!!G    r   rT  c                   v    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dS )TestDatetimeArithmeticTr   c                 6     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 V  d d d            d S # 1 swxY w Y   d S )Nignorez-Implicitly casting between incompatible kinds)messagecategory)warningscatch_warningsfilterwarningsDeprecationWarningrL  s    r   silence_numpy_warningsz-TestDatetimeArithmetic.silence_numpy_warningse  s       $&& 	 	#H,[-?A A A A EEE		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   !AAAc                 D                          t                                          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 ]f}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 ]u}                      ||          ||z   ||f                                 ||          ||z   ||f                                 ||           ||z   ||f           vah |t          d'          t	          d          t          d'                      |t          d'd(          t	          dd          t          d'd(                      |t          d'd(          t	          dd          t          d'd                      |t          d          t	          d'd	          t          d'd	                      |t          d)          t	          d'd	          t          d'd                      |t          d'd(          t	          d'd          t          d'd                     fD ]}                     t          t          f          5   |t          d*d)          t	          d*d                     d+d+d+           n# 1 swxY w Y                        t          t          f          5   |t          d*d)          t	          d*d                     d+d+d+           n# 1 swxY w Y   d+S ),zQ
        Test `datetime64 + timedelta64` and `datetime64 - timedelta64`.
        c                 h                                    5                       | |          || |f                                ||           || |f                                | |           || |f                               | |z   |           d d d            d S # 1 swxY w Y   d S r   rh  r   )rm   rn   r   addrp   subs      r   r   z<TestDatetimeArithmetic.test_add_sub_timedelta.<locals>.checku  s   ,,.. 9 9''Aq		8aVDDD''Aq		8aVDDD''Ar

Hq!fEEE''Ax8889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9s   BB''B+.B+r)  r   r   r*  r   r-  r   r   r1  r   r   r2  r+  r  r0  r,  r/  r.  z
2014-02-03r3  r5  r%  r8  z
2012-02-02z
2012-02-29z
2012-02-16r:  r   z2000-01-01T03:02:03Zr    r9  )6006016048011900190422002300230424006001)rd   -01-12d   r&  ir'  r   r   
2014-01-01rz   N)	r   r+   r.   r   r   r   r   r   r	   )	rp   r   dt_str	dt_suffixdttdro   rl  rm  s	   `      @@r   test_add_sub_timedeltaz-TestDatetimeArithmetic.test_add_sub_timedeltao  s]    hh{##hh{##	9 	9 	9 	9 	9 	9 	9 	bjj"Q**bjj111bjj"Q**bmm444bjj"Q**bs&;&;<<<bjj"Q**b&6&6777bjj"S#,,<(8(8999bmmR3ZZI777bmmR3ZZI777bmmR3ZZL)9)9:::bs##R3ZZL#1F1FGGGb2sR-=-=>>>b2sR-=-=>>>b1c

B|,<,<===b'(("Q**b9O6P6PQQQb'(("Q++r:T7U7UVVV' 	F 	FF 0 F F	*++a::r!Szzc3<<E3dC=="VS//c3<<E3dC=="VS//c3<<E3dC=="VS//; 	F 	FB $$SSR[["r'B8DDD$$SSR[["r'B8DDD$$SSbS\\27RHEEEE	FF 	biiA5		***bnnbCjj"UC..999bnnbDkk2eT??;;;bjj"UC.."UC..999b5#5#???bnnboor%??? s 	3 	3A""I{#;<< 3 3"Q%%r!Szz2223 3 3 3 3 3 3 3 3 3 3 3 3 3 3""I{#;<< 3 3"Q%%r!Szz2223 3 3 3 3 3 3 3 3 3 3 3 3 3 3	3 	3s$   >)X33X7	:X7	)ZZ	Z	c                 r    g d}g d}d t          j        ||          D             }|d |D             z  }|S )N)rn  ro  rp  196819691973r+  200420052100rw  2401)rd   ry  rz  z-02-28z-12-31z-01-05T12:30:56Zz-01-05T12:30:56.008Zc                 8    g | ]\  }}t          ||z             S r'   r   ).0rm   rn   s      r   
<listcomp>z;TestDatetimeArithmetic.datetime_samples.<locals>.<listcomp>  s&    PPPVar!a%yyPPPr   c                 .    g | ]}t          |d           S )r   r   )r  r   s     r   r  z;TestDatetimeArithmetic.datetime_samples.<locals>.<listcomp>  s     ---q1c

---r   )rs   rt   )rp   dt_yearsdt_suffixesdtss       r   datetime_samplesz'TestDatetimeArithmetic.datetime_samples  sh    C C CC C CPPy'8;'O'OPPP--H----
r   c                 0                          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                                                      5                                   }t          j        ||          D ][\  }}t          j	        t          |          t          |                    s5                      ||          ||z
  ||f           \	 ddd           dS # 1 swxY w Y   dS )z1
        Test `datetime64 - datetime64`.
        Nc                 ,                                    5                       | |          | |z
  | |f                                ||           || z
  | |f                               | |z
  |           d d d            d S # 1 swxY w Y   d S r   rk  )rm   rn   r   rp   rm  s      r   r   z>TestDatetimeArithmetic.test_datetime_difference.<locals>.check  s    ,,.. 9 9''Aq		1q51a&AAA''Aq		1q51a&AAA''Ax888	9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9s   A&B		BBr)  2017r   r   r,  z2017-01ir   z
2014-02-28z
2015-03-01ir   r   r+  z
2000-01-01r   )r   r.   r   r   rh  r  rs   rt   r   r   r   r   )rp   r   r  rm   rn   rm  s   `    @r   test_datetime_differencez/TestDatetimeArithmetic.test_datetime_difference  sH    hh{##	9 	9 	9 	9 	9 	9 	9 	bjj"V**bSkk222bmmR	]]BsCLL999b< 0 0"T3--@@@bnnbjj"UC..999bnnb..5#???biiEBuII...((** 	B 	B''))C!)#s33 B B1*4Z]]JqMMRR ''Aq		1q51a&AAAAB	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	Bs   7BHHHc           
         	
                       t                    
                      t                                          t                                          t                                          t
                                          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                                            }|D ]}|j	        j
                            d          d         d d         }t                              |          }t          ||dz            }|D ]}|                    d|z            }t          j        t#          |          t#          |                    sJ 	||d            |||t%          j        d|          z   d            ||t%          j        d|          z
  |d           d S )Nc                 `   |}| }t          j        |           st          j        |          rd}d}                     | |          | |f                                | |          | |f                                ||           | |f                                ||           | |f                                	| |          | |f                                | |          | |f                                	||           | |f                                ||           | |f                                           5                       | |          || ||f                                ||           || ||f                                
| |          || ||f                                
||           || ||f           |r                     | |          | |f                                | |          | |f                                ||           | |f                                ||           | |f                                	| |          | |f                                | |          | |f                                	||           | |f                                ||           | |f                               | |k    |           d d d            d S # 1 swxY w Y   d S r   )r   r   ri   rh  r   rh   )rm   rn   r   r   r   r   r  r  r  r	  r   rp   s        r   check_eqz9TestDatetimeArithmetic.test_comparisons.<locals>.check_eq  s   #L#+| x{{ 
3bhqkk 
3$#'   AqAq6222  AqAq6222  AqAq6222  AqAq6222  AqAq6222  AqAq6222  AqAq6222  AqAq6222,,.. > >''1a,Ax@PQQQ''1a,Ax@PQQQ''1a2BQ8DTUUU''1a2BQ8DTUUU 
7OOBBq!HHq!f555OOBBq!HHq!f555OOBBq!HHq!f555OOBBq!HHq!f555$$RR1XX1v666$$RR1XX1v666$$RR1XX1v666$$RR1XX1v666''Q===#> > > > > > > > > > > > > > > > > >s   F>L##L'*L'c                 j   |}| }t          j        |           st          j        |          rd}d}
                                5  
                    t                    }
                     || |          || ||f           
                     ||           || ||f           
                     | |          || ||f           
                     	||           || ||f           |r | |d           
                    | |k     |           d d d            d S # 1 swxY w Y   d S r  )r   r   rh  r   r;   r   )rm   rn   r   r   r   r	  r  r  r  r  rp   s         r   check_ltz9TestDatetimeArithmetic.test_comparisons.<locals>.check_lt  s   #L#+| x{{ )bhqkk )$#( ,,.. 
= 
=XXj))''1a,Ax@PQQQ''1a,Ax@PQQQ''1a2BQ8DTUUU''1a2BQ8DTUUU *HQ5)))''A|<<<
= 
= 
= 
= 
= 
= 
= 
= 
= 
= 
= 
= 
= 
= 
= 
= 
= 
=s   CD((D,/D,r)  r  Fz2014-01Tr|  r   z
2014-01-02r4  z2014-01-01T00:01:00Zr   z2014-01-01T00:01Zr   z2014-01-01T00:01:01Zr   r   [rz   r   r   zM8[%s])r   r6   r9   r;   r>   r@   rB   r   r  r   strsplitrw   indexrY  r   r   r   r   timedelta64)rp   r  r  rm   a_unitrl   unitsr   rn   r  r   r  r  r  r	  r   s   `        @@@@@@@r   test_comparisonsz'TestDatetimeArithmetic.test_comparisons  s   XXj!!XXj!!XXj!!XXj!!XXj!!XXj!!#	> #	> #	> #	> #	> #	> #	> #	> #	> #	> #	>J	= 	= 	= 	= 	= 	= 	= 	= 	=, 	FRZZ///FR	]]D111FR--t444FRc22D999I< 5 5t<<<L!!2lC#8#8%@@@L!!2lC#8#8$???*C00$c**D	2 	2 	2*C00$c**E	3 	3 	3 	E3FT222EBuIIt,,, ##%% 	? 	?AW[&&s++A.ss3F''Aa!e$E ? ?HHX_--*4Z]]5?]]D D At$$$Aq$ 7 77>>>R^At444a>>>>?	? 	?r   c                                                      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 ]\  }} |||           *d S )Nc                 \                          | |           | |                     d S r   r   rD  s     r   r   z3TestDatetimeArithmetic._test_min_max.<locals>.check<  rF  r   r   r"   rz   r   r   r   )r   r   rs   rt   rG  s   ``    @r   rI  z$TestDatetimeArithmetic._test_min_max:  s    HHW	< 	< 	< 	< 	< 	< 	< 4[["Q++r!T{{BudOOD3ZZAsR3ZZE3@
 	 	E ")%77  1a		 	r   c                 :    |                      t                     d S r   rK  rL  s    r   rM  zTestDatetimeArithmetic.test_minF  rN  r   c                 :    |                      t                     d S r   rP  rL  s    r   rQ  zTestDatetimeArithmetic.test_maxI  rN  r   N)r   r   r   rR  r   r   
contextlibcontextmanagerrh  r  r  r  r  rI  rM  rQ  r'   r   r   r^  r^  ^  s        dD!!!G+ + +   ?3 ?3 ?3B  B B B6d? d? d?L
 
 
( ( (( ( ( ( (r   r^  c                   &    e Zd Z ed          ZdS )TestDatetimeArithmeticNoPythonTr   N)r   r   r   rR  r   r'   r   r   r  r  L  s         dD!!!GGGr   r  c                   :    e Zd ZdZddifdZd ZddifdZd ZdS )	TestMetadataScalingFactorzf
    Tests than non-1 scaling factors are not supported in datetime64
    and timedelta64 dtypes.
    r   Tc                      t          di |t                    }|                      |t          dd          t          d                               d S )Nr)  10Y2010r'   )r   r6   rh   r   rp   r   r   s      r   test_datetimez'TestMetadataScalingFactor.test_datetimeW  sO    S^^7^^J''2fe,,bjj99:::::r   c                     |                                  5  |                     ddi           d d d            d S # 1 swxY w Y   d S Nr   T)r   )assertTypingErrorr  rL  s    r   test_datetime_npmz+TestMetadataScalingFactor.test_datetime_npm[  s    ##%% 	: 	:
4'8999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:   ;??c           	           t          di |t                    }|                      |t          dd          t          dd                               d S )Nr   r     r   r'   )r   r6   rh   r   r  s      r   test_timedeltaz(TestMetadataScalingFactor.test_timedelta_  sO    S^^7^^J''2a<<B5566666r   c                     |                                  5  |                     ddi           d d d            d S # 1 swxY w Y   d S r  )r  r  rL  s    r   test_timedelta_npmz,TestMetadataScalingFactor.test_timedelta_npmc  s    ##%% 	; 	;D(9:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;r  N)r   r   r   r   r  r  r  r  r'   r   r   r  r  Q  sx         
 &0$5 ; ; ; ;: : : '1%6 7 7 7 7; ; ; ; ;r   r  c                       e Zd Zd ZdS )TestDatetimeDeltaOpsc                 h   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 ]A\  }}|                     t          j         |||           |||                               BdS )zC
        Test the division of a timedelta by numeric types
        c                     | |z  S r   r'   )rm   rn   s     r   arr_divz.TestDatetimeDeltaOps.test_div.<locals>.arr_divm  s    q5Lr   r   rz   N)	r   r   onesTIMEDELTA_MTIMEDELTA_Yr   float64rh   array_equal)rp   r  py_funccfunc
test_casesrm   rn   s          r   r   zTestDatetimeDeltaOps.test_divi  sZ   	 	 	 WWQ$$bga&=&=>WQ$$bga&=&=>WQ$$bga&=&=>WQ$$bga&=&=>WQ$$a(WQ$$bga&:&:;WQ$$bga&<&<=

  	H 	HDAqOOBN771a==%%1++FFGGGG	H 	Hr   N)r   r   r   r   r'   r   r   r  r  h  s(        H H H H 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dS )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|                    t          j        d
          |ft          j        d
          |ft          j        d          |ft          j        d          |fg           |D ]A\  }	}
|                     t          j         ||	|
           ||	|
                               BdS )zY
        Test the addition/subtraction of a datetime array with a timedelta type
        c                      | |          S r   r'   rm   rn   	operations     r   implz6TestDatetimeArrayOps._test_td_add_or_sub.<locals>.impl  s    9Q??"r   
2011-01-01
1971-02-02
2021-03-03
2004-12-07rW  r   zdatetime64[D]parallel  i*N)	r   array
datetime64r   r  rl  extendrh   r  )rp   r  r  r  arr_onearr_twor  r  r  rm   rn   s    `         r   _test_td_add_or_subz(TestDatetimeArrayOps._test_td_add_or_sub  s   	# 	# 	# 	# 	# (l33l33l33l33	
 ./ / / (l33l33l33l33	
 -. . . 'h'''--bnT**+bnT**+bnV,,-bnV,,-	

 %%w/%%w/''1''1	     	H 	HDAqOOBN771a==%%1++FFGGGG	H 	Hr   c                 F    |                      t          j        d           d S r  r  r   rl  rL  s    r   test_add_tdz TestDatetimeArrayOps.test_add_td  s       /////r   c                 F    |                      t          j        d           d S NTr  rL  s    r   test_add_td_parallelz)TestDatetimeArrayOps.test_add_td_parallel  s       .....r   c                 F    |                      t          j        d           d S r  r  r   subtractrL  s    r   test_sub_tdz TestDatetimeArrayOps.test_sub_td  s       e44444r   c                 F    |                      t          j        d           d S r  r  rL  s    r   test_sub_td_parallelz)TestDatetimeArrayOps.test_sub_td_parallel  s       d33333r   c                 l   t           fd            }j        }t          j        d| d          }|                     t
          t          f|          5   |t          j        t          j	        d          gd          t          j
        dd                     d	d	d	           d	S # 1 swxY w Y   d	S )
z
        Tests that attempting to add/sub a datetime64 and timedelta64
        with types that cannot be cast raises a reasonable exception.
        c                      | |          S r   r'   r  s     r   r  z<TestDatetimeArrayOps._test_add_sub_td_no_match.<locals>.impl  s    9Q??"r   zufunc 'z<' is not supported between datetime64[ns] and timedelta64[M]r  rW  r  r  r   N)r   r   reescapeassertRaisesRegexr	   r   r   r  r  r  )rp   r  r  fnamer   s    `   r   _test_add_sub_td_no_matchz.TestDatetimeArrayOps._test_add_sub_td_no_match  s'   
 
	# 	# 	# 	# 
	# "9 B B B B D D##[)$<hGG 	 	D"-557/1 1 1tC((  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AB))B-0B-c                 D    |                      t          j                   d S r   )r  r   rl  rL  s    r   test_add_td_no_matchz)TestDatetimeArrayOps.test_add_td_no_match  s    &&rv.....r   c                 D    |                      t          j                   d S r   )r  r   r  rL  s    r   test_sub_td_no_matchz)TestDatetimeArrayOps.test_sub_td_no_match  s    &&r{3333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"   rz   r   r   r  r  z
1900-01-01r  r  r   r   r   )r   r  r   r   )rp   r  s     r   _get_testcasesz#TestDatetimeArrayOps._get_testcases  s   H1d1d1d1d	   H<&&<&&<&&<&&<&&   H<%%<%%<%%<%%<%%   H<&&<&&<&&<&&<&&5$   H5$<&&<&&<&&<&&<&&   H<&&5$   H5$5$5$  
 H1d1d1d1d	   H1c

1c

1c

1c

	   H5$1d1d1d1d   H1d1d1d1d5$   H5$   H5$5$5$  WP

b r   c                    |rt           j        u rd }n	d }nfd}|} t          |          |          }|                                 }|D ]} ||          }	 ||          }
t          j        |	          st          j        |
          rO|                     t          j        |	                     |                     t          j        |
                     |                     |	|
           d S )Nc                 *    |                                  S r   rQ   arrs    r   r  z0TestDatetimeArrayOps._test_min_max.<locals>.impl%      7799$r   c                 *    |                                  S r   rV   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     y~~%r   r  )r   rR   r   r  r   rh   r   )rp   r  r  methodr  r  r  r  r  py_resc_ress    `         r   rI  z"TestDatetimeArrayOps._test_min_max"  s1    		&BF""% % % %% % % %& & & & & 'h'''--((**
 	0 	0CWS\\FE#JJEx 028E?? 0 0 01110000  ////	0 	0r   c                 >    |                      t          dd           d S r  )rI  rR   rL  s    r   test_min_funcz"TestDatetimeArrayOps.test_min_func;       3u-----r   c                 H    |                      t          j        dd           d S r  rI  r   rR   rL  s    r   test_np_min_funcz%TestDatetimeArrayOps.test_np_min_func>  "    265%00000r   c                 H    |                      t          j        dd           d S r   r  rL  s    r   test_min_methodz$TestDatetimeArrayOps.test_min_methodA  "    265$/////r   c                 >    |                      t          dd           d S r  )rI  rW   rL  s    r   test_max_funcz"TestDatetimeArrayOps.test_max_funcD  r  r   c                 H    |                      t          j        dd           d S r  rI  r   rW   rL  s    r   test_np_max_funcz%TestDatetimeArrayOps.test_np_max_funcG  r  r   c                 H    |                      t          j        dd           d S r   r  rL  s    r   test_max_methodz$TestDatetimeArrayOps.test_max_methodJ  r
  r   c                 H    |                      t          j        dd           d S NTFr  rL  s    r   test_min_func_parallelz+TestDatetimeArrayOps.test_min_func_parallelM  "    264/////r   c                 H    |                      t          j        dd           d S r  r  rL  s    r   test_min_method_parallelz-TestDatetimeArrayOps.test_min_method_parallelQ  "    264.....r   c                 H    |                      t          j        dd           d S r  r  rL  s    r   test_max_func_parallelz+TestDatetimeArrayOps.test_max_func_parallelU  r  r   c                 H    |                      t          j        dd           d S r  r  rL  s    r   test_max_method_parallelz-TestDatetimeArrayOps.test_max_method_parallelY  r  r   c           	          ddl m}m}m} |||g}d |D             } fd}                                 }t          ||          D ]\  }}	|D ]}
t          j        |
          }
t          dt          d|
j
                  dz             D ]V}t          j                            d|
j
        |          }|
|         }|dk    r|\  } |||	|
|            |||	|
|           Wd S )Nrz   )searchsortedsearchsorted_leftsearchsorted_rightc                 ,    g | ]}t          |          S r'   )r   )r  fns     r   r  zCTestDatetimeArrayOps.test_searchsorted_datetime.<locals>.<listcomp>b  s    444"c"gg444r   c                 d     | ||          } |||          }                     ||           d S r   r   )r   r  rm   vr   gotrp   s         r   r   z>TestDatetimeArrayOps.test_searchsorted_datetime.<locals>.checkd  s=    va||H%1++C##Hc22222r   r   r   )test_np_functionsr  r  r   r  r;  r   sortrangerR   sizerandomrandint)rp   r  r  r   pyfunc_list
cfunc_listr   rH  r   r  r  nidxvsr$  s   `              r   test_searchsorted_datetimez/TestDatetimeArrayOps.test_searchsorted_datetime]  s^   	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 $%68JK44444
	3 	3 	3 	3 	3
 ##%% j99 		2 		2MFE 2 2gcllq#a"2"2Q"677 2 2A)++Asx;;CSBAvv feS!444E&%b111122		2 		2r   N)r   r   r   r  r  r   r  r  r  r  r  r  r  rI  r  r  r	  r  r  r  r  r  r  r  r1  r'   r   r   r  r    s       $H $H $HL0 0 0 / / /5 5 5 4 4 4  &/ / /4 4 4R R Rh0 0 02. . .1 1 10 0 0. . .1 1 10 0 0 0 0 0 / / / 0 0 0 / / /2 2 2 2 2r   r  c                       e Zd Zd ZdS )TestDatetimeTypeOpsc                 2    t           d             }t           d             }t           d             }t          j        dd          }t          j        dd          }||z
  } fd}|||g}|||g}	t          j        ||	          D ]\  }
} ||
|           d S )Nc                 ,    t          | t                    S r   )
isinstancecomplexrm   s    r   
is_complexz@TestDatetimeTypeOps.test_isinstance_datetime.<locals>.is_complexy  s    a)))r   c                 6    t          | t          j                  S r   )r6  r   r  r8  s    r   is_datetimezATestDatetimeTypeOps.test_isinstance_datetime.<locals>.is_datetime|  s    a///r   c                 6    t          | t          j                  S r   )r6  r   r  r8  s    r   is_timedeltazBTestDatetimeTypeOps.test_isinstance_datetime.<locals>.is_timedelta  s    a000r   rz   r"   r   c                 
                        | j         dt          |          j         d          5   | |          }|                     |          }                    ||           d d d            d S # 1 swxY w Y   d S )N())subTestr   typer  r   )jit_funcr)   r%  expectrp   s       r   r   z;TestDatetimeTypeOps.test_isinstance_datetime.<locals>.check  s    !2HHT!WW5EHHHII . .hqkk!))!,,  f---. . . . . . . . . . . . . . . . . .s   7A88A<?A<)r   r   r  rs   rt   )rp   r9  r;  r=  dt_adt_btd_cr   fnsr   r"  args   `           r   test_isinstance_datetimez,TestDatetimeTypeOps.test_isinstance_datetimex  s    		* 	* 
	*		0 	0 
	0		1 	1 
	1 }Q%%}Q%%d{	. 	. 	. 	. 	. 
 

 !(d33 	 	GBE"cNNNN	 	r   N)r   r   r   rJ  r'   r   r   r3  r3  w  s#                 r   r3  __main__)Dr   r  rs   r  unittestrd  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   ru   rv   rw   r+   r.   r0   r2   r4   r6   r9   r;   r>   r@   rB   rE   rH   rK   rO   rS   rX   r[   r`   rb   r  r   r  r   r   r   rT  r^  r  r  r  r  r3  r   mainr'   r   r   <module>rU     sP            				       & & & & & & & & & & 0 0 0 0 0 0 $ $ $ $ $ $ $ $ ) ) ) ) ) ) G G G G G G G G G G 6 6 6 6 6 6 6 6bh'((bh'((  
 
J
#	                                      s& s& s& s& s& s& s& s&l ^]3 3 3 3 3 3 3 3lp( p( p( p( p(h p( p( p(f	    &=   4l( l( l( l( l(X l( l( l(\" " " " "%; " " "
; ; ; ; ; ; ; ;.H H H H H8 H H H.t2 t2 t2 t2 t28 t2 t2 t2p! ! ! ! !( ! ! !H zHMOOOOO r   