
    .|h(                     n   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 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&m'Z'm(Z( d dl)m*Z* d dl+m,Z, d dl-Z-d Z.d Z/d Z0d Z1d Z2d Z3d Z4d Z5d Z6d Z7d Z8d Z9 e:       Z;d Z<ejz                  Z> G d de       Z? G d de       Z@ G d d e@      ZA G d! d"e@      ZBd# ZCd$ ZD G d% d&ee       ZEd' ZFd( ZG G d) d*ee       ZH G d+ d,e@      ZI G d- d.e       ZJeKd/k(  r e-j                          yy)0    N)find_setupwithswith_lifting)bypass_contextcall_contextobjmode_context)FunctionIdentityByteCode)Interpreter)errors)
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expected_failure_py312expected_failure_py313)	PYVERSION)jitclassc                     t        j                  |       }t        |      }t        |      }|j	                  |      }|S )N)func_id)r   from_functionr	   r
   	interpret)funcr!   bcinterpfunc_irs        [/var/www/html/test/engine/venv/lib/python3.12/site-packages/numba/tests/test_withlifting.pyget_func_irr)      s;    ,,T2G	'	"B!Fr"GN    c                      t        d       t        5  t        d       t                d d d        t        d       y # 1 sw Y   xY w)NABCprintr   b r*   r(   lift1r3   "   s6    	#J	 c
	 
#J s	   <Ac                  (   d} t        d|        d} t        5  t        d|        | dz  } t                d d d        | dz  } t        5  t        d|        t                | dz  } d d d        | dz  } t        d|        y # 1 sw Y   JxY w# 1 sw Y   'xY w)N   r,   r-   d   r.   
   Dr/   xs    r(   lift2r;   *   s    	A	#qM	A	 c1	S	 FA	 c1		R FA	#qM 
 s   A<B<BBc                  (   d} d}t        d| |       t        5  t        d       t                | dz  } t        5  t        d       |dz  }t                d d d        d d d        | dz  } |dz  }t        d| |       y # 1 sw Y   )xY w# 1 sw Y   -xY w)Nr5   r6   r,   r-   r.   i r8   r/   r:   ys     r(   lift3r?   ;   s    	AA	#q!	 c
		S 	#JKAC		 FAFA	#q!	 		 s"   !BA<B<B	BBc                     d} t        d|        | dz  } t        5  t        d       t                | dz  } t        d      D ]+  }t        5  t        d       t                | |z  } d d d        - 	 d d d        t        5  t        d       t                | r| dz  } d d d        | dz  } t        d|        y # 1 sw Y   }xY w# 1 sw Y   RxY w# 1 sw Y   3xY w)	Nr   r,   r7   r-   r5   r.   r8   E)r0   r   r1   ranger:   is     r(   lift4rE   L   s    	A	#qMGA	 c
		Qr 	A c
Q 		 
 c
	GA	
 FA	#qM   s/   /C 	B4$
