
    .|h>                     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jH                          yy)    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y)MyErrorN__name__
__module____qualname__     Z/var/www/html/test/engine/venv/lib/python3.12/site-packages/numba/tests/test_exceptions.pyr   r          r   r   c                       e Zd Zy)
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                 :    t         t        |   |       || _        y N)superr   __init__value0selfargr"   	__class__s      r   r!   zUDEArgsToSuper.__init__   s    nd,S1r   c                     t        || j                        syd}|| j                  |j                  k(  z  }|| j                  |j                  k(  z  }|S NFT)
isinstancer&   argsr"   r$   othersames      r   __eq__zUDEArgsToSuper.__eq__!   sK    %0		UZZ''u||++r   c                 h    t        t        t              j                         | j                  f      S r   )hashr    r   __hash__r"   r$   r&   s    r   r1   zUDEArgsToSuper.__hash__)   s%    U>*335t{{CDDr   r   r   r   r!   r.   r1   __classcell__r&   s   @r   r   r      s    E Er   r   c                   .     e Zd Z fdZd Z fdZ xZS )UDENoArgSuperc                 F    t         t        |           || _        || _        y r   )r    r7   r!   deferargr"   r#   s      r   r!   zUDENoArgSuper.__init__.   s    mT+-r   c                     t        || j                        sy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   sb    %0		UZZ''//u||++r   c                 ~    t        t        t              j                         | j                  | j
                  f      S r   )r0   r    r7   r1   r9   r"   r2   s    r   r1   zUDENoArgSuper.__hash__<   s2    U=)224dmm[[" # 	#r   r3   r5   s   @r   r7   r7   -   s    
# #r   r7   c                       fd}|S )Nc                 j    | 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   s8    6I!V!V))'''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                  j                  d      | S r>   rB   rG   r%   rH   s    r   rI   zraise_instance.<locals>.raiserO   M    6c1+!VS!$$!V))''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                  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                 6    | dk(  rt        dd       |       S )NrA   bar)r   )rG   inners    r   outerzouter_function.<locals>.outerk   s     6UA&&Qxr   r   )rY   rZ   s   ` r   outer_functionr[   j   s     Lr   c                     | dk(  sJ d       y )Nr?   rX   r   rG   s    r   assert_usecaser^   r   s    656r   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-y))*TestRaisingc                    d } t        t        j                  t        j                  dd      t        j                  f      |      }t	        j
                  dt        j                        }| j                   ||d       ||d             | j                  t              5 } ||d       d d d        | j                  t        j                        d       y # 1 sw Y   /xY w)Nc                      | j                   |   S r   )shape)arG   s     r   pyfuncz5TestRaising.test_unituple_index_error.<locals>.pyfunc   s    771: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ekk%++q#6DFvNHHQbhh'q!fQl3z* 	b!QK	R\\*,FG	 	s   "
