
    pi                     r   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(m)Z) d dl*m+Z+ d dl,m-Z- d dl.Z.d Z/d Z0d Z1d Z2d Z3d Z4d Z5d Z6d Z7d Z8d Z9d Z: e;       Z<d Z=ej|                  Z? G d de       Z@ G d de       ZA G d d eA      ZB G d! d"eA      ZCd# ZDd$ ZE G d% d&ee       ZFd' ZGd( ZH G d) d*ee       ZI G d+ d,eA      ZJ G d- d.e       ZKeLd/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expected_failure_py314)	PYVERSION)jitclassc                     t        j                  |       }t        |      }t        |      }|j	                  |      }|S )N)func_id)r   from_functionr	   r
   	interpret)funcr"   bcinterpfunc_irs        ^/opt/services/ai/voice_agent/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)   lift1r4   $   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/   
   Dr0   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)Nr6   r7   r-   r.   r/   i r9   r0   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-   r8   r.   r6   r/   r9   E)r1   r   r2   ranger;   is     r)   lift4rF   N   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-   r1   r3   r+   r)   lift5rI   d   s	    	#Jr+   c                  z    d} t        d|        t        5  | dz  } d d d        t        d|        | S # 1 sw Y   xY w)Nr6   r-   r.   r1   r   r:   s    r)   	liftcall1rL   h   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)Nr6   r-   r.   r8   r/   rK   r:   s    r)   	liftcall2rN   q   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)Nr6   r-   r   r.   r8   r/   )r1   r   rC   rD   s     r)   	liftcall3rP   }   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   r3   r+   r)   	liftcall4rS      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)Nr8      r-   )rC   r   r1   )rE   s    r)   	liftcall5rV      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rR   )undefined_global_varr3   r+   r)   lift_undefiendrY          	      c                  <    t         5  	 d d d        y # 1 sw Y   y xY wrR   )bogus_contextmanagerr3   r+   r)   lift_invalidr^      rZ   r[   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 Nr6   rf   )ri   r4   re   s    r)   
test_lift1zTestWithFinding.test_lift1       u15r+   c                 2    | j                  t        d       y N   rl   )ri   r<   rm   s    r)   
test_lift2zTestWithFinding.test_lift2   ro   r+   c                 2    | j                  t        d       y rk   )ri   r@   rm   s    r)   
test_lift3zTestWithFinding.test_lift3   ro   r+   c                 2    | j                  t        d       y rq   )ri   rF   rm   s    r)   
test_lift4zTestWithFinding.test_lift4   ro   r+   c                 2    | j                  t        d       y )Nr   rl   )ri   rI   rm   s    r)   
test_lift5zTestWithFinding.test_lift5   ro   r+   N)	__name__
__module____qualname__ri   rn   rs   ru   rw   ry   r3   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 rR   )
superr~   setUpr   typing_context	typingctxtarget_context	targetctxr   flags)re   	__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   rd   rc   r   r   entry_pointgetvalue)	re   r%   rf   expected_stdoutrg   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   )re   rg   argsreturn_typer   r   r   s          r)   r   zBaseTestWithLifting.compile_ir   s9    NN	NN	

)Y'r; 	;r+   )r3   N)rz   r{   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 )Nr6   zA
C
rf   r   )r   r4   rm   s    r)   rn   zTestLiftByPass.test_lift1   s    !!%a2: 	" 	<r+   c                 4    | j                  t        dd       y )Nrr   zA 1
D 3
r   )r   r<   rm   s    r)   rs   zTestLiftByPass.test_lift2   s    !!%a2> 	" 	@r+   c                 4    | j                  t        dd       y )Nr6   zA 1 100
D 2 101
r   )r   r@   rm   s    r)   ru   zTestLiftByPass.test_lift3   s    !!%a2F 	" 	Hr+   c                 4    | j                  t        dd       y )Nrr   z	A 0
E 11
r   )r   rF   rm   s    r)   rw   zTestLiftByPass.test_lift4   s    !!%a2? 	" 	Ar+   c                 4    | j                  t        dd       y )Nr   zA
r   )r   rI   rm   s    r)   ry   zTestLiftByPass.test_lift5   s    !!%a27 	" 	9r+   N)rz   r{   r|   rn   rs   ru   rw   ry   r3   r+   r)   r   r      s    <@HA9r+   r   c                   X    e Zd Zd Zd Zd Zd Zd Ze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   rd   r   )re   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 )Nr6   zA 1
B 2
r   )r   rL   r   rm   s    r)   test_liftcall1zTestLiftCall.test_liftcall1  s+    !!)!2> 	" 	@  +r+   c                 ^    | j                  t        dd       | j                  t               y )Nrr   zA 1
B 2
C 12
r   )r   rN   r   rm   s    r)   test_liftcall2zTestLiftCall.test_liftcall2  +    !!)!2D 	" 	F  +r+   c                 ^    | j                  t        dd       | j                  t               y )Nrr   zA 1
B 2
C 47
r   )r   rP   r   rm   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   rS   assertInstr	exception)re   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 )Nr6   z0
1
2
3
4
5
A
r   )r   rV   r   rm   s    r)   test_liftcall5zTestLiftCall.test_liftcall5  s-    
 	!!)!2I 	" 	K  +r+   N)rz   r{   r|   r   r   r   r   r   r   r   r   r   r   r3   r+   r)   r   r      sG    