C =C4B=9C  C	Cc                      t        d       y )Nr,   r0   r2   r*   r(   lift5rH   b   s	    	#Jr*   c                  z    d} t        d|        t        5  | dz  } d d d        t        d|        | S # 1 sw Y   xY w)Nr5   r,   r-   r0   r   r9   s    r(   	liftcall1rK   f   s?    	A	#qM	 	Q	#qMH s   1:c                      d} t        d|        t        5  | dz  } d d d        t        d|        t        5  | dz  } d d d        t        d|        | S # 1 sw Y   7xY w# 1 sw Y   #xY w)Nr5   r,   r-   r7   r.   rJ   r9   s    r(   	liftcall2rM   o   si    	A	#qM	 	Q	#qM	 	R	#qMH  s   AAAA&c                      d} t        d|        t        5  | dkD  r| dz  } d d d        t        d|        t        5  t        d      D ]  }| |z  } 	 	 d d d        t        d|        | S # 1 sw Y   HxY w# 1 sw Y   #xY w)Nr5   r,   r   r-   r7   r.   )r0   r   rB   rC   s     r(   	liftcall3rO   {   s    	A	#qM	 q5FA 
#qM	 r 	AFA	 
#qMH  s   A'A3'A03A<c                  r    t         5  t         5  	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY wN)r   r2   r*   r(   	liftcall4rR      s:    	  		 	 	 s   -!-*	-6c                      t        d      D ]9  } t        5  t        |        | dk(  rt        d       	 d d d         | S 	 d d d        ;  S # 1 sw Y   GxY w)Nr7      r,   )rB   r   r0   )rD   s    r(   	liftcall5rU      sg    2Y  	!HAvc
		 	
 H 	 	 H	 	s   A

A	c                  <    t         5  	 d d d        y # 1 sw Y   y xY wrQ   )undefined_global_varr2   r*   r(   lift_undefiendrX          	      c                  <    t         5  	 d d d        y # 1 sw Y   y xY wrQ   )bogus_contextmanagerr2   r*   r(   lift_invalidr]      rY   rZ   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestWithFindingc                 l    t        |      }t        t        |      d         }| j                  ||       y Nr   )r)   lenr   assertEqual)selfr$   expect_countthe_ircts        r(   check_num_of_withz!TestWithFinding.check_num_of_with   s0    T"(+,\*r*   c                 2    | j                  t        d       y Nr5   re   )rh   r3   rd   s    r(   
test_lift1zTestWithFinding.test_lift1       u15r*   c                 2    | j                  t        d       y N   rk   )rh   r;   rl   s    r(   
test_lift2zTestWithFinding.test_lift2   rn   r*   c                 2    | j                  t        d       y rj   )rh   r?   rl   s    r(   
test_lift3zTestWithFinding.test_lift3   rn   r*   c                 2    | j                  t        d       y rp   )rh   rE   rl   s    r(   
test_lift4zTestWithFinding.test_lift4   rn   r*   c                 2    | j                  t        d       y )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_      s     +
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                  | _        t        | _	        y rQ   )
superr}   setUpr   typing_context	typingctxtarget_context	targetctxr   flags)rd   	__class__s    r(   r   zBaseTestWithLifting.setUp   s2    !4.0#22#22"
r*   c                 r   t        |      }t        || j                  | j                  | j                  i       \  }}| j                  t        |      |       | j                  |      }t               5 }|j                          d d d        | j                  j                         |       y # 1 sw Y   *xY w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"(DNNDNNDJJ
	 	Y6v& 	#	 	9	 	s   3B--B6c           	      n    | j                   }| j                  }| j                  }t        ||||||i       S r   )r   r   r   r   )rd   rf   argsreturn_typer   r   r   s          r(   r   zBaseTestWithLifting.compile_ir   s9    NN	NN	

)Y'r; 	;r*   )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y)TestLiftByPassc                 4    | j                  t        dd       y )Nr5   zA
C
re   r   )r   r3   rl   s    r(   rm   zTestLiftByPass.test_lift1   s    !!%a2: 	" 	<r*   c                 4    | j                  t        dd       y )Nrq   zA 1
D 3
r   )r   r;   rl   s    r(   rr   zTestLiftByPass.test_lift2   s    !!%a2> 	" 	@r*   c                 4    | j                  t        dd       y )Nr5   zA 1 100
D 2 101
r   )r   r?   rl   s    r(   rt   zTestLiftByPass.test_lift3   s    !!%a2F 	" 	Hr*   c                 4    | j                  t        dd       y )Nrq   z	A 0
E 11
r   )r   rE   rl   s    r(   rv   zTestLiftByPass.test_lift4   s    !!%a2? 	" 	Ar*   c                 4    | j                  t        dd       y )Nr   zA
r   )r   rH   rl   s    r(   rx   zTestLiftByPass.test_lift5   s    !!%a27 	" 	9r*   N)ry   rz   r{   rm   rr   rt   rv   rx   r2   r*   r(   r   r      s    <@HA9r*   r   c                   N    e Zd Zd Zd Zd Zd Zd Zee	e
d                      Zy)TestLiftCallc                    t        |      }t               5 } |        ddd       t               5 } |        ddd       | j                  j                         j                                y# 1 sw Y   RxY w# 1 sw Y   DxY w)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   sr     d 	#H	  	&F	 	):;	 		 	s   A/A;/A8;Bc                 ^    | j                  t        dd       | j                  t               y )Nr5   zA 1
B 2
r   )r   rK   r   rl   s    r(   test_liftcall1zTestLiftCall.test_liftcall1  s+    !!)!2> 	" 	@  +r*   c                 ^    | j                  t        dd       | j                  t               y )Nrq   zA 1
B 2
C 12
r   )r   rM   r   rl   s    r(   test_liftcall2zTestLiftCall.test_liftcall2  +    !!)!2D 	" 	F  +r*   c                 ^    | j                  t        dd       | j                  t               y )Nrq   zA 1
B 2
C 47
r   )r   rO   r   rl   s    r(   test_liftcall3zTestLiftCall.test_liftcall3  r   r*   c                 B   t         j                  t         j                  t         j                  t         j                  f}| j                  |      5 } t        t                      d d d        d}| j                  |t        j                               y # 1 sw Y   1xY w)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O	 Dc3v//01	 	s   BBc                 ^    | j                  t        dd       | j                  t               y )Nr5   z0
1
2
3
4
5
A
r   )r   rU   r   rl   s    r(   test_liftcall5zTestLiftCall.test_liftcall5  s-     	!!)!2I 	" 	K  +r*   N)ry   rz   r{   r   r   r   r   r   r   r   r   r   r2   r*   r(   r   r      s?    
<,
,
,
2 ,   ,r*   r   c                       fd}|S )Nc                     | j                  t        j                        5 } | g|i | d d d        | j                  dt	        j
                               y # 1 sw Y   /xY w)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12 	&ft%d%f%	&2&**+	-	& 	&   AA%r2   r   r   s   ` r(   expected_failure_for_list_argr   #      -
 Kr*   c                       fd}|S )Nc                     | j                  t        j                        5 } | g|i | d d d        | j                  dt	        j
                               y # 1 sw Y   /xY w)NzDoes not support function typer   r   s       r(   r   z/expected_failure_for_function_arg.<locals>.core-  s]    v112 	&ft%d%f%	&6&**+	-	& 	&r   r2   r   s   ` r(   !expected_failure_for_function_argr   ,  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$e%e&d                      Z'ej:                  d        Z(d Z)d  Z*d! Z+d" Z,d# Z-d$ Z.d% Z/d& Z0d' Z1d( Z2d) Z3d* Z4d+ Z5e6d,        Z7d- Z8d. Z9d/ Z:d0 Z;d1 Z<y2)3TestLiftObjc                 L    t        j                  dt        j                         y Nerrorwarningssimplefilterr   NumbaWarningrl   s    r(   r   zTestLiftObj.setUp7      gv':':;r*   c                 ,    t        j                          y rQ   r   resetwarningsrl   s    r(   tearDownzTestLiftObj.tearDown:       r*   c                    t        j                  |      }t        j                  |      }t        |      }t               5 } || }|j	                         }d d d        |j                  t        t        t        |                   t               5 } || }	|j	                         }
