
    J/PhH                     D   d Z ddlZddlZddlZddlmZ ddlmZm	Z	 ddl
mZ ddlmZmZmZmZ ddlmZmZmZ ddlmZ dd	lmZ dd
lmZ ej                            d          xZZ eeej                  Zej         fdz  Z!d Z"d Z#d Z$d Z%d Z&dHdZ'dHdZ(d Z)d Z* eeg d          Z+ eeg d          Z, eeg d          Z- eeg d          Z. eej/                   eej                   d                         Z0 eej1        ej                   d             Z2 eej3        ej                   d             Z4 ee5ej                   d             Z6d Z7 eej8        ge!R   eej9        ge!R  d                          Z: eej;        ge!R   eej<        ge!R  d!                         Z=d" Z> eej?        ej         ej@                   eejA        ej         ej@                   eej?        ej         ejB                   eejA        ej         ejB                  d#                                                 ZC eej?        ej@        ej                    eejA        ej@        ej                    eej?        ejB        ej                    eejA        ejB        ej                   d$                                                 ZD eejE        ej         ej@                   eejF        ej         ej@                   eejG        ej         ej@                   eejH        ej         ej@                   eejE        ej         ejB                   eejF        ej         ejB                   eejG        ej         ejB                   eejH        ej         ejB                  d%                                                                                                 ZI eejE        ge!R   eejF        ge!R  d&                         ZJ eejG        ge!R  d'             ZKd( ZLd) ZMd* ZN eMd+e	jO                  ZP eMd,e	jQ                  ZR eNd-          ZS eNd.          ZT eNd/          ZU eNd0          ZVejW        ePfejX        eRfejY        eSfejZ        eTfej[        eUfej\        eVffD ]\  Z]Z^  ee]ge!R  e^           d1 Z_d2 Z`d3 Zad4 Zbd5 Zc ecd6          Zd ecd7          Ze eej8        ej/        ej                    eej9        ej/        ej                   d8                         Zf eej8        ej         ej/                   eej9        ej         ej/                  d9                         Zg eej;        ej/        ej                    eej<        ej/        ej                   d:                         Zh eej;        ej/        ej/                  d;             Zid< Zj ejd+          Zk ejd,          Zl ejd-          Zm ejd.          Zn ejd/          Zo ejd0          ZpejW        ekfejX        elfejY        emfejZ        enfej[        eofej\        epffD ] \  ZqZ^  eeqgej/        gdz  R  e^           !d= Zr erd>          Zs erd?          Ztd@ Zu eud>          Zv eud?          ZwdA Zx exd>          Zy exd?          ZzdB Z{ e{d>          Z| e{d?          Z}dC Z~ eej        ej/                   eej        ej                   dD                         Z eej/        ej@                   eej         ej@                  dE                         Z eej         dF           eej/        dF          dG                         Z  eej        ej/        ej/                  ev             eej        ej         ej                   ev             eej        ej/        ej/                  es             eej        ej         ej                   es           dS )Iz4
Implementation of operations on numpy timedelta64.
    N)Constant)typescgutils)create_constant_array)lower_builtinlower_constantimpl_ret_untracked
lower_cast)npdatetime_helpersnumpy_supportnpyfuncs)overload_method	IS_32BITS)LoweringError@      c                 T    |                      |t          t          |                    S )z2
    Multiply *val* by the constant *factor*.
    )mulr   TIMEDELTA64buildervalfactors      S/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/np/npdatetime.pyscale_by_constantr      s"     ;;sH[&99:::    c                 T    |                      |t          t          |                    S )z0
    Divide *val* by the constant *factor*.
    )sdivr   r   r   s      r   unscale_by_constantr    "   s"     <<Xk6::;;;r   c                 T    |                      |t          t          |                    S )z(
    Add constant *const* to *val*.
    )addr   r   )r   r   consts      r   add_constantr$   )   s"     ;;sH[%88999r   c                     t          j        |j        |j                  }|!d|j         d|j         }t          |          t	          |||          S )zk
    Scale the timedelta64 *val* from *srcty* to *destty*
    (both numba.types.NPTimedelta instances)
    Nz cannot convert timedelta64 from  to )r   get_timedelta_conversion_factorunitr   r   )contextr   r   srctydesttyr   msgs          r   scale_timedeltar-   0   s]    
  ?