<,
,
,
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   re   r   kwargsr   fns       r)   corez+expected_failure_for_list_arg.<locals>.core'  s]    v112 	&ft%d%f%	&2&**+	-	& 	&   AA%r3   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>.core0  s]    v112 	&ft%d%f%	&6&**+	-	& 	&r   r3   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&e'd                             Z(ej:                  d        Z)d Z*d  Z+d! Z,d" Z-d# Z.d$ Z/d% Z0d& Z1d' Z2d( Z3d) Z4d* Z5d+ Z6e7d,        Z8d- Z9d. Z:d/ Z;d0 Z<d1 Z=y2)3TestLiftObjc                 L    t        j                  dt        j                         y Nerrorwarningssimplefilterr   NumbaWarningrm   s    r)   r   zTestLiftObj.setUp:      gv':':;r+   c                 ,    t        j                          y rR   r   resetwarningsrm   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rR   )copydeepcopyr   r   r   compiletuplemapr   rd   assertPreciseEqual)re   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 =ivalrr   rH   )r   s    r)   barz0TestLiftObj.test_lift_objmode_basic.<locals>.barS  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Nr6   r   r   r   s    r)   fooz0TestLiftObj.test_lift_objmode_basic.<locals>.fooV  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_nonglobal\  s<    AID D	!8O!8Os   	-:{   r   )re   r   r   r   s      @r)   test_lift_objmode_basicz#TestLiftObj.test_lift_objmode_basicR  s4    	1		 	++C5++M3?r+   c                 >    d fd}d}| j                  ||       y )Nc                 .    t        d| dz  i       | dz  } y )Narrrr   rH   )r   s    r)   r   z3TestLiftObj.test_lift_objmode_array_in.<locals>.barf  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>.fook  sP    ))E"))"((3C  C 7N 7Ns   	AAr8   r   )re   r   r  r   s      @r)   test_lift_objmode_array_inz&TestLiftObj.test_lift_objmode_array_ine  s$    	
	 ++C7r+   c                 >    d fd}d}| j                  ||       y )Nc                     t        |        y rR   rH   r?   s    r)   r   z<TestLiftObj.test_lift_objmode_define_new_unused.<locals>.barv  s	    !Hr+   c                     t               5  d| z   }t        j                  |      } |       d d d        | S # 1 sw Y   | S xY wNrr   )r   r   r   )r;   r?   ar   s      r)   r   z<TestLiftObj.test_lift_objmode_define_new_unused.<locals>.fooy  sD     " EIIaLA H	 Hs	   #9Ar   r   )re   r   argr   s      @r)   #test_lift_objmode_define_new_unusedz/TestLiftObj.test_lift_objmode_define_new_unusedu  s$    		 ++C5r+   c                 l    d fd}fd}d}| j                  ||       | j                  ||       y )Nc                 "    t        |        d| z  S r   rH   r:   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   )re   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   rH   r:   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<r6   r8   dtype)r   r   r  r   )re   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   r6   rr      r6   )r   r1   r   asarray)r;   r?   rE   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   re   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)Nr6   intpr:   )rC   r   r1   rD   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   r1   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   re   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  r0  r1  r#  r2  r   arrayr   re   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#  r8   rr   r   r>   s     r)   r   z6TestLiftObj.test_case03_create_and_mutate.<locals>.foo  M     =1  " !H	 H   4A = A
