
    sh`                     *   S r SSKJr  SSKrSSKrSSKJr  SSKJr  S r	S r
S rS	S
.S jrS:S jrS rS r\
" \5      S 5       r\
" \5      S;S j5       r\
" \R(                  5      S 5       r\
" \5      S 5       r\
" \5      S 5       r\
" \5      S 5       r\
" \R8                  5      S 5       rS r\" \S5        \" \ S5        \" \!S5        \" \RD                  SS5        \" \RF                  SS5        \" \RH                  SS5        \" \RJ                  SS5        \" \RL                  SS5        \" \RN                  SS S
9  \" \RP                  S!S S
9  \" \RR                  S"S S
9  \" \RT                  S#S S
9  \" \RV                  S$S S
9  \" \RX                  S%5        \" \RZ                  S&5        \" \R\                  S'S S
9  \" \R^                  S(S S
9  \" \R`                  S)S S
9  \" \Rb                  S*S S
9  \" \Rd                  S+SS S
9  \" \Rf                  S,S!S S
9  \" \Rh                  S-S"S S
9  \" \Rj                  S.S#S S
9  \" \Rl                  S/S$S S
9  \" \Rn                  S0S'S S
9  \" \Rp                  S1S(S S
9  \" \Rr                  S2S)S S
9  \" \Rt                  S3S*S S
9  \" \Rv                  S4S S
9  \" \Rx                  S5S S
9  \" \Rz                  S6S S
9  \" \R|                  S7S4S S
9  \" \R~                  S8S5S S
9  \" \R                  S9S6S S
9  g)<z_
Overloads for ClassInstanceType for built-in functions that call dunder methods
on an object.
    )wrapsN)overload)ClassInstanceTypec                 .    U S;   d   e[        S5      S U  $ )N)      xy)listn_argss    y/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/experimental/jitclass/overloads.py	_get_argsr      s!    V:gv    c                    ^  U 4S jnU$ )zf
Decorator to add an overload for target that applies when the first argument
is a ClassInstanceType.
c                    >^  [        T 5      U 4S j5       nT[        LaC  [        [        R                  " U5      R
                  5      nU[        [        U5      5      :X  d   e[        T5      " U5      $ )Nc                  F   > [        U S   [        5      (       d  g T" U 0 UD6$ )Nr   )
isinstancer   )argskwargsfuncs     r   wrapped;class_instance_overload.<locals>.decorator.<locals>.wrapped   s(    d1g'899(((r   )	r   complexr
   inspect	signature
parametersr   lenr   )r   r   paramstargets   `  r   	decorator*class_instance_overload.<locals>.decorator   se    	t	) 
	)
  '++G4??@FYs6{3333((r    )r   r    s   ` r   class_instance_overloadr#      s    
) r   c                 $    0 n[        X5        X!   $ )z;
Extract a code-generated function from a string template.
)exec)templatename	namespaces      r   extract_templater)   '   s     I?r   r   r   c                   ^^ [        T5      nSSR                  U5       S3n[        [        US5      5      UU4S j5       n[	        U 5      " U5      $ )zX
Register an overload for func that checks for methods __attr__ for each
attr in attrs.


def func(,z):
    pass
r   c            	      f   > T Vs/ s H  n[        U S   SU S3T5      PM     nn[        U6 $ s  snf )Nr   __)try_call_method
take_first)r   r   attroptionsattrsr   s       r   overload_func/register_simple_overload.<locals>.overload_func<   sL     
 DGr$r]F; 	 
 7##	
s   .)r   joinr   r)   r#   )r   r   r3   	arg_namesr&   r4   s    ``   r   register_simple_overloadr8   0   sb     &!I

((9
	 H
 Hf-.$ /$ #4(77r   c                     XR                   ;   aJ  [        U5      nSSR                  U5       SUS    SU SSR                  USS 5       S	3	n[        US
5      $ g)zc
If method is defined for cls_type, return a callable that calls this method.
If not, return None.
r+   r,   z):
    return r   .(r   Nz)
r   )jit_methodsr   r6   r)   )cls_typemethodr   r7   r&   s        r   r/   r/   G   sx    
 %%%f%	

