
    J/Ph(                        d dl Z d dlZd dlZd dlZd dlmZmZ d dlm	Z	m
Z
mZ d dlmZmZ d dlmZ d dlmZ d dlmZ d dlmZmZ d d	lmZmZmZmZ d d
lmZ d dlmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z( d dl)m*Z* d dl+m,Z, d dl-Z-d Z.d Z/d Z0d Z1d Z2d Z3d Z4d Z5d Z6d Z7d Z8d Z9 e:            Z;d Z<ej=        Z> G d de           Z? G d de           Z@ G d d e@          ZA G d! d"e@          ZBd# ZCd$ ZD G d% d&ee           ZEd' ZFd( ZG G d) d*ee           ZH G d+ d,e@          ZI G d- d.e           ZJeKd/k    r e-jL                     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expected_failure_py313)	PYVERSION)jitclassc                     t          j        |           }t          |          }t          |          }|                    |          }|S )N)func_id)r   from_functionr	   r
   	interpret)funcr!   bcinterpfunc_irs        \/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/tests/test_withlifting.pyget_func_irr)      sG    ,T22G	'	"	"	"B!!Fr""GN    c                      t          d           t          5  t          d           t                       d d d            n# 1 swxY w Y   t          d           d S )NABCprintr   b r*   r(   lift1r3   "   s    	#JJJ	  c


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


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


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


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


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


		 	 	 	 	 	 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 Hs   &AA	 A	c                  H    t           5  	 d d d            d S # 1 swxY w Y   d S rQ   )undefined_global_varr2   r*   r(   lift_undefiendrX      o    	                      c                  H    t           5  	 d d d            d S # 1 swxY w Y   d S rQ   )bogus_contextmanagerr2   r*   r(   lift_invalidr]      rY   rZ   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestWithFindingc                     t          |          }t          t          |          d                   }|                     ||           d S Nr   )r)   lenr   assertEqual)selfr$   expect_countthe_ircts        r(   check_num_of_withz!TestWithFinding.check_num_of_with   sE    T""((+,,\*****r*   c                 >    |                      t          d           d S Nr5   re   )rh   r3   rd   s    r(   