r6   r   r3  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.  r:   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   r8  r   r   r   r   r   r   r   re   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   r8  r   r   	TypeErrorr   r   r   )re   r   r;   rG  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rR   r.  r:   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   )re   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   r8  r   r   r   r   r   r   r   )re   r   r;   rG  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)rC   rc   r   r   r1   )r;   rE   rD  vds       r)   r   z8TestLiftObj.test_case08_raise_from_external.<locals>.fooA  sg    3q6] "$& "AA!AAaD!C&M	" "" H" "s   $AA	r#  z'2')	dictr   r8  r   r   KeyErrorrd   r   r   )re   r   r;   rG  r   r`  s        @r)   test_case08_raise_from_externalz+TestLiftObj.test_case08_raise_from_external<  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rR   )r   
ValueErrorr:   s    r)   r   z3TestLiftObj.test_case09_explicit_raise.<locals>.fooQ  s      " # l"#Hs    r#  zBunsupported control flow due to raise statements inside with block)	r   r8  r   r   r   r   r   r   r   rF  s        r)   test_case09_explicit_raisez&TestLiftObj.test_case09_explicit_raiseP  sq    	
 HHYCyv334 	G	  !	
	 	rI  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>.fooc  r>  r?  r#  r7  r9  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  r8   rr   )r   r   r%  r>   s     r)   r   zATestLiftObj.test_case10_mutate_array_across_contexts.<locals>.fooo  s\     :. 9JJy89 " ! H9 9 Hs   A	A	AAr#  r7  r9  s      r)   (test_case10_mutate_array_across_contextsz4TestLiftObj.test_case10_mutate_array_across_contextsm  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   r3   r  s    r)   r   zLTestLiftObj.test_case11_define_function_in_context.<locals>.foo.<locals>.bar~  s    q5Lr+   r   )r;   r   s     r)   r   z?TestLiftObj.test_case11_define_function_in_context.<locals>.foo|  s+     " !!! H! Hs   #r#  z global name 'bar' is not defined)r   r8  r   r   	NameErrorr   r   r   rF  s        r)   &test_case11_define_function_in_contextz2TestLiftObj.test_case11_define_function_in_contextz  si    	 HHYCyy) 	VG	.  !	
	 	rP  c                 h    d fd}t        j                  g d      }| j                  ||       y )Nc                     | dz   S r   r3   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)Nrm  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#  r7  )re   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)Nrm  r:   r6   r   r:   s    r)   r   zCTestLiftObj.test_case14_return_direct_from_objmode_ctx.<locals>.foo  s+     :. Q  s   'r#  )rr   r$  r"  )r   r8  testingassert_array_equal)re   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 )Nr8   c                 h    t        d      5  t        |        | z   cd d d        S # 1 sw Y   y xY w)Nrm  r:   r.  )r;   js    r)   r   zHTestLiftObj.test_case15_close_over_objmode_ctx.<locals>.foo.<locals>.bar  s.    $z2 !!Hq5! ! !s   (1rr   r3   )r;   r   r  s     @r)   r   z;TestLiftObj.test_case15_close_over_objmode_ctx.<locals>.foo  s    A! q6A:r+   r#  r7  r9  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  rC  )r   r   )r   r1   
csr_matrixr   r  )r;   spxrD  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   r8  r   )re   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rR   )r   dis)r;   r  r   s    r)   r   z7TestLiftObj.test_case17_print_own_bytecode.<locals>.foo  s)     "   s   '0r#  )r  r   r8  r   )re   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rb   r   )r%   r;   s     r)   r   zCTestLiftObj.test_case18_njitfunc_passed_to_objmode_ctx.<locals>.foo  s(     " QqT
  s    )r#  c                     | dz   S )NrU   r3   rL  s    r)   <lambda>zHTestLiftObj.test_case18_njitfunc_passed_to_objmode_ctx.<locals>.<lambda>  s
    AE r+   )r   r8  r   r   )re   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      r6   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   r8  r   r   r   )re   r   rG  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  rL  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#  r7  r9  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#  r7  r9  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 rR   )r   r%  listreversedtolistr:   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)NrU   zintp[:]r  )r   r   r   rw  s     r)   r   z'TestLiftObj.test_example01.<locals>.foo  sC    		!A9% AJ H Hs	   9A)r   r   py_funcassertIsr   r   )re   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 rR   r3   )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 
 
