§
    ƒÛg™/  ã                   ó‚  — d Z ddlZddlZddlmZmZmZmZ ddl	m
Z
 ddlmZ ddlmZmZ ddlmZmZmZmZ ej         G d„ d	e
j        ¦  «        ¦   «         Z ed
e
j        dd…         fde
j        fg¬¦  «        Z ej        eej        ¦  «          G d„ dej        ¦  «        Zej         G d„ de
j        ¦  «        ¦   «         Z ej        eed
dg¦  «         ed„ ¦   «         Zed„ ¦   «         Z ed„ ¦   «         Z!ed„ ¦   «         Z"ed„ ¦   «         Z#ed„ ¦   «         Z$ed„ ¦   «         Z%ed„ ¦   «         Z& G d„ dee¦  «        Z' eed¦  «        d„ ¦   «         Z( eed¦  «        d„ ¦   «         Z) G d„ d ee¦  «        Z*d!„ Z+d"„ Z, G d#„ d$ee¦  «        Z-ej         G d%„ d&e
j        ¦  «        ¦   «         Z. e.d'e
j/        fd(e
j/        ff¬¦  «        Z0 G d)„ d*ej        ¦  «        Z1ed+„ ¦   «         Z2ed,„ ¦   «         Z3 ej        e1e.d'd(g¦  «          ee.d-¦  «        d.„ ¦   «         Z4 ee.d¦  «        d/„ ¦   «         Z5 G d0„ d1ee¦  «        Z6dS )2z%
Test mutable struct, aka, structref
é    N)ÚtypedÚnjitÚerrorsÚtypeof)Útypes)Ú	structref)Úoverload_methodÚoverload_attribute)ÚMemoryLeakMixinÚTestCaseÚtemp_directoryÚoverride_configc                   ó   — e Zd ZdZdS )ÚMySimplerStructTypezV
    Test associated with this type represent the lowest level uses of structref.
    N©Ú__name__Ú
__module__Ú__qualname__Ú__doc__© ó    úQ/granary/edev/quantum/lib/python3.11/site-packages/numba/tests/test_struct_ref.pyr   r      ó   € € € € € ðð ð 	€Dr   r   ÚvaluesÚcounter)Úfieldsc                   ó‚   — e Zd Zd„ Zed„ ¦   «         Zej        d„ ¦   «         Zed„ ¦   «         Zd„ Zed„ ¦   «         Z	d„ Z
dS )	ÚMyStructc                 óD   — t           j                             | ||¦  «        S ©N©r   ÚStructRefProxyÚ__new__)Úclsr   r   s      r   r#   zMyStruct.__new__"   s   € õ Ô'×/Ò/°°V¸WÑEÔEÐEr   c                 ó    — t          | ¦  «        S r    )Ú
get_values©Úselfs    r   r   zMyStruct.values*   s   € å˜$ÑÔÐr   c                 ó"   — t          | |¦  «        S r    )Ú
set_values)r(   Úvals     r   r   zMyStruct.values.   s   € å˜$ Ñ$Ô$Ð$r   c                 ó    — t          | ¦  «        S r    )Úget_counterr'   s    r   r   zMyStruct.counter2   s   € å˜4Ñ Ô Ð r   c                 ó&   — | j         |z  | j        z   S r    ©r   r   ©r(   Úargs     r   ÚtestmezMyStruct.testme6   ó   € ØŒ{˜SÑ  4¤<Ñ/Ð/r   c                 ó   — | j         | j        fS r    r/   r'   s    r   ÚpropzMyStruct.prop9   s   € àŒ{˜DœLÐ(Ð(r   c                 ó    — t          | ¦  «        S r    )Úcompute_fieldsr'   s    r   Ú__hash__zMyStruct.__hash__=   s   € Ý˜dÑ#Ô#Ð#r   N)r   r   r   r#   Úpropertyr   Úsetterr   r2   r5   r8   r   r   r   r   r       s²   € € € € € ðFð Fð Fð ð ð  ñ „Xð ð „]ð%ð %ñ „]ð%ð ð!ð !ñ „Xð!ð0ð 0ð 0ð ð)ð )ñ „Xð)ð$ð $ð $ð $ð $r   r   c                   ó   — e Zd ZdZdS )ÚMyStructTypezTTest associated with this type represent the higher-level uses of
    structef.
    Nr   r   r   r   r<   r<   A   r   r   r<   c                 óZ   — t          j        t          ¦  «        }t          || |¦  «         |S r    )r   ÚnewÚmy_struct_tyÚmy_struct_init)r   r   Ústs      r   Ú	my_structrB   S   s(   € å	Œ•|Ñ	$Ô	$€BÝ�2�v˜wÑ'Ô'Ð'Ø€Ir   c                 ó"   — || _         || _        d S r    r/   )r(   r   r   s      r   r@   r@   Z   s   € à€D„KØ€D„L€L€Lr   c                 ór   — t          | |¬¦  «        }|xj        |j        z  c_        |xj        |z  c_        |S )N©r   )rB   r   r   )ÚvsÚctrrA   s      r   Úctor_by_intrinsicrH   `   s;   € å	�2˜sÐ	#Ñ	#Ô	#€BØ€I„I�”Ñ€I„IØ€J„J�#Ñ€J„JØ€Ir   c                 ó$   — t          | |¬¦  «        S ©Nr/   ©r   )rF   rG   s     r   Úctor_by_classrL   h   s   € å˜2 sÐ+Ñ+Ô+Ð+r   c                 ó   — | j         S r    ©r   ©rA   s    r   r&   r&   m   s
   € àŒ9Ðr   c                 ó   — || _         d S r    rN   )rA   r+   s     r   r*   r*   r   s   € à€B„I€I€Ir   c                 ó   — | j         S r    rE   rO   s    r   r-   r-   w   s
   € àŒ:Ðr   c                 ó    — | j         | j        z   S r    r/   rO   s    r   r7   r7   |   s   € àŒ9�r”zÑ!Ð!r   c                   óD   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
