
    xKg                     j   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' d dl(m)Z) d dl*m+Z+ d dl,Z,d Z-d Z.d Z/d Z0d Z1d Z2d Z3d Z4d Z5d Z6d Z7d Z8 e9       Z:d Z;ejx                  Z= G d de       Z> G d de       Z? G d d e?      Z@ G d! d"e?      ZAd# ZBd$ ZC G d% d&ee       ZDd' ZEd( ZF G d) d*ee       ZG G d+ d,e?      ZH G d- d.e       ZIeJd/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)	PYVERSION)jitclassc                     t        j                  |       }t        |      }t        |      }|j	                  |      }|S )N)func_id)r   from_functionr	   r
   	interpret)funcr    bcinterpfunc_irs        `/home/alanp/www/video.onchill/myenv/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'   lift1r2   !   s.    	#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)Nr4   r5   r+   r,   r-   i r7   r.   r9   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+   r6   r,   r4   r-   r7   E)r/   r   r0   ranger9   is     r'   lift4rD   K   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+   r/   r1   r)   r'   lift5rG   a   s	    	#Jr)   c                  z    d} t        d|        t        5  | dz  } d d d        t        d|        | S # 1 sw Y   xY w)Nr4   r+   r,   r/   r   r8   s    r'   	liftcall1rJ   e   s7    	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)Nr4   r+   r,   r6   r-   rI   r8   s    r'   	liftcall2rL   n   sY    	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)Nr4   r+   r   r,   r6   r-   )r/   r   rA   rB   s     r'   	liftcall3rN   z   sr    	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   r1   r)   r'   	liftcall4rQ      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)Nr6      r+   )rA   r   r/   )rC   s    r'   	liftcall5rT      sT    2Y!HAvc
	 \
 H  \  H \s   A

A	c                  <    t         5  	 d d d        y # 1 sw Y   y xY wrP   )undefined_global_varr1   r)   r'   lift_undefiendrW          	 
		   c                  <    t         5  	 d d d        y # 1 sw Y   y xY wrP   )bogus_contextmanagerr1   r)   r'   lift_invalidr\      rX   rY   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 Nr4   rd   )rg   r2   rc   s    r'   
test_lift1zTestWithFinding.test_lift1       u15r)   c                 2    | j                  t        d       y N   rj   )rg   r:   rk   s    r'   
test_lift2zTestWithFinding.test_lift2   rm   r)   c                 2    | j                  t        d       y ri   )rg   r>   rk   s    r'   
test_lift3zTestWithFinding.test_lift3   rm   r)   c                 2    | j                  t        d       y ro   )rg   rD   rk   s    r'   
test_lift4zTestWithFinding.test_lift4   rm   r)   c                 2    | j                  t        d       y )Nr   rj   )rg   rG   rk   s    r'   
test_lift5zTestWithFinding.test_lift5   rm   r)   N)	__name__
__module____qualname__rg   rl   rq   rs   ru   rw   r1   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 rP   )
superr|   setUpr   typing_context	typingctxtarget_context	targetctxr   flags)rc   	__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   rb   ra   r   r   entry_pointgetvalue)	rc   r#   rd   expected_stdoutre   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   )rc   re   argsreturn_typer   r   r   s          r'   r   zBaseTestWithLifting.compile_ir   s9    NN	NN	

)Y'r; 	;r)   )r1   N)rx   ry   rz   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 )Nr4   zA
C
rd   r   )r   r2   rk   s    r'   rl   zTestLiftByPass.test_lift1   s    !!%a2: 	" 	<r)   c                 4    | j                  t        dd       y )Nrp   zA 1
D 3
r   )r   r:   rk   s    r'   rq   zTestLiftByPass.test_lift2   s    !!%a2> 	" 	@r)   c                 4    | j                  t        dd       y )Nr4   zA 1 100
D 2 101
r   )r   r>   rk   s    r'   rs   zTestLiftByPass.test_lift3   s    !!%a2F 	" 	Hr)   c                 4    | j                  t        dd       y )Nrp   z	A 0
E 11
r   )r   rD   rk   s    r'   ru   zTestLiftByPass.test_lift4   s    !!%a2? 	" 	Ar)   c                 4    | j                  t        dd       y )Nr   zA
r   )r   rG   rk   s    r'   rw   zTestLiftByPass.test_lift5   s    !!%a27 	" 	9r)   N)rx   ry   rz   rl   rq   rs   ru   rw   r1   r)   r'   r   r      s    <@HA9r)   r   c                   D    e Zd Zd Zd Zd Zd Zd Z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   rb   r   )rc   r#   jittedgotexpects        r'   check_same_semanticz TestLiftCall.check_same_semantic   sd     d#H  &F  	):;  s   A/A;/A8;Bc                 ^    | j                  t        dd       | j                  t               y )Nr4   zA 1
B 2
r   )r   rJ   r   rk   s    r'   test_liftcall1zTestLiftCall.test_liftcall1   s+    !!)!2> 	" 	@  +r)   c                 ^    | j                  t        dd       | j                  t               y )Nrp   zA 1
B 2
C 12
r   )r   rL   r   rk   s    r'   test_liftcall2zTestLiftCall.test_liftcall2  +    !!)!2D 	" 	F  +r)   c                 ^    | j                  t        dd       | j                  t               y )Nrp   zA 1
B 2
C 47
r   )r   rN   r   rk   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   rQ   assertInstr	exception)rc   acceptraisesmsgs       r'   test_liftcall4zTestLiftCall.test_liftcall4  sw    $$f&>&>((&*>*>@v&&DO ' Dc3v//01 '&s   BBc                 ^    | j                  t        dd       | j                  t               y )Nr4   z0
1
2
3
4
5
A
r   )r   rT   r   rk   s    r'   test_liftcall5zTestLiftCall.test_liftcall5  s-     	!!)!2I 	" 	K  +r)   N)rx   ry   rz   r   r   r   r   r   r   r   r   r1   r)   r'   r   r      s7    
<,
,
,
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   rc   r   kwargsr   fns       r'   corez+expected_failure_for_list_arg.<locals>.core"  sV    v112ft%d%f% 32&**+	- 32   AA%r1   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+  sV    v112ft%d%f% 36&**+	- 32r   r1   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%d               Z&ej:                  d        Z'd Z(d  Z)d! Z*d" Z+d# Z,d$ Z-d% Z.d& Z/d' Z0d( Z1d) Z2d* Z3d+ Z4e5d,        Z6d- Z7d. Z8d/ Z9d0 Z:d1 Z;y2)3TestLiftObjc                 L    t        j                  dt        j                         y Nerrorwarningssimplefilterr   NumbaWarningrk   s    r'   r   zTestLiftObj.setUp5      gv':':;r)   c                 ,    t        j                          y rP   r   resetwarningsrk   s    r'   tearDownzTestLiftObj.tearDown8       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rP   )copydeepcopyr   r   r   compiletuplemapr   rb   assertPreciseEqual)rc   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 =ivalrp   rF   )r   s    r'   barz0TestLiftObj.test_lift_objmode_basic.<locals>.barN  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Nr4   r   r   r   s    r'   fooz0TestLiftObj.test_lift_objmode_basic.<locals>.fooQ  s3    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_nonglobalW  s7    AIDD	 !8O !8Os   	-:{   r   )rc   r   r   r   s      @r'   test_lift_objmode_basicz#TestLiftObj.test_lift_objmode_basicM  s4    	1		 	++C5++M3?r)   c                 >    d fd}d}| j                  ||       y )Nc                 .    t        d| dz  i       | dz  } y )Narrrp   rF   )r   s    r'   r   z3TestLiftObj.test_lift_objmode_array_in.<locals>.bara  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>.foof  sK    ))E"))"((3C C ! 7N ! 7Ns   	AAr6   r   )rc   r   r  r   s      @r'   test_lift_objmode_array_inz&TestLiftObj.test_lift_objmode_array_in`  s$    	
	 ++C7r)   c                 >    d fd}d}| j                  ||       y )Nc                     t        |        y rP   rF   r=   s    r'   r   z<TestLiftObj.test_lift_objmode_define_new_unused.<locals>.barq  s	    !Hr)   c                     t               5  d| z   }t        j                  |      } |       d d d        | S # 1 sw Y   | S xY wNrp   )r   r   r   )r9   r=   ar   s      r'   r   z<TestLiftObj.test_lift_objmode_define_new_unused.<locals>.foot  s?     "EIIaLA # H	 # Hs	   #9Ar   r   )rc   r   argr   s      @r'   #test_lift_objmode_define_new_unusedz/TestLiftObj.test_lift_objmode_define_new_unusedp  s$    		 ++C5r)   c                 l    d fd}fd}d}| j                  ||       | j                  ||       y )Nc                 "    t        |        d| z  S r   rF   r8   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   r9   r=   r  s     r'   r   z8TestLiftObj.test_lift_objmode_return_simple.<locals>.foo  s1     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  s5    +AJ ,a4K ,a4Ks   	-9r   r   )rc   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   rF   r8   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)r9   r=   r  r  s      r'   r   z7TestLiftObj.test_lift_objmode_return_array.<locals>.foo  s>     <7;AJ!I < a7N <;s   3<r4   r6   dtype)r   r   r  r   )rc   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   r4   rp      r4   )r   r/   r   asarray)r9   r=   rC   s      r'   r   z5TestLiftObj.test_lift_objmode_using_list.<locals>.foo  sq     <0a!aMJJq1q!Aq12 1 a4K  2 1 a4Ks   6A'A"
