
    
f                        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j<        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,jK                     dS dS )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          |          }|                    |          }|S )N)func_id)r   from_functionr	   r
   	interpret)funcr    bcinterpfunc_irs        <lib/python3.11/site-packages/numba/tests/test_withlifting.pyget_func_irr(      sG    ,T22G	'	"	"	"B!!Fr""GN    c                      t          d           t          5  t          d           t                       d d d            n# 1 swxY w Y   t          d           d S )NABCprintr   b r)   r'   lift1r2   !   s    	#JJJ	  c


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


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


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


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


	 	GA	              
 FA	#qMMMMMsG   ;B"#B	=B"	BB"BB""B&)B&4%C%%C),C)c                  $    t          d           d S )Nr+   r/   r1   r)   r'   lift5rG   a   s    	#JJJJJr)   c                      d} t          d|            t          5  | dz  } d d d            n# 1 swxY w Y   t          d|            | S )Nr4   r+   r,   r/   r   r8   s    r'   	liftcall1rJ   e   s    	A	#qMMM	  	Q              	#qMMMHs   ,00c                      d} t          d|            t          5  | dz  } d d d            n# 1 swxY w Y   t          d|            t          5  | dz  } d d d            n# 1 swxY w Y   t          d|            | S )Nr4   r+   r,   r6   r-   rI   r8   s    r'   	liftcall2rL   n   s    	A	#qMMM	  	Q              	#qMMM	  	R              	#qMMMHs   ,00A  A$'A$c                  ,   d} t          d|            t          5  | dk    r| dz  } d d d            n# 1 swxY w Y   t          d|            t          5  t          d          D ]}| |z  } 	 d d d            n# 1 swxY w Y   t          d|            | S )Nr4   r+   r   r,   r6   r-   )r/   r   rA   rB   s     r'   	liftcall3rN   z   s$   	A	#qMMM	  q55FA               
#qMMM	  r 	 	AFAA	               
#qMMMHs   266A99A= A=c                      t           5  t           5  	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S N)r   r1   r)   r'   	liftcall4rQ      s    	   	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	                 s$   66"	6"	6::c                      t          d          D ]T} t          5  t          |            | dk    rt          d           	 d d d             n	 d d d            n# 1 swxY w Y   U| S )Nr6      r+   )rA   r   r/   )rC   s    r'   	liftcall5rT      s    2YY   	 	!HHHAvvc


		 	 	 	 	 	 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 Hs   &AA	 A	c                  H    t           5  	 d d d            d S # 1 swxY w Y   d S rP   )undefined_global_varr1   r)   r'   lift_undefiendrW      o    	                      c                  H    t           5  	 d d d            d S # 1 swxY w Y   d S rP   )bogus_contextmanagerr1   r)   r'   lift_invalidr\      rX   rY   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestWithFindingc                     t          |          }t          t          |          d                   }|                     ||           d S Nr   )r(   lenr   assertEqual)selfr#   expect_countthe_ircts        r'   check_num_of_withz!TestWithFinding.check_num_of_with   sE    T""((+,,\*****r)   c                 >    |                      t          d           d S Nr4   rd   )rg   r2   rc   s    r'   
test_lift1zTestWithFinding.test_lift1   !    u155555r)   c                 >    |                      t          d           d S N   rj   )rg   r:   rk   s    r'   
test_lift2zTestWithFinding.test_lift2   rm   r)   c                 >    |                      t          d           d S ri   )rg   r>   rk   s    r'   
test_lift3zTestWithFinding.test_lift3   rm   r)   c                 >    |                      t          d           d S ro   )rg   rD   rk   s    r'   
test_lift4zTestWithFinding.test_lift4   rm   r)   c                 >    |                      t          d           d S )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^      sn        + + +
6 6 66 6 66 6 66 6 66 6 6 6 6r)   r^   c                   ,     e Zd Z fdZd ZddZ xZS )BaseTestWithLiftingc                     t          t          |                                            t          j        | _        t          j        | _        t          | _	        d S rP   )
superr|   setUpr   typing_context	typingctxtarget_context	targetctxr   flags)rc   	__class__s    r'   r   zBaseTestWithLifting.setUp   s?    !4((..000#2#2"


r)   c                    t          |          }t          || j        | j        | j        i           \  }}|                     t          |          |           |                     |          }t                      5 }|	                                 d d d            n# 1 swxY w Y   |                     |
                                |           d S Nlocals)r(   r   r   r   r   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""(DNDNDJ
 
 
	 	Y666v&& 	#	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	99999s   <BB!$B!r1   Nc           	      X    | 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   s=    N	N	
)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dS )TestLiftByPassc                 @    |                      t          dd           d S )Nr4   zA
C
rd   r   )r   r2   rk   s    r'   rl   zTestLiftByPass.test_lift1   s0    !!%a2: 	" 	< 	< 	< 	< 	<r)   c                 @    |                      t          dd           d S )Nrp   zA 1
D 3
r   )r   r:   rk   s    r'   rq   zTestLiftByPass.test_lift2   s5    !!%a2> 	" 	@ 	@ 	@ 	@ 	@r)   c                 @    |                      t          dd           d S )Nr4   zA 1 100
D 2 101
r   )r   r>   rk   s    r'   rs   zTestLiftByPass.test_lift3   s5    !!%a2F 	" 	H 	H 	H 	H 	Hr)   c                 @    |                      t          dd           d S )Nrp   z	A 0
E 11
r   )r   rD   rk   s    r'   ru   zTestLiftByPass.test_lift4   s5    !!%a2? 	" 	A 	A 	A 	A 	Ar)   c                 @    |                      t          dd           d S )Nr   zA
r   )r   rG   rk   s    r'   rw   zTestLiftByPass.test_lift5   s0    !!%a27 	" 	9 	9 	9 	9 	9r)   N)rx   ry   rz   rl   rq   rs   ru   rw   r1   r)   r'   r   r      sh        < < <@ @ @H H HA A A9 9 9 9 9r)   r   c                   R    e Zd Zd Zd Zd Zd Zd Zee	d                         Z
dS )TestLiftCallc                 X   t          |          }t                      5 } |             ddd           n# 1 swxY w Y   t                      5 } |             ddd           n# 1 swxY w Y   |                     |                                |                                           dS )z2Ensure same semantic with non-jitted code
        N)r   r   rb   r   )rc   r#   jittedgotexpects        r'   check_same_semanticz TestLiftCall.check_same_semantic   s    d 	#FHHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	  	&DFFF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	):):;;;;;s   599A%%A),A)c                 t    |                      t          dd           |                     t                     d S )Nr4   zA 1
