
    J/Ph>                     v   d dl Zd dlZd dlZd dlmZmZ d dlmZm	Z	m
Z
 d dlmZmZmZmZ d dlZdddZdddZdddZdddd	Z G d
 de          Z G d de          Z G d de          Z G d de          Zd Zd Zd Zd Zd Zd Zd Z d Z! G d de          Z"e#dk    r ej$                     dS dS )    N)jitnjit)typeserrorsutils)TestCaseexpected_failure_py311expected_failure_py312expected_failure_py313FT)nopythonforceobj)r   _nrt)r   nogilr   c                       e Zd ZdS )MyErrorN__name__
__module____qualname__     [/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/tests/test_exceptions.pyr   r              Dr   r   c                       e Zd ZdS )
OtherErrorNr   r   r   r   r   r      r   r   r   c                   .     e Zd Z fdZd Z fdZ xZS )UDEArgsToSuperc                 f    t          t          |                               |           || _        d S N)superr   __init__value0selfargr"   	__class__s      r   r!   zUDEArgsToSuper.__init__   s,    nd##,,S111r   c                     t          || j                  sdS d}|| j        |j        k    z  }|| j        |j        k    z  }|S NFT)
isinstancer&   argsr"   r$   othersames      r   __eq__zUDEArgsToSuper.__eq__!   sK    %00 	5	UZ''u|++r   c                 x    t          t          t                                                    | j        f          S r   )hashr    r   __hash__r"   r$   r&   s    r   r1   zUDEArgsToSuper.__hash__)   s,    U>**3355t{CDDDr   r   r   r   r!   r.   r1   __classcell__r&   s   @r   r   r      si              E E E E E E E E Er   r   c                   .     e Zd Z fdZd Z fdZ xZS )UDENoArgSuperc                 r    t          t          |                                            || _        || _        d S r   )r    r7   r!   deferargr"   r#   s      r   r!   zUDENoArgSuper.__init__.   s1    mT""++---r   c                     t          || j                  sdS d}|| j        |j        k    z  }|| j        |j        k    z  }|| j        |j        k    z  }|S r(   )r)   r&   r*   r9   r"   r+   s      r   r.   zUDENoArgSuper.__eq__3   s^    %00 	5	UZ''//u|++r   c                     t          t          t                                                    | j        | j        f          S r   )r0   r    r7   r1   r9   r"   r2   s    r   r1   zUDENoArgSuper.__hash__<   s9    U=))2244dm[" # # 	#r   r3   r5   s   @r   r7   r7   -   s`            
  # # # # # # # # #r   r7   c                       fd}|S )Nc                 `    | dk    r| dk    rt           | dk    rt          j        j        | S N         
ValueErrornplinalgLinAlgError)iexcs    r   raiserzraise_class.<locals>.raiserB   s9    66I!VV!VV)''r   r   rH   rI   s   ` r   raise_classrK   A   s#         Mr   c                       fd}|S )Nc                     | dk    r d          | dk    rt          d          | dk    r t          j                            d          | S r>   rB   rG   r%   rH   s    r   rI   zraise_instance.<locals>.raiserO   [    66#c1++!VVS!$$$!VV)''Q///r   r   )rH   r%   rI   s   `` r   raise_instancerP   N   s)          Mr   c                       fd}|S )Nc                     | dk    r |d          | dk    rt          |d          | dk    r t          j                            |d          | S r>   rB   rN   s     r   rI   z+raise_instance_runtime_args.<locals>.raiser[   rO   r   r   rJ   s   ` r   raise_instance_runtime_argsrS   Z   s#         Mr   c                        r   r   r   r   r   reraiserU   f   s    	r   c                       fd}|S )Nc                 F    | dk    rt          dd           |           S )NrA   bar)r   )rG   inners    r   outerzouter_function.<locals>.outerk   s)    66UA&&&uQxxr   r   )rY   rZ   s   ` r   outer_functionr[   j   s#         Lr   c                 &    | dk    s
J d            d S )Nr?   rX   r   rG   s    r   assert_usecaser^   r   s    666566666r   c                      t                      r   r   r   r   r   ude_bug_usecasera   v   s    