A'"A''A3r!  r   rc   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)Nr4   intpr8   )rA   r   r/   rB   s     r'   r   z4TestLiftObj.test_lift_objmode_var_redef.<locals>.foo  su    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   r/   r9   r  s     r'   r   z=TestLiftObj.test_case01_mutate_list_ahead_of_ctx.<locals>.foo  [    AaD "a # !"1u!a #
 H #" #
 H   AAAA"r!     r   rc   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.  r/  r!  r0  r   arrayr   rc   r   r9   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!  r6   rp   r   r<   s     r'   r   z6TestLiftObj.test_case03_create_and_mutate.<locals>.foo  ?     =1 2 "! #H	 21"H   4A = A
r4   r   r1  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,  r8   s    r'   r   z=TestLiftObj.test_case04_bogus_variable_type_info.<locals>.foo  s&     <0a 1H 1H   #-r!  z1Invalid type annotation on non-outgoing variables)	r   r6  r   r   r   r   r   r   r   rc   r   r9   cfoor   s        r'   $test_case04_bogus_variable_type_infoz0TestLiftObj.test_case04_bogus_variable_type_info  sh    	 HHYCyv112fG 3?  !	 32   	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 1H 1H   'r!  zXcan't unbox array from PyObject into native value.  The object maybe of a different type)r   r6  r   r   	TypeErrorr   r   r   )rc   r   r9   rE  r   r   s         r'   test_case05_bogus_type_infoz'TestLiftObj.test_case05_bogus_type_info  sf    	 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rP   r,  r8   s    r'   r   z3TestLiftObj.test_case06_double_objmode.<locals>.foo  s>     !"(*a + # H +* # Hs   A 4A =	A  A
r   z@During: resolving callee type: type\(ObjModeLiftedWith\(<.*>\)\))r   r   r   r   assertRegexr   r   )rc   r   r   pats       r'   test_case06_double_objmodez&TestLiftObj.test_case06_double_objmode  s\    	 v112fDIcN 34V--.4 32s   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   )r9   tus      r'   r   z6TestLiftObj.test_case07_mystery_key_error.<locals>.foo$  s1     "!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   r6  r   r   r   r   r   r   r   )rc   r   r9   rE  r   exstrs         r'   test_case07_mystery_key_errorz)TestLiftObj.test_case07_mystery_key_error"  s    	
 HHYCyv112fG 3 F$$% #	 	 8	 32s   	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)rA   ra   r   r   r/   )r9   rC   rB  vds       r'   r   z8TestLiftObj.test_case08_raise_from_external.<locals>.foo<  sY    3q6]$&AA!AAaD!C&M	 '& # H '&s   $AA	r!  z'2')	dictr   r6  r   r   KeyErrorrb   r   r   )rc   r   r9   rE  r   r^  s        @r'   test_case08_raise_from_externalz+TestLiftObj.test_case08_raise_from_external7  sj     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rP   )r   