((9
	 aL>6(!CHHYqr]$;#< =  &11 &r   c                 F    XR                   ;   a  SU S3n[        US5      $ g)zw__complex__ needs special treatment as the argument names are kwargs
and therefore specific in name and default value.
z+
def func(real=0, imag=0):
    return real.z()
r   N)r<   r)   )r=   r>   r&   s      r   try_call_complex_methodr@   U   s:     %%%   &11 &r   c                  `    [        S U  5       5      (       d   U 5       eU  H
  nUc  M  Us  $    g)z!
Take the first non-None option.
c              3   b   #    U  H%  oS L =(       d    [         R                  " U5      v   M'     g 7fN)r   
isfunction).0os     r   	<genexpr>take_first.<locals>.<genexpr>e   s%     C7aDy1G..q117s   -/N)all)r2   rF   s     r   r0   r0   a   s4     C7CCCLWLC=H r   c                 d    [        U S5      nSU R                  ;   a  S nOS nS n[        XU5      $ )N__bool____len__c                 *    [        [        U 5      5      $ rC   )boolr   xs    r   using_len_impl"class_bool.<locals>.using_len_implp   s    A<r   c                     g)NTr"   rO   s    r   <lambda>class_bool.<locals>.<lambda>u   s    r   r/   r<   r0   )rP   using_bool_implrQ   always_true_impls       r   
class_boolrY   k   s:    %a4OAMM!	  %o7GHHr   c                 4    [        [        U S5      SS j5      $ )N__complex__c                 *    [        [        U 5      5      $ rC   )r   floatrealimags     r   rT   class_complex.<locals>.<lambda>~   s    wuT{3r   r   r   )r0   r@   r^   s     r   class_complexrc   z   s    m43 r   c                     [        U SS5      $ )N__contains__r   )r/   rP   ys     r   class_containsrh      s     1na00r   c                 p    [        U S5      /nSU R                  ;   a  UR                  S 5        [        U6 $ )N	__float__	__index__c                 4    [        U R                  5       5      $ rC   )r]   rk   rO   s    r   rT   class_float.<locals>.<lambda>   s    q{{}!5r   )r/   r<   appendr0   rP   r2   s     r   class_floatrp      s7    q+./G 	q}}$56wr   c                 b    [        U S5      /nUR                  [        U S5      5        [        U6 $ )N__int__rk   )r/   rn   r0   ro   s     r   	class_intrs      s/    q),-GNN?1k23wr   c                 0    [        [        U S5      S 5      $ )N__str__c                     [        U 5      $ rC   )reprrO   s    r   rT   class_str.<locals>.<lambda>   s    $q'r   r0   r/   rO   s    r   	class_strrz      s    9% r   c                 2    [        [        U SS5      S 5      $ )N__ne__r   c                     X:X  + $ rC   r"   rf   s     r   rT   class_ne.<locals>.<lambda>   s    !\r   ry   rf   s     r   class_ner      s     
 8Q'! r   c                 8   ^^ UU4S jn[        U 5      " U5        g )Nc                 p   > [        U ST S3S5      nST S3UR                  ;   a  S nOS n[        X#5      $ )Nr.   r   c                 
    X:  $ rC   r"   rf   s     r   reflected_implEregister_reflected_overload.<locals>.class_lt.<locals>.reflected_impl   s	    ur   rV   )rP   rg   normal_implr   meth_forwardmeth_reflecteds       r   class_lt-register_reflected_overload.<locals>.class_lt   sG    %a2l^2)>Br"amm3 "N+66r   )r#   )r   r   r   r   s    `` r   register_reflected_overloadr      s    	7 D!(+r   absr   hashgelegtlteqaddr   floordivlshiftmulmodnegpospowrshiftsubtruediviadd	ifloordivilshiftimulimodipowirshiftisubitruedivandorxoriandiorixor)r   rb   )A__doc__	functoolsr   r   operatornumba.core.extendingr   numba.core.typesr   r   r#   r)   r8   r/   r@   r0   rN   rY   r   rc   containsrh   r]   rp   intrs   strrz   ner   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   and_or_r   r   r   r   r"   r   r   <module>r      s?      ) .
* 34 8.2	2 I I ! " **+1 ,1            % &, e $ e $ v & HKKt 4 HKKt 4 HKKt 4 HKKt 4 HKKt 4 uQ 7 **Jq A (1 = uQ 7 uQ 7 u - u - uQ 7 (1 = uQ 7 ))9Q ? a @ ++[*Q O ))9hq I a @ a @ a @ ))9hq I a @ **J	! L a 8 tA 6 uQ 7 a @ ud1 = a @r   