+
    :i                    X   ^ RI Ht ^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIH	t	 ^ RI
t
^ RIHt ^ RIHtHtHtHtHtHtHt ^ RIHt ]P.                  t]P2                  t]P6                  t]R9   d   ]P:                  t ! R R	]4      t ] ! 4       t!] ! 4       t"] ! 4       t#]!PH                  t%]"PH                  t&]#PH                  t' ! R
 R]! RR4      4      t( ! R R]! RR4      4      t) ! R R]! RR4      4      t* ! R R]4      t+ ! R R]4      t,]! RR4      t- ! R R]4      t. ! R R4      t/R# )    )
namedtupleN)ir)Constant)
_helperlib)typesutilsconfigloweringcgutilsimputils	serialize)	PYVERSIONc                   6   a  ] tR t^t o R tR tRR ltRtV tR# )	_Registryc                    / V n         R # N	functionsselfs   &R/var/www/html/photoedit/myenv/lib/python3.14/site-packages/numba/core/pythonapi.py__init___Registry.__init__   s	        c                \   a a \        S\        P                  4      '       g   Q hV V3R  lpV# )c                 f   < SSP                   9   d   \        R S: 24      hV SP                   S&   V # )zduplicate registration for )r   KeyError)funcr   	typeclasss   &r   	decorator%_Registry.register.<locals>.decorator   s0    DNN*)MNN(,DNN9%Kr   )
issubclassr   Type)r   r   r    s   ff r   register_Registry.register   s'    )UZZ0000	
 r   Nc                    \        V\        P                  4      '       g   Q hVP                   F&  pV P                  P                  V4      pVf   K$  Vu # 	  V# r   )r"   r   r#   __mro__r   get)r   r   defaultclsr   s   &&&  r   lookup_Registry.lookup&   sO    )UZZ0000$$C>>%%c*D % r   r   r   )	__name__
__module____qualname____firstlineno__r   r$   r+   __static_attributes____classdictcell____classdict__s   @r   r   r      s      r   r   c                   .   a  ] tR t^7t o RtRtR tRtV tR# )_BoxContextz4
The facilities required by boxing implementations.
c                N    V P                   P                  WV P                  4      # r   pyapifrom_native_valueenv_managerr   typvals   &&&r   box_BoxContext.box>       zz++Cd6F6FGGr    N)	r-   r.   r/   r0   __doc__	__slots__r?   r1   r2   r3   s   @r   r6   r6   7   s      IH Hr   r6   c                   .   a  ] tR t^Bt o RtRtR tRtV tR# )_UnboxContextz6
The facilities required by unboxing implementations.
c                8    V P                   P                  W4      # r   )r9   to_native_value)r   r=   objs   &&&r   unbox_UnboxContext.unboxI   s    zz))#33r   rB   N)	r-   r.   r/   r0   rC   rD   rJ   r1   r2   r3   s   @r   rF   rF   B   s      I4 4r   rF   c                   :   a  ] tR t^Mt o RtRtR tR tR tRt	V t
R# )_ReflectContextz8
The facilities required by reflection implementations.
c                n    V P                   P                  V P                  \        P                  4       R # r   )builderstoreis_errorr   true_bitr   s   &r   	set_error_ReflectContext.set_errorV   s     4=='*:*:;r   c                N    V P                   P                  WV P                  4      # r   r8   r<   s   &&&r   r?   _ReflectContext.boxY   rA   r   c                N    V P                   P                  WV P                  4      # r   )r9   reflect_native_valuer;   r<   s   &&&r   reflect_ReflectContext.reflect\   s    zz..s9I9IJJr   rB   N)r-   r.   r/   r0   rC   rD   rS   r?   rY   r1   r2   r3   s   @r   rM   rM   M   s(      I<HK Kr   rM   c                   .   a  ] tR t^`t o RtRR ltRtV tR# )NativeValuez
Encapsulate the result of converting a Python object to a native value,
recording whether the conversion was successful and how to cleanup.
Nc                T    Wn         Ve   TM\        P                  V n        W0n        R # r   )valuer   	false_bitrQ   cleanup)r   r^   rQ   r`   s   &&&&r   r   NativeValue.__init__f   s     
$,$8g>O>Or   )r`   rQ   r^   NN)r-   r.   r/   r0   rC   r   r1   r2   r3   s   @r   r\   r\   `   s     
 r   r\   c                   2   a  ] tR t^lt o R tR tR tRtV tR# )EnvironmentManagerc                z    \        V\        P                  4      '       g   Q hWn        W n        W0n        W@n        R # r   )
isinstancer
   Environmentr9   envenv_bodyenv_ptr)r   r9   rh   ri   rj   s   &&&&&r   r   EnvironmentManager.__init__n   s/    #x334444
 r   c                F   \        V\        4      '       d   \        P                  ! V4      p\	        V P
                  P                  4       F  w  r#W1J g   K   V# 	  \        V P
                  P                  4      pV P
                  P                  P                  V4       V# )z6
Add a constant to the environment, return its index.
)	rf   strsysintern	enumeraterh   constslenappend)r   constindexr>   s   &&  r   	add_constEnvironmentManager.add_constu   sv    
 eS!!JJu%E#DHHOO4JE|  5 (EHHOO""5)r   c           	        V\        V P                  P                  4      8  g   Q hV P                  P                  pV P
                  P                  p\        P                  ! W P                  P                  RR7      pVP                  \        P                  ! W#4      4      ;_uu_ 4       w  rVV;_uu_ 4        V P                  P                  W14      pVP                  Wt4       RRR4       V;_uu_ 4        V P                  P                  RR4       RRR4       RRR4       VP                  V4      #   + '       g   i     LX; i  + '       g   i     L<; i  + '       g   i     LG; i)z
Look up constant number *index* inside the environment body.
A borrowed reference is returned.

The returned LLVM value may have NULL value at runtime which indicates
an error at runtime.
TzfillNPyExc_RuntimeErrorz$`env.consts` is NULL in `read_const`)rr   rh   rq   r9   rO   ri   r   alloca_oncepyobjif_elseis_not_nulllist_getitemrP   err_set_stringload)r   ru   rO   rq   retbr_not_nullbr_nullgetitems   &&      r   
read_constEnvironmentManager.read_const   s     s488??++++**$$%%!!'::+;+;4H__W00ABB&**11&@g+   

))(:  C ||C     CBs<   ,E9-D6	&E8E		E6EE	EEE,	)rh   ri   rj   r9   N)	r-   r.   r/   r0   r   rv   r   r1   r2   r3   s   @r   rd   rd   l   s     ! !r   rd   _IteratorLoopc                     a  ] tR t^t o RtR tR tRR ltR tR t	R t
R tR	 tR
 tR tR tR tR tRR ltR tR tR tR tR t]P2                  RR l4       tR tR tR tR tR tR t RR lt!R t"R t#R  t$R! t%R" t&R# t'R$ t(R% t)R& t*R' t+R( t,R) t-R* t.R+ t/R, t0R- t1R. t2R/ t3RR0 lt4RR1 lt5RR2 lt6RR3 lt7RR4 lt8RR5 lt9RR6 lt:RR7 lt;RR8 lt<RR9 lt=RR: lt>RR; lt?RR< lt@RR= ltAR> tBR? tCR@ tDRA tERB tFRC tGRD tHRE tIRF tJRG tKRH tLRI tMRJ tNRK tORL tPRM tQRN tRRO tSRP tTRQ tURR tVRS tWRT tXRU tYRV tZRRW lt[RX t\RY t]RZ t^R[ t_R\ t`]P2                  R] 4       taR^ tbR_ tcR` tdRa teRb tfRc tgRd thRe tiRf tjRRg ltkRRh ltlRi tmRj tnRk toRl tpRm tqRn trRo tsRp ttRq tuRr tvRs twRt txRu tyRv tzRw t{Rx t|Ry t}Rz t~R{ tR| tR} tR~ tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR t]P2                  R 4       tR tR tR tR tR tR tR tR tR tR tR tR tRR ltRR ltR tRR ltR tR tR tR tR tR tR tR tR tR tR tR tR tRtV tR# )	PythonAPIzR
Code generation facilities to call into the CPython C API (and related
helpers).
c                   Wn         W n        VP                  P                  P                  V n         V P                  P
                   V P                   P                  \        P                  4      V n
        V P                  P                  4       V n        \        P                  ! \        P                  ! ^4      4      V n        \        P                  ! \"        P$                  ! \"        P&                  4      ^,          4      V n        V P(                  V n        \        P                  ! \"        P$                  ! \"        P,                  4      ^,          4      V n        V P.                  V n        \        P2                  ! 4       V n        V P                   P7                  \        P8                  4      V n        \        P                  ! \        P                  ! ^4      4      V n        \        P                  ! \>        P@                  ^,          4      V n!        \        PD                  ! \        P                  ! ^4      \>        PF                  4      V n$        V P:                  V n%        \>        PL                  V n&        \>        PN                  V n'        \>        PP                  V n(        R#   \         d    / T P                  n         EL|i ; i)z<
Note: Maybe called multiple times when lowering a function
N))contextrO   basic_blockfunctionmodule_PythonAPI__serializedAttributeErrorget_argument_typer   pyobjectr}   
as_pointerpyobjptrr   PointerTypeIntTypevoidptrctypessizeofc_longlongulongc_ulonglonglonglong	ulonglong
DoubleTypedoubleget_value_typeintp
py_ssize_tcstringr   py_gil_state_size	gil_state	ArrayTypepy_buffer_sizepy_buffer_t	py_hash_tpy_unicode_1byte_kindpy_unicode_2byte_kindpy_unicode_4byte_kind)r   r   rO   s   &&&r   r   PythonAPI.__init__   s    ))2299	*KK$$
 \\33ENNC


--/~~bjjm4JJv}}V]];a?@	YY


6==1C1C#Dq#HImmo,,55ejjA~~bjjm4J$@$@1$DE<<

1z7P7PQ%/%E%E"%/%E%E"%/%E%E"'  	*')DKK$	*s   J& &KKc                    \        WW#4      # r   )rd   )r   rh   ri   rj   s   &&&&r   get_env_managerPythonAPI.get_env_manager   s    !$X??r   c                b   \         P                  ! V P                  V4      p\         P                  ! V P                  V4      ;_uu_ 4        V'       d   V P                  P                  P
                  P                  pVP                  V P                  8X  g   Q hV P                  RRV 24       V P                  P                  V P                  4       4       M9V P                  P                  P                  V P                  \        RV 234       RRR4       R#   + '       g   i     R# ; i)z;Emits LLVM code to ensure the `envptr` is not NULL
        r{   zmissing Environment: N)r   is_nullrO   if_unlikelyr   typepointeereturn_typer}   r   r   get_null_objectr   	call_convreturn_user_excRuntimeError)r   envptrreturn_pyobject	debug_msgr   fntys   &&&&  r   emit_environment_sentry!PythonAPI.emit_environment_sentry   s     //$,,7  w77||,,1199''4::555##(,A)*M   !5!5!78&&66LL,,YK8: 8777s   CDD.	c                    \         P                  ! \         P                  ! 4       V P                  .4      pV P	                  VR R7      pV P
                  P                  W1.4       R# )	Py_IncRefnameNr   FunctionTypeVoidTyper}   _get_functionrO   callr   rI   r   fns   &&  r   increfPythonAPI.incref   G    r{{}tzzl;;7"e$r   c                    \         P                  ! \         P                  ! 4       V P                  .4      pV P	                  VR R7      pV P
                  P                  W1.4       R# )	Py_DecRefr   Nr   r   s   &&  r   decrefPythonAPI.decref   r   r   c                    \         P                  ! V P                  V P                  .4      pV P                  VR R7      pV P                  P                  W1.4      # )numba_py_typer   r   r   r}   r   rO   r   r   s   &&  r   get_typePythonAPI.get_type   sH    tzzDJJ<8?;||  U++r   c                   \         P                  ! \         P                  ! ^4      4      p\         P                  ! V4      pV P                  V P                  Wg.p\         P                  ! \         P                  ! ^ 4      VRR7      p	V P                  V	RR7      p
