Ë
    üÇ:j”  ã                   óÚ  — d Z ddlmZ ddlZddlZddlmZ ddlmZ d„ Z	d„ Z
d„ Zd	d
œd„Zd;d„Zd„ Zd„ Z e
e«      d„ «       Z e
e«      d<d„«       Z e
ej(                  «      d„ «       Z e
e«      d„ «       Z e
e«      d„ «       Z e
e«      d„ «       Z e
ej8                  «      d„ «       Zd„ Z eed«        ee d«        ee!d«        eejD                  dd«        eejF                  dd«        eejH                  dd«        eejJ                  dd«        eejL                  dd«        eejN                  dd ¬
«        eejP                  d!d ¬
«        eejR                  d"d ¬
«        eejT                  d#d ¬
«        eejV                  d$d ¬
«        eejX                  d%«        eejZ                  d&«        eej\                  d'«        eej^                  d(d ¬
«        eej`                  d)d ¬
«        eejb                  d*d ¬
«        eejd                  d+d ¬
«        eejf                  d,dd ¬
«        eejh                  d-d!d ¬
«        eejj                  d.d"d ¬
«        eejl                  d/d#d ¬
«        eejn                  d0d$d ¬
«        eejp                  d1d(d ¬
«        eejr                  d2d)d ¬
«        eejt                  d3d*d ¬
«        eejv                  d4d+d ¬
«        eejx                  d5d ¬
«        eejz                  d6d ¬
«        eej|                  d7d ¬
«        eej~                  d8d5d ¬
«        eej€                  d9d6d ¬
«        eej‚                  d:d7d ¬
«       y)=z_
Overloads for ClassInstanceType for built-in functions that call dunder methods
on an object.
é    )ÚwrapsN)Úoverload)ÚClassInstanceTypec                 ó*   — | dv sJ ‚t        d«      d |  S )N)é   é   Úxy)Úlist©Ún_argss    úz/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/numba/experimental/jitclass/overloads.pyÚ	_get_argsr      s!   € Ø�VÑÐÐÜ�‹:�g�vÐÐó    c                 ó   ‡ — ˆ fd„}|S )zr
    Decorator to add an overload for target that applies when the first argument
    is a ClassInstanceType.
    c                 óà   •‡ — t        ‰ «      ˆ fd„«       }‰t        urAt        t        j                  |«      j
                  «      }|t        t        |«      «      k(  sJ ‚ t        ‰«      |«      S )Nc                  ó<   •— t        | d   t        «      sy  ‰| i |¤ŽS )Nr   )Ú
isinstancer   )ÚargsÚkwargsÚfuncs     €r   Úwrappedz;class_instance_overload.<locals>.decorator.<locals>.wrapped   s%   ø€ ä˜d 1™gÔ'8Ô9ØÙ˜Ð( Ñ(Ð(r   )	r   Úcomplexr
   ÚinspectÚ	signatureÚ
parametersr   Úlenr   )r   r   ÚparamsÚtargets   `  €r   Ú	decoratorz*class_instance_overload.<locals>.decorator   sg   ù€ Ü	ˆt‹ó	)ó 
ð	)ð
 œÑ äœ'×+Ñ+¨GÓ4×?Ñ?Ó@ˆFØœY¤s¨6£{Ó3Ò3Ð3Ð3ØŒx˜Ó Ó(Ð(r   © )r   r   s   ` r   Úclass_instance_overloadr!      s   ø€ ô
)ð Ðr   c                 ó(   — i }t        | |«       ||   S )zC
    Extract a code-generated function from a string template.
    )Úexec)ÚtemplateÚnameÚ	namespaces      r   Úextract_templater'   '   s   € ð €IÜˆ�9ÔØ�T‰?Ðr   r   r   c                ó¤   ‡‡— t        ‰«      }ddj                  |«      › d�}t        t        |d«      «      ˆˆfd„«       } t	        | «      |«      S )zd
    Register an overload for func that checks for methods __attr__ for each
    attr in attrs.
    ú

def func(ú,z):
    pass