test_lift1zTestWithFinding.test_lift1   !    u155555r*   c                 >    |                      t          d           d S N   rk   )rh   r;   rl   s    r(   
test_lift2zTestWithFinding.test_lift2   rn   r*   c                 >    |                      t          d           d S rj   )rh   r?   rl   s    r(   
test_lift3zTestWithFinding.test_lift3   rn   r*   c                 >    |                      t          d           d S rp   )rh   rE   rl   s    r(   
test_lift4zTestWithFinding.test_lift4   rn   r*   c                 >    |                      t          d           d S )Nr   rk   )rh   rH   rl   s    r(   
test_lift5zTestWithFinding.test_lift5   rn   r*   N)	__name__
__module____qualname__rh   rm   rr   rt   rv   rx   r2   r*   r(   r_   r_      sn        + + +
6 6 66 6 66 6 66 6 66 6 6 6 6r*   r_   c                   ,     e Zd Z fdZd ZddZ xZS )BaseTestWithLiftingc                     t          t          |                                            t          j        | _        t          j        | _        t          | _	        d S rQ   )
superr}   setUpr   typing_context	typingctxtarget_context	targetctxr   flags)rd   	__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   rc   rb   r   r   entry_pointgetvalue)	rd   r$   re   expected_stdoutrf   new_ir	extractedcresouts	            r(   check_extracted_withz(BaseTestWithLifting.check_extracted_with   s    T""(DNDNDJ
 
 
	 	Y666v&& 	#	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	99999s   <BB!$B!r2   Nc           	      X    | j         }| j        }| j        }t          ||||||i           S r   )r   r   r   r   )rd   rf   argsreturn_typer   r   r   s          r(   r   zBaseTestWithLifting.compile_ir   s=    N	N	
)Y'r; ; ; 	;r*   )r2   N)ry   rz   r{   r   r   r   __classcell__)r   s   @r(   r}   r}      s[        # # # # #: : :; ; ; ; ; ; ; ;r*   r}   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestLiftByPassc                 @    |                      t          dd           d S )Nr5   zA
C
re   r   )r   r3   rl   s    r(   rm   zTestLiftByPass.test_lift1   s0    !!%a2: 	" 	< 	< 	< 	< 	<r*   c                 @    |                      t          dd           d S )Nrq   zA 1
D 3
r   )r   r;   rl   s    r(   rr   zTestLiftByPass.test_lift2   s5    !!%a2> 	" 	@ 	@ 	@ 	@ 	@r*   c                 @    |                      t          dd           d S )Nr5   zA 1 100
D 2 101
r   )r   r?   rl   s    r(   rt   zTestLiftByPass.test_lift3   s5    !!%a2F 	" 	H 	H 	H 	H 	Hr*   c                 @    |                      t          dd           d S )Nrq   z	A 0
E 11
r   )r   rE   rl   s    r(   rv   zTestLiftByPass.test_lift4   s5    !!%a2? 	" 	A 	A 	A 	A 	Ar*   c                 @    |                      t          dd           d S )Nr   zA
r   )r   rH   rl   s    r(   rx   zTestLiftByPass.test_lift5   s0    !!%a27 	" 	9 	9 	9 	9 	9r*   N)ry   rz   r{   rm   rr   rt   rv   rx   r2   r*   r(   r   r      sh        < < <@ @ @H H HA A A9 9 9 9 9r*   r   c                   b    e Zd Zd Zd Zd Zd Zd Ze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   rc   r   )rd   r$   jittedgotexpects        r(   check_same_semanticz TestLiftCall.check_same_semantic   s    d 	#FHHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	  	&DFFF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	):):;;;;;s   599A%%A),A)c                 t    |                      t          dd           |                     t                     d S )Nr5   zA 1
B 2
r   )r   rK   r   rl   s    r(   test_liftcall1zTestLiftCall.test_liftcall1  sC    !!)!2> 	" 	@ 	@ 	@  +++++r*   c                 t    |                      t          dd           |                     t                     d S )Nrq   zA 1
B 2
C 12
r   )r   rM   r   rl   s    r(   test_liftcall2zTestLiftCall.test_liftcall2  C    !!)!2D 	" 	F 	F 	F  +++++r*   c                 t    |                      t          dd           |                     t                     d S )Nrq   zA 1
B 2
C 47
r   )r   rO   r   rl   s    r(   test_liftcall3zTestLiftCall.test_liftcall3  r   r*   c                 H   t           j        t           j        t           j        t           j        f}|                     |          5 } t          t                                 d d d            n# 1 swxY w Y   d}|                     |t          |j
                             d S )Nz2compiler re-entrant to the same function signature)r   TypingErrorNumbaRuntimeErrorNumbaValueErrorCompilerErrorassertRaisesr   rR   assertInstr	exception)rd   acceptraisesmsgs       r(   test_liftcall4zTestLiftCall.test_liftcall4  s    $f&>(&*>@v&& 	&DOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 Dc3v/0011111s   A--A14A1c                 t    |                      t          dd           |                     t                     d S )Nr5   z0
1
2
3
4
5
A
r   )r   rU   r   rl   s    r(   test_liftcall5zTestLiftCall.test_liftcall5  sE     	!!)!2I 	" 	K 	K 	K  +++++r*   N)ry   rz   r{   r   r   r   r   r   r   r   r   r   r2   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   rd   r   kwargsr   fns       r(   corez+expected_failure_for_list_arg.<locals>.core$  s    v122 	&fBt%d%%%f%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&2&*++	- 	- 	- 	- 	-   :>>r2   r   r   s   ` r(   expected_failure_for_list_argr   #  #    - - - - -
 Kr*   c                       fd}|S )Nc                     |                      t          j                  5 } | g|R i | d d d            n# 1 swxY w Y   |                     dt	          |j                             d S )NzDoes not support function typer   r   s       r(   r   z/expected_failure_for_function_arg.<locals>.core-  s    v122 	&fBt%d%%%f%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&6&*++	- 	- 	- 	- 	-r   r2   r   s   ` r(   !expected_failure_for_function_argr   ,  r   r*   c                      e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
