
    ܙd\                        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 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  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)	PYVERSION)ir_utilsir)UnsupportedErrorCompilerErrorNumbaPerformanceWarningTypingError)TestCaseunittestcaptured_stdoutMemoryLeakMixinskip_parfors_unsupportedskip_unless_scipyexpected_failure_py311c                       e Zd ZdS )MyErrorN)__name__
__module____qualname__     ;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>.inner1   s3    Avvenn$aenn$ r   c                 Z    	  |            d}n	#  d}Y nxY w| dk    r d           |S )Nr(   r)   r   r3   r   )r%   resr&   s     r   r*   z3TestTryBareExcept.test_try_state_reset.<locals>.udt8   sI    a"AvvaJs    r   r4   r1   r)   r(   )r   assertRaisesr   r,   str	exception)r-   r*   raisesr&   s      @r   test_try_state_resetz&TestTryBareExcept.test_try_state_reset0   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 )Nr1   call_oner2   r3   call_twor4      
call_threethree
call_otherprintr   r$   s    r   r&   z-TestTryBareExcept._multi_inner.<locals>.innerJ   s    Avvj!!!enn$aj!!!enn$al###g&&&l#####r   )r   )r-   r&   s     r   _multi_innerzTestTryBareExcept._multi_innerI   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)rF   )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r1   r3   rA   )rJ   r?   rL   r@   rN   rB   rC   r   )rJ   r?   rL   rD   rM   )rJ   r?   rL   r@   rN   rD   rO   )
rG   r   r8   r   r   r,   getvaluesplitr9   r:   )r-   r*   r;   stdoutr&   s       @r   test_nested_tryz!TestTryBareExcept.test_nested_tryZ   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 )NrJ   rK   )rF   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rA      )rJ   0123rB   rK   r1   )rJ   r\   r]   r?   rK   r   )rJ   r\   rD   r]   r^   r3   )rG   r   r   r,   rR   rS   )r-   r*   rT   r6   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 )NrJ   my_errorrK   rL   A  {   rE   r$   s    r   r*   z0TestTryBareExcept.test_raise_in_try.<locals>.udt   sU    c


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



c


ss3s	   /2 ATrJ   rL   rd   FrK   re   r   r   r,   rR   rS   r-   r*   rT   r6   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   r1   CAUGHT   r:   )rF   
ValueError)r%   foos    r   ro   z-TestTryBareExcept.test_recursion.<locals>.foo   s]    1uuCAJJJJ(OOO22Avv --- vs    ,
   rl   )r   r   assertIsNoner,   rR   rS   )r-   rT   r6   ro   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:   rl   )rn   	ExceptionrF   r$   s    r   ro   z)TestTryBareExcept.test_yield.<locals>.foo   s^      1uu$GGG$[111  $ $ $(OOOOOO$	 us    ::c                 4    t           |                     S r"   )next)rQ   ro   s    r   barz)TestTryBareExcept.test_yield.<locals>.bar   s    A<<r   rp   ru   rf   )r-   ry   rT   r6   ro   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:   rl   rm   rn   rF   r   r   r   ry   z9TestTryBareExcept.test_closure2.<locals>.foo.<locals>.bar   s0    $[111(OOO22s    %r   r%   ry   s     r   ro   z,TestTryBareExcept.test_closure2.<locals>.foo   s"       CEEEEEr   rp   rl   rf   r-   ro   rT   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:   rl   r~   rQ   s    r   ry   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   r1   r3   rA   )mapr   s     r   ro   z,TestTryBareExcept.test_closure3.<locals>.foo	  s5       43s3			223333r   rp   r   rl   rA   rf   r-   ro   rT   r6   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:   rn   r   s    r   ry   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   r1   r3   rA   rl   )r   rF   r   s     r   ro   z,TestTryBareExcept.test_closure4.<locals>.foo  sV      
 ::3sQ1aL#9#9:::: hs   # 7r7   rl       )r1   r3   rA   r   )r   r   r,   rR   striprq   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   rl   )npzeroslinalgcholeskyrF   )achols     r   ro   z0TestTryBareExcept.test_real_problem.<locals>.foo3  sL      Ay))!,,hs	   7 Arl   rf   r   s      r   test_real_problemz#TestTryBareExcept.test_real_problem1  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[   rl   CAUGHT1CAUGHT2CAUGHT3)rX   rn   rF   )rY   rZ   s     r   ro   z,TestTryBareExcept.test_for_loop.<locals>.fooB  s     1XX % %$1uu(( $(OOOOO%	)- 1uu&0 0  %-!),,,",,	  %u
)i(((((%)$$$$$$s1   !4A A% A  A% %A==B   Brp   rl   r   c                     g | ]}d |z  S )zCAUGHT%sr   )r   rZ   s     r   r   z3TestTryBareExcept.test_for_loop.<locals>.<listcomp>_  s    CCC!zA~CCCr   r1   )r   r   r,   rR   rS   rX   r   s      r   test_for_loopzTestTryBareExcept.test_for_loopA  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   ro   z,TestTryBareExcept.test_try_pass.<locals>.fooc  s    Hs   re   r+   )r-   ro   r6   s      r   test_try_passzTestTryBareExcept.test_try_passb  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>.udto  s!     )))s    4The re-raising of an exception is not yet supported.r   r8   r   assertInr9   r:   r-   r*   r;   s      r   test_try_except_reraisez)TestTryBareExcept.test_try_except_reraisen      		 	 
	 /00 	FCEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	B !!	
 	
 	
 	
 	
   AA	AN)r   r   r   __doc__r.   r<   rG   rU   r`   rh   rr   rz   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 )NrJ   321rK   rL   rM   rF   ZeroDivisionErrorrv   r$   s    r   r*   z5TestTryExceptCaught.test_catch_exception.<locals>.udt  sn    c


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



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




#JJJJJs   /2 AAT)rJ   rL   rM   FrJ   rK   rM   rf   )r-   r*   rT   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 )NrJ   rK   re   rL   rd   rM   r   )r%   rs     r   r*   z5TestTryExceptCaught.test_return_in_catch.<locals>.udt  sx    	c


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


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


 #JJJHs   ), AATrJ   rL   rd   Fr   re   rf   rg   s       r   test_return_in_catchz(TestTryExceptCaught.test_return_in_catch  s   		 	 
	  	&#d))C	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	OO##%%#J	
 	
 	
 	c"""  	&#e**C	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	OO##%%OO	
 	
 	
 	c"""""ri   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 )Nre   rd   )r   rv   )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    		 	 
	 /00 	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   rn   rv   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    		 	 
	 /00 	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)Nr1     )rv   rP   s    r   r*   z7TestTryExceptCaught.test_division_operator.<locals>.udt  s?    A 1u    vvs    
r   r   r3   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   rR   r,   format)r-   cfuncpyfuncargskwargsrT   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 )NrJ   rK   rL   rM   rP   rN   GrO   HIJrQ   KMLONPQRrF   r   rv   r%   rP   rQ   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%   rP   rQ   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)
NrJ   rK   rL   rM   rN   rO   r   r   r   r   r   qs     r   r*   z8TestTryExceptNested.test_try_except_finally.<locals>.udtB  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	TFr3   r   r   r   )r-   r*   r   r   r   s        r   test_try_except_finallyz+TestTryExceptNested.test_try_except_finallyA  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   ListrX   
IndexErrorappendrv   )rY   raise_atlstrZ   s       r   r*   z6TestTryExceptRefct.test_list_direct_raise.<locals>.udtd  sy    *,,Cq " "AH}}((JJqMMMM" 
    


s   4A AArp   r[   r  r   r,   r   rX   )r-   r*   outs      r   test_list_direct_raisez)TestTryExceptRefct.test_list_direct_raisec  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"   )rX   r  r  )r  rY   r  rZ   s       r   appenderz=TestTryExceptRefct.test_list_indirect_raise.<locals>.appenderw  s<    1XX  ==$$

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


s   : A	A	rp   r[   r  r  r  )r-   r*   r	  r  s      @r   test_list_indirect_raisez+TestTryExceptRefct.test_list_indirect_raisev  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)NrJ   r   rK   fdarL   rM   )r   r  rF   r  rv   )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   r8   r   assertRegexpMatchesr9   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   b  sD        5 5 5&@ @ @2
 
 
 
 
r   r   c                   |    e Zd Zd Zed             Zed             Z ej        e	dk     d          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"   )rX   rn   rv   )rY   r%   rZ   s      r   r*   z5TestTryExceptOtherControlFlow.test_yield.<locals>.udt  sh      1XX  Avv((GGGG    FFF s   '
66rp   r[   r  r   s     r   rz   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   rF   objectrv   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   r8   r   r   r9   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   ry   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   rv   )r%   rP   ry   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   ry   s       @r   test_objmode_output_typez6TestTryExceptOtherControlFlow.test_objmode_output_type  s    	: 	: 	: 
		 		 		 		 
		 }-- 	LNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	E !!	
 	
 	
 	
 	
s   AAA)rA   	   zPython 3.9+ onlyc                    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   )rv   rn   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   rz   r   r  r(  r   skipIfr   r>  r   r   r   r  r    s        = = = 
 
 
$ 
 
 
2 X_Y');<<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   r1   r   rv   rY   crZ   s      r   r*   z>TestTryExceptParfors.test_try_in_prange_reduction.<locals>.udt  sY    AAYY  FAA    FAAAHs   --rp   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   r1   r   rD  rE  s      r   r*   zCTestTryExceptParfors.test_try_outside_prange_reduction.<locals>.udt  s\    A  AFAA
     vvs    
,,rp   FrG  T)recordalwaysr1   z5no transformation for parallel execution was possibler   )	r,   r   warningscatch_warningssimplefilterr   lenr   r9   )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 Nr7   copyr   sizern   rv   arrr%   r	  rZ   s       r   r*   z8TestTryExceptParfors.test_try_in_prange_map.<locals>.udt*  s|    ((**CCH%%     Avv(( VaZCFF       CFFF Js   AAArp      FrG  Tr   r&  assertPreciseEqualr   rI  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 rW  rX  r[  s       r   r*   z=TestTryExceptParfors.test_try_outside_prange_map.<locals>.udt;  s    ((**C)) ( (AAvv(( VaZCFF(    AJs   2A	 	AArp   r]  FrG  Tr^  rI  s       r   test_try_outside_prange_mapz0TestTryExceptParfors.test_try_outside_prange_map:  ra  r   N)r   r   r   rJ  rT  r`  rd  r   r   r   rA  rA    s[        B B B ! ! !.I I I"I I I I Ir   rA  __main__)'rO  r-  	itertoolsr   numpyr   numbar   r   r   r   numba.core.utilsr   
numba.corer	   r
   numba.core.errorsr   r   r   r   numba.tests.supportr   r   r   r   r   r   r   rv   r   r   r   r   r   r  rA  r   mainr   r   r   <module>rn     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WH WH WH WH WHH WH WH WHt II II II II II8 II II IIX zHMOOOOO r   