
    xKgp>                     R   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 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jF                          yy)    N)jitnjit)typeserrorsutils)TestCaseexpected_failure_py311expected_failure_py312FT)nopythonforceobj)r   _nrt)r   nogilr   c                       e Zd Zy)MyErrorN__name__
__module____qualname__     _/home/alanp/www/video.onchill/myenv/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   r0   zUDEArgsToSuper.__hash__(   s%    U>*335t{{CDDr   r   r   r   r    r-   r0   __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   r6   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)   r8   r!   r*   s      r   r-   zUDENoArgSuper.__eq__2   sb    %0		UZZ''//u||++r   c                 ~    t        t        t              j                         | j                  | j
                  f      S r   )r/   r   r6   r0   r8   r!   r1   s    r   r0   zUDENoArgSuper.__hash__;   s2    U=)224dmm[[" # 	#r   r2   r4   s   @r   r6   r6   ,   s    
# #r   r6   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>.raiserA   s8    6I!V!V))'''r   r   rG   rH   s   ` r   raise_classrJ   @   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=   rA   rF   r$   rG   s    r   rH   zraise_instance.<locals>.raiserN   M    6c1+!VS!$$!V))''Q//r   r   )rG   r$   rH   s   `` r   raise_instancerO   M   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=   rA   rM   s     r   rH   z+raise_instance_runtime_args.<locals>.raiserZ   rN   r   r   rI   s   ` r   raise_instance_runtime_argsrR   Y   s     Mr   c                        r   r   r   r   r   reraiserT   e   s    	r   c                       fd}|S )Nc                 6    | dk(  rt        dd       |       S )Nr@   bar)r   )rF   inners    r   outerzouter_function.<locals>.outerj   s     6UA&&Qxr   r   )rX   rY   s   ` r   outer_functionrZ   i   s     Lr   c                     | dk(  sJ d       y )Nr>   rW   r   rF   s    r   assert_usecaser]   q   s    656r   c                      t               r   r   r   r   r   ude_bug_usecaser`   u   s    

r   c                     t        |       r   rB   )r$   s    r   raise_runtime_valuerc   y   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+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)arF   s     r   pyfuncz5TestRaising.test_unituple_index_error.<locals>.pyfunc   s    771:r   r>   Ar?   )dtyper   ztuple index out of range)r   r   Arrayint32rC   emptyassertEqualassertRaises
IndexErrorstr	exception)r#   rj   cfuncri   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_flagsrq   rp   rt   r)   r(   r   r6   
assertTrue	Exception	tracebackformat_exceptionsysexc_infozipassertIn)r#   	exec_moderj   ru   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 5344L 5--v/?/?/D/DE eoo'FGOOEOOv/?/??@ &1
+t "/:>
d dD)	 ?# ' 5444   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?   r@   )rJ   r   r   r   rn   rp   r   rB   rC   rD   rE   r#   flagsrj   ru   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   rz   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?   r@   )r   r   r6   rO   r   r   rn   rp   r   rB   rC   rD   rE   r#   r   clazzrj   ru   s        r   check_raise_instancez TestRaising.check_raise_instance   s    ~#%E#E>:F0C0%08EU1Xq)%%eVUE1E%%eVUJJ%%eVU&(ii&6&6&B&BAG%r   c                 0    | j                  t               y r   )r   rz   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?   r@   Nr   )	r   r   r6   rO   rZ   r   r   rB   r   )r#   r   jit_argsr   inner_pyfuncrj   inner_cfuncru   s           r   check_raise_nestedzTestRaising.check_raise_nested   s     ~#%E)%@L#L1F)#//,7K#CO(ON;$?@E%%eVUE1E%%eVUJJ%%eVUJJ%r   c                 2    | j                  t        d       y )NT)r   )r   rz   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   )rG   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"Er   c                  (      t        dd            S r   )r6   r   s   r   r   z+TestRaising.check_reraise.<locals>.<lambda>   s    )M%,C"Dr   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   )rT   r   r   r   r6   r   )
r#   r   rj   ru   r   pybasedcbasedr   r   r   s
          @@@r   check_reraisezTestRaising.check_reraise   s    	  % (>*,E')D&(	)GB v&Ge_F%%eWfcC)r   c                 0    | j                  t               y r   )r   rz   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)	rJ   r   r   rn   rq   	TypeErrorrp   rs   rt   )r#   clsr   rj   ru   rv   s         r   check_raise_invalid_classz%TestRaising.check_raise_invalid_class	  sj    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   intrz   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>   )	rq   r   UnsupportedErrorr   r   r{   r   rs   rt   )r#   r   raisess      r   !test_raise_invalid_class_nopythonz-TestRaising.test_raise_invalid_class_nopython  s    Hv6676**3n*E 8c3v//01v6676**1N*C 8c3v//01 87 87s   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   rq   r   r   r   rs   rt   )r#   r   r   r   s       r   test_raise_bare_string_nopythonz+TestRaising.test_raise_bare_string_nopython  s]    		 
	v6676E 8c3v//01 87s   A$$A-c                     t         } t        t        j                  ffi ||      } |d       | j	                  |||t
        d       y )Nr>   r?   )r]   r   r   rn   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   rz   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_nopython1  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)r@      rG   fr>   )r   r   r6   r   	PYVERSIONappendexecr   r   rn   r   )r#   r   simple_raiseassert_raisepy312_pep695_raisepy312_pep695_raise_2
