
    sh7                     T   S SK r S SKrS SKJr  S SKJrJr  S SKJr  S SK	J
r
  S SKJr  S SKJr  S SKJrJr  S S	KJr  S S
KJrJr  S SKJrJrJrJrJr  S SKJr  S SKJr  S SK J!r!  S SK"J#r#J$r$  S SK%J&r&J'r'  S SK(J)r)  \" SSSSS5      r* " S S\*\5      r+ " S S\
5      r,\," 5       r- " S S\R\                  5      r/\/\\S   '   S r0S r1S  r2\Rf                  \Rh                  \Rj                  \Rl                  S!.r7S" r8\S# 5       r9 " S$ S%\:5      r; " S& S'\;5      r< " S( S)\;5      r=S* r>g)+    N)contextmanager)configtargetconfig)jit)TargetDescriptor)	is_jitted)NumbaDeprecationWarning)TargetOptionsinclude_default_options)
cpu_target)dispatcher_registrytarget_registry)utilstypes	serializecompilersigutils)as_dtype)	_internal)parse_signature)build_ufunc_wrapperbuild_gufunc_wrapper)FunctionCache	NullCache)global_compiler_locknopythonforceobjboundscheckfastmathwritable_argsc                       \ rS rSrS rSrg)UFuncTargetOptions!   c                 l   UR                  S5      (       d  SUl        UR                  S5      (       d  SUl        UR                  SSS9  UR                  S5      (       d  [        R
                  Ul        UR                  S5      (       d  UR                  Ul        SUl        UR                  S5        g )	Nenable_pyobjectTenable_loopliftnrt)default	debuginfor   r   )	is_setr%   r&   inherit_if_not_setr   DEBUGINFO_DEFAULTr)   r   enable_pyobject_looplift)selfflagsoptionss      o/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/np/ufunc/ufuncbuilder.pyfinalizeUFuncTargetOptions.finalize#   s    ||-..$(E!||-..$(E!   5||K(($66EO||M** %E)-&  ,     N)__name__
