Ë
    èÿæi¦  ã                   óÄ   — d Z ddlZddlZddlmZmZ ddlmZ ddl	m
Z
 ddlmZ d„ Zd„ Zd	„ Zd
„ Zd„ Z G d„ de«      Z G d„ de«      Zedk(  r ej*                  «        yy)z!
Testing object mode specifics.

é    N)ÚjitÚtypes)Úutils)Ú	PYVERSION)ÚTestCasec                 ó   — | dz   }|dz   S )Né   y              @© )ÚnÚtmps     úq/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/numba/tests/test_object_mode.pyÚcomplex_constantr      s   € Ø
ˆa‰%€CØ�‰8€Oó    c                 ó   — | dz   S )Nl         4LEh›*r-P´3OF r
   ©r   s    r   Úlong_constantr      s   € ØÐ?Ñ?Ð?r   c                 ó   — | d d …= y ©Nr
   ©Úxs    r   Údelitem_usecaser      s	   € Ø	Š!‰r   c                 ó€   — d}t        | «      D ]-  }t        |«      D ]  }t        | |z   «      D ]
  }|||z  z  }Œ Œ Œ/ |S ©Nr   )Úrange)r   Úyr   ÚiÚjÚks         r   Úloop_nest_3r      sI   € Ø	€AÜ�1ŽXˆÜ�q–ˆAÜ˜1˜q™5–\�Ø�Q˜‘U‘
‘ñ "ñ ð ð
 €Hr   c                 ó   — | S r   r
   r   s    r   Úarray_of_objectr!   &   s   € Ø€Hr   c                   ó<   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
y	)
ÚTestObjectModec                 ór   — t         } t        dd¬«      |«      }| j                   |d«       |d«      «       y ©Nr
   T©Úforceobjé   )r   r   ÚassertPreciseEqual©ÚselfÚpyfuncÚcfuncs      r   Útest_complex_constantz$TestObjectMode.test_complex_constant,   s2   € Ü!ˆØ&”�B Ô& vÓ.ˆØ×Ñ¡ r£
©E°"«IÕ6r   c                 ór   — t         } t        dd¬«      |«      }| j                   |d«       |d«      «       y r%   )r   r   r)   r*   s      r   Útest_long_constantz!TestObjectMode.test_long_constant1   s2   € ÜˆØ&”�B Ô& vÓ.ˆØ×Ñ¡ r£
©E°"«IÕ6r   c                 óâ   ‡‡— t         Š t        dd¬«      ‰«      Š| j                   ‰dd«       ‰dd«      «       ˆfd„}ˆfd„}t        j                  |«       t        j                  |«       y)zm
        Test bug that decref the iterator early.
        If the bug occurs, a segfault should occur
        r
   Tr&   é   c                  ó   •—  ‰ dd«       y ©Nr2   r
   )r,   s   €r   Ú	bm_pyfuncz0TestObjectMode.test_loop_nest.<locals>.bm_pyfunc?   s   ø€ Ù�1�a�Lr   c                  ó   •—  ‰ dd«       y r4   r
   )r-   s   €r   Úbm_cfuncz/TestObjectMode.test_loop_nest.<locals>.bm_cfuncB   s   ø€ Ù�!�Q�Kr   N)r   r   ÚassertEqualr   Ú	benchmark)r+   r5   r7   r-   r,   s      @@r   Útest_loop_nestzTestObjectMode.test_loop_nest6   s]   ù€ ô
 ˆØ&”�B Ô& vÓ.ˆØ×Ñ™  1›¡u¨Q°£{Ô3ô	ô	ô 	�‰˜	Ô"Ü�‰˜Õ!r   c                 ó¢   —  t        d¬«      t        «      }t        j                  t	        «       gdz  «      }| j                   ||«      |«       y )NTr&   é
   )r   r!   ÚnpÚarrayÚobjectÚassertIs)r+   r-   Úobjarrs      r   Útest_array_of_objectz#TestObjectMode.test_array_of_objectH   s;   € Ø"”˜TÔ"¤?Ó3ˆÜ—‘œ6›8˜* r™/Ó*ˆØ�‰‘e˜F“m VÕ,r   c                 ó¾  — t        d¬«      d„ «       }| j                   |dddg«      «       | j                   |dddg«      «       | j                   |dddg«      «       | j                  t        «      5 } |dd«       ddd«       t
        dv rd	}nt
        d
v rd}nt        t
        «      ‚| j                  |t        j                  «      «       y# 1 sw Y   ŒTxY w)z6
        Test handling of the `in` comparison
        Tr&   c                 ó
   — | |v S r   r
   )r   r   s     r   Úfooz2TestObjectMode.test_sequence_contains.<locals>.fooQ   s   € à˜�6ˆMr   é   r   é   N))é   é   zis not a container or iterable))rH   r<   )rH   é   )rH   r(   )rH   é   zis not iterable)