test_casesf_textrG   locrj   ru   s               r   check_raise_from_exec_stringz(TestRaising.check_raise_from_exec_string4  s    :3IM>*>*=)


 ??g%1>BC3^DE%KFCC%s+XF0C0%08E%%eVUCC &r   c                 0    | j                  t               y r   )r   rz   r   s    r   $test_assert_from_exec_string_objmodez0TestRaising.test_assert_from_exec_string_objmodeJ  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_nopythonM  s    )))?r   c                 b    t         } t        di ||      }| j                  |||t               y )Nr   )r`   r   r   r   r   s       r   check_user_code_error_tracebackz+TestRaising.check_user_code_error_tracebackP  s1     !  % (!!%	Br   c                 0    | j                  t               y r   )r   rz   r   s    r   &test_user_code_error_traceback_objmodez2TestRaising.test_user_code_error_traceback_objmodeX  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)rc   r   r   stringr   rB   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   rz   r   s    r    test_raise_runtime_value_objmodez,TestRaising.test_raise_runtime_value_objmodec  s    &&->&?r   c                 0    | j                  t               y r   )r   r|   r   s    r   !test_raise_runtime_value_nopythonz-TestRaising.test_raise_runtime_value_nopythonf  s    &&-A&Br   c                 0    | j                  t               y r   )r   r}   r   s    r   test_raise_runtime_value_nogilz*TestRaising.test_raise_runtime_value_nogili  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?   worldr@   rD   )r   r   r6   rR   r   r   rn   r   rp   r   rB   rC   rD   rE   r   s        r   &check_raise_instance_with_runtime_argsz2TestRaising.check_raise_instance_with_runtime_argsl  s    ~#%E07F=Cell3=u=fEEU1f-q1%%eVUE1gN%%eVUJ&-/%%eVU&(ii&6&6&B&BAxQ%r   c                 0    | j                  t               y r   )r  rz   r   s    r   -test_raise_instance_with_runtime_args_objmodez9TestRaising.test_raise_instance_with_runtime_args_objmodey  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>      ri   b)rB   rC   onesr   r   r   raise_literal_dictzCTestRaising.test_dynamic_raise_bad_args.<locals>.raise_literal_dict  s    12771:677r   c                  *    t        t        d            )Nr@   )rB   ranger   r   r   raise_rangez<TestRaising.test_dynamic_raise_bad_args.<locals>.raise_range  s    U1X&&r   c                 ,    t        | j                        r   )rB   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  funcsrj   argtypesr   s           r   test_dynamic_raise_bad_argsz'TestRaising.test_dynamic_raise_bad_args  s    	8	'	0  $"()
 !&FHCC''(:(:C@Xv& A@ !&@@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>   r@   r  rb   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  rB   )r#   r!  r   s      r   test_dynamic_raise_dictz#TestRaising.test_dynamic_raise_dict  s=    		/ 
	/ ##J4! 544s   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   rb   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  sK    	5		  
	  -##F$<$<cBc" CBBs   	AAc                     t         d        t         fd       }| j                  |j                  d       |d             y )Nc                     t        |       r   rb   ri   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   ri   r-  s    r   	try_raisez-TestRaising.test_try_raise.<locals>.try_raise  s7    q	 q5L  q5Ls    	  r@   )r   rp   py_func)r#   r0  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   rb   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   rB   r/  s    r   
try_raise_z2TestRaising.test_dynamic_raise.<locals>.try_raise_  s(    $q	 $ m#$s    !r>   g?r   r@   r?   )r>   r?   )	r   rC   r  setrq   rB   rp   rt   r)   )r#   r6  r)   r   r$   er-  s         @r   test_dynamic_raisezTestRaising.test_dynamic_raise  s     
	  
	  
	$ 
	$ GGAJFAK
 :&B&&z2asG 3  #)9)9:  '22s   &	B##B,N)-r   r   r   rw   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)  r2  r	   r
   r9  r   r   r   re   re   }   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   re   __main__)$numpyrC   r   r   numbar   r   
numba.corer   r   r   numba.tests.supportr   r	   r
   unittestrz   r{   r|   r}   r   r   r   r   r6   rJ   rO   rR   rT   rZ   r]   r`   rc   re   r   mainr   r   r   <module>rA     s     
   + +# #  "'D9 "E2$($7  4>	i 		 	EY E"#I #(
		
X;( X;v
 zHMMO r   