d d d        | j                  
       | j                  	       y # 1 sw Y   ~xY w# 1 sw Y   :xY w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_stdout=  s    --%t$V 	+&)J*J	+
 	eC/01 	(&VnGoo'G	( 	W-
G4	+ 	+	( 	(s    CCCC(c                 h    d fd}fd}| j                  |d       | j                  |d       y )Nc                 &    t        dd| dz  i       y )Nzival =ivalrq   rG   )r   s    r(   barz0TestLiftObj.test_lift_objmode_basic.<locals>.barP  s    (VTQY/0r*   c                 f    | dz  } t         5   |        d d d        | dz   S # 1 sw Y   | dz   S xY wNr5   r   r   r   s    r(   fooz0TestLiftObj.test_lift_objmode_basic.<locals>.fooS  s8    AID  D	!8O!8Os   	#0c                 z    | dz  } t         j                  5   |        d d d        | dz   S # 1 sw Y   | dz   S xY wr   numbar   r   s    r(   foo_nonglobalz:TestLiftObj.test_lift_objmode_basic.<locals>.foo_nonglobalY  s<    AID D	!8O!8Os   	-:{   r   )rd   r   r   r   s      @r(   test_lift_objmode_basicz#TestLiftObj.test_lift_objmode_basicO  s4    	1		 	++C5++M3?r*   c                 >    d fd}d}| j                  ||       y )Nc                 .    t        d| dz  i       | dz  } y )Narrrq   rG   )r   s    r(   r   z3TestLiftObj.test_lift_objmode_array_in.<locals>.barc  s    5#(#$1HCr*   c                     t        j                  |       j                  t         j                        }t        5   |       d d d        |dz   S # 1 sw Y   |dz   S xY wr   )nparangeastypeint64r   )nelemr   r   s     r(   r   z3TestLiftObj.test_lift_objmode_array_in.<locals>.fooh  sP    ))E"))"((3C  C 7N 7Ns   	AAr7   r   )rd   r   r  r   s      @r(   test_lift_objmode_array_inz&TestLiftObj.test_lift_objmode_array_inb  s$    	
	 ++C7r*   c                 >    d fd}d}| j                  ||       y )Nc                     t        |        y rQ   rG   r>   s    r(   r   z<TestLiftObj.test_lift_objmode_define_new_unused.<locals>.bars  s	    !Hr*   c                     t               5  d| z   }t        j                  |      } |       d d d        | S # 1 sw Y   | S xY wNrq   )r   r   r   )r:   r>   ar   s      r(   r   z<TestLiftObj.test_lift_objmode_define_new_unused.<locals>.foov  sD     " EIIaLA H	 Hs	   #9Ar   r   )rd   r   argr   s      @r(   #test_lift_objmode_define_new_unusedz/TestLiftObj.test_lift_objmode_define_new_unusedr  s$    		 ++C5r*   c                 l    d fd}fd}d}| j                  ||       | j                  ||       y )Nc                 "    t        |        d| z  S r   rG   r9   s    r(   inversez<TestLiftObj.test_lift_objmode_return_simple.<locals>.inverse      !Hq5Lr*   c                 d    t        d      5   |       }d d d        | |fS # 1 sw Y   | fS xY wNfloat64r  r   r:   r>   r  s     r(   r   z8TestLiftObj.test_lift_objmode_return_simple.<locals>.foo  s6     9- AJa4Ka4Ks   	#/c                 x    t        j                  d      5   |       }d d d        | |fS # 1 sw Y   | fS xY wr  r   r  s     r(   r   zBTestLiftObj.test_lift_objmode_return_simple.<locals>.foo_nonglobal  s:    + AJa4Ka4Ks   	-9r   r   )rd   r   r   r
  r  s       @r(   test_lift_objmode_return_simplez+TestLiftObj.test_lift_objmode_return_simple  s9    		
	
 ++C5++M3?r*   c                     d fd}t        j                  ddt         j                        }| j                  ||       y )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        | fS # 1 sw Y   xY w)N
float64[:]r  )r>   zr   )r   int)r:   r>   r  r  s      r(   r   z7TestLiftObj.test_lift_objmode_return_array.<locals>.foo  sE     <7; AJ!I a7N s   3<r5   r7   dtype)r   r   r  r   )rd   r   r
  r  s      @r(   test_lift_objmode_return_arrayz*TestLiftObj.test_lift_objmode_return_array  s5    		 ii2RZZ0++C5r*   c                 6    d }g d}| j                  ||       y )Nc                     t        d      5  t        |        d| d<   t        |        g d| z   }t        j                  |D cg c]  }d|z  	 c}      }d d d        | |fS c c}w # 1 sw Y   | fS xY w)Nr  r     r   r5   rq      r5   )r   r0   r   asarray)r:   r>   rD   s      r(   r   z5TestLiftObj.test_lift_objmode_using_list.<locals>.foo  sr     <0 3a!aMJJq1!A123 a4K  23 a4Ks   6A'A"
A'"A''A3r"  r   rd   r   r
  s      r(   test_lift_objmode_using_listz(TestLiftObj.test_lift_objmode_using_list  s    	 ++C5r*   c                 2    d }d}| j                  ||       y )Nc                     t        |       D ]  }  | r| dz  } t        d      5  t        |        | dz  } t        |        t        |       D ]  }| |z  } t        |         	 d d d        | S # 1 sw Y   | S xY w)Nr5   intpr9   )rB   r   r0   rC   s     r(   r   z4TestLiftObj.test_lift_objmode_var_redef.<locals>.foo  s    1X Q 6* aQaq AFA!H	 H Hs   <A++A5r   r   r%  s      r(   test_lift_objmode_var_redefz'TestLiftObj.test_lift_objmode_var_redef  s    	 ++C5r*   c                 4    d }| j                  |g dd       y )Nc                     || d<   t               5  t        |        d d d        t               5  d|z  | d<   t        |        d d d        | S # 1 sw Y   1xY w# 1 sw Y   | S xY wr  r   r0   r:   r  s     r(   r   z=TestLiftObj.test_case01_mutate_list_ahead_of_ctx.<locals>.foo  g    AaD " a !" 1u!a
 H 
 H   AAAA"r"     r   rd   r   s     r(   $test_case01_mutate_list_ahead_of_ctxz0TestLiftObj.test_case01_mutate_list_ahead_of_ctx  s    	 	++CB?r*   c                 ^    d }t        j                  g d      }| j                  ||d       y )Nc                     || d<   t               5  t        |        d d d        t               5  d|z  | d<   t        |        d d d        | S # 1 sw Y   1xY w# 1 sw Y   | S xY wr  r-  r.  s     r(   r   z>TestLiftObj.test_case02_mutate_array_ahead_of_ctx.<locals>.foo  r/  r0  r"  r1  r   arrayr   rd   r   r:   s      r(   %test_case02_mutate_array_ahead_of_ctxz1TestLiftObj.test_case02_mutate_array_ahead_of_ctx  s)    	 HHY++CB7r*   c                 .    d }| j                  |d       y )Nc                     t        d      5  g d}d d d        t               5  dd<   d d d        |S # 1 sw Y   #xY w# 1 sw Y   S xY wNzList(int64)r  r"  r7   rq   r   r=   s     r(   r   z6TestLiftObj.test_case03_create_and_mutate.<locals>.foo  M     =1  " !H	 H   4A = A