FK! !F~NNNNNC   Wc6222r   c                     t          j        |j        |j                  }|t          |||          |fS t          j        |j        |j                  }||t          |||          fS t	          d|d|          )ze
    Scale either *left* or *right* to the other's unit, in order to have
    homogeneous units.
    Nzcannot normalize z and )r   r'   r(   r   RuntimeError)r)   r   leftrightlefttyrighttyr   s          r   normalize_timedeltasr4   >   s    
  ?W\# #F $77>>?fk# #F&wv>>>>
,vvvwwG
H
HHr   retc                 t    t          j        | t          |          }|                     t          |           |S )zM
    Allocate a NaT-initialized datetime64 (or timedelta64) result slot.
    name)r   alloca_oncer   storeNATr   r8   r5   s      r   alloc_timedelta_resultr=   O   s4     
g{
>
>
>CMM#sJr   c                 n    t          j        | t          j                            d          |          }|S )z8
    Allocate an uninitialized boolean result slot.
       r7   )r   r9   llvmliteirIntTyper<   s      r   alloc_boolean_resultrC   X   s0     
gx{':':1'='=D
I
I
ICJr   c                 :    |                      d|t                    S )z?
    Return a predicate which is true if *val* is not NaT.
    !=)icmp_unsignedr;   )r   r   s     r   
