
    ܙdd                        d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZ	d dl
Z
d dlmZmZ d dlmZmZmZ d dlmZmZ d dlmZ d dlmZmZ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# d d
l$m%Z% d dl&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z. d dl/m0Z0 d dl1m2Z2 d dl3Z3d Z4d Z5d Z6d Z7d Z8d Z9d Z:d Z;d Z<d Z=d Z>d Z? e@            ZAd ZBe#jC        ZD G d de(          ZE G d de(          ZF G d d eF          ZG G d! d"eF          ZHd# ZId$ ZJ G d% d&e'e(          ZKd' ZLd( ZM G d) d*e'e(          ZN G d+ d,eF          ZO G d- d.e(          ZPeQd/k    r e3jR                     dS dS )0    N)find_setupwithswith_lifting)bypass_contextcall_contextobjmode_context)FunctionIdentityByteCode)Interpreter)typingerrorscpu)
cpu_target)
compile_irDEFAULT_FLAGS)njittypeofobjmodetypes)overload)
MemoryLeakTestCasecaptured_stdoutskip_unless_scipy
linux_onlystrace_supportedstraceexpected_failure_py311)	PYVERSION)jitclassc                     t          j        |           }t          |          }t          |          }|                    |          }|S )N)func_id)r   from_functionr	   r
   	interpret)funcr!   bcinterpfunc_irs        <lib/python3.11/site-packages/numba/tests/test_withlifting.pyget_func_irr)      sG    ,T22G	'	"	"	"B!!Fr""GN    c                      t          d           t          5  t          d           t                       d d d            n# 1 swxY w Y   t          d           d S )NABCprintr   b r*   r(   lift1r3   &   s    	#JJJ	  c


	               
#JJJJJs   AAAc                  j   d} t          d|            d} t          5  t          d|            | dz  } t                       d d d            n# 1 swxY w Y   | dz  } t          5  t          d|            t                       | dz  } d d d            n# 1 swxY w Y   | dz  } t          d|            d S )N   r,   r-   d   r.   
   Dr/   xs    r(   lift2r;   .   s4   	A	#qMMM	A	  c1	S	               FA	  c1		R               FA	#qMMMMMs#   $AAA#$BBBc                  j   d} d}t          d| |           t          5  t          d           t                       | dz  } t          5  t          d           |dz  }t                       d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   | dz  } |dz  }t          d| |           d S )Nr5   r6   r,   r-   r.   i r8   r/   r:   ys     r(   lift3r?   ?   s:   	AA	#q!	  c


		S 	 	#JJJKACCC	 	 	 	 	 	 	 	 	 	 	 	 	 	 		               FAFA	#q!s5   *B#A6*B6A:	:B=A:	>BBBc                     d} t          d|            | dz  } t          5  t          d           t                       | dz  } t          d          D ]C}t          5  t          d           t                       | |z  } d d d            n# 1 swxY w Y   D	 d d d            n# 1 swxY w Y   t          5  t          d           t                       | r| dz  } d d d            n# 1 swxY w Y   | dz  } t          d|            d S )	Nr   r,   r7   r-   r5   r.   r8   E)r0   r   r1   ranger:   is     r(   lift4rE   P   s   	A	#qMMMGA	  c


		Qr 	 	A  c


Q              		               
  c


	 	GA	              
 FA	#qMMMMMsG   ;B"#B	=B"	BB"BB""B&)B&4%C%%C),C)c                  $    t          d           d S )Nr,   r0   r2   r*   r(   lift5rH   f   s    	#JJJJJr*   c                      d} t          d|            t          5  | dz  } d d d            n# 1 swxY w Y   t          d|            | S )Nr5   r,   r-   r0   r   r9   s    r(   	liftcall1rK   j   s    	A	#qMMM	  	Q              	#qMMMHs   ,00c                      d} t          d|            t          5  | dz  } d d d            n# 1 swxY w Y   t          d|            t          5  | dz  } d d d            n# 1 swxY w Y   t          d|            | S )Nr5   r,   r-   r7   r.   rJ   r9   s    r(   	liftcall2rM   s   s    	A	#qMMM	  	Q              	#qMMM	  	R              	#qMMMHs   ,00A  A$'A$c                  ,   d} t          d|            t          5  | dk    r| dz  } d d d            n# 1 swxY w Y   t          d|            t          5  t          d          D ]}| |z  } 	 d d d            n# 1 swxY w Y   t          d|            | S )Nr5   r,   r   r-   r7   r.   )r0   r   rB   rC   s     r(   	liftcall3rO      s$   	A	#qMMM	  q55FA               
#qMMM	  r 	 	AFAA	               
#qMMMHs   266A99A= A=c                      t           5  t           5  	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S N)r   r2   r*   r(   	liftcall4rR      s    	   	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	                 s$   66"	6"	6::c                      t          d          D ]T} t          5  t          |            | dk    rt          d           	 d d d             n	 d d d            n# 1 swxY w Y   U| S )Nr7      r,   )rB   r   r0   )rD   s    r(   	liftcall5rU      s    2YY   	 	!HHHAvvc


		 	 	 	 	 	 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 Hs   &AA	 A	c                  H    t           5  	 d d d            d S # 1 swxY w Y   d S rQ   )undefined_global_varr2   r*   r(   lift_undefiendrX      o    	                      c                  H    t           5  	 d d d            d S # 1 swxY w Y   d S rQ   )bogus_contextmanagerr2   r*   r(   lift_invalidr]      rY   rZ   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestWithFindingc                     t          |          }t          t          |          d                   }|                     ||           d S Nr   )r)   lenr   assertEqual)selfr$   expect_countthe_ircts        r(   check_num_of_withz!TestWithFinding.check_num_of_with   sE    T""((+,,\*****r*   c                 >    |                      t          d           d S Nr5   re   )rh   r3   rd   s    r(   
test_lift1zTestWithFinding.test_lift1   !    u155555r*   c                 >    |                      t          d           d S N   rk   )rh   r;   rl   s    r(   
test_lift2zTestWithFinding.test_lift2   rn   r*   c                 >    |                      t          d           d S rj   )rh   r?   rl   s    r(   
test_lift3zTestWithFinding.test_lift3   rn   r*   c                 >    |                      t          d           d S rp   )rh   rE   rl   s    r(   
test_lift4zTestWithFinding.test_lift4   rn   r*   c                 >    |                      t          d           d S )Nr   rk   )rh   rH   rl   s    r(   
test_lift5zTestWithFinding.test_lift5   rn   r*   N)	__name__
__module____qualname__rh   rm   rr   rt   rv   rx   r2   r*   r(   r_   r_      sn        + + +
6 6 66 6 66 6 66 6 66 6 6 6 6r*   r_   c                   ,     e Zd Z fdZd ZddZ xZS )BaseTestWithLiftingc                     t          t          |                                            t          j                    | _        t          j        | j                  | _        t          | _
        d S rQ   )superr}   setUpr   Context	typingctxr   
CPUContext	targetctxr   flags)rd   	__class__s    r(   r   zBaseTestWithLifting.setUp   sM    !4((..000))77"


r*   c                    t          |          }t          || j        | j        | j        i           \  }}|                     t          |          |           |                     |          }t                      5 }|	                                 d d d            n# 1 swxY w Y   |                     |
                                |           d S Nlocals)r)   r   r   r   r   rc   rb   r   r   entry_pointgetvalue)	rd   r$   re   expected_stdoutrf   new_ir	extractedcresouts	            r(   check_extracted_withz(BaseTestWithLifting.check_extracted_with   s    T""(DNDNDJ
 
 
	 	Y666v&& 	#	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	99999s   <BB!$B!r2   Nc           
          | j         }| j        }| j        }t          j        ||          5  t          ||||||i           cd d d            S # 1 swxY w Y   d S r   )r   r   r   r   nested_contextr   )rd   rf   argsreturn_typer   r   r   s          r(   r   zBaseTestWithLifting.compile_ir   s    N	N	
