+
    :i):                     4   R t ^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIHtH	t	H
t
Ht ^ RIHt  ! R R]4      t ! R R]4      t]! R	4      t]P$                  t]P(                  t]P*                  t]P,                  t]P.                  t]P0                  t]P2                  tR
 tR tR tR tR tR t ! R R]4      t  ! R R]4      t!RR lt"R t#R t$R t%]PL                  ! RR 4      t']PP                  R 4       t)R t*R t+R t,]PP                  R!R l4       t-R t.R# )"z<
Utilities to simplify the boilerplate for native lowering.
N)Enum)typingtypesutilscgutils)BaseRegistryLoaderc                   d   a  ] tR t^t o RtRR ltR tR tR tR t	R t
R tR	 tR
 tR tRtV tR# )Registryz7
A registry of function and attribute implementations.
c                X    Wn         . V n        . V n        . V n        . V n        . V n        R # N)name	functionsgetattrssetattrscasts	constants)selfr   s   &&Q/var/www/html/photoedit/myenv/lib/python3.14/site-packages/numba/core/imputils.py__init__Registry.__init__   s*    	
    c                   a aa VVV 3R lpV# )a  
Decorate an implementation of *func* for the given argument types.
*func* may be an actual global function object, or any
pseudo-function supported by Numba, such as "getitem".

The decorated implementation has the signature
(context, builder, sig, args).
c                 D   < SP                   P                  V SS34       V # r   )r   append)implargtysfuncr   s   &r   decorate Registry.lower.<locals>.decorate%   s!    NN!!4v"67Kr    )r   r   r   r   s   ffj r   lowerRegistry.lower   s    	 r   c                R    V! WV4      pVP                  WcVP                  34       V# r   )r   	signature)r   r   tyattr	impl_list	decorator	real_impls   &&&&&& r   _decorate_attrRegistry._decorate_attr*   s,    d-	)9+>+>?@r   c                   a aa VV V3R lpV# )z
Decorate an implementation of __getattr__ for type *ty* and
the attribute *attr*.

The decorated implementation will have the signature
(context, builder, typ, val).
c                 J   < SP                  V SSSP                  \        4      # r   )r)   r   _decorate_getattrr   r%   r   r$   s   &r   r   (Registry.lower_getattr.<locals>.decorate7   %    &&tRt}}'8: :r   r   r   r$   r%   r   s   fff r   lower_getattrRegistry.lower_getattr/       	: r   c                &    V P                  VR4      # )a
  
Decorate the fallback implementation of __getattr__ for type *ty*.

The decorated implementation will have the signature
(context, builder, typ, val, attr).  The implementation is
called for attributes which haven't been explicitly registered
with lower_getattr().
N)r2   r   r$   s   &&r   lower_getattr_genericRegistry.lower_getattr_generic<        !!"d++r   c                   a aa VV V3R lpV# )z
Decorate an implementation of __setattr__ for type *ty* and
the attribute *attr*.

The decorated implementation will have the signature
(context, builder, sig, args).
c                 J   < SP                  V SSSP                  \        4      # r   )r)   r   _decorate_setattrr.   s   &r   r   (Registry.lower_setattr.<locals>.decorateO   r0   r   r   r1   s   fff r   lower_setattrRegistry.lower_setattrG   r4   r   c                &    V P                  VR4      # )a  
Decorate the fallback implementation of __setattr__ for type *ty*.

The decorated implementation will have the signature
(context, builder, sig, args, attr).  The implementation is
called for attributes which haven't been explicitly registered
with lower_setattr().
N)r>   r6   s   &&r   lower_setattr_genericRegistry.lower_setattr_genericT   r9   r   c                   a aa VV V3R lpV# )z
Decorate the implementation of implicit conversion between
*fromty* and *toty*.

The decorated implementation will have the signature
(context, builder, fromty, toty, val).
c                 F   < SP                   P                  V SS334       V # r   )r   r   )r   fromtyr   totys   &r   r   %Registry.lower_cast.<locals>.decorateg   s#    JJtfd^45Kr   r   )r   rE   rF   r   s   fff r   
lower_castRegistry.lower_cast_   s    	 r   c                   a a V V3R lpV# )z
Decorate the implementation for creating a constant of type *ty*.

