§
    ƒÛg¿)  ã                   ó  — d Z ddlZddlZddlmZ ddlmZ ddlZddl	m
Z
 ddlZddlmZmZmZ ddlmZmZmZ ddlmZ dd	lmZ dd
lmZ ddlmZmZmZmZmZmZm Z  ddl!m"Z" ddl#m$Z$m%Z% da&d„ Z'e d„ ¦   «         Z(d„ Z) G d„ dej*        ¦  «        Z+ G d„ dej,        ¦  «        Z- ej.        e+¦  «        d„ ¦   «         Z/ ee-¦  «         G d„ dej0        j1        j2        j3        ¦  «        ¦   «         Z4 ee+¦  «        d„ ¦   «         Z5 ee+ej6        ej7        ej,        ¦  «        d„ ¦   «         Z8 ee-¦  «        d„ ¦   «         Z9 ee-d¦  «        d„ ¦   «         Z:ed„ ¦   «         Z; G d„ de%e$¦  «        Z<e=d k    r ej>        ¦   «          dS dS )!z!
Test NumPy Subclassing features
é    N)ÚNumber©Úwraps)Úir)ÚnjitÚtypeofÚobjmode)ÚcgutilsÚtypesÚtyping)Úbox)ÚTypingError)Ú
cpu_target)Ú	intrinsicÚlower_builtinÚoverload_classmethodÚregister_modelÚtype_callableÚtypeof_implÚregister_jitable)Únumpy_support)ÚTestCaseÚMemoryLeakMixinc                  óL   — t           �t                                | ¦  «         d S d S ©N)Ú_loggerÚappend©Úargss    úY/granary/edev/quantum/lib/python3.11/site-packages/numba/tests/test_ndarray_subclasses.pyÚ_do_logr!      s(   € ÝÐÝ�Š�tÑÔÐÐÐð Ðó    c                  óf   — t          ¦   «         5  t          | Ž  d d d ¦  «         d S # 1 swxY w Y   d S r   )r	   r!   r   s    r    Úlogr$   $   sy   € å	‰Œð ð Ý�ˆˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   �
&¦*­*c                 ó<   ‡ — t          ‰ ¦  «        ˆ fd„¦   «         }|S )Nc                  ó   •— g a  ‰| i |¤ŽS r   )r   )r   ÚkwargsÚfns     €r    Úcorezuse_logger.<locals>.core+   s   ø€ ð ˆØˆr�4Ð"˜6Ð"Ð"Ð"r"   r   )r(   r)   s   ` r    Ú
use_loggerr*   *   s3   ø€ Ý
ˆ2�Y„Yð#ð #ð #ð #ñ „Yð#ð €Kr"   c                   ó   — e Zd ZdZd„ ZdS )ÚMyArrayTc                 óP  — |dk    �rd }g }|D ]é}t          |t          ¦  «        r|                     |¦  «         Œ-t          |t          | ¦  «        t          j        f¦  «        r‹t          |t          | ¦  «        ¦  «        r4|                     t	          j        |j        |j        |¦  «        ¦  «         n|                     |¦  «         |�||j        k    rt          d¦  «        ‚ŒÙ|j        }Œát          c S  ||i |¤Ž}|  
                    |j        |j        |¦  «        S t          S )NÚ__call__zinconsistent sizes)Ú