V P                  P                  WW#V.\        V4      ,           4      # )   Tvar_argPyArg_ParseTupleAndKeywordsr   	r   r   r   r}   r   r   rO   r   list)r   argskwsfmtkeywordsobjscharptr
charptraryargtypesr   r   s   &&&&&*     r   parse_tuple_and_keywords"PythonAPI.parse_tuple_and_keywords   s    ..A/^^G,
JJ

G@rzz"~xF+HI||  Ch%?$t*%LMMr   c                L   \         P                  ! \         P                  ! ^4      4      pV P                  V.p\         P                  ! \         P                  ! ^ 4      VRR7      pV P                  VRR7      pV P                  P                  WqV.\        V4      ,           4      # )r   Tr   PyArg_ParseTupler   r   )r   r   r   r   r   r   r   r   s   &&&*    r   parse_tuplePythonAPI.parse_tuple   sx    ..A/JJ(rzz"~xF+=>||  C[4:%=>>r   c                   \         P                  ! \         P                  ! ^4      4      pV P                  W`P                  V P                  .p\         P
                  ! \         P                  ! ^ 4      VRR7      pV P                  VRR7      p	\        V P                  \        V4      4      p\        V P                  \        V4      4      p\        V\        4      '       d1   V P                  P                  V P                  P                  V4      pV P                  P                  WW#V.\!        V4      ,           4      # )r   Tr   PyArg_UnpackTupler   )r   r   r   r}   r   r   r   r   intrf   rm   r   insert_const_stringrO   r   r   r   )
r   r   r   n_minn_maxr   r   r   r   r   s
   &&&&&*    r   unpack_tuplePythonAPI.unpack_tuple  s    ..A/JJ$//Jrzz"~xF+>?#e*5#e*5dC  <<33DLL4G4GND||  D%?$t*%LMMr   c                    \         P                  ! V P                  R4      pV P                  VR R7      pV P                  P                  VR4      # )PyErr_Occurredr   rB   r   r   r   r   s   &  r   err_occurredPythonAPI.err_occurred  sC    tzz2.+;<||  R((r   c                    \         P                  ! \         P                  ! 4       R4      pV P                  VR R7      pV P                  P                  VR4      # )PyErr_Clearr   rB   )r   r   r   r   rO   r   r   s   &  r   	err_clearPythonAPI.err_clear  sD    r{{}b1=9||  R((r   c                   \         P                  ! \         P                  ! 4       V P                  V P                  .4      pV P                  VR R7      p\        V\        4      '       d   V P                  V4      p\        V\        4      '       d'   V P                  P                  V P                  V4      pV P                  P                  WAV34      # )PyErr_SetStringr   )r   r   r   r}   r   r   rf   rm   get_c_objectr   r   r   rO   r   )r   exctypemsgr   r   s   &&&  r   r   PythonAPI.err_set_string   s    r{{}tzz4<<.HI+<=gs##''0Gc3,,224;;DC||  s^44r   c                   \         P                  ! \         P                  ! 4       V P                  V P                  .R R7      pV P                  VRR7      p\        V\        4      '       d   V P                  V4      p\        V\        4      '       d'   V P                  P                  V P                  V4      pV P                  P                  WQV3\        V4      ,           4      # )Tr   PyErr_Formatr   )r   r   r   r}   r   r   rf   rm   r  r   r   r   rO   r   tuple)r   r  r  format_argsr   r   s   &&&*  r   
err_formatPythonAPI.err_format)  s    r{{}tzz4<<.HRVW>:gs##''0Gc3,,224;;DC||  s^eK6H%HIIr   Nc                    \         P                  ! \         P                  ! 4       V P                  .4      pV P	                  VRR7      pVf   V P                  4       pV P                  P                  W134      # )z
Raise an arbitrary exception (type or value or (type, args)
or None - if reraising).  A reference to the argument is consumed.
numba_do_raiser   )r   r   r   r}   r   	make_nonerO   r   )r   excr   r   s   &&  r   raise_objectPythonAPI.raise_object2  s^    
 r{{}tzzl;+;<;.."C||  V,,r   c                0   \         P                  ! \         P                  ! 4       V P                  V P                  .4      pV P	                  VR R7      p\        V\        4      '       d   V P                  V4      pV P                  P                  WAV34      # )PyErr_SetObjectr   
r   r   r   r}   r   rf   rm   r  rO   r   )r   r  excvalr   r   s   &&&  r   err_set_objectPythonAPI.err_set_object=  sr    r{{}tzz4::.FG+<=gs##''0G||  v%677r   c                   \         P                  ! \         P                  ! 4       V P                  .4      pV P	                  VR R7      p\        V\        4      '       d   V P                  V4      pV P                  P                  W134      # )PyErr_SetNoner   r  )r   r  r   r   s   &&  r   err_set_nonePythonAPI.err_set_noneD  sg    r{{}tzzl;?;gs##''0G||  Z00r   c                    \         P                  ! \         P                  ! 4       V P                  .4      pV P	                  VR R7      pV P
                  P                  W134      # )PyErr_WriteUnraisabler   r   r   s   &&  r   err_write_unraisablePythonAPI.err_write_unraisableK  sK    r{{}tzzl;+BC||  V,,r   c                    \         P                  ! \         P                  ! 4       V P                  .^,          4      pV P	                  VRR7      pV P
                  P                  WQW#34      # )   PyErr_Fetchr   )r   r   r   r   r   rO   r   )r   ptypvalptbr   r   s   &&&&  r   	err_fetchPythonAPI.err_fetchP  sR    r{{}t}}o.AB=9||  4%566r   c                    \         P                  ! \         P                  ! 4       V P                  .^,          4      pV P	                  VRR7      pV P
                  P                  WQW#34      # )r#  PyErr_Restorer   r   )r   tyr>   tbr   r   s   &&&&  r   err_restorePythonAPI.err_restoreU  sQ    r{{}tzzlQ.>??;||  #]33r   c           	   #    "   \        ^4       Uu. uF.  p\        P                  ! V P                  V P                  4      NK0  	  upw  r4pV P                  W4V4       Rx  V P                  P                  V4      pV P                  P                  V4      pV P                  P                  V4      pV'       d   \        P                  ! V P                  V P                  4       4      p	V P                  P                  V	RR7      ;_uu_ 4       w  rV
;_uu_ 4        V P                  V4       V P                  V4       V P                  V4       RRR4       V;_uu_ 4        V P                  WgV4       RRR4       RRR4       R# V P                  WgV4       R# u upi   + '       g   i     LX; i  + '       g   i     LF; i  + '       g   i     R# ; i5i)z
Temporarily push the current error indicator while the code
block is executed.  If *keep_new* is True and the code block
raises a new error, the new error is kept, otherwise the old
error indicator is restored at the end of the block.
NFlikely)ranger   r|   rO   r}   r(  r   r   r   r~   r   r.  )r   keep_newir%  r&  r'  r,  r>   r-  	new_errorif_errorif_oks   &&          r   err_pushPythonAPI.err_pushZ  sQ     $)8-#+a "--dllDJJG#+-3s#&\\s#ll%\\s#++DLL$:K:K:MNI%%i%>>BS8XKKOKK$KKO	 
 U$$Rb1  ?> Rb)'- X
 U ?>>sY   G4FC	GG4F	G F1	3G;#GF.)G1G<GG		Gc                |    V P                   P                  V P                  V P                  P                  VRR7      # )z
Get a Python object through its C-accessible *name*
(e.g. "PyExc_ValueError").  The underlying variable must be
a `PyObject *`, and the value of that pointer is returned.
T)	dllimport)r   get_c_valuerO   r}   r   )r   r   s   &&r   r  PythonAPI.get_c_objectw  s7     ||''djj6H6H$26 ( 8 	8r   c                    R V,          pV P                   P                  V P                  V4      pV P                  RV4       R# )zglobal name '%s' is not definedPyExc_NameErrorNr   r   r   r   r   r   r  cstrs   &&  r   raise_missing_global_error$PythonAPI.raise_missing_global_error  s7    /$6||//SA-t4r   c                    R V,          pV P                   P                  V P                  V4      pV P                  RV4       R# )zname '%s' is not definedr@  NrA  rB  s   &&  r   raise_missing_name_error"PythonAPI.raise_missing_name_error  s7    (4/||//SA-t4r   c                P   \         P                  ! \         P                  ! 4       V P                  .4      pV P	                  VR R7      pVP
                  P                  R4       V P                  P                  V P                  V4      pV P                  P                  W434       R# )Py_FatalErrorr   noreturnN)r   r   r   r   r   
attributesaddr   r   r   rO   r   )r   r  r   r   rC  s   &&   r   fatal_errorPythonAPI.fatal_error  ss    r{{}t||n=?;
*%||//SA"g&r   c                   \         P                  ! V P                  V P                  V P                  .4      pV P	                  VRR7      pV P
                  P                  V P                  V4      pV P                  P                  WAV.4      # )6Lookup name inside dict

Returns a borrowed reference
PyDict_GetItemStringr   )
r   r   r}   r   r   r   r   r   rO   r   )r   dicr   r   r   rC  s   &&&   r   dict_getitem_stringPythonAPI.dict_getitem_string  sn    
 tzzDJJ+EF+AB||//TB||  4[11r   c                    \         P                  ! V P                  V P                  V P                  .4      pV P                  VRR7      pV P                  P                  WAV.4      # )rQ  PyDict_GetItemr   r   )r   rS  r   r   r   s   &&&  r   dict_getitemPythonAPI.dict_getitem  sT    
 tzzDJJ

+CD+;<||  4[11r   c           	        V^ 8X  dQ   \         P                  ! V P                  R4      pV P                  VRR7      pV P                  P                  VR4      # \         P                  ! V P                  V P                  .4      pV P                  VRR7      pV P                  P                  V\        V P                  \        V4      4      .4      # )r   
PyDict_Newr   _PyDict_NewPresizedrB   )	r   r   r}   r   rO   r   r   r   r   )r   presizer   r   s   &&  r   dict_newPythonAPI.dict_new  s    a<??4::r2D##D|#<B<<$$R,,??4::/@AD##D/D#EB<<$$R&.tG&M%NP Pr   c                    \         P                  ! \         P                  ! ^ 4      V P                  V P                  V P                  34      pV P	                  VRR7      pV P
                  P                  WQW#34      # )    PyDict_SetItemr   r   r   r   r}   r   rO   r   )r   dictobjnameobjvalobjr   r   s   &&&&  r   dict_setitemPythonAPI.dict_setitem  sb    rzz"~

DJJ04

0< =+;<||  w%?@@r   c                F   \         P                  ! \         P                  ! ^ 4      V P                  V P                  V P                  34      pV P                  VRR7      pV P                  P                  V P                  V4      pV P                  P                  WQWc34      # )ra  PyDict_SetItemStringr   )r   r   r   r}   r   r   r   r   r   rO   r   )r   rd  r   rf  r   r   rC  s   &&&&   r   dict_setitem_stringPythonAPI.dict_setitem_string  s|    rzz"~

DLL04

0< =+AB||//TB||  t%<==r   c                    V P                  4       pV P                  V4      ;_uu_ 4        V F  w  r4V P                  W#V4       K  	  RRR4       V#   + '       g   i     T# ; i)zB
Args
-----
keyvalues: iterable of (str, llvm.Value of PyObject*)
N)r^  if_object_okrk  )r   	keyvaluesrd  kvs   &&   r   	dict_packPythonAPI.dict_pack  sX     --/w''!((Q7 " (  (' s   AA#	c                    \         P                  ! V P                  V P                  .4      pV P	                  VR R7      pV P
                  P                  W1.4      # )PyFloat_FromDoubler   )r   r   r}   r   r   rO   r   )r   fvalr   r   s   &&  r   float_from_doublePythonAPI.float_from_double  sI    tzzDKK=9+?@||  V,,r   c                    \         P                  ! V P                  V P                  V P                  .4      pV P	                  VR R7      pV P                  R4      pV P                  P                  W1V.4      # )PyNumber_AsSsize_tr   PyExc_OverflowError)r   r   r   r}   r   r  rO   r   )r   numobjr   r   	exc_classs   &&   r   number_as_ssize_tPythonAPI.number_as_ssize_t  sd    tTZZ0HI+?@%%&;<	||  i%899r   c                    \         P                  ! V P                  V P                  .4      pV P                  VR R7      pV P                  P                  W1.4      # )PyNumber_Longr   r   r   r|  r   r   s   &&  r   number_longPythonAPI.number_long  sH    tzzDJJ<8?;||  X..r   c                    \         P                  ! V P                  V P                  .4      pV P	                  VR R7      pV P
                  P                  W1.4      # )PyLong_AsUnsignedLongLongr   r   r   r   r}   r   rO   r   r  s   &&  r   long_as_ulonglongPythonAPI.long_as_ulonglong  sI    t~~

|<+FG||  X..r   c                    \         P                  ! V P                  V P                  .4      pV P	                  VR R7      pV P
                  P                  W1.4      # )PyLong_AsLongLongr   r  r  s   &&  r   long_as_longlongPythonAPI.long_as_longlong  sI    t~~

|<+>?||  X..r   c                    \         P                  ! V P                  V P                  .4      pV P	                  VRR7      pV P
                  P                  W1.4      # )z~
Convert the given Python integer to a void*.  This is recommended
over number_as_ssize_t as it isn't affected by signedness.
PyLong_AsVoidPtrr   r   r   r   r}   r   rO   r   r  s   &&  r   long_as_voidptrPythonAPI.long_as_voidptr  sK    
 t||djj\:+=>||  X..r   c                   \         P                  ! V P                  V.4      pV P                  WRR 7      p\        P
                  ! V P                  V P                  4      pV P                  WRR 7      pV P                  P                  V P                  P                  Wa.4      V4       V P                  P                  V4      # )r   )
r   r   r}   r   r   r|   rO   rP   r   r   )r   ival	func_namenative_int_typesignedr   r   resptrs   &&&&&   r   _long_from_native_intPythonAPI._long_from_native_int  s    tzzO+<=5$$T\\4::>54<<,,R8&A||  ((r   c                    R p\         P                  ! V P                  V P                  .4      pV P	                  W2R7      pV P
                  P                  WA.4      # )PyLong_FromLongr   r   r   r}   r   r   rO   r   )r   r  r  r   r   s   &&   r   long_from_longPythonAPI.long_from_long   sK    %	tzzDII;75||  V,,r   c                @    V P                  VR V P                  RR7      # )PyLong_FromUnsignedLongFr  )r  r   r   r  s   &&r   long_from_ulongPythonAPI.long_from_ulong  s*    ))$0I*.))E * C 	Cr   c                @    V P                  VR V P                  RR7      # )PyLong_FromSsize_tTr  )r  r   r  s   &&r   long_from_ssize_tPythonAPI.long_from_ssize_t
  s*    ))$0D*.//$ * H 	Hr   c                @    V P                  VR V P                  RR7      # )PyLong_FromLongLongTr  )r  r   r  s   &&r   long_from_longlongPythonAPI.long_from_longlong  s*    ))$0E*.-- * F 	Fr   c                @    V P                  VR V P                  RR7      # )PyLong_FromUnsignedLongLongFr  )r  r   r  s   &&r   long_from_ulonglongPythonAPI.long_from_ulonglong  s*    ))$0M*... * H 	Hr   c                   VP                   P                  pW P                  P                  8:  d5   V P                  V P                  P                  WP                  4      4      # W P                  P                  8:  d5   V P                  V P                  P                  WP                  4      4      # \        RV,          4      h)z8
Return a Python integer from any native integer value.
integer too big (%d bits))	r   widthr   r  rO   sextr   r  OverflowErrorr   r  bitss   && r   long_from_signed_intPythonAPI.long_from_signed_int  s     yy99??"&&t||'8'8yy'IJJ]](((**4<<+<+<T==+QRR ;t DEEr   c                   VP                   P                  pW P                  P                  8:  d5   V P                  V P                  P                  WP                  4      4      # W P                  P                  8:  d5   V P                  V P                  P                  WP                  4      4      # \        RV,          4      h)z8
Same as long_from_signed_int, but for unsigned values.
r  )	r   r  r   r  rO   zextr   r  r  r  s   && r   long_from_unsigned_int PythonAPI.long_from_unsigned_int"  s     yy::###''(9(9$

(KLL^^)))++DLL,=,=dNN,STT ;t DEEr   c                    \         P                  ! V P                  V P                  V P                  .4      pV P                  VR V,          R7      pV# )zPyNumber_%sr   )r   r   r}   r   )r   r   r   r   s   &&  r   _get_number_operatorPythonAPI._get_number_operator.  sB    tzzDJJ

+CD=4+?@	r   c                    V'       d
   R V,           pV P                  V4      pV P                  P                  WRV.4      # )InPlace)r  rO   r   )r   r   lhsrhsinplacer   s   &&&&& r   _call_number_operatorPythonAPI._call_number_operator3  s8    t#D&&t,||  3Z00r   c                *    V P                  R WVR7      # )Addr  r  r   r  r  r  s   &&&&r   
number_addPythonAPI.number_add9      ))%7)KKr   c                *    V P                  R WVR7      # )Subtractr  r  r  s   &&&&r   number_subtractPythonAPI.number_subtract<      ))*c)PPr   c                *    V P                  R WVR7      # )Multiplyr  r  r  s   &&&&r   number_multiplyPythonAPI.number_multiply?  r  r   c                *    V P                  R WVR7      # )
TrueDivider  r  r  s   &&&&r   number_truedividePythonAPI.number_truedivideB  s    )),')RRr   c                *    V P                  R WVR7      # )FloorDivider  r  r  s   &&&&r   number_floordividePythonAPI.number_floordivideE  s    ))-7)SSr   c                *    V P                  R WVR7      # )	Remainderr  r  r  s   &&&&r   number_remainderPythonAPI.number_remainderH  s    ))+s)QQr   c                *    V P                  R WVR7      # )MatrixMultiplyr  r  r  s   &&&&r   number_matrix_multiply PythonAPI.number_matrix_multiplyK  s    ))*:Cg)VVr   c                *    V P                  R WVR7      # )Lshiftr  r  r  s   &&&&r   number_lshiftPythonAPI.number_lshiftN      ))(Cg)NNr   c                *    V P                  R WVR7      # )Rshiftr  r  r  s   &&&&r   number_rshiftPythonAPI.number_rshiftQ  r  r   c                *    V P                  R WVR7      # )Andr  r  r  s   &&&&r   
number_andPythonAPI.number_andT  r  r   c                *    V P                  R WVR7      # )Orr  r  r  s   &&&&r   	number_orPythonAPI.number_orW  s    ))$')JJr   c                *    V P                  R WVR7      # )Xorr  r  r  s   &&&&r   
number_xorPythonAPI.number_xorZ  r  r   c                    \         P                  ! V P                  V P                  .^,          4      pV'       d   RMRpV P                  WE4      pV P                  P                  WaW P                  4       .4      # )r#  PyNumber_InPlacePowerPyNumber_Power)r   r   r}   r   rO   r   borrow_none)r   r  r  r  r   fnamer   s   &&&&   r   number_powerPythonAPI.number_power]  s_    tzzDJJ<!+;<+2'8H,||  30@0@0B%CDDr   c                    \         P                  ! V P                  V P                  .4      pV P                  VR R7      pV P                  P                  W134      # )PyNumber_Negativer   r   r   s   &&  r   number_negativePythonAPI.number_negativec  I    tzzDJJ<8+>?||  V,,r   c                    \         P                  ! V P                  V P                  .4      pV P                  VR R7      pV P                  P                  W134      # )PyNumber_Positiver   r   r   s   &&  r   number_positivePythonAPI.number_positiveh  r
  r   c                    \         P                  ! V P                  V P                  .4      pV P                  VR R7      pV P                  P                  W1.4      # )PyNumber_Floatr   r   )r   r>   r   r   s   &&  r   number_floatPythonAPI.number_floatm  sI    tzzDJJ<8+;<||  U++r   c                    \         P                  ! V P                  V P                  .4      pV P                  VR R7      pV P                  P                  W134      # )PyNumber_Invertr   r   r   s   &&  r   number_invertPythonAPI.number_invertr  sI    tzzDJJ<8+<=||  V,,r   c                    \         P                  ! V P                  V P                  .4      pV P	                  VR R7      pV P
                  P                  W1.4      # )PyFloat_AsDoubler   )r   r   r   r}   r   rO   r   )r   fobjr   r   s   &&  r   float_as_doublePythonAPI.float_as_doublew  sI    t{{TZZL9+=>||  V,,r   c                n    V P                   P                  WP                  4      pV P                  V4      # )z(
Get a Python bool from a LLVM boolean.
)rO   r  r   bool_from_long)r   bvallongvals   && r   bool_from_boolPythonAPI.bool_from_bool|  s-     ,,##D))4""7++r   c                    \         P                  ! V P                  V P                  .4      pV P	                  VR R7      pV P
                  P                  W1.4      # )PyBool_FromLongr   r  )r   r  r   r   s   &&  r   r  PythonAPI.bool_from_long  sI    tzzDII;7+<=||  V,,r   c                    \         P                  ! V P                  \         P                  ! 4       \         P                  ! 4       .4      pV P	                  VR R7      pV P
                  P                  WAV.4      # )PyComplex_FromDoublesr   )r   r   r}   r   r   rO   r   )r   realvalimagvalr   r   s   &&&  r   complex_from_doublesPythonAPI.complex_from_doubles  sW    tzzBMMOR]]_+MN+BC||  w%788r   c                    \         P                  ! \         P                  ! 4       V P                  .4      pV P	                  VR R7      pV P
                  P                  W1.4      # )PyComplex_RealAsDoubler   r   r   r   r}   r   rO   r   r   cobjr   r   s   &&  r   complex_real_as_double PythonAPI.complex_real_as_double  K    r}}=+CD||  V,,r   c                    \         P                  ! \         P                  ! 4       V P                  .4      pV P	                  VR R7      pV P
                  P                  W1.4      # )PyComplex_ImagAsDoubler   r-  r.  s   &&  r   complex_imag_as_double PythonAPI.complex_imag_as_double  r2  r   c                
   \         P                  ! V P                  V P                  4      p\         P                  ! V P                  V P                  4      p\         P                  ! V P                  V P                  4      p\        P
                  ! \        P                  ! ^ 4      V P                  .V P                  P                  4       .^,          ,           4      pV P                  VRR7      pV P                  P                  WaW#V34      pV P                  P                  V4      pV P                  P                  V4      p	V P                  P                  V4      p
\         P                  ! V P                  V4      WV
3# )z
Read the members of a slice of integers.

Returns a (ok, start, stop, step) tuple where ok is a boolean and
the following members are pointer-sized ints.
numba_unpack_slicer   )r   r|   rO   r   r   r   r   r}   r   r   r   r   r   )r   rI   pstartpstoppstepr   r   resstartstopsteps   &&         r   slice_as_intsPythonAPI.slice_as_ints  s    $$T\\4??C##DLL$//B##DLL$//Brzz"~ $

|t/I/I/K.Lq.PPR+?@ll&$?@!!&)||  '||  't||S15DDr   c                    \         P                  ! V P                  V P                  V P                  V P                  .4      pV P	                  VR R7      pV P
                  P                  WQW#34      # )PySequence_GetSlicer   r   r   r}   r   r   rO   r   )r   rI   r=  r>  r   r   s   &&&&  r   sequence_getslicePythonAPI.sequence_getslice  s^    tzzDJJ,0OO,= >+@A||  5%788r   c                    \         P                  ! V P                  V P                  .4      pV P                  VR R7      pV P                  P                  W1.4      # )PySequence_Tupler   r   r   s   &&  r   sequence_tuplePythonAPI.sequence_tuple  I    tzzDJJ<8+=>||  U++r   c                    \         P                  ! V P                  V P                  V P                  .4      pV P                  VR R7      pV P                  P                  WAV.4      # )PySequence_Concatr   r   )r   obj1obj2r   r   s   &&&  r   sequence_concatPythonAPI.sequence_concat  sR    tzzDJJ

+CD+>?||  D\22r   c                    \         P                  ! V P                  V P                  .4      pV P	                  VR R7      pV P
                  P                  W1.4      # )
PyList_Newr   rD  )r   szvalr   r   s   &&  r   list_newPythonAPI.list_new  sI    tzzDOO+<=<8||  W--r   c                    \         P                  ! V P                  V P                  .4      pV P	                  VR R7      pV P
                  P                  W1.4      # )PyList_Sizer   r   r   r   r}   r   rO   r   )r   lstr   r   s   &&  r   	list_sizePythonAPI.list_size  sH    t==9||  U++r   c                    \         P                  ! \         P                  ! ^ 4      V P                  V P                  .4      pV P	                  VRR7      pV P
                  P                  WAV.4      # )ra  PyList_Appendr   rc  )r   rZ  r>   r   r   s   &&&  r   list_appendPythonAPI.list_append  sU    rzz"~

DJJ/GH?;||  3Z00r   c                    \         P                  ! \         P                  ! ^ 4      V P                  V P                  V P                  .4      pV P                  VRR7      pV P                  P                  WQW#.4      # )z&
Warning: Steals reference to ``val``
PyList_SetItemr   r   r   r   r}   r   r   rO   r   )r   rZ  idxr>   r   r   s   &&&&  r   list_setitemPythonAPI.list_setitem  sc     rzz"~

DOO04

0< =+;<||  3_55r   c                P   \         P                  ! V P                  V P                  V P                  .4      pV P	                  VRR7      p\        V\        4      '       d+   V P                  P                  \        P                  V4      pV P                  P                  WAV.4      # )z
Returns a borrowed reference.
PyList_GetItemr   )r   r   r}   r   r   rf   r   r   get_constantr   r   rO   r   )r   rZ  rd  r   r   s   &&&  r   r   PythonAPI.list_getitem  s{     tzzDJJ+HI+;<c3,,++EJJ<C||  3Z00r   c                :   Vf   V P                  4       p\        P                  ! \        P                  ! ^ 4      V P                  V P
                  V P
                  V P                  .4      pV P                  VRR7      pV P                  P                  WaW#V34      # )NPyList_SetSlicer   )	r   r   r   r   r}   r   r   rO   r   )r   rZ  r=  r>  rI   r   r   s   &&&&&  r   list_setslicePythonAPI.list_setslice  s    ;&&(Crzz"~

DOO040M N+<=||  5%<==r   c                $   \         P                  ! V P                  V P                  V P                  .4      pV P	                  VRR7      pV P
                  P                  \        P                  V4      pV P                  P                  WAV.4      # )z
Borrow reference
PyTuple_GetItemr   )r   r   r}   r   r   r   ri  r   r   rO   r   )r   tuprd  r   r   s   &&&  r   tuple_getitemPythonAPI.tuple_getitem  sn     tzzDJJ+HI+<=ll''

C8||  3Z00r   c                H   \         P                  ! V P                  V P                  .R R7      pV P	                  VRR7      pV P
                  P                  \        P                  \        V4      4      pV.pVP                  V4       V P                  P                  W54      # )Tr   PyTuple_Packr   )r   r   r}   r   r   r   ri  r   r   rr   extendrO   r   )r   itemsr   r   nr   s   &&    r   
tuple_packPythonAPI.tuple_pack  sz    tzzDOO+<dK>:LL%%ejj#e*=sE||  **r   c                    \         P                  ! V P                  V P                  .4      pV P	                  VR R7      pV P
                  P                  W1.4      # )PyTuple_Sizer   rY  )r   rq  r   r   s   &&  r   
tuple_sizePythonAPI.tuple_size  sH    t=>:||  U++r   c                    \         P                  ! V P                  V P                  .4      pV P	                  VR R7      pV P
                  P                  W0P                  V4      .4      # )PyTuple_Newr   rD  )r   countr   r   s   &&  r   	tuple_newPythonAPI.tuple_new  sS    tzzDOO+<==9||  ooe&<%=>>r   c                    \         P                  ! \         P                  ! ^ 4      V P                  V P                  V P                  .4      pV P                  VRR7      pV P	                  V4      pV P                  P                  WQW#.4       R# )z
Steals a reference to `item`.
PyTuple_SetItemr   Nrc  )r   	tuple_valru   itemr   
setitem_fns   &&&&  r   tuple_setitemPythonAPI.tuple_setitem  sn     rzz"~ $

DOOTZZHJ''3D'E
&*%&>?r   c                    Vf   V P                  4       p\        P                  ! V P                  V P                  .4      pV P	                  VRR7      pV P
                  P                  W1.4      # )N	PySet_Newr   )r   r   r   r}   r   rO   r   )r   iterabler   r   s   &&  r   set_newPythonAPI.set_new  s\    ++-HtzzDJJ<8;7||  Z00r   c                    \         P                  ! \         P                  ! ^ 4      V P                  V P                  .4      pV P	                  VRR7      pV P
                  P                  WAV.4      # )ra  	PySet_Addr   rc  )r   setr^   r   r   s   &&&  r   set_addPythonAPI.set_add   sU    rzz"~

DJJ/GH;7||  5\22r   c                    \         P                  ! \         P                  ! ^ 4      V P                  .4      pV P	                  VRR7      pV P
                  P                  W1.4      # )ra  PySet_Clearr   rc  r   r  r   r   s   &&  r   	set_clearPythonAPI.set_clear%  sL    rzz"~

|<=9||  U++r   c                    \         P                  ! V P                  V P                  .4      pV P	                  VR R7      pV P
                  P                  W1.4      # )
PySet_Sizer   rY  r  s   &&  r   set_sizePythonAPI.set_size*  sH    t=<8||  U++r   c                    \         P                  ! \         P                  ! ^ 4      V P                  V P                  .4      pV P	                  VRR7      pV P
                  P                  WAV.4      # )ra  _PySet_Updater   rc  )r   r  r  r   r   s   &&&  r   
set_updatePythonAPI.set_update/  sU    rzz"~

DJJ/GH?;||  8_55r   c                f   \         P                  ! \         P                  ! ^ 4      V P                  V P                  P                  4       V P                  P                  4       V P                  P                  4       .4      pV P                  VRR7      pV P                  P                  WaW#V34      # )ra  _PySet_NextEntryr   )
r   r   r   r}   r   r   r   r   rO   r   )r   r  posptrkeyptrhashptrr   r   s   &&&&&  r   set_next_entryPythonAPI.set_next_entry4  s    rzz"~ $

DOO,F,F,H $

 5 5 79R9R9T VW +=>||  67%CDDr   c           	   #  N  a	a
"   V P                   o
\        P                  ! S
V P                  R R7      p\        P                  ! S
V P                  RR7      p\        P
                  ! S
\        V P                  ^ 4      RR7      pS
P                  R4      pS
P                  R4      o	S
P                  V4       V	V
3R lpS
P                  V4      ;_uu_ 4        V P                  WW24      p\        P                  ! S
V4      pS
P                  VRR7      ;_uu_ 4        S
P                  S	4       R	R	R	4       \        S
P                  V4      V4      x  S
P                  V4       R	R	R	4       S
P!                  S	4       R	#   + '       g   i     LY; i  + '       g   i     L6; i5i)
r  r   r  r  bb_bodybb_endc                  *   < SP                  S 4       R # r   )branch)r  rO   s   r   do_break'PythonAPI.set_iterate.<locals>.do_breakI  s    NN6"r   Fr1  N)rO   r   r|   r   r}   alloca_once_valuer   r   append_basic_blockr  
goto_blockr  r   if_thenr   r   position_at_end)r   r  r  r  r  r  r  rfinishedr  rO   s   &&       @@r   set_iteratePythonAPI.set_iterate;  s6    ,,%%gt~~IN$$WdjjxH**7+3DOOQ+G08: ,,Y7++H5w	# ((##CAAw2H%88v& 9V 4h??NN7# ) 	' 98 )(s7   CF%AFE?	.6F$F%?F
FF"	F%c                N   \         P                  ! V P                  4      p\         P                  ! \         P                  ! 4       V.4      pV P                  VR4      p\        P                  ! V P                  V P                  4      pV P                  P                  W4.4       V# )zS
Ensure the GIL is acquired.
The returned value must be consumed by gil_release().
numba_gil_ensure)
r   r   r   r   r   r   r   r|   rO   r   )r   gilptrtyr   r   gilptrs   &    r   
gil_ensurePythonAPI.gil_ensureZ  st    
 >>$..1r{{}xj9&89$$T\\4>>B"h'r   c                    \         P                  ! V P                  4      p\         P                  ! \         P                  ! 4       V.4      pV P                  VR4      pV P                  P                  WA.4      # )zO
Release the acquired GIL by gil_ensure().
Must be paired with a gil_ensure().
numba_gil_release)r   r   r   r   r   r   rO   r   )r   gilr  r   r   s   &&   r   gil_releasePythonAPI.gil_releasef  sX    
 >>$..1r{{}xj9&9:||  U++r   c                    \         P                  ! V P                  . 4      pV P                  VRR7      pV P                  P                  V. 4      # )zR
Release the GIL and return the former thread state
(an opaque non-NULL pointer).
PyEval_SaveThreadr   )r   r   r   r   rO   r   r   s   &  r   save_threadPythonAPI.save_threadp  sE    
 t||R0+>?||  R((r   c                    \         P                  ! \         P                  ! 4       V P                  .4      pV P	                  VRR7      pV P
                  P                  W1.4       R# )z8
Restore the given thread state by reacquiring the GIL.
PyEval_RestoreThreadr   N)r   r   r   r   r   rO   r   )r   thread_stater   r   s   &&  r   restore_threadPythonAPI.restore_thready  sJ     r{{}t||n=+AB"n-r   c                    \         P                  ! V P                  V P                  .4      pV P	                  VR R7      pV P
                  P                  W134      # )numba_get_pyobject_private_datar   r  r   s   &&  r   object_get_private_data!PythonAPI.object_get_private_data  sI    t||djj\:+LM||  V,,r   c                    \         P                  ! \         P                  ! 4       V P                  V P                  .4      pV P                  VR R7      pV P                  P                  WAV34      # )numba_set_pyobject_private_datar   )r   r   r   r}   r   r   rO   r   )r   rI   ptrr   r   s   &&&  r   object_set_private_data!PythonAPI.object_set_private_data  sT    r{{}tzz4<<.HI+LM||  3Z00r   c                    \         P                  ! \         P                  ! 4       V P                  .4      pV P	                  VR R7      pV P
                  P                  W134      # )!numba_reset_pyobject_private_datar   r   r   s   &&  r   object_reset_private_data#PythonAPI.object_reset_private_data  sK    r{{}tzzl;+NO||  V,,r   c                    \         P                  ! V P                  V P                  .4      pV P	                  VR R7      pV P
                  P                  W1.4      # )PyImport_ImportModuler   r   r   r}   r   r   rO   r   )r   modnamer   r   s   &&  r   import_modulePythonAPI.import_module  sI    tzzDLL>:+BC||  Y//r   c                P   \         P                  ! V P                  V P                  .R R7      pV P                  VRR7      pV.\	        V4      ,           pVP                  V P                  P                  \        P                  4      4       V P                  P                  WE4      # )Tr   PyObject_CallFunctionObjArgsr   )r   r   r}   r   r   rs   r   get_constant_nullr   r   rO   r   )r   calleeobjargsr   r   r   s   &&&   r   call_function_objargsPythonAPI.call_function_objargs  sx    tzzDJJ<F+IJx$w-'DLL225>>BC||  **r   c                L   V P                   P                  V P                  V4      p\        P                  ! V P
                  V P
                  V P                  V P                  .R R7      pV P                  VRR7      pR\        V4      ,          pV P                   P                  V P                  V4      pWV.p	V'       d   V	P                  V4       V	P                  V P                   P                  \        P                  4      4       V P                  P                  Wi4      # )Tr   PyObject_CallMethodr   O)r   r   r   r   r   r}   r   r   rr   rv  rs   r  r   r   rO   r   )
r   r  methodr  cnamer   r   r   cfmtr   s
   &&&&      r   call_methodPythonAPI.call_method  s    00fEtzzDJJdll+S%)++@ACL ||//SAt$KK DLL225>>BC||  **r   c                `   VR J ;p'       d   V P                  ^ 4      pVf   V P                  4       p\        P                  ! V P                  V P                  .^,          4      pV P                  VRR7      pV P                  P                  WaW#34      pV'       d   V P                  V4       V# )NPyObject_Callr   )	r  r   r   r   r}   r   rO   r   r   )r   r  r   r   args_was_noner   r   results   &&&&    r   r   PythonAPI.call  s     DL(=(>>!$D;&&(CtzzDJJ<!+;<?;""2':;KKr   c                    \         P                  ! V P                  V P                  .4      pV P                  VRR7      pV P                  P                  W134      # )zJEmit a call to ``PyObject_Type(obj)`` to get the type of ``obj``.
        PyObject_Typer   r   r   s   &&  r   object_typePythonAPI.object_type  sJ     tzzDJJ<8?;||  V,,r   c                    \         P                  ! \         P                  ! ^ 4      V P                  .4      pV P	                  VRR7      pV P
                  P                  W1.4      # )ra  PyObject_IsTruer   rc  r   s   &&  r   object_istruePythonAPI.object_istrue  sM    rzz"~

|<+<=||  U++r   c                    \         P                  ! \         P                  ! ^ 4      V P                  .4      pV P	                  VRR7      pV P
                  P                  W1.4      # )ra  PyObject_Notr   rc  r   s   &&  r   
object_notPythonAPI.object_not  sL    rzz"~

|<>:||  U++r   c                ,   . ROpW49   d   VP                  V4      p\        P                  ! V P                  V P                  V P                  \        P                  ! ^ 4      .4      pV P                  VRR7      pV P                  P                  \        P                  V4      pV P                  P                  WqW(34      # VR8X  d.   V P                  P                  RW4      p	V P                  V	4      # VR8X  d.   V P                  P                  RW4      p	V P                  V	4      # VR9   Ed   \        P                  ! \        P                  ! ^ 4      V P                  V P                  .4      pV P                  VRR7      pV P                  P                  WrV34      p
V P                  P                  \        P                  R4      pV P                  P                  RW4      p\        P                  ! V P                  \!        V P                  R	4      4      p\        P"                  ! V P                  V4      ;_uu_ 4        VR8X  d   V P                  P%                  V
4      p
V P                  P'                  V
\        P                  ! ^4      4      pV P                  P)                  V P                  V4      V4       R	R	R	4       V P                  P+                  V4      # \-        R
P/                  VR7      4      h  + '       g   i     LF; i)zL
Refer to Python source Include/object.h for macros definition
of the opid.
==!=PyObject_RichComparer   iszis notnot inPySequence_ContainsNzUnknown operator {op!r})op)<z<=r  r  >z>=)inr  )ru   r   r   r}   r   r   r   ri  r   int32rO   r   icmp_unsignedr   r   r  r   	if_likelynot_truncrP   r   NotImplementedErrorformat)r   r  r  opstropsopidr   r   lopidbitflagstatusnegoneis_goodoutptr	truncateds   &&&&           r   object_richcomparePythonAPI.object_richcompare  s^   
 1<99U#D??4::

