§
    ƒÛgŠ  ã                   óš  — d dl Zd dlmZ d dlZd dlmZmZ d dlm	Z	m
Z
 d dlmZmZmZ d dlmZ  e¦   «         Zde_         e¦   «         Zde_         e¦   «         Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z ej        dej         fdej!        fg¦  «        Z" G d„ dee¦  «        Z# G d„ dee¦  «        Z$e%dk    r ej&        ¦   «          dS dS )é    N)Únjit)Úcompile_isolatedÚFlags)ÚtypesÚerrors)ÚTestCaseÚMemoryLeakMixinÚtag)Únumpy_supportTc                  ó   — d} dD ]}| |z  } Œ| S )Nr   )é   é   éc   é   © ©ÚresÚis     úP/granary/edev/quantum/lib/python3.11/site-packages/numba/tests/test_iteration.pyÚint_tuple_iter_usecaser      s&   € Ø
€CØð ð ˆØˆq‰ˆˆØ€Jó    c                  ó   — d} dD ]}| |z  } Œ| S )Nç        )ç      ø?ç       @ç33333ÓX@ç333333@r   r   s     r   Úfloat_tuple_iter_usecaser      s&   € Ø
€CØ"ð ð ˆØˆq‰ˆˆØ€Jr   c                  ó2   — d} dD ]}|D ]}| |z  } Œ| dz  } Œ| S ©Nr   ))r   r   )r   r   )gÍÌÌÌÌÌü?g      @r   r   )r   r   Újs      r   Útuple_tuple_iter_usecaser"      s@   € à
€CØ2ð ð ˆØð 	ð 	ˆAØ�1‰HˆCˆCØ�A‰gˆˆØ€Jr   c                  óX   — d} t          d¦  «        D ]\  }}|D ]
}| ||z  z  } Œ| dz  } Œ| S r    ©Ú	enumerate)r   r   r!   Úls       r   Úenumerate_nested_tuple_usecaser'   (   sQ   € Ø
€CÝÐ?Ñ@Ô@ð ð ‰ˆˆ1Øð 	ð 	ˆAØ�1�q‘5‰LˆCˆCØ�A‰gˆˆØ€Jr   c                  ó~   — d} t          t          d¦  «        ¦  «        D ]\  }\  }}|D ]}| ||z  |z  z  } Œ| dz  } Œ| S r    r$   )r   r   r!   Úkr&   s        r   Únested_enumerate_usecaser*   0   sb   € Ø
€CÝ�yÐ)NÑOÔOÑPÔPð ð ‰	ˆ‰6ˆAˆqØð 	ð 	ˆAØ�1�q‘5˜1‘9ÑˆCˆCØ�A‰gˆˆØ€Jr   c                  ó²   — d} t          j        d¦  «        t          j        d¦  «        f}t          |¦  «        D ]\  }}| |                     ¦   «         z  } Œ| S )Nr   é   é   )ÚnpÚonesr%   Úsum)r   Úarraysr   Úvs       r   Úenumerate_array_usecaser3   9   sT   € Ø
€CÝŒg�a‰jŒj�"œ' !™*œ*Ð%€FÝ˜&Ñ!Ô!ð ð ‰ˆˆ1Øˆq�uŠu‰wŒw‰ˆˆØ€Jr   c                 ó   — d}| D ]}||z  }Œ|S ©Nr   r   ©Úiterabler   Úxs      r   Úscalar_iter_usecaser9   A   s&   € Ø
€CØð ð ˆØˆq‰ˆˆØ€Jr   c                 ó8   — d}| D ]}||j         |j        z  z  }Œ|S r5   ©ÚaÚbr6   s      r   Úrecord_iter_usecaser>   G   s/   € Ø
€CØð ð ˆØˆqŒs�Q”S‰yÑˆˆØ€Jr   c                 ó8   — | D ]}|j         |j        z   |_         Œd S ©Nr;   )r7   r8   s     r   Úrecord_iter_mutate_usecaserA   M   s,   € Øð ð ˆØŒc�A”C‰iˆŒˆðð r   r<   r=   c                   óÂ   — e Zd Zd„ Zefd„Zd„ Zefd„Zd„ Zefd„Z	d„ Z
efd„Zd	„ Zefd
„Zd„ Zd„ Zd„ Zefd„Zd„ Zefd„Zd„ Zefd„Zd„ Zefd„Zd„ Zd„ Zd„ Zd„ ZdS )ÚIterationTestc                 óˆ   — t          |d|¬¦  «        }|j        } |¦   «         }|                       |¦   «         |¦  «         d S )Nr   ©Úflags)r   Úentry_pointÚassertPreciseEqual)ÚselfÚpyfuncrF   ÚcrÚcfuncÚexpecteds         r   Úrun_nullary_funczIterationTest.run_nullary_funcY   sJ   € Ý˜f b°Ð6Ñ6Ô6ˆØ”ˆØ�6‘8”8ˆØ×Ò  ¡¤¨Ñ2Ô2Ð2Ð2Ð2r   c                 ó<   — |                       t          |¦  «         d S r@   )rN   r   ©rI   rF   s     r   Útest_int_tuple_iterz!IterationTest.test_int_tuple_iter_   s   € Ø×ÒÕ4°eÑ<Ô<Ð<Ð<Ð<r   c                 ó<   — |                       t          ¬¦  «         d S ©NrE   )rQ   Úno_pyobj_flags©rI   s    r   Útest_int_tuple_iter_npmz%IterationTest.test_int_tuple_iter_npmb   s   € Ø× Ò ¥~Ð Ñ6Ô6Ð6Ð6Ð6r   c                 ó<   — |                       t          |¦  «         d S r@   )rN   r   rP   s     r   Útest_float_tuple_iterz#IterationTest.test_float_tuple_iterh   ó   € Ø×ÒÕ6¸Ñ>Ô>Ð>Ð>Ð>r   c                 ó<   — |                       t          ¬¦  «         d S rS   )rX   rT   rU   s    r   Útest_float_tuple_iter_npmz'IterationTest.test_float_tuple_iter_npmk   ó   € Ø×"Ò"­Ð"Ñ8Ô8Ð8Ð8Ð8r   c                 ó<   — |                       t          |¦  «         d S r@   )rN   r"   rP   s     r   Útest_tuple_tuple_iterz#IterationTest.test_tuple_tuple_itern   rY   r   c                 ó<   — |                       t          ¬¦  «         d S rS   )r^   rT   rU   s    r   Útest_tuple_tuple_iter_npmz'IterationTest.test_tuple_tuple_iter_npmq   r\   r   c                 ó<   — |                       t          |¦  «         d S r@   )rN   r'   rP   s     r   Útest_enumerate_nested_tuplez)IterationTest.test_enumerate_nested_tuplet   s   € Ø×ÒÕ<¸eÑDÔDÐDÐDÐDr   c                 ó<   — |                       t          ¬¦  «         d S rS   )rb   rT   rU   s    r   Útest_enumerate_nested_tuple_npmz-IterationTest.test_enumerate_nested_tuple_npmw   s   € Ø×(Ò(­~Ð(Ñ>Ô>Ð>Ð>Ð>r   c                 ó<   — |                       t          |¦  «         d S r@   )rN   r*   rP   s     r   Útest_nested_enumeratez#IterationTest.test_nested_enumeratez   rY   r   c                 ó<   — |                       t          ¬¦  «         d S rS   )rf   rT   rU   s    r   Útest_nested_enumerate_npmz'IterationTest.test_nested_enumerate_npm}   r\   r   c                 ó’   — t           }t          |d¦  «        }|j        } |¦   «         }|                       |¦   «         |¦  «         d S )Nr   )r3   r   rG   rH   )rI   rJ   rK   rL   rM   s        r   Útest_enumerate_refctz"IterationTest.test_enumerate_refct€   sJ   € å(ˆÝ˜f bÑ)Ô)ˆØ”ˆØ�6‘8”8ˆØ×Ò  ¡¤¨Ñ2Ô2Ð2Ð2Ð2r   c                 óÂ   — t           }t          |t          j        |dd¦  «        f||¬¦  «        }|j        }|                       ||¦  «         ||¦  «        ¦  «         d S )Nr   ÚArE   )r9   r   r   ÚArrayrG   rH   )rI   Ú	item_typeÚargrF   rJ   rK   rL   s          r   Úrun_array_1dzIterationTest.run_array_1dˆ   sh   € å$ˆÝ˜f¥u¤{°9¸aÀÑ'EÔ'EÐ&GØ'¨uð6ñ 6ô 6ˆà”ˆØ×Ò   c¡
¤
¨F¨F°3©K¬KÑ8Ô8Ð8Ð8Ð8r   c                 ól   — |                       t          j        t          j        d¦  «        |¦  «         d S )Nç      @)rp   r   Úfloat64r.   ÚarangerP   s     r   Útest_array_1d_floatz!IterationTest.test_array_1d_float�   s*   € Ø×Ò�%œ-­¬°3©¬¸Ñ?Ô?Ð?Ð?Ð?r   c                 ó:   — |                       t          ¦  «         d S r@   )ru   rT   rU   s    r   Útest_array_1d_float_npmz%IterationTest.test_array_1d_float_npm“   s   € Ø× Ò ¥Ñ0Ô0Ð0Ð0Ð0r   c                 ór   — |                       t          j        t          j        d¦  «        dz  |¦  «         d S )Nrr   y              ð?)rp   r   Ú
complex128r.   rt   rP   s     r   Útest_array_1d_complexz#IterationTest.test_array_1d_complex–   s0   € Ø×Ò�%Ô*­B¬I°c©N¬N¸TÑ,AÀ5ÑIÔIÐIÐIÐIr   c                 ó:   — |                       t          ¦  «         d S r@   )rz   rT   rU   s    r   Útest_array_1d_complex_npmz'IterationTest.test_array_1d_complex_npm™   s   € Ø×"Ò"¥>Ñ2Ô2Ð2Ð2Ð2r   c                 óª  — t           }t          j        t          ¦  «        }t	          |t          j        |dd¦  «        f|¬¦  «        }|j        }t          j	        dt          ¬¦  «        }t          d¦  «        D ]/}t          |dz  ¦  «        ||         _        |dz   ||         _        Œ0 ||¦  «        }|                       ||¦  «        |¦  «         d S ©Nr   rl   rE   r   ©Údtyper   )r>   r   Ú
from_dtypeÚrecord_dtyper   r   rm   rG   r.   ÚrecarrayÚrangeÚfloatr<   r=   rH   )	rI   rF   rJ   rn   rK   rL   Úarrr   Úgots	            r   Útest_array_1d_recordz"IterationTest.test_array_1d_recordœ   sÊ   € Ý$ˆÝ!Ô,­\Ñ:Ô:ˆ	Ý˜f¥u¤{°9¸aÀÑ'EÔ'EÐ&GØ$)ð+ñ +ô +ˆà”ˆÝŒk˜!¥<Ð0Ñ0Ô0ˆÝ�q‘”ð 	ð 	ˆAÝ˜Q ™U‘|”|ˆC�ŒFŒHØ˜1‘uˆC�ŒFŒHˆHØˆf�S‰kŒkˆØ×Ò   c¡
¤
¨CÑ0Ô0Ð0Ð0Ð0r   c                 ó:   — |                       t          ¦  «         d S r@   )rˆ   rT   rU   s    r   Útest_array_1d_record_npmz&IterationTest.test_array_1d_record_npm©   s   € Ø×!Ò!¥.Ñ1Ô1Ð1Ð1Ð1r   c                 óþ  — t           }t          j        t          ¦  «        }t	          |t          j        |dd¦  «        f|¬¦  «        }|j        }t          j	        dt          ¬¦  «        }t          d¦  «        D ]/}t          |dz  ¦  «        ||         _        |dz   ||         _        Œ0|                     ¦   «         } ||¦  «         |                     ¦   «         }	 ||	¦  «         |                      ||	¦  «         d S r~   )rA   r   r�   r‚   r   r   rm   rG   r.   rƒ   r„   r…   r<   r=   ÚcopyrH   )
rI   rF   rJ   rn   rK   rL   r†   r   rM   r‡   s
             r   Útest_array_1d_record_mutate_npmz-IterationTest.test_array_1d_record_mutate_npm¬   sì   € Ý+ˆÝ!Ô,­\Ñ:Ô:ˆ	Ý˜f¥u¤{°9¸aÀÑ'EÔ'EÐ&GØ$)ð+ñ +ô +ˆà”ˆÝŒk˜!¥<Ð0Ñ0Ô0ˆÝ�q‘”ð 	ð 	ˆAÝ˜Q ™U‘|”|ˆC�ŒFŒHØ˜1‘uˆC�ŒFŒHˆHØ—8’8‘:”:ˆØˆˆxÑÔÐØ�hŠh‰jŒjˆØˆˆc‰