is_not_natrG   `   s       sC000r   c                     t          |          dk    sJ t          | |d                   }|dd         D ]&}|                     |t          | |                    }'|S )zH
    Return a predicate which is true if all of *vals* are not NaT.
    r?   r   N)lenrG   and_)r   valspredr   s       r   are_not_natrM   g   se     t99>>>>gtAw''DABBx < <||D*Wc":":;;Kr   )      rN      rN   rP   rN   rN   rP   rN   rP   rN   )rN      rN   rP   rN   rP   rN   rN   rP   rN   rP   rN   )r   rN   ;   Z   x               i  i0  iN  )r   rN   <   [   y               i  i1  iO  c                 Z    t          |                    t          j                            S N)
DATETIME64astypenpint64)r)   r   typyvals       r   datetime_constantrh      s      ell28,,---r   c                 @    |d         }t          | ||j        |          S Nr   )r	   return_typer)   r   sigargsress        r   timedelta_pos_implrp      s!    
q'CgwEEEr   c                 f    |                     |d                   }t          | ||j        |          S rj   )negr	   rk   rl   s        r   timedelta_neg_implrs      s-    
++d1g

CgwEEEr   c                    |\  }t          |          }|                    t          j        ||                    5 \  }}|5  |                    |                    |          |           d d d            n# 1 swxY w Y   |5  |                    ||           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                    |          }t          | ||j        |          S ra   )	r=   if_elser   is_scalar_negr:   rr   loadr	   rk   )	r)   r   rm   rn   r   r5   then	otherwisero   s	            r   timedelta_abs_implrz      s   DC
 
)
)C	.w<<	=	= $AR$	 	1 	1MM'++c**C000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	$ 	$MM#s###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$$ $ $ $ $ $ $ $ $ $ $ $ $ $ $
 ,,s

CgwEEEsY   B?*A8,B?8A<	<B??A<	 B?B(B?(B,	,B?/B,	0B??CCc           
         |\  }t          |          }t          t          d          }|                    |                    d||                    5 \  }}|5  |                    t          t          d          |           ddd           n# 1 swxY w Y   |5  |                    |                    d||                    5 \  }	}
|	5  |                    t          t          d          |           ddd           n# 1 swxY w Y   |
5  |                    t          t          d          |           ddd           n# 1 swxY w Y   ddd           n# 1 swxY w Y   ddd           n# 1 swxY w Y   ddd           n# 1 swxY w Y   |                    |          }t          | ||j	        |          S )z
    np.sign(timedelta64)
    r   >r?   N==)
r=   r   r   ru   icmp_signedr:   rF   rw   r	   rk   )r)   r   rm   rn   r   r5   zerogt_zerole_zeroeq_zerolt_zeroro   s               r   timedelta_sign_implr      sg    DC
 
)
)CK##D	,,S#t<< 
 
 
B0w 	9 	9MM(;22C888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	B 	B!6!6tS$!G!G # # B&8w A AMM(;":":C@@@A A A A A A A A A A A A A A A B BMM(;";";SAAAB B B B B B B B B B B B B B B	B B B B B B B B B B B B B B B	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B	
B 
B 
B 
B 
B 
B 
B 
B 
B 
B 
B 
B 
B 
B 
B ,,s

CgwEEEs   F*BFB	FB	F+E4E*D	7EDE
DE*E	:EE

EE
EE4E!!E4$E!%E4(F4E8	8F;E8	<FFFc                    |\  }}|j         \  }}t          |          }t          j        |t	          |||g                    5  t          | ||||j                  }t          | ||||j                  }|                    |                    ||          |           d d d            n# 1 swxY w Y   |	                    |          }	t          | ||j        |	          S ra   )rn   r=   r   	if_likelyrM   r-   rk   r:   r"   rw   r	   
r)   r   rm   rn   vavbtatbr5   ro   s
             r   timedelta_add_implr          HRxHR
 
)
)C		7K"b$B$B	C	C 0 0Wgr2sGGWgr2sGGgkk"b))3///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ,,s

CgwEEE   AB++B/2B/c                    |\  }}|j         \  }}t          |          }t          j        |t	          |||g                    5  t          | ||||j                  }t          | ||||j                  }|                    |                    ||          |           d d d            n# 1 swxY w Y   |	                    |          }	t          | ||j        |	          S ra   )rn   r=   r   r   rM   r-   rk   r:   subrw   r	   r   s
             r   timedelta_sub_implr      r   r   c                    t          |          }t          j        |t          ||                    5  t	          |t
          j                  rC|                    ||j                  }|	                    ||          }t          | ||          }n|                    ||          }t          | ||||          }|                    ||           d d d            n# 1 swxY w Y   |                    |          S ra   )r=   r   r   rG   
isinstancer   Floatsitofptypefmul_cast_to_timedeltar   r-   r:   rw   )	r)   r   td_argtd_type
number_argnumber_typerk   r5   r   s	            r   _timedelta_times_numberr      s"   
 
)
)C		7Jw$?$?	@	@ 
  
 k5;// 	2..99C,,sJ//C$Wgs;;CC++fj11C gwWkJJc3
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  <<s   BCC #C c           	          t          | ||d         |j        d         |d         |j        d         |j                  }t          | ||j        |          S )Nr   r?   r   rn   rk   r	   rl   s        r   timedelta_times_numberr      Q    
 "'7"&q'38A;Q!"%/3 3C gwEEEr   c           	          t          | ||d         |j        d         |d         |j        d         |j                  }t          | ||j        |          S Nr?   r   r   rl   s        r   number_times_timedeltar      r   r   c           	         |\  }}|j         d         }t          |          }|                    t          ||          |                    t          j        ||                              }t          j        ||          5  t          |t          j
                  rC|                    ||j                  }	|                    |	|          }	t          | ||	          }	n|                    ||          }	t!          | ||	|j         d         |j                  }	|                    |	|           d d d            n# 1 swxY w Y   |                    |          }
t)          | ||j        |
          S r   )rn   r=   rJ   rG   not_r   is_scalar_zero_or_nanr   r   r   r   r   r   fdivr   r   r-   rk   r:   rw   r	   )r)   r   rm   rn   r   r   r   r5   okr   ro   s              r   timedelta_over_numberr      s    FJ(1+K
 
)
)C	j&11ll7#@*#U#UVV
X 
XB		7B	'	'    k5;// 	3..99C,,sJ//C$Wgs;;CC,,vz22C gw!hqk3?< <c3                              ,,s

CgwEEEs   B-D::D>D>c           	         |\  }}|j         \  }}t          |||g          }|                     |j                  }	t	          j        ||	d          }
|                    t          |	t          d                    |
           t	          j	        ||          5  t          | |||||          \  }}|                    ||	          }|                    ||	          }|                    |                    ||          |
           d d d            n# 1 swxY w Y   |                    |
          }t          | ||j        |          S )Nr5   r7   nan)rn   rM   get_value_typerk   r   r9   r:   r   floatr   r4   r   r   rw   r	   )r)   r   rm   rn   r   r   r   r   not_nanll_ret_typer5   ro   s               r   timedelta_over_timedeltar     so    HRxHR'B8,,G((99K

g{
?
?
?CMM(;e55s;;;		7G	,	, 1 1%gwBBGGB^^B,,^^B,,gll2r**C000	1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 ,,s

CgwEEEs   A.DDDc                    |\  }}|j         \  }}|                     |j                  }t          |||g          }	t	          j        ||d          }
t          |d          }t          |d          }|                    ||
           t	          j        ||	          5  t          | |||||          \  }}|
                    |                    d||                    }t	          j        ||          5  |                    d||          }|                    ||                    d||                    }|                    |          5 \  }}|5  |                    |          5 \  }}|5  |                    ||          }|                    ||          }|                    ||
           d d d            n# 1 swxY w Y   |5  |                    ||          }|                    ||          }|                    ||
           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |5  |                    ||          }|                    ||
           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                    |
          }t%          | ||j        |          S )Nr5   r7   r   r?   r}   <)rn   r   rk   rM   r   r9   r   r:   r   r4   r   r   or_ru   r   r   r"   rw   r	   )r)   r   rm   rn   r   r   r   r   r   r   r5   r   onedenom_okvanegrr   rx   ry   negthennegotherwisetopdivro   s                          r   timedelta_floor_div_timedeltar   +  s   HRxHR((99K'B8,,G

g{
?
?
?CK##D
;
"
"CMM$		7G	,	, , ,%gwBBGGB<< 3 3D"d C CDDw11 	, 	,''R66E++eW%8%8b$%G%GHHC%% ,):$	 	4 	4 // 43JG\$ 4 4")++b#"6"6C"),,sB"7"7C#MM#s3334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 * 4 4")++b#"6"6C"),,sB"7"7C#MM#s3334 4 4 4 4 4 4 4 4 4 4 4 4 4 44 4 4 4 4 4 4 4 4 4 4 4 4 4 4	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4  , ,!,,r2..CMM#s+++, , , , , , , , , , , , , , ,, , , , , , , , , , , , , , ,		, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,	, , , , , , , , , , , , , , ,, ,,s

CgwEEEs  AK5AJ<J%I	)H1/AF>2H1>GH1GH1AHH1HH1!H"H1%I	1H55I	8H59I	<J%IJ%IJ%-J	J%JJ%JJ%J<%J))J<,J)-J<0K<K 	 KK 	KKKc           
         |\  }}|j         \  }}t          |||g          }|                     |j                  }	t	          |          }
|                    t          |
           t          |	d          }t          j	        ||          5  t          | |||||          \  }}|                    |                    d||                    }t          j	        ||          5  |                    d||          }|                    d||          }|                    ||          }|                    |                    ||          |                    d||                    }|                    |          5 \  }}|5  |                    ||
           d d d            n# 1 swxY w Y   |5  |                    |                    ||          |
           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                    |
          }t'          | ||j        |          S )Nr   r}   r|   )rn   rM   r   rk   r=   r:   r;   r   r   r   r4   r   r   sremr   rJ   ru   r"   rw   r	   )r)   r   rm   rn   r   r   r   r   r   r   r5   r   r   vaposvbposremcondrx   ry   ro   s                       r   timedelta_mod_timedeltar   N  sw    HRxHR'B8,,G((99K
 
)
)CMM#sK##D		7G	,	, = =%gwBBGGB<< 3 3D"d C CDDw11 	= 	=''R66E''R66E,,r2&&C;;w||E599&224dCCE ED&& =*;4 , ,MM#s+++, , , , , , , , , , , , , , , = =MM'++c2"6"6<<<= = = = = = = = = = = = = = == = = = = = = = = = = = = = =	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=	= = = = = = = = = = = = = = =" ,,s

CgwEEEs   AH-"BH;G?F$	G?$F((G?+F(,G?1+G(	G?(G,,G?/G,0G?3H?HHHH
H-H	H-H	H--H14H1c                       fd}|S )Nc           
         |\  }}|j         \  }}t          |          }|                    t          |||g                    5 \  }	}
|	5  	 t	          | |||||          \  }}|                    |                    ||          |           n&# t          $ r |                    |           Y nw xY wd d d            n# 1 swxY w Y   |
5  dk    r!|                    t          j	        |           n |                    t          j
        |           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                    |          }t          | ||j        |          S NrE   )rn   rC   ru   rM   r4   r:   rF   r/   r   true_bit	false_bitrw   r	   rk   )r)   r   rm   rn   r   r   r   r   r5   rx   ry   norm_anorm_bro   default_valuell_ops                 r   implz/_create_timedelta_comparison_impl.<locals>.implt  sR   R8R"7++__[2r(;;<< 	:@Qy U UU%9"b"b&: &:NFF MM'"7"7vv"N"NPSTTTT	 $ 6 6 6MM-555556	U U U U U U U U U U U U U U U  : : D==MM'"2C8888MM'"3S999: : : : : : : : : : : : : : :	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:" ll3!'7COSIIIs   D:CB$,C B30C2B33C6D:C	D:	C	
D:AD#D:#D'	'D:*D'	+D::D>D> )r   r   r   s   `` r   !_create_timedelta_comparison_implr   s  s/    J J J J J J0 Kr   c                       fd}|S )Nc           
      D   |\  }}|j         \  }}t          |          }|                    t          |||g                    5 \  }	}
|	5  t	          | |||||          \  }}|                    |                    ||          |           d d d            n# 1 swxY w Y   |
5  |                    t          j        |           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |	                    |          }t          | ||j        |          S ra   )rn   rC   ru   rM   r4   r:   r   r   r   rw   r	   rk   )r)   r   rm   rn   r   r   r   r   r5   rx   ry   r   r   ro   r   s                 r   r   z-_create_timedelta_ordering_impl.<locals>.impl  s   R8R"7++__[2r(;;<< 	6@Qy O O!5Wb"b""6 "6g11%HH#NNNO O O O O O O O O O O O O O O  6 6g/5556 6 6 6 6 6 6 6 6 6 6 6 6 6 6	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 ll3!'7COSIIIs[   C+ABC+B	C+!B	"C+'!CC+C	C+C	C++C/2C/r   r   r   s   ` r   _create_timedelta_ordering_implr     s(    J J J J J Kr   r}   rE   r   <=r|   >=c           
         |                      |t          t          d                    }t          j        | |                     |t          t          d                              }t          j        | |                     |t          t          d                              }t          j        | |                     |t          t          d                              }|                     ||                     ||                    S )z_
    Return a predicate indicating whether *year_val* (offset by 1970) is a
    leap year.
    i     d     )	r"   r   rb   r   is_nullrJ   is_not_nullr   r   )r   year_valactual_yearmultiple_of_4not_multiple_of_100multiple_of_400s         r   is_leap_yearr     s    
 ++hT(B(BCCKOk8J+B+BCCE EM!-k8J+D+DEEG Gok8J+D+DEEG GO<<$7IIK K Kr   c           
      .   t          j        | t                    }t          | |d          }|                     t          j        | |                    5 \  }}|5  t          | |d          }|                     |t          | |d                    }t          | |d          }| 	                    |t          | |d                    }t          | |d          }	|                     |t          | |	d                    }| 
                    ||           ddd           n# 1 swxY w Y   |5  t          | |d	          }