DJJ

SU/WXD##D/E#FBLL--ekk4@E<<$$Rs):;;d]ll00s@G&&w//hll00s@G&&w//&&??2::b>DJJ

3KLD##D/D#EB\\&&r:6F\\..u{{B?Fll00vFG..t||/7

D/IKF ""4<<99H$!\\..v6F LL..vrzz!}E	""4#6#6y#A#)+ : <<$$V,,%&?&F&F 'G '   :9s   A>LL	c                    \         P                  ! V P                  V P                  .4      pV P                  VR R7      pV P                  P                  W1.4      # )PyIter_Nextr   r   )r   iterobjr   r   s   &&  r   	iter_nextPythonAPI.iter_next  sH    tzzDJJ<8=9||  Y//r   c                    \         P                  ! V P                  V P                  .4      pV P                  VR R7      pV P                  P                  W1.4      # )PyObject_GetIterr   r   r   s   &&  r   object_getiterPythonAPI.object_getiter  rK  r   c                   V P                   P                  V P                  V4      p\        P                  ! V P
                  V P
                  V P                  .4      pV P                  VR R7      pV P                  P                  WQV.4      # )PyObject_GetAttrStringr   )
r   r   r   r   r   r}   r   r   rO   r   )r   rI   attrrC  r   r   s   &&&   r   object_getattr_stringPythonAPI.object_getattr_string  sl    ||//TBtzzDJJ+EF+CD||  4[11r   c                    \         P                  ! V P                  V P                  V P                  .4      pV P                  VR R7      pV P                  P                  WAV.4      # )PyObject_GetAttrr   r   )r   rI   r*  r   r   s   &&&  r   object_getattrPythonAPI.object_getattr	  sR    tzzDJJ