isinstancer   r   ÚtypeÚnpÚndarrayÚshapeÚdtypeÚ	TypeErrorÚNotImplementedÚ	__class__)	ÚselfÚufuncÚmethodÚinputsr'   ÚNÚscalarsÚinpÚrets	            r    Ú__array_ufunc__zMyArray.__array_ufunc__=   s,  € Ø�ZÒÑØˆAØˆGØð *ð *�Ý˜c¥6Ñ*Ô*ð *Ø—N’N 3Ñ'Ô'Ð'Ð'Ý ¥d¨4¡j¤jµ"´*Ð%=Ñ>Ô>ð *Ý! #¥t¨D¡z¤zÑ2Ô2ð ,ØŸš¥r¤z°#´)¸S¼YÈÑ'LÔ'LÑMÔMÐMÐMàŸš sÑ+Ô+Ð+Ø�}Ø ¤	š>˜>Ý"+Ð,@Ñ"AÔ"AÐAð *ð  œI˜˜å)Ð)Ð)Ð)Ø�%˜Ð+ FÐ+Ð+ˆCØ—>’> #¤)¨S¬Y¸Ñ<Ô<Ð<å!Ð!r"   N)Ú__name__Ú
__module__Ú__qualname__Ú __numba_array_subtype_dispatch__r@   © r"   r    r,   r,   3   s)   € € € € € à'+Ð$ð"ð "ð "ð "ð "r"   r,   c                   óB   ‡ — e Zd Zdˆ fd„	Zd„ Zd„ Zed„ ¦   «         Zˆ xZS )ÚMyArrayTypeFTc                 ón   •— d|› d|› d|› d�}t          ¦   «                              ||||||¬¦  «         d S )NzMyArray(z, ú))ÚreadonlyÚalignedÚname)ÚsuperÚ__init__)r8   r4   ÚndimÚlayoutrJ   rK   rL   r7   s          €r    rN   zMyArrayType.__init__W   s[   ø€ Ø4˜$Ð4Ð4 %Ð4Ð4¨6Ð4Ð4Ð4ˆÝ‰Œ×Ò˜  f°xØ!(¨tð 	ñ 	5ô 	5ð 	5ð 	5ð 	5r"   c                 ó   — t           ‚r   )ÚNotImplementedError)r8   r   r'   s      r    ÚcopyzMyArrayType.copy\   s
   € õ "Ð!r"   c                 óÒ   — |dk    r[|D ]1}t          |t          j        t          j        f¦  «        s	t          c S Œ2t          d„ |D ¦   «         ¦  «        rt          S t          S t          S )Nr.   c              3   ó@   K  — | ]}t          |t          ¦  «        V — Œd S r   )r/   rG   )Ú.0r>   s     r    ú	<genexpr>z.MyArrayType.__array_ufunc__.<locals>.<genexpr>h   s,   è è € ÐBÐB°C•:˜c¥;Ñ/Ô/ÐBÐBÐBÐBÐBÐBr"   )r/   r   ÚArrayr   r6   ÚallrG   )r8   r9   r:   r;   r'   r>   s         r    r@   zMyArrayType.__array_ufunc__b   s{   € Ø�ZÒÐØð *ð *�Ý! #­¬µU´\Ð'BÑCÔCð *Ý)Ð)Ð)Ð)ð*õ ÐBÐB¸6ÐBÑBÔBÑBÔBð &Ý%Ð%ÝÐå!Ð!r"   c                 ó   — t           S r   )r,   )r8   s    r    Úbox_typezMyArrayType.box_typen   s   € åˆr"   )FT)	rA   rB   rC   rN   rS   r@   Úpropertyr[   Ú__classcell__©r7   s   @r    rG   rG   V   sv   ø€ € € € € ð5ð 5ð 5ð 5ð 5ð 5ð