Œ
ˆ
Ø×Ò ¨#Ñ.Ô.Ð.Ð.Ð.r   c                 ó<   — |                       t          ¬¦  «         d S rS   )r�   Úforce_pyobj_flagsrU   s    r   Útest_array_1d_record_mutatez)IterationTest.test_array_1d_record_mutate¼   s    € Ø×,Ò,Õ3DÐ,ÑEÔEÐEÐEÐEr   c                 ó,  — d„ }|                       t          j        ¦  «        5 }t          j        t          j        dd¦  «        }t          ||f¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt          |j	        ¦  «        ¦  «         d S )Nc                 ó   — | D ]}Œd S r@   r   )r8   r   s     r   Úfooz/IterationTest.test_array_0d_raises.<locals>.fooÁ   s   € Øð ð �Øðð r   r   ÚCz	0-d array)
ÚassertRaisesr   ÚTypingErrorr   rm   Úint32r   ÚassertInÚstrÚ	exception)rI   r“   ÚraisesÚarytys       r   Útest_array_0d_raisesz"IterationTest.test_array_0d_raises¿   sÊ   € ð	ð 	ð 	ð
 ×Ò�vÔ1Ñ2Ô2ð 	,°fÝ”K¥¤¨Q°Ñ4Ô4ˆEÝ˜S 5 (Ñ+Ô+Ð+ð	,ð 	,ð 	,ñ 	,ô 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,øøøð 	,ð 	,ð 	,ð 	,ð 	�Š�k¥3 vÔ'7Ñ#8Ô#8Ñ9Ô9Ð9Ð9Ð9s   £2A!Á!A%Á(A%c                 ó$  — d„ }t          j        dt           j        ¬¦  «        x}}t          j        t          j        dd¦  «        }t          |||f¦  «        } |||¦  «        }|                     ||¦  «        }|                      ||¦  «         d S )Nc                 óX   — d}t          | |¦  «        D ]}||d         |d         z   z  }Œ|S ©Nr   r   )Úzip)r8   ÚyÚtotalÚrows       r   Úbarz4IterationTest.test_tuple_iter_issue1504.<locals>.barÎ   s;   € ØˆEÝ˜1˜a‘y”yð )ð )�Ø˜˜Qœ # a¤&™Ñ(��àˆLr   r   r   r   r”   )r.   rt   r—   r   rm   r   rG   ÚassertEqual©rI   r¥   r8   r¢   rœ   ÚcresÚexpectr‡   s           r   Útest_tuple_iter_issue1504z'IterationTest.test_tuple_iter_issue1504Ì   s–   € ð	ð 	ð 	õ ”	˜!¥2¤8Ð,Ñ,Ô,Ð,ˆˆAÝ”�EœK¨¨CÑ0Ô0ˆÝ  e¨U ^Ñ4Ô4ˆà��Q˜‘”ˆØ×Ò˜q !Ñ$Ô$ˆØ×Ò˜ Ñ%Ô%Ð%Ð%Ð%r   c                 ób  — d„ }t          j        dt           j        ¬¦  «        x}}t          j        t          j        dd¦  «        }t          |t          j                             |d¦  «        f¦  «        } |||f¦  «        }|                     ||f¦  «        }|  	                    ||¦  «         d S )Nc                 ó*   — d}| D ]}||d         z  }Œ|S )Nr   r   )Úarrsr£   r†   s      r   r¥   z4IterationTest.test_tuple_of_arrays_iter.<locals>.barß   s*   € ØˆEØð  ð  �Ø˜˜Qœ‘��àˆLr   r   r   r   r”   r   )