|                     |t          | |
d                    }t          | |
d
          }| 	                    |t          | |d                    }|                     |t          | |d                    }| 
                    ||           ddd           n# 1 swxY w Y   ddd           n# 1 swxY w Y   |                     |          S )zg
    Given a year *year_val* (offset to 1970), return the number of days
    since the 1970 epoch.
    im  r?      D   r   i,  r   Ni)r   r9   r   r   ru   
is_neg_intr$   r"   r    r   r:   rw   )r   r   r5   daysif_negif_pos	from_1968p_days	from_1900	from_1600	from_1972n_days	from_2000s                r   year_to_daysr     s    
g{
3
3CWh44D	+GX>>	?	? '' 	' 	' %Wh::I[[!4Wi!K!KM MF %Wi<<I[[!4Wi!M!MO OF %Wi==I[[!4Wi!M!MO OFMM&#&&&%	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'&  	' 	'
 %Wh;;I[[!4Wi!K!KM MF %Wi==I[[!4Wi!M!MO OF [[!4Wi!M!MO OFMM&#&&&%	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'+'' '' '' '' '' '' '' '' '' '' '' '' '' '' ''P <<s\   G7B9DG7D#	#G7&D#	'G7,B(G G7 G$	$G7'G$	(G77G;>G;c                    t           j        |         }t           j        |         }|dk     s|dk    r||fS |dk    r|}t          | |          }nt          j        | dt
                    }t          j        | dt                    }	t          j        | t                    }
t          j	        | |d          \  }}| 
                    t          | |                    5 \  }}|5  |                     t          j        | |d|d                    }|                     ||
           d d d            n# 1 swxY w Y   |5  |                     t          j        | |	d|d                    }|                     ||
           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          | |          }|                     ||                     |
                    }|dk    rt          j	        | |d          \  }}|d	fS |d
fS )Nr   r   leap_year_months_accnormal_year_months_acc   T)inbounds   WD)r   DATETIME_UNITSr   r   global_constantr   r   r9   r   divmod_by_constantru   r   rw   gepr:   r"   )r   dt_valsrc_unit	dest_unitdest_unit_codesrc_unit_coder   days_val
leap_arraynormal_arrayr   yearmonthrx   ry   addendweeks_s                     r   reduce_datetime_for_unitr    s   '6yAN&5h?M]a//x22 ,W6L-AC C
.w8P/EG G "7K88 0&"EEe __\'48899 	,=NdI , , gk':23UT'K 'K 'K L Lfd+++, , , , , , , , , , , , , , ,  , , gk'<23UT'K 'K 'K L Lfd+++, , , , , , , , , , , , , , ,	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,  ..;;xd););<<-gxCCqcz}s\   F#!AD0$F#0D4	4F#7D4	8F#=AF F#F	F#F	F##F'*F'c                     t          | |||          \  }}t          j        ||          }|t          d|d|          t	          | ||          S )zC
    Convert datetime *dt_val* from *src_unit* to *dest_unit*.
    Nzcannot convert datetime64 from r&   )r  r   r'   r   r   )r   r   r   r  dt_unit	dt_factors         r   convert_datetime_for_arithr  )  ss    
 /9. .OFG #B7IVVIm*2((II? @ @ 	@Wfi888r   c                       fd}|S )Nc                    t          |          }t          j        |t          |||g                    5  t	          ||||          }t          j        ||          }t          |||          } t          |
          ||          }	|	                    |	|           d d d            n# 1 swxY w Y   |
                    |          S ra   )r=   r   r   rM   r  r   r'   r   getattrr:   rw   )r)   r   dt_argr  r   td_unitret_unitr5   	td_factorret_val