"ð "ð "ð
"ð 
"ð 
"ð ðð ñ „Xðð ð ð ð r"   rG   c                 óô   — 	 t          j        | j        ¦  «        }n%# t          $ r t	          d| j        ›�¦  «        ‚w xY wt          j        | ¦  «        }| j        j         }t          || j	        ||¬¦  «        S )NzUnsupported array dtype: )rJ   )
r   Ú
from_dtyper4   rR   Ú
ValueErrorÚ
map_layoutÚflagsÚ	writeablerG   rO   )ÚvalÚcr4   rP   rJ   s        r    Útypeof_ta_ndarrayrg   s   sˆ   € ðGÝÔ(¨¬Ñ3Ô3ˆˆøÝð Gð Gð GÝˆj¸#¼)¸)ÐEÑFÔFÐFðGøøøåÔ% cÑ*Ô*€FØ”9Ô&Ð&€HÝ�u˜cœh¨¸ÐBÑBÔBÐBs   ‚ œ">c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )ÚMyArrayTypeModelc                 ó¾  •— |j         }dt          j        |j        ¦  «        fdt          j        fdt          j        fdt          j        fdt          j        |j        ¦  «        fdt          j        t          j        |¦  «        fdt          j        t          j        |¦  «        fdt          j        fg}t          t          | ¦  «         
                    |||¦  «         d S )	NÚmeminfoÚparentÚnitemsÚitemsizeÚdatar3   ÚstridesÚextra_field)rO   r   ÚMemInfoPointerr4   ÚpyobjectÚintpÚCPointerÚUniTuplerM   ri   rN   )r8   ÚdmmÚfe_typerO   Úmembersr7   s        €r    rN   zMyArrayTypeModel.__init__€   s¹   ø€ ØŒ|ˆà�Ô,¨W¬]Ñ;Ô;Ð<Ø•u”~Ð&Ø•u”zÐ"Ø�œÐ$Ø•U”^ G¤MÑ2Ô2Ð3Ø•e”n¥U¤Z°Ñ6Ô6Ð7Ø�œ¥u¤z°4Ñ8Ô8Ð9Ø�EœJÐ'ð	
ˆõ 	Õ Ñ%Ô%×.Ò.¨s°G¸WÑEÔEÐEÐEÐEr"   )rA   rB   rC   rN   r]   r^   s   @r    ri   ri   ~   sA   ø€ € € € € ðFð Fð Fð Fð Fð Fð Fð Fð Fr"   ri   c                 ó   — d„ }|S )Nc                 óX   — t          |j        t          | ¦  «        |j        ¬¦  «        }|S )N)r4   rO   rP   )rG   r4   ÚlenrP   )r3   r4   ÚbufÚouts       r    Útyperztype_myarray.<locals>.typer‘   s.   € ÝØ”)¥# e¡*¤*°S´Zð
ñ 
ô 
ˆð ˆ
r"   rE   )Úcontextr   s     r    Útype_myarrayr�   �   s   € ðð ð ð €Lr"   c                 ó\  — ddl m}m} |j        d         }|\  }}}	  ||¦  «        | ||	¬¦  «        }
  ||j        ¦  «        | |¦  «        } |||
j        |
j        |
j        |
j        |
j	        ¬¦  «         | 
                    ¦   «         }| j                             ||j        |¦  «         |S )Nr   )Ú
make_arrayÚpopulate_arrayéÿÿÿÿ)Úvalue)ro   r3   rp   rn   rk   )Únumba.np.arrayobjrƒ   r„   r   Úreturn_typero   r3   rp   rn   rk   Ú	_getvalueÚnrtÚincref)r€   ÚbuilderÚsigr   rƒ   r„   Úsrcarytyr3   r4   r}   ÚsrcaryÚretaryr?   s                r    Úimpl_myarrayr‘   š   sØ   € à<Ð<Ð<Ð<Ð<Ð<Ð<Ð<àŒx˜Œ|€HØÑ€Eˆ5�#à!ˆZˆZ˜Ñ!Ô! '¨7¸#Ð>Ñ>Ô>€Fð )ˆZˆZ˜œÑ(Ô(¨°'Ñ:Ô:€FØ€N�6ØœØœØ!œ>Ø"œOØ!œ>ð+ñ +ô +ð +ð ×
Ò
Ñ
Ô
€CØ„K×Ò�w ¤°Ñ5Ô5Ð5Ø€Jr"   c                 ó<  — |j         j        sJ ‚t          j        | j        ¦  «        }|j                             |j                             |¦  «        ¦  «        }|j         	                    | ||¦  «        }|j         j
                             |j        | |¦  «         |S r   )r€   Ú
