
    xKg\                     p   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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jN                          yy)    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_py311expected_failure_py312c                       e Zd Zy)MyErrorN)__name__
__module____qualname__     _/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/tests/test_try_except.pyr   r      s    r   r   c                   t    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y)TestTryBareExceptzhTest the following pattern:

        try:
            <body>
        except:
            <handling>
    c                     t         d        t         fd       }| j                   |d      d       | j                   |d      d       y )Nc                     | rt         y Nr   xs    r   innerz5TestTryBareExcept.test_try_inner_raise.<locals>.inner!   s     r   c                 &    	  |        y#  Y yxY w)N
not raisedcaughtr   )r&   r'   s    r   udtz3TestTryBareExcept.test_try_inner_raise.<locals>.udt&   s     a# s    Fr)   Tr*   r   assertEqual)selfr+   r'   s     @r   test_try_inner_raisez&TestTryBareExcept.test_try_inner_raise    sS    		 
	 
	  
	  	U\2TH-r   c                 H   t         d        t         fd       }| j                  t              5 } |d       d d d        | j                  t	        j
                        d       | j                   |d      d       | j                   |d      d       y # 1 sw Y   _xY w)	Nc                 D    | dk(  rt        d      | dk(  rt        d      y )N   one   twor$   r%   s    r   r'   z5TestTryBareExcept.test_try_state_reset.<locals>.inner2   s)    Aven$aen$ r   c                 J    	  |        d}| dk(  r d       |S #  d}Y xY w)Nr)   r*   r   r4   r   )r&   resr'   s     r   r+   z3TestTryBareExcept.test_try_state_reset.<locals>.udt9   s5    a" AvaJ	s   
 "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F (V--.6Q*R,/	 ('s   	BB!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
       y )Nr2   call_oner3   r4   call_twor5      
