
    wi                        d dl Z d dlZd dlZd dlZd dlmZmZ d dlm	Z	m
Z
mZ d dlmZmZ d dlmZ d dlmZ d dlmZ d dlmZmZ d d	lmZmZmZmZ d d
lmZ d dlmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z) d dl*m+Z+ d dl,m-Z- d dl.Z.d Z/d Z0d Z1d Z2d Z3d Z4d Z5d Z6d Z7d Z8d Z9d Z: e;            Z<d Z=ej>        Z? G d de           Z@ G d de           ZA G d d eA          ZB G d! d"eA          ZCd# ZDd$ ZE G d% d&ee           ZFd' ZGd( ZH G d) d*ee           ZI G d+ d,eA          ZJ G d- d.e           ZKeLd/k    r e.jM                     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expected_failure_py314)	PYVERSION)jitclassc                     t          j        |           }t          |          }t          |          }|                    |          }|S )N)func_id)r   from_functionr	   r
   	interpret)funcr"   bcinterpfunc_irs        l/root/.openclaw/workspace/chatterbox_venv_py311/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)   lift1r4   $   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/   
   Dr0   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 )Nr6   r7   r-   r.   r/   i r9   r0   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-   r8   r.   r6   r/   r9   E)r1   r   r2   ranger;   is     r)   lift4rF   N   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-   r1   r3   r+   r)   lift5rI   d   s    	#JJJJJr+   c                      d} t          d|            t          5  | dz  } d d d            n# 1 swxY w Y   t          d|            | S )Nr6   r-   r.   r1   r   r:   s    r)   	liftcall1rL   h   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 )Nr6   r-   r.   r8   r/   rK   r:   s    r)   	liftcall2rN   q   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 )Nr6   r-   r   r.   r8   r/   )r1   r   rC   rD   s     r)   	liftcall3rP   }   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   r3   r+   r)   	liftcall4rS      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 )Nr8      r-   )rC   r   r1   )rE   s    r)   	liftcall5rV      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 rR   )undefined_global_varr3   r+   r)   lift_undefiendrY      o    	                      c                  H    t           5  	 d d d            d S # 1 swxY w Y   d S rR   )bogus_contextmanagerr3   r+   r)   lift_invalidr^      rZ   r[   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 Nr6   rf   )ri   r4   re   s    r)   