ValueErrorr8   s    r'   r   z3TestLiftObj.test_case09_explicit_raise.<locals>.fooL  s     " l" #Hs    r!  zBunsupported control flow due to raise statements inside with block)	r   r6  r   r   r   r   r   r   r   rD  s        r'   test_case09_explicit_raisez&TestLiftObj.test_case09_explicit_raiseK  sj    	
 HHYCyv334G 5  !	
 54rG  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!  r5  r7  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  r6   rp   )r   r   r#  r<   s     r'   r   zATestLiftObj.test_case10_mutate_array_across_contexts.<locals>.fooj  sN     :.JJy8 / "! # H /." Hs   A	A	AAr!  r5  r7  s      r'   (test_case10_mutate_array_across_contextsz4TestLiftObj.test_case10_mutate_array_across_contextsh  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   r1   r  s    r'   r   zLTestLiftObj.test_case11_define_function_in_context.<locals>.foo.<locals>.bary  s    q5Lr)   r   )r9   r   s     r'   r   z?TestLiftObj.test_case11_define_function_in_context.<locals>.foow  s&     "! # H # Hs   #r!  z global name 'bar' is not defined)r   r6  r   r   	NameErrorr   r   r   rD  s        r'   &test_case11_define_function_in_contextz2TestLiftObj.test_case11_define_function_in_contextu  sb    	 HHYCyy)VG *.  !	
 *)rN  c                 h    d fd}t        j                  g d      }| j                  ||       y )Nc                     | dz   S r   r1   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)Nrk  r  r   )r   r   r   r9   r=   r   s     r'   r   z>TestLiftObj.test_case12_njit_inside_a_objmode_ctx.<locals>.foo  sB     :.DIaL''0 /q5L /q5Ls	   !<A	r!  r5  )rc   r   r9   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)Nrk  r8   r4   r   r8   s    r'   r   zCTestLiftObj.test_case14_return_direct_from_objmode_ctx.<locals>.foo  s"     :.Q /..s   'r!  )rp   r"  r   )r   r6  testingassert_array_equal)rc   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 )Nr6   c                 h    t        d      5  t        |        | z   cd d d        S # 1 sw Y   y xY w)Nrk  r8   r,  )r9   js    r'   r   zHTestLiftObj.test_case15_close_over_objmode_ctx.<locals>.foo.<locals>.bar  s%    $z2!Hq5 322s   (1rp   r1   )r9   r   r  s     @r'   r   z;TestLiftObj.test_case15_close_over_objmode_ctx.<locals>.foo  s    A! q6A:r)   r!  r5  r7  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   rA  )r   r   )r   r/   