enable_nrtr   Úas_dtyper4   Úenv_managerÚ
read_constÚ	add_constÚpyapiÚnrt_adapt_ndarray_to_pythonrŠ   ÚdecrefrŒ   )Útypre   rf   Únp_dtypeÚdtypeptrÚnewarys         r    Ú	box_arrayrŸ   ±   s†   € àŒ9ÔÐÐÐÝÔ% c¤iÑ0Ô0€HØŒ}×'Ò'¨¬×(?Ò(?ÀÑ(IÔ(IÑJÔJ€HØŒW×0Ò0°°c¸8ÑDÔD€Fà„I„M×Ò˜œ C¨Ñ-Ô-Ð-Ø€Mr"   Ú	_allocatec                 ó   — d„ }|S )z;Implements a Numba-only classmethod on the array type.
    c                 óD   — t          d||¦  «         t          ||¦  «        S )NúLOG _ol_array_allocate)r$   Úallocator_MyArray)ÚclsÚ	allocsizeÚaligns      r    Úimplz _ol_array_allocate.<locals>.implÀ   s%   € ÝÐ$ i°Ñ7Ô7Ð7Ý  ¨EÑ2Ô2Ð2r"   rE   )r¥   r¦   r§   r¨   s       r    Ú_ol_array_allocater©   ¼   s   € ð3ð 3ð 3ð €Kr"   c                 óx   — d„ }t          j        t           j        ¦  «        }t          j        |||¦  «        }||fS )Nc                 óš  — | j                              ¦   «          |\  }}|j        }t          j        d¦  «        }t
          j        }t          j        |d¦  «        }	t          j        ||	d¬¦  «        }
| 	                    |
d¦  «        }t          j        |t
          j
        ||g¦  «        }t          j        ||d¬¦  «        }|j                             d¦  «         t          |t          j        ¦  «        r!|                      t"          j        |¦  «        }n|j        |k    s
J d¦   «         ‚| 	                    ||||g¦  «        }d|_        |S )	Né    rE   Ú"_nrt_get_sample_external_allocator)rL   Ú'NRT_MemInfo_alloc_safe_aligned_externalÚnoaliaszalign must be a uint32Úallocate_MyArray)rŠ   Ú_require_nrtÚmoduler   ÚIntTyper
   Ú	voidptr_tÚFunctionTypeÚget_or_insert_functionÚcallÚintp_tÚreturn_valueÚadd_attributer/   ÚbuiltinsÚintÚget_constantr   Úuint32r0   rL   )r€   rŒ   r�   r   Úsizer§   ÚmodÚu32ÚvoidptrÚget_alloc_fntyÚget_alloc_fnÚ	ext_allocÚfntyr(   r·   s                  r    r¨   zallocator_MyArray.<locals>.implÉ   s@  € ØŒ× Ò Ñ"Ô"Ð"Ø‰ˆˆeàŒnˆÝŒj˜‰nŒnˆÝÔ#ˆåœ¨°"Ñ5Ô5ˆÝÔ5Ø�Ð&Jð
ñ 
ô 
ˆð —L’L ¨rÑ2Ô2ˆ	åŒ˜w­¬¸¸gÐ(FÑGÔGˆÝÔ+Ø�ÐEð
ñ 
ô 
ˆð 	Œ×%Ò% iÑ0Ô0Ð0Ý�e�Xœ\Ñ*Ô*ð 	?Ø×(Ò(­¬°uÑ=Ô=ˆEˆEà”: Ò$Ð$Ð$Ð&>Ñ$Ô$Ð$Ø�|Š|˜B  u¨iÐ 8Ñ9Ô9ˆØ&ˆŒ	Øˆr"   )r   rr   rÂ   r   Ú	signature)Ú	typingctxr¦   r§   r¨   Úmipr�   s         r    r¤   r¤   Ç   sC   € ðð ð õ6 Ô
�uœ}Ñ
-Ô
-€CÝ
Ô
˜3 	¨5Ñ
1Ô
1€CØ�ˆ9Ðr"   c                   ób   — e Zd Zd„ Zd„ Zd„ Zd„ Zej        d„ ¦   «         Z	d„ Z
ed„ ¦   «         ZdS )	ÚTestNdarraySubclassesc                 ó†  — t           d„ ¦   «         }t          j        d¦  «        }t          |j        |j        |¦  «        }|                     |¦  «        } ||¦  «        }|                      |t          ¦  «         |                      t          |¦  «        t          |¦  «        ¦  «         |  
                    ||¦  «         dS )z6This tests the path to `MyArrayType.box_type`
        c                 ó   — | dz   S )Né   rE   ©Úas    r    Úfooz6TestNdarraySubclasses.test_myarray_return.<locals>.fooî   s   € à�q‘5ˆLr"   é   N©r   r1   Úaranger,   r3   r4   Úpy_funcÚassertIsInstanceÚassertIsr0   ÚassertPreciseEqual©r8   rÑ   r}   rÐ   ÚexpectedÚgots         r    Útest_myarray_returnz)TestNdarraySubclasses.test_myarray_returnë   s¯   € õ 