test_lift1zTestWithFinding.test_lift1   !    u155555r+   c                 >    |                      t          d           d S N   rl   )ri   r<   rm   s    r)   
test_lift2zTestWithFinding.test_lift2   ro   r+   c                 >    |                      t          d           d S rk   )ri   r@   rm   s    r)   
test_lift3zTestWithFinding.test_lift3   ro   r+   c                 >    |                      t          d           d S rq   )ri   rF   rm   s    r)   
test_lift4zTestWithFinding.test_lift4   ro   r+   c                 >    |                      t          d           d S )Nr   rl   )ri   rI   rm   s    r)   
test_lift5zTestWithFinding.test_lift5   ro   r+   N)	__name__
__module____qualname__ri   rn   rs   ru   rw   ry   r3   r+   r)   r`   r`      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 rR   )
superr~   setUpr   typing_context	typingctxtarget_context	targetctxr   flags)re   	__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   rd   rc   r   r   entry_pointgetvalue)	re   r%   rf   expected_stdoutrg   new_ir	extractedcresouts	            r)   check_extracted_withz(BaseTestWithLifting.check_extracted_with   s    T""(DNDNDJ
 
 
	 	Y666v&& 	#	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	99999s   <BB!$B!r3   Nc           	      X    | j         }| j        }| j        }t          ||||||i           S r   )r   r   r   r   )re   rg   argsreturn_typer   r   r   s          r)   r   zBaseTestWithLifting.compile_ir   s=    N	N	
)Y'r; ; ; 	;r+   )r3   N)rz   r{   r|   r   r   r   __classcell__)r   s   @r)   r~   r~      s[        # # # # #: : :; ; ; ; ; ; ; ;r+   r~   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestLiftByPassc                 @    |                      t          dd           d S )Nr6   zA
C
rf   r   )r   r4   rm   s    r)   rn   zTestLiftByPass.test_lift1   s0    !!%a2: 	" 	< 	< 	< 	< 	<r+   c                 @    |                      t          dd           d S )Nrr   zA 1
D 3
r   )r   r<   rm   s    r)   rs   zTestLiftByPass.test_lift2   s5    !!%a2> 	" 	@ 	@ 	@ 	@ 	@r+   c                 @    |                      t          dd           d S )Nr6   zA 1 100
D 2 101
r   )r   r@   rm   s    r)   ru   zTestLiftByPass.test_lift3   s5    !!%a2F 	" 	H 	H 	H 	H 	Hr+   c                 @    |                      t          dd           d S )Nrr   z	A 0
E 11
r   )r   rF   rm   s    r)   rw   zTestLiftByPass.test_lift4   s5    !!%a2? 	" 	A 	A 	A 	A 	Ar+   c                 @    |                      t          dd           d S )Nr   zA
r   )r   rI   rm   s    r)   ry   zTestLiftByPass.test_lift5   s0    !!%a27 	" 	9 	9 	9 	9 	9r+   N)rz   r{   r|   rn   rs   ru   rw   ry   r3   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	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   rd   r   )re   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 )Nr6   zA 1
B 2
r   )r   rL   r   rm   s    r)   test_liftcall1zTestLiftCall.test_liftcall1  sC    !!)!2> 	" 	@ 	@ 	@  +++++r+   c                 t    |                      t          dd           |                     t                     d S )Nrr   zA 1
B 2
C 12
r   )r   rN   r   rm   s    r)   test_liftcall2zTestLiftCall.test_liftcall2  C    !!)!2D 	" 	F 	F 	F  +++++r+   c                 t    |                      t          dd           |                     t                     d S )Nrr   zA 1
B 2
C 47
r   )r   rP   r   rm   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   rS   assertInstr	exception)re   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 )Nr6   z0
1
2
3
4
5
A
r   )r   rV   r   rm   s    r)   test_liftcall5zTestLiftCall.test_liftcall5  sE    
 	!!)!2I 	" 	K 	K 	K  +++++r+   N)rz   r{   r|   r   r   r   r   r   r   r   r   r   r   r3   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   re   r   kwargsr   fns       r)   corez+expected_failure_for_list_arg.<locals>.core'  s    v122 	&fBt%d%%%f%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&2&*++	- 	- 	- 	- 	-   :>>r3   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>.core0  s    v122 	&fBt%d%%%f%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&6&*++	- 	- 	- 	- 	-r   r3   r   s   ` r)   !expected_failure_for_function_argr   /  r   r+   c                      e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
ed	             Zd
 Zed             Zd Zed             Zd Zd Zd Zd Zd Zd Zed             Zd Zd Zd Zd Zej        d             Zed             Z d Z!e"d             Z#e$e%e&e'd                                                 Z(ej        d             Z)d Z*d  Z+d! Z,d" Z-d# Z.d$ Z/d% Z0d& Z1d' Z2d( Z3d) Z4d* Z5d+ Z6e7d,             Z8d- Z9d. Z:d/ Z;d0 Z<d1 Z=d2S )3TestLiftObjc                 D    t          j        dt          j                   d S Nerrorwarningssimplefilterr   NumbaWarningrm   s    r)   r   zTestLiftObj.setUp:      gv':;;;;;r+   c                 ,    t          j                     d S rR   r   resetwarningsrm   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 rR   )copydeepcopyr   r   r   compiletuplemapr   rd   assertPreciseEqual)re   pyfuncr   py_argsc_argscfuncstream