ll_op_names             r   r   z'_datetime_timedelta_arith.<locals>.impl:  s   $W--wGff=M(N(NOO 	( 	(/07C CF*J# #I&w	BBF2ggz2266BBGMM'3'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( ||C   s   A)B++B/2B/r   )r  r   s   ` r   _datetime_timedelta_arithr  9  s#    ! ! ! ! ! Kr   r"   r   c           	          |\  }}|j         \  }}t          | |||j        ||j        |j        j                  }t	          | ||j        |          S ra   rn   _datetime_plus_timedeltar(   rk   r	   	r)   r   rm   rn   r  r   dt_typer   ro   s	            r   datetime_plus_timedeltar   O  Z     NFFxGW
"7G#)7<#)7<#&?#79 9C gwEEEr   c           	          |\  }}|j         \  }}t          | |||j        ||j        |j        j                  }t	          | ||j        |          S ra   r  )	r)   r   rm   rn   r   r  r   r  ro   s	            r   timedelta_plus_datetimer#  [  r!  r   c           	          |\  }}|j         \  }}t          | |||j        ||j        |j        j                  }t	          | ||j        |          S ra   )rn   _datetime_minus_timedeltar(   rk   r	   r  s	            r   datetime_minus_timedeltar&  i  sZ     NFFxGW
#GW$*GL$*GL$'O$8: :C gwEEEr   c                    |\  }}|j         \  }}|j        }|j        }	|j        j        }
t          |          }t	          j        |t          |||g                    5  t          ||||
          }t          |||	|
          }|                    ||          }|	                    ||           d d d            n# 1 swxY w Y   |
                    |          }t          | ||j        |          S ra   )rn   r(   rk   r=   r   r   rM   r  r   r:   rw   r	   )r)   r   rm   rn   r   r   r   r   unit_aunit_br  r5   r  ro   s                 r   datetime_minus_datetimer*  w  s'   FBXFBWFWF#H
 
)
)C		7K"b$B$B	C	C $ $'VXFF'VXFF++b"%%gs###	$ $ $ $ $ $ $ $ $ $ $ $ $ $ $
 ,,s

