§
    2@Ä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j        ¦  «        d„ ¦   «         Zd„ Z eed¦  «          ee d¦  «          ee!d¦  «          eej"        dd¦  «          eej#        dd¦  «          eej$        dd¦  «          eej%        dd¦  «          eej&        dd¦  «          eej'        dd ¬
¦  «          eej(        d!d ¬
¦  «          eej)        d"d ¬
¦  «          eej*        d#d ¬
¦  «          eej+        d$d ¬
¦  «          eej,        d%¦  «          eej-        d&¦  «          eej.        d'¦  «          eej/        d(d ¬
¦  «          eej0        d)d ¬
¦  «          eej1        d*d ¬
¦  «          eej2        d+d ¬
¦  «          eej3        d,dd ¬
¦  «          eej4        d-d!d ¬
¦  «          eej5        d.d"d ¬
¦  «          eej6        d/d#d ¬
¦  «          eej7        d0d$d ¬
¦  «          eej8        d1d(d ¬
¦  «          eej9        d2d)d ¬
¦  «          eej:        d3d*d ¬
¦  «          eej;        d4d+d ¬
¦  «          eej<        d5d ¬
¦  «          eej=        d6d ¬
¦  «          eej>        d7d ¬
¦  «          eej?        d8d5d ¬
¦  «          eej@        d9d6d ¬
¦  «          eejA        d:d7d ¬
¦  «         dS )=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    úVC:\Projects\Historical\venv\Lib\site-packages\numba/experimental/jitclass/overloads.pyÚ	_get_argsr      s(   € Ø�VÐÐÐÐÝ�‰:Œ:�g�v�gÔÐó    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rHt          t          j        |¦  «        j        ¦  «        }|t          t          |¦  «        ¦  «        k    sJ ‚ t          ‰¦  «        |¦  «        S )Nc                  óN   •— t          | d         t          ¦  «        sd S  ‰| i |¤ŽS )Nr   )Ú
isinstancer   )ÚargsÚkwargsÚfuncs     €r   Úwrappedz;class_instance_overload.<locals>.decorator.<locals>.wrapped   s4   ø€ å˜d 1œgÕ'8Ñ9Ô9ð Ø�Ø�4˜Ð( Ð(Ð(Ð(r   )	r   Úcomplexr
   ÚinspectÚ	signatureÚ
