
    J/Ph\                        d dl Z d dlZd dlmZ d dlZd dlmZmZm	Z	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mZmZmZmZmZmZmZmZ  G d de          Z G d	 d
e          Z G d de          Z  G d de          Z! G d dee          Z" G d de          Z#e G d de                      Z$e%dk    r ej&                     dS dS )    N)product)njittypedobjmodeprange)ir_utilsir)CompilerErrorNumbaPerformanceWarningTypingErrorUnsupportedBytecodeError)	TestCaseunittestcaptured_stdoutMemoryLeakMixinskip_parfors_unsupportedskip_unless_scipyexpected_failure_py311expected_failure_py312expected_failure_py313c                       e Zd ZdS )MyErrorN)__name__
__module____qualname__     [/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/tests/test_try_except.pyr   r      s        Dr   r   c                   |    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zed             Zd Zd Zd ZdS )TestTryBareExceptzhTest the following pattern:

        try:
            <body>
        except:
            <handling>
    c                     t           d             t           fd            }|                      |d          d           |                      |d          d           d S )Nc                     | rt           d S Nr   xs    r   innerz5TestTryBareExcept.test_try_inner_raise.<locals>.inner!   s      r   c                 0    	  |            dS #  Y dS xY w)N
not raisedcaughtr   )r&   r'   s    r   udtz3TestTryBareExcept.test_try_inner_raise.<locals>.udt&   s*     a#| xxs    Fr)   Tr*   r   assertEqual)selfr+   r'   s     @r   test_try_inner_raisez&TestTryBareExcept.test_try_inner_raise    s    		 	 
	 
	  	  	  	  
	  	U\222TH-----r   c                    t           d             t           fd            }|                     t                    5 } |d           d d d            n# 1 swxY w Y   |                     t	          |j                  d           |                      |d          d           |                      |d          d           d S )	Nc                 Z    | dk    rt          d          | dk    rt          d          d S )N   one   twor$   r%   s    r   r'   z5TestTryBareExcept.test_try_state_reset.<locals>.inner2   s3    Avvenn$aenn$ r   c                 Z    	  |            d}n	#  d}Y nxY w| dk    r d           |S )Nr)   r*   r   r4   r   )r&   resr'   s     r   r+   z3TestTryBareExcept.test_try_state_reset.<locals>.udt9   sI    a"AvvaJs    r   r5   r2   r*   r)   )r   assertRaisesr   r-   str	exception)r.   r+   raisesr'   s      @r   test_try_state_resetz&TestTryBareExcept.test_try_state_reset1   s   		% 	% 
	% 
	 	 	 	 
	 w'' 	6CFFF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	V-..666Q***R,/////s   AAAc                 &    t           d             }|S )Nc                     | dk    rt          d           t          d          | dk    rt          d           t          d          | dk    rt          d           t          d	          t          d
           d S )Nr2   call_oner3   r4   call_twor5      
call_threethree
call_otherprintr   r%   s    r   r'   z-TestTryBareExcept._multi_inner.<locals>.innerK   s    Avvj!!!enn$aj!!!enn$al###g&&&l#####r   )r   )r.   r'   s     r   _multi_innerzTestTryBareExcept._multi_innerJ   s"    		$ 	$ 
	$ r   c                    |                                  t          fd            }|                     t                    5 }t	                      5 } |ddd           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                     |                                                                g d           |                     t          |j	                  d           t	                      5 } |ddd           d d d            n# 1 swxY w Y   |                     |                                                                g d           t	                      5 } |ddd           d d d            n# 1 swxY w Y   |                     |                                                                g d	           d S )
Nc                 "   	 	 t          d            |            t          d           d S #  t          d            |           t          d           Y d S xY w#  t          d            |           t          d           Y d S xY w)NABCDEF)rG   )r&   yzr'   s      r   r+   z.TestTryBareExcept.test_nested_try.<locals>.udt^   s    #JJJE!HHH#JJJJJ#JJJE!HHH#JJJJJJc


ac