ed	             Zd
 Zed             Zd Zed             Zd Zd Zd Zd Zd Zd Zed             Zd Zd Zd Zd Zej        d             Zed             Z d Z!e"d             Z#e$e%e&d                                     Z'ej        d             Z(d Z)d  Z*d! Z+d" Z,d# Z-d$ Z.d% Z/d& Z0d' Z1d( Z2d) Z3d* Z4d+ Z5e6d,             Z7d- Z8d. Z9d/ Z:d0 Z;d1 Z<d2S )3TestLiftObjc                 D    t          j        dt          j                   d S Nerrorwarningssimplefilterr   NumbaWarningrl   s    r(   r   zTestLiftObj.setUp7      gv':;;;;;r*   c                 ,    t          j                     d S rQ   r   resetwarningsrl   s    r(   tearDownzTestLiftObj.tearDown:           r*   c                 2   t          j        |          }t          j        |          }t          |          }t                      5 } || }|                                }d d d            n# 1 swxY w Y   |                    t          t          t          |                               t                      5 } || }	|                                }
d d d            n# 1 swxY w Y   | 	                    ||
           | 
                    ||	           d S rQ   )copydeepcopyr   r   r   compiletuplemapr   rc   assertPreciseEqual)rd   pyfuncr   py_argsc_argscfuncstream
expect_res
expect_outgot_resgot_outs              r(   assert_equal_return_and_stdoutz*TestLiftObj.assert_equal_return_and_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 =ivalrq   rG   )r   s    r(   barz0TestLiftObj.test_lift_objmode_basic.<locals>.barP  s!    (VTQY/00000r*   c                 l    | dz  } t           5   |            d d d            n# 1 swxY w Y   | dz   S Nr5   r   r   r   s    r(   fooz0TestLiftObj.test_lift_objmode_basic.<locals>.fooS  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_nonglobalY  s    AID  D			              !8Os   +//{   r   )rd   r   r   r   s      @r(   test_lift_objmode_basicz#TestLiftObj.test_lift_objmode_basicO  sx    	1 	1 	1	 	 	 	 		 	 	 	 	 	++C555++M3?????r*   c                 H    d fd}d}|                      ||           d S )Nc                 8    t          d| dz  i           | dz  } d S )Narrrq   rG   )r   s    r(   r   z3TestLiftObj.test_lift_objmode_array_in.<locals>.barc  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>.fooh  s    )E""))"(33C   C               7Ns   AAAr7   r   )rd   r   r  r   s      @r(   test_lift_objmode_array_inz&TestLiftObj.test_lift_objmode_array_inb  sN    	 	 	
	 	 	 	 	 ++C77777r*   c                 H    d fd}d}|                      ||           d S )Nc                 $    t          |            d S rQ   rG   r>   s    r(   r   z<TestLiftObj.test_lift_objmode_define_new_unused.<locals>.bars  s    !HHHHHr*   c                     t                      5  d| z   }t          j        |          } |           d d d            n# 1 swxY w Y   | S Nrq   )r   r   r   )r:   r>   ar   s      r(   r   z<TestLiftObj.test_lift_objmode_define_new_unused.<locals>.foov  s     ""  EIaLLA               Hs   %AAAr   r   )rd   r   argr   s      @r(   #test_lift_objmode_define_new_unusedz/TestLiftObj.test_lift_objmode_define_new_unusedr  sN    	 	 		 	 	 	 	 ++C55555r*   c                 ~    d fd}fd}d}|                      ||           |                      ||           d S )Nc                 *    t          |            d| z  S r   rG   r9   s    r(   inversez<TestLiftObj.test_lift_objmode_return_simple.<locals>.inverse      !HHHq5Lr*   c                 r    t          d          5   |           }d d d            n# 1 swxY w Y   | |fS Nfloat64r  r   r:   r>   r  s     r(   r   z8TestLiftObj.test_lift_objmode_return_simple.<locals>.foo  s     9---  GAJJ              a4K   *..c                 |    t          j        d          5   |           }d d d            n# 1 swxY w Y   | |fS r  r   r  s     r(   r   zBTestLiftObj.test_lift_objmode_return_simple.<locals>.foo_nonglobal  s    +++  GAJJ              a4Ks   /33r   r   )rd   r   r   r
  r  s       @r(   test_lift_objmode_return_simplez+TestLiftObj.test_lift_objmode_return_simple  s}    	 	 		 	 	 	 	
	 	 	 	 	
 ++C555++M3?????r*   c                     d fd}t          j        ddt           j                  }|                     ||           d S )Nc                 *    t          |            d| z  S r   rG   r9   s    r(   r  z;TestLiftObj.test_lift_objmode_return_array.<locals>.inverse  r  r*   c                     t          dd          5   |           }t          |d                   }d d d            n# 1 swxY w Y   | ||fS )N