r.   rt   r—   r   rm   r   Ú
containersÚUniTuplerG   r¦   r§   s           r   Útest_tuple_of_arrays_iterz'IterationTest.test_tuple_of_arrays_iterÝ   s¬   € ð	ð 	ð 	õ ”	˜!¥2¤8Ð,Ñ,Ô,Ð,ˆˆAÝ”�EœK¨¨CÑ0Ô0ˆÝ ¥eÔ&6×&?Ò&?ÀÀqÑ&IÔ&IÐ%KÑLÔLˆà��a˜�V‘”ˆØ×Ò  1˜vÑ&Ô&ˆØ×Ò˜ Ñ%Ô%Ð%Ð%Ð%r   N)Ú__name__Ú
__module__Ú__qualname__rN   r�   rQ   rV   rX   r[   r^   r`   rb   rd   rf   rh   rj   rp   ru   rw   rz   r|   rˆ   rŠ   rT   r�   r�   r�   rª   r°   r   r   r   rC   rC   W   sç  € € € € € ð3ð 3ð 3ð ):ð =ð =ð =ð =ð7ð 7ð 7ð +<ð ?ð ?ð ?ð ?ð9ð 9ð 9ð +<ð ?ð ?ð ?ð ?ð9ð 9ð 9ð 1Bð Eð Eð Eð Eð?ð ?ð ?ð +<ð ?ð ?ð ?ð ?ð9ð 9ð 9ð3ð 3ð 3ð9ð 9ð 9ð ):ð @ð @ð @ð @ð1ð 1ð 1ð +<ð Jð Jð Jð Jð3ð 3ð 3ð *;ð 1ð 1ð 1ð 1ð2ð 2ð 2ð 5Cð /ð /ð /ð /ð Fð Fð Fð:ð :ð :ð&ð &ð &ð"&ð &ð &ð &ð &r   rC   c                   ó   — e Zd Zd„ ZdS )ÚTestIterationRefctc                 ó¼   — t           d„ ¦   «         }d„ t          d¦  «        D ¦   «         }|                       ||¦  «        |                     |¦  «        ¦  «         d S )Nc                 ó¤   — d}t          t          t          | ¦  «        ¦  «        | ¦  «        D ]"\  }}||dz   |                     ¦   «         z  z  }Œ#d S r    )r¡   r„   Úlenr0   )ÚsequenceÚcr<   r=   s       r   r“   z4TestIterationRefct.test_zip_with_arrays.<locals>.fooò   sT   € àˆAÝ�E¥# h¡-¤-Ñ0Ô0°(Ñ;Ô;ð 'ð '‘��1Ø�a˜!‘e˜qŸušu™wœwÑ&Ñ&��ØˆFr   c                 ó<   — g | ]}t          j        d |z   ¦  «        ‘ŒS )r   )r.   rt   )Ú.0r   s     r   ú
<listcomp>z;TestIterationRefct.test_zip_with_arrays.<locals>.<listcomp>ù   s&   € Ð8Ð8Ð8¨•B”I˜a !™eÑ$Ô$Ð8Ð8Ð8r   é
   )r   r„   r¦   Úpy_func)rI   r“   r¹   s      r   Útest_zip_with_arraysz'TestIterationRefct.test_zip_with_arraysñ   sf   € Ý	ð	ð 	ñ 
Œð	ð 9Ð8­e°B©i¬iÐ8Ñ8Ô8ˆØ×Ò˜˜˜X™œ¨¯ª°HÑ(=Ô(=Ñ>Ô>Ð>Ð>Ð>r   N)r±   r²   r³   rÀ   r   r   r   rµ   rµ   ð   s#   € € € € € ð	?ð 	?ð 	?ð 	?ð 	?r   rµ   Ú__main__)'Únumpyr.   Únumbar   ÚunittestÚnumba.core.compilerr   r   Ú
numba.corer   r   Únumba.tests.supportr   r	   r
   Únumba.npr   Úenable_pyobj_flagsÚenable_pyobjectr�   Úforce_pyobjectrT   r   r   r"   r'   r*   r3   r9   r>   rA   r€   rs   r—   r‚   rC   rµ   r±   Úmainr   r   r   ú<module>rÍ      sû  ðØ Ð Ð Ð à Ð Ð Ð Ð Ð Ø €€€Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ø "Ð "Ð "Ð "Ð "Ð "à�U‘W”WÐ Ø%)Ð Ô "à�E‘G”GÐ Ø#'Ð Ô  à�‘”€ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ð
 ˆrŒx˜#˜rœzÐ*Ø˜rœx˜ðñ ô €ð
U&ð U&ð U&ð U&ð U&�O Xñ U&ô U&ð U&ðr
?ð 
?ð 
?ð 
?ð 
?˜¨(ñ 
?ô 
?ð 
?ð ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   