s   )/ +AA  A   +Br2   r4   rB   )rK   r@   rM   rA   rO   rC   rD   r   )rK   r@   rM   rE   rN   )rK   r@   rM   rA   rO   rE   rP   )
rH   r   r9   r   r   r-   getvaluesplitr:   r;   )r.   r+   r<   stdoutr'   s       @r   test_nested_tryz!TestTryBareExcept.test_nested_try[   s   !!##		 	 	 	 
	  w'' 	6 "" fAq!              	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	OO##%%AAA	
 	
 	
 	V-..888  	&C1aLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	OO##%%555	
 	
 	
  	&C1aLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	OO##%%FFF	
 	
 	
 	
 	
sZ   BA+B+A/	/B2A/	3BB	B?DD D.FFFc                 l   |                                  t          fd            }t                      5 } |dd          }d d d            n# 1 swxY w Y   |                     |                                                                g d           |                     |d           t                      5 } |dd          }d d d            n# 1 swxY w Y   |                     |                                                                g d           |                     |d           t                      5 } |dd          }d d d            n# 1 swxY w Y   |                     |                                                                g d           |                     |d	           d S )
Nc                     	 t          d           t          |          D ]"}t          |           || k    r |           #n#  t          d           Y nxY w|S )NrK   rL   )rG   range)r&   nir'   s      r   r+   z/TestTryBareExcept.test_loop_in_try.<locals>.udt   sl    c


q ! !A!HHHAvva!c




Hs   AA ArB      )rK   0123rC   rL   r2   )rK   r]   r^   r@   rL   r   )rK   r]   rE   r^   r_   r4   )rH   r   r   r-   rS   rT   )r.   r+   rU   r7   r'   s       @r   test_loop_in_tryz"TestTryBareExcept.test_loop_in_try   s   !!##			 		 		 		 
		  	&#a))C	 	 	 	 	 	 	 	 	 	 	 	 	 	 	OO##%%888	
 	
 	
 	a     	&#a))C	 	 	 	 	 	 	 	 	 	 	 	 	 	 	OO##%%,,,	
 	
 	
 	a     	&#a))C	 	 	 	 	 	 	 	 	 	 	 	 	 	 	OO##%%...	
 	
 	
 	a     s5   AAA:CCC>EEEc                 2   t           d             }t                      5 } |d          }d d d            n# 1 swxY w Y   |                     |                                                                ddg           |                     |d           t                      5 } |d          }d d d            n# 1 swxY w Y   |                     |                                                                ddg           |                     |d           d S )	Nc                     	 t          d           | rt          d          t          d           n#  t          d           Y dS xY wdS )NrK   my_errorrL   rM   A  {   rF   r%   s    r   r+   z0TestTryBareExcept.test_raise_in_try.<locals>.udt   sU    c


 .!*---c



c


ss3s	   /2 ATrK   rM   re   FrL   rf   r   r   r-   rS   rT   r.   r+   rU   r7   s       r   test_raise_in_tryz#TestTryBareExcept.test_raise_in_try   s   			 		 
		  	&#d))C	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	OO##%%#J	
 	
 	
 	c"""  	&#e**C	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	OO##%%#J	
 	
 	
 	c"""""   7;;"B::B>B>c                 .   t           fd            t                      5 } d          }d d d            n# 1 swxY w Y   |                     |           |                     |                                                                dg           d S )Nc                     | dk    r'	  | dz
             n#  t          d           Y dS xY w| dk    rt          d          d S )Nr   r2   CAUGHT   r;   )rG   
ValueError)r&   foos    r   rp   z-TestTryBareExcept.test_recursion.<locals>.foo   s]    1uuCAJJJJ(OOO22Avv --- vs    ,
   rm   )r   r   assertIsNoner-   rS   rT   )r.   rU   r7   rp   s      @r   test_recursionz TestTryBareExcept.test_recursion   s    		. 	. 	. 	. 
	.  	&#b''C	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	#**0022XKAAAAAs   :>>c                 N   t           d             t           fd            }t                      5 } |d          }d d d            n# 1 swxY w Y   |                     |d           |                     |                                                                g            d S )Nc              3   ~   K   | dk    r4	 dV  t          d          # t          $ r t          d           Y d S w xY wd S )Nr      r;   rm   )ro   	ExceptionrG   r%   s    r   rp   z)TestTryBareExcept.test_yield.<locals>.foo   s^      1uu$GGG$[111  $ $ $(OOOOOO$	 us    ::c                 4    t           |                     S r#   )next)rR   rp   s    r   barz)TestTryBareExcept.test_yield.<locals>.bar   s    A<<r   rq   rv   rg   )r.   rz   rU   r7   rp   s       @r   
