
    J/Ph                         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 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                     dS dS )z!
Testing object mode specifics.

    N)jittypes)utils)TestCasec                     | dz   }|dz   S )N   y              @ )ntmps     \/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/tests/test_object_mode.pycomplex_constantr      s    
a%C8O    c                     | dz   S )Nl         4LEh*r-P3OF r	   r
   s    r   long_constantr      s    ???r   c                     | d d = d S Nr	   xs    r   delitem_usecaser      s    	!!!r   c                     d}t          |           D ]1}t          |          D ]}t          | |z             D ]
}|||z  z  } 2|S Nr   )range)r   yr
   ijks         r   loop_nest_3r      sj    	A1XX  q 	 	A1q5\\  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
d	S )
TestObjectModec                     t           } t          dd          |          }|                      |d           |d                     d S Nr	   Tforceobj   )r   r   assertPreciseEqualselfpyfunccfuncs      r   test_complex_constantz$TestObjectMode.test_complex_constant+   sO    !&B&&&v..r

EE"II66666r   c                     t           } t          dd          |          }|                      |d           |d                     d S r$   )r   r   r(   r)   s      r   test_long_constantz!TestObjectMode.test_long_constant0   sO    &B&&&v..r

EE"II66666r   c                    t            t          dd                    |                      dd           dd                     fd}fd}t          j        |           t          j        |           dS )zm
        Test bug that decref the iterator early.
        If the bug occurs, a segfault should occur
        r	   Tr%      c                         dd           d S Nr1   r	   )r+   s   r   	bm_pyfuncz0TestObjectMode.test_loop_nest.<locals>.bm_pyfunc>   s    F1aLLLLLr   c                         dd           d S r3   r	   )r,   s   r   bm_cfuncz/TestObjectMode.test_loop_nest.<locals>.bm_cfuncA   s    E!QKKKKKr   N)r   r   assertEqualr   	benchmark)r*   r4   r6   r,   r+   s      @@r   test_loop_nestzTestObjectMode.test_loop_nest5   s    
 &B&&&v..1uuQ{{333	 	 	 	 		 	 	 	 	 		"""!!!!!r   c                      t          d          t                    }t          j        t	                      gdz            }|                      ||          |           d S )NTr%   
   )r   r    nparrayobjectassertIs)r*   r,   objarrs      r   test_array_of_objectz#TestObjectMode.test_array_of_objectG   sW    "T"""?33688*r/**eeFmmV,,,,,r   c                    t          d          d             }|                      |dddg                     |                      |dddg                     |                      |dddg                     |                     t                    5 } |dd           ddd           n# 1 swxY w Y   |                     dt          |j                             dS )	z6
        Test handling of the `in` comparison
        Tr%   c                 
    | |v S r   r	   )r   r   s     r   fooz2TestObjectMode.test_sequence_contains.<locals>.fooP   s    6Mr      r      Nzis not iterable)r   
assertTrueassertFalseassertRaises	TypeErrorassertInstr	exception)r*   rD   raisess      r   test_sequence_containsz%TestObjectMode.test_sequence_containsL   s*    
d				 	 
		 	A1v'''A1v'''QA(((y)) 	VCdOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	'V-=)>)>?????s   B00B47B4c                    t           } t          dd          |          }g d} ||           |                     |g            |                     t                    5   |d           d d d            d S # 1 swxY w Y   d S )Nr	   Tr%   )   r   r1   *   )r   r   r(   rI   rJ   )r*   r+   r,   ls       r   test_delitemzTestObjectMode.test_delitem]   s     &B&&&v..IIa2&&&y)) 	 	E"III	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   !A::A>A>c                     d t          d          fd            }d} ||          }|                    |          }|                     |t          |                     |                     ||           d S )Nc                      | S r   r	   r   s    r   consumerz8TestObjectMode.test_starargs_non_tuple.<locals>.consumerh       Hr   Tr%   c                      |  S r   r	   )r   rW   s    r   rD   z3TestObjectMode.test_starargs_non_tuple.<locals>.fook   s    8Q<r   ijo)r   py_funcr7   tuple)r*   rD   arggotexpectrW   s        @r   test_starargs_non_tuplez&TestObjectMode.test_starargs_non_tupleg   s    	 	 	 
d				  	  	  	  
		  c#hhS!!eCjj)))f%%%%%r   c                     t          d          d             }|                      |            |                                           d S )NTr%   c                      d dD             S )Nc                     g | ]}|S r	   r	   ).0r   s     r   
<listcomp>z?TestObjectMode.test_expr_undef.<locals>.foo.<locals>.<listcomp>y   s    &&&!A&&&r   )rE   rF   r	   r	   r   r   rD   z+TestObjectMode.test_expr_undef.<locals>.foov   s     '&v&&&&r   )r   r7   r[   )r*   rD   s     r   test_expr_undefzTestObjectMode.test_expr_undefu   sS    	d				' 	' 
		' 	.....r   N)__name__
__module____qualname__r-   r/   r9   rA   rO   rT   r`   rf   r	   r   r   r"   r"   )   s        7 7 7
7 7 7
" " "$- - -
@ @ @"  & & &/ / / / /r   r"   c                   0    e Zd ZdZd Zd Zd Zd Zd ZdS )TestObjectModeInvalidRewritezM
    Tests to ensure that rewrite passes didn't affect objmode lowering.
    c                 n    |                      |j                   |                     |j                   |S r   )rG   
signaturesrH   nopython_signatures)r*   disps     r   _ensure_objmodez,TestObjectModeInvalidRewrite._ensure_objmode   s2    (((1222r   c                     d fd} t          d          |          }|                      |d           |d                     |                     |           dS )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   rX   r   c                 B    | dk    rt                       |           S r   )
ValueError)r
   rs   s    r   test1zQTestObjectModeInvalidRewrite.test_static_raise_in_objmode_fallback.<locals>.test1   s%    Avv !ll"588Or   Tr%   r;   N)r   r7   rp   )r*   rv   compiledrs   s      @r   %test_static_raise_in_objmode_fallbackzBTestObjectModeInvalidRewrite.test_static_raise_in_objmode_fallback   s    
	 	 		 	 	 	 	 &3%%%e,,rHHRLL111X&&&&&r   c                     d fd} t          d          |          }t          j        dg          t          j        dg          f}|                      ||  ||            |                     |           dS )zo
        Test code based on user submitted issue at
        https://github.com/numba/numba/issues/2169
        c                     | S r   r	   r   s    r   rs   zSTestObjectModeInvalidRewrite.test_static_setitem_in_objmode_fallback.<locals>.test0   rX   r   c                     t          j        |           } d|d<    |                                 |                                z             S )NrE   r   )r<   asarraysum)a1a2rs   s     r   testzRTestObjectModeInvalidRewrite.test_static_setitem_in_objmode_fallback.<locals>.test   s@    BB BqE5BFFHH,---r   Tr%   rQ   r   N)r   r<   r=   r7   rp   )r*   r   rw   argsrs   s       @r   'test_static_setitem_in_objmode_fallbackzDTestObjectModeInvalidRewrite.test_static_setitem_in_objmode_fallback   s    	 	 		. 	. 	. 	. 	. &3%%%d++x}}bhsmm+thho666X&&&&&r   c                     d}|dz  }i }dt           i}t          |||           |d         } t          d          |          } |             dS )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   sg     $	..	Y111#d###D))r   c                 N   t          d          d             } |             |                     |           |j        |j        d                  j        d         }|                     |j                   |                     |j        t          j	        d          fg           d S )NTr%   c                  (    dD ]} d dD              d S )Nr	   c                     g | ]}d S )r   r	   )rd   r   s     r   re   zZTestObjectModeInvalidRewrite.test_issue_9725_label_renaming.<locals>.f.<locals>.<listcomp>   s    $$$q$$$r   r   r	   )_s    r   fzFTestObjectModeInvalidRewrite.test_issue_9725_label_renaming.<locals>.f   s2     % %$$G$$$$$% %r   r   r	   )
r   rp   	overloadsrm   liftedrH   rn   r7   r   Tuple)r*   r   r   s      r   test_issue_9725_label_renamingz;TestObjectModeInvalidRewrite.test_issue_9725_label_renaming   s     
d				% 	% 
		% 	
QQ\!_-4Q73444*ek"oo-?,@AAAAAr   N)	rg   rh   ri   __doc__rp   rx   r   r   r   r	   r   r   rk   rk   ~   sn           
' ' '&' ' '*  B B B B Br   rk   __main__)r   numpyr<   unittestnumbar   r   
numba.corer   numba.tests.supportr   r   r   r   r   r    r"   rk   rg   mainr	   r   r   <module>r      sD   
                    ( ( ( ( ( (  
@ @ @      R/ R/ R/ R/ R/X R/ R/ R/jJB JB JB JB JB8 JB JB JBZ zHMOOOOO r   