r   c            	      ó`   •— ‰D �cg c]  }t        | d   d|› d�‰«      ‘Œ }}t        |Ž S c c}w )Nr   Ú__)Útry_call_methodÚ
take_first)r   r   ÚattrÚoptionsÚattrsr   s       €€r   Úoverload_funcz/register_simple_overload.<locals>.overload_func<   sI   ø€ ð ö
àô ˜D ™G r¨$¨¨r ]°FÕ;ð
ˆð 
ô ˜7Ð#Ð#ùò	
s   †+)r   Újoinr   r'   r!   )r   r   r1   Ú	arg_namesr$   r2   s    ``   r   Úregister_simple_overloadr5   0   se   ù€ ô ˜&Ó!€Ið
Ø
�(‰(�9Ó
Ð	ð ð€Hô
 Ô˜H fÓ-Ó.ô$ó /ð$ð )Ô" 4Ó(¨Ó7Ð7r   c                 ó´   — || j                   v rJt        |«      }ddj                  |«      › d|d   › d|› ddj                  |dd «      › d	�	}t        |d
«      S y)zo
    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   r3   r'   )Úcls_typeÚmethodr   r4   r$   s        r   r-   r-   G   sz   € ð
 �×%Ñ%Ñ%Ü˜fÓ%ˆ	ð
Ø
�(‰(�9Ó
Ð	ð Ø�a‰Lˆ>˜˜6˜( ! C§H¡H¨Y°q°r¨]Ó$;Ð#<ð =ðˆô   ¨&Ó1Ð1ð &r   c                 óD   — || j                   v rd|› d�}t        |d«      S y)z€ __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)r9   r'   )r:   r;   r$   s      r   Útry_call_complex_methodr=   U   s<   € ð �×%Ñ%Ñ%ðà�ð ðˆô   ¨&Ó1Ð1ð &r   c                  óP   — t        d„ | D «       «      sJ | «       ‚| D ]  }|€Œ|c S  y)z)
    Take the first non-None option.
    c              3   óR   K  — | ]  }|d u xs t        j                  |«      –— Œ! y ­w©N)r   Ú
isfunction)Ú.0Úos     r   ú	<genexpr>ztake_first.<locals>.<genexpr>e   s'   è ø€ ÒC°aˆq�DˆyÒ1œG×.Ñ.¨qÓ1Ó1ÑCùs   ‚%'N)Úall)r0   rC   s     r   r.   r.   a   s6   € ô ÑC¸7ÔCÔCÐLÀWÓLÐCØò ˆØ‰=ØŠHñr   c                 ób   — t        | d«      }d| j                  v rd„ }nd }d„ }t        |||«      S )NÚ__bool__Ú__len__c                 ó*   — t        t        | «      «      S r@   )Úboolr   ©Úxs    r   Úusing_len_implz"class_bool.<locals>.using_len_implp   s   € Üœ˜A›“<Ðr   c                  ó   — y)NTr    rK   s    r   ú<lambda>zclass_bool.<locals>.<lambda>u   s   � r   ©r-   r9   r.   )rL   Úusing_bool_implrM   Úalways_true_impls       r   Ú
class_boolrS   k   s<   € ä% a¨Ó4€Oà�A—M‘MÑ!ó	 ð ˆá%Ðä�o ~Ð7GÓHÐHr   c                 ó2   — t        t        | d«      dd„«      S )NÚ__complex__c                 ó*   — t        t        | «      «      S r@   )r   Úfloat©ÚrealÚimags     r   rO   zclass_complex.<locals>.<lambda>~   s   € œw¤u¨T£{Ó3€ r   ©r   r   )r.   r=   rX   s     r   Úclass_complexr\   z   s   € äÜ  mÓ4Ú3óð r   c                 ó   — t        | dd«      S )NÚ__contains__r   )r-   ©rL   Úys     r   Úclass_containsra   ‚   s   € ô ˜1˜n¨aÓ0Ð0r   c                 ól   — t        | d«      g}d| j                  v r|j                  d„ «       t        |Ž S )NÚ	__float__Ú	__index__c                 ó4   — t        | j                  «       «      S r@   )rW   rd   rK   s    r   rO   zclass_float.<locals>.<lambda>�   s   € ¤ q§{¡{£}Ó!5€ r   )r-   r9   Úappendr.   ©rL   r0   s     r   Úclass_floatrh   ‰   s7   € ä˜q +Ó.Ð/€Gð 	�q—}‘}Ñ$à�‰Ñ5Ô6ä�wÐÐr   c                 ób   — t        | d«      g}|j                  t        | d«      «       t        |Ž S )NÚ__int__rd   )r-   rf   r.   rg   s     r   Ú	class_intrk   •   s/   € ä˜q )Ó,Ð-€Gà‡N�N”? 1 kÓ2Ô3ä�wÐÐr   c                 ó0   — t        t        | d«      d„ «      S )NÚ__str__c                 ó   — t        | «      S r@   )ÚreprrK   s    r   rO   zclass_str.<locals>.<lambda>¢   s
   € ”$�q“'€ r   ©r.   r-   rK   s    r   Ú	class_strrq   ž   s   € äÜ˜˜9Ó%Ùóð r   c                 ó2   — t        t        | dd«      d„ «      S )NÚ__ne__r   c                 ó   — | |k(   S r@   r    r_   s     r   rO   zclass_ne.<locals>.<lambda>­   s   € ˜!˜q™&�\€ r   rp   r_   s     r   Úclass_neru   ¦   s    € ô
 Ü˜˜8 QÓ'Ù!óð r   c                 ó6   ‡‡— ˆˆfd„} t        | «      |«       y )Nc                 ón   •— t        | d‰› d�d«      }d‰› d�|j                  v rd„ }nd }t        ||«      S )Nr,   r   c                 ó   — || kD  S r@   r    r_   s     r   Úreflected_implzEregister_reflected_overload.<locals>.class_lt.<locals>.reflected_impl¶   s   € Ø˜1‘u�r   rP   )rL   r`   Únormal_implry   Úmeth_forwardÚmeth_reflecteds       €€r   Úclass_ltz-register_reflected_overload.<locals>.class_lt²   sI   ø€ Ü% a¨2¨l¨^¸2Ð)>ÀÓBˆà�Ð˜rÐ" a§m¡mÑ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ÚinvertÚpowÚrshiftÚsubÚtruedivÚiaddÚ	ifloordivÚilshiftÚimulÚimodÚipowÚirshiftÚisubÚitruedivÚandÚorÚxorÚiandÚiorÚixor)r   r[   )BÚ__doc__Ú	functoolsr   r   ÚoperatorÚnumba.core.extendingr   Únumba.core.typesr   r   r!   r'   r5   r-   r=   r.   rJ   rS   r   r\   Úcontainsra   rW   rh   Úintrk   Ústrrq   Úneru   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š   Úand_Úor_r�   rž   rŸ   r    r    r   r   ú<module>r¬      sM  ðñõ Û Û å )Ý .òò