CC#c                 >   |t         t        t        t        fv sJ | j	                  |      5 } ||  d d d        | j	                  |      5 } ||  d d d        | j                  j                  j                  j                  j                         t        |j                  t        t        f      r(| j                  |j                  |j                  k(         |t        u r3	  ||  	  ||  t#        	      D ]  \  }}| j%                  ||        y y # 1 sw Y   xY w# 1 sw Y   xY w# t        $ r, t        j                  t        j                           }|dd  }	Y zw xY w# t        $ r, t        j                  t        j                           }
|
dd  }Y w xY w)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   s    .1<A A 	A A 34 	DM	34 	4L	--v/?/?/D/DE eoo'FGOOEOOv/?/??@ &1
+t "/:> *
d dD)	*# '	 		 	   1%66G	"+BC.1  +$55s||~F%bc]
+s;   DD#$D/ *E' D #D,/2E$#E$'2FFc                 f   t        t              } t        t        j                  ffi ||      }| j                   |d      d       | j                  |||t        d       | j                  |||t        d       | j                  |||t        j                  j                  j                  d       y )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q1%!!%C!!%
AF!!%"$))"2"2">">	Cr   c                 0    | j                  t               y Nr   )r   r|   r$   s    r   test_raise_class_nopythonz%TestRaising.test_raise_class_nopython   s    ^4r   c                 0    | j                  t               y r   )r   r{   r   s    r   test_raise_class_objmodez$TestRaising.test_raise_class_objmode   s    %67r   c                    t         t        t        fD ]  }t        |d      } t	        t
        j                  ffi ||      }| j                   |d      d       | j                  ||||d       | j                  |||t        d       | j                  |||t        j                  j                  j                  d        y )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E#E>:F0C0%08EU1Xq)%%eVUE1E%%eVUJJ%%eVU&(ii&6&6&B&BAG		Gr   c                 0    | j                  t               y r   )r   r{   r   s    r   test_raise_instance_objmodez'TestRaising.test_raise_instance_objmode   s    !!(9!:r   c                 0    | j                  t               y r   )r   r|   r   s    r   test_raise_instance_nopythonz(TestRaising.test_raise_instance_nopython   s    !!!7r   c                 B   t         t        t        fD ]  }t        |d      }t	        |      } t        di ||      } t        di |t	        |            }| j                  ||||d       | j                  |||t        d       | j                  |||t        d        y)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E)%@L#L1F)#//,7K#CO(ON;$?@E%%eVUE1E%%eVUJJ%%eVUJJ		Kr   c                 2    | j                  t        d       y )NT)r   )r   r{   r   s    r   test_raise_nested_objmodez%TestRaising.test_raise_nested_objmode   s     1DAr   c                 2    | j                  t        d       y )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 ]/  \  fd} ||      } ||      }| j                  |||       1 y )Nc                     | r   r   )rH   s    r   	raise_excz,TestRaising.check_reraise.<locals>.raise_exc   s    Ir   c                        t               S r   )ZeroDivisionErrorr   s   r   <lambda>z+TestRaising.check_reraise.<locals>.<lambda>   s    ),="> r   c                  (      t        dd            S Nmsgr?   r`   r   s   r   r   z+TestRaising.check_reraise.<locals>.<lambda>   s    )N5!,D"E r   c                  (      t        dd            S r   )r7   r   s   r   r   z+TestRaising.check_reraise.<locals>.<lambda>   s    )M%,C"D r   c                       fd}|S )Nc                  :    	          y #  $ r
          Y y w xY wr   r   )errfnops   r   implz9TestRaising.check_reraise.<locals>.gen_impl.<locals>.impl   s!     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')D&(	) 	DGB v&Ge_F%%eWfcC	Dr   c                 0    | j                  t               y r   )r   r{   r   s    r   test_reraise_objmodez TestRaising.test_reraise_objmode  s    !23r   c                 0    | j                  t               y r   )r   r|   r   s    r   test_reraise_nopythonz!TestRaising.test_reraise_nopython  s    0r   c                 
   t        |      } t        t        j                  ffi ||      }| j	                  t
              5 } |d       d d d        | j                  t        j                        d       y # 1 sw Y   /xY w)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
  sq    S!,U[[N,e,V4y) 	R!H	R\\*D	F	 	s   	A99Bc                 h    | j                  t        t               | j                  dt               y )Nr   r?   )r   intr{   r   s    r    test_raise_invalid_class_objmodez,TestRaising.test_raise_invalid_class_objmode  s*    &&s2C&D&&q0A&Br   c                    d}| j                  t        j                        5 }| j                  t        t
               d d d        | j                  |t        j                               | j                  t        j                        5 }| j                  dt
               d d d        | j                  |t        |j                               y # 1 sw Y   xY w# 1 sw Y   ;xY w)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  s    Hv667 	F6**3n*E	Fc3v//01v667 	D6**1N*C	Dc3v//01	F 	F	D 	Ds   C
CCC%c                     t         d        }d}| j                  t        j                        5 } |        d d d        | j	                  |t        j                               y # 1 sw Y   /xY w)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  sd    		 
	v667 	6E	c3v//01	 	s   A$$A-c                     t         } t        t        j                  ffi ||      } |d       | j	                  |||t
        d       y )Nr?   r@   )r^   r   r   ro   r   AssertionErrorr   s       r   check_assert_statementz"TestRaising.check_assert_statement)  s@    ,U[[N,e,V4a!!%Jr   c                 0    | j                  t               y r   )r   r{   r   s    r   test_assert_statement_objmodez)TestRaising.test_assert_statement_objmode/  s    ##*;#<r   c                 0    | j                  t               y r   )r   r|   r   s    r   test_assert_statement_nopythonz*TestRaising.test_assert_statement_nopython2  s    ##.#9r   c                 p   d}d}d}d}|t         f|t        f|t        fg}t        j                  dk\  r.|j                  |t         f       |j                  |t         f       |D ]Q  \  }}i }	t        |d|i|	       |	d   }
 t        t        j                  ffi ||
      }| j                  ||