parametersr   Úlenr   )r   r   ÚparamsÚtargets   `  €r   Ú	decoratorz*class_instance_overload.<locals>.decorator   sŒ   øø€ Ý	ˆt‰Œð	)ð 	)ð 	)ð 	)ñ 
Œð	)ð
 �Ð Ð å�'Ô+¨GÑ4Ô4Ô?Ñ@Ô@ˆFØ�Y¥s¨6¡{¤{Ñ3Ô3Ò3Ð3Ð3Ð3Ø�x˜ÑÔ Ñ(Ô(Ð(r   © )r   r   s   ` r   Úclass_instance_overloadr!      s$   ø€ ð
)ð )ð )ð )ð )ð Ðr   c                 ó6   — 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                     |¦  «        › 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                  ó6   •‡ — ˆ ˆfd„‰D ¦   «         }t          |Ž S )Nc                 óF   •— g | ]}t          ‰d          d|› d�‰¦  «        ‘ŒS )r   Ú__©Útry_call_method)Ú.0Úattrr   r   s     €€r   ú
<listcomp>zCregister_simple_overload.<locals>.overload_func.<locals>.<listcomp>>   sA   ø€ ð 
ð 
ð 
àõ ˜D œG ]¨$ ] ] ]°FÑ;Ô;ð
ð 
ð 
r   )Ú
take_first)r   r   ÚoptionsÚattrsr   s   `  €€r   Úoverload_funcz/register_simple_overload.<locals>.overload_func<   s>   øø€ ð
ð 
ð 
ð 
ð 
àð
ñ 
ô 
ˆõ ˜7Ð#Ð#r   )r   Újoinr   r'   r!   )r   r   r5   Ú	arg_namesr$   r6   s    ``   r   Úregister_simple_overloadr9   0   s‘   øø€ õ ˜&Ñ!Ô!€IðØ
�(Š(�9Ñ
Ô
ðð ð €Hõ
 Õ˜H fÑ-Ô-Ñ.Ô.ð$ð $ð $ð $ð $ñ /Ô.ð$ð )Õ" 4Ñ(Ô(¨Ñ7Ô7Ð7r   c                 óÜ   — || j         v rbt          |¦  «        }dd                     |¦  «        › d|d         › d|› dd                     |dd…         ¦  «        › d	�	}t          |d
¦  «        S dS )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   r7   r'   )Úcls_typeÚmethodr   r8   r$   s        r   r/   r/   G   s�   € ð
 �Ô%Ð%Ð%Ý˜fÑ%Ô%ˆ	ðØ
�(Š(�9Ñ
Ô
ðð à�aŒLðð à!ðð à$'§H¢H¨Y°q°r°r¬]Ñ$;Ô$;ðð ð ˆõ   ¨&Ñ1Ô1Ð1ð &Ð%r   c                 óD   — || j         v rd|› d�}t          |d¦  «        S dS )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)r=   r'   )r>   r?   r$   s      r   Útry_call_complex_methodrA   U   sE   € ð �Ô%Ð%Ð%ðàðð ð ˆõ   ¨&Ñ1Ô1Ð1ð &Ð%r   c                  ób   — t          d„ | D ¦   «         ¦  «        s
J | ¦   «         ‚| D ]}|�|c S Œ	dS )z)
    Take the first non-None option.
    c              3   óF   K  — | ]}|d u pt          j        |¦  «        V — Œd S ©N)r   Ú
isfunction)r0   Úos     r   ú	<genexpr>ztake_first.<locals>.<genexpr>e   s6   è è € ÐCÐC°aˆq�DˆyÐ1�GÔ.¨qÑ1Ô1ÐCÐCÐCÐCÐCÐCr   N)Úall)r4   rF   s     r   r3   r3   a   s[   € õ ÐCÐC¸7ÐCÑCÔCÑCÔCÐLÐLÀWÑLÔLÐCØð ð ˆØˆ=ØˆHˆHˆHð ðð r   c                 óh   — t          | d¦  «        }d| j        v rd„ }nd }d„ }t          |||¦  «        S )NÚ__bool__Ú__len__c                 ó:   — t          t          | ¦  «        ¦  «        S rD   )Úboolr   ©Úxs    r   Úusing_len_implz"class_bool.<locals>.using_len_implp   s   € Ý�˜A™œ‘<”<Ðr   c                 ó   — dS )NTr    rN   s    r   ú<lambda>zclass_bool.<locals>.<lambda>u   s   €  € r   ©r/   r=   r3   )rO   Úusing_bool_implrP   Úalways_true_impls       r   Ú
class_boolrV   k   sT   € å% a¨Ñ4Ô4€Oà�A”MÐ!Ð!ð	 ð 	 ð 	 ð 	 ð ˆà%�~Ðå�o ~Ð7GÑHÔHÐHr   c                 óB   — t          t          | d¦  «        dd„¦  «        S )NÚ__complex__r   c                 ó:   — t          t          | ¦  «        ¦  «        S rD   )r   Úfloat©ÚrealÚimags     r   rR   zclass_complex.<locals>.<lambda>~   s   € �w¥u¨T¡{¤{Ñ3Ô3€ r   ©r   r   )r3   rA   r[   s     r   Úclass_complexr_   z   s*   € åÝ  mÑ4Ô4Ø3Ð3Ð3ñô ð r   c                 ó$   — t          | dd¦  «        S )NÚ__contains__r   r.   ©rO   Úys     r   Úclass_containsrd   ‚   s   € õ ˜1˜n¨aÑ0Ô0Ð0r   c                 ót   — t          | d¦  «        g}d| j        v r|                     d„ ¦  «         t          |Ž S )NÚ	__float__Ú	__index__c                 óD   — t          |                      ¦   «         ¦  «        S rD   )rZ   rg   rN   s    r   rR   zclass_float.<locals>.<lambda>�   s   € ¥ q§{¢{¡}¤}Ñ!5Ô!5€ r   )r/   r=   Úappendr3   ©rO   r4   s     r   Úclass_floatrk   ‰   sD   € å˜q +Ñ.Ô.Ð/€Gð 	�q”}Ð$Ð$à�ŠÐ5Ð5Ñ6Ô6Ð6å�wÐÐr   c                 ó|   — t          | d¦  «        g}|                     t          | d¦  «        ¦  «         t          |Ž S )NÚ__int__rg   )r/   ri   r3   rj   s     r   Ú	class_intrn   •   s;   € å˜q )Ñ,Ô,Ð-€Gà‡N‚N•? 1 kÑ2Ô2Ñ3Ô3Ð3å�wÐÐr   c                 ó@   — t          t          | d¦  «        d„ ¦  «        S )NÚ__str__c                 ó    — t          | ¦  «        S rD   )ÚreprrN   s    r   rR   zclass_str.<locals>.<lambda>¢   s   € •$�q‘'”'€ r   ©r3   r/   rN   s    r   Ú	class_strrt   ž   s'   € åÝ˜˜9Ñ%Ô%ØÐñô ð r   c                 óB   — t          t          | dd¦  «        d„ ¦  «        S )NÚ__ne__r   c                 ó   — | |k     S rD   r    rb   s     r   rR   zclass_ne.<locals>.<lambda>­   s   € ˜!˜qš&�\€ r   rs   rb   s     r   Úclass_nerx   ¦   s+   € õ
 Ý˜˜8 QÑ'Ô'Ø!Ð!ñô ð r   c                 óF   ‡‡— ˆˆfd„} t          | ¦  «        |¦  «         d S )Nc                 ót   •— t          | d‰› d�d¦  «        }d‰› d�|j        v rd„ }nd }t          ||¦  «        S )Nr-   r   c                 ó   — || k    S rD   r    rb   s     r   Úreflected_implzEregister_reflected_overload.<locals>.class_lt.<locals>.reflected_impl¶   s   € Ø˜1’u�r   rS   )rO   rc   Únormal_implr|   Úmeth_forwardÚmeth_reflecteds       €€r   Úclass_ltz-register_reflected_overload.<locals>.class_lt²   sc   ø€ Ý% aÐ)>¨lÐ)>Ð)>Ð)>ÀÑBÔBˆà"�Ð"Ð"Ð" a¤mÐ3Ð3ðð ð ð ð "ˆNå˜+ ~Ñ6Ô6Ð6r   )r!   )r   r~   r   r€   s    `` r   Úregister_reflected_overloadr�   ±   sC   øø€ ð	7ð 	7ð 	7ð 	7ð 	7ð 	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'   r9   r/   rA   r3   rM   rV   r   r_   Úcontainsrd   rZ   rk   Úintrn   Ústrrt   Únerx   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¯      s�  ððð ð Ð Ð Ð Ð Ð Ø €€€Ø €€€à )Ð )Ð )Ð )Ð )Ð )Ø .Ð .Ð .Ð .Ð .Ð .ðð ð ð
ð ð ð*ð ð ð 34ð 8ð 8ð 8ð 8ð 8ð.2ð 2ð 2ð 2ð	2ð 	2ð 	2ðð ð ð Ð˜ÑÔðIð Iñ ÔðIð Ð˜Ñ!Ô!ðð ð ñ "Ô!ðð Ð˜Ô*Ñ+Ô+ð1ð 1ñ ,Ô+ð1ð Ð˜ÑÔð ð  ñ  Ôð ð Ð˜ÑÔð ð  ñ Ôð ð Ð˜ÑÔðð ñ Ôðð Ð˜œÑ%Ô%ðð ñ &Ô%ðð,ð ,ð ,ð Ð ˜˜eÑ $Ô $Ð $Ø Ð ˜˜eÑ $Ô $Ð $Ø Ð ˜˜vÑ &Ô &Ð &ð Ð ˜HœK¨¨tÑ 4Ô 4Ð 4Ø Ð ˜HœK¨¨tÑ 4Ô 4Ð 4Ø Ð ˜HœK¨¨tÑ 4Ô 4Ð 4Ø Ð ˜HœK¨¨tÑ 4Ô 4Ð 4ð Ð ˜HœK¨¨tÑ 4Ô 4Ð 4ð Ð ˜œ u°QÐ 7Ñ 7Ô 7Ð 7Ø Ð ˜Ô*¨J¸qÐ AÑ AÔ AÐ AØ Ð ˜œ¨(¸1Ð =Ñ =Ô =Ð =Ø Ð ˜œ u°QÐ 7Ñ 7Ô 7Ð 7Ø Ð ˜œ u°QÐ 7Ñ 7Ô 7Ð 7Ø Ð ˜œ uÑ -Ô -Ð -Ø Ð ˜œ uÑ -Ô -Ð -Ø Ð ˜œ¨(Ñ 3Ô 3Ð 3Ø Ð ˜œ u°QÐ 7Ñ 7Ô 7Ð 7Ø Ð ˜œ¨(¸1Ð =Ñ =Ô =Ð =Ø Ð ˜œ u°QÐ 7Ñ 7Ô 7Ð 7Ø Ð ˜Ô)¨9¸QÐ ?Ñ ?Ô ?Ð ?ð Ð ˜œ¨°¸aÐ @Ñ @Ô @Ð @Ø Ð ˜Ô+¨[¸*ÈQÐ OÑ OÔ OÐ OØ Ð ˜Ô)¨9°hÀqÐ IÑ IÔ IÐ IØ Ð ˜œ¨°¸aÐ @Ñ @Ô @Ð @Ø Ð ˜œ¨°¸aÐ @Ñ @Ô @Ð @Ø Ð ˜œ¨°¸aÐ @Ñ @Ô @Ð @Ø Ð ˜Ô)¨9°hÀqÐ IÑ IÔ IÐ IØ Ð ˜œ¨°¸aÐ @Ñ @Ô @Ð @Ø Ð ˜Ô*¨J¸	È!Ð LÑ LÔ LÐ Lð Ð ˜œ¨°aÐ 8Ñ 8Ô 8Ð 8Ø Ð ˜œ t°AÐ 6Ñ 6Ô 6Ð 6Ø Ð ˜œ u°QÐ 7Ñ 7Ô 7Ð 7ð Ð ˜œ¨°¸aÐ @Ñ @Ô @Ð @Ø Ð ˜œ u¨d¸1Ð =Ñ =Ô =Ð =Ø Ð ˜œ¨°¸aÐ @Ñ @Ô @Ð @Ð @Ð @r   