r5   r   r2  s     r(   test_case03_create_and_mutatez)TestLiftObj.test_case03_create_and_mutate  s    	 	++C3r*   c                    d }t        j                  g d      }t        |      }| j                  t        j
                        5 } ||       d d d        | j                  dt        j                               y # 1 sw Y   /xY w)Nc                 `    t        d      5  t        |        d d d        | S # 1 sw Y   | S xY w)Nr  kr-  r9   s    r(   r   z=TestLiftObj.test_case04_bogus_variable_type_info.<locals>.foo  s+     <0 aHH   #-r"  z1Invalid type annotation on non-outgoing variables)	r   r7  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  so    	 HHYCyv112 	fG	?  !		 	   	A<<Bc                     d }t        j                  g d      }t        |      }| j                  t              5 } ||      }d d d        | j                  dt        j                               y # 1 sw Y   /xY w)Nc                 T    t        d      5  | dz   }d d d        |S # 1 sw Y   S xY w)Nr  r  y              ?r   r.  s     r(   r   z4TestLiftObj.test_case05_bogus_type_info.<locals>.foo  s/     !<0 GHH   'r"  zXcan't unbox array from PyObject into native value.  The object maybe of a different type)r   r7  r   r   	TypeErrorr   r   r   )rd   r   r:   rF  r   r   s         r(   test_case05_bogus_type_infoz'TestLiftObj.test_case05_bogus_type_info   sm    	 HHYCyy) 	Vq'C	6  !	
	 	   	A22A;c                     d }| j                  t        j                        5 } t        |      d       d d d        d}| j	                  t        j                        |       y # 1 sw Y   1xY w)Nc                     t               5  t               5  t        |        d d d        d d d        | S # 1 sw Y   xY w# 1 sw Y   | S xY wrQ   r-  r9   s    r(   r   z3TestLiftObj.test_case06_double_objmode.<locals>.foo  sJ     !" !(* !a!! H! !! Hs   A 4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  sc    	 v112 	fDIcN	4V--.4	 	s   A%%A.c                 8   d }t        j                  g d      }t        |      }| j                  t        j
                        5 } ||       d d d        t        j                        }| j                  d|       | j                  d|       y # 1 sw Y   CxY w)Nc                 V    t               5  d| i}d}d d d        | fS # 1 sw Y   xY w)Nr	  r#  r   )r:   tus      r(   r   z6TestLiftObj.test_case07_mystery_key_error.<locals>.foo&  s8     " !H a7N s   (r"  z;Missing type annotation on outgoing variable(s): ['t', 'u']z9Example code: with objmode(t='<add_type_as_string_here>'))	r   r7  r   r   r   r   r   r   r   )rd   r   r:   rF  r   exstrs         r(   test_case07_mystery_key_errorz)TestLiftObj.test_case07_mystery_key_error$  s    	
 HHYCyv112 	fG	 F$$% #	 	 8		 	s   	BBc                    t               fd}t        j                  g d      }t        |      }| j	                  t
              5 } ||       d d d        | j                  t        j                        d       y # 1 sw Y   /xY w)Nc                     t        t        |             D ]8  }t               5  t        |      }| |   }||<   t	        d          d d d        : | S # 1 sw Y   FxY w)N2)rB   rb   r   r   r0   )r:   rD   rC  vds       r(   r   z8TestLiftObj.test_case08_raise_from_external.<locals>.foo>  sg    3q6] "$& "AA!AAaD!C&M	" "" H" "s   $AA	r"  z'2')	dictr   r7  r   r   KeyErrorrc   r   r   )rd   r   r:   rF  r   r_  s        @r(   test_case08_raise_from_externalz+TestLiftObj.test_case08_raise_from_external9  sq     F	 HHYCyx( 	FG	V--.6	 	s   	A??Bc                    d }t        j                  g d      }t        |      }| j                  t        j
                        5 } ||       d d d        | j                  dt        j                               y # 1 sw Y   /xY w)Nc                 F    t               5  t               # 1 sw Y   | S xY wrQ   )r   
ValueErrorr9   s    r(   r   z3TestLiftObj.test_case09_explicit_raise.<locals>.fooN  s      " # l"#Hs    r"  zBunsupported control flow due to raise statements inside with block)	r   r7  r   r   r   r   r   r   r   rE  s        r(   test_case09_explicit_raisez&TestLiftObj.test_case09_explicit_raiseM  sq    	
 HHYCyv334 	G	  !	
	 	rH  c                 \    d }t        j                  g d      }| j                  ||       y )Nc                     t        d      5  g d}d d d        t               5  dd<   d d d        |S # 1 sw Y   #xY w# 1 sw Y   S xY wr<  r   r=   s     r(   r   z;TestLiftObj.test_case10_mutate_across_contexts.<locals>.foo`  r=  r>  r"  r6  r8  s      r(   "test_case10_mutate_across_contextsz.TestLiftObj.test_case10_mutate_across_contexts]  s'    	 HHY++C3r*   c                 \    d }t        j                  g d      }| j                  ||       y )Nc                     t        d      5  t        j                  g dd      }d d d        t               5  dd<   d d d        |S # 1 sw Y   #xY w# 1 sw Y   S xY w)Nint64[:]r  r"  r  r  r7   rq   )r   r   r$  r=   s     r(   r   zATestLiftObj.test_case10_mutate_array_across_contexts.<locals>.fool  s\     :. 9JJy89 " ! H9 9 Hs   A	A	AAr"  r6  r8  s      r(   (test_case10_mutate_array_across_contextsz4TestLiftObj.test_case10_mutate_array_across_contextsj  s'    	 HHY++C3r*   c                     d }t        j                  g d      }t        |      }| j                  t              5 } ||       d d d        | j                  dt        j                               y # 1 sw Y   /xY w)Nc                 L    t               5  d }d d d        | S # 1 sw Y   | S xY w)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>.fooy  s+     " !!! H! Hs   #r"  z global name 'bar' is not defined)r   r7  r   r   	NameErrorr   r   r   rE  s        r(   &test_case11_define_function_in_contextz2TestLiftObj.test_case11_define_function_in_contextw  si    	 HHYCyy) 	VG	.  !	
	 	rO  c                 h    d fd}t        j                  g d      }| j                  ||       y )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              |       j                  d      }d d d        | |z   S # 1 sw Y   | z   S xY w)Nrl  r  r  )r   r   r   r:   r>   r   s     r(   r   z>TestLiftObj.test_case12_njit_inside_a_objmode_ctx.<locals>.foo  sG     :. 1DIaL''01q5L1q5Ls	   !<A	r"  r6  )rd   r   r:   r   s      @r(   %test_case12_njit_inside_a_objmode_ctxz1TestLiftObj.test_case12_njit_inside_a_objmode_ctx  s-    		
 HHY++C3r*   c                     d } |t        j                  g d            }t         j                  j                  t        j                  g d      |       y )Nc                 T    t        d      5  | dz  } | cd d d        S # 1 sw Y   y xY w)Nrl  r9   r5   r   r9   s    r(   r   zCTestLiftObj.test_case14_return_direct_from_objmode_ctx.<locals>.foo  s+     :. Q  s   'r"  )rq   r#  r!  )r   r7  testingassert_array_equal)rd   r   results      r(   *test_case14_return_direct_from_objmode_ctxz6TestLiftObj.test_case14_return_direct_from_objmode_ctx  s9    	
 RXXi()