B 2
r   )r   rJ   r   rk   s    r'   test_liftcall1zTestLiftCall.test_liftcall1   sC    !!)!2> 	" 	@ 	@ 	@  +++++r)   c                 t    |                      t          dd           |                     t                     d S )Nrp   zA 1
B 2
C 12
r   )r   rL   r   rk   s    r'   test_liftcall2zTestLiftCall.test_liftcall2  C    !!)!2D 	" 	F 	F 	F  +++++r)   c                 t    |                      t          dd           |                     t                     d S )Nrp   zA 1
B 2
C 47
r   )r   rN   r   rk   s    r'   test_liftcall3zTestLiftCall.test_liftcall3
  r   r)   c                 H   t           j        t           j        t           j        t           j        f}|                     |          5 } t          t                                 d d d            n# 1 swxY w Y   d}|                     |t          |j
                             d S )Nz2compiler re-entrant to the same function signature)r   TypingErrorNumbaRuntimeErrorNumbaValueErrorCompilerErrorassertRaisesr   rQ   assertInstr	exception)rc   acceptraisesmsgs       r'   test_liftcall4zTestLiftCall.test_liftcall4  s    $f&>(&*>@v&& 	&DOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 Dc3v/0011111s   A--A14A1c                 t    |                      t          dd           |                     t                     d S )Nr4   z0
1
2
3
4
5
A
r   )r   rT   r   rk   s    r'   test_liftcall5zTestLiftCall.test_liftcall5  sE     	!!)!2I 	" 	K 	K 	K  +++++r)   N)rx   ry   rz   r   r   r   r   r   r   r   r   r1   r)   r'   r   r      s        
< 
< 
<, , ,
, , ,
, , ,
2 2 2 , ,  , , ,r)   r   c                       fd}|S )Nc                     |                      t          j                  5 } | g|R i | d d d            n# 1 swxY w Y   |                     dt	          |j                             d S )NzDoes not support list typer   r   r   r   r   r   rc   r   kwargsr   fns       r'   corez+expected_failure_for_list_arg.<locals>.core"  s    v122 	&fBt%d%%%f%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&2&*++	- 	- 	- 	- 	-   :>>r1   r   r   s   ` r'   expected_failure_for_list_argr   !  #    - - - - -
 Kr)   c                       fd}|S )Nc                     |                      t          j                  5 } | g|R i | d d d            n# 1 swxY w Y   |                     dt	          |j                             d S )NzDoes not support function typer   r   s       r'   r   z/expected_failure_for_function_arg.<locals>.core+  s    v122 	&fBt%d%%%f%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&6&*++	- 	- 	- 	- 	-r   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;d2S )3TestLiftObjc                 D    t          j        dt          j                   d S Nerrorwarningssimplefilterr   NumbaWarningrk   s    r'   r   zTestLiftObj.setUp5      gv':;;;;;r)   c                 ,    t          j                     d S rP   r   resetwarningsrk   s    r'   tearDownzTestLiftObj.tearDown8           r)   c                 2   t          j        |          }t          j        |          }t          |          }t                      5 } || }|                                }d d d            n# 1 swxY w Y   |                    t          t          t          |                               t                      5 } || }	|                                }
d d d            n# 1 swxY w Y   | 	                    ||
           | 
                    ||	           d S 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;  sv   -%%t$$V 	+&)J**J	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+
 	eC//00111 	(&eVnGoo''G	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	W---
G44444s$   A,,A03A0:C  C$'C$c                 z    d fd}fd}|                      |d           |                      |d           d S )Nc                 0    t          dd| dz  i           d S )Nzival =ivalrp   rF   )r   s    r'   barz0TestLiftObj.test_lift_objmode_basic.<locals>.barN  s!    (VTQY/00000r)   c                 l    | dz  } t           5   |            d d d            n# 1 swxY w Y   | dz   S Nr4   r   r   r   s    r'   fooz0TestLiftObj.test_lift_objmode_basic.<locals>.fooQ  s}    AID   D			              !8Os   &**c                 v    | dz  } t           j        5   |            d d d            n# 1 swxY w Y   | dz   S r   numbar   r   s    r'   foo_nonglobalz:TestLiftObj.test_lift_objmode_basic.<locals>.foo_nonglobalW  s    AID  D			              !8Os   +//{   r   )rc   r   r   r   s      @r'   test_lift_objmode_basicz#TestLiftObj.test_lift_objmode_basicM  sx    	1 	1 	1	 	 	 	 		 	 	 	 	 	++C555++M3?????r)   c                 H    d fd}d}|                      ||           d S )Nc                 8    t          d| dz  i           | dz  } d S )Narrrp   rF   )r   s    r'   r   z3TestLiftObj.test_lift_objmode_array_in.<locals>.bara  s&    5#(#$$$1HCCCr)   c                     t          j        |                               t           j                  }t          5   |           d d d            n# 1 swxY w Y   |dz   S r   )nparangeastypeint64r   )nelemr   r   s     r'   r   z3TestLiftObj.test_lift_objmode_array_in.<locals>.foof  s    )E""))"(33C   C               7Ns   AAAr6   r   )rc   r   r  r   s      @r'   test_lift_objmode_array_inz&TestLiftObj.test_lift_objmode_array_in`  sN    	 	 	
	 	 	 	 	 ++C77777r)   c                 H    d fd}d}|                      ||           d S )Nc                 $    t          |            d S rP   rF   r=   s    r'   r   z<TestLiftObj.test_lift_objmode_define_new_unused.<locals>.barq  s    !HHHHHr)   c                     t                      5  d| z   }t          j        |          } |           d d d            n# 1 swxY w Y   | S Nrp   )r   r   r   )r9   r=   ar   s      r'   r   z<TestLiftObj.test_lift_objmode_define_new_unused.<locals>.foot  s     ""  EIaLLA               Hs   %AAAr   r   )rc   r   argr   s      @r'   #test_lift_objmode_define_new_unusedz/TestLiftObj.test_lift_objmode_define_new_unusedp  sN    	 	 		 	 	 	 	 ++C55555r)   c                 ~    d fd}fd}d}|                      ||           |                      ||           d S )Nc                 *    t          |            d| z  S r   rF   r8   s    r'   inversez<TestLiftObj.test_lift_objmode_return_simple.<locals>.inverse      !HHHq5Lr)   c                 r    t          d          5   |           }d d d            n# 1 swxY w Y   | |fS Nfloat64r  r   r9   r=   r  s     r'   r   z8TestLiftObj.test_lift_objmode_return_simple.<locals>.foo  s     9---  GAJJ              a4K   *..c                 |    t          j        d          5   |           }d d d            n# 1 swxY w Y   | |fS r  r   r  s     r'   r   zBTestLiftObj.test_lift_objmode_return_simple.<locals>.foo_nonglobal  s    +++  GAJJ              a4Ks   /33r   r   )rc   r   r   r	  r  s       @r'   test_lift_objmode_return_simplez+TestLiftObj.test_lift_objmode_return_simple~  s}    	 	 		 	 	 	 	
	 	 	 	 	
 ++C555++M3?????r)   c                     d fd}t          j        ddt           j                  }|                     ||           d S )Nc                 *    t          |            d| z  S r   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            n# 1 swxY w Y   | ||fS )N