ð	ð 	ñ 
Œð	õ Œi˜‰lŒlˆÝ�C”I˜sœy¨#Ñ.Ô.ˆØ—;’;˜q‘>”>ˆØˆc�!‰fŒfˆØ×Ò˜c¥7Ñ+Ô+Ð+Ø�Š•d˜8‘n”n¥d¨3¡i¤iÑ0Ô0Ð0Ø×Ò ¨#Ñ.Ô.Ð.Ð.Ð.r"   c                 ó†  — t           d„ ¦   «         }t          j        d¦  «        }t          |j        |j        |¦  «        }|                     |¦  «        } ||¦  «        }|                      |t          ¦  «         |                      t          |¦  «        t          |¦  «        ¦  «         |  
                    ||¦  «         d S )Nc                 ó   — | S r   rE   rÏ   s    r    rÑ   z8TestNdarraySubclasses.test_myarray_passthru.<locals>.fooû   s   € àˆHr"   rÒ   rÓ   rÙ   s         r    Útest_myarray_passthruz+TestNdarraySubclasses.test_myarray_passthruú   s­   € Ý	ð	ð 	ñ 
Œð	õ Œi˜‰lŒlˆÝ�C”I˜sœy¨#Ñ.Ô.ˆØ—;’;˜q‘>”>ˆØˆc�!‰fŒfˆØ×Ò˜c¥7Ñ+Ô+Ð+Ø�Š•d˜8‘n”n¥d¨3¡i¤iÑ0Ô0Ð0Ø×Ò ¨#Ñ.Ô.Ð.Ð.Ð.r"   c                 óP  — t           d„ ¦   «         }t          j        d¦  «        }|                     |¦  «        } ||¦  «        }|                      |t
          ¦  «         |                      t          |¦  «        t          |¦  «        ¦  «         |                      ||¦  «         d S )Nc                 ó8   — t          | j        | j        | ¦  «        S r   ©r,   r3   r4   )r}   s    r    rÑ   z7TestNdarraySubclasses.test_myarray_convert.<locals>.foo  s   € å˜3œ9 c¤i°Ñ5Ô5Ð5r"   rÒ   )	r   r1   rÔ   rÕ   rÖ   r,   r×   r0   rØ   )r8   rÑ   r}   rÚ   rÛ   s        r    Útest_myarray_convertz*TestNdarraySubclasses.test_myarray_convert  sš   € Ý	ð	6ð 	6ñ 