test_yieldzTestTryBareExcept.test_yield   s    		$ 	$ 
	$ 
	  	  	  	  
	   	&#b''C	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	a   **0022B77777s   A

AAc                     t           d             }t                      5 } |d           d d d            n# 1 swxY w Y   |                     |                                                                dg           d S )Nc                      d } |             d S )Nc                  P    	 t          d          #  t          d           Y dS xY w)Nr;   rm   rn   ro   rG   r   r   r   rz   z9TestTryBareExcept.test_closure2.<locals>.foo.<locals>.bar   s0    $[111(OOO22s    %r   r&   rz   s     r   rp   z,TestTryBareExcept.test_closure2.<locals>.foo   s"       CEEEEEr   rq   rm   rg   r.   rp   rU   s      r   test_closure2zTestTryBareExcept.test_closure2   s    		 	 
	  	&CGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	**0022XKAAAAA   7;;c                 4   t           d             }t                      5 } |d          }d d d            n# 1 swxY w Y   |                     |g d           |                     |                                                                dgdz             d S )Nc                 @    d }d t          |g d          D             S )Nc                 R    	 t          d          #  t          d           | cY S xY w)Nr;   rm   r   rR   s    r   rz   z9TestTryBareExcept.test_closure3.<locals>.foo.<locals>.bar  s2    $[111(OOOHHHs    &c                     g | ]}|S r   r   .0r&   s     r   