||d       S y )	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3^DE% 	DKFCC%s+XF0C0%08E%%eVUCC	Dr   c                 0    | j                  t               y r   )r   r{   r   s    r   $test_assert_from_exec_string_objmodez0TestRaising.test_assert_from_exec_string_objmodeK  s    ))0A)Br   c                 0    | j                  t               y r   )r   r|   r   s    r   %test_assert_from_exec_string_nopythonz1TestRaising.test_assert_from_exec_string_nopythonN  s    )))?r   c                 b    t         } t        di ||      }| j                  |||t               y )Nr   )ra   r   r   r   r   s       r   check_user_code_error_tracebackz+TestRaising.check_user_code_error_tracebackQ  s1     !  % (!!%	Br   c                 0    | j                  t               y r   )r   r{   r   s    r   &test_user_code_error_traceback_objmodez2TestRaising.test_user_code_error_traceback_objmodeY  s    ,,3D,Er   c                 0    | j                  t               y r   )r   r|   r   s    r   'test_user_code_error_traceback_nopythonz3TestRaising.test_user_code_error_traceback_nopython\  s    ,,>,Br   c                     t         } t        t        j                  ffi ||      }| j	                  |||t
        d       y )Nhello)rd   r   r   stringr   rC   r   s       r   check_raise_runtime_valuez%TestRaising.check_raise_runtime_value_  s9    $-U\\O-u-f5!!%
GLr   c                 0    | j                  t               y r   )r   r{   r   s    r    test_raise_runtime_value_objmodez,TestRaising.test_raise_runtime_value_objmoded  s    &&->&?r   c                 0    | j                  t               y r   )r   r}   r   s    r   !test_raise_runtime_value_nopythonz-TestRaising.test_raise_runtime_value_nopythong  s    &&-A&Br   c                 0    | j                  t               y 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 ||      }| j                   |dd      d       | j                  ||||dd       | j                  |||t        dd       | j                  |||t        j                  j                  j                  dd        y )	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E07F=Cell3=u=fEEU1f-q1%%eVUE1gN%%eVUJ&-/%%eVU&(ii&6&6&B&BAxQ
	Qr   c                 0    | j                  t               y 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Lr   c                 0    | j                  t               y 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Or   c                 0    | j                  t               y r   )r  r~   r   s    r   +test_raise_instance_with_runtime_args_nogilz7TestRaising.test_raise_instance_with_runtime_args_nogil  s    33,3Gr   c                     d }d }d }|df|df|t         j                  ffg}|D ]A  \  }}d}| j                  t        j                  |      5   t        |      |       d d d        C y # 1 sw Y   NxY w)Nc                  D    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    12771:677r   c                  *    t        t        d            )NrA   )rC   ranger   r   r   raise_rangez<TestRaising.test_dynamic_raise_bad_args.<locals>.raise_range  s    U1X&&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	'	0  $"()
 !& 	'FHCC''(:(:C@ 'Xv&' '	'' 's   A++A4	c                     t         d        }d}| j                  t        |      5   |        d d d        y # 1 sw Y   y xY w)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  sF    		/ 
	/ ##J4 	"!	" 	" 	"s   6?c                     t        d      d        }d}| j                  t        j                  |      5   |d       d d d        y # 1 sw Y   y xY w)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  sS    	5		  
	  -##F$<$<cB 	#c"	# 	# 	#s   	AAc                     t         d        t         fd       }| j                  |j                  d       |d             y )Nc                     t        |       r   rc   rj   s    r   raise_z*TestRaising.test_try_raise.<locals>.raise_  r'  r   c                 F    	  |        | dz   S # t         $ r Y | dz   S w xY w)Nr?   )r   rj   r.  s    r   	try_raisez-TestRaising.test_try_raise.<locals>.try_raise  s7    q	 q5L  q5Ls    	  rA   )r   rq   py_func)r$   r1  r.  s     @r   test_try_raisezTestRaising.test_try_raise  sJ    		  
	  
	 
	 	**1-y|<r   c           
      ^   t         d        t         fd       }dddt        j                  d      ddgdt        ddg      g}|fD ]V  }|D ]O  }| j	                  t
              5 } ||       d d d        | j                  |fj                  j                         Q X y # 1 sw Y   5xY w)	Nc                     t        |       r   rc   r-  s    r   r.  z.TestRaising.test_dynamic_raise.<locals>.raise_  r'  r   c                 H    	  |        y # t         $ r t        |       w xY wr   )r   rC   r0  s    r   
try_raise_z2TestRaising.test_dynamic_raise.<locals>.try_raise_  s(    $q	 $ m#$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    
 
	  
	  
	$ 
	$ GGAJFAK
 :& 	;B ;&&z2 asG  #)9)9:;	; s   &	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(*TC58
G;8KB?D,41FC22K=:D,C@CFCM
@C;QMP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 "E2$($7  4>	i 		 	EY E"#I #(
		
Y;( Y;x
 zHMMO r   