S )ÚTestStructRefBasicc                 óà  — t          j        dt           j        fg¦  «        }|                      |j        d         t           j        ¦  «         t          j        dt           j        fdt           j        fg¦  «        }|                      |j        d         t           j        ¦  «         |                      |j        d         t           j        ¦  «         |                      t          d¦  «        5  t          j        dt           j        fg¦  «         d d d ¦  «         n# 1 swxY w Y   |                      t          d¦  «        5  t          j        dg¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NÚaÚbzexpecting a str for field nameé   z%expecting a Numba Type for field type)rV   é{   )r   Ú	StructRefÚint64ÚassertEqualÚ
field_dictÚfloat64ÚassertRaisesRegexÚ
ValueError)r(   Úsrs     r   Útest_structref_typez&TestStructRefBasic.test_structref_type‚   s»  € ÝŒ_˜s¥E¤KÐ0Ð1Ñ2Ô2ˆØ×Ò˜œ sÔ+­U¬[Ñ9Ô9Ð9ÝŒ_˜s¥E¤KÐ0°3½¼Ð2FÐGÑHÔHˆØ×Ò˜œ sÔ+­U¬[Ñ9Ô9Ð9Ø×Ò˜œ sÔ+­U¬]Ñ;Ô;Ð;à×#Ò#¥JØ$DñFô Fð 	0ð 	0åŒO˜a¥¤Ð-Ð.Ñ/Ô/Ð/ð	0ð 	0ð 	0ñ 	0ô 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0øøøð 	0ð 	0ð 	0ð 	0ð ×#Ò#¥JØ$KñMô Mð 	*ð 	*åŒO˜Z˜LÑ)Ô)Ð)ð	*ð 	*ð 	*ñ 	*ô 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*øøøð 	*ð 	*ð 	*ð 	*ð 	*ð 	*s$   Ã,"DÄDÄ!DÅ E#Å#E'Å*E'c                 óX  — |                       t          d¦  «        5  t          j        t          j        ¦  «         d d d ¦  «         n# 1 swxY w Y   |                       t          d¦  «        5  t          j        t          j        t          ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nzcannot register)r_   r`   r   Úregisterr   rZ   Údefine_boxingr   r'   s    r   Útest_invalid_usesz$TestStructRefBasic.test_invalid_uses�   s  € Ø×#Ò#¥JÐ0AÑBÔBð 	0ð 	0ÝÔ�uœÑ/Ô/Ð/ð	0ð 	0ð 	0ñ 	0ô 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0øøøð 	0ð 	0ð 	0ð 	0à×#Ò#¥JÐ0AÑBÔBð 	?ð 	?ÝÔ#¥E¤OµXÑ>Ô>Ð>ð	?ð 	?ð 	?ñ 	?ô 	?ð 	?ð 	?ð 	?ð 	?ð 	?ð 	?ð 	?øøøð 	?ð 	?ð 	?ð 	?ð 	?ð 	?s#   œAÁAÁAÁ-%BÂB#Â&B#c                 óJ  — t          j        dt           j        ¬¦  «        }d}||z   }t          ||¦  «        }|                      |t
          ¦  «         |                      |t          |¦  «        ¦  «         |||z  z   }t          |¦  «        }|                      ||¦  «         d S )Né
   ©Údtypeé   )	ÚnpÚarangeÚintprH   ÚassertNotIsInstancer   ÚassertPreciseEqualr&   r7   )r(   rF   rG   Úfirst_expectedÚ	first_gotÚsecond_expectedÚ
second_gots          r   Útest_MySimplerStructTypez+TestStructRefBasic.test_MySimplerStructType–   s¢   € ÝŒY�r¥¤Ð)Ñ)Ô)ˆØˆà˜b™ˆÝ% b¨#Ñ.Ô.ˆ	ð 	× Ò  ­HÑ5Ô5Ð5Ø×Ò µ
¸9Ñ0EÔ0EÑFÔFÐFà(¨C°#©IÑ6ˆÝ# IÑ.Ô.ˆ
Ø×Ò °Ñ<Ô<Ð<Ð<Ð<r   c                 ó”  — t          j        dt           j        ¬¦  «        }d}t          ||¦  «        }|                      |t
          j        ¦  «         |                      t          d¦  «        5  |j	         d d d ¦  «         n# 1 swxY w Y   |                      t          d¦  «        5  |j
         d d d ¦  «         d S # 1 swxY w Y   d S )Nrh   ri   rk   r   r   )rl   rm   rn   rH   ÚassertIsInstancer   r"   r_   ÚAttributeErrorr   r   )r(   rF   rG   Úwrappers       r   Ú-test_MySimplerStructType_wrapper_has_no_attrsz@TestStructRefBasic.test_MySimplerStructType_wrapper_has_no_attrs¥   s8  € ÝŒY�r¥¤Ð)Ñ)Ô)ˆØˆÝ# B¨Ñ,Ô,ˆØ×Ò˜g¥yÔ'?Ñ@Ô@Ð@Ø×#Ò#¥N°HÑ=Ô=ð 	ð 	ØŒNˆNð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	à×#Ò#¥N°IÑ>Ô>ð 	ð 	ØŒOˆOð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s$   Á.BÂBÂ	BÂ(B=Â=CÃCc                 óˆ  — t          j        dt           j        ¬¦  «        }d}|                     ¦   «         }t	          ||¦  «        }|                      |t          ¦  «         |                      ||j        ¦  «         ||z   }t          |¦  «        }|                      ||¦  «         |  
                    |j        |¦  «         d S ©Nrh   ri   é   )rl   rm   r^   ÚcopyrL   rw   r   rp   r   r7   r\   r   )r(   rF   rG   Úfirst_expected_arrrr   rs   rt   s          r   Útest_MyStructTypez$TestStructRefBasic.test_MyStructType¯   s¶   € ÝŒY�r¥¤Ð,Ñ,Ô,ˆØˆàŸWšW™YœYÐÝ! " cÑ*Ô*ˆ	Ø×Ò˜i­Ñ2Ô2Ð2Ø×ÒÐ 2°IÔ4DÑEÔEÐEà,¨sÑ2ˆÝ# IÑ.Ô.ˆ
Ø×Ò °Ñ<Ô<Ð<Ø×Ò˜Ô*¨CÑ0Ô0Ð0Ð0Ð0r   c                 ó   — t           d„ ¦   «         } |dddd¦  «        \  }}|                      |j        d¦  «         |                      |j        d¦  «         |                      |j        d¦  «         |                      |j        d¦  «         d S )Nc                 óB   — t          | |¦  «        t          ||¦  «        fS r    rK   )ÚxÚyÚmÚns       r   Ú
mixed_typezDTestStructRefBasic.test_MyStructType_mixed_types.<locals>.mixed_type¿   s   € å˜A˜q‘>”>¥8¨A¨q¡>¤>Ð1Ð1r   rX   çffffff@y        333333@)é   )r   r\   r   r   )r(   r‡   rV   rW   s       r   Útest_MyStructType_mixed_typesz0TestStructRefBasic.test_MyStructType_mixed_types½   sœ   € å	ð	2ð 	2ñ 
Œð	2ð ˆz˜!˜S $¨Ñ-Ô-‰ˆˆ1Ø×Ò˜œ 1Ñ%Ô%Ð%Ø×Ò˜œ CÑ(Ô(Ð(Ø×Ò˜œ 4Ñ(Ô(Ð(Ø×Ò˜œ DÑ)Ô)Ð)Ð)Ð)r   c                 óV  — t          j        ¦   «         }t          dd¦  «        |d<   |                      |d         j        d¦  «         |                      |d         j        d¦  «         t          dd¦  «        |d<   |                      |d         j        d¦  «         |                      |d         j        d¦  «         |d         xj        dz  c_        |                      |d         j        d¦  «         |                      |d         j        d¦  «         t          dd	¦  «        |d
<   d S )NrX   rˆ   rV   é   gffffff
@rh   é   r‰   gffffff@rW   )r   ÚDictr   r\   r   r   ©r(   Útds     r   Útest_MyStructType_in_dictz,TestStructRefBasic.test_MyStructType_in_dictÉ   s  € ÝŒZ‰\Œ\ˆÝ˜1˜cÑ"Ô"ˆˆ3‰Ø×Ò˜˜Cœœ¨Ñ+Ô+Ð+Ø×Ò˜˜Cœœ¨#Ñ.Ô.Ð.å˜1˜cÑ"Ô"ˆˆ3‰Ø×Ò˜˜Cœœ¨Ñ+Ô+Ð+Ø×Ò˜˜Cœœ¨#Ñ.Ô.Ð.à
ˆ3ŒˆŒ˜"ÑˆŒØ×Ò˜˜Cœœ¨Ñ,Ô,Ð,Ø×Ò˜˜Cœœ¨#Ñ.Ô.Ð.å˜1˜cÑ"Ô"ˆˆ3‰ˆˆr   c                 ó–  — |                       ¦   «          t          j        ¦   «         }t          dd¦  «        |d<   |                      |d         j        d¦  «         |                      |d         j        d¦  «         |                      t          j	        d¦  «        5  t          dd¦  «        |d<   d d d ¦  «         d S # 1 swxY w Y   d S )NrX   rˆ   rV   zCannot cast numba.MyStructTyperW   )
Údisable_leak_checkr   rŽ   r   r\   r   r   r_   r   ÚTypingErrorr�   s     r   Ú*test_MyStructType_in_dict_mixed_type_errorz=TestStructRefBasic.test_MyStructType_in_dict_mixed_type_errorÙ   s  € Ø×ÒÑ!Ô!Ð!åŒZ‰\Œ\ˆÝ˜1˜cÑ"Ô"ˆˆ3‰Ø×Ò˜˜Cœœ¨Ñ+Ô+Ð+Ø×Ò˜˜Cœœ¨#Ñ.Ô.Ð.ð ×#Ò#¥FÔ$6Ø$EñGô Gð 	'ð 	'õ ˜s AÑ&Ô&ˆBˆs‰Gð		'ð 	'ð 	'ñ 	'ô 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'øøøð 	'ð 	'ð 	'ð 	'ð 	'ð 	's   ÂB>Â>CÃCc                 óŠ   — t          dd¦  «        }t          |¦  «         |                      t          |¦  «        d¦  «         d S )NrX   rŒ   é   )r   r   r\   Úhash)r(   rA   s     r   Ú*test_MyStructType_hash_no_typeof_recursionz=TestStructRefBasic.test_MyStructType_hash_no_typeof_recursionè   s>   € õ �a˜‰^Œ^ˆÝˆr‰
Œ
ˆ
à×Ò�˜b™œ 1Ñ%Ô%Ð%Ð%Ð%r   N)r   r   r   rb   rf   ru   rz   r€   rŠ   r‘   r•   r™   r   r   r   rT   rT   �   s›   € € € € € ð*ð *ð *ð?ð ?ð ?ð=ð =ð =ðð ð ð1ð 1ð 1ð
*ð 
*ð 
*ð#ð #ð #ð 'ð 'ð 'ð&ð &ð &ð &ð &r   rT   r2   c                 ó   — d„ }|S )Nc                 ó&   — | j         |z  | j        z   S r    r/   r0   s     r   Úimplz%_ol_mystructtype_testme.<locals>.impló   r3   r   r   )r(   r1   rœ   s      r   Ú_ol_mystructtype_testmer�   ñ   s   € ð0ð 0ð 0à€Kr   r5   c                 ó   — d„ }|S )Nc                 ó   — | j         | j        fS r    r/   r'   s    r   Úgetz"_ol_mystructtype_prop.<locals>.getú   s   € ØŒ{˜DœLÐ(Ð(r   r   ©r(   r    s     r   Ú_ol_mystructtype_propr¢   ø   s   € ð)ð )ð )à€Jr   c                   ó   — e Zd Zd„ Zd„ ZdS )ÚTestStructRefExtendingc                 ó–   — t           d„ ¦   «         }d} ||¦  «        }|                     |¦  «        }|                      ||¦  «         d S )Nc                 ó�   — t          j        dt           j        ¬¦  «        }d}t          ||¦  «        }|                     | ¦  «        S r|   )rl   rm   r^   r   r2   )rƒ   rF   rG   Úobjs       r   Úcheckz:TestStructRefExtending.test_overload_method.<locals>.check  s<   € å”˜2¥R¤ZÐ0Ñ0Ô0ˆBØˆCÝ˜2˜sÑ#Ô#ˆCØ—:’:˜a‘=”=Ð r   r—   ©r   Úpy_funcrp   ©r(   r¨   rƒ   ÚgotÚexpects        r   Útest_overload_methodz+TestStructRefExtending.test_overload_method   s\   € Ý	ð	!ð 	!ñ 
Œð	!ð ˆØˆe�A‰hŒhˆØ—’˜qÑ!Ô!ˆØ×Ò  VÑ,Ô,Ð,Ð,Ð,r   c                 óŽ   — t           d„ ¦   «         } |¦   «         }|                     ¦   «         }|                      ||¦  «         d S )Nc                  ót   — t          j        dt           j        ¬¦  «        } d}t          | |¦  «        }|j        S r|   )rl   rm   r^   r   r5   )rF   rG   r§   s      r   r¨   z=TestStructRefExtending.test_overload_attribute.<locals>.check  s3   € å”˜2¥R¤ZÐ0Ñ0Ô0ˆBØˆCÝ˜2˜sÑ#Ô#ˆCØ”8ˆOr   r©   ©r(   r¨   r¬   r­   s       r   Útest_overload_attributez.TestStructRefExtending.test_overload_attribute  sQ   € Ý	ð	ð 	ñ 
Œð	ð ˆe‰gŒgˆØ—’‘”ˆØ×Ò  VÑ,Ô,Ð,Ð,Ð,r   N)r   r   r   r®   r²   r   r   r   r¤   r¤   ÿ   s2   € € € € € ð-ð -ð -ð
-ð 
-ð 
-ð 
-ð 
-r   r¤   c                 ó(   — t          | |¬¦  «        }|S rJ   rK   )rƒ   r„   Ústructs      r   Úcaching_test_makerµ     s   € Ý˜Q¨Ð*Ñ*Ô*€FØ€Mr   c                 ó,   — |                       |¦  «        S r    )r2   )r´   Úzs     r   Úcaching_test_user¸     s   € Ø�=Š=˜ÑÔÐr   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚTestStructRefCachingc                 óü   — t          t          j        ¦  «        | _        t	          d| j        ¦  «        | _        | j                             ¦   «          t          j        d¦  «         t          j	        dd¬¦  «         d S )NÚ	CACHE_DIRÚerrorÚignoreÚ	typeguard)ÚactionÚmodule)
r   rº   r   Ú
_cache_dirr   Ú_cache_overrideÚ	__enter__ÚwarningsÚsimplefilterÚfilterwarningsr'   s    r   ÚsetUpzTestStructRefCaching.setUp$  sk   € Ý(Õ)=Ô)FÑGÔGˆŒÝ.¨{¸D¼OÑLÔLˆÔØÔ×&Ò&Ñ(Ô(Ð(ÝÔ˜gÑ&Ô&Ð&ÝÔ x¸ÐDÑDÔDÐDÐDÐDr   c                 ód   — | j                              d d d ¦  «         t          j        ¦   «          d S r    )rÃ   Ú__exit__rÅ   Úresetwarningsr'   s    r   ÚtearDownzTestStructRefCaching.tearDown+  s2   € ØÔ×%Ò% d¨D°$Ñ7Ô7Ð7ÝÔÑ Ô Ð Ð Ð r   c                 ó^   ‡ ‡‡— ˆ fd„Šˆ fd„Šˆˆˆ fd„} |d¬¦  «          |d¬¦  «         d S )Nc                 ó¨   •— ‰                      t          | j        ¦  «        d¦  «         ‰                      t          | j        ¦  «        d¦  «         d S )NrX   r   ©r\   ÚlenÚ
cache_hitsÚcache_misses©Ústatsr(   s    €r   Úassert_cachedzBTestStructRefCaching.test_structref_caching.<locals>.assert_cached0  óK   ø€ Ø×Ò�S Ô!1Ñ2Ô2°AÑ6Ô6Ð6Ø×Ò�S Ô!3Ñ4Ô4°aÑ8Ô8Ð8Ð8Ð8r   c                 ó¨   •— ‰                      t          | j        ¦  «        d¦  «         ‰                      t          | j        ¦  «        d¦  «         d S )Nr   rX   rÏ   rÓ   s    €r   Úassert_not_cachedzFTestStructRefCaching.test_structref_caching.<locals>.assert_not_cached4  rÖ   r   c                 óº  •—  t          d¬¦  «        t          ¦  «        } t          d¬¦  «        t          ¦  «        }t          j                             d¦  «        }d}d} |||¦  «        } |||¦  «        }||z  |z   }‰                     ||¦  «         | r" ‰	|j        ¦  «          ‰	|j        ¦  «         d S  ‰
|j        ¦  «          ‰
|j        ¦  «         d S )NT)Úcacher—   é   )r   rµ   r¸   rl   Úrandomrp   rÔ   )ÚcachedÚ
check_makeÚ	check_userF   rG   ÚfactorrA   r¬   r­   rÕ   rØ   r(   s            €€€r   r¨   z:TestStructRefCaching.test_structref_caching.<locals>.check8  sþ   ø€ Ø)� DÐ)Ñ)Ô)Õ*;Ñ<Ô<ˆJØ(� 4Ð(Ñ(Ô(Õ)9Ñ:Ô:ˆIÝ”×!Ò! !Ñ$Ô$ˆBØˆCØˆFØ�˜B Ñ$Ô$ˆBØ�)˜B Ñ'Ô'ˆCØ˜&‘[ 3Ñ&ˆFØ×#Ò# C¨Ñ0Ô0Ð0àð 3Ø�˜jÔ.Ñ/Ô/Ð/Ø�˜iœoÑ.Ô.Ð.Ð.Ð.à!Ð! *Ô"2Ñ3Ô3Ð3Ø!Ð! )¤/Ñ2Ô2Ð2Ð2Ð2r   F)rÝ   Tr   )r(   r¨   rÕ   rØ   s   ` @@r   Útest_structref_cachingz+TestStructRefCaching.test_structref_caching/  sˆ   øøø€ ð	9ð 	9ð 	9ð 	9ð 	9ð	9ð 	9ð 	9ð 	9ð 	9ð	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð$ 	ˆ�UÐÑÔÐØˆ�TÐÑÔÐÐÐr   N)r   r   r   rÈ   rÌ   rá   r   r   r   rº   rº   #  sD   € € € € € ðEð Eð Eð!ð !ð !ðð ð ð ð r   rº   c                   ó   — e Zd Zd„ ZdS )ÚPolygonStructTypec                 óº   — dt          | ¦  «        › �| _        t          dt          j        t          j        ¦  «        fdt          j        | ¦  «        fg¦  «        }|S )Nznumba.PolygonStructType#ÚvalueÚparent)ÚidÚnameÚtupler   ÚOptionalr[   )r(   r   s     r   Úpreprocess_fieldsz#PolygonStructType.preprocess_fieldsQ  sX   € à9­r°$©x¬xÐ9Ð9ˆŒ	ÝØ•e”n¥U¤[Ñ1Ô1Ð2Ø•u”~ dÑ+Ô+Ð,ð
ñ ô ˆð
 ˆr   N)r   r   r   rë   r   r   r   rã   rã   N  s#   € € € € € ðð ð ð ð r   rã   rå   ræ   c                   ó@   — e Zd Zd„ Zed„ ¦   «         Zed„ ¦   «         ZdS )ÚPolygonStructc                 óD   — t           j                             | ||¦  «        S r    r!   )r$   rå   ræ   s      r   r#   zPolygonStruct.__new__c  s   € ÝÔ'×/Ò/°°U¸FÑCÔCÐCr   c                 ó    — t          | ¦  «        S r    )ÚPolygonStruct_get_valuer'   s    r   rå   zPolygonStruct.valuef  s   € å& tÑ,Ô,Ð,r   c                 ó    — t          | ¦  «        S r    )ÚPolygonStruct_get_parentr'   s    r   ræ   zPolygonStruct.parentj  s   € å'¨Ñ-Ô-Ð-r   N)r   r   r   r#   r9   rå   ræ   r   r   r   rí   rí   b  s\   € € € € € ðDð Dð Dð ð-ð -ñ „Xð-ð ð.ð .ñ „Xð.ð .ð .r   rí   c                 ó   — | j         S r    ©rå   r'   s    r   rð   rð   o  s
   € àŒ:Ðr   c                 ó   — | j         S r    )ræ   r'   s    r   rò   rò   t  s
   € àŒ;Ðr   Úflipc                 ó   — d„ }|S )Nc                 ó2   — | j         �| j          | _         d S d S r    rô   r'   s    r   rœ   z%_ol_polygon_struct_flip.<locals>.impl‚  s!   € ØŒ:Ð!Øœ*˜ˆDŒJˆJˆJð "Ð!r   r   )r(   rœ   s     r   Ú_ol_polygon_struct_fliprù   €  s   € ð%ð %ð %ð €Kr   c                 ó   — d„ }|S )Nc                 ó   — | j         | j        fS r    )rå   ræ   r'   s    r   r    z$_ol_polygon_struct_prop.<locals>.getŠ  s   € ØŒz˜4œ;Ð&Ð&r   r   r¡   s     r   Ú_ol_polygon_struct_proprü   ˆ  s   € ð'ð 'ð 'à€Jr   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚTestStructRefForwardTypingc                 óp   — t           d„ ¦   «         }d} ||¦  «        }|}|                      ||¦  «         d S )Nc                 ó„   — t          d d ¦  «        }t          d d ¦  «        }| |_        ||_        | |_        |j        j        S r    )rí   rå   ræ   ©rƒ   ÚpolyÚp_polys      r   r¨   zCTestStructRefForwardTyping.test_same_type_assignment.<locals>.check‘  s@   € å   tÑ,Ô,ˆDÝ" 4¨Ñ.Ô.ˆFØˆDŒJØ ˆDŒKØˆFŒLØ”;Ô$Ð$r   r}   ©r   rp   r«   s        r   Útest_same_type_assignmentz4TestStructRefForwardTyping.test_same_type_assignment�  sP   € Ý	ð	%ð 	%ñ 
