Ë
    üÇ:jù  ã                   óÚ   — 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«      j                  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y)'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   — 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     úp/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/numba/np/npdatetime_helpers.pyÚ	same_kindr&   (   s#   € ô ˜3Ñ !Ñ#¬¸Ñ)=ÀÑ)AÑBÐBó    c                 ón   — t         |    } t         |   }| |k(  ry| dk(  ry| |kD  ry|dk(  ry| dk  r|dkD  ryy)NTr   Fr   r    r"   s     r%   Úcan_cast_timedelta_unitsr)   /   sS   € ô
 ˜Ñ
€CÜ˜$Ñ€DØ
ˆd‚{ØØ
ˆb‚yØØ
ˆT‚zØØˆr‚zàØ
ˆa‚x�D˜1’HàØ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                 ó~   — | dk(  ry| }d}||k  r	 t         |   \  }}||z  }||k  rŒ||k(  r|S y# t        $ r Y yw xY w)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   sn   € ð ˜ÒØØ€AØ€FØ
ˆoÒ
ð	Ü˜q‘k‰GˆAˆtð 	�$‰ˆð ˆoÓ
ð 	ˆOÒØˆàøô ò 	áð	ús   ‘0 °	<»<c                 ó6   — 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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   sB  € ô " -Ñ0€LÜ! .Ñ1€LØ�rÒ˜\¨RÒ/Ø˜a Ð"Ð"Ø�aÒ˜L¨AÒ-åÚ+ª^ð=ó >ð 	>àÑ€Iˆyð �qÒØ˜1ÒØ&ˆIØˆIØ‰LØ˜QÒØ&ˆIØˆIØ‰LØ	˜Ò	Ø˜1ÒØ&ˆIØ ˆIØ‰LØ˜QÒØ&ˆIØ$ˆIØˆLà�|Ò#Ü+¨L¸,ÓGˆØÐ!Ð? L°,Ð#?Ó?Ð!Ø˜y¨6Ñ1°9Ð<Ð<ä+¨L¸,ÓGˆØÐ!Ð? L°,Ð#?Ó?Ð!Ø˜i¨°VÑ);Ð;Ð;r'   c                 ój   — t         |    }t         |   }|dk(  r|S |dk(  r| S |dk  r|dk\  ry||kD  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   ¬   sZ   € ô " -Ñ0€LÜ! .Ñ1€LØ�rÒØÐØ	˜Ò	ØÐØ�aÒ˜L¨AÒ-ØØ�lÒ"ØÐàÐr'   c                 óT   — t         |    }t         |   }|dk(  r|S |dk(  r| S ||kD  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   À   sA   € ô 	�vÑ€AÜ�vÑ€AØˆB‚wØˆØˆB‚wØˆØˆ1‚uØˆØ€Mr'   c                  ó   — y ©N© ©rI   rJ   s     r%   Údatetime_minimumrP   Ï   ó   € Ør'   c                  ó   — y 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�n�UÓ×"Ñ" 2§8¡8Ó,€òCòð0 ØØØØØØØØØØñ€òò4Aò1<òhò(ò	ó	r'   