__module____qualname____firstlineno__r2   __static_attributes__r5   r4   r1   r"   r"   !   s    -r4   r"   c                   L   ^  \ rS rSr\rU 4S jr\S 5       r\S 5       r	Sr
U =r$ )UFuncTarget7   c                 $   > [         TU ]  S5        g )Nufunc)super__init__)r.   	__class__s    r1   rA   UFuncTarget.__init__:   s    !r4   c                 "    [         R                  $ N)r   typing_contextr.   s    r1   rF   UFuncTarget.typing_context=       (((r4   c                 "    [         R                  $ rE   )r   target_contextrG   s    r1   rK   UFuncTarget.target_contextA   rI   r4   r5   )r6   r7   r8   r9   r"   r0   rA   propertyrF   rK   r:   __classcell__)rB   s   @r1   r<   r<   7   s5     G" ) ) ) )r4   r<   c                   X    \ rS rSrSr\r0 0 4S jrS r\	S 5       r
S r0 4S jrS rS	rg
)UFuncDispatcherI   zC
An object handling compilation of various signatures for a ufunc.
c                 z    Xl         [        R                  " 5       U l        X0l        X l        [        5       U l        g rE   )py_funcr   
UniqueDict	overloadstargetoptionslocalsr   cache)r.   rS   rW   rV   s       r1   rA   UFuncDispatcher.__init__O   s+    ))+*[
r4   c                 T    [        U R                  U R                  U R                  S9$ )$
NOTE: part of ReduceMixin protocol
)pyfuncrW   rV   )dictrS   rW   rV   rG   s    r1   _reduce_statesUFuncDispatcher._reduce_statesV   s(     <<;;,,
 	
r4   c                     U " XUS9$ )r[   )rS   rW   rV   r5   )clsr\   rW   rV   s       r1   _rebuildUFuncDispatcher._rebuild`   s    
 6NNr4   c                 8    [        U R                  5      U l        g rE   )r   rS   rX   rG   s    r1   enable_cachingUFuncDispatcher.enable_cachingg   s    "4<<0
r4   c                 p   U R                   R                  5       nUR                  U5        U R                  R                  5       nUR                  U5        [        R
                  " 5       nU R                  R                  R                  Xe5        SUl	        SUl
        SUl        U R                  XU5      $ )NTnumpyF)rW   copyupdaterV   r   Flagstargetdescrr0   parse_as_flagsno_cpython_wrappererror_modelr&   _compile_core)r.   sigrW   rV   locstoptr/   s          r1   compileUFuncDispatcher.compilej   s    {{!F!!&&(M"   //<#' # !&!!#f55r4   c                   ^ ^	 T R                   R                  nT R                   R                  n[        U	U 4S j5       n[           [
        R                  " 5       R                  UR                  5       5         U" 5          T R                  R                  X5      m	T	b  T	sSSS5        sSSS5        sSSS5        $ [        R                  " U5      u  px[        R                  " XET R                  UUX#S9m	T R                  R!                  UT	5        T	sSSS5        sSSS5        sSSS5        $ ! , (       d  f       O= f SSS5        O! , (       d  f       O= fSSS5        g! , (       d  f       g= f)z}
Trigger the compiler on the core function or load a previously
compiled version from the cache.  Returns the CompileResult.
c               3      >#     S v   TR                   R                  TR                  5      n U c  TTR                   TR                  '   g g ! [         a    e f = f7frE   )rU   get	signature	Exception)existscresr.   s    r1   store_overloads_on_successAUFuncDispatcher._compile_core.<locals>.store_overloads_on_success   sW     : ++DNN;>59DNN4>>2 "	  s   AA AAAAN)argsreturn_typer/   rW   )rl   rF   rK   r   r   r   ConfigStackenterri   rX   load_overloadr   normalize_signaturer   compile_extrarS   save_overload)
r.   rq   r/   rW   	typingctx	targetctxr}   r   r   r|   s
   `        @r1   rp   UFuncDispatcher._compile_core}   s#   
 $$33	$$33				: 
		: "))+11%**,?/1::33CCD'#	 21 @? "! )1(D(DS(I%D#11)26,,T>I8=ND JJ,,S$7! 21 @? "!111 @?? "!!sU   3E$8E
  D/ 	E
)	E$<AD/	E
	E$/
D=9E
	E$

E	E$$
E2)rX   rW   rU   rS   rV   N)r6   r7   r8   r9   __doc__ufunc_targetrl   rA   r^   classmethodrb   re   rt   rp   r:   r5   r4   r1   rP   rP   I   sG     K') !
 O O1 #% 6&' r4   rP   npyufuncc                 `    U R                   " U40 UD6n[        R                  " U5      u  pEX4U4$ rE   )rt   r   r   )nb_funcrV   rq   r|   r   r   s         r1   _compile_element_wise_functionr      s5     ??30-0D 44S9D{""r4   c                     Uc2  U R                   (       a  [        S5      eU R                  R                  nU[        R
                  :w  d   eU" U6 $ )zGiven a compilation result, argument types, and a return type,
build a valid Numba signature after validating that it doesn't
violate the constraints for the compilation mode.
z-return type must be specified for object mode)
objectmode	TypeErrorry   r   r   pyobject)r|   r   r   s      r1   _finalize_ufunc_signaturer      sI    
 ??KLL..44K%..(((r4   c           	         U R                   nU R                  nU R                  R                  n[           [        X2XAU R                  U 5      nUR                  R                  UR                  5      nSSS5        UR                   Vs/ s H  n[        U5      R                  PM     nnUR                  [        UR                  5      R                  5        UWU R                  4$ ! , (       d  f       Nz= fs  snf )zyBuild a wrapper for the ufunc loop entry point given by the
compilation result object, using the element-wise signature.
N)rK   libraryfndescllvm_func_namer   r   r   get_pointer_to_functionnamer   r   numappendr   environment)	r|   ry   ctxr   fnameinfoptra	dtypenumss	            r1   !_build_element_wise_ufunc_wrapperr      s     

CllGKK&&E	"7#'??D:ll22499= 

 +4..9.Q!.I9Xi334889c4++++ 
	
 :s   >C'	C8'
C5)r      Nreorderablec                 T     [         U    n U $ ! [         a    [        SU < 35      ef = f)zQ
Parse an identity value and return the corresponding low-level value
for Numpy.
zInvalid identity value )_identitiesKeyError
ValueError)identitys    r1   parse_identityr      s:    
Dx( O  DBCCDs   	 'c               #      #    [         R                  " 5          [         R                  " S[        SS9  Sv   SSS5        g! , (       d  f       g= f7f)zThis suppresses the NumbaDeprecationWarning that occurs through the use
of `jit` without the `nopython` kwarg. This use of `jit` occurs in a few
places in the `{g,}ufunc` mechanism in Numba, predominantly to wrap the
"kernel" function.ignorez3.*The 'nopython' keyword argument was not supplied*)categorymessageN)warningscatch_warningsfilterwarningsr	   r5   r4   r1   3_suppress_deprecation_warning_nopython_not_suppliedr      s<      
	 	 	")@*=	@ 	 
#	"	"s   AA 	A 
A
Ac                   $    \ rS rSrSS jrS rSrg)_BaseUFuncBuilder   Nc                    [        U S5      (       a  U R                  nOU R                  R                  n[        U R                  X!5      u  p4nU R	                  X4U5      nU R
                  R                  U5        X0R                  U'   U$ )NrV   )hasattrrV   r   r   _finalize_signature_sigsr   _cres)r.   rq   rV   r|   r   r   s         r1   add_BaseUFuncBuilder.add   su    4)) ..M LL66M"@LL-#.K&&t;?

#

3r4   c                     g)z9
Disable the compilation of new signatures at call time.
Nr5   rG   s    r1   disable_compile!_BaseUFuncBuilder.disable_compile  s    r4   r5   rE   )r6   r7   r8   r9   r   r   r:   r5   r4   r1   r   r      s    
r4   r   c                   6    \ rS rSrSS0 4S jrS rS rS rSrg)	UFuncBuilderi  NFc                     [        U5      (       a  UR                  nXl        [        U5      U l        [	        5          [        SSUS.UD6" U5      U l        S S S 5        / U l        0 U l        g ! , (       d  f       N= f)Nr   _targetrX   r5   )	r   rS   r   r   r   r   r   r   r   )r.   rS   r   rX   rV   s        r1   rA   UFuncBuilder.__init__  ss    WooG&x0@B 0z%*0!.0079DL C 

 CBs   A..
A<c                     [        XU5      $ )zNSlated for deprecation, use ufuncbuilder._finalize_ufunc_signature()
instead.
)r   r.   r|   r   r   s       r1   r    UFuncBuilder._finalize_signature  s     )[AAr4   c                    [            / n/ nU R                  (       d  [        S5      e/ nS nU R                   Hn  nU R                  U   nU R                  XE5      u  pgnUR                  U5        UR                  [        U5      5        UR                  UR                  U45        Mp     S /[        U5      -  n	Uc6  [        R                  " U R                  5      n
[        U
R                  5      nO[        UR                  R                  5      nSn[        R                   " U R                  R"                  U R                  R$                  X!XU	X0R&                  5	      nUsS S S 5        $ ! , (       d  f       g = f)NNo definitionr   )r   r   r   r   r   buildr   intr   leninspectgetfullargspecrS   r   ry   r   fromfuncr6   r   r   )r.   	dtypelistptrlist	keepaliver|   rq   r   r   envdatlistargspecinctoutctr?   s                 r1   build_ufuncUFuncBuilder.build_ufunc#  s-   !IG<<00 IDzzzz#&*jj&;#	  +s3x(  $,,!45 " fs7|+G|!00>7<<(4>>../E &&%%t||';';D==E I "!!s   EE++
E9c                     [        X5      $ )zNSlated for deprecation, use
ufuncbuilder._build_element_wise_ufunc_wrapper().
)r   )r.   r|   ry   s      r1   r   UFuncBuilder.buildJ  s     1AAr4   )r   r   r   r   rS   )	r6   r7   r8   r9   rA   r   r   r   r:   r5   r4   r1   r   r     s     )-U" 
B%NBr4   r   c                   B    \ rS rSrSS0 S4S jrS r\S 5       rS rS	r	g)
GUFuncBuilderiQ  NFr5   c                 ~   Xl         [        U5      U l        [        5          [	        SUS9" U5      U l        S S S 5        X l        [        U5      u  U l        U l	        XPl
        X@l        / U l        0 U l        [        U5      n[        U Vs/ s H
  o" U5      PM     sn5      U l        g ! , (       d  f       Nx= fs  snf )Nr   r   )rS   r   r   r   r   r   ry   r   sinsoutrV   rX   r   r   _get_transform_argtupler    )	r.   rS   ry   r   rX   rV   r    transform_argr   s	            r1   rA   GUFuncBuilder.__init__T  s    &x0@Bz?HDL C"-i8$)*


*73"m#LmM!$4m#LM CB $Ms   B)B:)
B7c                     UR                   (       d3  UR                  R                  [        R                  :w  a  [        S5      eUc  [        R                  nU" U6 $ )Nz(gufunc kernel must have void return type)r   ry   r   r   voidr   r   s       r1   r   !GUFuncBuilder._finalize_signatured  sD    4>>#=#=#KFGG**KD!!r4   c                 ~   / n/ nU R                   (       d  [        S5      e/ nU R                   Hn  nU R                  U   nU R	                  U5      u  pgnUR                  U5        UR                  [        U5      5        UR                  UR                  U45        Mp     S /[        U5      -  n	[        U R                  5      n
[        U R                  5      n[        R                  " U R                  R                  U R                  R                  X!XU	X0R                   U R"                  U R$                  5      nU$ )Nr   )r   r   r   r   r   r   r   r   r   r   r   r   r   rS   r6   r   r   ry   r    )r.   	type_list	func_listr   rq   r|   r   r   r   datalistninnoutr?   s                r1   r   GUFuncBuilder.build_ufuncm  s   		||O,, 	::C::c?D"&**T"2ICY'SX&dllC01  6C	N*$((m499~ ""LL!!4<<#7#7#X}}dnnd6H6H

 r4   c           	         UR                   n[        U R                  XR                  U R                  U R
                  SS9nUR                  nUR                  R                  UR                  5      n/ nUR                   HU  n[        U[        R                  5      (       a  UR                  nOUnUR                  [!        U5      R"                  5        MW     XeU4$ )z:
Returns (dtype numbers, function ptr, EnvironmentObject)
F)rX   
is_parfors)ry   r   rS   r   r   rX   r   r   r   r   r   
isinstancer   Arraydtyper   r   r   )	r.   r|   ry   r   r   r   r   r   tys	            r1   r   GUFuncBuilder.build  s    
 NN	#LL$$))**

 hhll22499=	A!U[[))WWXb\--.   s""r4   )r   r   rX   r   r   rS   ry   r   r   rV   r    )
r6   r7   r8   r9   rA   r   r   r   r   r:   r5   r4   r1   r   r   Q  s2     59!N "  8#r4   r   c                    ^ ^^ [         R                  " T 5      R                  m[        T5       VVs0 s H  u  pX!_M	     snnmUUU 4S jnU$ s  snnf )z-Return function that transform arg into indexc                    > [        U [        5      (       a  U $  TU    $ ! [         a!    SU  ST STR                   3n[	        U5      ef = f)NzSpecified writable arg z not found in arg list z for function )r   r   r   r8   RuntimeError)argmsgr   
pos_by_argrS   s     r1   r   )_get_transform_arg.<locals>.transform_arg  sb    c3J	$c?" 	$,SE1HV>'*>*>)?ACs##	$s	    +A
)r   r   r   	enumerate)rS   ir   r   r   r   s   `   @@r1   r   r     sG    !!'*//D'07VQ#&7J	$  8s   A)?r   r   
contextlibr   
numba.corer   r   numba.core.decoratorsr   numba.core.descriptorsr   numba.core.extendingr   numba.core.errorsr	   numba.core.optionsr
   r   numba.core.registryr   numba.core.target_extensionr   r   r   r   r   r   r   numba.np.numpy_supportr   numba.np.ufuncr   numba.np.ufunc.sigparser   numba.np.ufunc.wrappersr   r   numba.core.cachingr   r   numba.core.compiler_lockr   _options_mixinr"   r<   r   ReduceMixinrP   r   r   r   PyUFunc_ZeroPyUFunc_OnePyUFunc_NonePyUFunc_ReorderableNoner   r   r   objectr   r   r   r   r5   r4   r1   <module>r     s-     % + % 3 * 5 E * L B B + $ 3 M 7 9 )- -,)" ) }[ i++ [ | 4C OJ/ 0
# ,& 

 
 44		 
 
 *?B$ ?BDN#% N#br4   