csr_matrixr   r   )r9   spxrB  sps      r'   r   z>TestLiftObj.test_case16_scipy_call_in_objmode_ctx.<locals>.foo  sM     7+ammA& HHSY' , H , Hs   5AAr!  )scipyr  r   r6  r   )rc   r   r9   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rP   )r   dis)r9   r  r   s    r'   r   z7TestLiftObj.test_case17_print_own_bytecode.<locals>.foo  s      " #""s   '0r!  )r  r   r6  r   )rc   r9   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r`   r   )r#   r9   s     r'   r   zCTestLiftObj.test_case18_njitfunc_passed_to_objmode_ctx.<locals>.foo  s     "QqT
 #""s    )r!  c                     | dz   S )NrS   r1   rJ  s    r'   <lambda>zHTestLiftObj.test_case18_njitfunc_passed_to_objmode_ctx.<locals>.<lambda>  s    AEr)   )r   r6  r   r   )rc   r   r9   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      r4   r   )r9   retr   s     r'   r   z.TestLiftObj.test_case19_recursion.<locals>.foo  s@     "6 #" # a!e*CJ	 #"s   2;r!  zUntyped global name 'foo')
r   r   r   r   r   r   r6  r   r   r   )rc   r   rE  r   r   s       @r'   test_case19_recursionz!TestLiftObj.test_case19_recursion  su    	  2 2F4H4HIJf9D)$% K *c3v//01	 KJs   )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  rJ  r   randomseedrandr   r9   r=   r  s      r'   r   z1TestLiftObj.test_case20_rng_works_ok.<locals>.foo  sX    IINN1		 A 9-IINN$ . q519 .-s   
A99Br!  r5  r7  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  sh    IINN1		 A 9-		q!IINN$ . q519	 .-s   
>BB!r!  r5  r7  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 rP   )r   r#  listreversedtolistr8   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)NrS   zintp[:]r  )r   r   r   ru  s     r'   r   z'TestLiftObj.test_example01.<locals>.foo  s>    		!A9%AJ & H & Hs	   9A)r   r   py_funcassertIsr   r   )rc   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 rP   r1   )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 )
 )
rK  r1   )r  r  s     r'   foo_overloadz:TestLiftObj.test_objmode_in_overload.<locals>.foo_overload  s     Kr)   c                        d      S r   r1   r   s   r'   fz/TestLiftObj.test_objmode_in_overload.<locals>.f  s    q6Mr)   r   )r   r   r   rb   )rc   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  rb   )rc   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   )rc   r  s     r'   test_objmode_gv_variable_errorz*TestLiftObj.test_objmode_gv_variable_error'  sI    		 
	
 ##  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>.modattr16  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<  s.    U[[--. /J /Js   2<)r   r  )r   subTestr   r  r  rb   )rc   r  r  r   r  s        r'   test_objmode_gv_mod_attrz$TestLiftObj.test_objmode_gv_mod_attr5  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>.moderrorJ  s*    U667 8J 8Jr  zQError handling objmode argument 'val'. Getattr cannot be resolved at compile-timer  rc   r  s     r'   test_objmode_gv_mod_attr_errorz*TestLiftObj.test_objmode_gv_mod_attr_errorI  sI    		 
	 ##  :

 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>.moderrorW  sG    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_multipleV  sI    		 
	 ##  :

 J
 
 
r  c                     d t              d        }t        fd       }| j                   |       t        j                  d      j                  t        j                               y )Nc                       y rP   r1   r1   r)   r'   r   z>TestLiftObj.test_objmode_closure_type_in_overload.<locals>.foog  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  r6   r   r   r   r   r  r   	shrubberys    r'   r  zUTestLiftObj.test_objmode_closure_type_in_overload.<locals>.foo_overload.<locals>.implm  <    +))B-..rzz:C ,
 ,
   3AAr   r  r  r  s    @r'   r  zGTestLiftObj.test_objmode_closure_type_in_overload.<locals>.foo_overloadj  s    a(I Kr)   c                               S rP   r1   r  s   r'   r   z>TestLiftObj.test_objmode_closure_type_in_overload.<locals>.bars  
    5Lr)   r6   )r   r   r   r   r   r   r  rc   r  r   r   s      @r'   %test_objmode_closure_type_in_overloadz1TestLiftObj.test_objmode_closure_type_in_overloadf  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 rP   r1   r1   r)   r'   r   zDTestLiftObj.test_objmode_closure_type_in_overload_error.<locals>.fooz  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 rP   r1   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_errory  si    	 
#		 
		 
	 
	 ##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)Nrp   )badr4   )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  sI    		 
	 ##  '
 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    :(ArS   )r   r  r   r   r   int32)r   r  r  array_tys      r'   r   z5TestLiftObj.test_objmode_multi_type_args.<locals>.foo  sU    
 I'h?YYq\((2 @ r2:	 @?s   7AA!r  i  rS   )r   r  r   r   r   r   r   )rc   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valuer6  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  r6  )rc   r  s     r'   __init__z7TestLiftObj.test_objmode_jitclass.<locals>.Bag.__init__  s    "
XXe2::>
r)   c                 .    | j                   j                  S rP   )r6  sizerk   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 rP   )rA   r  r6  )rc   r  rC   s      r'   	incrementz8TestLiftObj.test_objmode_jitclass.<locals>.Bag.increment  s1    tyy)AJJqMS(M *zz!r)   c                     | |z   S rP   r1   r<   s     r'   addz2TestLiftObj.test_objmode_jitclass.<locals>.Bag.add  s    1ur)   N)	rx   ry   rz   r  propertyr  r  staticmethodr  r1   r)   r'   Bagr
    s4    ? ' '"
  r)   r     c                       y rP   r1   r1   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  s9    +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 rP   r1   r  s   r'   r   z.TestLiftObj.test_objmode_jitclass.<locals>.bar  r  r)   rp   r"  rS   r   r  )r   r  r  r   objectr   r   r  rb   r  r   r  r   r6  )
rc   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  outputr6   r  r9   r&  s     r'   case_objmode_cachezTestLiftObj.case_objmode_cache  s(    I&VF ' 'rK  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r4   rp   r"  r   rS   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   rQ  r   r   rc   r-  r   r,  s      @r'   test_objmode_reflected_listz'TestLiftObj.test_objmode_reflected_list  sk    /*		 
	
 v334G 5  !3	
 54   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   r4   rp   r"  r   rS   c                  T    t              5  h d} d d d        | S # 1 sw Y    S xY w)N)r{  r4  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.r/  r0  s      @r'   test_objmode_reflected_setz&TestLiftObj.test_objmode_reflected_set  sk    /*		 
	
 v334G 5  !3	
 54r2  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resr4   rp   )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   rL  r   r   r   rc   r<  r   r,  s      @r'   test_objmode_typed_dictz#TestLiftObj.test_objmode_typed_dict  ss    >>%"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)Nr9  r4   rp   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   rL  rQ  r   r   r?  s      @r'   test_objmode_typed_listz#TestLiftObj.test_objmode_typed_list#  sn    >>%++.		 
	
 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>.foo6  s0    .FF7O /H /Hs   3=r4   r  )r   r   onesr   rG  r  r   )rc   r   r  expectedr   s        r'   test_objmode_use_of_viewz$TestLiftObj.test_objmode_use_of_view3  s]     
	 
	
 GGArxx %%i0;;q>!f#.r)   N)<rx   ry   rz   r   r   r   r   r  r
  r  r  r   r%  r)  r2  r8  r>  rF  rM  rS  rY  ra  re  rh  rl  rq  rv  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(  r1  r6  r@  rD  rJ  r1   r)   r'   r   r   3  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 Nr6   r1   r8   s    r'   case_inner_pyfuncrO  B  s    r6Mr)   c                 `    t        d      5  t        |       }d d d        |S # 1 sw Y   S xY wNr  r%  )r   rO  r'  s     r'   r(  r(  F  s)    			""1% 