float64[:]r   )r=   zr   )r   int)r9   r=   r  r  s      r'   r   z7TestLiftObj.test_lift_objmode_return_array.<locals>.foo  s     <7;;;  GAJJ!II               a7Ns   !A  AAr4   r6   dtype)r   r   r  r   )rc   r   r	  r  s      @r'   test_lift_objmode_return_arrayz*TestLiftObj.test_lift_objmode_return_array  sa    	 	 		 	 	 	 	 i2RZ000++C55555r)   c                 @    d }g d}|                      ||           d S )Nc                     t          d          5  t          |            d| d<   t          |            g d| z   }t          j        d |D                       }d d d            n# 1 swxY w Y   | |fS )Nr  r     r   r4   rp      c                     g | ]}d |z  S )r4   r1   ).0rC   s     r'   
<listcomp>zITestLiftObj.test_lift_objmode_using_list.<locals>.foo.<locals>.<listcomp>  s    111!A111r)   )r   r/   r   asarrayr<   s     r'   r   z5TestLiftObj.test_lift_objmode_using_list.<locals>.foo  s     <000 3 3a!aIIMJ11q111223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 a4Ks   A	A&&A*-A*r"  r   rc   r   r	  s      r'   test_lift_objmode_using_listz(TestLiftObj.test_lift_objmode_using_list  s8    	 	 	 ii++C55555r)   c                 <    d }d}|                      ||           d S )Nc                    t          |           D ]} | r| dz  } t          d          5  t          |            | dz  } t          |            t          |           D ]}| |z  } t          |            	 d d d            n# 1 swxY w Y   | S )Nr4   intpr8   )rA   r   r/   rB   s     r'   r   z4TestLiftObj.test_lift_objmode_var_redef.<locals>.foo  s    1XX   Q 6***  aQaq  AFA!HHHH	               Hs   A
BBBr   r   r(  s      r'   test_lift_objmode_var_redefz'TestLiftObj.test_lift_objmode_var_redef  s4    	 	 	 ++C55555r)   c                 >    d }|                      |g dd           d S )Nc                     || d<   t                      5  t          |            d d d            n# 1 swxY w Y   t                      5  d|z  | d<   t          |            d d d            n# 1 swxY w Y   | S r  r   r/   r9   r  s     r'   r   z=TestLiftObj.test_case01_mutate_list_ahead_of_ctx.<locals>.foo      AaD ""  a               !""  1u!a              
 H   044	A--A14A1r"     r   rc   r   s     r'   $test_case01_mutate_list_ahead_of_ctxz0TestLiftObj.test_case01_mutate_list_ahead_of_ctx  s5    	 	 	 	++CB?????r)   c                 f    d }t          j        g d          }|                     ||d           d S )Nc                     || d<   t                      5  t          |            d d d            n# 1 swxY w Y   t                      5  d|z  | d<   t          |            d d d            n# 1 swxY w Y   | S r  r0  r1  s     r'   r   z>TestLiftObj.test_case02_mutate_array_ahead_of_ctx.<locals>.foo  r2  r3  r"  r4  r   arrayr   rc   r   r9   s      r'   %test_case02_mutate_array_ahead_of_ctxz1TestLiftObj.test_case02_mutate_array_ahead_of_ctx  sD    	 	 	 HYYY++CB77777r)   c                 8    d }|                      |d           d S )Nc                     t          d          5  g d}d d d            n# 1 swxY w Y   t                      5  d|d<   d d d            n# 1 swxY w Y   |S NzList(int64)r  r"  r6   rp   r   r<   s     r'   r   z6TestLiftObj.test_case03_create_and_mutate.<locals>.foo       =111  II               ""  !              H   "&&AAAr4   r   r5  s     r'   test_case03_create_and_mutatez)TestLiftObj.test_case03_create_and_mutate  s/    	 	 	 	++C33333r)   c                 *   d }t          j        g d          }t          |          }|                     t          j                  5 } ||           d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nc                 t    t          d          5  t          |            d d d            n# 1 swxY w Y   | S )Nr  kr0  r8   s    r'   r   z=TestLiftObj.test_case04_bogus_variable_type_info.<locals>.foo  sx     <000  a              H   -11r"  z1Invalid type annotation on non-outgoing variables)	r   r:  r   r   r   r   r   r   r   rc   r   r9   cfoor   s        r'   $test_case04_bogus_variable_type_infoz0TestLiftObj.test_case04_bogus_variable_type_info  s    	 	 	 HYYYCyyv122 	fDGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	? !!	 	 	 	 	   A  A$'A$c                     d }t          j        g d          }t          |          }|                     t                    5 } ||          }d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nc                 `    t          d          5  | dz   }d d d            n# 1 swxY w Y   |S )Nr  r  y              ?r   r1  s     r'   r   z4TestLiftObj.test_case05_bogus_type_info.<locals>.foo  sx     !<000  G              H   #''r"  zXcan't unbox array from PyObject into native value.  The object maybe of a different type)r   r:  r   r   	TypeErrorr   r   r   )rc   r   r9   rI  r   r   s         r'   test_case05_bogus_type_infoz'TestLiftObj.test_case05_bogus_type_info  s    	 	 	 HYYYCyyy)) 	V$q''C	 	 	 	 	 	 	 	 	 	 	 	 	 	 	6 !!	
 	
 	
 	
 	
   AA"Ac                     d }|                      t          j                  5 } t          |          d           d d d            n# 1 swxY w Y   d}|                     t          |j                  |           d S )Nc                     t                      5  t                      5  t          |            d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   | S rP   r0  r8   s    r'   r   z3TestLiftObj.test_case06_double_objmode.<locals>.foo  s     !"" ! !(** ! !a! ! ! ! ! ! ! ! ! ! ! ! ! ! !! ! ! ! ! ! ! ! ! ! ! ! ! ! ! Hs.   A:A>	A>	AAAr   z@During: resolving callee type: type\(ObjModeLiftedWith\(<.*>\)\))r   r   r   r   assertRegexr   r   )rc   r   r   pats       r'   test_case06_double_objmodez&TestLiftObj.test_case06_double_objmode  s    	 	 	 v122 	fDIIcNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	4V-..44444s   AAAc                 Z   d }t          j        g d          }t          |          }|                     t          j                  5 } ||           d d d            n# 1 swxY w Y   t          |j                  }|                     d|           |                     d|           d S )Nc                 d    t                      5  d| i}d}d d d            n# 1 swxY w Y   | ||fS )Nr  r#  r   )r9   tus      r'   r   z6TestLiftObj.test_case07_mystery_key_error.<locals>.foo$  s~     ""  !H               a7Ns   "&&r"  z;Missing type annotation on outgoing variable(s): ['t', 'u']z9Example code: with objmode(t='<add_type_as_string_here>'))	r   r:  r   r   r   r   r   r   r   )rc   r   r9   rI  r   exstrs         r'   test_case07_mystery_key_errorz)TestLiftObj.test_case07_mystery_key_error"  s   	 	 	
 HYYYCyyv122 	fDGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 F$%% #	 	 	 	 8	 	 	 	 	rK  c                 B   t                      fd}t          j        g d          }t          |          }|                     t
                    5 } ||           d d d            n# 1 swxY w Y   |                     t          |j                  d           d S )Nc                     t          t          |                     D ]Y}t                      5  t          |          }| |         }||<   t	          d                    d d d            n# 1 swxY w Y   Z| S )N2)rA   ra   r   r   r/   )r9   rC   rF  vds       r'   r   z8TestLiftObj.test_case08_raise_from_external.<locals>.foo<  s    3q66]] " "$&& " "AA!AAaD!C&MMM	" " " " " " " " " " " " " " "
 Hs   2A,,A0	3A0	r"  z'2')	dictr   r:  r   r   KeyErrorrb   r   r   )rc   r   r9   rI  r   rb  s        @r'   test_case08_raise_from_externalz+TestLiftObj.test_case08_raise_from_external7  s     FF	 	 	 	 	 HYYYCyyx(( 	FDGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	V-..66666s   A,,A03A0c                 *   d }t          j        g d          }t          |          }|                     t          j                  5 } ||           d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nc                 V    t                      5  t                      # 1 swxY w Y   | S rP   )r   
ValueErrorr8   s    r'   r   z3TestLiftObj.test_case09_explicit_raise.<locals>.fooL  sO     "" # # ll"# # # # # # # #Hs   ""r"  zBunsupported control flow due to raise statements inside with block)	r   r:  r   r   r   r   r   r   r   rH  s        r'   test_case09_explicit_raisez&TestLiftObj.test_case09_explicit_raiseK  s    	 	 	
 HYYYCyyv344 	DGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 !!	
 	
 	
 	
 	
rK  c                 d    d }t          j        g d          }|                     ||           d S )Nc                     t          d          5  g d}d d d            n# 1 swxY w Y   t                      5  d|d<   d d d            n# 1 swxY w Y   |S r?  r   r<   s     r'   r   z;TestLiftObj.test_case10_mutate_across_contexts.<locals>.foo^  r@  rA  r"  r9  r;  s      r'   "test_case10_mutate_across_contextsz.TestLiftObj.test_case10_mutate_across_contexts[  sB    	 	 	 HYYY++C33333r)   c                 d    d }t          j        g d          }|                     ||           d S )Nc                     t          d          5  t          j        g dd          }d d d            n# 1 swxY w Y   t                      5  d|d<   d d d            n# 1 swxY w Y   |S )Nint64[:]r  r"  r   r  r6   rp   )r   r   r'  r<   s     r'   r   zATestLiftObj.test_case10_mutate_array_across_contexts.<locals>.fooj  s     :... 9 9Jyyy8889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 ""  !               Hs   6::A!!A%(A%r"  r9  r;  s      r'   (test_case10_mutate_array_across_contextsz4TestLiftObj.test_case10_mutate_array_across_contextsh  sB    	 	 	 HYYY++C33333r)   c                     d }t          j        g d          }t          |          }|                     t                    5 } ||           d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nc                 X    t                      5  d }d d d            n# 1 swxY w Y   | S )Nc                     | dz   S r   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  sy     "" ! !! ! !! ! ! ! ! ! ! ! ! ! ! ! ! ! ! Hs   ##r"  z global name 'bar' is not defined)r   r:  r   r   	NameErrorr   r   r   rH  s        r'   &test_case11_define_function_in_contextz2TestLiftObj.test_case11_define_function_in_contextu  s    	 	 	 HYYYCyyy)) 	VDGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	. !!	
 	
 	
 	
 	
rR  c                 p    d fd}t          j        g d          }|                     ||           d S )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                    |                               d          }d d d            n# 1 swxY w Y   | |z   S )Nro  r  r   )r   r   r   r9   r=   r   s     r'   r   z>TestLiftObj.test_case12_njit_inside_a_objmode_ctx.<locals>.foo  s     :... 1 1DIIaLL''001 1 1 1 1 1 1 1 1 1 1 1 1 1 1q5Ls   ,A

AAr"  r9  )rc   r   r9   r   s      @r'   %test_case12_njit_inside_a_objmode_ctxz1TestLiftObj.test_case12_njit_inside_a_objmode_ctx  s\    	 	 		 	 	 	 	
 HYYY++C33333r)   c                     d } |t          j        g d                    }t           j                            t          j        g d          |           d S )Nc                 d    t          d          5  | dz  } | cd d d            S # 1 swxY w Y   d S )Nro  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   r:  testingassert_array_equal)rc   r   results      r'   *test_case14_return_direct_from_objmode_ctxz6TestLiftObj.test_case14_return_direct_from_objmode_ctx  s\    	 	 	
 RXiii(())

%%bhyyy&9&96BBBBBr)   c                 d    d }t          j        g d          }|                     ||           d S )Nc                 .    dfd} ||           dz   S )Nr6   c                     t          d          5  t          |            | z   cd d d            S # 1 swxY w Y   d S )Nro  r8   r0  )r9   js    r'   r   zHTestLiftObj.test_case15_close_over_objmode_ctx.<locals>.foo.<locals>.bar  s    $z222 ! !!HHHq5! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !s   377rp   r1   )r9   r   r  s     @r'   r   z;TestLiftObj.test_case15_close_over_objmode_ctx.<locals>.foo  s5    A! ! ! ! ! 3q66A:r)   r"  r9  r;  s      r'   "test_case15_close_over_objmode_ctxz.TestLiftObj.test_case15_close_over_objmode_ctx  sB    	 	 	 HYYY++C33333r)   c                 v    ddl m fd}t          j        g d          }|                     ||           d S )Nr   )sparsec                     t          d          5  t          |                                |           }t          j        |d                   }d d d            n# 1 swxY w Y   |S )Nr   rE  )r   r   )r   r/   
csr_matrixr   r   )r9   spxrF  sps      r'   r   z>TestLiftObj.test_case16_scipy_call_in_objmode_ctx.<locals>.foo  s     7+++ ( (ammA&& HSY''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( Hs   ?AA!$A!r"  )scipyr  r   r:  r   )rc   r   r9   r  s      @r'   %test_case16_scipy_call_in_objmode_ctxz1TestLiftObj.test_case16_scipy_call_in_objmode_ctx  s_    &&&&&&	 	 	 	 	 HYYY++C33333r)   c                 v    dd l fdt          j        g d          }|                     |           d S )Nr   c                     t                      5                                 d d d            d S # 1 swxY w Y   d S rP   )r   dis)r9   r  r   s    r'   r   z7TestLiftObj.test_case17_print_own_bytecode.<locals>.foo  s     ""                   s   377r"  )r  r   r:  r   )rc   r9   r  r   s     @@r'   test_case17_print_own_bytecodez*TestLiftObj.test_case17_print_own_bytecode  s\    


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


                 s   .22r"  c                     | dz   S )NrS   r1   rN  s    r'   <lambda>zHTestLiftObj.test_case18_njitfunc_passed_to_objmode_ctx.<locals>.<lambda>  s
    AE r)   )r   r:  r   r   )rc   r   r9   r   s       r'   *test_case18_njitfunc_passed_to_objmode_ctxz6TestLiftObj.test_case18_njitfunc_passed_to_objmode_ctx  sS    	 	 	 HYYY//""++CQ77777r)   c                 H   fd|                      t          j        t          j        f          5 }t	                    } |t          j        g d                     d d d            n# 1 swxY w Y   d}|                     |t          |j	                             d S )Nc                     t                      5  | dk    r	 d d d            dS 	 d d d            n# 1 swxY w Y    | dz
            }|S )Nr      r4   r   )r9   retr   s     r'   r   z.TestLiftObj.test_case19_recursion.<locals>.foo  s     ""  66                      #a!e**CJs   266r"  zUntyped global name 'foo')
r   r   r   r   r   r   r:  r   r   r   )rc   r   rI  r   r   s       @r'   test_case19_recursionz!TestLiftObj.test_case19_recursion  s    	 	 	 	 	  2F4HIJJ 	&f99DD)))$$%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& *c3v/0011111s   /A--A14A1c                 d    d }t          j        g d          }|                     ||           d S )Nc                    t           j                            d           t           j                                        }t	          d          5  t           j                                        }d d d            n# 1 swxY w Y   | |z   |z   S Nr   r  rN  r   randomseedrandr   r9   r=   r  s      r'   r   z1TestLiftObj.test_case20_rng_works_ok.<locals>.foo  s    INN1	  A 9--- % %INN$$% % % % % % % % % % % % % % % q519s   A99A= A=r"  r9  r;  s      r'   test_case20_rng_works_okz$TestLiftObj.test_case20_rng_works_ok  sB    	 	 	 HYYY++C33333r)   c                 d    d }t          j        g d          }|                     ||           d S )Nc                 V   t           j                            d           t           j                                        }t	          d          5  t           j                            d           t           j                                        }d d d            n# 1 swxY w Y   | |z   |z   S r  r  r  s      r'   r   z6TestLiftObj.test_case21_rng_seed_works_ok.<locals>.foo  s    INN1	  A 9--- % %	q!!!INN$$% % % % % % % % % % % % % % % q519s   >BBBr"  r9  r;  s      r'   test_case21_rng_seed_works_okz)TestLiftObj.test_case21_rng_seed_works_ok  sB    	 	 	 HYYY++C33333r)   c                     d t           fd            }|                      |            |                                           |                     t          t
                     d S )Nc                     t          j        t          t          |                                                               S rP   )r   r'  listreversedtolistr8   s    r'   r   z'TestLiftObj.test_example01.<locals>.bar  s*    :d8AHHJJ#7#788999r)   c                      t          j        d          } t          d          5  |  |           z   }d d d            n# 1 swxY w Y   |S )NrS   zintp[:]r  )r   r   r   ry  s     r'   r   z'TestLiftObj.test_example01.<locals>.foo  s    	!A9%%%  AJ               Hs   AAA)r   r   py_funcassertIsr   r   )rc   r   r   s     @r'   test_example01zTestLiftObj.test_example01  sw    	: 	: 	: 
	 	 	 	 
	 	s{{}}555g/////r)   c                     d t                    d             }t          j        fd            }|                      |            d           d S )Nc                     d S rP   r1   )ss    r'   r   z1TestLiftObj.test_objmode_in_overload.<locals>.foo
      Dr)   c                     d }|S )Nc                 `    t          d          5  | dz   }d d d            n# 1 swxY w Y   |S )Nr,  r   r#  r   )r  r   s     r'   implzHTestLiftObj.test_objmode_in_overload.<locals>.foo_overload.<locals>.impl  sv    (((    a%C                             