The decorated implementation will have the signature
(context, builder, ty, pyval).
c                 D   < SP                   P                  V S334       V # r   )r   r   )r   r   r$   s   &r   r   )Registry.lower_constant.<locals>.decorates   s     NN!!4"-0Kr   r   )r   r$   r   s   ff r   lower_constantRegistry.lower_constantl   s    	 r   c                "    R V P                    R2# )zLowering Registry<>)r   r   s   &r   __repr__Registry.__repr__x   s    #DII;a00r   )r   r   r   r   r   r   N)unspecified)__name__
__module____qualname____firstlineno____doc__r   r    r)   r2   r7   r>   rA   rH   rM   rR   __static_attributes____classdictcell____classdict__s   @r   r	   r	      sA     
	,	,
1 1r   r	   c                       ] tR t^|tRtRtRtR# )RegistryLoaderz.
An incremental loader for a target registry.
r   N)r   r   r   r   r   )rU   rV   rW   rX   rY   registry_itemsrZ   r   r   r   r_   r_   |   s     QNr   r_   builtin_registryc                 J   a V oVe   V3R lpMV3R lpV3Vn         W#n        V# )Nc                    < S! WW#4      # r   r   contextbuildertypvaluer%   r(   s   &&&&&r   res_decorate_getattr.<locals>.res   s    Ws::r   c                    < S! WW#V4      # r   r   rd   s   &&&&&r   ri   rj      s    Ws4@@r   )r#   r%   r   r$   r%   ri   r(   s   &&& @r   r-   r-      s.    I	;	A ECMHJr   c                 h   a V oVe   V3R lpMV3R lpV\         P                  3Vn        W#n        V# )Nc                    < S! WW#4      # r   r   re   rf   sigargsr%   r(   s   &&&&&r   ri   _decorate_setattr.<locals>.res   s    Ws99r   c                    < S! WW#V4      # r   r   ro   s   &&&&&r   ri   rr      s    Ws$??r   )r   Anyr#   r%   rl   s   &&& @r   r<   r<      s4    I	:	@ OCMHJr   c                    \        VP                  \        P                  4      '       d   VP                  P                  pV P                  W4      p\        P                  ! W4      pVP                  VP                  VP                  4      4      ;_uu_ 4        V P                  WV4      pVP                  W4       R R R 4       VP                  V4      pV#   + '       g   i     L#; ir   )
isinstancereturn_typer   Optionaltypemake_optional_noner   alloca_once_valueif_thennot_is_nonemake_optional_valuestoreload)	re   rf   rp   statusretval
value_typeoptional_none	retvalptroptional_values	   &&&&&    r   fix_returning_optionalr      s    #//5>>22__))
227G--gE	__W\\&..9::$88VN MM.4	 ;
 i(M ;:s   $CC)	c                V   a  V 3R lpS P                   Vn        \        V4      Vn        V# )z;
A wrapper inserting code calling Numba-compiled *fndesc*.
c                   < V P                  VP                  S4      pV P                  P                  WSP                  SP
                  V4      w  rV\        P                  ! WP                  4      ;_uu_ 4        V P                  P                  W4       R R R 4       VP                  SP                  8X  g   Q h\        WW%V4      pVP                  V P                  VP                  4      8w  d2   Rp\        VP                  VP                  VP                  4      4      h\!        WSP                  V4      #   + '       g   i     L; i)Nz$function returned {0} but expect {1})declare_functionmodule	call_convcall_functionrestypeargtypesr   if_unlikelyis_errorreturn_status_propagaterw   r   ry   get_value_type	TypeErrorformatimpl_ret_new_ref)	re   rf   rp   rq   r   r   r   msgfndescs	   &&&&    r   impuser_function.<locals>.imp   s    ''? **886>>6??DB  //::55gF ;&..000'#vN;;'00AA8CCJJv{{COODEE&..&II ;:s   :D::E
	)r   r#   tuplelibs)r   r   r   s   f& r   user_functionr      s&    