expect_res
expect_outgot_resgot_outs              r)   assert_equal_return_and_stdoutz*TestLiftObj.assert_equal_return_and_stdout@  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 =ivalrr   rH   )r   s    r)   barz0TestLiftObj.test_lift_objmode_basic.<locals>.barS  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 Nr6   r   r   r   s    r)   fooz0TestLiftObj.test_lift_objmode_basic.<locals>.fooV  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_nonglobal\  s    AID  D			              !8Os   +//{   r   )re   r   r   r   s      @r)   test_lift_objmode_basicz#TestLiftObj.test_lift_objmode_basicR  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arrrr   rH   )r   s    r)   r   z3TestLiftObj.test_lift_objmode_array_in.<locals>.barf  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>.fook  s    )E""))"(33C   C               7Ns   AAAr8   r   )re   r   r  r   s      @r)   test_lift_objmode_array_inz&TestLiftObj.test_lift_objmode_array_ine  sN    	 	 	
	 	 	 	 	 ++C77777r+   c                 H    d fd}d}|                      ||           d S )Nc                 $    t          |            d S rR   rH   r?   s    r)   r   z<TestLiftObj.test_lift_objmode_define_new_unused.<locals>.barv  s    !HHHHHr+   c                     t                      5  d| z   }t          j        |          } |           d d d            n# 1 swxY w Y   | S Nrr   )r   r   r   )r;   r?   ar   s      r)   r   z<TestLiftObj.test_lift_objmode_define_new_unused.<locals>.fooy  s     ""  EIaLLA               Hs   %AAAr   r   )re   r   argr   s      @r)   #test_lift_objmode_define_new_unusedz/TestLiftObj.test_lift_objmode_define_new_unusedu  sN    	 	 		 	 	 	 	 ++C55555r+   c                 ~    d fd}fd}d}|                      ||           |                      ||           d S )Nc                 *    t          |            d| z  S r   rH   r:   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   )re   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   rH   r:   s    r)   r  z;TestLiftObj.test_lift_objmode_return_array.<locals>.inverse  r  r+   c                     t          dd          5   |           }t          |d                   }d d d            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r6   r8   dtype)r   r   r  r   )re   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   r6   rr      c                     g | ]}d |z  S )r6   r3   ).0rE   s     r)   
<listcomp>zITestLiftObj.test_lift_objmode_using_list.<locals>.foo.<locals>.<listcomp>  s    111!A111r+   )r   r1   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   re   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 )Nr6   intpr:   )rC   r   r1   rD   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   r1   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   re   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	  r2  r3  s     r)   r   z>TestLiftObj.test_case02_mutate_array_ahead_of_ctx.<locals>.foo  r4  r5  r$  r6  r   arrayr   re   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$  r8   rr   r   r>   s     r)   r   z6TestLiftObj.test_case03_create_and_mutate.<locals>.foo       =111  II               ""  !              H   "&&AAAr6   r   r7  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  kr2  r:   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   re   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   r3  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   )re   r   r;   rK  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 rR   r2  r:   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   )re   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   )re   r   r;   rK  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	 	 	 	 	rM  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)rC   rc   r   r   r1   )r;   rE   rH  vds       r)   r   z8TestLiftObj.test_case08_raise_from_external.<locals>.fooA  s    3q66]] " "$&& " "AA!AAaD!C&MMM	" " " " " " " " " " " " " " "
 Hs   2A,,A0	3A0	r$  z'2')	dictr   r<  r   r   KeyErrorrd   r   r   )re   r   r;   rK  r   rd  s        @r)   test_case08_raise_from_externalz+TestLiftObj.test_case08_raise_from_external<  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 rR   )r   
ValueErrorr:   s    r)   r   z3TestLiftObj.test_case09_explicit_raise.<locals>.fooQ  sO     "" # # ll"# # # # # # # #Hs   ""r$  zBunsupported control flow due to raise statements inside with block)	r   r<  r   r   r   r   r   r   r   rJ  s        r)   test_case09_explicit_raisez&TestLiftObj.test_case09_explicit_raiseP  s    	 	 	
 HYYYCyyv344 	DGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 !!	
 	
 	
 	
 	