Œð	6õ Œi˜‰lŒlˆØ—;’;˜sÑ#Ô#ˆØˆc�#‰hŒhˆØ×Ò˜c¥7Ñ+Ô+Ð+Ø�Š•d˜8‘n”n¥d¨3¡i¤iÑ0Ô0Ð0Ø×Ò ¨#Ñ.Ô.Ð.Ð.Ð.r"   c                 óÖ   — d„ }t          j        d¦  «        } ||¦  «        }|                      t          |¦  «        t           j        ¦  «         |                      |||z   ¦  «         d S )Nc                 óf   — t          | j        | j        | ¦  «        }t          j        |¦  «        | z   S r   ©r,   r3   r4   r1   Úasarray©r}   Ú	converteds     r    rÑ   z?TestNdarraySubclasses.test_myarray_asarray_non_jit.<locals>.foo  s,   € Ý ¤	¨3¬9°cÑ:Ô:ˆIÝ”:˜iÑ(Ô(¨3Ñ.Ð.r"   rÒ   )r1   rÔ   r×   r0   r2   rØ   ©r8   rÑ   r}   rÛ   s       r    Útest_myarray_asarray_non_jitz2TestNdarraySubclasses.test_myarray_asarray_non_jit  si   € ð	/ð 	/ð 	/õ Œi˜‰lŒlˆØˆc�#‰hŒhˆØ�Š•d˜3‘i”i¥¤Ñ,Ô,Ð,Ø×Ò  S¨3¡YÑ/Ô/Ð/Ð/Ð/r"   c                 óæ   — |                       ¦   «          t          d„ ¦   «         }t          j        d¦  «        } ||¦  «        }|                      t          |¦  «        t          j        ¦  «         d S )Nc                 ó`   — t          | j        | j        | ¦  «        }t          j        |¦  «        S r   ræ   rè   s     r    rÑ   z7TestNdarraySubclasses.test_myarray_asarray.<locals>.foo!  s'   € å ¤	¨3¬9°cÑ:Ô:ˆIÝ”:˜iÑ(Ô(Ð(r"   rÒ   )Údisable_leak_checkr   r1   rÔ   r×   r0   r2   rê   s       r    Útest_myarray_asarrayz*TestNdarraySubclasses.test_myarray_asarray  sm   € à×ÒÑ!Ô!Ð!å	ð	)ð 	)ñ 
Œð	)õ Œi˜‰lŒlˆØˆc�#‰hŒhˆð 	�Š•d˜3‘i”i¥¤Ñ,Ô,Ð,Ð,Ð,r"   c                 ó>  — t           d„ ¦   «         }t          j        dt          j        ¬¦  «        }|                      t
          ¦  «        5 } ||¦  «         d d d ¦  «         n# 1 swxY w Y   d}|D ]*}|                      |t          |j        ¦  «        ¦  «         Œ+d S )Nc                 óB   — t          | j        | j        | ¦  «        }||z   S r   râ   rè   s     r    rÑ   zATestNdarraySubclasses.test_myarray_ufunc_unsupported.<locals>.foo-  s"   € å ¤	¨3¬9°cÑ:Ô:ˆIØ˜yÑ(Ð(r"   rÒ   ©r4   )zNo implementation of functionz3add(MyArray(1, float32, C), MyArray(1, float32, C)))	r   r1   rÔ   Úfloat32ÚassertRaisesr   ÚassertInÚstrÚ	exception)r8   rÑ   r}   ÚraisesÚmsgÚms         r    Útest_myarray_ufunc_unsupportedz4TestNdarraySubclasses.test_myarray_ufunc_unsupported,  sé   € Ý	ð	)ð 	)ñ 