r   c                      t          |           r   rC   )r%   s    r   raise_runtime_valuerd   z   s    
S//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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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(d' Z)e*e+e,d(                                     Z-d)S )*TestRaisingc                    d } t          t          j        t          j        dd          t          j        f          |          }t	          j        dt          j                  }|                      ||d           ||d                     |                     t                    5 } ||d           d d d            n# 1 swxY w Y   |                     t          |j
                  d           d S )Nc                     | j         |         S r   )shape)arG   s     r   pyfuncz5TestRaising.test_unituple_index_error.<locals>.pyfunc   s    71:r   r?   Ar@   )dtyper   ztuple index out of range)r   r   Arrayint32rD   emptyassertEqualassertRaises
IndexErrorstr	exception)r$   rk   cfuncrj   cms        r   test_unituple_index_errorz%TestRaising.test_unituple_index_error   s   	 	 	 Gek%+q#66DFFvNNHQbh'''q!ffQll333z** 	bE!QKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	R\**,FGGGGGs   *CC
Cc                 T   |t           t          t          t          fv sJ |                     |          5 } ||  d d d            n# 1 swxY w Y   |                     |          5 } ||  d d d            n# 1 swxY w Y   |                     |j        j        |j        j                   t          |j        t          t          f          r#|                     |j        |j        k               |t          u r	  ||  n9# t          $ r, t          j        t          j                     }|dd          }	Y nw xY w	  ||  n9# t          $ r, t          j        t          j                     }
|
dd          }Y nw xY wt#          |	|          D ]\  }}|                     ||           d S d S )N)force_pyobj_flagsno_pyobj_flagsno_pyobj_flags_w_nrtno_gil_flagsrr   rq   ru   r*   r)   r   r7   
assertTrue	Exception	tracebackformat_exceptionsysexc_infozipassertIn)r$   	exec_moderk   rv   expected_error_classr*   pyerrjiterr	py_framesexpected_framesc_frames
got_framesexpfgotfs                 r   check_against_pythonz TestRaising.check_against_python   sg    .1<A A A A A 344 	FDMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	344 	E4LL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	-v/?/DEEE eo'FGG 	AOOEOv/??@@@ &&1 1 1 1%6G	"+BCC.1+t + + +$5s|~~F%bcc]


+
 "/:>> * *
