
    "
3j                         S r SSKrSSKrSSKJrJr  SSKJr  SSK	J
r
  SSKJr  S rS rS	 rS
 rS r " S S\5      r " S S\5      r\S:X  a  \R*                  " 5         gg)z!
Testing object mode specifics.

    N)jittypes)utils)	PYVERSION)TestCasec                     U S-   nUS-   $ )N   y              @ )ntmps     V/home/wildlama/miniconda3/lib/python3.13/site-packages/numba/tests/test_object_mode.pycomplex_constantr      s    
a%C8O    c                     U S-   $ )Nl         4LEh*r-P3OF r
   r   s    r   long_constantr      s    ???r   c                     U S S 2	 g Nr
   xs    r   delitem_usecaser      s	    	!r   c                     Sn[        U 5       H0  n[        U5       H  n[        X-   5       H
  nX#U-  -  nM     M      M2     U$ Nr   )range)r   yr   ijks         r   loop_nest_3r      sE    	A1XqA15\U
 "  
 Hr   c                     U $ r   r
   r   s    r   array_of_objectr!   &   s    Hr   c                   D    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
rg)TestObjectMode*   c                 l    [         n[        SSS9" U5      nU R                  U" S5      U" S5      5        g Nr
   Tforceobj   )r   r   assertPreciseEqualselfpyfunccfuncs      r   test_complex_constant$TestObjectMode.test_complex_constant,   s0    !B&v.r
E"I6r   c                 l    [         n[        SSS9" U5      nU R                  U" S5      U" S5      5        g r&   )r   r   r*   r+   s      r   test_long_constant!TestObjectMode.test_long_constant1   s0    B&v.r
E"I6r   c                    ^^ [         m[        SSS9" T5      mU R                  T" SS5      T" SS5      5        U4S jnU4S jn[        R                  " U5        [        R                  " U5        g)zU
Test bug that decref the iterator early.
If the bug occurs, a segfault should occur
r
   Tr'      c                     > T " SS5        g Nr5   r
   )r-   s   r   	bm_pyfunc0TestObjectMode.test_loop_nest.<locals>.bm_pyfunc?   s    1aLr   c                     > T " SS5        g r7   r
   )r.   s   r   bm_cfunc/TestObjectMode.test_loop_nest.<locals>.bm_cfuncB   s    !QKr   N)r   r   assertEqualr   	benchmark)r,   r8   r;   r.   r-   s      @@r   test_loop_nestTestObjectMode.test_loop_nest6   s[    
 B&v.1uQ{3		 		"!r   c                     [        SS9" [        5      n[        R                  " [	        5       /S-  5      nU R                  U" U5      U5        g )NTr'   
   )r   r!   nparrayobjectassertIs)r,   r.   objarrs      r   test_array_of_object#TestObjectMode.test_array_of_objectH   s9    T"?368*r/*eFmV,r   c                    [        SS9S 5       nU R                  U" SSS/5      5        U R                  U" SSS/5      5        U R                  U" SSS/5      5        U R                  [        5       nU" SS5        SSS5        [
        S;   a  S	nO[
        S
;   a  SnO[        [
        5      eU R                  U[        WR                  5      5        g! , (       d  f       N]= f)z&
Test handling of the `in` comparison
Tr'   c                 
    X;   $ r   r
   )r   r   s     r   foo2TestObjectMode.test_sequence_contains.<locals>.fooQ   s	    6Mr      r      N))      zis not a container or iterable))rP   rB   )rP      )rP   r)   )rP      zis not iterable)
r   
assertTrueassertFalseassertRaises	TypeErrorr   NotImplementedErrorassertInstr	exception)r,   rL   raisesexpected_snippets       r   test_sequence_contains%TestObjectMode.test_sequence_containsM   s     
d		 
	 	A1v'A1v'QA(y)VdO *
 #?>>0%i00&F,<,<(=> *)s   3
C
C"c                     [         n[        SSS9" U5      n/ SQnU" U5        U R                  U/ 5        U R                  [        5         U" S5        S S S 5        g ! , (       d  f       g = f)Nr
   Tr'   )rP   r	   r5   r$   )r   r   r*   rV   rW   )r,   r-   r.   ls       r   test_delitemTestObjectMode.test_delitemg   sU     B&v.a2&y)"I *))s   
	A
A*c                    ^ S m[        SS9U4S j5       nSnU" U5      nUR                  U5      nU R                  U[        U5      5        U R                  X45        g )Nc                      U $ r   r
   r   s    r   consumer8TestObjectMode.test_starargs_non_tuple.<locals>.consumerr       Hr   Tr'   c                    > T" U 6 $ r   r
   )r   rf   s    r   rL   3TestObjectMode.test_starargs_non_tuple.<locals>.foou   s    Q<r   ijo)r   py_funcr=   tuple)r,   rL   arggotexpectrf   s        @r   test_starargs_non_tuple&TestObjectMode.test_starargs_non_tupleq   sa    	 