float64[:]r  )r>   zr   )r   int)r:   r>   r  r  s      r(   r   z7TestLiftObj.test_lift_objmode_return_array.<locals>.foo  s     <7;;;  GAJJ!II               a7Ns   !A  AAr5   r7   dtype)r   r   r  r   )rd   r   r
  r  s      @r(   test_lift_objmode_return_arrayz*TestLiftObj.test_lift_objmode_return_array  sa    	 	 		 	 	 	 	 i2RZ000++C55555r*   c                 @    d }g d}|                      ||           d S )Nc                     t          d          5  t          |            d| d<   t          |            g d| z   }t          j        d |D                       }d d d            n# 1 swxY w Y   | |fS )Nr  r     r   r5   rq      c                     g | ]}d |z  S )r5   r2   ).0rD   s     r(   
<listcomp>zITestLiftObj.test_lift_objmode_using_list.<locals>.foo.<locals>.<listcomp>  s    111!A111r*   )r   r0   r   asarrayr=   s     r(   r   z5TestLiftObj.test_lift_objmode_using_list.<locals>.foo  s     <000 3 3a!aIIMJ11q111223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 a4Ks   A	A&&A*-A*r#  r   rd   r   r
  s      r(   test_lift_objmode_using_listz(TestLiftObj.test_lift_objmode_using_list  s8    	 	 	 ii++C55555r*   c                 <    d }d}|                      ||           d S )Nc                    t          |           D ]} | r| dz  } t          d          5  t          |            | dz  } t          |            t          |           D ]}| |z  } t          |            	 d d d            n# 1 swxY w Y   | S )Nr5   intpr9   )rB   r   r0   rC   s     r(   r   z4TestLiftObj.test_lift_objmode_var_redef.<locals>.foo  s    1XX   Q 6***  aQaq  AFA!HHHH	               Hs   A