<listcomp>z@TestTryBareExcept.test_closure3.<locals>.foo.<locals>.<listcomp>  s    333!A333r   r2   r4   rB   )mapr   s     r   rp   z,TestTryBareExcept.test_closure3.<locals>.foo
  s5       43s3			223333r   rq   r   rm   rB   rg   r.   rp   rU   r7   s       r   test_closure3zTestTryBareExcept.test_closure3	  s    		4 	4 
	4  	&#b''C	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	iii(((**0022XK!OEEEEEr   c                    t           d             }t                      5 } |d          }d d d            n# 1 swxY w Y   |                     |                                                                d           |                     |           t                      5 } |d          }d d d            n# 1 swxY w Y   |                     |                                d           |                     |g d           d S )Nc                 t    d }	 d t          |ddd| g          D             S #  t          d           Y d S xY w)Nc                 0    | dk     rt          d          | S )Nr   r;   ro   r   s    r   rz   z9TestTryBareExcept.test_closure4.<locals>.foo.<locals>.bar  s    q55$[111r   c                     g | ]}|S r   r   r   s     r   r   z@TestTryBareExcept.test_closure4.<locals>.foo.<locals>.<listcomp>#  s    :::a:::r   r2   r4   rB   rm   )r   rG   r   s     r   rp   z,TestTryBareExcept.test_closure4.<locals>.foo  sV      
 ::3sQ1aL#9#9:::: hs   # 7r8   rm       )r2   r4   rB   r   )r   r   r-   rS   striprr   r   s       r   test_closure4zTestTryBareExcept.test_closure4  su   			  		  
		   	&#b''C	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	**0022H===# 	&#a&&C	 	 	 	 	 	 	 	 	 	 	 	 	 	 	**B///lll+++++s   7;;B77B;>B;c                     t           d             }t                      5 } |             d d d            n# 1 swxY w Y   |                     |                                                                dg           d S )Nc                      t          j        d          } 	 t           j                            |           }d S #  t	          d           |cY S xY w)N)r   r   rm   )npzeroslinalgcholeskyrG   )achols     r   rp   z0TestTryBareExcept.test_real_problem.<locals>.foo4  sL      Ay))!,,hs	   7 Arm   rg   r   s      r   test_real_problemz#TestTryBareExcept.test_real_problem2  s    		 	 
	  	&CEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	**0022XK@@@@@s   6::c           	      :   t           d             }t                      5 } |d           d d d            n# 1 swxY w Y   |                     |                                                                dgdz  d t          dd          D             z              d S )Nc                 .   t          |           D ]&}	 |dk    rt          #  t          d           Y $xY w	 	 	 |dk    rt          n#  t          d           t          xY wd S #  t          d           t          xY w#  t          d           Y d S xY w)Nr\   rm   CAUGHT1CAUGHT2CAUGHT3)rY   ro   rG   )rZ   r[   s     r   rp   z,TestTryBareExcept.test_for_loop.<locals>.fooC  s     1XX % %$1uu(( $(OOOOO%	)- 1uu&0 0  %-!),,,",,	  %u
)i(((((%)$$$$$$s1   !4A A% A  A% %A==B   Brq   rm   r   c                     g | ]}d |z  S )zCAUGHT%sr   )r   r[   s     r   r   z3TestTryBareExcept.test_for_loop.<locals>.<listcomp>`  s    CCC!zA~CCCr   r2   )r   r   r-   rS   rT   rY   r   s      r   test_for_loopzTestTryBareExcept.test_for_loopB  s    		% 	% 
	%.  	&CGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	OO##%%K!OCCuQ{{CCCC	
 	
 	
 	
 	
r   c                 h    t           d             } |d          }|                     |d           d S )Nc                     	 n#  Y nxY w| S r#   r   r%   s    r   rp   z,TestTryBareExcept.test_try_pass.<locals>.food  s    Hs   rf   r,   )r.   rp   r7   s      r   test_try_passzTestTryBareExcept.test_try_passc  sF    		 	 
	 c#hhc"""""r   c                     t           d             }|                     t                    5 } |             d d d            n# 1 swxY w Y   |                     dt	          |j                             d S )Nc                  .    	 t          d          #   xY wNERRORr   r   r   r   r+   z6TestTryBareExcept.test_try_except_reraise.<locals>.udtp  s!     )))s    4The re-raising of an exception is not yet supported.r   r9   r   assertInr:   r;   r.   r+   r<   s      r   test_try_except_reraisez)TestTryBareExcept.test_try_except_reraiseo      		 	 
	 788 	FCEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	B !!	
 	
 	
 	
 	
   AA	AN)r   r   r   __doc__r/   r=   rH   rV   ra   ri   rs   r{   r   r   r   r   r   r   r   r   r   r   r   r    r       s        . . ."0 0 02  "+
 +
 +
Z(! (! (!T# # #BB B B$8 8 8(B B B F F F", , ,0 A A A
 
 
B
# 
# 
#
 
 
 
 
r   r    c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestTryExceptCaughtc                    t           d             }t                      5 } |d           d d d            n# 1 swxY w Y   |                     |                                                                g d           t                      5 } |d           d d d            n# 1 swxY w Y   |                     |                                                                g d           d S )Nc                     	 t          d           | rt          d          t          d           n# t          $ r t          d           Y nw xY wt          d           d S )NrK   321rL   rM   rN   rG   ZeroDivisionErrorrw   r%   s    r   r+   z5TestTryExceptCaught.test_catch_exception.<locals>.udt  sn    c


 3+E222c



   c




#JJJJJs   /2 AAT)rK   rM   rN   FrK   rL   rN   rg   )r.   r+   rU   s      r   test_catch_exceptionz(TestTryExceptCaught.test_catch_exception  ss   		 	 
	  	&CIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	OO##%%OO	
 	
 	
  	&CJJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	OO##%%OO	
 	
 	
 	
 	
s   7;;B$$B(+B(c                 2   t           d             }t                      5 } |d          }d d d            n# 1 swxY w Y   |                     |                                                                ddg           |                     |d           t                      5 } |d          }d d d            n# 1 swxY w Y   |                     |                                                                g d           |                     |d           d S )	Nc                     	 t          d           | rt          t          d           d}n## t          $ r t          d           d}|cY S w xY wt          d           |S )NrK   rL   rf   rM   re   rN   r   )r&   rs     r   r+   z5TestTryExceptCaught.test_return_in_catch.<locals>.udt  sx    	c


 ,++c


   c


 #JJJHs   ), AATrK   rM   re   Fr   rf   rg   rh   s       r   test_return_in_catchz(TestTryExceptCaught.test_return_in_catch  s   		 	 
	  	&#d))C	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	OO##%%#J	
 	
 	
 	c"""  	&#e**C	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	OO##%%OO	
 	
 	
 	c"""""rj   c                     t           d             }|                     t                    5 } |d           d d d            n# 1 swxY w Y   |                     dt	          |j                             d S )Nc                 V    	 | rt           d}n# t          $ r}d}|cY d }~S d }~ww xY w|S )Nrf   re   )r   rw   )r&   r   es      r   r+   z1TestTryExceptCaught.test_save_caught.<locals>.udt  sV     ,++    Hs    
&!&&Tz3Exception object cannot be stored into variable (e)r   r   s      r   test_save_caughtz$TestTryExceptCaught.test_save_caught  s    		 	 
	 788 	FCIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	A !!	
 	
 	
 	
 	
s   AA
Ac                     t           d             }|                     t                    5 } |             d d d            n# 1 swxY w Y   |                     dt	          |j                             d S )Nc                  @    	 t          d          # t          $ r  w xY wr   ro   rw   r   r   r   r+   z8TestTryExceptCaught.test_try_except_reraise.<locals>.udt  s3     )))   s    r   r   r   s      r   r   z+TestTryExceptCaught.test_try_except_reraise  r   r   c                     t           d             }|                     t                    5 } |             d d d            n# 1 swxY w Y   |                     dt	          |j                             d S )Nc                  `    	 t          d          # t          $ r 	  # t          $ r  w xY ww xY wr   r   r   r   r   r+   z>TestTryExceptCaught.test_try_except_reraise_chain.<locals>.udt  sV     )))       s    
-)-r   r   r   s      r   test_try_except_reraise_chainz1TestTryExceptCaught.test_try_except_reraise_chain  s    		 	 
	 788 	FCEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	B !!	
 	
 	
 	
 	