+CD+=>||  4[11r   c                F   V P                   P                  V P                  V4      p\        P                  ! \        P
                  ! ^ 4      V P                  V P                  V P                  .4      pV P                  VRR7      pV P                  P                  WaWC.4      # )ra  PyObject_SetAttrStringr   )r   r   r   r   r   r   r}   r   r   rO   r   )r   rI   r*  r>   rC  r   r   s   &&&&   r   object_setattr_stringPythonAPI.object_setattr_string  sw    ||//TBrzz"~

DLL$**/UV+CD||  4%566r   c                    \         P                  ! \         P                  ! ^ 4      V P                  V P                  V P                  .4      pV P	                  VRR7      pV P
                  P                  WQW#.4      # )ra  PyObject_SetAttrr   rc  )r   rI   r*  r>   r   r   s   &&&&  r   object_setattrPythonAPI.object_setattr  s]    rzz"~

DJJ

/ST+=>||  4%566r   c                B    V P                  WV P                  4       4      # r   )r3  r   r   rI   r*  s   &&&r   object_delattr_stringPythonAPI.object_delattr_string  s      ))#T5I5I5KLLr   c                B    V P                  WV P                  4       4      # r   )r7  r   r:  s   &&&r   object_delattrPythonAPI.object_delattr  s      ""3d.B.B.DEEr   c                    \         P                  ! V P                  V P                  V P                  .4      pV P                  VRR7      pV P                  P                  WAV34      # )z
Return obj[key]
PyObject_GetItemr   r   r   rI   keyr   r   s   &&&  r   object_getitemPythonAPI.object_getitem#  sT     tzzDJJ

+CD+=>||  3Z00r   c                    \         P                  ! \         P                  ! ^ 4      V P                  V P                  V P                  .4      pV P	                  VRR7      pV P
                  P                  WQW#34      # )z
obj[key] = val
PyObject_SetItemr   rc  )r   rI   rC  r>   r   r   s   &&&&  r   object_setitemPythonAPI.object_setitem+  s^     rzz"~