rO  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    3q66Mr)   r!  )r   r   r   rb   )rc   r  r  r   s      @r'   test_objmode_in_overloadz$TestLiftObj.test_objmode_in_overload	  s~    	 	 	 
#	 	 
	 
	 	 	 	 
	 	e$$$$$r)   c                     t           d             } |            }|                     |t                     |                     |d           d S )Nc                  d    t          t                    5  d} d d d            n# 1 swxY w Y   | S Nval皙(@)r   gv_typer  s    r'   
global_varz8TestLiftObj.test_objmode_gv_variable.<locals>.global_var  sr    W%%%                J   %))   )r   assertIsInstancer  rb   )rc   r  r  s      r'   test_objmode_gv_variablez$TestLiftObj.test_objmode_gv_variable  sZ    		 	 
	
 jllc3'''b!!!!!r)   c                     t           d             }|                     t          j        d          5   |             d d d            d S # 1 swxY w Y   d S )Nc                  d    t          t                    5  d} d d d            n# 1 swxY w Y   | S )Nr  r   )r   gv_type2r  s    r'   r  z>TestLiftObj.test_objmode_gv_variable_error.<locals>.global_var(  sr    X&&&                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'  s    		 	 
	
 ## 2
 
 	 	
 JLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	   A		AAc                 @   t           d             }t           d             }||fD ]x}|                     t          |                    5   |            }|                     |t                     |                     |d           d d d            n# 1 swxY w Y   yd S )Nc                  n    t          t          j                  5  d} d d d            n# 1 swxY w Y   | S r  )r   r   r,  r  s    r'   modattr1z6TestLiftObj.test_objmode_gv_mod_attr.<locals>.modattr16  st    UZ(((                J   *..c                  x    t          t          j        j                  5  d} d d d            n# 1 swxY w Y   | S r  )r   r   r   r,  r  s    r'   modattr2z6TestLiftObj.test_objmode_gv_mod_attr.<locals>.modattr2<  sw    U[-...                Js   /33)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)) * *bdd%%c3///  b)))	* * * * * * * * * * * * * * *	* 	*s   
<BB	B	c                     t           d             }|                     t          j        d          5   |             d d d            d S # 1 swxY w Y   d S )Nc                  n    t          t          j                  5  d} d d d            n# 1 swxY w Y   | S r  )r   r   THIS_DOES_NOT_EXISTr  s    r'   moderrorz<TestLiftObj.test_objmode_gv_mod_attr_error.<locals>.moderrorJ  su    U6777                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  s    		 	 
	 ## :
 
 	 	
 HJJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r  c                     t           d             }|                     t          j        d          5   |             d d d            d S # 1 swxY w Y   d S )Nc                      t          t          j        t          j        t          j                  5  d} d}d}d d d            n# 1 swxY w Y   t
          S )Nv1v2v3r  )r   r   r,  r  float32r  r  s      r'   r  zETestLiftObj.test_objmode_gv_mod_attr_error_multiple.<locals>.moderrorW  s    EJ5+D!M+ + +  	              
 Js   AAAzPError handling objmode argument 'v2'. Getattr cannot be resolved at compile-timer  r  s     r'   'test_objmode_gv_mod_attr_error_multiplez3TestLiftObj.test_objmode_gv_mod_attr_error_multipleV  s    		 	 
	 ## :
 
 	 	
 HJJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r  c                     d t                    d             }t          fd            }|                      |            t          j        d                              t          j                             d S )Nc                      d S rP   r1   r1   r)   r'   r   z>TestLiftObj.test_objmode_closure_type_in_overload.<locals>.foog  r  r)   c                  :    t           j        d d          fd} | S )Nc                      t                    5  t          j        d                              t          j                  } d d d            n# 1 swxY w Y   | S Nr  r6   r   r   r   r   r  r   	shrubberys    r'   r  zUTestLiftObj.test_objmode_closure_type_in_overload.<locals>.foo_overload.<locals>.implm      +++ ; ;)B--..rz::C; ; ; ; ; ; ; ; ; ; ; ; ; ; ;
   2AAAr   r  r  r  s    @r'   r  zGTestLiftObj.test_objmode_closure_type_in_overload.<locals>.foo_overloadj  s3    aaa(I     Kr)   c                                    S rP   r1   r  s   r'   r   z>TestLiftObj.test_objmode_closure_type_in_overload.<locals>.bars      355Lr)   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    	 	 	 
#	 	 
	 
	 	 	 	 
	 	ry}}';';BJ'G'GHHHHHr)   c                     d t                    d             }t          fd            }|                     t          j        d          5   |             d d d            d S # 1 swxY w Y   d S )Nc                      d S 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                              t          j                  } d d d            n# 1 swxY w Y   | S r  r  r  s    r'   r  z[TestLiftObj.test_objmode_closure_type_in_overload_error.<locals>.foo_overload.<locals>.impl  r  r  r  r  s    @r'   r  zMTestLiftObj.test_objmode_closure_type_in_overload_error.<locals>.foo_overload}  s6    aaa(I     Kr)   c                                    S 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  s    	 	 	 
#		 		 
		 
	 	 	 	 
	 ##2
 
 	 	
 CEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A''A+.A+c                     t           d             }|                     t          j        d          5   |             d d d            d S # 1 swxY w Y   d S )Nc                  d    t          d          5  d} d d d            n# 1 swxY w Y   t          S )Nrp   )badr4   )r   r  r  s    r'   r  z6TestLiftObj.test_objmode_invalid_use.<locals>.moderror  sr    U###                Js    $$zError handling objmode argument 'bad'. The value must be a compile-time constant either as a non-local variable or a getattr expression that refers to a Numba type.r  r  s     r'   test_objmode_invalid_usez$TestLiftObj.test_objmode_invalid_use  s    		 	 
	 ## '
 
 	 	 HJJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r  c                 R   t           j        d d          t          fd            } |            \  }}}|                     |d           |                     |d           |                     |t	          j        d                              t          j                             d S )Nc                      t          dt                    5  d} | }t          j        d                              t          j                  }d d d            n# 1 swxY w Y   | ||fS )Nr  )t1t2t3    :(ArS   )r   r  r   r   r   int32)r  r  r  array_tys      r'   r   z5TestLiftObj.test_objmode_multi_type_args.<locals>.foo  s    
 I'h??? 3 3Yq\\((223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 r2:s   6AA"Ar  i  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  s    ;qqq>		 	 	 	 
	 SUU
BH---F+++BIaLL$7$7$A$ABBBBBr)   c                 .  	 dt           j        fdt           j        d d          fg}t          |           G d dt                                d} |          	d t                    	fd            }t          fd            } |            }|                     |           |                     |	                    d	d
          d           t          j        dt          j                  d
z   }|                     |j        |           d S )Nvaluer:  c                   F    e Zd Zd Zed             Zd Zed             ZdS ).TestLiftObj.test_objmode_jitclass.<locals>.Bagc                 ^    || _         t          j        |t          j                  | _        d S )Nr  )r  r   zerosr  r:  )rc   r  s     r'   __init__z7TestLiftObj.test_objmode_jitclass.<locals>.Bag.__init__  s%    "
Xe2:>>>


r)   c                     | j         j        S rP   )r:  sizerk   s    r'   r  z3TestLiftObj.test_objmode_jitclass.<locals>.Bag.size  s    z&r)   c                 h    t          | j                  D ]}| j        |xx         |z  cc<   | j        S rP   )rA   r  r:  )rc   r  rC   s      r'   	incrementz8TestLiftObj.test_objmode_jitclass.<locals>.Bag.increment  s=    ty)) ) )AJqMMMS(MMMMz!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    sh        ? ? ? ' ' X'" " "
   \  r)   r     c                      d S rP   r1   r1   r)   r'   r   z.TestLiftObj.test_objmode_jitclass.<locals>.foo  r  r)   c                  $    j         fd} | S )Nc                      t                    5   d          } |                     d           d d d            n# 1 swxY w Y   | S )Nr  r   r#  )r   r  )r   r  r  s    r'   r  zETestLiftObj.test_objmode_jitclass.<locals>.foo_overload.<locals>.impl  s    +++ % %#c((CMM!$$$% % % % % % % % % % % % % % % 
s   !?AA)_numba_type_)r  r  r  mybags    @r'   r  z7TestLiftObj.test_objmode_jitclass.<locals>.foo_overload  s1    *I     
 Kr)   c                                    S 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   r:  )
rc   specnr  r   r  	exp_arrayr  r   r   s
          @@@r'   test_objmode_jitclassz!TestLiftObj.test_objmode_jitclass  s[   ek"emAAA&'

 
$	 	 	 	 	& 	 	 
	$ A	 	 	 
#	 	 	 	 	 
	 
	 	 	 	 
	 CEEa%%%q!e,,,HS
333a7	33333r)   c                 `    t          d          5  | dz  }d d d            n# 1 swxY w Y   |S Nr  outputr6   r  r9   r*  s     r'   case_objmode_cachezTestLiftObj.case_objmode_cache  sv    I&&& 	 	VF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	rO  c                     t          g d          t          fd            }|                     t          j                  5 } |             d d d            n# 1 swxY w Y   |                     t          |j                  d           d S )Nr4   rp   r#  r!  rS   c                  `    t                    5  g d} d d d            n# 1 swxY w Y   | S )Nr  r.  r  )r   ret_types    r'   test2z6TestLiftObj.test_objmode_reflected_list.<locals>.test2  sw    X&&& & &%oo& & & & & & & & & & & & & & &J   #''zObjmode context failed. Argument 'out' is declared as an unsupported type: reflected list\(int(32|64)\)<iv=None>. Reflected types are not supported.r   r   r   r   r   rU  r   r   rc   r1  r   r0  s      @r'   test_objmode_reflected_listz'TestLiftObj.test_objmode_reflected_list  s    ///**		 	 	 	 
	
 v344 	EGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 !!3	
 	
 	
 	
 	
   AA"Ac                     t          h d          t          fd            }|                     t          j                  5 } |             d d d            n# 1 swxY w Y   |                     t          |j                  d           d S )N   r4   rp   r#  r!  rS   c                  `    t                    5  h d} d d d            n# 1 swxY w Y   | S )N)r  r8  r  )r  r0  s    r'   r1  z5TestLiftObj.test_objmode_reflected_set.<locals>.test2  sw    ))) ) )() ) ) ) ) ) ) ) ) ) ) ) ) ) )Mr2  zObjmode context failed. Argument 'result' is declared as an unsupported type: reflected set\(int(32|64)\). Reflected types are not supported.r3  r4  s      @r'   test_objmode_reflected_setz&TestLiftObj.test_objmode_reflected_set  s    ///**		 	 	 	 
	
 v344 	EGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 !!3	
 	
 	
 	
 	
r6  c                 F   t          j        t           j        t           j                  t          fd            }|                     t                    5 } |             d d d            n# 1 swxY w Y   |                     dt          |j	                             d S )Nc                  b    t                    5  ddd} d d d            n# 1 swxY w Y   | S )Nresr4   rp   )r+   r,   r  r>  r0  s    r'   test4z2TestLiftObj.test_objmode_typed_dict.<locals>.test4  s{    X&&& ' 'A&&' ' ' ' ' ' ' ' ' ' ' ' ' ' 'Js   $((zFcan't unbox a <class 'dict'> as a <class 'numba.typed.typeddict.Dict'>)
r   DictTypeunicode_typer   r   r   rP  r   r   r   rc   r@  r   r0  s      @r'   test_objmode_typed_dictz#TestLiftObj.test_objmode_typed_dict  s    >%"4ekBB		 	 	 	 
	
 y)) 	VEGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	9 !!	
 	
 	
 	
 	
s   A..A25A2c                 0   t          j        t           j                  t          fd            }|                     t
                    5 } |             d d d            n# 1 swxY w Y   |                     t          |j                  d           d S )Nc                  `    t                    5  ddg} d d d            n# 1 swxY w Y   | S )Nr=  r4   rp   r  r?  s    r'   r@  z2TestLiftObj.test_objmode_typed_list.<locals>.test4%  sw    X&&&  !f              Jr2  zLcan't unbox a <class 'list'> as a (<class ')?numba.typed.typedlist.List('>)?)	r   ListTyper   r   r   rP  rU  r   r   rC  s      @r'   test_objmode_typed_listz#TestLiftObj.test_objmode_typed_list#  s    >%+..		 	 	 	 
	
 y)) 	VEGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 !!@	
 	
 	
 	
 	
s   A##A'*A'c                     t           d             }t          j        dt          j                                      d          }|                    |          } ||          }|                     ||           d S )Nc                     t          j        d          5  |                     d          }d d d            n# 1 swxY w Y   |S )Nz
int64[::1]r  r   )r   r   viewr<   s     r'   r   z1TestLiftObj.test_objmode_use_of_view.<locals>.foo6  s~    ... $ $FF7OO$ $ $ $ $ $ $ $ $ $ $ $ $ $ $Hs   8<<r4   r  )r   r   onesr   rK  r  r   )rc   r   r  expectedr   s        r'   test_objmode_use_of_viewz$TestLiftObj.test_objmode_use_of_view3  sx     
	 	 
	
 GArx  %%i00;;q>>c!ff#.....r)   N)<rx   ry   rz   r   r   r   r   r  r
  r  r  r   r)  r-  r6  r<  rB  rJ  rQ  rW  r]  re  ri  rl  rp  ru  rz  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,  r5  r:  rD  rH  rN  r1   r)   r'   r   r   3  s       < < <! ! !5 5 5$@ @ @&8 8 8 6 6 6@ @ @&6 6 6 #6 6 #"66 6 6$ #@ @ #"@"8 8 8$ #4 4 #"4  "
 
 
&5 5 5"  *7 7 7(
 
 
  #
4 
4 #"
44 4 4
 
 
"4 4 4C C C 4 4 4 4 4 44 4 4 '8 8 '&8 2 2  2 
4 
4 
44 4 40 0 0 % % %$
" 
" 
"  * * *(     I I I&  6  C C C$14 14 14h   \

 
 
$
 
 
$
 
 
 
 
 
 / / / / /r)   r   c                     | dz  S Nr6   r1   r8   s    r'   case_inner_pyfuncrS  B  s    r6Mr)   c                 t    t          d          5  t          |           }d d d            n# 1 swxY w Y   |S Nr  r)  )r   rS  r+  s     r'   r,  r,  F  sz    			"	"	" & &"1%%& & & & & & & & & & & & & & &MrG  c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestLiftObjCachingc                 D    t          j        dt          j                   d S r   r   rk   s    r'   r   zTestLiftObjCaching.setUpO  r   r)   c                 ,    t          j                     d S rP   r   rk   s    r'   r   zTestLiftObjCaching.tearDownR  r   r)   c                 N    t          d          |          }|                      |d          d            t          d          |          }|                     |j                   |                      |d          d           |                     |j                   d S )NT)cacher   r  )r   rb   assertFalse_cache_hits
assertTrue)rc   r  firstseconds       r'   checkzTestLiftObjCaching.checkU  s     4   ))sT***!D!!!'**+,,,d+++*+++++r)   c                 6    d }|                      |           d S )Nc                 `    t          d          5  | dz  }d d d            n# 1 swxY w Y   |S r(  r  r+  s     r'   r   z=TestLiftObjCaching.test_objmode_caching_basic.<locals>.pyfunc_  sv    	***    R                             MrO  ra  )rc   r   s     r'   test_objmode_caching_basicz-TestLiftObjCaching.test_objmode_caching_basic^  s+    	 	 	
 	

6r)   c                 B    d fd}|                      |           d S )Nc                     | dz  S rR  r1   r8   s    r'   other_pyfunczNTestLiftObjCaching.test_objmode_caching_call_closure_bad.<locals>.other_pyfuncg  s    r6Mr)   c                 n    t          d          5   |           }d d d            n# 1 swxY w Y   |S rU  r  )r9   r*  rh  s     r'   r   zHTestLiftObjCaching.test_objmode_caching_call_closure_bad.<locals>.pyfuncj  s{    	*** ) )%a) ) ) ) ) ) ) ) ) ) ) ) ) ) )Mr  rd  )rc   r   rh  s     @r'   %test_objmode_caching_call_closure_badz8TestLiftObjCaching.test_objmode_caching_call_closure_badf  sE    	 	 		 	 	 	 	
 	

6r)   c                 :    |                      t                     d S rP   )ra  r,  rk   s    r'   &test_objmode_caching_call_closure_goodz9TestLiftObjCaching.test_objmode_caching_call_closure_goodq  s    

%&&&&&r)   N)	rx   ry   rz   r   r   ra  re  rj  rl  r1   r)   r'   rW  rW  L  sn        < < <! ! !, , ,  	 	 	' ' ' ' 'r)   rW  c                        e Zd Zd Zd Zd ZdS )TestBogusContextc                 2   t          t                    }|                     t          j                  5 }t          || j        | j        | j        i            d d d            n# 1 swxY w Y   | 	                    dt          |j                             d S )Nr   z*Undefined variable used as context manager)r(   rW   r   r   r   r   r   r   r   r   r   r   rc   re   r   s      r'   test_undefined_globalz&TestBogusContext.test_undefined_globalv  s    ^,,v344 	
2   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	8 !!	 	 	 	 	   $A$$A(+A(c                 2   t          t                    }|                     t          j                  5 }t          || j        | j        | j        i            d d d            n# 1 swxY w Y   | 	                    dt          |j                             d S )Nr   z"Unsupported context manager in use)r(   r\   r   r   r   r   r   r   r   r   r   r   rp  s      r'   test_invalidzTestBogusContext.test_invalid  s    \**v344 	
2   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	0 !!	 	 	 	 	rr  c                     t           d             }|                     t          j                  5 } |             d d d            n# 1 swxY w Y   t	          |j                  }d}|                     ||           d S )Nc                  X    t          d          5 } 	 d d d            d S # 1 swxY w Y   d S )N )openr  s    r'   r   z;TestBogusContext.test_with_as_fails_gracefully.<locals>.foo  sr    b Q                 s   ##zGThe 'with (context manager) as (variable):' construct is not supported.)r   r   r   UnsupportedErrorr   r   r   )rc   r   r   excstrr   s        r'   test_with_as_fails_gracefullyz.TestBogusContext.test_with_as_fails_gracefully  s    		 	 
	 v677 	6CEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 V%&&c6"""""s   AAAN)rx   ry   rz   rq  rt  r|  r1   r)   r'   rn  rn  u  sA        
 
 

 
 
# # # # #r)   rn  c                   B    e Zd ZdZeej        d                         ZdS )TestMiscFc                     t                      s|                     d           d }g d}t          ||          }|                     |           d S )Nzstrace support missingc                  6    t          d          d             } d S )Nzvoid()c                  `    t          j                    5  	 d d d            d S # 1 swxY w Y   d S rP   r   r1   r)   r'   r  zFTestMisc.test_no_fork_in_compilation.<locals>.force_compile.<locals>.f  su    ]__                   s   #'')r   ry  s    r'   force_compilez;TestMisc.test_no_fork_in_compilation.<locals>.force_compile  s+    (^^  ^  r)   )forkcloneexecve)r   skipTestr   r\  )rc   r  syscallsstrace_datas       r'   test_no_fork_in_compilationz$TestMisc.test_no_fork_in_compilation  sl      !! 	4MM2333	 	 	 /.. ]H55%%%%%r)   N)rx   ry   rz   _numba_parallel_test_r   r   run_test_in_subprocessr  r1   r)   r'   r~  r~    sC         "$& & %$ Z& & &r)   r~  __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   rO  r(   r2   r:   r>   rD   rG   rJ   rL   rN   rQ   rT   rW   r"  r[   r\   r,  r  r^   r|   r   r   r   r   r   rS  r,  rW  rn  r~  rx   mainr1   r)   r'   <module>r     s;          ? ? ? ? ? ? ? ? Q Q Q Q Q Q Q Q Q Q : : : : : : : : . . . . . .       * * * * * * 9 9 9 9 9 9 9 9 . . . . . . . . . . . . ) ) ) ) ) )9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
 ' & & & & & ' ' ' ' ' '       "  "  ,    	 	 	        
 vxx   
 *6 6 6 6 6h 6 6 6,; ; ; ; ;( ; ; ;:9 9 9 9 9( 9 9 9.,, ,, ,, ,, ,,& ,, ,, ,,^    L/ L/ L/ L/ L/*h L/ L/ L/^    &' &' &' &' &'X &' &' &'R%# %# %# %# %#* %# %# %#P& & & & &x & & &@ zHMOOOOO r)   