CgwEEEs   AB;;B?B?c                       fd}|S )Nc                    |\  }}|j         \  }}|j        }|j        }	t          j        ||	          }
t	          |          }|                    t          |||g                    5 \  }}|5  t          ||||
          }t          |||	|
          }|                    ||          }|	                    ||           d d d            n# 1 swxY w Y   |5  dk    rt          j        }nt          j        }|	                    ||           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                    |          }t          | ||j        |          S r   )rn   r(   r   get_best_unitrC   ru   rM   r  r   r:   r   r   r   rw   r	   rk   )r)   r   rm   rn   r   r   r   r   r(  r)  r  r5   rx   ry   r   r   r  ro   r   s                     r   r   z._create_datetime_comparison_impl.<locals>.impl  s&   BB%3FFCC"7++__[2r(;;<< 	,@Qy , ,3R3 33R3 3!--eVVDDgs+++, , , , , , , , , , , , , , ,  , ,D==%.GG%/Ggs+++, , , , , , , , , , , , , , ,	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, ll3!'7COSIIIs[   (D2.AC D2C	D2C	D26DD2D	D2"D	#D22D69D6r   r   s   ` r    _create_datetime_comparison_implr.    s(    J J J J J0 Kr   c                       fd}|S )Nc                 @   |\  }}t          ||          }t          ||          }|                    d||          }|                    |||          }	