call_threethree
call_otherprintr   r%   s    r   r'   z-TestTryBareExcept._multi_inner.<locals>.innerK   sV    Avj!en$aj!en$al#g&&l#r   )r   )r.   r'   s     r   _multi_innerzTestTryBareExcept._multi_innerJ   s    		$ 
	$ r   c                    | j                         t        fd       }| j                  t              5 }t	               5 } |ddd       d d d        d d d        | j                  j                         j                         g d       | j                  t        j                        d       t	               5 } |ddd       d d d        | j                  |j                         j                         g d       t	               5 } |ddd       d d d        | j                  |j                         j                         g d	       y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   `xY w)
Nc                     	 	 t        d        |        t        d       y #  t        d        |       t        d       Y y xY w#  t        d        |       t        d       Y y xY w)NABCDEF)rG   )r&   yzr'   s      r   r+   z.TestTryBareExcept.test_nested_try.<locals>.udt^   sY    #J!H#J#J!H#Jc
ac
s   #  AA A  A*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[   s5   !!#		 
	  w'6 "fAq! # ( 	OO##%A	
 	V--.8 &1aL OO##%5	
 &1aL OO##%F	
' #" ('  s;   E EE:E%E1E	EE"%E.1E:c                    | j                         t        fd       }t               5 } |dd      }d d d        | j                  j	                         j                         g d       | j                  d       t               5 } |dd      }d d d        | j                  |j	                         j                         g d       | j                  |d       t               5 } |dd      }d d d        | j                  |j	                         j                         g d       | j                  |d	       y # 1 sw Y   	xY w# 1 sw Y   xY w# 1 sw Y   exY w)
Nc                     	 t        d       t        |      D ]  }t        |       || k(  s |        	 S #  t        d       Y S xY w)NrK   rL   )rG   range)r&   nir'   s      r   r+   z/TestTryBareExcept.test_loop_in_try.<locals>.udt   sL    c
qA!HAva " Hc
Hs   ): 
: 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	
 	a  &a)C OO##%,	
 	a  &a)C OO##%.	
 	a 1   s#   
D;
E&
E;EEEc                    t         d        }t               5 } |d      }d d d        | j                  j                         j	                         ddg       | j                  d       t               5 } |d      }d d d        | j                  |j                         j	                         ddg       | j                  |d       y # 1 sw Y   xY w# 1 sw Y   XxY w)	Nc                 p    	 t        d       | rt        d      t        d       y#  t        d       Y yxY w)NrK   my_errorrL   rM   A  {   rF   r%   s    r   r+   z0TestTryBareExcept.test_raise_in_try.<locals>.udt   s9    c
!*--c
 c
s   #& 5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"#     	C4	CCCc                     t         fd       t               5 } d      }d d d        | j                         | j                  j	                         j                         dg       y # 1 sw Y   JxY w)Nc                 l    | dkD  r	  | dz
         | dk(  rt        d      y #  t        d       Y yxY w)Nr   r2   CAUGHT   r;   )rG   
ValueError)r&   foos    r   rp   z-TestTryBareExcept.test_recursion.<locals>.foo   sD    1uAJ Av -- (Os   $ 3
   rm   )r   r   assertIsNoner-   rS   rT   )r.   rU   r7   rp   s      @r   test_recursionz TestTryBareExcept.test_recursion   sh    		. 
	. &b'C  	#*002XKA	 s   	A,,A5c                    t         d        t         fd       }t               5 } |d      }d d d        | j                  d       | j                  j                         j	                         g        y # 1 sw Y   JxY w)Nc              3   j   K   | dkD  r	 d t        d      y # t        $ r t        d       Y y w xY ww)Nr      r;   rm   )ro   	ExceptionrG   r%   s    r   rp   z)TestTryBareExcept.test_yield.<locals>.foo   s>     1u$G$[11  ! $(O$s   3 30303c                 &    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2B7	 s   	A88Bc                     t         d        }t               5 } |d       d d d        | j                  j                         j	                         dg       y # 1 sw Y   9xY w)Nc                     d } |        y )Nc                  >    	 t        d      #  t        d       Y yxY w)Nr;   rm   rn   ro   rG   r   r   r   rz   z9TestTryBareExcept.test_closure2.<locals>.foo.<locals>.bar   s#    $[11(Os    r   r&   rz   s     r   rp   z,TestTryBareExcept.test_closure2.<locals>.foo   s     Er   rq   rm   rg   r.   rp   rU   s      r   test_closure2zTestTryBareExcept.test_closure2   sW    		 
	 &G  	*002XKA s   	AA!c                     t         d        }t               5 } |d      }d d d        | j                  g d       | j                  j                         j	                         dgdz         y # 1 sw Y   PxY w)Nc                 J    d }t        |g d      D  cg c]  } |  c} S c c} w )Nc                 B    	 t        d      #  t        d       | cY S xY w)Nr;   rm   r   rR   s    r   rz   z9TestTryBareExcept.test_closure3.<locals>.foo.<locals>.bar  s%    $[11(OHs    r2   r4   rB   )mapr   s     r   rp   z,TestTryBareExcept.test_closure3.<locals>.foo
  s*      #3	232!A2333s   	 rq   r   rm   rB   rg   r.   rp   rU   r7   s       r   test_closure3zTestTryBareExcept.test_closure3	  sm    		4 
	4 &b'C  	i(*002XK!OE	 s   	A//A8c                    t         d        }t               5 } |d      }d d d        | j                  j                         j	                         d       | j                         t               5 } |d      }d d d        | j                  |j                         d       | j                  |g d       y # 1 sw Y   xY w# 1 sw Y   JxY w)Nc                 t    d }	 t        |ddd| g      D  cg c]  } |  c} S c c} w #  t        d       Y y xY w)Nc                 &    | dk  rt        d      | S )Nr   r;   ro   r   s    r   rz   z9TestTryBareExcept.test_closure4.<locals>.foo.<locals>.bar  s    q5$[11r   r2   r4   rB   rm   )r   rG   r   s     r   rp   z,TestTryBareExcept.test_closure4.<locals>.foo  sC    
 #&sQ1aL#9:#9a#9::: hs   ( 	#( ( 7r8   rm       )r2   r4   rB   r   )r   r   r-   rS   striprr   r   s       r   test_closure4zTestTryBareExcept.test_closure4  s    			  
		  &b'C  	*002H=#&a&C *B/l+  s   	B71	C7C Cc                     t         d        }t               5 } |        d d d        | j                  j                         j	                         dg       y # 1 sw Y   9xY w)Nc                      t        j                  d      } 	 t         j                  j                  |       }y #  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  s<     Ayy))!,hs	   7 Arm   rg   r   s      r   test_real_problemz#TestTryBareExcept.test_real_problem2  sU    		 
	 &E  	*002XK@ s   AA c           	         t         d        }t               5 } |d       d d d        | j                  j                         j	                         dgdz  t        dd      D cg c]  }d|z  	 c}z          y # 1 sw Y   ZxY wc c}w )Nc                     t        |       D ]  }	 |dkD  rt         	 	 	 dkD  rt        y #  t        d       Y /xY w#  t        d       t        xY w#  t        d       t        xY w#  t        d       Y y xY w)Nr\   rm   CAUGHT1CAUGHT2CAUGHT3)rY   ro   rG   )rZ   r[   s     r   rp   z,TestTryBareExcept.test_for_loop.<locals>.fooC  s     1X$1u((  %	)- 1u&0 0  %$(O-!),",,)i(((%)$s)   ,> ;AA A''A* *A9rq   rm   r   r2   zCAUGHT%s)r   r   r-   rS   rT   rY   )r.   rp   rU   r[   s       r   test_for_loopzTestTryBareExcept.test_for_loopB  s    		% 
	%. &G  	OO##%K!OuQ{C{!zA~{CC	
 
 Ds   	A9#B9Bc                 P    t         d        } |d      }| j                  |d       y )Nc                     	 	 | S #  Y | S xY wr#   r   r%   s    r   rp   z,TestTryBareExcept.test_try_pass.<locals>.food  s      HHs   
rf   r,   )r.   rp   r7   s      r   test_try_passzTestTryBareExcept.test_try_passc  s/    		 
	 #hc"r   c                     t         d        }| j                  t              5 } |        d d d        | j                  dt	        j
                               y # 1 sw Y   /xY w)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  W    		 
	 /0FE 1B  !	
 10   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       sj    ."02"+
Z(!T#BB$8(B F",0 A A
B
#
r   r    c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestTryExceptCaughtc                 x   t         d        }t               5 } |d       d d d        | j                  j                         j	                         g d       t               5 } |d       d d d        | j                  |j                         j	                         g d       y # 1 sw Y   xY w# 1 sw Y   FxY w)Nc                     	 t        d       | rt        d      t        d       t        d       y # t        $ r t        d       Y "w xY w)NrK   321rL   rM   rN   rG   ZeroDivisionErrorrw   r%   s    r   r+   z5TestTryExceptCaught.test_catch_exception.<locals>.udt  sD    c
+E22c
 #J  c
s   #1 AAT)rK   rM   rN   FrK   rL   rN   rg   )r.   r+   rU   s      r   test_catch_exceptionz(TestTryExceptCaught.test_catch_exception  s    		 
	 &I  	OO##%	
 &J  	OO##%	
  s   	B$"	B0$B-0B9c                    t         d        }t               5 } |d      }d d d        | j                  j                         j	                         ddg       | j                  d       t               5 } |d      }d d d        | j                  |j                         j	                         g d       | j                  |d       y # 1 sw Y   xY w# 1 sw Y   XxY w)	Nc                     	 t        d       | rt        t        d       d}t        d       |S # t        $ r t        d       d}|cY S w xY w)NrK   rL   rf   rM   re   rN   r   )r&   rs     r   r+   z5TestTryExceptCaught.test_return_in_catch.<locals>.udt  sS    	c
++c

 #JH  c
s    / 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##%	
 	c"#  rj   c                     t         d        }| j                  t              5 } |d       d d d        | j                  dt	        j
                               y # 1 sw Y   /xY w)Nc                 P    	 | rt         d}|S # t        $ r}d}|cY d }~S d }~ww xY w)Nrf   re   )r   rw   )r&   r   es      r   r+   z1TestTryExceptCaught.test_save_caught.<locals>.udt  s8    ++ H  s   
 	% %%Tz3Exception object cannot be stored into variable (e)r   r   s      r   test_save_caughtz$TestTryExceptCaught.test_save_caught  sY    		 
	 /0FI 1A  !	
 10s   	AA"c                     t         d        }| j                  t              5 } |        d d d        | j                  dt	        j
                               y # 1 sw Y   /xY w)Nc                  6    	 t        d      # t        $ r  w xY wr   ro   rw   r   r   r   r+   z8TestTryExceptCaught.test_try_except_reraise.<locals>.udt  s$     )) s    r   r   r   s      r   r   z+TestTryExceptCaught.test_try_except_reraise  r   r   c                     t         d        }| j                  t              5 } |        d d d        | j                  dt	        j
                               y # 1 sw Y   /xY w)Nc                  T    	 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  s;     ))   s    	'#'r   r   r   s      r   test_try_except_reraise_chainz1TestTryExceptCaught.test_try_except_reraise_chain  sW    		 
	 /0FE 1B  !	
 10r   c                 |    t         d        }| j                   |d      d       | j                   |d      d       y )Nc                 6    	 d| z   d| z  S # t         $ r Y yw xY w)Nr2     )rw   rQ   s    r   r+   z7TestTryExceptCaught.test_division_operator.<locals>.udt  s-    A 1u  s    	r   r   r4   g      ?r,   r.   r+   s     r   test_division_operatorz*TestTryExceptCaught.test_division_operator  s@     
	 
	 	Q(Q%r   N)	r   r   r   r   r   r   r   r   r   r   r   r   r   r     s!    
<"#H
&

$&r   r   c                   "    e Zd ZdZd Zd Zd Zy)TestTryExceptNestedzTests for complicated nestingc                 (   t               5 } ||i | d d d        j                         }t               5 } ||i | d d d        |j                         }| j                  ||dj                  ||             y # 1 sw Y   ixY w# 1 sw Y   JxY w)Nzargs={} kwargs={})msg)r   rS   r-   format)r.   cfuncpyfuncargskwargsrU   expectgots           r   check_comparez!TestTryExceptNested.check_compare	  s    &D#F# "&4"6" ooC#**48 	 	
  s   	A<	B<BBc           	          t         d        }t        t        ddgd            }| j                  |       |D ](  \  }}}}| j	                  ||j
                  ||||       * y )Nc                 ,   t        d       | rPt        d       	 t        d       |rt        d       t        d      t        d       t        d       t        d       t        d       y # 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 w xY w)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    #Jc
#Jc
%cl*#J* #Jc
#J- ! #J#c
	'!#J  %c
&-cl 2!#J "#J  ) '!#J' c
 % #c
# #J%sY   .A* *D?C+.C9C+CC+CC+D+D?DDDDTFr   repeatr   r   listr   
assertTruer   py_func)r.   r+   casesr&   rQ   rR   r   s          r   test_try_except_elsez(TestTryExceptNested.test_try_except_else  so    	 	 
 	D WdE]156JAq!QS[[qA    r   c                     t         d        }t        t        ddgd            }| j                  |       |D ]$  \  }}| j	                  ||j
                  ||       & y )Nc                    	 t        d       | rt        d       t        t        d       	 t        d       |rt        d       t        	 t        d       t        d	       y #  t        d       Y FxY w# t        $ r t        d       Y 4w xY w# 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  s    c
#J!Mc

#Jc
%  #J#Jc
 ! #J
 #J
#Jc
%  #J ! #J
 #JE#Jsv   )A" A4 B "A1/B 4BB 
BB BD C?C1C"C1!C""C1%D1C>>DTFr4   r   r   r   )r.   r+   r   r   r   s        r   test_try_except_finallyz+TestTryExceptNested.test_try_except_finallyB  sf    		 
	, WdE]156DAqS[[q   r   N)r   r   r   r   r   r   r   r   r   r   r   r     s    #
*Xr   r   c                       e Zd Zd Zd Zd Zy)TestTryExceptRefctc                     t         d        } |dd      }| j                  t        |      t        t        d                    |dd      }| j                  t        |      t        t        d                   y )Nc                     t        j                         }	 t        |       D ]  }||k(  rt        |j	                  |         	 |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  sU    **,CqAH}((JJqM " 
  
s   ,A AArq   r\   r   r   r-   r   rY   )r.   r+   outs      r   test_list_direct_raisez)TestTryExceptRefct.test_list_direct_raised  sf    	
	 

	 "q!cDqN3"r"cDrO4r   c           	      &   t         d        t         fd       } |dd      }| j                  t        |      dgt        t        d            z           |dd      }| j                  t        |      dgt        t        d            z          y )Nc                 ^    t        |      D ]  }||k(  rt        | j                  |         | S r#   )rY   r   r   )r   rZ   r   r[   s       r   appenderz=TestTryExceptRefct.test_list_indirect_raise.<locals>.appenderx  s/    1X=$$

1  Jr   c                     t        j                         }|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  sH    **,CJJva* 
  
s   
4 AArq   r\   r  r	  r  )r.   r+   r  r  s      @r   test_list_indirect_raisez+TestTryExceptRefct.test_list_indirect_raisew  s    		 
	 
	 
	 "q!cVHtE!H~$=>"r"cVHtE"I$>?r   c                     t         d        }| j                  t              5 } |        d d d        | j                  t	        j
                        d       y # 1 sw Y   /xY w)Nc                      	 t        j                         } t        d       | j                  d       t        d       | j                  d       t        d       | S # t        $ r t        d       Y y 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  sY    	jjlc


1c


5!c

 c
s   AA A21A2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  sX    	
	 

	 {+vE ,  !O	
 ,+r   N)r   r   r   r  r
  r  r   r   r   r   r   c  s    5&@2
r   r   c                   ~    e Zd Zd Zeed               Zeed               Z ej                  e
dk  d      d        Zy)TestTryExceptOtherControlFlowc                     t         d        }| j                  t         |dd            t        t        d                   | j                  t         |dd            t        t        d                   y )Nc              3   l   K   t        |       D ]  }	 ||k(  rt        |  y # t        $ r Y  y w xY wwr#   )rY   ro   rw   )rZ   r&   r[   s      r   r+   z5TestTryExceptOtherControlFlow.test_yield.<locals>.udt  s>     1XAv((G	 
 ! s   4$4	1414rq   r\   r  r   s     r   r{   z(TestTryExceptOtherControlFlow.test_yield  s\    		 
	 	c"aj)4a>:c"bk*DrO<r   c                     t         d        }| j                  t              5 } |        d d d        d}| j                  |t	        j
                               y # 1 sw Y   1xY w)Nc                      	 t               5  t        t                      d d d        y # 1 sw Y   y xY w# t        $ r Y y w xY wr#   )r   rG   objectrw   r   r   r   r+   z7TestTryExceptOtherControlFlow.test_objmode.<locals>.udt  s0    Y&(O YY s#   
5 )5 25 5 	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`     
	 
	 }-E .E  !	
	 .-s   AA#c                     d t         fd       }| j                  t              5 } |        d d d        d}| j                  |t	        j
                               y # 1 sw Y   1xY w)Nc                 l    t        j                  t        t        | j	                                           S r#   )r   asarrayr   reversedtolistr%   s    r   rz   zCTestTryExceptOtherControlFlow.test_objmode_output_type.<locals>.bar  s!    ::d8AHHJ#7899r   c                      t        j                  d      } t        j                  |       }	 t        d      5  | |       z  }d d d        |S # 1 sw Y   |S xY w# t        $ r Y |S w xY w)Nr\   zintp[:]r   )r   arange