d		  
	  #hS!eCj)%r   c                 l    [        SS9S 5       nU R                  U" 5       UR                  5       5        g )NTr'   c                  0    S V s/ s H  o PM     sn $ s  sn f )N)rN   rO   r
   r   s    r   rL   +TestObjectMode.test_expr_undef.<locals>.foo   s      &&v!Av&&&s   )r   r=   rl   )r,   rL   s     r   test_expr_undefTestObjectMode.test_expr_undef   s3    	d		' 
	' 	.r   r
   N)__name__
__module____qualname____firstlineno__r/   r2   r?   rH   r^   rb   rq   rv   __static_attributes__r
   r   r   r#   r#   *   s*    7
7
"$-
?4&/r   r#   c                   6    \ rS rSrSrS rS rS rS rS r	Sr
g	)
TestObjectModeInvalidRewrite   zE
Tests to ensure that rewrite passes didn't affect objmode lowering.
c                 r    U R                  UR                  5        U R                  UR                  5        U$ r   )rT   
signaturesrU   nopython_signatures)r,   disps     r   _ensure_objmode,TestObjectModeInvalidRewrite._ensure_objmode   s+    (112r   c                    ^ S mU4S jn[        SS9" U5      nU R                  U" S5      U" S5      5        U R                  U5        g)zW
Test code based on user submitted issue at
https://github.com/numba/numba/issues/2159
c                     U $ r   r
   r   s    r   test0QTestObjectModeInvalidRewrite.test_static_raise_in_objmode_fallback.<locals>.test0   rh   r   c                 4   > U S:X  a
  [        5       eT" U 5      $ r   )
ValueError)r   r   s    r   test1QTestObjectModeInvalidRewrite.test_static_raise_in_objmode_fallback.<locals>.test1   s    Av !l"8Or   Tr'   rB   N)r   r=   r   )r,   r   compiledr   s      @r   %test_static_raise_in_objmode_fallbackBTestObjectModeInvalidRewrite.test_static_raise_in_objmode_fallback   sD    
		 %e,rHRL1X&r   c                    ^ S mU4S jn[        SS9" U5      n[        R                  " S/5      [        R                  " S/5      4nU R                  U" U6 U" U6 5        U R	                  U5        g)zW
Test code based on user submitted issue at
https://github.com/numba/numba/issues/2169
c                     U $ r   r
   r   s    r   r   STestObjectModeInvalidRewrite.test_static_setitem_in_objmode_fallback.<locals>.test0   rh   r   c                    > [         R                  " U 5      n SUS'   T" U R                  5       UR                  5       -   5      $ )NrN   r   )rC   asarraysum)a1a2r   s     r   testRTestObjectModeInvalidRewrite.test_static_setitem_in_objmode_fallback.<locals>.test   s7    BB BqEBFFH,--r   Tr'   rP   r	   N)r   rC   rD   r=   r   )r,   r   r   argsr   s       @r   'test_static_setitem_in_objmode_fallbackDTestObjectModeInvalidRewrite.test_static_setitem_in_objmode_fallback   sb    		. %d+xx}bhhsm+tho6X&r   c                 t    SnUS-  n0 nS[         0n[        XU5        US   n[        SS9" U5      nU" 5         g)z7
Test issue https://github.com/numba/numba/issues/3355
zdef func():
z    np.array([1,2,3])
rC   funcTr'   N)rC   execr   )r,   	func_textloc_varscustom_globalsr   jitteds         r   test_dynamic_func_objmode6TestObjectModeInvalidRewrite.test_dynamic_func_objmode   sJ     $	..	Y1d#D)r   c                 >   [        SS9S 5       nU" 5         U R                  U5        UR                  UR                  S      R                  S   nU R                  UR                  5        U R                  UR                  [        R                  " S5      4/5        g )NTr'   c                  D    S H  n S Vs/ s H  nSPM       nM     g s  snf )Nr
   r   r   r
   )_r   s     r   fFTestObjectModeInvalidRewrite.test_issue_9725_label_renaming.<locals>.f   s!    #$GqG$ $s   r   r
   )
r   r   	overloadsr   liftedrU   r   r=   r   Tuple)r,   r   r   s      r   test_issue_9725_label_renaming;TestObjectModeInvalidRewrite.test_issue_9725_label_renaming   s     
d		% 
	% 	
QQ\\!_-44Q7334**ekk"o-?,@Ar   r
   N)rx   ry   rz   r{   __doc__r   r   r   r   r   r|   r
   r   r   r~   r~      s!    
'&'*Br   r~   __main__)r   numpyrC   unittestnumbar   r   
numba.corer   numba.core.utilsr   numba.tests.supportr   r   r   r   r   r!   r#   r~   rx   mainr
   r   r   <module>r      sp   
     & (
@[/X [/|JB8 JBZ zMMO r   