r   c                     t           d             }|                      |d          d           |                      |d          d           d S )Nc                 :    	 d| z   d| z  S # t           $ r Y dS w xY w)Nr2     )rw   rQ   s    r   r+   z7TestTryExceptCaught.test_division_operator.<locals>.udt  s?    A 1u    vvs    
r   r   r4   g      ?r,   r.   r+   s     r   test_division_operatorz*TestTryExceptCaught.test_division_operator  sa     
	 	 
	 	Q(((Q%%%%%r   N)	r   r   r   r   r   r   r   r   r   r   r   r   r   r     so        
 
 
<"# "# "#H
 
 
&
 
 

 
 
$& & & & &r   r   c                   $    e Zd ZdZd Zd Zd ZdS )TestTryExceptNestedzTests for complicated nestingc                 f   t                      5 } ||i | d d d            n# 1 swxY w Y   |                                }t                      5 } ||i | d d d            n# 1 swxY w Y   |                                }|                     ||d                    ||                     d S )Nzargs={} kwargs={})msg)r   rS   r-   format)r.   cfuncpyfuncargskwargsrU   expectgots           r   check_comparez!TestTryExceptNested.check_compare	  sE    	$&FD#F###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$"" 	#&E4"6"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#ooC#**488 	 	
 	
 	
 	
 	
s   	$((	A&&A*-A*c           	          t           d             }t          t          ddgd                    }|                     |           |D ]'\  }}}}|                     ||j        ||||           (d S )Nc                    t          d           | rHt          d           	 t          d           |rt          d           t          d          t          d           t          d           n# t          $ r t          d           	 t          d	           	 t          d
           |rt          d           t          d          t          d           t          d           n# t          $ r t          d           Y nw xY wt          d           n# t          $ r t          d           Y nw xY wt          d           Y nw xY wt          d           t          d           d S )NrK   rL   rM   rN   rQ   rO   GrP   HIJrR   KMLONPQRrG   r   rw   r&   rQ   rR   ps       r   r+   z5TestTryExceptNested.test_try_except_else.<locals>.udt  s~   #JJJ c


#JJJ +c


%cll*#JJJ* #JJJJ) !   #JJJ#c


	'!#JJJ  3 %c


&-cll 2!#JJJ "#JJJJ  ) ' ' '!#JJJJJ' c



 % # # #c




# #JJJJJ%* c