rM  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 rA  r   r>   s     r)   r   z;TestLiftObj.test_case10_mutate_across_contexts.<locals>.fooc  rB  rC  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  r8   rr   )r   r   r)  r>   s     r)   r   zATestLiftObj.test_case10_mutate_array_across_contexts.<locals>.fooo  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_contextsm  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   r3   r  s    r)   r   zLTestLiftObj.test_case11_define_function_in_context.<locals>.foo.<locals>.bar~  s    q5Lr+   r   )r;   r   s     r)   r   z?TestLiftObj.test_case11_define_function_in_context.<locals>.foo|  sy     "" ! !! ! !! ! ! ! ! ! ! ! ! ! ! ! ! ! ! Hs   ##r$  z global name 'bar' is not defined)r   r<  r   r   	NameErrorr   r   r   rJ  s        r)   &test_case11_define_function_in_contextz2TestLiftObj.test_case11_define_function_in_contextz  s    	 	 	 HYYYCyyy)) 	VDGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	. !!	
 	
 	
 	
 	
rT  c                 p    d fd}t          j        g d          }|                     ||           d S )Nc                     | dz   S r   r3   r  s    r)   r   z>TestLiftObj.test_case12_njit_inside_a_objmode_ctx.<locals>.bar  s    q5Lr+   c                     t          d          5   t                    |                               d          }d d d            n# 1 swxY w Y   | |z   S )Nrq  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;  )re   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 )Nrq  r:   r6   r   r:   s    r)   r   zCTestLiftObj.test_case14_return_direct_from_objmode_ctx.<locals>.foo  s     :...  Q                 s   %))r$  )rr   r%  r#  )r   r<  testingassert_array_equal)re   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 )Nr8   c                     t          d          5  t          |            | z   cd d d            S # 1 swxY w Y   d S )Nrq  r:   r2  )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rr   r3   )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  rG  )r   r   )r   r1   
csr_matrixr   r  )r;   spxrH  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   )re   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 rR   )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   )re   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 rb   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 )NrU   r3   rP  s    r)   <lambda>zHTestLiftObj.test_case18_njitfunc_passed_to_objmode_ctx.<locals>.<lambda>  s
    AE r+   )r   r<  r   r   )re   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      r6   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   )re   r   rK  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  rP  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 rR   )r   r)  listreversedtolistr:   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 )NrU   zintp[:]r  )r   r   r   r{  s     r)   r   z'TestLiftObj.test_example01.<locals>.foo  s    	!A9%%%  AJ               Hs   AAA)r   r   py_funcassertIsr   r   )re   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 rR   r3   )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                             
rQ  r3   )r  r  s     r)   foo_overloadz:TestLiftObj.test_objmode_in_overload.<locals>.foo_overload  s       Kr+   c                        d          S r   r3   r   s   r)   fz/TestLiftObj.test_objmode_in_overload.<locals>.f  s    3q66Mr+   r#  )r   r   r   rd   )re   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  rd   )re   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   )re   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>.modattr1=  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>.modattr2C  sw    U[-...                Js   /33)r   r  )r   subTestr   r  r  rd   )re   r  r  r   r  s        r)   test_objmode_gv_mod_attrz$TestLiftObj.test_objmode_gv_mod_attr<  s    		 	 
	
 
	 	 
	
 X& 	* 	*BR)) * *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>.moderrorQ  su    U6777                Jr  zQError handling objmode argument 'val'. Getattr cannot be resolved at compile-timer  re   r  s     r)   test_objmode_gv_mod_attr_errorz*TestLiftObj.test_objmode_gv_mod_attr_errorP  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>.moderror^  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_multiple]  s    		 	 
	 ## :
 
 	 	
 HJJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r  c                     d t                    d             }t          fd            }|                      |            t          j        d                              t          j                             d S )Nc                      d S rR   r3   r3   r+   r)   r   z>TestLiftObj.test_objmode_closure_type_in_overload.<locals>.foon  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  r8   r   r   r   r  r  r   	shrubberys    r)   r  zUTestLiftObj.test_objmode_closure_type_in_overload.<locals>.foo_overload.<locals>.implt      +++ ; ;)B--..rz::C; ; ; ; ; ; ; ; ; ; ; ; ; ; ;
   2AAAr   r  r  r  s    @r)   r  zGTestLiftObj.test_objmode_closure_type_in_overload.<locals>.foo_overloadq  s3    aaa(I     Kr+   c                                    S rR   r3   r  s   r)   r   z>TestLiftObj.test_objmode_closure_type_in_overload.<locals>.barz      355Lr+   r8   )r   r   r   r   r   r  r  re   r  r   r   s      @r)   %test_objmode_closure_type_in_overloadz1TestLiftObj.test_objmode_closure_type_in_overloadm  s    	 	 	 
#	 	 
	 
	 	 	 	 
	 	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 rR   r3   r3   r+   r)   r   zDTestLiftObj.test_objmode_closure_type_in_overload_error.<locals>.foo  r  r+   c                  <    t           j        d d          fd} | S )Nc                      t                    5  t          j        d                              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 rR   r3   r  s   r)   r   zDTestLiftObj.test_objmode_closure_type_in_overload_error.<locals>.bar  r  r+   zIError handling objmode argument 'out'. Freevar 'shrubbery' is not defined)r   r   r  r   r   r  s      @r)   +test_objmode_closure_type_in_overload_errorz7TestLiftObj.test_objmode_closure_type_in_overload_error  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 )Nrr   )badr6   )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    :(ArU   )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  rU   )r   r
  r   r   r   r   r  )re   r   r  r  r  r  s        @r)   test_objmode_multi_type_argsz(TestLiftObj.test_objmode_multi_type_args  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<  )re   r  s     r)   __init__z7TestLiftObj.test_objmode_jitclass.<locals>.Bag.__init__  s%    "