DJJ

/ST+=>||  3_55r   c                    \         P                  ! \         P                  ! ^ 4      V P                  V P                  .4      pV P	                  VRR7      pV P
                  P                  WAV34      # )z
del obj[key]
PyObject_DelItemr   rc  rB  s   &&&  r   object_delitemPythonAPI.object_delitem3  sX     rzz"~

DJJ/GH+=>||  3Z00r   c                    \         P                  ! V P                  V P                  .4      pR pV P	                  W#R7      pV P
                  P                  WA.4      # )PyUnicode_AsUTF8r   r   r   r   r}   r   rO   r   )r   strobjr   r  r   s   &&   r   string_as_stringPythonAPI.string_as_string;  sK    t||djj\:"1||  X..r   c                   \         P                  ! V P                  V P                  4      p\        P
                  ! V P                  V P                  V P                  P                  4       .4      pRpV P                  W4R7      pV P                  P                  WQV.4      pV P                  P                  R\        VP                  R4      V4      pWvV P                  P                  V4      3# )z
Returns a tuple of ``(ok, buffer, length)``.
The ``ok`` is i1 value that is set if ok.
The ``buffer`` is a i8* of the output buffer.
The ``length`` is a i32/i64 (py_ssize_t) of the length of the buffer.
PyUnicode_AsUTF8AndSizer   r  N)r   r|   rO   r   r   r   r   r}   r   r   r   r  r   r   r   )r   rQ  p_lengthr   r  r   bufferoks   &&      r   string_as_string_and_size#PythonAPI.string_as_string_and_sizeA  s     &&t||T__Et||djj.2oo.H.H.J.L M)1""2'9:\\''(0d(C(.0 DLL--h788r   c           	     f   \         P                  ! V P                  V P                  4      p\         P                  ! V P                  \        P
                  ! ^ 4      4      p\         P                  ! V P                  \        P
                  ! ^ 4      4      p\         P                  ! V P                  V P                  4      p\        P                  ! V P                  V P                  V P                  P                  4       \        P
                  ! ^ 4      P                  4       \        P
                  ! ^ 4      P                  4       V P                  P                  4       .4      pRpV P                  WgR7      pV P                  P                  WW#WE.4      p	V P                  P                  R\        V	P                  R4      V	4      p