r||}}|                    ||	|          }	|                    ||	|          }	t          | ||j        |	          S Nr   rG   r   selectr	   rk   r)   r   rm   rn   in1in2in1_not_natin2_not_nat
in1_ge_in2ro   NAT_DOMINATESs             r   datetime_max_implz1_gen_datetime_max_impl.<locals>.datetime_max_impl       S #.. #..((sC88
nnZc22 	 CCnn[#s33nn[#s33!'7COSIIIr   r   )r:  r;  s   ` r   _gen_datetime_max_implr=    )    J J J J J r   TFc                       fd}|S )Nc                 @   |\  }}t          ||          }t          ||          }|                    d||          }|                    |||          }	
r||}}|                    ||	|          }	|                    ||	|          }	t          | ||j        |	          S Nr   r2  r)   r   rm   rn   r5  r6  r7  r8  
in1_le_in2ro   r:  s             r   datetime_min_implz1_gen_datetime_min_impl.<locals>.datetime_min_impl  r<  r   r   )r:  rD  s   ` r   _gen_datetime_min_implrE    r>  r   c                       fd}|S )Nc                 @   |\  }}t          ||          }t          ||          }|                    d||          }|                    |||          }	
r||}}|                    ||	|          }	|                    ||	|          }	t          | ||j        |	          S r1  r2  r4  s             r   timedelta_max_implz3_gen_timedelta_max_impl.<locals>.timedelta_max_impl  r<  r   r   )r:  rH  s   ` r   _gen_timedelta_max_implrI    )    J J J J J r   c                       fd}|S )Nc                 @   |\  }}t          ||          }t          ||          }|                    d||          }|                    |||          }	
r||}}|                    ||	|          }	|                    ||	|          }	t          | ||j        |	          S rA  r2  rB  s             r   timedelta_min_implz3_gen_timedelta_min_impl.<locals>.timedelta_min_impl  r<  r   r   )r:  rM  s   ` r   _gen_timedelta_min_implrN    rJ  r   c                    |                     t                    }|                    d||          }|                    |          5 \  }}|5  |                    t
          |           d d d            n# 1 swxY w Y   |5  |                    |                    |t                    |           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                    |          S )Nuno)allocar   fcmp_unorderedru   r:   r;   fptosirw   )r)   r   r   temp
val_is_nanrx   elss          r   r   r     s   >>+&&D''sC88J		$	$ B )# 	% 	% MM#t$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%  	B 	BMM'..k::DAAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	BB B B B B B B B B B B B B B B <<sZ   CA5)C5A9	9C<A9	=C0B>2C>C	CC	CCCc                 0    t          j        | |||          S ra   )r   np_datetime_isnat_impl)r)   r   rm   rn   s       r   _np_isnat_implrY    s     *7GS$GGGr   c                 R    |j         dk    rd| d| d| d}t          |          |S )Nr   zCannot cast r&   z as z is not 64 bits wide.)bitwidth
ValueError)r)   r   fromtytotyr   r,   s         r   _cast_npdatetime_int64r_  !  sB     }NVNNNN4NNNooJr   __hash__c                 "    t           rd }nd }|S )Nc                 .   t          j        |           } | dk     rt          j        |           }nKt          j        |           dz  dz	  }t          j        |           dz  }t          j        |d|z  z             }|dk    rt          j        d          }|S )Nil            l    iCB r~   r   )rd   re   int32)xyhilos       r   r   z ol_hash_npdatetime.<locals>.impl.  s    A9}}HQKKhqkk$662=hqkk$66HR7b.011BwwHRLLHr   c                     t          j        |           dk    rt          j        d          S t          j        |           S )Nr~   r   )rd   re   )re  s    r   r   z ol_hash_npdatetime.<locals>.impl:  s1    x{{b  x||#8A;;r   r   )re  r   s     r   ol_hash_npdatetimerj  *  s6      
	 
	 
	 
		 	 	 Kr   )r5   )__doc__numpyrd   operatorllvmlite.irr@   r   
numba.corer   r   numba.core.cgutilsr   numba.core.imputilsr   r   r	   r
   numba.npr   r   r   numba.extendingr   numba.core.configr   numba.core.errorsr   rA   rB   rb   r   r;   NPTimedeltaTIMEDELTA_BINOP_SIGr   r    r$   r-   r4   r=   rC   rG   rM   normal_year_monthsleap_year_monthsr   r   
NPDatetimerh   posrp   rr   rs   absrz   r   r"   iaddr   r   isubr   r   r   Integerimulr   r   r   truedivitruedivfloordiv	ifloordivr   r   r   r   r   r   r   timedelta_eq_timedelta_implr   timedelta_ne_timedelta_impltimedelta_lt_timedelta_impltimedelta_le_timedelta_impltimedelta_gt_timedelta_impltimedelta_ge_timedelta_impleqneltlegtgeop_funcr   r   r  r  r  r  r%  r   r#  r&  r*  r.  datetime_eq_datetime_impldatetime_ne_datetime_impldatetime_lt_datetime_impldatetime_le_datetime_impldatetime_gt_datetime_impldatetime_ge_datetime_implopr=  datetime_maximum_impldatetime_fmax_implrE  datetime_minimum_impldatetime_fmin_implrI  timedelta_maximum_impltimedelta_fmax_implrN  timedelta_minimum_impltimedelta_fmin_implr   isnatrY  r_  rj  datetime_minimumdatetime_maximumr   r   r   <module>r     s                         % % % % % % % % 4 4 4 4 4 4A A A A A A A A A A A A @ @ @ @ @ @ @ @ @ @ + + + + + + ' ' ' ' ' ' + + + + + + $;..r22 2
[h{.233(*Q. ; ; ;< < <: : :3 3 3I I I"      1 1 1   +*4446 6  )(4446 6  /.;;;= =  -,;;;= = 
  !!!"". . #" "!. x|U.//F F 0/F
 x|U.//F F 0/F
 sE%&&	F 	F '&	FF F F, x|21222x}32333	F 	F 43 32	F x|21222x}32333	F 	F 43 32	F  " x|U.>>x}e/??x|U.<<x}e/==F F >= =< @? ?>F x|U]E,=>>x}emU->??x|U[%*;<<x}ek5+<==F F >= =< @? ?>F x!2EMBBx %"3U]CCx %"3U]CCx!5#4emDDx!2EK@@x %"3U[AAx %"3U[AAx!5#4ekBBF F CB BA BA A@ ED DC DC CBF. x6"5666x 7#6777F F 87 76F  x 7#6777 F  F 87 FD F  F  FJ  8  & @?'
  ??'
  ==cBB ==dCC ==cBB ==dCC ; ;<; ;<;!<=; ;<;!<=; ;<> 3 3IC -MM#,+,,,T2222
K K K 3 3 3l* * *Z9 9 9     54U;; 55e<< 
 x|U-u/@AAx}e.0ABBF F CB BAF x|U.0@AAx}e/1ABBF F CB BAF x|U-u/@AAx}e.0ABBF F CB BAF x|U-u/?@@F F A@F$  8 =<TBB <<TBB <<SAA <<TBB <<SAA <<TBB +89+89+89+89+89+89; 3 3HB -MM",()!+,,,T2222  $ /.t44 ++E22   $ /.t44 ++E22   $ 1066 --e44   $ 1066 --e44    rx)**rx*++H H ,+ +*H Eem,,Eu}--  .- -, "J//!:..  /. 0/* W 153CUEU V VWl m m m X 153DeFW X XYn o o o V 153CUEU V VWl m m m X 153DeFW X XYn o o o o or   