J" OOCMT{CHJr   c                4   a  V 3R lp\        V4      Vn        V# )z<
A wrapper inserting code calling Numba-compiled *gendesc*.
c                    < V P                  VP                  S4      pV P                  P                  WSP                  SP
                  V4      w  rVWV3# r   )r   r   r   r   r   r   )re   rf   rp   rq   r   r   r   gendescs   &&&&   r   r   user_generator.<locals>.imp   sO    ''@ **887??G,<,<dD ~r   )r   r   )r   r   r   s   f& r   user_generatorr      s    
 T{CHJr   c                   a V3R lpV# )z`
Decorator a given class as implementing *iterator_type*
(by providing an `iternext()` method).
c                    <a a S P                   o\        \        P                  4      V V3R  l4       p\	        RS4      ! V4       S # )c                 0   < Vw  pS! WV4      pS! W`W4      # r   r   )	re   rf   rp   rq   resultrh   iterobjclsiternexts	   &&&&&  r   iternext_wrapper8iterator_impl.<locals>.wrapper.<locals>.iternext_wrapper   s#    HU'E2GGg>>r   r   )r   iternext_implRefTypeBORROWEDlower_builtin)r   r   r   iterator_types   f @r   wrapperiterator_impl.<locals>.wrapper   s@    <<	w''	(	? 
)	?
 	j-01AB
r   r   )iterable_typer   r   s   &f r   iterator_implr      s     Nr   c                   P   a  ] tR t^t o RtR
tR tR tRR ltR t	R t
R tRtV tR	# )_IternextResultzV
A result wrapper for iteration, passed by iternext_impl() into the
wrapped function.
c                *    Wn         W n        W0n        R # r   _context_builder_pairobj)r   re   rf   pairobjs   &&&&r   r   _IternextResult.__init__  s    r   c                x    V P                   P                  \        P                  R4      V P                  n        R# )z!
Mark the iterator as exhausted.
FNr   get_constantr   booleanr   secondrQ   s   &r   set_exhausted_IternextResult.set_exhausted	  s%      $}}99%--Or   c                    VR9   d+   V P                   P                  \        P                  V4      pWP                  n        R# )zl
Mark the iterator as valid according to *is_valid* (which must
be either a Python boolean or a LLVM inst).
N)FTr   )r   is_valids   &&r   	set_valid_IternextResult.set_valid  s0    
 }$}}11%--JH'r   c                &    WP                   n        R# )z@
Mark the iterator as yielding the given *value* (a LLVM inst).
Nr   first)r   rh   s   &&r   yield__IternextResult.yield_  s     $r   c                    V P                   P                  V P                  \        P                  V P
                  P                  4      # )z.