WV P                  P!                  V4      V P                  P!                  V4      V P                  P!                  V4      V P                  P!                  V4      3# )aV  
Returns a tuple of ``(ok, buffer, length, kind)``.
The ``ok`` is i1 value that is set if ok.
The ``buffer`` is a i8* of the output buffer.
The ``length`` is a i32/i64 (py_ssize_t) of the length of the buffer.
The ``kind`` is a i32 (int32) of the Unicode kind constant
The ``hash`` is a long/uint64_t (py_hash_t) of the Unicode constant hash
numba_extract_unicoder   r  N)r   r|   rO   r   r   r   r   r   r   r}   r   r   r   r  r   r   r   )r   rQ  rV  p_kindp_asciip_hashr   r  r   rW  rX  s   &&         r   string_as_string_size_and_kind(PythonAPI.string_as_string_size_and_kindU  s    &&t||T__E$$T\\2::b>B%%dllBJJrNC$$T\\4>>Bt||djj.2oo.H.H.J.0jjn.G.G.I.0jjn.G.G.I.2nn.G.G.I	.K L
 (1""7;=\\''(0d(C(.0 DLL--h7!!&)4<<+<+<W+E!!&)+ 	+r   c                    \         P                  ! V P                  V P                  V P                  .4      pR pV P                  W4R7      pV P                  P                  WQV.4      # )PyString_FromStringAndSizer   r   r   r}   r   r   r   rO   r   r   stringsizer   r  r   s   &&&   r   string_from_string_and_size%PythonAPI.string_from_string_and_sizes  sT    tzzDLL$//+JK,1||  d^44r   c                    \         P                  ! V P                  V P                  .4      pR pV P	                  W#R7      pV P
                  P                  WA.4      # )PyUnicode_FromStringr   r  )r   rf  r   r  r   s   &&   r   string_from_stringPythonAPI.string_from_stringy  sK    tzzDLL>:&1||  X..r   c                    \         P                  ! V P                  \         P                  ! ^ 4      V P                  V P
                  .4      pRpV P                  WER7      pV P                  P                  WaW#.4      # )ra  PyUnicode_FromKindAndDatar   )	r   r   r}   r   r   r   r   rO   r   )r   kindrf  rg  r   r  r   s   &&&&   r   string_from_kind_and_data#PythonAPI.string_from_kind_and_data  s_    tzzBJJrNDLL$//+Z[+1||  F%9::r   c                    \         P                  ! V P                  V P                  .4      pR pV P	                  W#R7      pV P
                  P                  WA.4      # )PyBytes_AsStringr   rP  r   rI   r   r  r   s   &&   r   bytes_as_stringPythonAPI.bytes_as_string  sK    t||djj\:"1||  U++r   c                   \         P                  ! \         P                  ! ^ 4      V P                  V P                  P                  4       V P                  P                  4       .4      pRpV P                  WER7      pV P                  P                  WaW#.4      pV P                  P                  R\        VP                  R4      V4      pV# )ra  PyBytes_AsStringAndSizer   r  r  )r   r   r   r}   r   r   r   r   rO   r   icmp_signedr   r   )	r   rI   p_bufferrV  r   r  r   r  rX  s	   &&&&     r   bytes_as_string_and_size"PythonAPI.bytes_as_string_and_size  s    JJrNZZ002DOO4N4N4PQ
 *1""2X'@A\\%%dHV[[",EvN	r   c                    \         P                  ! V P                  V P                  V P                  .4      pR pV P                  W4R7      pV P                  P                  WQV.4      # )PyBytes_FromStringAndSizer   rd  re  s   &&&   r   bytes_from_string_and_size$PythonAPI.bytes_from_string_and_size  sT    tzzDLL$//+JK+1||  d^44r   c                    \         P                  ! V P                  V P                  .4      pR pV P	                  W#R7      pV P
                  P                  WA.4      # )PyObject_Hashr   )r   r   r   r}   r   rO   r   ru  s   &&   r   object_hashPythonAPI.object_hash  sK    t~~

~>1||  V,,r   c                    \         P                  ! V P                  V P                  .4      pV P                  VR R7      pV P                  P                  W1.4      # )PyObject_Strr   r   r   s   &&  r   
object_strPythonAPI.object_str  sH    tzzDJJ<8>:||  U++r   c                H    V P                  4       pV P                  V4       V# r   )r  r   r   rI   s   & r   r  PythonAPI.make_none  s!     C
r   c                $    V P                  R 4      # )_Py_NoneStruct)r  r   s   &r   r  PythonAPI.borrow_none  s      !122r   c                    \         P                  ! \         P                  ! 4       V P                  .R R7      pV P	                  VRR7      pV P
                  P                  WA3V,           4      # )Tr   PySys_FormatStdoutr   )r   r   r   r   r   rO   r   )r   r   r   r   r   s   &&*  r   sys_write_stdoutPythonAPI.sys_write_stdout  sQ    r{{}t||ndK+?@||  Vd]33r   c                    \         P                  ! \         P                  ! 4       V P                  .4      pV P	                  VRR7      pV P
                  P                  W134      # )z<
Dump a Python object on C stderr.  For debugging purposes.
_PyObject_Dumpr   r   r   s   &&  r   object_dumpPythonAPI.object_dump  sM     r{{}tzzl;+;<||  V,,r   c                b   V P                   P                  '       g   Q R 4       h\        P                  ! ^ 4      pV P	                  V P                  VP                  4      4      p\        P                  ! V P                  V P                  V P                  WDV P                  .4      pV P                  VRR7      pVP                  ^ ,          P                  R4       V P                   P                  \        P                  VP                   4      pV P                   P                  \        P                  \#        VP$                  4      4      p	\&        P(                  ! V P*                  V4      p
V P*                  P-                  WpP*                  P/                  V
V P                  4      VWV.4      # )zNRT required"NRT_adapt_ndarray_to_python_acqrefr   	nocapture)r   
enable_nrtr   r   unserializeserialize_objectbox_typer   r}   r   r   r   add_attributeri  r   r  ndimr   mutabler   r  rO   r   bitcast)r   arytyarydtypeptrinttyserial_aryty_pytyper   r   r  writablearyptrs   &&&&       r   nrt_adapt_ndarray_to_python%PythonAPI.nrt_adapt_ndarray_to_python  s<   ||&&&66&

2"..t/D/DU^^/TUtzz $djj%

SU+OP

  -||((ejjA<<,,U[[#emm:LM**4<<=||  ll&:&:6;?<<'I&9&*h&@ A 	Ar   c                   V P                   P                  p\        P                  ! \        P
                  \        P
                  \        P
                  .4      p\        P                  ! VVR4      pVP                  ^ ,          P                  R4       VP                  ^,          P                  R4       VP                  P                  R4       V P                   P                  WQV.4      # )zI
Allocate a new MemInfo with data payload borrowed from a python
object.
NRT_meminfo_new_from_pyobjectr  noalias)rO   r   r   r   r   	voidptr_tget_or_insert_functionr   r  return_valuer   )r   datar}   modr   r   s   &&&   r   nrt_meminfo_new_from_pyobject'PythonAPI.nrt_meminfo_new_from_pyobject  s    
 ll!! 1 12 +++
 	
  -

  -
%%i0||  E]33r   c                ,   V P                   P                  p\        P                  ! V P                  \
        P                  .4      p\
        P                  ! VVR 4      pVP                  P                  R4       V P                   P                  WA.4      # )NRT_meminfo_as_pyobjectr  )rO   r   r   r   r}   r   r  r  r  r  r   )r   miptrr  r   r   s   &&   r   nrt_meminfo_as_pyobject!PythonAPI.nrt_meminfo_as_pyobject  sx    ll!!JJ
 ++%

 	%%i0||  W--r   c                ,   V P                   P                  p\        P                  ! \        P
                  V P                  .4      p\        P                  ! VVR 4      pVP                  P                  R4       V P                   P                  WA.4      # )NRT_meminfo_from_pyobjectr  )rO   r   r   r   r   r  r}   r  r  r  r   )r   miobjr  r   r   s   &&   r   nrt_meminfo_from_pyobject#PythonAPI.nrt_meminfo_from_pyobject  sw    ll!!ZZL
 ++'

 	%%i0||  W--r   c                   V P                   P                  '       g   Q h\        P                  ! \        P                  ! ^ 4      V P
                  V P                  .4      pV P                  VRR7      pVP                  ^ ,          P                  R4       VP                  ^,          P                  R4       V P                  P                  WAV34      # )ra  NRT_adapt_ndarray_from_pythonr   r  r   r  r   r   r   r}   r   r   r   r  rO   r   r   r  r  r   r   s   &&&  r   nrt_adapt_ndarray_from_python'PythonAPI.nrt_adapt_ndarray_from_python  s    ||&&&&&rzz"~

DLL/IJ+JK

  -

  -||  3Z00r   c                   V P                   P                  '       g   Q h\        P                  ! \        P                  ! 4       \        P
                  ! V P                  4      V P                  .4      pV P                  VR R7      pVP                  ^ ,          P                  R4       VP                  ^,          P                  R4       V P                  P                  WAV34      # )NRT_adapt_buffer_from_pythonr   r  )r   r  r   r   r   r   r   r   r   r   r  rO   r   r   bufr  r   r   s   &&&  r   nrt_adapt_buffer_from_python&PythonAPI.nrt_adapt_buffer_from_python  s    ||&&&&&r{{}r~~d>N>N/O/3||/= >+IJ

  -

  -||  3Z00r   c                ~    \         P                  ! V P                  W4      pV P                  P	                  V4       V# r   )r   r  r   r   apply_target_attributes)r   r   r   r   s   &&& r   r   PythonAPI._get_function  s/    ++DKKD,,R0	r   c                L    V P                   P                  V P                  4      # r   )rO   allocar}   r   s   &r   
alloca_objPythonAPI.alloca_obj  s    ||""4::..r   c                p    \         P                  ! V P                  \        V P                  R4      4      pV# )zD
Return a pointer to a stack-allocated, zero-initialized Py_buffer.
N)r   r  rO   r   r   )r   r  s   & r   alloca_bufferPythonAPI.alloca_buffer   s0    
 ''(01A1A4(HJ
r   c              #     "   \         P                  ! V P                  \         P                  ! V P                  V4      4      ;_uu_ 4        R x  R R R 4       R #   + '       g   i     R # ; i5ir   )r   r  rO   r   r  s   &&r   rn  PythonAPI.if_object_ok)  sO     t||&224<<EG GG G G Gs   A	A.A
A.A+	%	A.c                    V P                  V4      pV P                  V4      pV P                  P                  V P                  R 4      pV P                  WC4       V P                  V4       R# )z%sN)r  rR  r   r   r   r  r   )r   rI   rQ  rC  r   s   &&   r   print_objectPythonAPI.print_object/  sT    %$$V,ll..t{{DAc(Fr   c                t    V P                   P                  V P                  V4      pV P                  V4       R # r   )r   r   r   r  )r   textr   s   && r   print_stringPythonAPI.print_string6  s*    ll..t{{DAc"r   c                .    \        V P                  R 4      # r   )r   r}   r   s   &r   r   PythonAPI.get_null_object:  s    

D))r   c                \    V P                  4       pV P                  P                  V4       R # r   )r  rO   r   )r   nones   & r   return_nonePythonAPI.return_none=  s     ~~r   c           	        \        V4      pV P                  V P                  P                  \        P
                  V4      4      pV P                  V4      ;_uu_ 4        \        V4       F\  pV P                  P                  \        P
                  V4      pV P                  W,          4       V P                  W5W,          4       K^  	  R R R 4       V#   + '       g   i     T# ; ir   )