%%bhhy&96Br*   c                 \    d }t        j                  g d      }| j                  ||       y )Nc                 (    dfd} ||       dz   S )Nr7   c                 h    t        d      5  t        |        | z   cd d d        S # 1 sw Y   y xY w)Nrl  r9   r-  )r:   js    r(   r   zHTestLiftObj.test_case15_close_over_objmode_ctx.<locals>.foo.<locals>.bar  s.    $z2 !!Hq5! ! !s   (1rq   r2   )r:   r   r  s     @r(   r   z;TestLiftObj.test_case15_close_over_objmode_ctx.<locals>.foo  s    A! q6A:r*   r"  r6  r8  s      r(   "test_case15_close_over_objmode_ctxz.TestLiftObj.test_case15_close_over_objmode_ctx  s'    	 HHY++C3r*   c                 n    ddl m fd}t        j                  g d      }| j	                  ||       y )Nr   )sparsec                     t        d      5  t        |        j                  |       }t        j                  |d         }d d d        |S # 1 sw Y   S xY w)Nr  rB  )r   r   )r   r0   
csr_matrixr   r  )r:   spxrC  sps      r(   r   z>TestLiftObj.test_case16_scipy_call_in_objmode_ctx.<locals>.foo  sR     7+ (ammA& HHSY'( H( Hs   5AAr"  )scipyr  r   r7  r   )rd   r   r:   r  s      @r(   %test_case16_scipy_call_in_objmode_ctxz1TestLiftObj.test_case16_scipy_call_in_objmode_ctx  s+    &	 HHY++C3r*   c                 n    dd l fdt        j                  g d      }| j                  |       y )Nr   c                 f    t               5  j                         d d d        y # 1 sw Y   y xY wrQ   )r   dis)r:   r  r   s    r(   r   z7TestLiftObj.test_case17_print_own_bytecode.<locals>.foo  s)     "   s   '0r"  )r  r   r7  r   )rd   r:   r  r   s     @@r(   test_case17_print_own_bytecodez*TestLiftObj.test_case17_print_own_bytecode  s+    	 HHY++C3r*   c                 v    d }t        j                  g d      }t        d       }| j                  |||       y )Nc                 X    t               5   | |d          d d d        y # 1 sw Y   y xY wra   r   )r$   r:   s     r(   r   zCTestLiftObj.test_case18_njitfunc_passed_to_objmode_ctx.<locals>.foo  s(     " QqT
  s    )r"  c                     | dz   S )NrT   r2   rK  s    r(   <lambda>zHTestLiftObj.test_case18_njitfunc_passed_to_objmode_ctx.<locals>.<lambda>  s
    AE r*   )r   r7  r   r   )rd   r   r:   r   s       r(   *test_case18_njitfunc_passed_to_objmode_ctxz6TestLiftObj.test_case18_njitfunc_passed_to_objmode_ctx  s3    	 HHY/"++CQ7r*   c                 6   fd| j                  t        j                  t        j                  f      5 }t	              } |t        j                  g d             d d d        d}| j                  |t        j                               y # 1 sw Y   1xY w)Nc                 |    t               5  | dk(  r
	 d d d        y	 d d d         | dz
        }|S # 1 sw Y   xY w)Nr      r5   r   )r:   retr   s     r(   r   z.TestLiftObj.test_case19_recursion.<locals>.foo  sI     " 6  a!e*CJ	 s   2;r"  zUntyped global name 'foo')
r   r   r   r   r   r   r7  r   r   r   )rd   r   rF  r   r   s       @r(   test_case19_recursionz!TestLiftObj.test_case19_recursion  sz    	  2 2F4H4HIJ 	&f9D)$%	& *c3v//01		& 	&s   )BBc                 \    d }t        j                  g d      }| j                  ||       y )Nc                 
   t         j                  j                  d       t         j                  j                         }t	        d      5  t         j                  j                         }d d d        | z   |z   S # 1 sw Y   xY wNr   r  rK  r   randomseedrandr   r:   r>   r  s      r(   r   z1TestLiftObj.test_case20_rng_works_ok.<locals>.foo  s_    IINN1		 A 9- %IINN$% q519% %s   
A99Br"  r6  r8  s      r(   test_case20_rng_works_okz$TestLiftObj.test_case20_rng_works_ok  s'    	 HHY++C3r*   c                 \    d }t        j                  g d      }| j                  ||       y )Nc                 H   t         j                  j                  d       t         j                  j                         }t	        d      5  t         j                  j                  d       t         j                  j                         }d d d        | z   |z   S # 1 sw Y   xY wr  r  r  s      r(   r   z6TestLiftObj.test_case21_rng_seed_works_ok.<locals>.foo  so    IINN1		 A 9- %		q!IINN$% q519	% %s   
>BB!r"  r6  r8  s      r(   test_case21_rng_seed_works_okz)TestLiftObj.test_case21_rng_seed_works_ok  s'    	 HHY++C3r*   c                     d t         fd       }| j                   |       |j                                | j                  t        t
               y )Nc                 l    t        j                  t        t        | j	                                           S rQ   )r   r$  listreversedtolistr9   s    r(   r   z'TestLiftObj.test_example01.<locals>.bar  s!    ::d8AHHJ#7899r*   c                      t        j                  d      } t        d      5  |  |       z   }d d d        |S # 1 sw Y   S xY w)NrT   zintp[:]r  )r   r   r   rv  s     r(   r   z'TestLiftObj.test_example01.<locals>.foo  sC    		!A9% AJ H Hs	   9A)r   r   py_funcassertIsr   r   )rd   r   r   s     @r(   test_example01zTestLiftObj.test_example01  sD    	: 
	 
	 	s{{}5g/r*   c                     d t              d        }t        j                  fd       }| j                   |       d       y )Nc                      y rQ   r2   )ss    r(   r   z1TestLiftObj.test_objmode_in_overload.<locals>.foo      r*   c                     d }|S )Nc                 T    t        d      5  | dz   }d d d        |S # 1 sw Y   S xY w)Nr)  r   r#  r   )r  r   s     r(   implzHTestLiftObj.test_objmode_in_overload.<locals>.foo_overload.<locals>.impl  s-    (  a%C 
 