Return whether the iterator is marked valid.
)r   get_argument_valuer   r   r   r   r   rQ   s   &r   r   _IternextResult.is_valid  s7     }}//05040D0DF 	Fr   c                .    V P                   P                  # )z.
Return the iterator's yielded value, if any.
r   rQ   s   &r   yielded_value_IternextResult.yielded_value&  s     }}"""r   )r   r   r   Nr   )T)rU   rV   rW   rX   rY   	__slots__r   r   r   r   r   r   rZ   r[   r\   s   @r   r   r      s6      5I 
P($F# #r   r   c                   ,    ] tR tRtRt ^t ^t ^tRtR# )r   i,  z
Enumerate the reference type
r   N)	rU   rV   rW   rX   rY   NEWr   	UNTRACKEDrZ   r   r   r   r   r   ,  s+     C H Ir   r   c                h   a  S \          Uu. uF  qNK  	  up9  d   \        R4      hV 3R lpV# u upi )a~  
Wrap the given iternext() implementation so that it gets passed
an _IternextResult() object easing the returning of the iternext()
result pair.

ref_type: a numba.targets.imputils.RefType value, the reference type used is
that specified through the RefType enum.

The wrapped function will be called with the following signature:
    (context, builder, sig, args, iternext_result)
z3ref_type must be an enum member of imputils.RefTypec                    <a  V V3R  lpV# )c                 R  < VP                   pV P                  W4      pS! WW#\        WV4      4       S\        P                  8X  d   \
        pMCS\        P                  8X  d   \        pM'S\        P                  8X  d   \        pM\        R 4      hV! WWEP                  4       4      # )zUnknown ref_type encountered)rw   make_helperr   r   r   r   r   impl_ret_borrowedr   impl_ret_untracked
ValueError	_getvalue)	re   rf   rp   rq   	pair_typer   impl_retr   ref_types	   &&&&   r   r   -iternext_impl.<locals>.outer.<locals>.wrapperM  s    I))'=G3':<7;;&+W---,W...- !?@@G$-/@/@/BD Dr   r   )r   r   r   s   f r   outeriternext_impl.<locals>.outerL  s    	D r   )r   r   )r   xr   s   f  r   r   r   =  s9     7+7a7++NOO" L) ,s   
/c                z    \         P                  ! VP                  V4      pV P                  RV4      pV! W34      # )z{
Call the `getiter()` implementation for the given *iterable_type*
of value *val*, and return the corresponding LLVM inst.
getiter)r   r#   r   get_function)re   rf   r   valgetiter_siggetiter_impls   &&&&  r   call_getiterr   `  s;    
 ""=#>#>NK''	;?L((r   c                   VP                   p\        P                  ! V\        P                  4      p\        P
                  ! WR4      pV P                  RV4      pV! W34      pV P                  WV4      p\        WV4      # )z
Call the `iternext()` implementation for the given *iterator_type*
of value *val*, and return a convenience _IternextResult() object
reflecting the results.
r   )	
yield_typer   Pairr   r   r#   r   r   r   )	re   rf   r   r   itemtyr   iternext_sigr   r   s	   &&&&     r   call_iternextr   j  sp     %%F

65==1I##I=L((\BM

(C!!'c:G7W55r   c                     V P                  \        \        P                  ! \        P
                  V4      4      pV! W34      #   \         d     R# i ; i)zR
Call len() on the given value.  Return None if len() isn't defined on
this type.
N)r   lenr   r#   r   intpNotImplementedError)re   rf   r$   r   len_impls   &&&& r   call_lenr   y  sM    
)''V-=-=ejj"-NO ((  s   9A AA_ForIterLoopc           	   #    aa	"   VP                   p\        V SW#4      pSP                  R4      pSP                  R4      o	V	V3R lpSP                  V4       SP	                  V4      ;_uu_ 4        \        V SWE4      pSP                  SP                  VP                  4       4      RR7      ;_uu_ 4        SP                  S	4       RRR4       \        VP                  4       V4      x  SP                  V4       RRR4       SP                  S	4       V P                  '       d   V P                  P                  SWE4       R# R#   + '       g   i     L; i  + '       g   i     Lf; i5i)z
Simulate a for loop on the given iterable.  Yields a namedtuple with
the given members:
- `value` is the value being yielded
- `do_break` is a callable to early out of the loop
zfor_iter.bodyzfor_iter.endc                  *   < SP                  S 4       R # r   )branch)bb_endrf   s   r   do_breakfor_iter.<locals>.do_break  s    vr   F)likelyN)r   r   append_basic_blockr   
goto_blockr   r|   r}   r   r   r   position_at_end
enable_nrtnrtdecref)
re   rf   r   r   r   itervalbb_bodyr   ri   r   s
   &f&&     @r   for_iterr    s     "//M7G]@G((9G''7F NN7			G	$	$GWmE__W\\#,,.9%_HHNN6" I3,,.99w 
% F#7M;  IH 
%	$s=   A-E/1AE7E			5E>*E/) E/	EEE,	'E/c                    V# )z-
The implementation returns a new reference.
r   ctxrf   rettyrets   &&&&r   r   r     	     Jr   c                b    V P                   '       d   V P                  P                  WV4       V# )z
The implementation returns a borrowed reference.
This function automatically incref so that the implementation is
returning a new reference.
)r  r  increfr  s   &&&&r   r   r     s$     ~~~ws+Jr   c                    V# )z&
The return type is not a NRT object.
r   r  s   &&&&r   r   r     r  r   c              #     "   ^ RI Hp V P                  pVP                  W4      V n         Rx  W0n        R#   Y0n        i ; i5i)z/
Temporarily change the context's error model.
)callconvN)
numba.corer  error_modelcreate_error_model)re   
model_namer  old_error_models   &&  r   force_error_modelr    s<     
 $))O"55jJG.-os   )A8 AA  Ac                     \        R4      h)zHA stub for use internally by Numba when a call is emitted
on a TypeRef.
z%This function should not be executed.)r   )rq   kwargss   *,r   numba_typeref_ctorr    s     E
FFr   r   )rh   r   )numpy)/rY   collections
contextlibinspect	functoolsenumr   r  r   r   r   r   numba.core.typing.templatesr   objectr	   r_   ra   r    r   r2   r7   r>   rA   rH   rM   r-   r<   r   r   r   r   r   r   r   r   r   r   
namedtupler   contextmanagerr  r   r   r   r  r  r   r   r   <module>r*     sK  
      4 4 :i1v i1XQ' Q ./  && ..(>>  ..(>> ((
!006",-#f -#^d " F)6
) %%n&;= < << . .Gr   