rr   rU  r   ri  r   r   rn  r3  r   re  )r   rw  rx  seqr5  rd  s   &&    r   	list_packPythonAPI.list_packA  s    JmmDLL55ejj!DEs##1Xll//

A>EH%!!#EH5  $
 
 $#
 
s   A,CC%	c                8   \         P                  ! V P                  V P                  \         P                  ! ^ 4      V P                  34      pV P                  VRR7      pV P                  P                  V P                  P                  V4      ^ 4      pV P                  P                  V P                  P                  V4      ^4      pV P                  P                  V P                  P                  V4      ^4      pV P                  P                  W4WV34      # )z
Unserialize some data.  *structptr* should be a pointer to
a {i8* data, i32 length, i8* hashbuf, i8* func_ptr, i32 alloc_flag}
structure.
numba_unpickler   )
r   r   r}   r   r   r   rO   extract_valuer   r   )r   	structptrr   r   r  rx  hasheds   &&     r   r  PythonAPI.unserializeK  s     tzz"llBJJrNDLLIK+;<ll(():):9)EqILL&&t||'8'8'CQG++DLL,=,=i,H!L||  1%566r   c                    \         P                  ! V P                  V P                  V P                  34      pV P                  VRR7      pV P                  P                  WAV34      # )z
Serialize some data at runtime. Returns a pointer to a python tuple
(bytes_data, hash) where the first element is the serialized data as
bytes and the second its hash.
"numba_runtime_build_excinfo_structr   r   )r   	struct_gvexc_argsr   r   s   &&&  r   build_dynamic_excinfo_struct&PythonAPI.build_dynamic_excinfo_structY  sU     tzzDJJ

+CD+OP||  %:;;r   c                n   \         P                  ! V4      p\        V4      R8  g   Q hR\        P                  ^ 8X  d   \        V4      MR,          p\        P                  ! V4      p\        P                  ! \        P                  ! V4      P                  4       4      pV P                  P                  V P                  W44      pV P                  P                  V P                  V R2V4      p\        P                  ! VP!                  V P"                  4      \        \$        P&                  ! ^ 4      VP(                  P*                  P,                  4      VP!                  V P"                  4      \        P.                  ! V P"                  4      \        \$        P&                  ! ^ 4      ^ 4      .4      pV# )z
Same as serialize_object(), but don't create a global variable,
simply return a literal for structure:
{i8* data, i32 length, i8* hashbuf, i8* func_ptr, i32 alloc_flag}
z.const.pickledata.%sDIFF_IRz.sha1l        )r   dumpsrr   r	   r  idr   make_bytearrayhashlibsha1digestr   insert_unique_constr   r   literal_structr  r   r   r   r   r   r  get_null_value)	r   rI   r  r   bdatar  arrhasharrstructs	   &&       r   serialize_uncachedPythonAPI.serialize_uncachedc  s6    s#4y5   %FNNa4GCYW&&t, ''T(:(A(A(CDll..t{{DH,,22KKD6
 ((KK%RZZ^SXX%5%5%;%;<OODLL)""4<<0RZZ^Q'*  r   c                V    V P                   P                  V,          pV#   \         d}    T P                  T4      pR\        P
                  ^ 8X  d   \        T4      MR,          pT P                  P                  T P                   YC4      pY P                   P                  T&    T# i ; i)z
Serialize the given object in the bitcode, and return it
as a pointer to a
{i8* data, i32 length, i8* hashbuf, i8* fn_ptr, i32 alloc_flag},
structure constant (suitable for passing to unserialize()).
z.const.picklebuf.%sr  )	r   r   r   r  r	   r  r  r   r  )r   rI   gvr  r   s   &&   r   r  PythonAPI.serialize_object  s    	/))#.B 	  	/,,S1F(v~~7JBsGPYZD11$++tLB,.KK$$S)		/s   ! BB('B(c                `    \         P                  ! V P                  V P                  4       4      # r   )r   r   rO   r   r   s   &r   c_api_errorPythonAPI.c_api_error  s"    ""4<<1B1B1DEEr   c                    ^ RI Hp \        P                  VP                  V4      p\        V P                  V P                  V 4      pV! WV4      # )zV
Unbox the Python object as the given Numba type.
A NativeValue instance is returned.
)unbox_unsupported)numba.core.boxingr  	_unboxersr+   	__class__rF   r   rO   )r   r=   rI   r  implcs   &&&   r   rH   PythonAPI.to_native_value  sA    
 	8/@A$,,d;Ca  r   c                x    \        V\        P                  4      '       d   Q R 4       hV P                  WV4      pV# )z;callconv should have prevented the return of optional value)rf   r   Optionalr:   )r   r=   r>   r;   outs   &&&& r   from_native_returnPythonAPI.from_native_return  sA    c5>>22 	E 5E 	E2 $$S{;
r   c                    ^ RI Hp \        P                  VP                  V4      p\        V P                  V P                  W4      pV! WV4      # )z
Box the native value of the given Numba type.  A Python object
pointer is returned (NULL if an error occurred).
This method steals any native (NRT) reference embedded in *val*.
)box_unsupported)r  r  _boxersr+   r  r6   r   rO   )r   r=   r>   r;   r  r  r  s   &&&&   r   r:   PythonAPI.from_native_value  s>     	6~~cmm_=dllDFCa  r   c                f   \         P                  VP                  4      pVf   \        P                  # \        P
                  ! V P                  \        P                  4      p\        V P                  V P                  WV4      pV! WV4       V P                  P                  VP                  4      # )zi
Reflect the native value onto its Python original, if any.
An error bit (as an LLVM value) is returned.
)_reflectorsr+   r  r   r_   r  rO   rM   r   r   rQ   )r   r=   r>   r;   r  rQ   r  s   &&&&   r   rX   PythonAPI.reflect_native_value  s    
 !!#--0<$$$,,T\\7;L;LMDLL$,,$&Sq||  ,,r   c                    \         P                  ! V P                  P                  V4      4      pV P                  P	                  V P
                  W4      p\        V4      # )za
Extract the generator structure pointer from a generator *obj*
(a _dynfunc.Generator instance).
)r   r   r   get_data_typeget_generator_staterO   r\   )r   rI   r=   
gen_ptr_tyr^   s   &&&  r   to_native_generatorPythonAPI.to_native_generator  sF    
 ^^DLL$>$>s$CD
00sO5!!r   c           	        V P                   P                  V4      pVP                  '       d   Q hV P                   P                  V4      pV P                   P	                  V4      p\
        P                  ! V P                  V P                  V P                  V P                  .4      pV P                  WvP                  R7      p\
        P                  ! \
        P                  ! 4       V P                  .4      p	VP                  '       d   V P                  WP                  R7      p
M \        \
        P                  ! V	4      R4      p
\
        P                  ! V P                  V P                   V P                  \
        P                  ! V4      \
        P                  ! V	4      V P                  .4      pV P                  VRR7      p\        V P                   V4      pV P"                  P%                  WP                  4      pVf   V P'                  4       pV P"                  P%                  W0P                  4      pV P"                  P)                  VWWV34      # )z
Make a Numba generator (a _dynfunc.Generator instance) from a
generator structure pointer *val*.
*env* is an optional _dynfunc.Environment instance to be wrapped
in the generator.
r   Nnumba_make_generator)r   r!  
is_pointerget_abi_sizeofget_generator_descr   r   r}   r   llvm_cpython_wrapper_namer   r   has_finalizerllvm_finalizer_namer   r   r   rO   r  r   r   )r   r>   r=   rh   lltygen_struct_sizegendescgenfntygenfnfinalizerty	finalizerr   r   
state_sizeinitial_states   &&&&           r   from_native_generatorPythonAPI.from_native_generator  s    ||))#.???"",,55d;,,11#6 //$**tzz4::tzz.RS""71R1R"S oobkkmdll^D**;=X=X*YI !<dCI tzzDOO,0LL,.NN7,C,.NN;,G,0LL	,: ;
 +ABdoo?
,,S,,?;&&(Cll""35||  ",Us!SU 	Ur   c                   V P                   P                  '       d   Q h\        P                  ! \        P                  ! ^ 4      V P
                  V P                  .4      pV P                  VRR7      pVP                  ^ ,          P                  R4       VP                  ^,          P                  R4       V P                  P                  WAV34      # )ra  numba_adapt_ndarrayr   r  r  r  s   &&&  r   numba_array_adaptorPythonAPI.numba_array_adaptor  s    <<*****rzz"~

DLL/IJ+@A

  -

  -||  3Z00r   c                   \         P                  ! \         P                  ! 4       \         P                  ! V P                  4      V P
                  .4      pV P                  VR R7      pVP                  ^ ,          P                  R4       VP                  ^,          P                  R4       V P                  P                  WAV34      # )numba_adapt_bufferr   r  )r   r   r   r   r   r   r   r   r  rO   r   r  s   &&&  r   numba_buffer_adaptorPythonAPI.numba_buffer_adaptor  s    r{{} nnT-=-=>MO+?@

  -

  -||  3Z00r   c                    \         P                  ! \         P                  ! ^ 4      V P                  VP                  .4      pV P                  VRR7      pV P                  P                  WAV.4      # )ra  numba_complex_adaptorr   )r   r   r   r}   r   r   rO   r   )r   r/  cmplxr   r   s   &&&  r   complex_adaptorPythonAPI.complex_adaptor  sV    rzz"~

EJJ/GH+BC||  E]33r   c                    \         P                  ! V P                  V P                  \         P                  ! V P
                  4      .4      pV P                  VR R7      pV P                  P                  WAV.4      # )numba_extract_record_datar   )	r   r   r   r}   r   r   r   rO   r   r   rI   pbufr   r   s   &&&  r   extract_record_dataPythonAPI.extract_record_data
  sa    t|| $