Œð	%ð ˆØˆe�A‰hŒhˆØˆØ×Ò  VÑ,Ô,Ð,Ð,Ð,r   c                 ór   — t           d„ ¦   «         }d} ||¦  «        }| }|                      ||¦  «         d S )Nc                 óÞ   — t          d d ¦  «        }t          d d ¦  «        }| |_        ||_        | |_        |                     ¦   «          |j                             ¦   «          |j        j        S r    )rí   rå   ræ   rö   r  s      r   r¨   z>TestStructRefForwardTyping.test_overload_method.<locals>.check   sa   € å   tÑ,Ô,ˆDÝ" 4¨Ñ.Ô.ˆFØˆDŒJØ ˆDŒKØˆFŒLØ�IŠI‰KŒKˆKØŒK×ÒÑÔÐØ”;Ô$Ð$r   r—   r  r«   s        r   r®   z/TestStructRefForwardTyping.test_overload_methodŸ  sR   € Ý	ð	%ð 	%ñ 
Œð	%ð ˆØˆe�A‰hŒhˆØ�ˆØ×Ò  VÑ,Ô,Ð,Ð,Ð,r   c                 ój   — t           d„ ¦   «         } |¦   «         }d}|                      ||¦  «         d S )Nc                  ó<   — t          dd ¦  «        } | j        d         S )Né   r   )rí   r5   )r§   s    r   r¨   zATestStructRefForwardTyping.test_overload_attribute.<locals>.check±  s   € å  4Ñ(Ô(ˆCØ”8˜A”;Ðr   r
  r  r±   s       r   r²   z2TestStructRefForwardTyping.test_overload_attribute°  sI   € Ý	ð	ð 	ñ 
Œð	ð ˆe‰gŒgˆØˆØ×Ò  VÑ,Ô,Ð,Ð,Ð,r   N)r   r   r   r  r®   r²   r   r   r   rþ   rþ   �  sA   € € € € € ð-ð -ð -ð-ð -ð -ð"-ð -ð -ð -ð -r   rþ   )7r   rÅ   Únumpyrl   Únumbar   r   r   r   Ú
numba.corer   Únumba.experimentalr   Únumba.extendingr	   r
   Únumba.tests.supportr   r   r   r   rd   rZ   r   rn   r?   re   r"   r   r<   Údefine_proxyrB   r@   rH   rL   r&   r*   r-   r7   rT   r�   r¢   r¤   rµ   r¸   rº   rã   ÚAnyÚpolygon_struct_typerí   rð   rò   rù   rü   rþ   r   r   r   ú<module>r     s8  ððð ð €€€à Ð Ð Ð à -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø Ð Ð Ð Ð Ð Ø (Ð (Ð (Ð (Ð (Ð (Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?ðð ð ð ð ð ð ð ð ð ð ð ð
 Ôð	ð 	ð 	ð 	ð 	˜%œ/ñ 	ô 	ñ Ôð	ð #Ð"Ø�u”z ! ! !”}Ð%¨	°5´:Ð'>Ð?ðñ ô €ð €	Ô Ð+¨YÔ-EÑ FÔ FÐ Fð$ð $ð $ð $ð $ˆyÔ'ñ $ô $ð $ðB Ôð	ð 	ð 	ð 	ð 	�5”?ñ 	ô 	ñ Ôð	ð €	Ô ØØØˆyÐñô ð ð ðð ñ „ðð ðð ñ „ðð
 ðð ñ „ðð ð,ð ,ñ „ð,ð ðð ñ „ðð ðð ñ „ðð ðð ñ „ðð ð"ð "ñ „ð"ðm&ð m&ð m&ð m&ð m&˜¨(ñ m&ô m&ð m&ð` €�˜xÑ(Ô(ðð ñ )Ô(ðð Ð�L &Ñ)Ô)ðð ñ *Ô)ðð-ð -ð -ð -ð -˜_¨hñ -ô -ð -ð6ð ð ð
ð ð ð(ð (ð (ð (ð (˜?¨Hñ (ô (ð (ðV Ôð
ð 
ð 
ð 
ð 
˜œñ 
ô 
ñ Ôð
ð (Ð'ØˆeŒiÐØˆuŒyÐð0ð ñ ô Ð ð
.ð 
.ð 
.ð 
.ð 
.�IÔ,ñ 
.ô 
.ð 
.ð ðð ñ „ðð ðð ñ „ðð €	Ô ØØØˆhÐñô ð ð €Ð" FÑ+Ô+ðð ñ ,Ô+ðð ÐÐ% vÑ.Ô.ðð ñ /Ô.ðð)-ð )-ð )-ð )-ð )- °(ñ )-ô )-ð )-ð )-ð )-r   