Xe2:>>>


r+   c                     | j         j        S rR   )r<  sizerm   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 rR   )rC   r  r<  )re   r  rE   s      r)   	incrementz8TestLiftObj.test_objmode_jitclass.<locals>.Bag.increment  s=    ty)) ) )AJqMMMS(MMMMz!r+   c                     | |z   S rR   r3   r>   s     r)   addz2TestLiftObj.test_objmode_jitclass.<locals>.Bag.add  s    1ur+   N)	rz   r{   r|   r  propertyr  r  staticmethodr  r3   r+   r)   Bagr    sh        ? ? ? ' ' X'" " "
   \  r+   r     c                      d S rR   r3   r3   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 rR   r3   r  s   r)   r   z.TestLiftObj.test_objmode_jitclass.<locals>.bar  r  r+   rr   r%  rU   r   r  )r   r
  r  r    objectr   r   r  rd   r  r   r  r   r<  )
re   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  outputr8   r  r;   r,  s     r)   case_objmode_cachezTestLiftObj.case_objmode_cache  sv    I&&& 	 	VF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	rQ  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r6   rr   r%  r#  rU   c                  `    t                    5  g d} d d d            n# 1 swxY w Y   | S )Nr  r0  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   rW  r   r   re   r3  r   r2  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   r6   rr   r%  r#  rU   c                  `    t                    5  h d} d d d            n# 1 swxY w Y   | S )N)r  r:  r  )r  r2  s    r)   r3  z5TestLiftObj.test_objmode_reflected_set.<locals>.test2
  sw    ))) ) )() ) ) ) ) ) ) ) ) ) ) ) ) ) )Mr4  zObjmode context failed. Argument 'result' is declared as an unsupported type: reflected set\(int(32|64)\). Reflected types are not supported.r5  r6  s      @r)   test_objmode_reflected_setz&TestLiftObj.test_objmode_reflected_set  s    ///**		 	 	 	 
	
 v344 	EGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 !!3	
 	
 	
 	
 	
r8  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resr6   rr   )r-   r.   r  r@  r2  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   rR  r   r   r   re   rB  r   r2  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?  r6   rr   r  rA  s    r)   rB  z2TestLiftObj.test_objmode_typed_list.<locals>.test4,  sw    X&&&  !f              Jr4  zLcan't unbox a <class 'list'> as a (<class ')?numba.typed.typedlist.List('>)?)	r   ListTyper  r   r   rR  rW  r   r   rE  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>.foo=  s~    ... $ $FF7OO$ $ $ $ $ $ $ $ $ $ $ $ $ $ $Hs   8<<r6   r  )r   r   onesr  rM  r  r   )re   r   r
  expectedr   s        r)   test_objmode_use_of_viewz$TestLiftObj.test_objmode_use_of_view:  sx     
	 	 
	
 GArx  %%i00;;q>>c!ff#.....r+   N)>rz   r{   r|   r   r   r   r   r  r  r  r   r   r+  r/  r8  r>  rD  rL  rS  rY  r_  rg  rk  rn  rr  rw  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  r.  r7  r<  rF  rJ  rP  r3   r+   r)   r   r   8  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 Nr8   r3   r:   s    r)   case_inner_pyfuncrU  I  s    r6Mr+   c                 t    t          d          5  t          |           }d d d            n# 1 swxY w Y   |S Nr  r+  )r   rU  r-  s     r)   r.  r.  M  sz    			"	"	" & &"1%%& & & & & & & & & & & & & & &MrI  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   rm   s    r)   r   zTestLiftObjCaching.setUpV  r   r+   c                 ,    t          j                     d S rR   r   rm   s    r)   r   zTestLiftObjCaching.tearDownY  r   r+   c                 N    t          d          |          }|                      |d          d            t          d          |          }|                     |j                   |                      |d          d           |                     |j                   d S )NT)cacher   r  )r   rd   assertFalse_cache_hits