rL  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    q6Mr*   r!  )r   r   r   rc   )rd   r  r  r   s      @r(   test_objmode_in_overloadz$TestLiftObj.test_objmode_in_overload  sL    	 
#	 
	 
	 
	 	e$r*   c                 z    t         d        } |       }| j                  |t               | j                  |d       y )Nc                  V    t        t              5  d} d d d        | S # 1 sw Y    S xY wNval皙(@)r   gv_typer  s    r(   
global_varz8TestLiftObj.test_objmode_gv_variable.<locals>.global_var  s)    W% JJ   (   )r   assertIsInstancer  rc   )rd   r  r  s      r(   test_objmode_gv_variablez$TestLiftObj.test_objmode_gv_variable  s=    		 
	
 lc3'b!r*   c                     t         d        }| j                  t        j                  d      5   |        d d d        y # 1 sw Y   y xY w)Nc                  V    t        t              5  d} d d d        | S # 1 sw Y    S xY w)Nr  r   )r   gv_type2r  s    r(   r  z>TestLiftObj.test_objmode_gv_variable_error.<locals>.global_var+  s)    X& JJr  zHError 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_error*  sN    		 
	
 ##  2
 	
 L	 	 		   >Ac                    t         d        }t         d        }||fD ]U  }| j                  t        |            5   |       }| j                  |t               | j                  |d       d d d        W y # 1 sw Y   bxY w)Nc                  j    t        t        j                        5  d} d d d        | S # 1 sw Y    S xY wr  )r   r   r)  r  s    r(   modattr1z6TestLiftObj.test_objmode_gv_mod_attr.<locals>.modattr19  s-    UZZ( JJ   (2c                  ~    t        t        j                  j                        5  d} d d d        | S # 1 sw Y    S xY wr  )r   r   r   r)  r  s    r(   modattr2z6TestLiftObj.test_objmode_gv_mod_attr.<locals>.modattr2?  s3    U[[--. JJs   2<)r   r  )r   subTestr   r  r  rc   )rd   r  r  r   r  s        r(   test_objmode_gv_mod_attrz$TestLiftObj.test_objmode_gv_mod_attr8  s    		 
	
 
	 
	
 X& 	*BR) *d%%c3/  b)	* *	** *s   0A66A?	c                     t         d        }| j                  t        j                  d      5   |        d d d        y # 1 sw Y   y xY w)Nc                  j    t        t        j                        5  d} d d d        | S # 1 sw Y    S xY wr  )r   r   THIS_DOES_NOT_EXISTr  s    r(   moderrorz<TestLiftObj.test_objmode_gv_mod_attr_error.<locals>.moderrorM  s/    U667 J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_errorL  sN    		 
	 ##  :
 	
 J	 	 	r  c                     t         d        }| j                  t        j                  d      5   |        d d d        y # 1 sw Y   y xY w)Nc                      t        t        j                  t        j                  t        j                        5  d} d}d}d d d        t
        S # 1 sw Y   t
        S xY w)Nv1v2v3r  )r   r   r)  r  float32r  r  s      r(   r  zETestLiftObj.test_objmode_gv_mod_attr_error_multiple.<locals>.moderrorZ  sL    EJJ5+D+D!MM+ 	
 J
 Js   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_multipleY  sN    		 
	 ##  :
 	
 J	 	 	r  c                     d t              d        }t        fd       }| j                   |       t        j                  d      j                  t        j                               y )Nc                       y rQ   r2   r2   r*   r(   r   z>TestLiftObj.test_objmode_closure_type_in_overload.<locals>.fooj  r  r*   c                  8    t         j                  d d  fd} | S )Nc                      t              5  t        j                  d      j                  t        j                        } d d d        | S # 1 sw Y    S xY wNr  r7   r   r   r   r   r  r   	shrubberys    r(   r  zUTestLiftObj.test_objmode_closure_type_in_overload.<locals>.foo_overload.<locals>.implp  A    + ;))B-..rzz:C;
;
   3AAr   r  r  r  s    @r(   r  zGTestLiftObj.test_objmode_closure_type_in_overload.<locals>.foo_overloadm  s    a(I Kr*   c                               S rQ   r2   r  s   r(   r   z>TestLiftObj.test_objmode_closure_type_in_overload.<locals>.barv  
    5Lr*   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_overloadi  s_    	 
#	 
	 
	 
	 	ryy}';';BJJ'GHr*   c                     d t              d        }t        fd       }| j                  t        j                  d      5   |        d d d        y # 1 sw Y   y xY w)Nc                       y 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      j                  t        j                        } d d d        | S # 1 sw Y    S xY w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  s     a(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|  sn    	 
#		 
		 
	 
	 ##2
 	
 E	 	 	s   AAc                     t         d        }| j                  t        j                  d      5   |        d d d        y # 1 sw Y   y xY w)Nc                  ^    t        d      5  d} d d d        t        S # 1 sw Y   t        S xY w)Nrq   )badr5   )r   r  r  s    r(   r  z6TestLiftObj.test_objmode_invalid_use.<locals>.moderror  s)    U# J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  sN    		 
	 ##  '
 	 J	 	 	r  c                 *   t         j                  d d  t        fd       } |       \  }}}| j                  |d       | j                  |d       | j                  |t	        j
                  d      j                  t        j                               y )Nc                      t        dt              5  d} | }t        j                  d      j	                  t        j
                        }d d d         fS # 1 sw Y   xY w)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  sZ    
 I'h? 3YYq\((23 r2:	3 3s   7A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  sx    ;;q>		 
	 U