r   Ú
assertTrueÚassertFalseÚassertRaisesÚ	TypeErrorr   ÚNotImplementedErrorÚassertInÚstrÚ	exception)r+   rE   ÚraisesÚexpected_snippets       r   Útest_sequence_containsz%TestObjectMode.test_sequence_containsM   sÌ   € ô 
�dÔ	ñ	ó 
ð	ð 	�‰™˜A  1˜v›Ô'Ø�‰™˜A  1˜v›Ô'Ø×Ñ™˜Q  A ›Ô(à×ÑœyÔ)¨VÙ��dŒO÷ *ô
 ˜Ñ#Ø?ÑÜÐ>Ñ>Ø0Ñä%¤iÓ0Ð0à�‰Ð&¬¨F×,<Ñ,<Ó(=Õ>÷ *Ð)ús   Á6
CÃCc                 óÖ   — t         } t        dd¬«      |«      }g d¢} ||«       | j                  |g «       | j                  t        «      5   |d«       d d d «       y # 1 sw Y   y xY w)Nr
   Tr&   )rH   r	   r2   é*   )r   r   r)   rN   rO   )r+   r,   r-   Úls       r   Útest_delitemzTestObjectMode.test_delitemg   sW   € Ü ˆØ&”�B Ô& vÓ.ˆâˆÙˆaŒØ×Ñ  2Ô&Ø×ÑœyÕ)Ù�"ŒI÷ *×)Ñ)ús   Á	AÁA(c                 óÄ   ‡— d„ Št        d¬«      ˆfd„«       }d} ||«      }|j                  |«      }| j                  |t        |«      «       | j                  ||«       y )Nc                  ó   — | S r   r
   r   s    r   Úconsumerz8TestObjectMode.test_starargs_non_tuple.<locals>.consumerr   ó   € ØˆHr   Tr&   c                 ó   •—  ‰| Ž S r   r
   )r   r]   s    €r   rE   z3TestObjectMode.test_starargs_non_tuple.<locals>.foou   s   ø€ á˜Q�<Ðr   Úijo)r   Úpy_funcr8   Útuple)r+   rE   ÚargÚgotÚexpectr]   s        @r   Útest_starargs_non_tuplez&TestObjectMode.test_starargs_non_tupleq   sc   ø€ ò	ô 
�dÔ	ó	 ó 
ð	 ð ˆÙ�#‹hˆØ—‘˜SÓ!ˆØ×Ñ˜œe C›jÔ)Ø×Ñ˜˜fÕ%r   c                 ór   — t        d¬«      d„ «       }| j                   |«       |j                  «       «       y )NTr&   c                  ó,   — dD � cg c]  } | ‘Œ c} S c c} w )N)rF   rG   r
   r   s    r   rE   z+TestObjectMode.test_expr_undef.<locals>.foo€   s   € ñ  &Ó&™v˜!’A˜vÑ&Ð&ùÒ&s   …	)r   r8   ra   )r+   rE   s     r   Útest_expr_undefzTestObjectMode.test_expr_undef   s3   € Ü	�dÔ	ñ	'ó 
ð	'ð 	×Ñ™› §¡£Õ.r   N)Ú__name__Ú
__module__Ú__qualname__r.   r0   r:   rB   rV   rZ   rf   ri   r
   r   r   r#   r#   *   s*   „ ò7ò
7ò
"ò$-ò
?ò4ò&ó/r   r#   c                   ó.   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚTestObjectModeInvalidRewritezM
    Tests to ensure that rewrite passes didn't affect objmode lowering.
    c                 ór   — | j                  |j                  «       | j                  |j                  «       |S r   )rL   Ú