zeros_liker   rw   )r&   rQ   rz   s     r   r  zLTestTryExceptOtherControlFlow.test_objmode_output_type.<locals>.test_objmode  si    		!Aa Ay)QKA *
 H *
 H  Hs.   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  sf    	: 
		 
		 }-N .E  !	
	 .-s   A  A))rB   	   zPython 3.9+ onlyc                    d }t        j                  |      D ]  }|j                  dk(  s n | j                  d       t	        j
                  i |j                        }d}|j                  j                         D ]L  \  }}|j                  t        j                        D ]%  }d}|j                  s||j                  d   v s$d}' N |s| j                  d       y y )	Nc                  @    	 t         # t         $ r t        d      w xY wr   )rw   ro   r   r   r   r   zMTestTryExceptOtherControlFlow.test_reraise_opcode_unreachable.<locals>.pyfunc  s&    * * ))*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    	*
 ((0D{{i' 1 II9:))"foo>,,.HCr~~6 Q==SDMM!,<%< E 7 / IIFG r   N)r   r   r   r{   r   r   r  r"  r   skipIfr   r8  r   r   r   r  r    sh    = 
  
$ 
  
2 X__Y');<H =Hr   r  c                   $    e Zd Zd Zd Zd Zd Zy)TestTryExceptParforsc                     d }dg} || }| j                    t        d      |      | |       | j                    t        d      |      | |       y )Nc                 ^    d}t        |       D ]  }	 |dz  }
 |S # t        $ r |dz  }Y w xY w)Nr   r2   r   rw   rZ   cr[   s      r   r+   z>TestTryExceptParfors.test_try_in_prange_reduction.<locals>.udt  sD    AAYFA 
 H ! FAs   ,,rq   FparallelT)r-   r   r.   r+   r   r   s       r   test_try_in_prange_reductionz1TestTryExceptParfors.test_try_in_prange_reduction  sc    	 td2-u-c2D96B1,t,S148&Ar   c                    d }dg} || }| j                    t        d      |      | |       t        j                  d      5 }t        j                  dt
               | j                    t        d      |      | |       d d d        | j                  t              d       | j                  d	t        |d
                y # 1 sw Y   CxY w)Nc                 V    d}	 t        |       D ]  }|dz  }	 	 |S # t        $ r Y yw xY w)Nr   r2   r   r>  r?  s      r   r+   zCTestTryExceptParfors.test_try_outside_prange_reduction.<locals>.udt  s>    AAFA #
   s    	((rq   FrA  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  s    	 td2-u-c2D96B$$D1Q!!(,CD50T405t<fE 2 	Q#M!A$i	!	 21s   A C		Cc                     d }t        j                  d      dg} || }| j                    t        d      |      | |       | j                    t        d      |      | |       y )Nc                     | j                         }t        | j                        D ]  }	 ||k(  rt        | |   |z   ||<    |S # t        $ r d||<   Y .w xY wNr8   copyr   sizero   rw   arrr&   r  r[   s       r   r+   z8TestTryExceptParfors.test_try_in_prange_map.<locals>.udt-  sd    ((*CCHH% Av(( VaZCF	 & J !  CF s   AAArq      FrA  Tr   r   assertPreciseEqualr   rC  s       r   test_try_in_prange_mapz+TestTryExceptParfors.test_try_in_prange_map,  n    		 		"q!d 9 4e 4S 94 @&I 8 3d 3C 8$ ?Hr   c                     d }t        j                  d      dg} || }| j                    t        d      |      | |       | j                    t        d      |      | |       y )Nc                     | j                         }	 t        | j                        D ]  }||k(  rt        | |   |z   ||<    	 |S # t        $ r	 d|<   Y |S w xY wrQ  rR  rU  s       r   r+   z=TestTryExceptParfors.test_try_outside_prange_map.<locals>.udt>  si    ((*C)AAv(( VaZCF * J  AJs   0A AArq   rW  FrA  TrX  rC  s       r   test_try_outside_prange_mapz0TestTryExceptParfors.test_try_outside_prange_map=  r[  r   N)r   r   r   rD  rN  rZ  r^  r   r   r   r;  r;    s    B !.I"Ir   r;  __main__)(rI  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   r   rw   r   r    r   r   r   r  r;  r   mainr   r   r   <module>rh     s     
   . . & #   	i 	d
 d
ND&( D&NZ( Zz@
( @
FYHH YHx II8 II IIX zHMMO r   