assertTrue)re   r  firstseconds       r)   checkzTestLiftObjCaching.check\  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>.pyfuncf  sv    	***    R                             MrQ  rc  )re   r   s     r)   test_objmode_caching_basicz-TestLiftObjCaching.test_objmode_caching_basice  s+    	 	 	
 	

6r+   c                 B    d fd}|                      |           d S )Nc                     | dz  S rT  r3   r:   s    r)   other_pyfunczNTestLiftObjCaching.test_objmode_caching_call_closure_bad.<locals>.other_pyfuncn  s    r6Mr+   c                 n    t          d          5   |           }d d d            n# 1 swxY w Y   |S rW  r  )r;   r,  rj  s     r)   r   zHTestLiftObjCaching.test_objmode_caching_call_closure_bad.<locals>.pyfuncq  s{    	*** ) )%a) ) ) ) ) ) ) ) ) ) ) ) ) ) )Mr  rf  )re   r   rj  s     @r)   %test_objmode_caching_call_closure_badz8TestLiftObjCaching.test_objmode_caching_call_closure_badm  sE    	 	 		 	 	 	 	
 	

6r+   c                 :    |                      t                     d S rR   )rc  r.  rm   s    r)   &test_objmode_caching_call_closure_goodz9TestLiftObjCaching.test_objmode_caching_call_closure_goodx  s    

%&&&&&r+   N)	rz   r{   r|   r   r   rc  rg  rl  rn  r3   r+   r)   rY  rY  S  sn        < < <! ! !, , ,  	 	 	' ' ' ' 'r+   rY  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*   rY   r   r   r   r   r   r   r   r   r   r   re   rg   r   s      r)   test_undefined_globalz&TestBogusContext.test_undefined_global~  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   rr  s      r)   test_invalidzTestBogusContext.test_invalid  s    \**v344 	
2   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	0 !!	 	 	 	 	rt  c                     t           d             }|                     t          j                  5 } |             d d d            n# 1 swxY w Y   t	          |j                  }d}|                     ||           d S )Nc                  H    t           5 } 	 d d d            d S # 1 swxY w Y   d S rR   )r   )bps    r)   r   z;TestBogusContext.test_with_as_fails_gracefully.<locals>.foo  sl     2                 r[   zGThe 'with (context manager) as (variable):' construct is not supported.)r   r   r   UnsupportedBytecodeErrorr   r   r   )re   r   r   excstrr   s        r)   test_with_as_fails_gracefullyz.TestBogusContext.test_with_as_fails_gracefully  s    		 	 
	 v>?? 	6CEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 V%&&c6"""""s   AAAN)rz   r{   r|   rs  rv  r|  r3   r+   r)   rp  rp  |  sA        	 	 		 	 	# # # # #r+   rp  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 rR   r   r3   r+   r)   r  zFTestMisc.test_no_fork_in_compilation.<locals>.force_compile.<locals>.f  su    ]__                   s   #'')r   )r  s    r)   force_compilez;TestMisc.test_no_fork_in_compilation.<locals>.force_compile  s+    (^^  ^  r+   )forkcloneexecve)r   skipTestr   r^  )re   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)rz   r{   r|   _numba_parallel_test_r   r   run_test_in_subprocessr  r3   r+   r)   r~  r~    sC         "$& & %$ Z& & &r+   r~  __main__)Nr   r   numpyr   r   numba.core.transformsr   r   numba.core.withcontextsr   r   r   numba.core.bytecoder   r	   numba.core.interpreterr
   
numba.corer   numba.core.registryr   numba.core.compilerr   r   r   r   r   r   numba.core.extendingr   numba.tests.supportr   r   r   r   r   r   r   r   r   r   r   numba.core.utilsr   numba.experimentalr    rQ  r*   r4   r<   r@   rF   rI   rL   rN   rP   rS   rV   rY   r$  r]   r^   r.  r  r`   r~   r   r   r   r   r   rU  r.  rY  rp  r~  rz   mainr3   r+   r)   <module>r     sO          ? ? ? ? ? ? ? ? Q Q Q Q Q Q Q Q Q Q : : : : : : : : . . . . . .       * * * * * * 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.., ., ., ., .,& ., ., .,b    N/ N/ N/ N/ N/*h N/ N/ N/b    &' &' &' &' &'X &' &' &'R$# $# $# $# $#* $# $# $#N& & & & &x & & &@ zHMOOOOO r+   