BBBr   r   r)  s      r(   test_lift_objmode_var_redefz'TestLiftObj.test_lift_objmode_var_redef  s4    	 	 	 ++C55555r*   c                 >    d }|                      |g dd           d S )Nc                     || d<   t                      5  t          |            d d d            n# 1 swxY w Y   t                      5  d|z  | d<   t          |            d d d            n# 1 swxY w Y   | S r  r   r0   r:   r  s     r(   r   z=TestLiftObj.test_case01_mutate_list_ahead_of_ctx.<locals>.foo      AaD ""  a               !""  1u!a              
 H   044	A--A14A1r#     r   rd   r   s     r(   $test_case01_mutate_list_ahead_of_ctxz0TestLiftObj.test_case01_mutate_list_ahead_of_ctx  s5    	 	 	 	++CB?????r*   c                 f    d }t          j        g d          }|                     ||d           d S )Nc                     || d<   t                      5  t          |            d d d            n# 1 swxY w Y   t                      5  d|z  | d<   t          |            d d d            n# 1 swxY w Y   | S r  r1  r2  s     r(   r   z>TestLiftObj.test_case02_mutate_array_ahead_of_ctx.<locals>.foo  r3  r4  r#  r5  r   arrayr   rd   r   r:   s      r(   %test_case02_mutate_array_ahead_of_ctxz1TestLiftObj.test_case02_mutate_array_ahead_of_ctx  sD    	 	 	 HYYY++CB77777r*   c                 8    d }|                      |d           d S )Nc                     t          d          5  g d}d d d            n# 1 swxY w Y   t                      5  d|d<   d d d            n# 1 swxY w Y   |S NzList(int64)r  r#  r7   rq   r   r=   s     r(   r   z6TestLiftObj.test_case03_create_and_mutate.<locals>.foo       =111  II               ""  !              H   "&&AAAr5   r   r6  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  kr1  r9   s    r(   r   z=TestLiftObj.test_case04_bogus_variable_type_info.<locals>.foo  sx     <000  a              H   -11r#  z1Invalid type annotation on non-outgoing variables)	r   r;  r   r   r   r   r   r   r   rd   r   r:   cfoor   s        r(   $test_case04_bogus_variable_type_infoz0TestLiftObj.test_case04_bogus_variable_type_info  s    	 	 	 HYYYCyyv122 	fDGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	? !!	 	 	 	 	   A  A$'A$c                     d }t          j        g d          }t          |          }|                     t                    5 } ||          }d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nc                 `    t          d          5  | dz   }d d d            n# 1 swxY w Y   |S )Nr  r  y              ?r   r2  s     r(   r   z4TestLiftObj.test_case05_bogus_type_info.<locals>.foo  sx     !<000  G              H   #''r#  zXcan't unbox array from PyObject into native value.  The object maybe of a different type)r   r;  r   r   	TypeErrorr   r   r   )rd   r   r:   rJ  r   r   s         r(   test_case05_bogus_type_infoz'TestLiftObj.test_case05_bogus_type_info   s    	 	 	 HYYYCyyy)) 	V$q''C	 	 	 	 	 	 	 	 	 	 	 	 	 	 	6 !!	
 	
 	
 	
 	
   AA"Ac                     d }|                      t          j                  5 } t          |          d           d d d            n# 1 swxY w Y   d}|                     t          |j                  |           d S )Nc                     t                      5  t                      5  t          |            d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   | S rQ   r1  r9   s    r(   r   z3TestLiftObj.test_case06_double_objmode.<locals>.foo  s     !"" ! !(** ! !a! ! ! ! ! ! ! ! ! ! ! ! ! ! !! ! ! ! ! ! ! ! ! ! ! ! ! ! ! Hs.   A:A>	A>	AAAr   z@During: resolving callee type: type\(ObjModeLiftedWith\(<.*>\)\))r   r   r   r   assertRegexr   r   )rd   r   r   pats       r(   test_case06_double_objmodez&TestLiftObj.test_case06_double_objmode  s    	 	 	 v122 	fDIIcNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	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   )r:   tus      r(   r   z6TestLiftObj.test_case07_mystery_key_error.<locals>.foo&  s~     ""  !H               a7Ns   "&&r#  z;Missing type annotation on outgoing variable(s): ['t', 'u']z9Example code: with objmode(t='<add_type_as_string_here>'))	r   r;  r   r   r   r   r   r   r   )rd   r   r:   rJ  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	 	 	 	 	rL  c                 B   t                      fd}t          j        g d          }t          |          }|                     t
                    5 } ||           d d d            n# 1 swxY w Y   |                     t          |j                  d           d S )Nc                     t          t          |                     D ]Y}t                      5  t          |          }| |         }||<   t	          d                    d d d            n# 1 swxY w Y   Z| S )N2)rB   rb   r   r   r0   )r:   rD   rG  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   KeyErrorrc   r   r   )rd   r   r:   rJ  r   rc  s        @r(   test_case08_raise_from_externalz+TestLiftObj.test_case08_raise_from_external9  s     FF	 	 	 	 	 HYYYCyyx(( 	FDGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	V-..66666s   A,,A03A0c                 *   d }t          j        g d          }t          |          }|                     t          j                  5 } ||           d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nc                 V    t                      5  t                      # 1 swxY w Y   | S rQ   )r   