rM  r3   )r  r  s     r)   foo_overloadz:TestLiftObj.test_objmode_in_overload.<locals>.foo_overload  s     Kr+   c                        d      S r   r3   r   s   r)   fz/TestLiftObj.test_objmode_in_overload.<locals>.f  s    q6Mr+   r"  )r   r   r   rd   )re   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  rd   )re   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   )re   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>.modattr1=  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>.modattr2C  s3    U[[--. JJs   2<)r   r  )r   subTestr   r  r  rd   )re   r  r  r   r  s        r)   test_objmode_gv_mod_attrz$TestLiftObj.test_objmode_gv_mod_attr<  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>.moderrorQ  s/    U667 JJr  zQError handling objmode argument 'val'. Getattr cannot be resolved at compile-timer  re   r  s     r)   test_objmode_gv_mod_attr_errorz*TestLiftObj.test_objmode_gv_mod_attr_errorP  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>.moderror^  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_multiple]  sN    		 
	 ##  :
 	
 J	 	 	r  c                     d t              d        }t        fd       }| j                   |       t        j                  d      j                  t        j                               y )Nc                       y rR   r3   r3   r+   r)   r   z>TestLiftObj.test_objmode_closure_type_in_overload.<locals>.foon  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  r8   r   r   r   r  r  r   	shrubberys    r)   r  zUTestLiftObj.test_objmode_closure_type_in_overload.<locals>.foo_overload.<locals>.implt  A    + ;))B-..rzz:C;
;
   3AAr   r  r  r  s    @r)   r  zGTestLiftObj.test_objmode_closure_type_in_overload.<locals>.foo_overloadq  s    a(I Kr+   c                               S rR   r3   r  s   r)   r   z>TestLiftObj.test_objmode_closure_type_in_overload.<locals>.barz  
    5Lr+   r8   )r   r   r   r   r   r  r  re   r  r   r   s      @r)   %test_objmode_closure_type_in_overloadz1TestLiftObj.test_objmode_closure_type_in_overloadm  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 rR   r3   r3   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 rR   r3   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)Nrr   )badr6   )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    :(ArU   )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  rU   )r   r  r   r   r   r   r  )re   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valuer8  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  r8  )re   r
  s     r)   __init__z7TestLiftObj.test_objmode_jitclass.<locals>.Bag.__init__  s    "
XXe2::>
r+   c                 .    | j                   j                  S rR   )r8  sizerm   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 rR   )rC   r  r8  )re   r  rE   s      r)   	incrementz8TestLiftObj.test_objmode_jitclass.<locals>.Bag.increment  s6    tyy) )AJJqMS(M)zz!r+   c                     | |z   S rR   r3   r>   s     r)   addz2TestLiftObj.test_objmode_jitclass.<locals>.Bag.add  s    1ur+   N)	rz   r{   r|   r  propertyr  r  staticmethodr  r3   r+   r)   Bagr    s4    ? ' '"
  r+   r     c                       y rR   r3   r3   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 rR   r3   r  s   r)   r   z.TestLiftObj.test_objmode_jitclass.<locals>.bar  r  r+   rr   r$  rU   r   r  )r   r  r  r    objectr   r   r  rd   r  r   r  r   r8  )