BH-F+BIIaL$7$7$A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       } |       }| j                  |       | j                  |j                  d	d
      d       t        j                  dt        j                        d
z   }| j                  |j                  |       y )Nvaluer7  c                   8    e Zd Zd Zed        Zd Zed        Zy).TestLiftObj.test_objmode_jitclass.<locals>.Bagc                 f    || _         t        j                  |t        j                        | _        y )Nr  )r	  r   zerosr  r7  )rd   r	  s     r(   __init__z7TestLiftObj.test_objmode_jitclass.<locals>.Bag.__init__  s    "
XXe2::>
r*   c                 .    | j                   j                  S rQ   )r7  sizerl   s    r(   r  z3TestLiftObj.test_objmode_jitclass.<locals>.Bag.size  s    zz&r*   c                 |    t        | j                        D ]  }| j                  |xx   |z  cc<    | j                  S rQ   )rB   r  r7  )rd   r  rD   s      r(   	incrementz8TestLiftObj.test_objmode_jitclass.<locals>.Bag.increment  s6    tyy) )AJJqMS(M)zz!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    s4    ? ' '"
  r*   r     c                       y rQ   r2   r2   r*   r(   r   z.TestLiftObj.test_objmode_jitclass.<locals>.foo  r  r*   c                  .    j                   fd} | S )Nc                  ~    t              5   d      } | j                  d       d d d        | S # 1 sw Y    S xY w)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   2<)_numba_type_)r  r  r  mybags    @r(   r  z7TestLiftObj.test_objmode_jitclass.<locals>.foo_overload  s    **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   r7  )
rd   specnr  r   r  	exp_arrayr  r   r  s
          @@@r(   test_objmode_jitclassz!TestLiftObj.test_objmode_jitclass  s    ekk"emmA&'

 
$	& 	 
	$ A	 
#	 
	 
	 
	 Ea%q!e,HHS

3a7	3r*   c                 T    t        d      5  | dz  }d d d        |S # 1 sw Y   S xY wNr  outputr7   r  r:   r'  s     r(   case_objmode_cachezTestLiftObj.case_objmode_cache  s-    I& 	VF		rL  c                     t        g d      t        fd       }| j                  t        j                        5 } |        d d d        | j                  t        j                        d       y # 1 sw Y   /xY w)Nr5   rq   r#  r!  rT   c                  T    t              5  g d} d d d        | S # 1 sw Y    S xY w)Nr  r+  r  )r   ret_types    r(   test2z6TestLiftObj.test_objmode_reflected_list.<locals>.test2  s*    X& &%&J&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   rR  r   r   rd   r.  r   r-  s      @r(   test_objmode_reflected_listz'TestLiftObj.test_objmode_reflected_list  sr    /*		 
	
 v334 	G	  !3	
	 	   A22A;c                     t        h d      t        fd       }| j                  t        j                        5 } |        d d d        | j                  t        j                        d       y # 1 sw Y   /xY w)N   r5   rq   r#  r!  rT   c                  T    t              5  h d} d d d        | S # 1 sw Y    S xY w)N)r|  r5  r  )r|  r-  s    r(   r.  z5TestLiftObj.test_objmode_reflected_set.<locals>.test2  s*    ) )()M)Mr/  zObjmode context failed. Argument 'result' is declared as an unsupported type: reflected set\(int(32|64)\). Reflected types are not supported.r0  r1  s      @r(   test_objmode_reflected_setz&TestLiftObj.test_objmode_reflected_set  sr    /*		 
	
 v334 	G	  !3	
	 	r3  c                 2   t        j                  t         j                  t         j                        t        fd       }| j                  t              5 } |        d d d        | j                  dt        j                               y # 1 sw Y   /xY w)Nc                  V    t              5  ddd} d d d        | S # 1 sw Y    S xY w)Nresr5   rq   )r,   r-   r  r;  r-  s    r(   test4z2TestLiftObj.test_objmode_typed_dict.<locals>.test4  s/    X& 'A&'J'Js   (zFcan't unbox a <class 'dict'> as a <class 'numba.typed.typeddict.Dict'>)
r   DictTypeunicode_typer  r   r   rM  r   r   r   rd   r=  r   r-  s      @r(   test_objmode_typed_dictz#TestLiftObj.test_objmode_typed_dict  sz    >>%"4"4ekkB		 
	
 y) 	VG	9  !	
	 	s   BBc                    t        j                  t         j                        t        fd       }| j	                  t
              5 } |        d d d        | j                  t        j                        d       y # 1 sw Y   /xY w)Nc                  T    t              5  ddg} d d d        | S # 1 sw Y    S xY w)Nr:  r5   rq   r  r<  s    r(   r=  z2TestLiftObj.test_objmode_typed_list.<locals>.test4(  s.    X& !fJJr/  zLcan't unbox a <class 'list'> as a (<class ')?numba.typed.typedlist.List('>)?)	r   ListTyper  r   r   rM  rR  r   r   r@  s      @r(   test_objmode_typed_listz#TestLiftObj.test_objmode_typed_list&  su    >>%++.		 
	
 y) 	VG	  !@	
	 	s   A>>Bc                     t         d        }t        j                  dt        j                        j	                  d      }|j                  |      } ||      }| j                  ||       y )Nc                     t        j                  d      5  | j                  d      }d d d        |S # 1 sw Y   S xY w)Nz
int64[::1]r  r  )r   r   viewr=   s     r(   r   z1TestLiftObj.test_objmode_use_of_view.<locals>.foo9  s5    . $FF7O$H$Hs   3=r5   r  )r   r   onesr  rH  r  r   )rd   r   r	  expectedr   s        r(   test_objmode_use_of_viewz$TestLiftObj.test_objmode_use_of_view6  s]     
	 
	
 GGArxx %%i0;;q>!f#.r*   N)=ry   rz   r{   r   r   r   r   r  r  r  r  r   r&  r*  r3  r9  r?  rG  rN  rT  rZ  rb  rf  ri  rm  rr  rw  r}  unittestexpectedFailurer  r   r  r  r   r  r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r#  r  r)  r2  r7  rA  rE  rK  r2   r*   r(   r   r   5  s   <!5$@&8 6@&6 #6 #66$ #@ #@"8$ #4 #4"