d dD))))+ '&"* *sG   AA
A
&A88A<?A<;D 3D76D7;E 3E76E7c                    t          t                    } t          t          j        ffi ||          }|                      |d          d           |                     |||t          d           |                     |||t          d           |                     |||t          j	        j	        j
        d           d S )Nr   r?   r@   rA   )rK   r   r   r   ro   rq   r   rC   rD   rE   rF   r$   flagsrk   rv   s       r   check_raise_classzTestRaising.check_raise_class   s    W%%,U[N,,e,,V44q1%%%!!%CCC!!%
AFFF!!%"$)"2">	C 	C 	C 	C 	Cr   c                 <    |                      t                     d S Nr   )r   r|   r$   s    r   test_raise_class_nopythonz%TestRaising.test_raise_class_nopython   s    ^44444r   c                 <    |                      t                     d S r   )r   r{   r   s    r   test_raise_class_objmodez$TestRaising.test_raise_class_objmode   s     %677777r   c                    t           t          t          fD ]}t          |d          } t	          t
          j        ffi ||          }|                      |d          d           |                     ||||d           |                     |||t          d           |                     |||t          j        j        j        d           d S )Nsome messager   r?   r@   rA   )r   r   r7   rP   r   r   ro   rq   r   rC   rD   rE   rF   r$   r   clazzrk   rv   s        r   check_raise_instancez TestRaising.check_raise_instance   s    ~#% 		G 		GE#E>::F0C00%0088EUU1XXq)))%%eVUE1EEE%%eVUJJJJ%%eVU&(i&6&BAG G G G		G 		Gr   c                 <    |                      t                     d S r   )r   r{   r   s    r   test_raise_instance_objmodez'TestRaising.test_raise_instance_objmode   s     !!(9!:::::r   c                 <    |                      t                     d S r   )r   r|   r   s    r   test_raise_instance_nopythonz(TestRaising.test_raise_instance_nopython   s    !!!77777r   c                    t           t          t          fD ]}t          |d          }t	          |          } t          di ||          } t          di |t	          |                    }|                     ||||d           |                     |||t          d           |                     |||t          d           dS )zD
        Check exception propagation from nested functions.
        r   r?   r@   rA   Nr   )	r   r   r7   rP   r[   r   r   rC   r   )r$   r   jit_argsr   inner_pyfuncrk   inner_cfuncrv   s           r   check_raise_nestedzTestRaising.check_raise_nested   s     ~#% 		K 		KE)%@@L#L11F)#////,77K#COO(OON;$?$?@@E%%eVUE1EEE%%eVUJJJJ%%eVUJJJJJ		K 		Kr   c                 >    |                      t          d           d S )NT)r   )r   r{   r   s    r   test_raise_nested_objmodez%TestRaising.test_raise_nested_objmode   s"     1DAAAAAr   c                 >    |                      t          d           d S )NT)r   )r   r|   r   s    r   test_raise_nested_nopythonz&TestRaising.test_raise_nested_nopython   s!    >>>>>r   c                   	 d 	t           } t          di ||          }	fdt          f	fdt          f	fdt          ffD ]9\  fd} ||          } ||          }|                     |||           :d S )Nc                     | r   r   )rH   s    r   	raise_excz,TestRaising.check_reraise.<locals>.raise_exc   s    Ir   r   c                  $      t                     S r   )ZeroDivisionErrorr   s   r   <lambda>z+TestRaising.check_reraise.<locals>.<lambda>   s    )),=">"> r   c                  6      t          dd                    S Nmsgr?   r`   r   s   r   r   z+TestRaising.check_reraise.<locals>.<lambda>   s    ))N5!,D,D"E"E r   c                  6      t          dd                    S r   )r7   r   s   r   r   z+TestRaising.check_reraise.<locals>.<lambda>   s    ))M%,C,C"D"D r   c                       fd}|S )Nc                  J    	               d S #  $ r               Y d S w xY wr   r   )errfnops   r   implz9TestRaising.check_reraise.<locals>.gen_impl.<locals>.impl   sC       s   
 ""r   )r   r   r   r   s   ` r   gen_implz+TestRaising.check_reraise.<locals>.gen_impl   s.          
 r   r   )rU   r   r   r   r7   r   )
r$   r   rk   rv   r   pybasedcbasedr   r   r   s
          @@@r   check_reraisezTestRaising.check_reraise   s    	 	 	   %  ((>>>>*,EEEE')DDDD&(	) 	D 	DGB      hv&&GXe__F%%eWfcCCCC	D 	Dr   c                 <    |                      t                     d S r   )r   r{   r   s    r   test_reraise_objmodez TestRaising.test_reraise_objmode  s     !233333r   c                 <    |                      t                     d S r   )r   r|   r   s    r   test_reraise_nopythonz!TestRaising.test_reraise_nopython  s    00000r   c                 0   t          |          } t          t          j        ffi ||          }|                     t
                    5 } |d           d d d            n# 1 swxY w Y   |                     t          |j                  d           d S )Nr?   z)exceptions must derive from BaseException)	rK   r   r   ro   rr   	TypeErrorrq   rt   ru   )r$   clsr   rk   rv   rw   s         r   check_raise_invalid_classz%TestRaising.check_raise_invalid_class
  s    S!!,U[N,,e,,V44y)) 	RE!HHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	R\**D	F 	F 	F 	F 	Fs   A##A'*A'c                     |                      t          t                     |                      dt                     d S )Nr   r?   )r   intr{   r   s    r    test_raise_invalid_class_objmodez,TestRaising.test_raise_invalid_class_objmode  s<    &&s2C&DDD&&q0A&BBBBBr   c                     d}|                      t          j                  5 }|                     t          t
                     d d d            n# 1 swxY w Y   |                     |t          |j                             |                      t          j                  5 }|                     dt
                     d d d            n# 1 swxY w Y   |                     |t          |j                             d S )Nz8Encountered unsupported constant type used for exceptionr   r?   )	rr   r   UnsupportedErrorr   r   r|   r   rt   ru   )r$   r   raisess      r   !test_raise_invalid_class_nopythonz-TestRaising.test_raise_invalid_class_nopython  so   Hv677 	F6**3n*EEE	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	Fc3v/00111v677 	D6**1N*CCC	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	Dc3v/0011111s#   "AAA"CCCc                     t           d             }d}|                     t          j                  5 } |             d d d            n# 1 swxY w Y   |                     |t          |j                             d S )Nc                      d)Nillegalr   r   r   r   fooz8TestRaising.test_raise_bare_string_nopython.<locals>.foo   s    Or   zCDirectly raising a string constant as an exception is not supported)r   rr   r   r   r   rt   ru   )r$   r   r   r   s       r   test_raise_bare_string_nopythonz+TestRaising.test_raise_bare_string_nopython  s    		 	 
	v677 	6CEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	c3v/0011111s   A		AAc                     t           } t          t          j        ffi ||          } |d           |                     |||t
          d           d S )Nr?   r@   )r^   r   r   ro   r   AssertionErrorr   s       r   check_assert_statementz"TestRaising.check_assert_statement)  sY    ,U[N,,e,,V44a!!%JJJJJr   c                 <    |                      t                     d S r   )r   r{   r   s    r   test_assert_statement_objmodez)TestRaising.test_assert_statement_objmode/  s     ##*;#<<<<<r   c                 <    |                      t                     d S r   )r   r|   r   s    r   test_assert_statement_nopythonz*TestRaising.test_assert_statement_nopython2  s    ##.#99999r   c                    d}d}d}d}|t           f|t          f|t          fg}t          j        dk    r8|                    |t           f           |                    |t           f           |D ]\\  }}i }	t          |d|i|	           |	d         }
 t          t          j	        ffi ||
          }| 
                    ||
||d           ]d S )	Nz def f(a):
  raise exc('msg', 10)zdef f(a):
  assert a != 1z)def f[T: int](a: T) -> T:
  assert a != 1z*def f[T: int
](a: T) -> T:
  assert a != 1)rA      rH   fr?   )r   r   r7   r   	PYVERSIONappendexecr   r   ro   r   )r$   r   simple_raiseassert_raisepy312_pep695_raisepy312_pep695_raise_2
test_casesf_textrH   locrk   rv   s               r   check_raise_from_exec_stringz(TestRaising.check_raise_from_exec_string5  s   :3IM>*>*=)


 ?g%%1>BCCC3^DEEE% 	D 	DKFCC%s+++XF0C00%0088E%%eVUCCCCC	D 	Dr   c                 <    |                      t                     d S r   )r   r{   r   s    r   $test_assert_from_exec_string_objmodez0TestRaising.test_assert_from_exec_string_objmodeK  s     ))0A)BBBBBr   c                 <    |                      t                     d S r   )r   r|   r   s    r   %test_assert_from_exec_string_nopythonz1TestRaising.test_assert_from_exec_string_nopythonN  s    )))?????r   c                 x    t           } t          di ||          }|                     |||t                     d S )Nr   r   )ra   r   r   r   r   s       r   check_user_code_error_tracebackz+TestRaising.check_user_code_error_tracebackQ  sF     !   %  ((!!%	BBBBBr   c                 <    |                      t                     d S r   )r   r{   r   s    r   &test_user_code_error_traceback_objmodez2TestRaising.test_user_code_error_traceback_objmodeY  s     ,,3D,EEEEEr   c                 <    |                      t                     d S r   )r   r|   r   s    r   'test_user_code_error_traceback_nopythonz3TestRaising.test_user_code_error_traceback_nopython\  s    ,,>,BBBBBr   c                     t           } t          t          j        ffi ||          }|                     |||t
          d           d S )Nhello)rd   r   r   stringr   rC   r   s       r   check_raise_runtime_valuez%TestRaising.check_raise_runtime_value_  sL    $-U\O--u--f55!!%
GLLLLLr   c                 <    |                      t                     d S r   )r   r{   r   s    r    test_raise_runtime_value_objmodez,TestRaising.test_raise_runtime_value_objmoded  s     &&->&?????r   c                 <    |                      t                     d S r   )r   r}   r   s    r   !test_raise_runtime_value_nopythonz-TestRaising.test_raise_runtime_value_nopythong  s     &&-A&BBBBBr   c                 <    |                      t                     d S r   )r   r~   r   s    r   test_raise_runtime_value_nogilz*TestRaising.test_raise_runtime_value_nogilj  s    &&\&:::::r   c           	         t           t          t          fD ]}t          |          } t	          t
          j        t
          j        ffi ||          }|                      |dd          d           | 	                    ||||dd           | 	                    |||t          dd           | 	                    |||t          j        j        j        dd           d S )	Nr   testr?   r   r@   worldrA   rE   )r   r   r7   rS   r   r   ro   r   rq   r   rC   rD   rE   rF   r   s        r   &check_raise_instance_with_runtime_argsz2TestRaising.check_raise_instance_with_runtime_argsm  s    ~#% 
	Q 
	QE077F=Cel3==u==fEEEUU1f--q111%%eVUE1gNNN%%eVUJ&-/ / /%%eVU&(i&6&BAxQ Q Q Q
	Q 
	Qr   c                 <    |                      t                     d S r   )r  r{   r   s    r   -test_raise_instance_with_runtime_args_objmodez9TestRaising.test_raise_instance_with_runtime_args_objmodez  s     33:K3LLLLLr   c                 <    |                      t                     d S r   )r  r}   r   s    r   .test_raise_instance_with_runtime_args_nopythonz:TestRaising.test_raise_instance_with_runtime_args_nopython}  s     33:N3OOOOOr   c                 <    |                      t                     d S r   )r  r~   r   s    r   +test_raise_instance_with_runtime_args_nogilz7TestRaising.test_raise_instance_with_runtime_args_nogil  s    33,3GGGGGr   c                     d }d }d }|df|df|t           j        ffg}|D ]W\  }}d}|                     t          j        |          5   t          |          |           d d d            n# 1 swxY w Y   Xd S )Nc                  J    t          dt          j        d          d          )Nr?      rj   b)rC   rD   onesr   r   r   raise_literal_dictzCTestRaising.test_dynamic_raise_bad_args.<locals>.raise_literal_dict  s     1271::66777r   c                  :    t          t          d                    )NrA   )rC   ranger   r   r   raise_rangez<TestRaising.test_dynamic_raise_bad_args.<locals>.raise_range  s    U1XX&&&r   c                 *    t          | j                  r   )rC   bit_generator)rngs    r   	raise_rngz:TestRaising.test_dynamic_raise_bad_args.<locals>.raise_rng  s    S.///r   r   z/.*Cannot convert native .* to a Python object.*)r   npy_rngassertRaisesRegexr   TypingErrorr   )r$   r  r  r  funcsrk   argtypesr   s           r   test_dynamic_raise_bad_argsz'TestRaising.test_dynamic_raise_bad_args  s    	8 	8 	8	' 	' 	'	0 	0 	0  $"()
 !& 	' 	'FHCC''(:C@@ ' 'Xv&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' '	' 	's   	A..A2	5A2	c                     t           d             }d}|                     t          |          5   |             d d d            d S # 1 swxY w Y   d S )Nc                  &    t          ddd          )Nr?   rA   r  rc   r   r   r   raise_literal_dict2z@TestRaising.test_dynamic_raise_dict.<locals>.raise_literal_dict2  s    11--...r   z{a: 1, b: 3})r   r  rC   )r$   r"  r   s      r   test_dynamic_raise_dictz#TestRaising.test_dynamic_raise_dict  s    		/ 	/ 
	/ ##J44 	" 	"!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s   AA
A
c                     t          d          d             }d}|                     t          j        |          5   |d           d d d            d S # 1 swxY w Y   d S )NF)r   c                      t          |           r   rc   r]   s    r   raise_with_no_nrtz7TestRaising.test_disable_nrt.<locals>.raise_with_no_nrt      Q--r   zNRT required but not enabled{   )r   r  r   NumbaRuntimeError)r$   r&  r   s      r   test_disable_nrtzTestRaising.test_disable_nrt  s    	5				  	  
		  -##F$<cBB 	# 	#c"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#s   AAAc                     t           d             t           fd            }|                     |                    d           |d                     d S )Nc                      t          |           r   rc   rj   s    r   raise_z*TestRaising.test_try_raise.<locals>.raise_  r'  r   c                 H    	  |            n# t           $ r Y nw xY w| dz   S )Nr?   )r   rj   r.  s    r   	try_raisez-TestRaising.test_try_raise.<locals>.try_raise  s@    q				   q5Ls    
rA   )r   rq   py_func)r$   r1  r.  s     @r   test_try_raisezTestRaising.test_try_raise  su    		  	  
	  
	 	 	 	 
	 	**1--yy||<<<<<r   c           
      x   t           d             t           fd            }dddt          j        d          ddgdt          ddg          g}|fD ]e}|D ]`}|                     t
                    5 } ||           d d d            n# 1 swxY w Y   |                     |f|j        j                   afd S )	Nc                      t          |           r   rc   r-  s    r   r.  z.TestRaising.test_dynamic_raise.<locals>.raise_  r'  r   c                 Z    	  |            d S # t           $ r t          |           w xY wr   )r   rC   r0  s    r   