ò*ð 34ô 8ó.2ò	2òñ ˜ÓñIó ðIñ ˜Ó!òó "ðñ ˜×*Ñ*Ó+ñ1ó ,ð1ñ ˜Óñ ó  ð ñ ˜Óñ ó ð ñ ˜Óñó ðñ ˜Ÿ™Ó%ñó &ðò,ñ ˜˜eÔ $Ù ˜˜eÔ $Ù ˜˜vÔ &ñ ˜HŸK™K¨¨tÔ 4Ù ˜HŸK™K¨¨tÔ 4Ù ˜HŸK™K¨¨tÔ 4Ù ˜HŸK™K¨¨tÔ 4ñ ˜HŸK™K¨¨tÔ 4ñ ˜Ÿ™ u°QÕ 7Ù ˜×*Ñ*¨J¸qÕ AÙ ˜Ÿ™¨(¸1Õ =Ù ˜Ÿ™ u°QÕ 7Ù ˜Ÿ™ u°QÕ 7Ù ˜Ÿ™ uÔ -Ù ˜Ÿ™ uÔ -Ù ˜Ÿ™¨(Ô 3Ù ˜Ÿ™ u°QÕ 7Ù ˜Ÿ™¨(¸1Õ =Ù ˜Ÿ™ u°QÕ 7Ù ˜×)Ñ)¨9¸QÕ ?ñ ˜Ÿ™¨°¸aÕ @Ù ˜×+Ñ+¨[¸*ÈQÕ OÙ ˜×)Ñ)¨9°hÀqÕ IÙ ˜Ÿ™¨°¸aÕ @Ù ˜Ÿ™¨°¸aÕ @Ù ˜Ÿ™¨°¸aÕ @Ù ˜×)Ñ)¨9°hÀqÕ IÙ ˜Ÿ™¨°¸aÕ @Ù ˜×*Ñ*¨J¸	È!Õ Lñ ˜Ÿ™¨°aÕ 8Ù ˜Ÿ™ t°AÕ 6Ù ˜Ÿ™ u°QÕ 7ñ ˜Ÿ™¨°¸aÕ @Ù ˜Ÿ™ u¨d¸1Õ =Ù ˜Ÿ™¨°¸aÖ @r   