#M 
#MrC  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   rk   s    r'   r   zTestLiftObjCaching.setUpO  r   r)   c                 ,    t        j                          y rP   r   rk   s    r'   r   zTestLiftObjCaching.tearDownR  r   r)   c                     t        d      |      }| j                   |d      d        t        d      |      }| j                  |j                         | j                   |d      d       | j	                  |j                         y )NT)cacher   r  )r   rb   assertFalse_cache_hits
assertTrue)rc   r  firstseconds       r'   checkzTestLiftObjCaching.checkU  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>.pyfunc_  s(    	*R +M +MrK  r]  )rc   r   s     r'   test_objmode_caching_basicz-TestLiftObjCaching.test_objmode_caching_basic^  s    	
 	

6r)   c                 8    d fd}| j                  |       y )Nc                     | dz  S rN  r1   r8   s    r'   other_pyfunczNTestLiftObjCaching.test_objmode_caching_call_closure_bad.<locals>.other_pyfuncg  s    r6Mr)   c                 \    t        d      5   |       }d d d        |S # 1 sw Y   S xY wrQ  r  )r9   r&  rd  s     r'   r   zHTestLiftObjCaching.test_objmode_caching_call_closure_bad.<locals>.pyfuncj  s)    	*%a +M +Ms   	!+r`  )rc   r   rd  s     @r'   %test_objmode_caching_call_closure_badz8TestLiftObjCaching.test_objmode_caching_call_closure_badf  s    		
 	

6r)   c                 .    | j                  t               y rP   )r]  r(  rk   s    r'   &test_objmode_caching_call_closure_goodz9TestLiftObjCaching.test_objmode_caching_call_closure_goodq  s    

%&r)   N)	rx   ry   rz   r   r   r]  ra  rf  rh  r1   r)   r'   rS  rS  L  s     <!,	'r)   rS  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(   rW   r   r   r   r   r   r   r   r   r   r   rc   re   r   s      r'   test_undefined_globalz&TestBogusContext.test_undefined_globalv  sn    ^,v334

2 5 	8  !		 54   /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   rl  s      r'   test_invalidzTestBogusContext.test_invalid  sn    \*v334

2 5 	0  !		 54rn  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   UnsupportedErrorr   r   r   )rc   r   r   excstrr   s        r'   test_with_as_fails_gracefullyz.TestBogusContext.test_with_as_fails_gracefully  sf    		 
	 v6676E 8 V%%&c6" 87s   A&&A/N)rx   ry   rz   rm  rp  rx  r1   r)   r'   rj  rj  u  s    

#r)   rj  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rP   r   r1   r)   r'   r  zFTestMisc.test_no_fork_in_compilation.<locals>.force_compile.<locals>.f  s    ]]_ %__s    ))r   ru  s    r'   force_compilez;TestMisc.test_no_fork_in_compilation.<locals>.force_compile  s    (^ r)   )forkcloneexecve)r   skipTestr   rX  )rc   r~  syscallsstrace_datas       r'   test_no_fork_in_compilationz$TestMisc.test_no_fork_in_compilation  s?      !MM23	 / ]H5%r)   N)rx   ry   rz   _numba_parallel_test_r   r   run_test_in_subprocessr  r1   r)   r'   rz  rz    s*     "$$& % &r)   rz  __main__)Lr   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   numba.core.utilsr   numba.experimentalr   rK  r(   r2   r:   r>   rD   rG   rJ   rL   rN   rQ   rT   rW   r  r[   r\   r(  r  r^   r|   r   r   r   r   r   rO  r(  rS  rj  rz  rx   mainr1   r)   r'   <module>r     s>       ? Q Q : .  * 9 . . )9 9 9
 ' ' "",	
 x 
 **6h 6,;( ;:9( 9.,,& ,,^L/*h L/^&'X &'R%#* %#P&x &@ zHMMO r)   