&y)<< 	= 	=iFD)5= = =	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=s   AAA)r2   N)ry   rz   r{   r   r   r   __classcell__)r   s   @r(   r}   r}      s[        # # # # #: : := = = = = = = =r*   r}   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestLiftByPassc                 @    |                      t          dd           d S )Nr5   zA
C
re   r   )r   r3   rl   s    r(   rm   zTestLiftByPass.test_lift1   s0    !!%a2: 	" 	< 	< 	< 	< 	<r*   c                 @    |                      t          dd           d S )Nrq   zA 1
D 3
r   )r   r;   rl   s    r(   rr   zTestLiftByPass.test_lift2   s5    !!%a2> 	" 	@ 	@ 	@ 	@ 	@r*   c                 @    |                      t          dd           d S )Nr5   zA 1 100
D 2 101
r   )r   r?   rl   s    r(   rt   zTestLiftByPass.test_lift3   s5    !!%a2F 	" 	H 	H 	H 	H 	Hr*   c                 @    |                      t          dd           d S )Nrq   z	A 0
E 11
r   )r   rE   rl   s    r(   rv   zTestLiftByPass.test_lift4   s5    !!%a2? 	" 	A 	A 	A 	A 	Ar*   c                 @    |                      t          dd           d S )Nr   zA
r   )r   rH   rl   s    r(   rx   zTestLiftByPass.test_lift5   s0    !!%a27 	" 	9 	9 	9 	9 	9r*   N)ry   rz   r{   rm   rr   rt   rv   rx   r2   r*   r(   r   r      sh        < < <@ @ @H H HA A A9 9 9 9 9r*   r   c                   x    e Zd Zd Zd Zd Zd Zd Z ej	        e
dk    d          ed                         Zd	S )
TestLiftCallc                 X   t          |          }t                      5 } |             ddd           n# 1 swxY w Y   t                      5 } |             ddd           n# 1 swxY w Y   |                     |                                |                                           dS )z2Ensure same semantic with non-jitted code
        N)r   r   rc   r   )rd   r$   jittedgotexpects        r(   check_same_semanticz TestLiftCall.check_same_semantic   s    d 	#FHHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	  	&DFFF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	):):;;;;;s   599A%%A),A)c                 t    |                      t          dd           |                     t                     d S )Nr5   zA 1
B 2
r   )r   rK   r   rl   s    r(   test_liftcall1zTestLiftCall.test_liftcall1  sC    !!)!2> 	" 	@ 	@ 	@  +++++r*   c                 t    |                      t          dd           |                     t                     d S )Nrq   zA 1
B 2
C 12
r   )r   rM   r   rl   s    r(   test_liftcall2zTestLiftCall.test_liftcall2  C    !!)!2D 	" 	F 	F 	F  +++++r*   c                 t    |                      t          dd           |                     t                     d S )Nrq   zA 1
B 2
C 47
r   )r   rO   r   rl   s    r(   test_liftcall3zTestLiftCall.test_liftcall3  r   r*   c                 H   t           j        t           j        t           j        t           j        f}|                     |          5 } t          t                                 d d d            n# 1 swxY w Y   d}|                     |t          |j
                             d S )Nz2compiler re-entrant to the same function signature)r   TypingErrorNumbaRuntimeErrorNumbaValueErrorCompilerErrorassertRaisesr   rR   assertInstr	exception)rd   acceptraisesmsgs       r(   test_liftcall4zTestLiftCall.test_liftcall4  s    $f&>(&*>@v&& 	&DOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 Dc3v/0011111s   A--A14A1      zunsupported on py3.8 and beforec                 t    |                      t          dd           |                     t                     d S )Nr5   z0
1
2
3
4
5
A
r   )r   rU   r   rl   s    r(   test_liftcall5zTestLiftCall.test_liftcall5!  sE     	!!)!2I 	" 	K 	K 	K  +++++r*   N)ry   rz   r{   r   r   r   r   r   unittestskipIfr   r   r   r2   r*   r(   r   r      s        
< 
< 
<, , ,
, , ,
, , ,
2 2 2 X_Y&(68 8, , 8 8, , ,r*   r   c                       fd}|S )Nc                     |                      t          j                  5 } | g|R i | d d d            n# 1 swxY w Y   |                     dt	          |j                             d S )NzDoes not support list typer   r   r   r   r   r   rd   r   kwargsr   fns       r(   corez+expected_failure_for_list_arg.<locals>.core+  s    v122 	&fBt%d%%%f%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&2&*++	- 	- 	- 	- 	-   :>>r2   r   r   s   ` r(   expected_failure_for_list_argr   *  #    - - - - -
 Kr*   c                       fd}|S )Nc                     |                      t          j                  5 } | g|R i | d d d            n# 1 swxY w Y   |                     dt	          |j                             d S )NzDoes not support function typer   r   s       r(   r   z/expected_failure_for_function_arg.<locals>.core4  s    v122 	&fBt%d%%%f%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&6&*++	- 	- 	- 	- 	-r   r2   r   s   ` r(   !expected_failure_for_function_argr   3  r   r*   c                      e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
ed	             Zd
 Zed             Zd Zed             Zd Zd Zd Zd Zd Zd Zed             Zd Zd Zd Zd Zej        d             Zed             Z d Z!e"d             Z#e$d             Z%ej        d             Z&d Z'd  Z(d! Z)d" Z*d# Z+d$ Z,d% Z-d& Z.d' Z/d( Z0d) Z1d* Z2d+ Z3e4d,             Z5d- Z6d. Z7d/ Z8d0 Z9d1 Z:d2S )3TestLiftObjc                 D    t          j        dt          j                   d S Nerrorwarningssimplefilterr   NumbaWarningrl   s    r(   r   zTestLiftObj.setUp>      gv':;;;;;r*   c                 ,    t          j                     d S rQ   r   resetwarningsrl   s    r(   tearDownzTestLiftObj.tearDownA           r*   c                 2   t          j        |          }t          j        |          }t          |          }t                      5 } || }|                                }d d d            n# 1 swxY w Y   |                    t          t          t          |                               t                      5 } || }	|                                }
d d d            n# 1 swxY w Y   | 	                    ||
           | 
                    ||	           d S rQ   )copydeepcopyr   r   r   compiletuplemapr   rc   assertPreciseEqual)rd   pyfuncr   py_argsc_argscfuncstream
expect_res
expect_outgot_resgot_outs              r(   assert_equal_return_and_stdoutz*TestLiftObj.assert_equal_return_and_stdoutD  sv   -%%t$$V 	+&)J**J	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+
 	eC//00111 	(&eVnGoo''G	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	W---