signaturesrM   Únopython_signatures)r+   Údisps     r   Ú_ensure_objmodez,TestObjectModeInvalidRewrite._ensure_objmode�   s+   € Ø�‰˜Ÿ™Ô(Ø×Ñ˜×1Ñ1Ô2Øˆr   c                 ó˜   ‡— d„ Šˆfd„} t        d¬«      |«      }| j                   |d«       |d«      «       | j                  |«       y)zo
        Test code based on user submitted issue at
        https://github.com/numba/numba/issues/2159
        c                 ó   — | S r   r
   r   s    r   Útest0zQTestObjectModeInvalidRewrite.test_static_raise_in_objmode_fallback.<locals>.test0—   r^   r   c                 ó2   •— | dk(  r
t        «       ‚ ‰| «      S r   )Ú
ValueError)r   rv   s    €r   Útest1zQTestObjectModeInvalidRewrite.test_static_raise_in_objmode_fallback.<locals>.test1š   s   ø€ Ø�AŠvô !“lÐ"Ù˜“8ˆOr   Tr&   r<   N)r   r8   rs   )r+   ry   Úcompiledrv   s      @r   Ú%test_static_raise_in_objmode_fallbackzBTestObjectModeInvalidRewrite.test_static_raise_in_objmode_fallback’   sF   ø€ ò
	ô	ð &”3 Ô% eÓ,ˆØ×Ñ™˜r›¡H¨R£LÔ1Ø×Ñ˜XÕ&r   c                 óä   ‡— d„ Šˆfd„} t        d¬«      |«      }t        j                  dg«      t        j                  dg«      f}| j                   ||Ž  ||Ž «       | j	                  |«       y)zo
        Test code based on user submitted issue at
        https://github.com/numba/numba/issues/2169
        c                 ó   — | S r   r
   r   s    r   rv   zSTestObjectModeInvalidRewrite.test_static_setitem_in_objmode_fallback.<locals>.test0«   r^   r   c                 ó†   •— t        j                  | «      } d|d<    ‰| j                  «       |j                  «       z   «      S )NrF   r   )r=   ÚasarrayÚsum)Úa1Úa2rv   s     €r   ÚtestzRTestObjectModeInvalidRewrite.test_static_setitem_in_objmode_fallback.<locals>.test®   s7   ø€ Ü—‘˜B“ˆBð ˆBˆq‰EÙ˜Ÿ™› B§F¡F£HÑ,Ó-Ð-r   Tr&   rH   r	   N)r   r=   r>   r8   rs   )r+   rƒ   rz   Úargsrv   s       @r   Ú'test_static_setitem_in_objmode_fallbackzDTestObjectModeInvalidRewrite.test_static_setitem_in_objmode_fallback¥   sd   ø€ ò	ô	.ð &”3 Ô% dÓ+ˆÜ�x‰x˜˜‹}œbŸh™h¨ s›mÐ+ˆØ×Ñ™˜t˜¡h° oÔ6Ø×Ñ˜XÕ&r   c                 ó|   — d}|dz  }i }dt         i}t        |||«       |d   } t        d¬«      |«      } |«        y)zG
        Test issue https://github.com/numba/numba/issues/3355
        zdef func():
z    np.array([1,2,3])
r=   ÚfuncTr&   N)r=   Úexecr   )r+   Ú	func_textÚloc_varsÚcustom_globalsr‡   Újitteds         r   Útest_dynamic_func_objmodez6TestObjectModeInvalidRewrite.test_dynamic_func_objmodeº   sN   € ð $ˆ	ØÐ.Ñ.ˆ	ØˆØ¤˜ˆÜˆY˜¨Ô1Ø˜ÑˆØ#”˜dÔ# DÓ)ˆÙ�r   c                 óB  — t        d¬«      d„ «       } |«        | j                  |«       |j                  |j                  d      j                  d   }| j                  |j                  «       | j                  |j                  t        j                  d«      fg«       y )NTr&   c                  ó<   — dD ]  } dD �cg c]  }d‘Œ c} Œ y c c}w )Nr
   r   r   r
   )Ú_r   s     r   ÚfzFTestObjectModeInvalidRewrite.test_issue_9725_label_renaming.<locals>.fÊ   s!   € ã�Ù#Ó$™G�q’˜GÓ$ñ ùÚ$s   Š	r   r
   )
r   rs   Ú	overloadsrp   ÚliftedrM   rq   r8   r   ÚTuple)r+   r‘   r“   s      r   Útest_issue_9725_label_renamingz;TestObjectModeInvalidRewrite.test_issue_9725_label_renamingÇ   s‰   € ô 
�dÔ	ñ	%ó 
ð	%ñ 	
ŒØ×Ñ˜QÔØ—‘˜QŸ\™\¨!™_Ñ-×4Ñ4°QÑ7ˆØ×Ñ˜×3Ñ3Ô4Ø×Ñ˜×*Ñ*¬e¯k©k¸"«oÐ-?Ð,@ÕAr   N)	rj   rk   rl   Ú__doc__rs   r{   r…   r�   r•   r
   r   r   rn   rn   ˆ   s!   „ ñòò
'ò&'ò*óBr   rn   Ú__main__)r–   Únumpyr=   ÚunittestÚnumbar   r   Ú
numba.corer   Únumba.core.utilsr   Únumba.tests.supportr   r   r   r   r   r!   r#   rn   rj   Úmainr
   r   r   Ú<module>rŸ      sr   ðñó
 ã ß Ý Ý &Ý (òò
@òòòô[/�Xô [/ô|JB 8ô JBðZ ˆzÒØ€H‡M�M…Oð r   