
    sh                         S r SSKrSSSSSSSS	S
SSSSSS.r\R                  " S5      R                  \R                  5      rS rS r	SSSSSSSSSSSS.r
S  rS! rS" rS# rS$ rS% rS& rg)'z
Helper functions for np.timedelta64 and np.datetime64.
For now, multiples-of-units (for example timedeltas expressed in tens
of seconds) are not supported.
    N                     	   
               )YMWDhmsmsusnspsfsas natc                 4    [         U    S:  [         U   S:  :H  $ )z:
Whether the *src* and *dest* units are of the same kind.
r   DATETIME_UNITSsrcdests     o/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/np/npdatetime_helpers.py	same_kindr&   (   s#     3!#)=)ABB    c                 v    [         U    n [         U   nX:X  a  gU S:X  a  gX:  a  gUS:X  a  gU S::  a  US:  a  gg)NTr   Fr   r    r"   s     r%   can_cast_timedelta_unitsr)   /   sO    
 
C$D
{
by
zrz
axD1H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   r   r	   r
   r   r   r   c                     U S:X  a  gU nSnX!:  a   [         U   u  p$X4-  nX!:  a  M  X!:X  a  U$ g! [         a     gf = f)z
Return an integer multiplier allowing to convert from *big_unit_code*
to *small_unit_code*.
None is returned if the conversion is not possible through a
simple integer multiplication.
r   r   N)_factorsKeyError)big_unit_codesmall_unit_codecfactormults        r%   _get_conversion_multiplierr5   U   sd     AF

	qkGA 	 
 	  		s   0 
==c                 6    [        [        U    [        U   5      $ )z`
Return an integer multiplier allowing to convert from timedeltas
of *src_unit* to *dest_unit*.
)r5   r!   )src_unit	dest_units     r%   get_timedelta_conversion_factorr9   o   s"    
 &nX&>&4Y&?A Ar'   c                    [         U    n[         U   nUS:X  d  US:X  a  U SS4$ US:  a  US:  a  [        SU < SU< S35      eSu  pEUS:X  a  US	:  a  S
nSnS	nO,US:X  a  S
nSnSnOUS:X  a  US	:  a  S
nSnS	nOUS:X  a  S
nSnSnX2:  a  [        X#5      nUc   X#45       eXU-  U4$ [        X25      nUc   X#45       eXXV-  4$ )a  
Compute a possible conversion for combining *datetime_unit* and
*timedelta_unit* (presumably for adding or subtracting).
Return (result unit, integer datetime multiplier, integer timedelta
multiplier). RuntimeError is raised if the combination is impossible.
r   r   r   zcannot combine datetime64(z) and timedelta64())r   r   r   r   i: i  i
  i  i@  )r!   RuntimeErrorr5   )datetime_unittimedelta_unitdt_unit_codetd_unit_code	dt_factor	td_factorr3   s          r%   !get_datetime_timedelta_conversionrC   x   s1    "-0L!.1Lr\R/a""aLA-+^= > 	>I q1&IILQ&IIL		1&I ILQ&I$IL#+LG!?L#??!619<<+LG!?L#??!);;;r'   c                 r    [         U    n[         U   nUS:X  a  U$ US:X  a  U $ US:  a  US:  a  gX#:  a  U $ U$ )z
Return the unit result of combining *datetime_unit* with *timedelta_unit*
(e.g. by adding or subtracting).  None is returned if combining
those units is forbidden.
r   r   Nr    )r=   r>   r?   r@   s       r%    combine_datetime_timedelta_unitsrE      sX     "-0L!.1Lr		aLA-"r'   c                 X    [         U    n[         U   nUS:X  a  U$ US:X  a  U $ X2:  a  U$ U $ )z1
Get the best (i.e. finer-grained) of two units.
r   r    )unit_aunit_babs       r%   get_best_unitrK      s?     	vAvABwBwuMr'   c                     g N rI   rJ   s     r%   datetime_minimumrP          r'   c                     g rM   rN   rO   s     r%   datetime_maximumrS      rQ   r'   )__doc__numpynpr!   timedelta64astypeint64NATr&   r)   r.   r5   r9   rC   rE   rK   rP   rS   rN   r'   r%   <module>r[      s     
	
	
	
	
	
	







$ 	nnU""288,C0 4A1<h(		r'   