try_raise_z2TestRaising.test_dynamic_raise.<locals>.try_raise_  s@    $q					 $ $ $ mm#$s    *r?   g?r   rA   r@   )r?   r@   )	r   rD   r  setrr   rC   rq   ru   r*   )r$   r7  r*   r   r%   er.  s         @r   test_dynamic_raisezTestRaising.test_dynamic_raise  s>   
 
	  	  
	  
	$ 	$ 	$ 	$ 
	$ GAJJFAKK
 :& 	; 	;B ; ;&&z22 aBsGGG                #)9::::;	; 	;s   4BBBN).r   r   r   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r	  r  r  r#  r*  r3  r	   r
   r   r:  r   r   r   rf   rf   ~   s       H H H(* (* (*TC C C5 5 58 8 8
G 
G 
G; ; ;8 8 8K K KB B B? ? ?D D D,4 4 41 1 1F F FC C C2 2 22 2 2K K K= = =: : :D D D,C C C@ @ @C C CF F FC C CM M M
@ @ @C C C; ; ;Q Q QM M MP P PH H H' ' '*" " "# # #= = =  ; ;   ; ; ;r   rf   __main__)%numpyrD   r   r   numbar   r   
numba.corer   r   r   numba.tests.supportr   r	   r
   r   unittestr{   r|   r}   r~   r   r   r   r   r7   rK   rP   rS   rU   r[   r^   ra   rd   rf   r   mainr   r   r   <module>rB     s^       



             + + + + + + + + + +# # # # # # # # # # # #  "'D99 "E22$($77  4>>	 	 	 	 	i 	 	 		 	 	 	 	 	 	 	E E E E EY E E E"# # # # #I # # #(
 
 
	 	 		 	 	
 
 
        Y; Y; Y; Y; Y;( Y; Y; Y;x
 zHMOOOOO r   