§
    ƒÛgù  ã                   óÖ   — d Z ddlZdddddddd	d
ddddddœZ ej        d¦  «                             ej        ¦  «        Zd„ Zd„ Z	ddddddddddddœZ
d „ Zd!„ Zd"„ Zd#„ Zd$„ Zd%„ Zd&„ ZdS )'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                 óJ   — t           |          dk     t           |         dk     k    S )zB
    Whether the *src* and *dest* units are of the same kind.
    r   ©ÚDATETIME_UNITS©ÚsrcÚdests     úQ/granary/edev/quantum/lib/python3.11/site-packages/numba/np/npdatetime_helpers.pyÚ	same_kindr&   (   s#   € õ ˜3Ô !Ò#­¸Ô)=ÀÒ)AÒBÐBó    c                 ó–   — t           |          } t           |         }| |k    rdS | dk    rdS | |k    rdS |dk    rdS | dk    r|dk    rdS dS )NTr   Fr   r    r"   s     r%   Úcan_cast_timedelta_unitsr)   /   sk   € õ
 ˜Ô
€CÝ˜$Ô€DØ
ˆd‚{€{ØˆtØ
ˆb‚y€yØˆtØ
ˆT‚z€zØˆuØˆr‚z€zàˆuØ
ˆa‚x€x�D˜1’H�HàˆuØˆ4r'   )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                 ó–   — | dk    rdS | }d}||k     r.	 t           |         \  }}n# t          $ r Y dS w xY w||z  }||k     °.||k    r|S dS )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   sŽ   € ð ˜ÒÐØˆqØ€AØ€FØ
ˆoÒ
Ð
ð	Ý˜q”k‰GˆAˆtˆtøÝð 	ð 	ð 	à�4�4ð	øøøð 	�$‰ˆð ˆoÒ
Ð
ð 	ˆOÒÐØˆàˆts   ”% ¥
3²3c                 óN   — t          t          |          t          |         ¦  «        S )zl
    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(   € õ
 &¥n°XÔ&>Ý&4°YÔ&?ñAô Að Ar'   c                 óÈ  — t           |          }t           |         }|dk    s|dk    r| ddfS |dk     r|dk    rt          d| ›d|›d�¦  «        ‚d\  }}|dk    r|d	k    rd
}d}d	}n,|dk    rd
}d}d}n|dk    r|d	k    rd
}d}d	}n|dk    rd
}d}d}||k    r&t          ||¦  «        }|€J ||f¦   «         ‚|||z  |fS t          ||¦  «        }|€J ||f¦   «         ‚| |||z  fS )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   sƒ  € õ " -Ô0€LÝ! .Ô1€LØ�rÒÐ˜\¨RÒ/Ð/Ø˜a Ð"Ð"Ø�aÒÐ˜L¨AÒ-Ð-åˆlØ+˜m˜m¨^¨^¨^ð=ñ >ô >ð 	>àÑ€Iˆyð �qÒÐØ˜1ÒÐØ&ˆIØˆIØˆLˆLØ˜QÒÐØ&ˆIØˆIØˆLøØ	˜Ò	Ð	Ø˜1ÒÐØ&ˆIØ ˆIØˆLˆLØ˜QÒÐØ&ˆIØ$ˆIØˆLà�|Ò#Ð#Ý+¨L¸,ÑGÔGˆØÐ!Ð! L°,Ð#?Ñ!Ô!Ð!Ø˜y¨6Ñ1°9Ð<Ð<å+¨L¸,ÑGÔGˆØÐ!Ð! L°,Ð#?Ñ!Ô!Ð!Ø˜i¨°VÑ);Ð;Ð;r'   c                 ó†   — t           |          }t           |         }|dk    r|S |dk    r| S |dk     r|dk    rdS ||k    r| S |S )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   ¬   sk   € õ " -Ô0€LÝ! .Ô1€LØ�rÒÐØÐØ	˜Ò	Ð	ØÐØ�aÒÐ˜L¨AÒ-Ð-ØˆtØ�lÒ"Ð"ØÐàÐr'   c                 ój   — t           |          }t           |         }|dk    r|S |dk    r| S ||k    r|S | S )z9
    Get the best (i.e. finer-grained) of two units.
    r   r    )Úunit_aÚunit_bÚaÚbs       r%   Úget_best_unitrK   À   sG   € õ 	�vÔ€AÝ�vÔ€AØˆB‚w€wØˆØˆB‚w€wØˆØˆ1‚u€uØˆØ€Mr'   c                 ó   — d S ©N© ©rI   rJ   s     r%   Údatetime_minimumrP   Ï   ó   € Ø€Dr'   c                 ó   — d S 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?  ððð ð Ð Ð Ð ð 
Ø	
Ø	
à	
Ø	
Ø	
Ø	
Ø
Ø
Ø
Ø
Ø
Ø
Ø
ðð €ð$ €b„n�UÑÔ×"Ò" 2¤8Ñ,Ô,€ðCð Cð Cðð ð ð0 ØØØØØØØØØØðð €ðð ð ð4Að Að Að1<ð 1<ð 1<ðhð ð ð(ð ð ð	ð 	ð 	ð	ð 	ð 	ð 	ð 	r'   