Œð	)õ Œi˜¥¤Ð,Ñ,Ô,ˆØ×Ò�{Ñ+Ô+ð 	¨vØˆC�‰HŒHˆHð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ðFˆàð 	4ð 	4ˆAØ�MŠM˜!�S Ô!1Ñ2Ô2Ñ3Ô3Ð3Ð3ð	4ð 	4s   ÁA#Á#A'Á*A'c                 óè  — t           d„ ¦   «         }t          j        dt          j        ¬¦  «        }t	          |j        |j        |¦  «        }|                     |¦  «        } ||¦  «        }|                      ||¦  «         t          }t          j        }t          |j        ¦  «        }|                     |¦  «        }	|                      |d|d         j        |	fd|d         j        |	fg¦  «         dS )z:
        Checks that our custom allocator is used
        c                 ód   — | t          j        | j        t           j        ¬¦  «        z   }| dz   }||fS )Nrò   y              ð?)r1   rÔ   r¿   Úfloat64)rÐ   Úbrf   s      r    rÑ   zBTestNdarraySubclasses.test_myarray_allocator_override.<locals>.foo@  s1   € à•B”I˜aœf­B¬JÐ7Ñ7Ô7Ñ7ˆAØ�B‘ˆAØ�a�4ˆKr"   rÒ   rò   r£   r   rÎ   N)r   r1   rÔ   rþ   r,   r3   r4   rÕ   rØ   r   r   Útarget_contextr   Úget_preferred_array_alignmentÚassertEqualÚnbytes)
r8   rÑ   r}   rÐ   rÚ   rÛ   Úlogged_linesÚ	targetctxÚnb_dtyper§   s
             r    Útest_myarray_allocator_overridez5TestNdarraySubclasses.test_myarray_allocator_override;  sö   € õ
 
ð	ð 	ñ 
Œð	õ
 Œi˜¥¤Ð,Ñ,Ô,ˆÝ�C”I˜sœy¨#Ñ.Ô.ˆà—;’;˜q‘>”>ˆØˆc�!‰fŒfˆà×Ò  XÑ.Ô.Ð.åˆåÔ-ˆ	Ý˜#œ)Ñ$Ô$ˆØ×7Ò7¸ÑAÔAˆØ×Ò˜Ø% x°¤{Ô'9¸5ÐAØ% x°¤{Ô'9¸5ÐAð(
ñ 	ô 	ð 	ð 	ð 	r"   N)rA   rB   rC   rÜ   rß   rã   rë   ÚunittestÚexpectedFailurerï   rû   r*   r  rE   r"   r    rË   rË   é   s™   € € € € € ð/ð /ð /ð/ð /ð /ð
/ð 
/ð 
/ð0ð 0ð 0ð Ôð-ð -ñ Ôð-ð4ð 4ð 4ð ðð ñ „Zðð ð r"   rË   Ú__main__)?Ú__doc__r»   r  Únumbersr   Ú	functoolsr   Únumpyr1   Úllvmliter   Únumbar   r   r	   Ú
numba.corer
   r   r   Únumba.core.pythonapir   Únumba.core.errorsr   Únumba.core.registryr   Únumba.extendingr   r   r   r   r   r   r   Únumba.npr   Únumba.tests.supportr   r   r   r!   r$   r*   r2   r,   rX   rG   Úregisterrg   r)   Ú	datamodelÚmodelsÚStructModelri   r�   rv   ÚDTyper‘   rŸ   r©   r¤   rË   rA   ÚmainrE   r"   r    ú<module>r     sŸ  ððð ð €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ø Ð Ð Ð Ð Ð à €€€Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø $Ð $Ð $Ð $Ð $Ð $Ø )Ð )Ð )Ð )Ð )Ð )Ø *Ð *Ð *Ð *Ð *Ð *ð/ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð #Ð "Ð "Ð "Ð "Ð "à 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9ð €ðð ð ð
 ðð ñ Ôðð
ð ð ð "ð  "ð  "ð  "ð  "ˆbŒjñ  "ô  "ð  "ðFð ð ð ð �%”+ñ ô ð ð: €Ô�gÑÔðCð Cñ ÔðCð €�ÑÔðFð Fð Fð Fð F�u”zÔ+Ô2Ô>ñ Fô Fñ ÔðFð  €ˆwÑÔðð ñ Ôðð €ˆw˜œ¨¬°U´[ÑAÔAðð ñ BÔAðð, €€[ÑÔðð ñ Ôðð Ð�k ;Ñ/Ô/ðð ñ 0Ô/ðð ðð ñ „ððBmð mð mð mð m˜O¨Xñ mô mð mð` ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr"   