BNN4;K;K,LMO+FG||  4[11r   c                   \         P                  ! \         P                  ! ^ 4      V P                  \         P                  ! V P
                  4      .4      pV P                  VRR7      pV P                  P                  WAV.4      # )ra  numba_get_bufferr   )	r   r   r   r}   r   r   r   rO   r   rH  s   &&&  r   
get_bufferPythonAPI.get_buffer  se    rzz"~ $

BNN4;K;K,LMO+=>||  4[11r   c                    \         P                  ! \         P                  ! 4       \         P                  ! V P                  4      .4      pV P                  VR R7      pV P                  P                  W1.4      # )numba_release_bufferr   )r   r   r   r   r   r   rO   r   )r   rI  r   r   s   &&  r   release_bufferPythonAPI.release_buffer  sW    r{{}r~~d>N>N/O.PQ+AB||  V,,r   c                    \         P                  ! \         P                  ! ^@4      V P                  .4      pV P	                  VRR7      pV P
                  P                  W1.4      # )@   numba_extract_np_datetimer   rc  r   s   &&  r   extract_np_datetimePythonAPI.extract_np_datetime  sM    rzz"~

|<+FG||  U++r   c                    \         P                  ! \         P                  ! ^@4      V P                  .4      pV P	                  VRR7      pV P
                  P                  W1.4      # )rU  numba_extract_np_timedeltar   rc  r   s   &&  r   extract_np_timedeltaPythonAPI.extract_np_timedelta   sM    rzz"~

|<+GH||  U++r   c                J   \        \        P                  ! ^ 4      \        V4      4      p\        P                  ! V P
                  \        P                  ! ^@4      \        P                  ! ^ 4      .4      pV P                  VRR7      pV P                  P                  WAV.4      # )ra  numba_create_np_datetimer   	r   r   r   r   r   r}   r   rO   r   r   r>   	unit_coder   r   s   &&&  r   create_np_datetimePythonAPI.create_np_datetime%  ss    RZZ^S^<	tzzBJJrNBJJrN+KL+EF||  9%566r   c                J   \        \        P                  ! ^ 4      \        V4      4      p\        P                  ! V P
                  \        P                  ! ^@4      \        P                  ! ^ 4      .4      pV P                  VRR7      pV P                  P                  WAV.4      # )ra  numba_create_np_timedeltar   r_  r`  s   &&&  r   create_np_timedeltaPythonAPI.create_np_timedelta+  ss    RZZ^S^<	tzzBJJrNBJJrN+KL+FG||  9%566r   c                v   \         P                  ! V P                  \         P                  ! \         P                  ! ^4      4      \         P                  ! ^ 4      V P                  .4      pV P                  VRR7      pVP                  VP                  V4      4      pV P                  P                  WaW'.4      # )r   numba_recreate_recordr   )
r   r   r}   r   r   r   r   rv   rO   r   )r   pdatarg  dtyper;   r   r   	dtypeaddrs   &&&&&   r   recreate_recordPythonAPI.recreate_record1  s    tzzBNN2::a=,I,.JJrNDJJ,H I+BC**;+@+@+GH	||  T%=>>r   c                    V P                   P                  V P                  V4      pV P                   P                  \        P
                  \        V4      4      pV P                  W#4      # r   )r   r   r   ri  r   r   rr   rh  )r   rf  rC  szs   &&  r   string_from_constant_string%PythonAPI.string_from_constant_string8  sK    ||//VD\\&&uzz3v;?//99r   c                @   V P                   pV P                  P                  WAV4      pVP                  P                  pVP                  pWg8w  d   \
        P                  RV RV R24      hV P                  P                  WEP                  W#4      w  r\        P                  ! V\        P                  RR7      p
V P                  P                  VP                  4      p\        P                  ! WKRR7      pVP                  VP                  4      ;_uu_ 4       w  rV;_uu_ 4        VP                  VP                  V
4       V P                  P                   P#                  W@V4       RRR4       V;_uu_ 4        \$        P&                  ! V P                  WBW4      p	VP                  W4       RRR4       RRR4       VP)                  V
4      pVP)                  V4      p	W3#   + '       g   i     L; i  + '       g   i     LP; i  + '       g   i     L[; i)a  Calls into Numba jitted code and propagate error using the Python
calling convention.

Parameters
----------
func : function
    The Python function to be compiled. This function is compiled
    in nopython-mode.
sig : numba.typing.Signature
    The function signature for *func*.
args : Sequence[llvmlite.binding.Value]
    LLVM values to use as arguments.

Returns
-------
(is_error, res) :  2-tuple of llvmlite.binding.Value.
    is_error : true iff *func* raised an exception.
    res : Returned value from *func* iff *is_error* is false.

If *is_error* is true, this method will adapt the nopython exception
into a Python exception. Caller should return NULL to Python to
indicate an error.
zmismatching signature z != z.
Try   N)rO   r   compile_subroutine	signaturer   errorsLoweringErrorcall_internal_no_propagatefndescr   r|   bool_tr   r~   rQ   rP   r   raise_errorr   fix_returning_optionalr   )r   r   sigr   rO   cres	got_rettyrettyr  r<  is_error_ptrres_typeres_ptrhas_errno_errrQ   s   &&&&            r   call_jit_codePythonAPI.call_jit_code=  s   2 ,,||..wcBNN..	 &&(4wcB  ll==[[#
 **7GNN$O<<..s?%%gtD __V__--1B'foo|<&&227&I  55LL' c+  . <<-ll7#}   .-s=   H)AG'	,H>4G:	2H'G72H:H
HH	)rO   r   r   r   r   r   r   r   r   r   r   r   r   r   r}   r   r   r   r   )F r   )F)r   )rB   rb   )r-   r.   r/   r0   rC   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r   r(  r.  
contextlibcontextmanagerr9  r  rD  rG  rN  rT  rX  r^  rg  rk  rr  rw  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  r  r  r   r  r)  r0  r5  r@  rE  rI  rP  rU  r[  r_  re  r   rm  rr  ry  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/  r3  r7  r;  r>  rD  rH  rL  rR  rY  r`  rh  rl  rq  rv  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  rn  r  r  r   r  r  r  r  r  r  r
  rH   r  r:   rX   r$  r7  r;  r?  rD  rJ  rN  rR  rW  r[  rb  rf  rm  rq  r  r1   r2   r3   s   @r   r   r      s    
F@@2%
%
,N?	N)
)
5J	-81-
7
4
 * *8	85
5
'22	PA>
 -
:/
/
/
/)-CHFH
F
F
1LQQSTRWOOLKLE-
-
,
-
-
,-
9
-
-E.9,
3
.
,
1
61>1+,
?
@13
,
,
6
E ( (<
,).-
1
-0
++
-,
,
'R0
,
22
77
M
F
161/9(+<5/;,	5-,

34
-A*4(..11
/  
#*7<:"F	!!- "'UR114
22-
,
,
77?:
; ;r   r   c                   @   a  ] tR tRt o RtR tR t]R 4       tRt	V t
R# )ObjModeUtilsi{  zHInternal utils for calling objmode dispatcher from within NPM code.
    c                    Wn         R # r   r9   )r   r9   s   &&r   r   ObjModeUtils.__init__~  s    
r   c                r   V P                   P                  pV P                   P                  pVP                  p\        P
                  ! WPP                   P                  VP                  R 4      R7      pVP                  P                  R4      Vn
        RVn        VP                  R4      p\        P                  ! VP                  4      '       d   V P                   P!                  VP                  \#        V4      34      pV P                   P%                  V4      p	\&        P(                  ! W94      p
VP+                  V
4      ;_uu_ 4        VP-                  V4       RRR4       VP/                  V4      pVP+                  \&        P(                  ! W;4      4      ;_uu_ 4        \        P                  ! VP                  4      '       d   \        V 4      pV P                   P%                  V P                   P!                  VP0                  4      4      pV P                   P3                  VX	.4      pV P                   P5                  V4       V P                   P5                  V	4       MAVP                  P7                  \#        V4      4      pVP9                  V\;        V4      RR7      pV P                   P=                  V4       VP?                  W4       RRR4       VP-                  V4       VPA                  V4       VP/                  V4      pV#   + '       g   i     EL; i  + '       g   i     LY; i)cached_objmode_dispatcherr   Ninternalr  with_objectmode)info)!r9   rO   r   r   r   GlobalVariabler}   get_unique_namer   r   initializerlinkager  r   is_serialiable
dispatcherr  r
  r  r   r   r  r  r   _call_objmode_dispatcherr  r   compileadd_dynamic_addrr  r   rP   r  )r   r   r   rO   tyctxmr  r  serialized_dispatchercompile_argsfailed_unsercachedr*   compilerr  entry_pts   &&&             r   load_dispatcherObjModeUtils.load_dispatcher  s\   **$$

""NN zz""#>?
 .
 ++H5##DOO44$(JJ$?$?%/2%!  ::112GHL"??7AL..v& / b!__W__W=>>''884j::11JJ//0L0LM 99|n 

!!(+

!!,/??225?C//R\0A 0  JJf%MM&%' ?* 	v'b!= /..
 ?>s   L$D1L&L#	&L6	c                0    V w  rVP                  V4      pV# r   )r  )r  r  r   entrypts   &   r   r  %ObjModeUtils._call_objmode_dispatcher  s    +
$$X.r   r  N)r-   r.   r/   r0   rC   r   r  staticmethodr  r1   r2   r3   s   @r   r  r  {  s)     5n  r   r  ))r#  
   )r#     )r   rO   r9   r;   )r   rO   r9   )r   rO   r9   r;   rQ   )r^   r  )0collectionsr   r  pickler  rn   llvmliter   llvmlite.irr   r   numbar   
numba.corer   r   r	   r
   r   r   r   numba.core.utilsr   r   PY_UNICODE_1BYTE_KINDr   PY_UNICODE_2BYTE_KINDr   PY_UNICODE_4BYTE_KINDpy_unicode_wchar_kindPY_UNICODE_WCHAR_KINDobjectr   r  r  r  r$   r?   rJ   rY   r6   rF   rM   r\   rd   r   r   r  rB   r   r   <module>r     s>   "    
        '"88 "88 "88 ""&<< . +K	k


H*]@B H4J35 4Kj!2#$ K&	& 	1! 1!h ?,ABU Up.A Ar   