G44444s$   A,,A03A0:C  C$'C$c                 z    d fd}fd}|                      |d           |                      |d           d S )Nc                 0    t          dd| dz  i           d S )Nzival =ivalrq   rG   )r   s    r(   barz0TestLiftObj.test_lift_objmode_basic.<locals>.barW  s!    (VTQY/00000r*   c                 l    | dz  } t           5   |            d d d            n# 1 swxY w Y   | dz   S Nr5   r   r   r   s    r(   fooz0TestLiftObj.test_lift_objmode_basic.<locals>.fooZ  s}    AID   D			              !8Os   &**c                 v    | dz  } t           j        5   |            d d d            n# 1 swxY w Y   | dz   S r   numbar   r   s    r(   foo_nonglobalz:TestLiftObj.test_lift_objmode_basic.<locals>.foo_nonglobal`  s    AID  D			              !8Os   +//{   r   )rd   r   r   r   s      @r(   test_lift_objmode_basicz#TestLiftObj.test_lift_objmode_basicV  sx    	1 	1 	1	 	 	 	 		 	 	 	 	 	++C555++M3?????r*   c                 H    d fd}d}|                      ||           d S )Nc                 8    t          d| dz  i           | dz  } d S )Narrrq   rG   )r  s    r(   r   z3TestLiftObj.test_lift_objmode_array_in.<locals>.barj  s&    5#(#$$$1HCCCr*   c                     t          j        |                               t           j                  }t          5   |           d d d            n# 1 swxY w Y   |dz   S r   )nparangeastypeint64r   )nelemr  r   s     r(   r   z3TestLiftObj.test_lift_objmode_array_in.<locals>.fooo  s    )E""))"(33C   C               7Ns   AAAr7   r   )rd   r   r  r   s      @r(   test_lift_objmode_array_inz&TestLiftObj.test_lift_objmode_array_ini  sN    	 	 	
	 	 	 	 	 ++C77777r*   c                 H    d fd}d}|                      ||           d S )Nc                 $    t          |            d S rQ   rG   r>   s    r(   r   z<TestLiftObj.test_lift_objmode_define_new_unused.<locals>.barz  s    !HHHHHr*   c                     t                      5  d| z   }t          j        |          } |           d d d            n# 1 swxY w Y   | S Nrq   )r   r  r  )r:   r>   ar   s      r(   r   z<TestLiftObj.test_lift_objmode_define_new_unused.<locals>.foo}  s     ""  EIaLLA               Hs   %AAAr   r   )rd   r   argr   s      @r(   #test_lift_objmode_define_new_unusedz/TestLiftObj.test_lift_objmode_define_new_unusedy  sN    	 	 		 	 	 	 	 ++C55555r*   c                 ~    d fd}fd}d}|                      ||           |                      ||           d S )Nc                 *    t          |            d| z  S r   rG   r9   s    r(   inversez<TestLiftObj.test_lift_objmode_return_simple.<locals>.inverse      !HHHq5Lr*   c                 r    t          d          5   |           }d d d            n# 1 swxY w Y   | |fS Nfloat64r  r   r:   r>   r  s     r(   r   z8TestLiftObj.test_lift_objmode_return_simple.<locals>.foo  s     9---  GAJJ              a4K   *..c                 |    t          j        d          5   |           }d d d            n# 1 swxY w Y   | |fS r  r   r  s     r(   r   zBTestLiftObj.test_lift_objmode_return_simple.<locals>.foo_nonglobal  s    +++  GAJJ              a4Ks   /33r   r   )rd   r   r   r  r  s       @r(   test_lift_objmode_return_simplez+TestLiftObj.test_lift_objmode_return_simple  s}    	 	 		 	 	 	 	
	 	 	 	 	
 ++C555++M3?????r*   c                     d fd}t          j        ddt           j                  }|                     ||           d S )Nc                 *    t          |            d| z  S r   rG   r9   s    r(   r  z;TestLiftObj.test_lift_objmode_return_array.<locals>.inverse  r  r*   c                     t          dd          5   |           }t          |d                   }d d d            n# 1 swxY w Y   | ||fS )N
float64[:]r  )r>   zr   )r   int)r:   r>   r!  r  s      r(   r   z7TestLiftObj.test_lift_objmode_return_array.<locals>.foo  s     <7;;;  GAJJ!II               a7Ns   !A  AAr5   r7   dtype)r  r  r  r   )rd   r   r  r  s      @r(   test_lift_objmode_return_arrayz*TestLiftObj.test_lift_objmode_return_array  sa    	 	 		 	 	 	 	 i2RZ000++C55555r*   c                 @    d }g d}|                      ||           d S )Nc                     t          d          5  t          |            d| d<   t          |            g d| z   }t          j        d |D                       }d d d            n# 1 swxY w Y   | |fS )Nr   r     r   r5   rq   r   c                     g | ]}d |z  S )r5   r2   ).0rD   s     r(   
<listcomp>zITestLiftObj.test_lift_objmode_using_list.<locals>.foo.<locals>.<listcomp>  s    111!A111r*   )r   r0   r  asarrayr=   s     r(   r   z5TestLiftObj.test_lift_objmode_using_list.<locals>.foo  s     <000 3 3a!aIIMJ11q111223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 a4Ks   A	A&&A*-A*r)  r   rd   r   r  s      r(   test_lift_objmode_using_listz(TestLiftObj.test_lift_objmode_using_list  s8    	 	 	 ii++C55555r*   c                 <    d }d}|                      ||           d S )Nc                    t          |           D ]} | r| dz  } t          d          5  t          |            | dz  } t          |            t          |           D ]}| |z  } t          |            	 d d d            n# 1 swxY w Y   | S )Nr5   intpr9   )rB   r   r0   rC   s     r(   r   z4TestLiftObj.test_lift_objmode_var_redef.<locals>.foo  s    1XX   Q 6***  aQaq  AFA!HHHH	               Hs   A
BBBr   r   r.  s      r(   test_lift_objmode_var_redefz'TestLiftObj.test_lift_objmode_var_redef  s4    	 	 	 ++C55555r*   c                 >    d }|                      |g dd           d S )Nc                     || d<   t                      5  t          |            d d d            n# 1 swxY w Y   t                      5  d|z  | d<   t          |            d d d            n# 1 swxY w Y   | S r  r   r0   r:   r!  s     r(   r   z=TestLiftObj.test_case01_mutate_list_ahead_of_ctx.<locals>.foo      AaD ""  a               !""  1u!a              
 H   044	A--A14A1r)     r   rd   r   s     r(   $test_case01_mutate_list_ahead_of_ctxz0TestLiftObj.test_case01_mutate_list_ahead_of_ctx  s5    	 	 	 	++CB?????r*   c                 f    d }t          j        g d          }|                     ||d           d S )Nc                     || d<   t                      5  t          |            d d d            n# 1 swxY w Y   t                      5  d|z  | d<   t          |            d d d            n# 1 swxY w Y   | S r  r6  r7  s     r(   r   z>TestLiftObj.test_case02_mutate_array_ahead_of_ctx.<locals>.foo  r8  r9  r)  r:  r  arrayr   rd   r   r:   s      r(   %test_case02_mutate_array_ahead_of_ctxz1TestLiftObj.test_case02_mutate_array_ahead_of_ctx  sD    	 	 	 HYYY++CB77777r*   c                 8    d }|                      |d           d S )Nc                     t          d          5  g d}d d d            n# 1 swxY w Y   t                      5  d|d<   d d d            n# 1 swxY w Y   |S NzList(int64)r  r)  r7   rq   r   r=   s     r(   r   z6TestLiftObj.test_case03_create_and_mutate.<locals>.foo       =111  II               ""  !              H   "&&AAAr5   r   r;  s     r(   test_case03_create_and_mutatez)TestLiftObj.test_case03_create_and_mutate  s/    	 	 	 	++C33333r*   c                 *   d }t          j        g d          }t          |          }|                     t          j                  5 } ||           d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nc                 t    t          d          5  t          |            d d d            n# 1 swxY w Y   | S )Nr   kr6  r9   s    r(   r   z=TestLiftObj.test_case04_bogus_variable_type_info.<locals>.foo  sx     <000  a              H   -11r)  z1Invalid type annotation on non-outgoing variables)	r  r@  r   r   r   r   r   r   r   rd   r   r:   cfoor   s        r(   $test_case04_bogus_variable_type_infoz0TestLiftObj.test_case04_bogus_variable_type_info  s    	 	 	 HYYYCyyv122 	fDGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	? !!	 	 	 	 	   A  A$'A$c                     d }t          j        g d          }t          |          }|                     t                    5 } ||          }d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nc                 `    t          d          5  | dz   }d d d            n# 1 swxY w Y   |S )Nr   r!  y              ?r   r7  s     r(   r   z4TestLiftObj.test_case05_bogus_type_info.<locals>.foo  sx     !<000  G              H   #''r)  zXcan't unbox array from PyObject into native value.  The object maybe of a different type)r  r@  r   r   	TypeErrorr   r   r   )rd   r   r:   rO  r   r   s         r(   test_case05_bogus_type_infoz'TestLiftObj.test_case05_bogus_type_info  s    	 	 	 HYYYCyyy)) 	V$q''C	 	 	 	 	 	 	 	 	 	 	 	 	 	 	6 !!	
 	
 	
 	
 	
   AA"Ac                     d }|                      t          j                  5 } t          |          d           d d d            n# 1 swxY w Y   d}|                     t          |j                  |           d S )Nc                     t                      5  t                      5  t          |            d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   | S rQ   r6  r9   s    r(   r   z3TestLiftObj.test_case06_double_objmode.<locals>.foo  s     !"" ! !(** ! !a! ! ! ! ! ! ! ! ! ! ! ! ! ! !! ! ! ! ! ! ! ! ! ! ! ! ! ! ! Hs.   A:A>	A>	AAAr   z@During: resolving callee type: type\(ObjModeLiftedWith\(<.*>\)\))r   r   r   r   assertRegexr   r   )rd   r   r   pats       r(   test_case06_double_objmodez&TestLiftObj.test_case06_double_objmode  s    	 	 	 v122 	fDIIcNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	3V-..44444s   AAAc                 Z   d }t          j        g d          }t          |          }|                     t          j                  5 } ||           d d d            n# 1 swxY w Y   t          |j                  }|                     d|           |                     d|           d S )Nc                 d    t                      5  d| i}d}d d d            n# 1 swxY w Y   | ||fS )Nr  r   r   )r:   tus      r(   r   z6TestLiftObj.test_case07_mystery_key_error.<locals>.foo-  s~     ""  !H               a7Ns   "&&r)  z;Missing type annotation on outgoing variable(s): ['t', 'u']z9Example code: with objmode(t='<add_type_as_string_here>'))	r  r@  r   r   r   r   r   r   r   )rd   r   r:   rO  r   exstrs         r(   test_case07_mystery_key_errorz)TestLiftObj.test_case07_mystery_key_error+  s   	 	 	
 HYYYCyyv122 	fDGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 F$%% #	 	 	 	 8	 	 	 	 	rQ  c                 B   t                      fd}t          j        g d          }t          |          }|                     t
                    5 } ||           d d d            n# 1 swxY w Y   |                     t          |j                  d           d S )Nc                     t          t          |                     D ]Y}t                      5  t          |          }| |         }||<   t	          d                    d d d            n# 1 swxY w Y   Z| S )N2)rB   rb   r   r   r0   )r:   rD   rL  vds       r(   r   z8TestLiftObj.test_case08_raise_from_external.<locals>.fooE  s    3q66]] " "$&& " "AA!AAaD!C&MMM	" " " " " " " " " " " " " " "
 Hs   2A,,A0	3A0	r)  z'2')	dictr  r@  r   r   KeyErrorrc   r   r   )rd   r   r:   rO  r   rh  s        @r(   test_case08_raise_from_externalz+TestLiftObj.test_case08_raise_from_external@  s     FF	 	 	 	 	 HYYYCyyx(( 	FDGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	V-..66666s   A,,A03A0c                 *   d }t          j        g d          }t          |          }|                     t          j                  5 } ||           d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nc                 V    t                      5  t                      # 1 swxY w Y   | S rQ   )r   