#JJJJJsY   >A1 1E	D>C)D)DDDDE	D41E	3D44E	E	TFr   repeatr   r   listr   
assertTruer   py_func)r.   r+   casesr&   rQ   rR   r   s          r   test_try_except_elsez(TestTryExceptNested.test_try_except_else  s    	 	  	 
 	D WdE]155566 	 	JAq!QS[qA     	 	r   c                     t           d             }t          t          ddgd                    }|                     |           |D ]#\  }}|                     ||j        ||           $d S )Nc                    	 t          d           | rt          d           t          t          d           n#  t          d           Y nxY w	 t          d           |rt          d           t          	 t          d           n# t          $ r t          d           Y nw xY wt          d	           d S # t          d	           w xY w# 	 t          d           |rt          d           t          	 t          d           n# t          $ r t          d           Y nw xY wt          d	           w # t          d	           w xY wxY w)
NrK   rL   rM   rN   rO   rP   r   r   r   r   r   qs     r   r+   z8TestTryExceptNested.test_try_except_finally.<locals>.udtC  sc   c


 "#JJJ!Mc



c





#JJJ &c


%& #JJJJ !   #JJJJJ
 #JJJJJE#JJJJ
#JJJ &c


%& #JJJJ !   #JJJJJ
 #JJJJE#JJJJsz   69 C A
C 'B 8B8 B$!B8 #B$$B8 8C	E	'D6D5D"D5!D""D5%E	5EE	TFr4   r   r   r   )r.   r+   r   r   r   s        r   test_try_except_finallyz+TestTryExceptNested.test_try_except_finallyB  s    		 	 
	, WdE]155566 	 	DAqS[q     	 	r   N)r   r   r   r   r   r   r   r   r   r   r   r     sH        ##
 
 
* * *X    r   r   c                        e Zd Zd Zd Zd ZdS )TestTryExceptRefctc                 N   t           d             } |dd          }|                     t          |          t          t          d                                |dd          }|                     t          |          t          t          d                               d S )Nc                     t          j                    }	 t          |           D ]$}||k    rt          |                    |           %	 |S # t
          $ r |cY S w xY wr#   )r   ListrY   
IndexErrorappendrw   )rZ   raise_atlstr[   s       r   r+   z6TestTryExceptRefct.test_list_direct_raise.<locals>.udte  sy    *,,Cq " "AH}}((JJqMMMM" 
    


s   4A AArq   r\   r  r   r-   r   rY   )r.   r+   outs      r   test_list_direct_raisez)TestTryExceptRefct.test_list_direct_raised  s    	
	 
	 

	 c"q!!!cDqNN333c"r"""cDrOO44444r   c           	         t           d             t           fd            } |dd          }|                     t          |          dgt          t          d                    z               |dd          }|                     t          |          dgt          t          d                    z              d S )Nc                 n    t          |          D ]$}||k    rt          |                     |           %| S r#   )rY   r  r  )r  rZ   r  r[   s       r   appenderz=TestTryExceptRefct.test_list_indirect_raise.<locals>.appenderx  s<    1XX  ==$$

1Jr   c                     t          j                    }|                    d           	  || |           |S # t          $ r |cY S w xY w)N  )r   r  r  rw   )rZ   r  r  r  s      r   r+   z8TestTryExceptRefct.test_list_indirect_raise.<locals>.udt  sf    *,,CJJva*** 
    


s   : A	A	rq   r\   r  r  r	  )r.   r+   r
  r  s      @r   test_list_indirect_raisez+TestTryExceptRefct.test_list_indirect_raisew  s    		 	 
	 
	 	 	 	 
	 c"q!!!cVHtE!HH~~$=>>>c"r"""cVHtE"II$>?????r   c                     t           d             }|                     t                    5 } |             d d d            n# 1 swxY w Y   |                     t	          |j                  d           d S )Nc                     	 t          j                    } t          d           |                     d           t          d           |                     d           t          d           | S # t          $ r t          d           Y d S w xY w)NrK   r   rL   fdarM   rN   )r   r  rG   r  rw   )r  s    r   r+   z<TestTryExceptRefct.test_incompatible_refinement.<locals>.udt  s    	jllc




1c




5!!!c



   c