re   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  outputr8   r  r;   r(  s     r)   case_objmode_cachezTestLiftObj.case_objmode_cache  s-    I& 	VF		rM  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r6   rr   r$  r"  rU   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   rS  r   r   re   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   r6   rr   r$  r"  rU   c                  T    t              5  h d} d d d        | S # 1 sw Y    S xY w)N)r}  r6  r  )r}  r.  s    r)   r/  z5TestLiftObj.test_objmode_reflected_set.<locals>.test2
  s*    ) )()M)Mr0  zObjmode context failed. Argument 'result' is declared as an unsupported type: reflected set\(int(32|64)\). Reflected types are not supported.r1  r2  s      @r)   test_objmode_reflected_setz&TestLiftObj.test_objmode_reflected_set  sr    /*		 
	
 v334 	G	  !3	
	 	r4  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resr6   rr   )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   rN  r   r   r   re   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;  r6   rr   r  r=  s    r)   r>  z2TestLiftObj.test_objmode_typed_list.<locals>.test4,  s.    X& !fJJr0  zLcan't unbox a <class 'list'> as a (<class ')?numba.typed.typedlist.List('>)?)	r   ListTyper  r   r   rN  rS  r   r   rA  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>.foo=  s5    . $FF7O$H$Hs   3=r6   r  )r   r   onesr  rI  r  r   )re   r   r
  expectedr   s        r)   test_objmode_use_of_viewz$TestLiftObj.test_objmode_use_of_view:  s]     
	 
	
 GGArxx %%i0;;q>!f#.r+   N)>rz   r{   r|   r   r   r   r   r  r  r  r  r   r'  r+  r4  r:  r@  rH  rO  rU  r[  rc  rg  rj  rn  rs  rx  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  r*  r3  r8  rB  rF  rL  r3   r+   r)   r   r   8  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 Nr8   r3   r:   s    r)   case_inner_pyfuncrQ  I  s    r6Mr+   c                 `    t        d      5  t        |       }d d d        |S # 1 sw Y   S xY wNr  r'  )r   rQ  r)  s     r)   r*  r*  M  s.    			" &"1%&M&MrE  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   rm   s    r)   r   zTestLiftObjCaching.setUpV  r   r+   c                 ,    t        j                          y rR   r   rm   s    r)   r   zTestLiftObjCaching.tearDownY  r   r+   c                     t        d      |      }| j                   |d      d        t        d      |      }| j                  |j                         | j                   |d      d       | j	                  |j                         y )NT)cacher   r  )r   rd   assertFalse_cache_hits
assertTrue)re   r  firstseconds       r)   checkzTestLiftObjCaching.check\  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>.pyfuncf  s-    	*  R M MrM  r_  )re   r   s     r)   test_objmode_caching_basicz-TestLiftObjCaching.test_objmode_caching_basice  s    	
 	

6r+   c                 8    d fd}| j                  |       y )Nc                     | dz  S rP  r3   r:   s    r)   other_pyfunczNTestLiftObjCaching.test_objmode_caching_call_closure_bad.<locals>.other_pyfuncn  s    r6Mr+   c                 \    t        d      5   |       }d d d        |S # 1 sw Y   S xY wrS  r  )r;   r(  rf  s     r)   r   zHTestLiftObjCaching.test_objmode_caching_call_closure_bad.<locals>.pyfuncq  s.    	* )%a)M)Ms   	!+rb  )re   r   rf  s     @r)   %test_objmode_caching_call_closure_badz8TestLiftObjCaching.test_objmode_caching_call_closure_badm  s    		
 	

6r+   c                 .    | j                  t               y rR   )r_  r*  rm   s    r)   &test_objmode_caching_call_closure_goodz9TestLiftObjCaching.test_objmode_caching_call_closure_goodx  s    

%&r+   N)	rz   r{   r|   r   r   r_  rc  rh  rj  r3   r+   r)   rU  rU  S  s     <!,	'r+   rU  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*   rY   r   r   r   r   r   r   r   r   r   r   re   rg   r   s      r)   test_undefined_globalz&TestBogusContext.test_undefined_global~  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   rn  s      r)   test_invalidzTestBogusContext.test_invalid  su    \*v334 	

2	 	0  !			 	rp  c                     t         d        }| j                  t        j                        5 } |        d d d        t	        j
                        }d}| j                  ||       y # 1 sw Y   3xY w)Nc                  <    t         5 } 	 d d d        y # 1 sw Y   y xY wrR   )r   )bps    r)   r   z;TestBogusContext.test_with_as_fails_gracefully.<locals>.foo  s     2  r[   zGThe 'with (context manager) as (variable):' construct is not supported.)r   r   r   UnsupportedBytecodeErrorr   r   r   )re   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)rz   r{   r|   ro  rr  rx  r3   r+   r)   rl  rl  |  s    		#r+   rl  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rR   r   r3   r+   r)   r  zFTestMisc.test_no_fork_in_compilation.<locals>.force_compile.<locals>.f  s#    ]]_   s    ))r   )r  s    r)   force_compilez;TestMisc.test_no_fork_in_compilation.<locals>.force_compile  s    (^ r+   )forkcloneexecve)r   skipTestr   rZ  )re   r~  syscallsstrace_datas       r)   test_no_fork_in_compilationz$TestMisc.test_no_fork_in_compilation  s?      !MM23	 / ]H5%r+   N)rz   r{   r|   _numba_parallel_test_r   r   run_test_in_subprocessr  r3   r+   r)   rz  rz    s*     "$$& % &r+   rz  __main__)Nr   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   r   numba.core.utilsr   numba.experimentalr    rM  r*   r4   r<   r@   rF   rI   rL   rN   rP   rS   rV   rY   r   r]   r^   r*  r  r`   r~   r   r   r   r   r   rQ  r*  rU  rl  rz  rz   mainr3   r+   r)   <module>r     sC       ? Q Q : .  * 9 . . )" " " " ' ' "",	
 x 
 **6h 6,;( ;:9( 9..,& .,bN/*h N/b&'X &'R$#* $#N&x &@ zHMMO r+   