ValueErrorr9   s    r(   r   z3TestLiftObj.test_case09_explicit_raise.<locals>.fooU  sO     "" # # ll"# # # # # # # #Hs   ""r)  zBunsupported control flow due to raise statements inside with block)	r  r@  r   r   r   r   r   r   r   rN  s        r(   test_case09_explicit_raisez&TestLiftObj.test_case09_explicit_raiseT  s    	 	 	
 HYYYCyyv344 	DGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 !!	
 	
 	
 	
 	
rQ  c                 d    d }t          j        g d          }|                     ||           d S )Nc                     t          d          5  g d}d d d            n# 1 swxY w Y   t                      5  d|d<   d d d            n# 1 swxY w Y   |S rE  r   r=   s     r(   r   z;TestLiftObj.test_case10_mutate_across_contexts.<locals>.foog  rF  rG  r)  r?  rA  s      r(   "test_case10_mutate_across_contextsz.TestLiftObj.test_case10_mutate_across_contextsd  sB    	 	 	 HYYY++C33333r*   c                 d    d }t          j        g d          }|                     ||           d S )Nc                     t          d          5  t          j        g dd          }d d d            n# 1 swxY w Y   t                      5  d|d<   d d d            n# 1 swxY w Y   |S )Nint64[:]r  r)  r  r#  r7   rq   )r   r  r-  r=   s     r(   r   zATestLiftObj.test_case10_mutate_array_across_contexts.<locals>.foos  s     :... 9 9Jyyy8889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 ""  !               Hs   6::A!!A%(A%r)  r?  rA  s      r(   (test_case10_mutate_array_across_contextsz4TestLiftObj.test_case10_mutate_array_across_contextsq  sB    	 	 	 HYYY++C33333r*   c                     d }t          j        g d          }t          |          }|                     t                    5 } ||           d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nc                 X    t                      5  d }d d d            n# 1 swxY w Y   | S )Nc                     | dz   S r   r2   r  s    r(   r   zLTestLiftObj.test_case11_define_function_in_context.<locals>.foo.<locals>.bar  s    q5Lr*   r   )r:   r   s     r(   r   z?TestLiftObj.test_case11_define_function_in_context.<locals>.foo  sy     "" ! !! ! !! ! ! ! ! ! ! ! ! ! ! ! ! ! ! Hs   ##r)  z global name 'bar' is not defined)r  r@  r   r   	NameErrorr   r   r   rN  s        r(   &test_case11_define_function_in_contextz2TestLiftObj.test_case11_define_function_in_context~  s    	 	 	 HYYYCyyy)) 	VDGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	. !!	
 	
 	
 	
 	
rX  c                 p    d fd}t          j        g d          }|                     ||           d S )Nc                     | dz   S r   r2   r  s    r(   r   z>TestLiftObj.test_case12_njit_inside_a_objmode_ctx.<locals>.bar  s    q5Lr*   c                     t          d          5   t                    |                               d          }d d d            n# 1 swxY w Y   | |z   S )Nru  r  r  )r   r   r  r:   r>   r   s     r(   r   z>TestLiftObj.test_case12_njit_inside_a_objmode_ctx.<locals>.foo  s     :... 1 1DIIaLL''001 1 1 1 1 1 1 1 1 1 1 1 1 1 1q5Ls   ,A