&5"*7(
  #
4 #
44
"4C 4 4 4 44 '8 '8 2   2 
4 
440 %$
"*( I&6C$14h  

$
$
 
 /r*   r   c                     | dz  S Nr7   r2   r9   s    r(   case_inner_pyfuncrP  E  s    r6Mr*   c                 `    t        d      5  t        |       }d d d        |S # 1 sw Y   S xY wNr  r&  )r   rP  r(  s     r(   r)  r)  I  s.    			" &"1%&M&MrD  c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestLiftObjCachingc                 L    t        j                  dt        j                         y r   r   rl   s    r(   r   zTestLiftObjCaching.setUpR  r   r*   c                 ,    t        j                          y rQ   r   rl   s    r(   r   zTestLiftObjCaching.tearDownU  r   r*   c                     t        d      |      }| j                   |d      d        t        d      |      }| j                  |j                         | j                   |d      d       | j	                  |j                         y )NT)cacher   r  )r   rc   assertFalse_cache_hits
assertTrue)rd   r  firstseconds       r(   checkzTestLiftObjCaching.checkX  sr     4 )sT*!D!'*++,d+**+r*   c                 ,    d }| j                  |       y )Nc                 T    t        d      5  | dz  }d d d        |S # 1 sw Y   S xY wr%  r  r(  s     r(   r   z=TestLiftObjCaching.test_objmode_caching_basic.<locals>.pyfuncb  s-    	*  R M MrL  r^  )rd   r   s     r(   test_objmode_caching_basicz-TestLiftObjCaching.test_objmode_caching_basica  s    	
 	

6r*   c                 8    d fd}| j                  |       y )Nc                     | dz  S rO  r2   r9   s    r(   other_pyfunczNTestLiftObjCaching.test_objmode_caching_call_closure_bad.<locals>.other_pyfuncj  s    r6Mr*   c                 \    t        d      5   |       }d d d        |S # 1 sw Y   S xY wrR  r  )r:   r'  re  s     r(   r   zHTestLiftObjCaching.test_objmode_caching_call_closure_bad.<locals>.pyfuncm  s.    	* )%a)M)Ms   	!+ra  )rd   r   re  s     @r(   %test_objmode_caching_call_closure_badz8TestLiftObjCaching.test_objmode_caching_call_closure_badi  s    		
 	

6r*   c                 .    | j                  t               y rQ   )r^  r)  rl   s    r(   &test_objmode_caching_call_closure_goodz9TestLiftObjCaching.test_objmode_caching_call_closure_goodt  s    

%&r*   N)	ry   rz   r{   r   r   r^  rb  rg  ri  r2   r*   r(   rT  rT  O  s     <!,	'r*   rT  c                       e Zd Zd Zd Zd Zy)TestBogusContextc                 0   t        t              }| j                  t        j                        5 }t        || j                  | j                  | j                  i        d d d        | j                  dt        j                               y # 1 sw Y   /xY w)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_globaly  su    ^,v334 	

2	 	8  !			 	   /BBc                 0   t        t              }| j                  t        j                        5 }t        || j                  | j                  | j                  i        d d d        | j                  dt        j                               y # 1 sw Y   /xY w)Nr   z"Unsupported context manager in use)r)   r]   r   r   r   r   r   r   r   r   r   r   rm  s      r(   test_invalidzTestBogusContext.test_invalid  su    \*v334 	

2	 	0  !			 	ro  c                     t         d        }| j                  t        j                        5 } |        d d d        t	        j
                        }d}| j                  ||       y # 1 sw Y   3xY w)Nc                  F    t        d      5 } 	 d d d        y # 1 sw Y   y xY w)N )openr  s    r(   r   z;TestBogusContext.test_with_as_fails_gracefully.<locals>.foo  s#    b Q  s    zGThe 'with (context manager) as (variable):' construct is not supported.)r   r   r   UnsupportedBytecodeErrorr   r   r   )rd   r   r   excstrr   s        r(   test_with_as_fails_gracefullyz.TestBogusContext.test_with_as_fails_gracefully  sm    		 
	 v>>? 	6E	 V%%&c6"	 	s   A&&A/N)ry   rz   r{   rn  rq  ry  r2   r*   r(   rk  rk  x  s    

#r*   rk  c                   >    e Zd ZdZeej                  d               Zy)TestMiscFc                     t               s| j                  d       d }g d}t        ||      }| j                  |       y )Nzstrace support missingc                  &    t        d      d        } y )Nzvoid()c                  X    t        j                         5  	 d d d        y # 1 sw Y   y xY wrQ   r   r2   r*   r(   r  zFTestMisc.test_no_fork_in_compilation.<locals>.force_compile.<locals>.f  s#    ]]_   s    ))r   rv  s    r(   force_compilez;TestMisc.test_no_fork_in_compilation.<locals>.force_compile  s    (^ r*   )forkcloneexecve)r   skipTestr   rY  )rd   r  syscallsstrace_datas       r(   test_no_fork_in_compilationz$TestMisc.test_no_fork_in_compilation  s?      !MM23	 / ]H5%r*   N)ry   rz   r{   _numba_parallel_test_r   r   run_test_in_subprocessr  r2   r*   r(   r{  r{    s*     "$$& % &r*   r{  __main__)Mr   r   numpyr   r   numba.core.transformsr   r   numba.core.withcontextsr   r   r   numba.core.bytecoder   r	   numba.core.interpreterr
   
numba.corer   numba.core.registryr   numba.core.compilerr   r   r   r   r   r   numba.core.extendingr   numba.tests.supportr   r   r   r   r   r   r   r   r   r   numba.core.utilsr   numba.experimentalr   rL  r)   r3   r;   r?   rE   rH   rK   rM   rO   rR   rU   rX   r  r\   r]   r)  r  r_   r}   r   r   r   r   r   rP  r)  rT  rk  r{  ry   mainr2   r*   r(   <module>r     s>       ? Q Q : .  * 9 . . )9 9 9 ' ' "",	
 x 
 **6h 6,;( ;:9( 9.-,& -,`M/*h M/`&'X &'R%#* %#P&x &@ zHMMO r*   