ValueErrorr9   s    r(   r   z3TestLiftObj.test_case09_explicit_raise.<locals>.fooN  sO     "" # # ll"# # # # # # # #Hs   ""r#  zBunsupported control flow due to raise statements inside with block)	r   r;  r   r   r   r   r   r   r   rI  s        r(   test_case09_explicit_raisez&TestLiftObj.test_case09_explicit_raiseM  s    	 	 	
 HYYYCyyv344 	DGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 !!	
 	
 	
 	
 	
rL  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`  rA  rB  r#  r:  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  r7   rq   )r   r   r(  r=   s     r(   r   zATestLiftObj.test_case10_mutate_array_across_contexts.<locals>.fool  s     :... 9 9Jyyy8889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 ""  !               Hs   6::A!!A%(A%r#  r:  r<  s      r(   (test_case10_mutate_array_across_contextsz4TestLiftObj.test_case10_mutate_array_across_contextsj  sB    	 	 	 HYYY++C33333r*   c                     d }t          j        g d          }t          |          }|                     t                    5 } ||           d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nc                 X    t                      5  d }d d d            n# 1 swxY w Y   | S )Nc                     | dz   S r   r2   r  s    r(   r   zLTestLiftObj.test_case11_define_function_in_context.<locals>.foo.<locals>.bar{  s    q5Lr*   r   )r:   r   s     r(   r   z?TestLiftObj.test_case11_define_function_in_context.<locals>.fooy  sy     "" ! !! ! !! ! ! ! ! ! ! ! ! ! ! ! ! ! ! Hs   ##r#  z global name 'bar' is not defined)r   r;  r   r   	NameErrorr   r   r   rI  s        r(   &test_case11_define_function_in_contextz2TestLiftObj.test_case11_define_function_in_contextw  s    	 	 	 HYYYCyyy)) 	VDGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	. !!	
 	
 	
 	
 	
rS  c                 p    d fd}t          j        g d          }|                     ||           d S )Nc                     | dz   S r   r2   r  s    r(   r   z>TestLiftObj.test_case12_njit_inside_a_objmode_ctx.<locals>.bar  s    q5Lr*   c                     t          d          5   t                    |                               d          }d d d            n# 1 swxY w Y   | |z   S )Nrp  r  r  )r   r   r   r:   r>   r   s     r(   r   z>TestLiftObj.test_case12_njit_inside_a_objmode_ctx.<locals>.foo  s     :... 1 1DIIaLL''001 1 1 1 1 1 1 1 1 1 1 1 1 1 1q5Ls   ,A

AAr#  r:  )rd   r   r:   r   s      @r(   %test_case12_njit_inside_a_objmode_ctxz1TestLiftObj.test_case12_njit_inside_a_objmode_ctx  s\    	 	 		 	 	 	 	
 HYYY++C33333r*   c                     d } |t          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 )Nrp  r9   r5   r   r9   s    r(   r   zCTestLiftObj.test_case14_return_direct_from_objmode_ctx.<locals>.foo  s     :...  Q                 s   %))r#  )rq   r$  r"  )r   r;  testingassert_array_equal)rd   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 )Nr7   c                     t          d          5  t          |            | z   cd d d            S # 1 swxY w Y   d S )Nrp  r9   r1  )r:   js    r(   r   zHTestLiftObj.test_case15_close_over_objmode_ctx.<locals>.foo.<locals>.bar  s    $z222 ! !!HHHq5! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !s   377rq   r2   )r:   r   r  s     @r(   r   z;TestLiftObj.test_case15_close_over_objmode_ctx.<locals>.foo  s5    A! ! ! ! ! 3q66A:r*   r#  r:  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  rF  )r   r   )r   r0   
csr_matrixr   r  )r:   spxrG  sps      r(   r   z>TestLiftObj.test_case16_scipy_call_in_objmode_ctx.<locals>.foo  s     7+++ ( (ammA&& HSY''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( Hs   ?AA!$A!r#  )scipyr  r   r;  r   )rd   r   r:   r  s      @r(   %test_case16_scipy_call_in_objmode_ctxz1TestLiftObj.test_case16_scipy_call_in_objmode_ctx  s_    &&&&&&	 	 	 	 	 HYYY++C33333r*   c                 v    dd l fdt          j        g d          }|                     |           d S )Nr   c                     t                      5                                 d d d            d S # 1 swxY w Y   d S rQ   )r   dis)r:   r  r   s    r(   r   z7TestLiftObj.test_case17_print_own_bytecode.<locals>.foo  s     ""                   s   377r#  )r  r   r;  r   )rd   r:   r  r   s     @@r(   test_case17_print_own_bytecodez*TestLiftObj.test_case17_print_own_bytecode  s\    


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


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


r*   c                     | j         j        S rQ   )r;  sizerl   s    r(   r  z3TestLiftObj.test_objmode_jitclass.<locals>.Bag.size  s    z&r*   c                 h    t          | j                  D ]}| j        |xx         |z  cc<   | j        S rQ   )rB   r  r;  )rd   r  rD   s      r(   	incrementz8TestLiftObj.test_objmode_jitclass.<locals>.Bag.increment  s=    ty)) ) )AJqMMMS(MMMMz!r*   c                     | |z   S rQ   r2   r=   s     r(   addz2TestLiftObj.test_objmode_jitclass.<locals>.Bag.add  s    1ur*   N)	ry   rz   r{   r  propertyr  r  staticmethodr  r2   r*   r(   Bagr    sh        ? ? ? ' ' X'" " "
   \  r*   r     c                      d S rQ   r2   r2   r*   r(   r   z.TestLiftObj.test_objmode_jitclass.<locals>.foo  r  r*   c                  $    j         fd} | S )Nc                      t                    5   d          } |                     d           d d d            n# 1 swxY w Y   | S )Nr  r   r$  )r   r  )r   r  r  s    r(   r  zETestLiftObj.test_objmode_jitclass.<locals>.foo_overload.<locals>.impl  s    +++ % %#c((CMM!$$$% % % % % % % % % % % % % % % 
s   !?AA)_numba_type_)r  r  r  mybags    @r(   r  z7TestLiftObj.test_objmode_jitclass.<locals>.foo_overload  s1    *I     
 Kr*   c                                    S rQ   r2   r  s   r(   r   z.TestLiftObj.test_objmode_jitclass.<locals>.bar  r  r*   rq   r$  rT   r   r  )r   r	  r  r   objectr   r   r  rc   r  r   r  r   r;  )
rd   specnr  r   r  	exp_arrayr  r   r!  s
          @@@r(   test_objmode_jitclassz!TestLiftObj.test_objmode_jitclass  s[   ek"emAAA&'

 
$	 	 	 	 	& 	 	 
	$ A	 	 	 
#	 	 	 	 	 
	 
	 	 	 	 
	 CEEa%%%q!e,,,HS
333a7	33333r*   c                 `    t          d          5  | dz  }d d d            n# 1 swxY w Y   |S Nr  outputr7   r  r:   r+  s     r(   case_objmode_cachezTestLiftObj.case_objmode_cache  sv    I&&& 	 	VF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	rP  c                     t          g d          t          fd            }|                     t          j                  5 } |             d d d            n# 1 swxY w Y   |                     t          |j                  d           d S )Nr5   rq   r$  r"  rT   c                  `    t                    5  g d} d d d            n# 1 swxY w Y   | S )Nr  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   rV  r   r   rd   r2  r   r1  s      @r(   test_objmode_reflected_listz'TestLiftObj.test_objmode_reflected_list  s    ///**		 	 	 	 
	
 v344 	EGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 !!3	
 	
 	
 	
 	
   AA"Ac                     t          h d          t          fd            }|                     t          j                  5 } |             d d d            n# 1 swxY w Y   |                     t          |j                  d           d S )N   r5   rq   r$  r"  rT   c                  `    t                    5  h d} d d d            n# 1 swxY w Y   | S )N)r  r9  r  )r  r1  s    r(   r2  z5TestLiftObj.test_objmode_reflected_set.<locals>.test2  sw    ))) ) )() ) ) ) ) ) ) ) ) ) ) ) ) ) )Mr3  zObjmode context failed. Argument 'result' is declared as an unsupported type: reflected set\(int(32|64)\). Reflected types are not supported.r4  r5  s      @r(   test_objmode_reflected_setz&TestLiftObj.test_objmode_reflected_set  s    ///**		 	 	 	 
	
 v344 	EGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 !!3	
 	
 	
 	
 	
r7  c                 F   t          j        t           j        t           j                  t          fd            }|                     t                    5 } |             d d d            n# 1 swxY w Y   |                     dt          |j	                             d S )Nc                  b    t                    5  ddd} d d d            n# 1 swxY w Y   | S )Nresr5   rq   )r,   r-   r  r?  r1  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   rQ  r   r   r   rd   rA  r   r1  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>  r5   rq   r  r@  s    r(   rA  z2TestLiftObj.test_objmode_typed_list.<locals>.test4(  sw    X&&&  !f              Jr3  zLcan't unbox a <class 'list'> as a (<class ')?numba.typed.typedlist.List('>)?)	r   ListTyper  r   r   rQ  rV  r   r   rD  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>.foo9  s~    ... $ $FF7OO$ $ $ $ $ $ $ $ $ $ $ $ $ $ $Hs   8<<r5   r  )r   r   onesr  rL  r  r   )rd   r   r	  expectedr   s        r(   test_objmode_use_of_viewz$TestLiftObj.test_objmode_use_of_view6  sx     
	 	 
	
 GArx  %%i00;;q>>c!ff#.....r*   N)=ry   rz   r{   r   r   r   r   r  r  r  r  r   r*  r.  r7  r=  rC  rK  rR  rX  r^  rf  rj  rm  rq  rv  r{  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-  r6  r;  rE  rI  rO  r2   r*   r(   r   r   5  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 Nr7   r2   r9   s    r(   case_inner_pyfuncrT  E  s    r6Mr*   c                 t    t          d          5  t          |           }d d d            n# 1 swxY w Y   |S Nr  r*  )r   rT  r,  s     r(   r-  r-  I  sz    			"	"	" & &"1%%& & & & & & & & & & & & & & &MrH  c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestLiftObjCachingc                 D    t          j        dt          j                   d S r   r   rl   s    r(   r   zTestLiftObjCaching.setUpR  r   r*   c                 ,    t          j                     d S rQ   r   rl   s    r(   r   zTestLiftObjCaching.tearDownU  r   r*   c                 N    t          d          |          }|                      |d          d            t          d          |          }|                     |j                   |                      |d          d           |                     |j                   d S )NT)cacher   r  )r   rc   assertFalse_cache_hits
assertTrue)rd   r  firstseconds       r(   checkzTestLiftObjCaching.checkX  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>.pyfuncb  sv    	***    R                             MrP  rb  )rd   r   s     r(   test_objmode_caching_basicz-TestLiftObjCaching.test_objmode_caching_basica  s+    	 	 	
 	

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

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

%&&&&&r*   N)	ry   rz   r{   r   r   rb  rf  rk  rm  r2   r*   r(   rX  rX  O  sn        < < <! ! !, , ,  	 	 	' ' ' ' 'r*   rX  c                        e Zd Zd Zd Zd ZdS )TestBogusContextc                 2   t          t                    }|                     t          j                  5 }t          || j        | j        | j        i            d d d            n# 1 swxY w Y   | 	                    dt          |j                             d S )Nr   z*Undefined variable used as context manager)r)   rX   r   r   r   r   r   r   r   r   r   r   rd   rf   r   s      r(   test_undefined_globalz&TestBogusContext.test_undefined_globaly  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   rq  s      r(   test_invalidzTestBogusContext.test_invalid  s    \**v344 	
2   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	0 !!	 	 	 	 	rs  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   UnsupportedBytecodeErrorr   r   r   )rd   r   r   excstrr   s        r(   test_with_as_fails_gracefullyz.TestBogusContext.test_with_as_fails_gracefully  s    		 	 
	 v>?? 	6CEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 V%&&c6"""""s   AAAN)ry   rz   r{   rr  ru  r}  r2   r*   r(   ro  ro  x  sA        
 
 

 
 
# # # # #r*   ro  c                   B    e Zd ZdZeej        d                         ZdS )TestMiscFc                     t                      s|                     d           d }g d}t          ||          }|                     |           d S )Nzstrace support missingc                  6    t          d          d             } d S )Nzvoid()c                  `    t          j                    5  	 d d d            d S # 1 swxY w Y   d S rQ   r   r2   r*   r(   r  zFTestMisc.test_no_fork_in_compilation.<locals>.force_compile.<locals>.f  su    ]__                   s   #'')r   rz  s    r(   force_compilez;TestMisc.test_no_fork_in_compilation.<locals>.force_compile  s+    (^^  ^  r*   )forkcloneexecve)r   skipTestr   r]  )rd   r  syscallsstrace_datas       r(   test_no_fork_in_compilationz$TestMisc.test_no_fork_in_compilation  sl      !! 	4MM2333	 	 	 /.. ]H55%%%%%r*   N)ry   rz   r{   _numba_parallel_test_r   r   run_test_in_subprocessr  r2   r*   r(   r  r    sC         "$& & %$ Z& & &r*   r  __main__)Mr   r   numpyr   r   numba.core.transformsr   r   numba.core.withcontextsr   r   r   numba.core.bytecoder   r	   numba.core.interpreterr
   
numba.corer   numba.core.registryr   numba.core.compilerr   r   r   r   r   r   numba.core.extendingr   numba.tests.supportr   r   r   r   r   r   r   r   r   r   numba.core.utilsr   numba.experimentalr   rP  r)   r3   r;   r?   rE   rH   rK   rM   rO   rR   rU   rX   r#  r\   r]   r-  r  r_   r}   r   r   r   r   r   rT  r-  rX  ro  r  ry   mainr2   r*   r(   <module>r     sE          ? ? ? ? ? ? ? ? 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 9 9 ' & & & & & ' ' ' ' ' '       "  "  ,    	 	 	        
 vxx   
 *6 6 6 6 6h 6 6 6,; ; ; ; ;( ; ; ;:9 9 9 9 9( 9 9 9.-, -, -, -, -,& -, -, -,`    M/ M/ M/ M/ M/*h M/ M/ M/`    &' &' &' &' &'X &' &' &'R%# %# %# %# %#* %# %# %#P& & & & &x & & &@ zHMOOOOO r*   