AAr)  r?  )rd   r   r:   r   s      @r(   %test_case12_njit_inside_a_objmode_ctxz1TestLiftObj.test_case12_njit_inside_a_objmode_ctx  s\    	 	 		 	 	 	 	
 HYYY++C33333r*   c                    d }t           dk    r|                     t          j                  5 }t	          |          } |t          j        g d                     d d d            n# 1 swxY w Y   d}|                     |t          |j	                             d S  |t          j        g d                    }t
          j
                            t          j        g d          |           d S )Nc                 d    t          d          5  | dz  } | cd d d            S # 1 swxY w Y   d S )Nru  r9   r5   r   r9   s    r(   r   zCTestLiftObj.test_case14_return_direct_from_objmode_ctx.<locals>.foo  s     :...  Q                 s   %))r   r)  zDunsupported control flow: due to return statements inside with block)rq   r   r(  )r   r   r   r   r   r  r@  r   r   r   testingassert_array_equal)rd   r   r   rO  r   results         r(   *test_case14_return_direct_from_objmode_ctxz6TestLiftObj.test_case14_return_direct_from_objmode_ctx  s&   	 	 	
 ""6#788 *FCyyRXiii(()))* * * * * * * * * * * * * * * YCMM#s6#34455555S))),,--FJ))"(999*=*=vFFFFFs   /A))A-0A-c                 d    d }t          j        g d          }|                     ||           d S )Nc                 .    dfd} ||           dz   S )Nr7   c                     t          d          5  t          |            | z   cd d d            S # 1 swxY w Y   d S )Nru  r9   r6  )r:   js    r(   r   zHTestLiftObj.test_case15_close_over_objmode_ctx.<locals>.foo.<locals>.bar  s    $z222 ! !!HHHq5! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !s   377rq   r2   )r:   r   r  s     @r(   r   z;TestLiftObj.test_case15_close_over_objmode_ctx.<locals>.foo  s5    A! ! ! ! ! 3q66A:r*   r)  r?  rA  s      r(   "test_case15_close_over_objmode_ctxz.TestLiftObj.test_case15_close_over_objmode_ctx  sB    	 	 	 HYYY++C33333r*   c                 v    ddl m fd}t          j        g d          }|                     ||           d S )Nr   )sparsec                     t          d          5  t          |                                |           }t          j        |d                   }d d d            n# 1 swxY w Y   |S )Nr  rK  )r   r   )r   r0   
csr_matrixr  r  )r:   spxrL  sps      r(   r   z>TestLiftObj.test_case16_scipy_call_in_objmode_ctx.<locals>.foo  s     7+++ ( (ammA&& HSY''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( Hs   ?AA!$A!r)  )scipyr  r  r@  r   )rd   r   r:   r  s      @r(   %test_case16_scipy_call_in_objmode_ctxz1TestLiftObj.test_case16_scipy_call_in_objmode_ctx  s_    &&&&&&	 	 	 	 	 HYYY++C33333r*   c                 v    dd l fdt          j        g d          }|                     |           d S )Nr   c                     t                      5                                 d d d            d S # 1 swxY w Y   d S rQ   )r   dis)r:   r  r   s    r(   r   z7TestLiftObj.test_case17_print_own_bytecode.<locals>.foo  s     ""                   s   377r)  )r  r  r@  r   )rd   r:   r  r   s     @@r(   test_case17_print_own_bytecodez*TestLiftObj.test_case17_print_own_bytecode  s\    


	 	 	 	 	 	 HYYY++C33333r*   c                     d }t          j        g d          }t          d           }|                     |||           d S )Nc                 v    t                      5   | |d                    d d d            d S # 1 swxY w Y   d S ra   r   )r$   r:   s     r(   r   zCTestLiftObj.test_case18_njitfunc_passed_to_objmode_ctx.<locals>.foo  s     ""  QqT


                 s   .22r)  c                     | dz   S )NrT   r2   rT  s    r(   <lambda>zHTestLiftObj.test_case18_njitfunc_passed_to_objmode_ctx.<locals>.<lambda>  s
    AE r*   )r  r@  r   r   )rd   r   r:   r   s       r(   *test_case18_njitfunc_passed_to_objmode_ctxz6TestLiftObj.test_case18_njitfunc_passed_to_objmode_ctx  sS    	 	 	 HYYY//""++CQ77777r*   c                 H   fd|                      t          j        t          j        f          5 }t	                    } |t          j        g d                     d d d            n# 1 swxY w Y   d}|                     |t          |j	                             d S )Nc                     t                      5  | dk    r	 d d d            dS 	 d d d            n# 1 swxY w Y    | dz
            }|S )Nr      r5   r   )r:   retr   s     r(   r   z.TestLiftObj.test_case19_recursion.<locals>.foo  s     ""  66                      #a!e**CJs   266r)  zUntyped global name 'foo')
r   r   r   r   r   r  r@  r   r   r   )rd   r   rO  r   r   s       @r(   test_case19_recursionz!TestLiftObj.test_case19_recursion  s    	 	 	 	 	  2F4HIJJ 	&f99DD)))$$%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& *c3v/0011111s   /A--A14A1c                 d    d }t          j        g d          }|                     ||           d S )Nc                    t           j                            d           t           j                                        }t	          d          5  t           j                                        }d d d            n# 1 swxY w Y   | |z   |z   S Nr   r  rT  r  randomseedrandr   r:   r>   r!  s      r(   r   z1TestLiftObj.test_case20_rng_works_ok.<locals>.foo  s    INN1	  A 9--- % %INN$$% % % % % % % % % % % % % % % q519s   A99A= A=r)  r?  rA  s      r(   test_case20_rng_works_okz$TestLiftObj.test_case20_rng_works_ok  sB    	 	 	 HYYY++C33333r*   c                 d    d }t          j        g d          }|                     ||           d S )Nc                 V   t           j                            d           t           j                                        }t	          d          5  t           j                            d           t           j                                        }d d d            n# 1 swxY w Y   | |z   |z   S r  r  r  s      r(   r   z6TestLiftObj.test_case21_rng_seed_works_ok.<locals>.foo  s    INN1	  A 9--- % %	q!!!INN$$% % % % % % % % % % % % % % % q519s   >BBBr)  r?  rA  s      r(   test_case21_rng_seed_works_okz)TestLiftObj.test_case21_rng_seed_works_ok  sB    	 	 	 HYYY++C33333r*   c                     d t           fd            }|                      |            |                                           |                     t          t
                     d S )Nc                     t          j        t          t          |                                                               S rQ   )r  r-  listreversedtolistr9   s    r(   r   z'TestLiftObj.test_example01.<locals>.bar  s*    :d8AHHJJ#7#788999r*   c                      t          j        d          } t          d          5  |  |           z   }d d d            n# 1 swxY w Y   |S )NrT   zintp[:]r  )r  r  r   r  s     r(   r   z'TestLiftObj.test_example01.<locals>.foo  s    	!A9%%%  AJ               Hs   AAA)r   r   py_funcassertIsr   r   )rd   r   r   s     @r(   test_example01zTestLiftObj.test_example01	  sw    	: 	: 	: 
	 	 	 	 
	 	s{{}}555g/////r*   c                     d t                    d             }t          j        fd            }|                      |            d           d S )Nc                     d S rQ   r2   )ss    r(   r   z1TestLiftObj.test_objmode_in_overload.<locals>.foo      Dr*   c                     d }|S )Nc                 `    t          d          5  | dz   }d d d            n# 1 swxY w Y   |S )Nr2  r   r   r   )r  r   s     r(   implzHTestLiftObj.test_objmode_in_overload.<locals>.foo_overload.<locals>.impl  sv    (((    a%C                             
rU  r2   )r  r  s     r(   foo_overloadz:TestLiftObj.test_objmode_in_overload.<locals>.foo_overload  s       Kr*   c                        d          S r   r2   r   s   r(   fz/TestLiftObj.test_objmode_in_overload.<locals>.f%  s    3q66Mr*   r(  )r   r   r   rc   )rd   r  r  r   s      @r(   test_objmode_in_overloadz$TestLiftObj.test_objmode_in_overload  s~    	 	 	 
#	 	 
	 
	 	 	 	 
	 	e$$$$$r*   c                     t           d             } |            }|                     |t                     |                     |d           d S )Nc                  d    t          t                    5  d} d d d            n# 1 swxY w Y   | S Nval皙(@)r   gv_typer  s    r(   