s   A+A. .B
Bz@Cannot refine type|cannot safely cast unicode_type to int(32|64))r   r9   r   assertRegexr:   r;   r   s      r   test_incompatible_refinementz/TestTryExceptRefct.test_incompatible_refinement  s    	
	 
	 

	 {++ 	vCEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 !!O	
 	
 	
 	
 	
r   N)r   r   r   r  r  r  r   r   r   r   r   c  sD        5 5 5&@ @ @2
 
 
 
 
r   r   c                       e Zd Zd Zeeed                                     Zeeed                                     Zd Z	dS )TestTryExceptOtherControlFlowc                 B   t           d             }|                     t           |dd                    t          t          d                               |                     t           |dd                    t          t          d                               d S )Nc              3   v   K   t          |           D ]&}	 ||k    rt          |V  # t          $ r Y  d S w xY wd S r#   )rY   ro   rw   )rZ   r&   r[   s      r   r+   z5TestTryExceptOtherControlFlow.test_yield.<locals>.udt  sh      1XX  Avv((GGGG    FFF s   '
66rq   r\   r	  r   s     r   r{   z(TestTryExceptOtherControlFlow.test_yield  s    		 	 
	 	cc"ajj))4a>>:::cc"bkk**DrOO<<<<<r   c                     t           d             }|                     t                    5 } |             d d d            n# 1 swxY w Y   d}|                     |t	          |j                             d S )Nc                      	 t                      5  t          t                                 d d d            d S # 1 swxY w Y   d S # t          $ r Y d S w xY wr#   )r   rG   objectrw   r   r   r   r+   z7TestTryExceptOtherControlFlow.test_objmode.<locals>.udt  s    YY $ $&((OOO$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $   s.   A 9A =A  =A 
AAlunsupported control flow: with-context contains branches (i.e. break/return/raise) that can leave the block r   r9   r
   r   r:   r;   )r.   r+   r<   r   s       r   test_objmodez*TestTryExceptOtherControlFlow.test_objmode  s     
	 	 
	 }-- 	CEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	E !!	
 	
 	
 	
 	
r   c                     d t           fd            }|                     t                    5 } |             d d d            n# 1 swxY w Y   d}|                     |t	          |j                             d S )Nc                     t          j        t          t          |                                                               S r#   )r   asarrayr   reversedtolistr%   s    r   rz   zCTestTryExceptOtherControlFlow.test_objmode_output_type.<locals>.bar  s*    :d8AHHJJ#7#788999r   c                      t          j        d          } t          j        |           }	 t          d          5  | |           z  }d d d            n# 1 swxY w Y   n# t          $ r Y nw xY w|S )Nr\   zintp[:]r   )r   arange
zeros_liker   rw   )r&   rQ   rz   s     r   r   zLTestTryExceptOtherControlFlow.test_objmode_output_type.<locals>.test_objmode  s    	!Aa  Ay)))    QKA                                 Hs4   A" A
A" AA" AA" "
A/.A/r  r  )r.   r   r<   r   rz   s       @r   test_objmode_output_typez6TestTryExceptOtherControlFlow.test_objmode_output_type  s    	: 	: 	: 
		 		 		 		 
		 }-- 	LNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	E !!	
 	
 	
 	
 	
