ó
    ýZhñk  ã                   óz	  • S SK r S SKrS SKrS SKrS SKJrJrJr  S SK	J
r
  S SKJr  S SKJr  S SKJr  \" \" \\R(                  R+                  S5      SS 5      5      r\R.                  (       Ga¨  \R0                  " S	5      \R2                  \R0                  " S
5      \R4                  \R0                  " S5      \R6                  \R0                  " S5      \R8                  \R0                  " S5      \R:                  \R0                  " S5      \R<                  \R0                  " S5      \R>                  \R0                  " S5      \R@                  \R0                  " S5      \RB                  \R0                  " S5      \RD                  \R0                  " S5      \RF                  \R0                  " S5      \RH                  \R0                  " S5      \RJ                  \R0                  " S5      \RL                  \R0                  " \'5      \RP                  0r)GO¦\R0                  " S	5      \RT                  \R0                  " S
5      \RV                  \R0                  " S5      \RX                  \R0                  " S5      \RZ                  \R0                  " S5      \R\                  \R0                  " S5      \R^                  \R0                  " S5      \R`                  \R0                  " S5      \Rb                  \R0                  " S5      \Rd                  \R0                  " S5      \Rf                  \R0                  " S5      \Rh                  \R0                  " S5      \Rj                  \R0                  " S5      \Rl                  \R0                  " S5      \Rn                  \R0                  " \'5      \RP                  0r)\Rp                  " S\Rr                  5      r:\Rp                  " S\Rr                  5      r;\R0                  " S5      Rx                  r=S r>S r?S r@\R‚                  S\R„                  S\R†                  S\Rˆ                  S 0rES! rFS" rGS# rHS$ rIS% rJS& rKS' rLS( rMS) rN " S* S+\ Rž                  " S,S-5      5      rPS. rQS>S/ jrRS0 rSS1 rTS2 rUS3 rVS4 rWS?S5 jrXS?S6 jrYS7 rZS8 r[S9 r\S: r]S; r^S< r_S= r`g)@é    N)ÚerrorsÚtypesÚconfig)Ú	signature)Únpdatetime_helpers)ÚTypingError)Úis_nonelikeÚ.é   ÚboolÚint8Úint16Úint32Úint64Úuint8Úuint16Úuint32Úuint64Úfloat32Úfloat64Úfloat16Ú	complex64Ú
complex128z[<>=\|]([a-z])(\d+)?$z[<>=\|]([mM])8?(\[([a-z]+)\])?$ÚU1c                 ó.  • [         R                  U R                  5      nU(       d  [        R                  " U 5      eUR                  5       nUS   nUS:X  ah  U R                  S;  a  [        R                  " S5      eU R                  [        -  nU[        US   5      :X  d   S5       e[        R                  " U5      $ US:X  a;  U R                  nU[        US   5      :X  d   S5       e[        R                  " U5      $ [        R                  " U 5      e)	Nr   ÚUz=|z%Does not support non-native byteorderé   zUnicode char size mismatchÚSzChar size mismatch)Ú
re_typestrÚmatchÚstrr   ÚNumbaNotImplementedErrorÚgroupsÚ	byteorderÚitemsizeÚsizeof_unicode_charÚintr   ÚUnicodeCharSeqÚCharSeq)ÚdtypeÚmr#   ÚtypecodeÚcounts        Úe/home/gothic/public_html/Fooocus/fooocus_env/lib64/python3.13/site-packages/numba/np/numpy_support.pyÚ_from_str_dtyper/   E   só   € Ü×Ñ˜Ÿ™Ó#€AÞÜ×-Ò-¨eÓ4Ð4Ø�X‰X‹Z€FØ�a‰y€HØ�3ƒà�?‰? $Ó&Ü×1Ò1ð 3>ó ?ð ?à—‘Ô"5Ñ5ˆØœ˜F 1™I›Ó&ÐDÐ(DÓDÐ&Ü×#Ò# EÓ*Ð*à	�S‹à—‘ˆØœ˜F 1™I›Ó&Ð<Ð(<Ó<Ð&Ü�}Š}˜UÓ#Ð#ô ×-Ò-¨eÓ4Ð4ó    c                 ó\  • [         R                  U R                  5      nU(       d  [        R                  " U 5      eUR                  5       nUS   nUS   =(       d    SnUS:X  a  [        R                  " U5      $ US:X  a  [        R                  " U5      $ [        R                  " U 5      e)Nr   r   Ú r+   ÚM)	Úre_datetimestrr    r!   r   r"   r#   r   ÚNPTimedeltaÚ
NPDatetime)r*   r+   r#   r,   Úunits        r.   Ú_from_datetime_dtyper8   ^   sŒ   € Ü×Ñ˜UŸY™YÓ'€AÞÜ×-Ò-¨eÓ4Ð4Ø�X‰X‹Z€FØ�a‰y€HØ�!‰9�?˜€DØ�3ƒÜ× Ò  Ó&Ð&Ø	�S‹Ü×Ò Ó%Ð%ä×-Ò-¨eÓ4Ð4r0   c                 ó:  • [        U 5      [         L a6  [        U [        R                  5      (       a  [        R                  " U 5      n O[        U SS5      b  [        U 5      $  [        U    $ ! [         a     Of = f U R                  nUS;   a  [        U 5      $ US;   a  [        U 5      $ US;   aE  U R                  b8  [        U R                  S   5      n[        R                  " X R                   5      $ O! ["         a     Of = f[$        R&                  " U 5      e)zˆ
Return a Numba Type instance corresponding to the given Numpy *dtype*.
NumbaNotImplementedError is raised on unsupported Numpy dtypes.
ÚfieldsNÚSUÚmMÚVr   )ÚtypeÚ
issubclassÚnpÚgenericr*   ÚgetattrÚfrom_struct_dtypeÚ
FROM_DTYPEÚKeyErrorÚcharr/   r8   ÚsubdtypeÚ
from_dtyper   ÚNestedArrayÚshapeÚAttributeErrorr   r"   )r*   rF   Úsubtypes      r.   rH   rH   m   sü   € ô
 ˆEƒ{”dÒœz¨%´·±×<Ñ<Ü—’˜“‰Ü	�˜ $Ó	'Ñ	3Ü  Ó'Ð'ðÜ˜%Ñ Ð øÜó Ùðúð;Ø�z‰zˆð �4‹<Ü" 5Ó)Ð)Ø�4‹<Ü'¨Ó.Ð.Ø�3‹;˜5Ÿ>™>Ñ5Ü  §¡°Ñ!2Ó3ˆGÜ×$Ò$ W¯k©kÓ:Ð:ùô ó Ùðúô ×
)Ò
)¨%Ó
0Ð0s$   Á#A, Á,
A9Á8A9Á=C7 Ã7
DÄDÚM8Úm8r   r   c                 óB  • [         R                  " U 5      n [        U [         R                  [         R                  [         R
                  45      (       a  [        R                  " [        U 5      5      $ [        U [         R                  5      (       a  [        R                  " S5      $ [        U [         R                  [         R                  45      (       aa  [        [        U 5         nU R                  (       a(  [        R                  " U< SU R                  < S35      $ [        R                  " U5      $ [        U [         R                  [         R                   45      (       a6  [        [        U 5         n[        R                  " SXR"                  4-  5      $ [        U [         R$                  5      (       a  ['        U 5      $ [        U [         R(                  5      (       a  [+        U R                  5      $ [        U [         R,                  R.                  5      (       a  [+        U R                  5      $ [        U [         R0                  5      (       a  [+        U R                  5      $ [        U [         R2                  5      (       a@  [+        U R                  5      [5        U R6                  5      4n[        R                  " U5      $ [        U [         R8                  5      (       a  [        R                  " [:        5      $ U  S3n[<        R>                  " U5      e)z|
Return a numpy dtype instance corresponding to the given Numba type.
NotImplementedError is if no correspondence is known.
Ú?Ú[Ú]z%s%dz' cannot be represented as a NumPy dtype) r   Ú	unliteralÚ
isinstanceÚComplexÚIntegerÚFloatr@   r*   r!   ÚBooleanr6   r5   Ú_as_dtype_lettersr>   r7   r)   r(   r-   ÚRecordÚas_struct_dtypeÚ
EnumMemberÚas_dtypeÚnpytypesÚDTypeÚNumberClassrI   ÚtuplerJ   ÚPyObjectÚobjectr   r"   )ÚnbtypeÚletterÚspecÚmsgs       r.   r]   r]   ”   s  € ô
 �_Š_˜VÓ$€FÜ�&œ5Ÿ=™=¬%¯-©-¼¿¹ÐE×FÑFÜ�xŠxœ˜F›Ó$Ð$Ü�&œ5Ÿ=™=×*Ñ*Ü�xŠx˜‹}ÐÜ�&œ5×+Ñ+¬U×->Ñ->Ð?×@Ñ@Ü"¤4¨£<Ñ0ˆØ�;�;Ü—8’8«°·´Ð<Ó=Ð=ä—8’8˜FÓ#Ð#Ü�&œ5Ÿ=™=¬%×*>Ñ*>Ð?×@Ñ@Ü"¤4¨£<Ñ0ˆÜ�xŠx˜ &¯,©,Ð!7Ñ7Ó8Ð8Ü�&œ%Ÿ,™,×'Ñ'Ü˜vÓ&Ð&Ü�&œ%×*Ñ*×+Ñ+Ü˜Ÿ™Ó%Ð%Ü�&œ%Ÿ.™.×.Ñ.×/Ñ/Ü˜Ÿ™Ó%Ð%Ü�&œ%×+Ñ+×,Ñ,Ü˜Ÿ™Ó%Ð%Ü�&œ%×+Ñ+×,Ñ,Ü˜Ÿ™Ó&¬¨f¯l©lÓ(;Ð<ˆÜ�xŠx˜‹~ÐÜ�&œ%Ÿ.™.×)Ñ)Ü�xŠxœÓÐàˆHÐ;Ð
<€CÜ
×
)Ò
)¨#Ó
.Ð.r0   c                 ó
  • [        U [        R                  5      (       d   e/ n/ n/ n/ nU R                   H�  u  pVU R	                  U5      (       a  M  UR                  U5        UR                  [        U5      5        UR                  U R                  U5      5        UR                  U R                  U   R                  5        M’     UUUU R                  US.n[        X5        [        R                  " XpR                  S9$ )z8Convert Numba Record type to NumPy structured dtype
    )ÚnamesÚformatsÚoffsetsr%   Útitles)Úalign)rT   r   rZ   ÚmembersÚis_titleÚappendr]   Úoffsetr:   ÚtitleÚsizeÚ_check_struct_alignmentr@   r*   Úaligned)Úrecri   rj   rk   rl   ÚkÚtr:   s           r.   r[   r[   ¹   sÎ   € ô �cœ5Ÿ<™<×(Ñ(Ð(Ð(Ø€EØ€GØ€GØ€Fà—”‰ˆØ�|‰|˜A�‹Ø�L‰L˜ŒOØ�N‰Nœ8 A›;Ô'Ø�N‰N˜3Ÿ:™: a›=Ô)Ø�M‰M˜#Ÿ*™* Q™-×-Ñ-Ö.ñ ð ØØØ—H‘HØñ€Fô ˜CÔ(Ü�8Š8�F§+¡+Ñ.Ð.r0   c                 óæ   • U R                   (       a`  [        US   US   5       HI  u  p#U R                  U5      nUR                  nUc  M'  XT:w  d  M.  Sn[	        UR                  XTU5      5      e   gg)z(Check alignment compatibility with Numpyri   rj   NzbNumPy is using a different alignment ({}) than Numba/LLVM ({}) for {}. This is likely a NumPy bug.)ru   ÚzipÚalignofÚ	alignmentÚ
ValueErrorÚformat)rv   r:   rw   ÚdtÚ
llvm_alignÚ	npy_alignrg   s          r.   rt   rt   Ô   sm   € à
‡{‡{Ü˜ ™¨&°Ñ*;Ö<‰EˆAØŸ™ Q›ˆJØŸ™ˆIØÓ%¨)Õ*Að2ð ô
 ! §¡¨IÀ2Ó!FÓGÐGò =ð r0   c                 ó  • [        U [        R                  5      (       a  U R                  nO  [        R                  " [	        U 5      5      n[        U5      $ ! [
         a#    [        R                  " S[	        U 5      -  5      ef = f)Nz#no corresponding numpy dtype for %r)	rT   r@   rA   r*   r>   Ú	TypeErrorr   r"   rH   )Úvalr*   s     r.   Úmap_arrayscalar_typer…   ã   s~   € Ü�#”r—z‘z×"Ñ"ð —	‘	‰ð	NÜ—H’HœT #›YÓ'ˆEô �eÓÐøô ó 	NÜ×1Ò1ð 3AÜCGÈÃ9ñ3Mó Nð Nð	Nús   ®A Á-Bc                 ó6   • [        U [        R                  5      $ ©N)rT   r@   Úndarray)r„   s    r.   Úis_arrayr‰   ñ   s   € Ü�cœ2Ÿ:™:Ó&Ð&r0   c                 ój   • U R                   S   (       a  SnU$ U R                   S   (       a  SnU$ SnU$ )NÚC_CONTIGUOUSÚCÚF_CONTIGUOUSÚFÚA)Úflags)r„   Úlayouts     r.   Ú
map_layoutr’   õ   s@   € Ø
‡y�y�× Øˆð
 €Mð	 
�‰�>×	"Øˆð €Mð ˆØ€Mr0   c                 óÔ   • [        S5      nSn[        U 5       HF  u  p4[        U[        R                  5      (       d  M&  UR
                  U:”  d  M8  UnUR
                  nMH     Uc   eU$ )zÙ
Given the array-compatible input types to an operation (e.g. ufunc),
select the appropriate input for wrapping the operation output,
according to each input's __array_priority__.

An index into *inputs* is returned.
z-infN)ÚfloatÚ	enumeraterT   r   ÚArrayCompatibleÚarray_priority)ÚinputsÚmax_prioÚselected_indexÚindexÚtys        r.   Úselect_array_wrapperr�   ÿ   sh   € ô �V‹}€HØ€NÜ˜vÖ&‰	ˆä�rœ5×0Ñ0×1Ó1Ø×!Ñ! HÕ,Ø"ˆNØ×(Ñ(ŠHñ 'ð Ñ%Ð%Ð%ØÐr0   c                 óð   • U[        U5         nX24nU R                  SU0 5      nUcD  UR                  [        R                  R                  :X  a  U$ [
        R                  " SU< 35      eUR                  $ )a  
Given the array-compatible input types to an operation (e.g. ufunc),
and the operation's formal output type (a types.Array instance),
resolve the actual output type using the typing *context*.

This uses a mechanism compatible with Numpy's __array_priority__ /
__array_wrap__.
Ú__array_wrap__z__array_wrap__ failed for )r�   Úresolve_function_typer—   r   ÚArrayr   r   Úreturn_type)Úcontextr˜   Úformal_outputÚselected_inputÚargsÚsigs         r.   Úresolve_output_typer¨     st   € ð Ô0°Ó8Ñ9€NØÐ(€DØ
×
'Ñ
'Ð(8¸$ÀÓ
C€CØ
�{Ø×(Ñ(¬E¯K©K×,FÑ,FÓFð
 !Ð Ü× Ó Â4Ð!IÓJÐJØ�?‰?Ðr0   c                 ó  ^• SSK Jn  UR                  n X2R                  U 5      ;   nU$ ! [         aS    UR
                  UR                  -    Vs/ s H  oUR                  PM     Os  snf nnSm[        U4S jU 5       5      n U$ f = f)a2  Return whether the *loop* for the *ufunc* is supported -in nopython-.

*loop* should be a UFuncLoopSpec instance, and *ufunc* a numpy ufunc.

For ufuncs implemented using the ufunc_db, it is supported if the ufunc_db
contains a lowering definition for 'loop' in the 'ufunc' entry.

For other ufuncs, it is type based. The loop will be considered valid if it
only contains the following letter types: '?bBhHiIlLqQfd'. Note this is
legacy and when implementing new ufuncs the ufunc_db should be preferred,
as it allows for a more fine-grained incremental support.
r   )Úufunc_dbz?bBhHiIlLqQfdc              3   ó,   >#   • U  H	  oT;   v •  M     g 7fr‡   © )Ú.0rx   Úsupported_typess     €r.   Ú	<genexpr>Ú'supported_ufunc_loop.<locals>.<genexpr>I  s   øé € ÐFº:°a /Ö1º:ùs   ƒ)	Únumba.nprª   Ú	ufunc_sigÚget_ufunc_inforE   Únumpy_inputsÚnumpy_outputsrF   Úall)ÚufuncÚlooprª   Úloop_sigÚsupported_loopÚxÚ
loop_typesr®   s          @r.   Úsupported_ufunc_loopr½   +  s’   ø€ õ "Ø�~‰~€HðGð "×%<Ñ%<¸UÓ%CÑCˆð Ðøô ó Gð '+×&7Ñ&7¸$×:LÑ:LÒ&LÓMÒ&L —f”fÒ&LùÒMˆ
ÐMØ)ˆô ÔF¹:ÓFÓF‰àÐðGús   •* ª%BÁA%Á$BÂBc                   ó<   • \ rS rSrSrSr\S 5       r\S 5       rSr	g)ÚUFuncLoopSpeciN  zç
An object describing a ufunc loop's inner types.  Properties:
- inputs: the inputs' Numba types
- outputs: the outputs' Numba types
- ufunc_sig: the string representing the ufunc's type signature, in
  Numpy format (e.g. "ii->i")
r¬   c                 óX   • U R                    Vs/ s H  n[        U5      PM     sn$ s  snf r‡   )r˜   r]   ©Úselfr»   s     r.   r´   ÚUFuncLoopSpec.numpy_inputsZ  s"   € à%)§[¢[Ó1¢[ ”˜–¡[Ñ1Ð1ùÒ1ó   �'c                 óX   • U R                    Vs/ s H  n[        U5      PM     sn$ s  snf r‡   )Úoutputsr]   rÁ   s     r.   rµ   ÚUFuncLoopSpec.numpy_outputs^  s"   € à%)§\¢\Ó2¢\ ”˜–¡\Ñ2Ð2ùÒ2rÄ   N)
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú	__slots__Úpropertyr´   rµ   Ú__static_attributes__r¬   r0   r.   r¿   r¿   N  s4   † ñð €Iàñ2ó ð2ð ñ3ó ó3r0   r¿   Ú_UFuncLoopSpec)r˜   rÆ   r²   c                 ó~   • [        U 5      S:X  a  [        U S   /UQ76 $ [        [        R                  " U 5      /UQ76 $ )Nr   r   )Úlenr   r   ÚTuple)Úout_tysÚin_tyss     r.   Ú_ufunc_loop_sigrÖ   c  s;   € Ü
ˆ7ƒ|�qÓÜ˜ ™Ð- fÒ-Ð-äœŸš WÓ-Ð7°Ò7Ð7r0   c                 óØ   • [         R                  " U 5      n [         R                  " U5      nU(       a!  U R                  S;   a  UR                  S;   a  g[         R                  " XU5      $ )a;  
A variant of np.can_cast() that can allow casting any integer to
any real or complex type, in case the operation has mixed-kind
inputs.

For example we want `np.power(float32, int32)` to be computed using
SP arithmetic and return `float32`.
However, `np.sqrt(int32)` should use DP arithmetic and return `float64`.
ÚiuÚcfT)r@   r*   ÚkindÚcan_cast)Úfrom_ÚtoÚhas_mixed_inputsÚcastings       r.   Úufunc_can_castrà   j  sJ   € ô �HŠH�U‹O€EÜ	�Š�"‹€BÞ˜EŸJ™J¨$Ó.°2·7±7¸d³?àÜ�;Š;�u 'Ó*Ð*r0   c                 ó˜  • USU R                    nXR                   S n[        U5      U R                   :X  d   e U Vs/ s H  n[        U5      PM     nn U Vs/ s H  n[        U5      PM     nn[        S U 5       5      =(       a    [        S U 5       5      nS nS n	U R                   GH>  n
U
SU R                    nU R                  (       a  X R                  * S O/ nSU;   a  M=  SU;   a  ME  Sn[        X[5       HR  u  pïUR                  S	;   d  US	;   a  UR                  U:w  a  S
n  O'M1  [        UR                  UUS5      (       a  MP  S
n  O   U(       aF  [        Xl5       H7  u  pïUR                  S	;  d  M  [        XþR                  US5      (       a  M5  S
n  O   U(       d  Mþ   U" X+5      nU" X<5      nUS   S:X  d  US:X  a  U	" UUX°R                  5      n[        UUU
5      s  $    gs  snf ! [        R                   a     gf = fs  snf ! [        R                   a     gf = f! [        R                   a     GMš  f = f)aN  Find the appropriate loop to be used for a ufunc based on the types
of the operands

ufunc        - The ufunc we want to check
arg_types    - The tuple of arguments to the ufunc, including any
               explicit output(s).
return value - A UFuncLoopSpec identifying the loop, or None
               if no matching loop is found.
Nc              3   ó>   #   • U  H  oR                   S ;   v •  M     g7f)rØ   N©rÚ   ©r­   r   s     r.   r¯   Ú+ufunc_find_matching_loop.<locals>.<genexpr>—  ó   é € Ð5¢n �G‰G�tŽO¢nùó   ‚c              3   ó>   #   • U  H  oR                   S ;   v •  M     g7f)rÙ   Nrã   rä   s     r.   r¯   rå   ˜  ræ   rç   c           	      óV  • [        U5      [        U 5      :¼  d   e[        X5       VVs/ s H,  u  p#US;   a  UO[        [        R                  " U5      5      PM.     nnnUU[        U 5      S  Vs/ s H"  n[        [        R                  " U5      5      PM$     sn-  nU$ s  snnf s  snf )z¯
Return a list of Numba types representing *ufunc_letters*,
except when the letter designates a datetime64 or timedelta64,
in which case the type is taken from *numba_types*.
r<   N)rÒ   rz   rH   r@   r*   )Únumba_typesÚufunc_lettersÚtpre   r   s        r.   Úchoose_typesÚ.ufunc_find_matching_loop.<locals>.choose_typesš  s´   € ô �=Ó!¤S¨Ó%5Ó5Ð5Ð5ä#& {Ô#BôDÚ#B‘Z�Rð  “~‘¬:´b·h²h¸vÓ6FÓ+GÒGÙ#Bð 	ñ Dð 	Ø -¬c°+Ó.>Ð.?Ñ @óBÚ @�fô œRŸXšX fÓ-Ö.Ù @ñBñ 	BˆàˆùóDùòBs   ©3B Á0)B&c                 óˆ  ^ ^• S nU4S jnUS:X  a5  [        U 4S jT  5       5      (       a  T S   R                  nU" X5      nU$ U$ US:X  a'  T S   R                  nT S   R                  n	U" XU5      $ US:X  a'  T S   R                  n	T S   R                  nU" XU5      $ US   S	:X  a  T S   R                  nU" X5      nU$ g
)a{  
Sets the output unit of a datetime type based on the input units

Timedelta is a special dtype that requires the time unit to be
specified (day, month, etc). Not every operation with timedelta inputs
leads to an output of timedelta output. However, for those that do,
the unit of output must be inferred based on the units of the inputs.

At the moment this function takes care of two cases:
a) where all inputs are timedelta with the same unit (mm), and
therefore the output has the same unit.
This case is used for arr.sum, and for arr1+arr2 where all arrays
are timedeltas.
If in the future this needs to be extended to a case with mixed units,
the rules should be implemented in `npdatetime_helpers` and called
from this function to set the correct output unit.
b) where left operand is a timedelta, i.e. the "m?" case. This case
is used for division, eg timedelta / int.

At the time of writing, Numba does not support addition of timedelta
and other types, so this function does not consider the case "?m",
i.e. where timedelta is the right operand to a non-timedelta left
operand. To extend it in the future, just add another elif clause.
c                 óê   • / nU  Hj  n[        U[        R                  5      (       a7  UR                  S:X  a'  UR	                  [        R                  " U5      5        MY  UR	                  U5        Ml     U$ )Nr2   )rT   r   r5   r7   rp   )rÆ   r7   Únew_outputsÚouts       r.   Úmake_specificÚLufunc_find_matching_loop.<locals>.set_output_dt_units.<locals>.make_specificÁ  s]   € ØˆKÛ�Ü˜c¤5×#4Ñ#4×5Ñ5¸#¿(¹(Àb».Ø×&Ñ&¤u×'8Ò'8¸Ó'>Ö?à×&Ñ& sÖ+ñ	 ð
 Ðr0   c                 ó^  >• / nU  H£  n[        U[        R                  5      (       ap  UR                  S:X  a`  [        R
                  " X5      nUc   [        ST S3S-   SU S3-   SU S3-   5      eUR                  [        R                  " U5      5        M’  UR                  U5        M¥     U$ )	Nr2   zufunc 'z	' is not zsupported between zdatetime64[z] zand timedelta64[rR   )rT   r   r6   r7   r   Ú combine_datetime_timedelta_unitsr   rp   )rÆ   Údt_unitÚtd_unitrñ   rò   r7   Ú
ufunc_names         €r.   Úmake_datetime_specificÚUufunc_find_matching_loop.<locals>.set_output_dt_units.<locals>.make_datetime_specificÊ  s¾   ø€ ØˆKÛ�Ü˜c¤5×#3Ñ#3×4Ñ4¸¿¹ÀR»Ü-×NÒNØó*�Dà‘|Ü)¨G°J°<¸yÐ*IØ*>ñ+?à,7¸°yÀÐ*Cñ+Dð -=¸W¸IÀQÐ*Gñ+Hó ,ð ,ð
  ×&Ñ&¤u×'7Ò'7¸Ó'=Ö>à×&Ñ& sÖ+ñ ð Ðr0   Úmmc              3   óZ   >#   • U  H   oR                   TS    R                   :H  v •  M"     g7f)r   N)r7   )r­   Úinpr˜   s     €r.   r¯   ÚHufunc_find_matching_loop.<locals>.set_output_dt_units.<locals>.<genexpr>Ü  s    øé € Ð@º°#—8‘8˜v a™yŸ~™~Ö-ºùs   ƒ(+r   r<   r   ÚMmr+   N)r¶   r7   )
r˜   rÆ   Úufunc_inputsrù   ró   rú   r7   rñ   rø   r÷   s
   `  `      r.   Úset_output_dt_unitsÚ5ufunc_find_matching_loop.<locals>.set_output_dt_units¨  sà   ù€ ò2	õ	ð" ˜4ÓÜÔ@¹Ó@×@Ñ@ð ˜a‘y—~‘~�Ù+¨GÓ:�ð Ðð �à˜TÓ!ð ˜Q‘i—n‘nˆGØ˜Q‘i—n‘nˆGÙ)¨'¸GÓDÐDà˜TÓ!ð ˜Q‘i—n‘nˆGØ˜Q‘i—n‘nˆGÙ)¨'¸GÓDÐDà˜!‰_ Ó#à˜!‘9—>‘>ˆDÙ'¨Ó6ˆKØÐð	 $r0   ÚeÚOTr<   FÚsafeÚ	same_kindr   r+   r   )ÚninrÒ   r]   r   r"   Úanyr   Únoutrz   rF   rà   rÈ   r¿   )r·   Ú	arg_typesÚinput_typesÚoutput_typesr»   Únp_input_typesÚnp_output_typesrÞ   rí   r  Ú	candidater  Úufunc_outputsÚfoundÚouterÚinnerr˜   rÆ   s                     r.   Úufunc_find_matching_loopr  |  s[  € ð ˜J˜UŸY™YÐ'€KØŸY™Y˜ZÐ(€LÜ�Ó §	¡	Ó)Ð*Ð)ðÙ/:Ó;ª{¨!œ( 1ž+©{ˆÐ;ðÙ0<Ó=²¨1œ8 Až;±ˆÐ=ô 	Ñ5¡nÓ5Ó5÷ 	6ÜÑ5¡nÓ5Ó5ð òòOðn —[•[ˆ	Ø   %§)¡)Ð,ˆØ38·:·:˜	§:¡: + ,Ñ/À2ˆà�,ÓáØ�,ÓáØˆä Ö=‰LˆEà�z‰z˜TÓ! U¨d£]ð —:‘: Ó&Ø!�EÙñ 'ô $ E§J¡J°Ø$4°f÷>ó >à�Ùñ >ö ä # OÖ C‘�Ø—J‘J dÕ*Ü" 5¯*©*Ø#3°[÷Bó Bà!�EÙñ !D÷ ˆ5ðAÙ% kÓ@�Ù& |ÓC�ð   ‘? cÓ)¨\¸TÓ-AÙ1°&¸'Ø2>ÇÁóP�Gô % V¨W°iÓ@Ò@ñg !ðj ùòO <øÜ×*Ñ*ó Ùðüò >øÜ×*Ñ*ó Ùðûôv ×2Ñ2ó ó ðúsX   ºG7 ¾G2ÁG7 ÁH ÁHÁ/H Æ-3H0Ç2G7 Ç7HÈHÈH ÈH-È,H-È0I	ÉI	c                 ó   • U R                   $ r‡   )Úisalignedstruct)Ústructs    r.   Ú_is_aligned_structr  7  s   € Ø×!Ñ!Ð!r0   c                 óz  • U R                   (       a  Sn[        R                  " U5      e/ nU R                  R	                  5        HE  u  p4USS u  pV[        U5      S:X  a  US   OSn[        U5      nUUUS.n	UR                  X945        MG     U R                  n
[        U 5      n[        R                  " X*U5      $ )z:Convert a NumPy structured dtype to Numba Record type
    z-dtypes that contain object are not supported.Nr   é   )r>   rq   rr   )Ú	hasobjectr   r"   r:   ÚitemsrÒ   rH   rp   r%   r  r   rZ   )r*   rg   r:   ÚnameÚinfoÚ	elemdtyperq   rr   rœ   Úinfosrs   ru   s               r.   rC   rC   ;  s²   € ð ‡‡Ø=ˆÜ×-Ò-¨cÓ2Ð2à€FØ—l‘l×(Ñ(Ö*‰
ˆà" 2 A˜hÑˆÜ˜t›9¨›>��Q’¨tˆä˜	Ó"ˆàØØñ
ˆð
 	�‰�t�mÖ$ñ +ð  �>‰>€DÜ  Ó'€Gä�<Š<˜ gÓ.Ð.r0   c                 ó    • [        U [        R                  5      (       a  U R                  n [        R                  U-  nUR                  U 5      $ )z3
Get a ctypes array of *nbytes* starting at *ptr*.
)rT   ÚctypesÚc_void_pÚvalueÚc_byteÚfrom_address)ÚptrÚnbytesÚarrtys      r.   Ú_get_bytes_bufferr+  Y  s=   € ô �#”v—‘×'Ñ'Ø�i‰iˆÜ�M‰M˜FÑ"€EØ×Ñ˜cÓ"Ð"r0   c                 óB   • [         R                  " [        X5      U5      $ r‡   )r@   Ú
frombufferr+  )r(  r)  r*   s      r.   Ú_get_array_from_ptrr.  c  s   € Ü�=Š=Ô*¨3Ó7¸Ó?Ð?r0   c                 óä  • SSK Jn   U R                  n Ub  [        R
                  " U5      n[        U [        R                  5      (       a  Uc  [        S5      eU nO¹[        U [        R                  5      (       a‹  U" U R                  5      n[        U[        R                  5      (       d   e[        UR
                  5      nUb  X&:w  a  [        SU< SU < 35      eUn[        R                  " U [        R                  5      nO[        SU < 35      eUR                   [        R"                  " U[        R$                  S9-  n['        XGU5      R)                  U5      $ ! [         a     GNZf = f)zÓ
Return a Numpy array view over the data pointed to by *ptr* with the
given *shape*, in C order.  If *dtype* is given, it is used as the
array's dtype, otherwise the array's dtype is inferred from *ptr*'s type.
r   )Úfrom_ctypesz*explicit dtype required for void* argumentzmismatching dtype 'z' for pointer zexpected a ctypes pointer, got )r*   )Únumba.core.typing.ctypes_utilsr0  Ú_as_parameter_rK   r@   r*   rT   r#  r$  rƒ   Ú_PointerÚ	__class__r   ÚCPointerr]   Úcastr%   ÚprodÚintpr.  Úreshape)r(  rJ   r*   r0  ÚpÚptrtyÚ	ptr_dtyper)  s           r.   Úcarrayr=  g  s)  € õ ;ðà× Ñ ˆð
 ÑÜ—’˜“ˆä�#”v—‘×'Ñ'Ø‰=ÜÐHÓIÐIØ‰Ü	�CœŸ™×	)Ñ	)Ù˜CŸM™MÓ*ˆÜ˜%¤§¡×0Ñ0Ð0Ð0Ü˜UŸ[™[Ó)ˆ	ØÑ Ó!3ÝÛ$¢cð+ó ,ð ,àˆÜ�KŠK˜œVŸ_™_Ó-‰åºsÐDÓEÐEà�^‰^œbŸgšg e´2·7±7Ñ;Ñ;€FÜ˜q¨%Ó0×8Ñ8¸Ó?Ð?øô1 ó Úðús   ˆE! Å!
E/Å.E/c                 óh   • [        U[        5      (       d  USSS2   n[        XU5      R                  $ )zÙ
Return a Numpy array view over the data pointed to by *ptr* with the
given *shape*, in Fortran order.  If *dtype* is given, it is used as the
array's dtype, otherwise the array's dtype is inferred from *ptr*'s type.
Néÿÿÿÿ)rT   r'   r=  ÚT)r(  rJ   r*   s      r.   ÚfarrayrA  �  s1   € ô �eœS×!Ñ!Ø‘d˜�d‘ˆÜ�#˜eÓ$×&Ñ&Ð&r0   c                 ó  • [        U 5      nUS-
  nUS:”  a  X   S::  a  US-  nUS:”  a
  X   S::  a  M  US:  a  gX!U   :w  a  gSnXT:  a  X   S::  a  US-  nXT:  a
  X   S::  a  M  UnXe:”  a  X   X   -  XS-
     :w  a  gUS-  nXe:”  a  M  g)znIs the given shape, strides, and itemsize of C layout?

Note: The code is usable as a numba-compiled function
r   r?  r   TF©rÒ   )ÚdimsÚstridesr%   ÚndÚinneraxÚouteraxÚaxs          r.   Úis_contiguousrJ  ˜  sÈ   € ô
 
ˆT‹€Bà�1‰f€GØ
�B‹,˜4™=¨AÓ-Ø�1‰ˆð �B‹,˜4™=¨AÕ-ð �ƒ{Øð ˜7Ñ#Ó#Øð €GØ
Ó
 ¡°Ó 2Ø�1‰ˆð Ó
 ¡°Õ 2ð 
€BØ
‹,Ø‰;˜™Ñ! W°!©V¡_Ó4ØØ
ˆa‰ˆð �,ð r0   c                 ó  • [        U 5      nSnXC:  a  X   S::  a  US-  nXC:  a
  X   S::  a  M  XC:¼  a  gX!U   :w  a  gUS-
  nXT:”  a  X   S::  a  US-  nXT:”  a
  X   S::  a  M  UnXe:  a  X   X   -  XS-      :w  a  gUS-  nXe:  a  M  g)znIs the given shape, strides, and itemsize of F layout?

Note: The code is usable as a numba-compiled function
r   r   TFrC  )rD  rE  r%   rF  ÚfirstaxÚlastaxrI  s          r.   Ú
is_fortranrN  ¹  sÂ   € ô
 
ˆT‹€Bà€GØ
‹,˜4™=¨AÓ-Ø�1‰ˆð ‹,˜4™=¨AÕ-ð ƒ}Øð ˜7Ñ#Ó#Øð �!‰V€FØ
Ó
˜t™|¨qÓ0Ø�!‰ˆð Ó
˜t™|¨qÕ0ð 
€BØ
‹+Ø‰;˜™Ñ! W°!©V¡_Ó4ØØ
ˆa‰ˆð �+ð r0   c                 ó  • [         R                  [         R                  [         R                  [         R                  [         R
                  [         R                  [         R                  R                  4n[        X5      $ )zjReturns True if the type of 'arr' is supported by the Numba `np.asarray`
implementation, False otherwise.
)
r   r¡   ÚSequencerÓ   ÚStringLiteralÚNumberrX   Ú
containersÚListTyperT   )ÚarrÚoks     r.   Útype_can_asarrayrW  Ú  sO   € ô
 �+‰+”u—~‘~¤u§{¡{´E×4GÑ4GÜ
�,‰,œŸ™¤u×'7Ñ'7×'@Ñ'@ð
B€Bô �cÓÐr0   c                 óÐ   • [         R                  [         R                  [         R                  [         R                  [         R
                  [         R                  4n[        X5      $ )z°Returns True if the type of 'typ' is a scalar type, according to
NumPy rules. False otherwise.
https://numpy.org/doc/stable/reference/arrays.scalars.html#built-in-scalar-types
)r   rX   rR  ÚUnicodeTyperQ  r5   r6   rT   )ÚtyprV  s     r.   Útype_is_scalarr[  å  sD   € ô �-‰-œŸ™¤u×'8Ñ'8¼%×:MÑ:MÜ
×
Ñ
œU×-Ñ-ð
/€Bä�cÓÐr0   c                 ó‚   • [        U [        [        R                  45      (       d  [	        SR                  U5      5      eg)z2Raises TypingError if the value is not an integer.z{} must be an integerN)rT   r'   r   rV   r   r~   )Úvr  s     r.   Úcheck_is_integerr^  ð  s4   € ä�aœ#œuŸ}™}Ð-×.Ñ.ÜÐ1×8Ñ8¸Ó>Ó?Ð?ð /r0   c                 óˆ   • X:  =(       d8    [         R                  " U5      =(       a    [         R                  " U 5      (       + $ r‡   )r@   Úisnan©ÚaÚbs     r.   Ú	lt_floatsrd  ö  s(   € ð
 ‰5×5”R—X’X˜a“[×4¬¯ª°!«¤_Ð5r0   c                 ó`  • [         R                  " U R                  5      (       a‹  [         R                  " UR                  5      (       ae  [         R                  " U R                  5      (       a  g[         R                  " UR                  5      (       a  gU R                  UR                  :  $ g[         R                  " UR                  5      (       a  g[         R                  " U R                  5      (       a?  [         R                  " UR                  5      (       a  U R                  UR                  :  $ g[         R                  " UR                  5      (       a  gU R                  UR                  :  a  gU R                  UR                  :X  a  U R                  UR                  :  $ g)NFT)r@   r`  ÚrealÚimagra  s     r.   Ú
lt_complexrh  þ  s	  € Ü	‡x‚x�—‘×ÑÜ�8Š8�A—F‘F×ÑÜ�xŠx˜Ÿ™×ÑØä—8’8˜AŸF™F×#Ñ#ØàŸ6™6 A§F¡F™?Ð*àô �8Š8�A—F‘F×ÑØä�xŠx˜Ÿ™×ÑÜ—8’8˜AŸF™F×#Ñ#ØŸ6™6 A§F¡F™?Ð*à ä—8’8˜AŸF™F×#Ñ#Øà—v‘v §¡“Ø#ØŸ™ 1§6¡6Ó)Ø Ÿv™v¨¯©™Ð.Ø r0   )r  r‡   )aÚcollectionsr#  ÚreÚnumpyr@   Ú
numba.corer   r   r   Únumba.core.typing.templatesr   r±   r   Únumba.core.errorsr   Únumba.core.cgutilsr	   ra   Úmapr'   Ú__version__ÚsplitÚnumpy_versionÚUSE_LEGACY_TYPE_SYSTEMr*   Úbooleanr   r   r   r   r   r   r   r   r   r   r   r   r   rc   ÚpyobjectrD   Únp_bool_Únp_int8Únp_int16Únp_int32Únp_int64Únp_uint8Ú	np_uint16Ú	np_uint32Ú	np_uint64Ú
np_float32Ú
np_float64Ú
np_float16Únp_complex64Únp_complex128ÚcompileÚIr   r4   r%   r&   r/   r8   rH   r6   r5   r)   r(   rY   r]   r[   rt   r…   r‰   r’   r�   r¨   r½   Ú
namedtupler¿   rÖ   rà   r  r  rC   r+  r.  r=  rA  rJ  rN  rW  r[  r^  rd  rh  r¬   r0   r.   Ú<module>rˆ     s¾  ðÛ Û Û 	ã ç ,Ñ ,Ý 1Ý 'Ý )õ +ñ ‘c˜#˜rŸ~™~×3Ñ3°CÓ8¸¸!Ð<Ó=Ó>€ð 
× × Ð à
�Š�Ó˜%Ÿ-™-Ø
�Š�Ó˜%Ÿ*™*Ø
�Š�Ó˜5Ÿ;™;Ø
�Š�Ó˜5Ÿ;™;Ø
�Š�Ó˜5Ÿ;™;à
�Š�Ó˜5Ÿ;™;Ø
�Š�Ó˜EŸL™LØ
�Š�Ó˜EŸL™LØ
�Š�Ó˜EŸL™Là
�Š�Ó˜UŸ]™]Ø
�Š�Ó˜UŸ]™]Ø
�Š�Ó˜UŸ]™]Ø
�Š�Ó˜uŸ™Ø
�Š�Ó × 0Ñ 0à
�Š�Ó˜%Ÿ.™.ð%‚Jð, 	�Š�Ó˜%Ÿ.™.Ø
�Š�Ó˜%Ÿ-™-Ø
�Š�Ó˜5Ÿ>™>Ø
�Š�Ó˜5Ÿ>™>Ø
�Š�Ó˜5Ÿ>™>à
�Š�Ó˜5Ÿ>™>Ø
�Š�Ó˜EŸO™OØ
�Š�Ó˜EŸO™OØ
�Š�Ó˜EŸO™Oà
�Š�Ó˜U×-Ñ-Ø
�Š�Ó˜U×-Ñ-Ø
�Š�Ó˜U×-Ñ-Ø
�Š�Ó˜u×1Ñ1Ø
�Š�Ó × 3Ñ 3à
�Š�Ó˜%Ÿ.™.ð%€Jð, �ZŠZÐ0°"·$±$Ó7€
Ø—’Ð>ÀÇÁÓE€à—h’h˜t“n×-Ñ-Ð ò5ò25ò1ð@ 
×Ñ�dØ	×Ñ�tØ	‡M�M�3Ø	×Ñ˜#ð	Ð ò"/òJ/ò6Hòò'òòò*ò. ôF3�K×*Ò*Ð+;Ø+MóOô 3ò*8ô+ò$xòv"ò/ò<#ò@ô#@ôL'òòBòBòò@ò6ó!r0   