global_varz8TestLiftObj.test_objmode_gv_variable.<locals>.global_var,  sr    W%%%                J   %))   )r   assertIsInstancer"  rc   )rd   r  r  s      r(   test_objmode_gv_variablez$TestLiftObj.test_objmode_gv_variable+  sZ    		 	 
	
 jllc3'''b!!!!!r*   c                     t           d             }|                     t          j        d          5   |             d d d            d S # 1 swxY w Y   d S )Nc                  d    t          t                    5  d} d d d            n# 1 swxY w Y   | S )Nr  r   )r   gv_type2r  s    r(   r  z>TestLiftObj.test_objmode_gv_variable_error.<locals>.global_var8  sr    X&&&                Jr  zIError handling objmode argument 'val'. Global 'gv_type2' is not defined\.r   assertRaisesRegexr   r   )rd   r  s     r(   test_objmode_gv_variable_errorz*TestLiftObj.test_objmode_gv_variable_error7  s    		 	 
	
 ## 2
 
 	 	
 JLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	   A		AAc                 @   t           d             }t           d             }||fD ]x}|                     t          |                    5   |            }|                     |t                     |                     |d           d d d            n# 1 swxY w Y   yd S )Nc                  n    t          t          j                  5  d} d d d            n# 1 swxY w Y   | S r  )r   r   r2  r  s    r(   modattr1z6TestLiftObj.test_objmode_gv_mod_attr.<locals>.modattr1F  st    UZ(((                J   *..c                  x    t          t          j        j                  5  d} d d d            n# 1 swxY w Y   | S r  )r   r   r   r2  r  s    r(   modattr2z6TestLiftObj.test_objmode_gv_mod_attr.<locals>.modattr2L  sw    U[-...                Js   /33)r   r  )r   subTestr   r  r"  rc   )rd   r  r  r   r  s        r(   test_objmode_gv_mod_attrz$TestLiftObj.test_objmode_gv_mod_attrE  s    		 	 
	
 
	 	 
	
 X& 	* 	*BR)) * *bdd%%c3///  b)))	* * * * * * * * * * * * * * *	* 	*s   
<BB	B	c                     t           d             }|                     t          j        d          5   |             d d d            d S # 1 swxY w Y   d S )Nc                  n    t          t          j                  5  d} d d d            n# 1 swxY w Y   | S r  )r   r   THIS_DOES_NOT_EXISTr  s    r(   moderrorz<TestLiftObj.test_objmode_gv_mod_attr_error.<locals>.moderrorZ  su    U6777                Jr  zQError handling objmode argument 'val'. Getattr cannot be resolved at compile-timer  rd   r  s     r(   test_objmode_gv_mod_attr_errorz*TestLiftObj.test_objmode_gv_mod_attr_errorY  s    		 	 
	 ## :
 
 	 	
 HJJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r  c                     t           d             }|                     t          j        d          5   |             d d d            d S # 1 swxY w Y   d S )Nc                      t          t          j        t          j        t          j                  5  d} d}d}d d d            n# 1 swxY w Y   t
          S )Nv1v2v3r  )r   r   r2  r  float32r  r  s      r(   r  zETestLiftObj.test_objmode_gv_mod_attr_error_multiple.<locals>.moderrorg  s    EJ5+D!M+ + +  	              
 Js   AAAzPError handling objmode argument 'v2'. Getattr cannot be resolved at compile-timer  r  s     r(   'test_objmode_gv_mod_attr_error_multiplez3TestLiftObj.test_objmode_gv_mod_attr_error_multiplef  s    		 	 
	 ## :
 
 	 	
 HJJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r  c                     d t                    d             }t          fd            }|                      |            t          j        d                              t          j                             d S )Nc                      d S rQ   r2   r2   r*   r(   r   z>TestLiftObj.test_objmode_closure_type_in_overload.<locals>.foow  r  r*   c                  :    t           j        d d          fd} | S )Nc                      t                    5  t          j        d                              t          j                  } d d d            n# 1 swxY w Y   | S Nr  r7   r   r  r  r  r  r   	shrubberys    r(   r  zUTestLiftObj.test_objmode_closure_type_in_overload.<locals>.foo_overload.<locals>.impl}      +++ ; ;)B--..rz::C; ; ; ; ; ; ; ; ; ; ; ; ; ; ;
   2AAAr   r  r  r  s    @r(   r  zGTestLiftObj.test_objmode_closure_type_in_overload.<locals>.foo_overloadz  s3    aaa(I     Kr*   c                                    S rQ   r2   r  s   r(   r   z>TestLiftObj.test_objmode_closure_type_in_overload.<locals>.bar      355Lr*   r7   )r   r   r   r  r  r  r  rd   r  r   r   s      @r(   %test_objmode_closure_type_in_overloadz1TestLiftObj.test_objmode_closure_type_in_overloadv  s    	 	 	 
#	 	 
	 
	 	 	 	 
	 	ry}}';';BJ'G'GHHHHHr*   c                     d t                    d             }t          fd            }|                     t          j        d          5   |             d d d            d S # 1 swxY w Y   d S )Nc                      d S rQ   r2   r2   r*   r(   r   zDTestLiftObj.test_objmode_closure_type_in_overload_error.<locals>.foo  r  r*   c                  <    t           j        d d          fd} | S )Nc                      t                    5  t          j        d                              t          j                  } d d d            n# 1 swxY w Y   | S r  r  r  s    r(   r  z[TestLiftObj.test_objmode_closure_type_in_overload_error.<locals>.foo_overload.<locals>.impl  r  r  r  r  s    @r(   r  zMTestLiftObj.test_objmode_closure_type_in_overload_error.<locals>.foo_overload  s6    aaa(I     Kr*   c                                    S rQ   r2   r  s   r(   r   zDTestLiftObj.test_objmode_closure_type_in_overload_error.<locals>.bar  r  r*   zIError handling objmode argument 'out'. Freevar 'shrubbery' is not defined)r   r   r  r   r   r  s      @r(   +test_objmode_closure_type_in_overload_errorz7TestLiftObj.test_objmode_closure_type_in_overload_error  s    	 	 	 
#		 		 
		 
	 	 	 	 
	 ##2
 
 	 	
 CEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A''A+.A+c                     t           d             }|                     t          j        d          5   |             d d d            d S # 1 swxY w Y   d S )Nc                  d    t          d          5  d} d d d            n# 1 swxY w Y   t          S )Nrq   )badr5   )r   r  r  s    r(   r  z6TestLiftObj.test_objmode_invalid_use.<locals>.moderror  sr    U###                Js    $$zError handling objmode argument 'bad'. The value must be a compile-time constant either as a non-local variable or a getattr expression that refers to a Numba type.r  r  s     r(   test_objmode_invalid_usez$TestLiftObj.test_objmode_invalid_use  s    		 	 
	 ## '
 
 	 	 HJJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r  c                 R   t           j        d d          t          fd            } |            \  }}}|                     |d           |                     |d           |                     |t	          j        d                              t          j                             d S )Nc                      t          dt                    5  d} | }t          j        d                              t          j                  }d d d            n# 1 swxY w Y   | ||fS )Nr  )t1t2t3    :(ArT   )r   r  r  r  r  int32)r
  r  r  array_tys      r(   r   z5TestLiftObj.test_objmode_multi_type_args.<locals>.foo  s    
 I'h??? 3 3Yq\\((223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 r2:s   6AA"Ar  i  rT   )r   r  r   r   r  r  r  )rd   r   r
  r  r  r  s        @r(   test_objmode_multi_type_argsz(TestLiftObj.test_objmode_multi_type_args  s    ;qqq>		 	 	 	 
	 SUU
BH---F+++BIaLL$7$7$A$ABBBBBr*   c                 .  	 dt           j        fdt           j        d d          fg}t          |           G d dt                                d} |          	d t                    	fd            }t          fd            } |            }|                     |           |                     |	                    d	d
          d           t          j        dt          j                  d
z   }|                     |j        |           d S )Nvaluer@  c                   F    e Zd Zd Zed             Zd Zed             ZdS ).TestLiftObj.test_objmode_jitclass.<locals>.Bagc                 ^    || _         t          j        |t          j                  | _        d S )Nr#  )r  r  zerosr  r@  )rd   r  s     r(   __init__z7TestLiftObj.test_objmode_jitclass.<locals>.Bag.__init__  s%    "
Xe2:>>>


r*   c                     | j         j        S rQ   )r@  sizerl   s    r(   r  z3TestLiftObj.test_objmode_jitclass.<locals>.Bag.size  s    z&r*   c                 h    t          | j                  D ]}| j        |xx         |z  cc<   | j        S rQ   )rB   r  r@  )rd   r  rD   s      r(   	incrementz8TestLiftObj.test_objmode_jitclass.<locals>.Bag.increment  s=    ty)) ) )AJqMMMS(MMMMz!r*   c                     | |z   S rQ   r2   r=   s     r(   addz2TestLiftObj.test_objmode_jitclass.<locals>.Bag.add  s    1ur*   N)	ry   rz   r{   r  propertyr  r  staticmethodr  r2   r*   r(   Bagr    sh        ? ? ? ' ' X'" " "
   \  r*   r      c                      d S rQ   r2   r2   r*   r(   r   z.TestLiftObj.test_objmode_jitclass.<locals>.foo  r  r*   c                  $    j         fd} | S )Nc                      t                    5   d          } |                     d           d d d            n# 1 swxY w Y   | S )Nr  r   r   )r   r  )r   r   r  s    r(   r  zETestLiftObj.test_objmode_jitclass.<locals>.foo_overload.<locals>.impl  s    +++ % %#c((CMM!$$$% % % % % % % % % % % % % % % 
s   !?AA)_numba_type_)r  r  r   mybags    @r(   r  z7TestLiftObj.test_objmode_jitclass.<locals>.foo_overload  s1    *I     
 Kr*   c                                    S rQ   r2   r  s   r(   r   z.TestLiftObj.test_objmode_jitclass.<locals>.bar  r  r*   rq   r   rT   r   r#  )r   r  r  r   objectr   r   r  rc   r  r  r  r   r@  )
rd   specnr  r   r!  	exp_arrayr   r   r&  s
          @@@r(   test_objmode_jitclassz!TestLiftObj.test_objmode_jitclass  s[   ek"emAAA&'

 
$	 	 	 	 	& 	 	 
	$ A	 	 	 
#	 	 	 	 	 
	 
	 	 	 	 
	 CEEa%%%q!e,,,HS
333a7	33333r*   c                 `    t          d          5  | dz  }d d d            n# 1 swxY w Y   |S Nr  outputr7   r  r:   r0  s     r(   case_objmode_cachezTestLiftObj.case_objmode_cache  sv    I&&& 	 	VF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	rU  c                     t          g d          t          fd            }|                     t          j                  5 } |             d d d            n# 1 swxY w Y   |                     t          |j                  d           d S )Nr5   rq   r   r(  rT   c                  `    t                    5  g d} d d d            n# 1 swxY w Y   | S )Nr  r4  r  )r   ret_types    r(   test2z6TestLiftObj.test_objmode_reflected_list.<locals>.test2  sw    X&&& & &%oo& & & & & & & & & & & & & & &J   #''zObjmode context failed. Argument 'out' is declared as an unsupported type: reflected list\(int(32|64)\)<iv=None>. Reflected types are not supported.r   r   r   r   r   r[  r   r   rd   r7  r   r6  s      @r(   test_objmode_reflected_listz'TestLiftObj.test_objmode_reflected_list  s    ///**		 	 	 	 
	
 v344 	EGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 !!3	
 	
 	
 	
 	
   AA"Ac                     t          h d          t          fd            }|                     t          j                  5 } |             d d d            n# 1 swxY w Y   |                     t          |j                  d           d S )N   r5   rq   r   r(  rT   c                  `    t                    5  h d} d d d            n# 1 swxY w Y   | S )N)r  r>  r  )r  r6  s    r(   r7  z5TestLiftObj.test_objmode_reflected_set.<locals>.test2  sw    ))) ) )() ) ) ) ) ) ) ) ) ) ) ) ) ) )Mr8  zObjmode context failed. Argument 'result' is declared as an unsupported type: reflected set\(int(32|64)\). Reflected types are not supported.r9  r:  s      @r(   test_objmode_reflected_setz&TestLiftObj.test_objmode_reflected_set  s    ///**		 	 	 	 
	
 v344 	EGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 !!3	
 	
 	
 	
 	
r<  c                 F   t          j        t           j        t           j                  t          fd            }|                     t                    5 } |             d d d            n# 1 swxY w Y   |                     dt          |j	                             d S )Nc                  b    t                    5  ddd} d d d            n# 1 swxY w Y   | S )Nresr5   rq   )r,   r-   r  rD  r6  s    r(   test4z2TestLiftObj.test_objmode_typed_dict.<locals>.test4%  s{    X&&& ' 'A&&' ' ' ' ' ' ' ' ' ' ' ' ' ' 'Js   $((zFcan't unbox a <class 'dict'> as a <class 'numba.typed.typeddict.Dict'>)
r   DictTypeunicode_typer  r   r   rV  r   r   r   rd   rF  r   r6  s      @r(   test_objmode_typed_dictz#TestLiftObj.test_objmode_typed_dict#  s    >%"4ekBB		 	 	 	 
	
 y)) 	VEGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	9 !!	
 	
 	
 	
 	
s   A..A25A2c                 0   t          j        t           j                  t          fd            }|                     t
                    5 } |             d d d            n# 1 swxY w Y   |                     t          |j                  d           d S )Nc                  `    t                    5  ddg} d d d            n# 1 swxY w Y   | S )NrC  r5   rq   r  rE  s    r(   rF  z2TestLiftObj.test_objmode_typed_list.<locals>.test45  sw    X&&&  !f              Jr8  zLcan't unbox a <class 'list'> as a (<class ')?numba.typed.typedlist.List('>)?)	r   ListTyper  r   r   rV  r[  r   r   rI  s      @r(   test_objmode_typed_listz#TestLiftObj.test_objmode_typed_list3  s    >%+..		 	 	 	 
	
 y)) 	VEGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 !!@	
 	
 	
 	
 	
s   A##A'*A'c                     t           d             }t          j        dt          j                                      d          }|                    |          } ||          }|                     ||           d S )Nc                     t          j        d          5  |                     d          }d d d            n# 1 swxY w Y   |S )Nz
int64[::1]r  r  )r   r   viewr=   s     r(   r   z1TestLiftObj.test_objmode_use_of_view.<locals>.fooF  s~    ... $ $FF7OO$ $ $ $ $ $ $ $ $ $ $ $ $ $ $Hs   8<<r5   r  )r   r  onesr  rQ  r  r   )rd   r   r  expectedr   s        r(   test_objmode_use_of_viewz$TestLiftObj.test_objmode_use_of_viewC  sx     
	 	 
	
 GArx  %%i00;;q>>c!ff#.....r*   N);ry   rz   r{   r   r   r   r   r	  r  r  r%  r   r/  r3  r<  rB  rH  rP  rW  r]  rc  rk  ro  rr  rv  r{  r  r  r   expectedFailurer  r   r  r  r   r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r,  r  r2  r;  r@  rJ  rN  rT  r2   r*   r(   r   r   <  s       < < <! ! !5 5 5$@ @ @&8 8 8 6 6 6@ @ @&6 6 6 #6 6 #"66 6 6$ #@ @ #"@"8 8 8$ #4 4 #"4  "
 
 
&5 5 5"  *7 7 7(
 
 
  #
4 
4 #"
44 4 4
 
 
"4 4 4G G G$ 4 4 4 4 4 44 4 4 '8 8 '&8 2 2 2 
4 
4 
44 4 40 0 0 % % %$
" 
" 
"  * * *(     I I I&  6  C C C$14 14 14h   \

 
 
$
 
 
$
 
 
 
 
 
 / / / / /r*   r   c                     | dz  S Nr7   r2   r9   s    r(   case_inner_pyfuncrX  R  s    r6Mr*   c                 t    t          d          5  t          |           }d d d            n# 1 swxY w Y   |S Nr  r/  )r   rX  r1  s     r(   r2  r2  V  sz    			"	"	" & &"1%%& & & & & & & & & & & & & & &MrM  c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestLiftObjCachingc                 D    t          j        dt          j                   d S r   r   rl   s    r(   r   zTestLiftObjCaching.setUp_  r   r*   c                 ,    t          j                     d S rQ   r   rl   s    r(   r   zTestLiftObjCaching.tearDownb  r   r*   c                 N    t          d          |          }|                      |d          d            t          d          |          }|                     |j                   |                      |d          d           |                     |j                   d S )NT)cacher   r  )r   rc   assertFalse_cache_hits
assertTrue)rd   r  firstseconds       r(   checkzTestLiftObjCaching.checke  s     4   ))sT***!D!!!'**+,,,d+++*+++++r*   c                 6    d }|                      |           d S )Nc                 `    t          d          5  | dz  }d d d            n# 1 swxY w Y   |S r.  r  r1  s     r(   r   z=TestLiftObjCaching.test_objmode_caching_basic.<locals>.pyfunco  sv    	***    R                             MrU  rf  )rd   r   s     r(   test_objmode_caching_basicz-TestLiftObjCaching.test_objmode_caching_basicn  s+    	 	 	
 	

6r*   c                 B    d fd}|                      |           d S )Nc                     | dz  S rW  r2   r9   s    r(   other_pyfunczNTestLiftObjCaching.test_objmode_caching_call_closure_bad.<locals>.other_pyfuncw  s    r6Mr*   c                 n    t          d          5   |           }d d d            n# 1 swxY w Y   |S rZ  r  )r:   r0  rm  s     r(   r   zHTestLiftObjCaching.test_objmode_caching_call_closure_bad.<locals>.pyfuncz  s{    	*** ) )%a) ) ) ) ) ) ) ) ) ) ) ) ) ) )Mr  ri  )rd   r   rm  s     @r(   %test_objmode_caching_call_closure_badz8TestLiftObjCaching.test_objmode_caching_call_closure_badv  sE    	 	 		 	 	 	 	
 	

6r*   c                 :    |                      t                     d S rQ   )rf  r2  rl   s    r(   &test_objmode_caching_call_closure_goodz9TestLiftObjCaching.test_objmode_caching_call_closure_good  s    

%&&&&&r*   N)	ry   rz   r{   r   r   rf  rj  ro  rq  r2   r*   r(   r\  r\  \  sn        < < <! ! !, , ,  	 	 	' ' ' ' 'r*   r\  c                        e Zd Zd Zd Zd ZdS )TestBogusContextc                 2   t          t                    }|                     t          j                  5 }t          || j        | j        | j        i            d d d            n# 1 swxY w Y   | 	                    dt          |j                             d S )Nr   z*Undefined variable used as context manager)r)   rX   r   r   r   r   r   r   r   r   r   r   rd   rf   r   s      r(   test_undefined_globalz&TestBogusContext.test_undefined_global  s    ^,,v344 	
2   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	8 !!	 	 	 	 	   $A$$A(+A(c                 2   t          t                    }|                     t          j                  5 }t          || j        | j        | j        i            d d d            n# 1 swxY w Y   | 	                    dt          |j                             d S )Nr   z"Unsupported context manager in use)r)   r]   r   r   r   r   r   r   r   r   r   r   ru  s      r(   test_invalidzTestBogusContext.test_invalid  s    \**v344 	
2   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	0 !!	 	 	 	 	rw  c                     t           d             }|                     t          j                  5 } |             d d d            n# 1 swxY w Y   t	          |j                  }d}|                     ||           d S )Nc                  X    t          d          5 } 	 d d d            d S # 1 swxY w Y   d S )N )openr  s    r(   r   z;TestBogusContext.test_with_as_fails_gracefully.<locals>.foo  sr    b Q                 s   ##zGThe 'with (context manager) as (variable):' construct is not supported.)r   r   r   UnsupportedErrorr   r   r   )rd   r   r   excstrr   s        r(   test_with_as_fails_gracefullyz.TestBogusContext.test_with_as_fails_gracefully  s    		 	 
	 v677 	6CEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 V%&&c6"""""s   AAAN)ry   rz   r{   rv  ry  r  r2   r*   r(   rs  rs    sA        
 
 

 
 
# # # # #r*   rs  c                   B    e Zd ZdZeej        d                         ZdS )TestMiscFc                     t                      s|                     d           d }g d}t          ||          }|                     |           d S )Nzstrace support missingc                  6    t          d          d             } d S )Nzvoid()c                  `    t          j                    5  	 d d d            d S # 1 swxY w Y   d S rQ   r   r2   r*   r(   r  zFTestMisc.test_no_fork_in_compilation.<locals>.force_compile.<locals>.f  su    ]__                   s   #'')r   r~  s    r(   force_compilez;TestMisc.test_no_fork_in_compilation.<locals>.force_compile  s+    (^^  ^  r*   )forkcloneexecve)r   skipTestr   ra  )rd   r  syscallsstrace_datas       r(   test_no_fork_in_compilationz$TestMisc.test_no_fork_in_compilation  sl      !! 	4MM2333	 	 	 /.. ]H55%%%%%r*   N)ry   rz   r{   _numba_parallel_test_r   r   run_test_in_subprocessr  r2   r*   r(   r  r    sC         "$& & %$ Z& & &r*   r  __main__)Sr   ossignal
subprocesssystempfile	threadingr   numpyr  r   numba.core.transformsr   r   numba.core.withcontextsr   r   r   numba.core.bytecoder   r	   numba.core.interpreterr
   
numba.corer   r   r   numba.core.registryr   numba.core.compilerr   r   r   r   r   r   numba.core.extendingr   numba.tests.supportr   r   r   r   r   r   r   r   numba.core.utilsr   numba.experimentalr   r   r)   r3   r;   r?   rE   rH   rK   rM   rO   rR   rU   rX   r(  r\   r]   r2  r  r_   r}   r   r   r   r   r   rX  r2  r\  rs  r  ry   mainr2   r*   r(   <module>r     sy    				      



            ? ? ? ? ? ? ? ? Q Q Q Q Q Q Q Q Q Q : : : : : : : : . . . . . . * * * * * * * * * * * * * * * * 9 9 9 9 9 9 9 9 . . . . . . . . . . . . ) ) ) ) ) )9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 ' & & & & & ' ' ' ' ' '       "  "  ,    	 	 	        
 vxx   
 *6 6 6 6 6h 6 6 6,= = = = =( = = =>9 9 9 9 9( 9 9 9.., ., ., ., .,& ., ., .,b    S/ S/ S/ S/ S/*h S/ S/ S/l    &' &' &' &' &'X &' &' &'R%# %# %# %# %#* %# %# %#P& & & & &x & & &@ zHMOOOOO r*   