s   AAAc                    d }t          j        |          D ]}|j        dk    r n|                     d           t	          j        i |j                  }d}|j                                        D ]A\  }}|	                    t          j                  D ]}d}|j        r||j        d         v rd}B|s|                     d           d S d S )	Nc                  L    	 t           # t           $ r t          d          w xY wr   )rw   ro   r   r   r   r   zMTestTryExceptOtherControlFlow.test_reraise_opcode_unreachable.<locals>.pyfunc  s5    * * * * )))*s   	 #RERAISEz!expected RERAISE opcode not foundFz8Unreachable condition reached (op code RERAISE executed)r   Tz.expected RERAISE unreachable message not found)disget_instructionsopnamefailr   get_ir_of_code__code__blocksitems
find_instsr	   StaticRaiseexc_args)	r.   r   instfunc_irfoundlblblkstmtr   s	            r   test_reraise_opcode_unreachablez=TestTryExceptOtherControlFlow.test_reraise_opcode_unreachable  s   
	* 	* 	*
 (00 	; 	;D{i'' ( II9:::)"fo>>,,.. 	! 	!HCr~66 ! ! Q= !SDM!,<%<%< E!  	HIIFGGGGG	H 	Hr   N)
r   r   r   r{   r   r   r   r   r)  r>  r   r   r   r  r    s        = = = 
 
   
$ 
 
   
2H H H H Hr   r  c                   &    e Zd Zd Zd Zd Zd ZdS )TestTryExceptParforsc                     d }dg} || }|                        t          d          |          | |           |                        t          d          |          | |           d S )Nc                 d    d}t          |           D ]}	 |dz  }	# t          $ r |dz  }Y w xY w|S )Nr   r2   r   rw   rZ   cr[   s      r   r+   z>TestTryExceptParfors.test_try_in_prange_reduction.<locals>.udt  sY    AAYY  FAA    FAAAHs   --rq   FparallelT)r-   r   r.   r+   r   r   s       r   test_try_in_prange_reductionz1TestTryExceptParfors.test_try_in_prange_reduction  s    	 	 	 td2-u---c22D96BBB1,t,,,S1148&AAAAAr   c                    d }dg} || }|                        t          d          |          | |           t          j        d          5 }t          j        dt
                     |                        t          d          |          | |           d d d            n# 1 swxY w Y   |                      t          |          d           |                     d	t          |d
                              d S )Nc                 ^    d}	 t          |           D ]}|dz  }	 |S # t          $ r Y dS w xY w)Nr   r2   r   rC  rD  s      r   r+   zCTestTryExceptParfors.test_try_outside_prange_reduction.<locals>.udt  s\    A  AFAA
     vvs    
,,rq   FrF  T)recordalwaysr2   z5no transformation for parallel execution was possibler   )	r-   r   warningscatch_warningssimplefilterr   lenr   r:   )r.   r+   r   r   ws        r   !test_try_outside_prange_reductionz6TestTryExceptParfors.test_try_outside_prange_reduction  se   	 	 	 td2-u---c22D96BBB$D111 	FQ!(,CDDD50T400055t<fEEE	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	Q###M!A$ii	! 	! 	! 	! 	!s   AB((B,/B,c                    d }t          j        d          dg} || }|                       t          d          |          | |           |                       t          d          |          | |           d S )Nc                     |                                  }t          | j                  D ]3}	 ||k    rt          | |         |z   ||<   # t          $ r d||<   Y 0w xY w|S Nr8   copyr   sizero   rw   arrr&   r
  r[   s       r   r+   z8TestTryExceptParfors.test_try_in_prange_map.<locals>.udt.  s|    ((**CCH%%     Avv(( VaZCFF       CFFF Js   AAArq      FrF  Tr   r'  assertPreciseEqualr   rH  s       r   test_try_in_prange_mapz+TestTryExceptParfors.test_try_in_prange_map-      		 		 		 	"q!d 9 4e 4 4 4S 9 94 @&III 8 3d 3 3 3C 8 8$ ?HHHHHr   c                    d }t          j        d          dg} || }|                       t          d          |          | |           |                       t          d          |          | |           d S )Nc                     |                                  }	 t          | j                  D ]}||k    rt          | |         |z   ||<   n# t          $ r d||<   Y nw xY w|S rV  rW  rZ  s       r   r+   z=TestTryExceptParfors.test_try_outside_prange_map.<locals>.udt?  s    ((**C)) ( (AAvv(( VaZCFF(    AJs   2A	 	AArq   r\  FrF  Tr]  rH  s       r   test_try_outside_prange_mapz0TestTryExceptParfors.test_try_outside_prange_map>  r`  r   N)r   r   r   rI  rS  r_  rc  r   r   r   r@  r@    s[        B B B ! ! !.I I I"I I I I Ir   r@  __main__)'rN  r-  	itertoolsr   numpyr   numbar   r   r   r   
numba.corer   r	   numba.core.errorsr
   r   r   r   numba.tests.supportr   r   r   r   r   r   r   r   r   rw   r   r    r   r   r   r  r@  r   mainr   r   r   <module>rl     s    



           . . . . . . . . . . . . # # # # # # # #                                	 	 	 	 	i 	 	 	d
 d
 d
 d
 d
 d
 d
 d
ND& D& D& D& D&( D& D& D&NZ Z Z Z Z( Z Z Zz@
 @
 @
 @
 @
( @
 @
 @
FZH ZH ZH ZH ZHH ZH ZH ZHz II II II II II8 II II IIX zHMOOOOO r   