
    sh>                     X   S SK rS SKrS SKrS SKJrJr  S SKJrJ	r	J
r
  S SKJrJrJrJr  S SKrSSS.rSSS.rSSS.rSSSS	.r " S
 S\5      r " S S\5      r " S S\5      r " S S\5      rS rS rS rS rS rS rS r S r! " S S\5      r"\#S:X  a  \RH                  " 5         gg)    N)jitnjit)typeserrorsutils)TestCaseexpected_failure_py311expected_failure_py312expected_failure_py313FT)nopythonforceobj)r   _nrt)r   nogilr   c                       \ rS rSrSrg)MyError    N__name__
__module____qualname____firstlineno____static_attributes__r       o/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/tests/test_exceptions.pyr   r          r   r   c                       \ rS rSrSrg)
OtherError   r   Nr   r   r   r   r   r      r   r   r   c                   :   ^  \ rS rSrU 4S jrS rU 4S jrSrU =r$ )UDEArgsToSuper   c                 8   > [         [        U ]  U5        X l        g N)superr!   __init__value0selfargr'   	__class__s      r   r&   UDEArgsToSuper.__init__   s    nd,S1r   c                     [        XR                  5      (       d  gSnX R                  UR                  :H  -  nX R                  UR                  :H  -  nU$ NFT)
isinstancer+   argsr'   r)   othersames      r   __eq__UDEArgsToSuper.__eq__!   sH    %00		UZZ''u||++r   c                 h   > [        [        [        5      R                  5       U R                  45      $ r$   )hashr%   r!   __hash__r'   r)   r+   s    r   r8   UDEArgsToSuper.__hash__)   s%    U>*335t{{CDDr   )r'   	r   r   r   r   r&   r4   r8   r   __classcell__r+   s   @r   r!   r!      s    E Er   r!   c                   :   ^  \ rS rSrU 4S jrS rU 4S jrSrU =r$ )UDENoArgSuper-   c                 B   > [         [        U ]  5         Xl        X l        g r$   )r%   r?   r&   deferargr'   r(   s      r   r&   UDENoArgSuper.__init__.   s    mT+-r   c                     [        XR                  5      (       d  gSnX R                  UR                  :H  -  nX R                  UR                  :H  -  nX R                  UR                  :H  -  nU$ r.   )r/   r+   r0   rB   r'   r1   s      r   r4   UDENoArgSuper.__eq__3   s]    %00		UZZ''//u||++r   c                 ~   > [        [        [        5      R                  5       U R                  U R
                  45      $ r$   )r7   r%   r?   r8   rB   r'   r9   s    r   r8   UDENoArgSuper.__hash__<   s2    U=)224dmm[[" # 	#r   )rB   r'   r;   r=   s   @r   r?   r?   -   s    
# #r   r?   c                    ^  U 4S jnU$ )Nc                 p   > U S:X  a  TeU S:X  a  [         eU S:X  a  [        R                  R                  eU $ N         
ValueErrornplinalgLinAlgError)iexcs    r   raiserraise_class.<locals>.raiserB   s8    6I!V!V))'''r   r   rT   rU   s   ` r   raise_classrX   A   s     Mr   c                    ^ ^ UU 4S jnU$ )Nc                    > U S:X  a	  T" TS5      eU S:X  a  [        TS5      eU S:X  a   [        R                  R                  TS5      eU $ rJ   rN   rS   r*   rT   s    r   rU   raise_instance.<locals>.raiserO   M    6c1+!VS!$$!V))''Q//r   r   )rT   r*   rU   s   `` r   raise_instancer^   N   s     Mr   c                    ^  U 4S jnU$ )Nc                    > U S:X  a	  T" US5      eU S:X  a  [        US5      eU S:X  a   [        R                  R                  US5      eU $ rJ   rN   r[   s     r   rU   +raise_instance_runtime_args.<locals>.raiser[   r]   r   r   rW   s   ` r   raise_instance_runtime_argsrb   Z   s     Mr   c                      e r$   r   r   r   r   reraiserd   f   s    	r   c                    ^  U 4S jnU$ )Nc                 8   > U S:X  a  [        SS5      eT" U 5      $ )NrM   bar)r   )rS   inners    r   outerouter_function.<locals>.outerk   s     6UA&&Qxr   r   )rh   ri   s   ` r   outer_functionrk   j   s     Lr   c                     U S:X  d   S5       eg )NrK   rg   r   rS   s    r   assert_usecasern   r   s    656r   c                      [        5       er$   r!   r   r   r   ude_bug_usecaserq   v   s    

r   c                     [        U 5      er$   rO   )r*   s    r   raise_runtime_valuert   z   s    
S/r   c                   "   \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S  r"S! r#S" r$S# r%S$ r&S% r'S& r(S' r)S( r*\+\,\-S) 5       5       5       r.S*r/g+),TestRaising~   c                    S n[        [        R                  " [        R                  SS5      [        R                  45      " U5      n[        R
                  " S[        R                  S9nU R                  U" US5      U" US5      5        U R                  [        5       nU" US5        S S S 5        U R                  [        WR                  5      S5        g ! , (       d  f       N4= f)Nc                      U R                   U   $ r$   )shape)arS   s     r   pyfunc5TestRaising.test_unituple_index_error.<locals>.pyfunc   s    771:r   rK   ArL   )dtyper   ztuple index out of range)r   r   Arrayint32rP   emptyassertEqualassertRaises
IndexErrorstr	exception)r)   r|   cfuncr{   cms        r   test_unituple_index_error%TestRaising.test_unituple_index_error   s    	 ekk%++q#6DFvNHHQbhh'q!fQl3z*b!QK +R\\*,FG +*s   !
C
C'c                 n   U[         [        [        [        4;   d   eU R	                  U5       nU" U6   S S S 5        U R	                  U5       nU" U6   S S S 5        U R                  WR                  R                  WR                  R                  5        [        UR                  [        [        45      (       a(  U R                  UR                  UR                  :H  5        U[        L a3   U" U6    U" U6   [#        W	W5       H  u  pU R%                  X5        M     g g ! , (       d  f       N= f! , (       d  f       N= f! [         a.    [        R                  " [        R                   " 5       6 nUSS  n	 Nf = f! [         a.    [        R                  " [        R                   " 5       6 n
U
SS  n Nf = f)N)force_pyobj_flagsno_pyobj_flagsno_pyobj_flags_w_nrtno_gil_flagsr   r   r   r0   r/   r!   r?   
assertTrue	Exception	tracebackformat_exceptionsysexc_infozipassertIn)r)   	exec_moder|   r   expected_error_classr0   pyerrjiterr	py_framesexpected_framesc_frames
got_framesexpfgotfs                 r   check_against_python TestRaising.check_against_python   sz    .1<A A 	A A 34DM 5344L 5--v/?/?/D/DE eoo'FGGOOEOOv/?/??@ &1
+t "/:>
 d)	 ?# ' 5444   1%66G	"+BC.1  +$55s||~F%bc]
+s;   DD0,E 2E< 
D-0
D>5E98E9<5F43F4c                 `   [        [        5      n[        [        R                  440 UD6" U5      nU R                  U" S5      S5        U R                  XU[        S5        U R                  XU[        S5        U R                  XU[        R                  R                  R                  S5        g )Nr   rK   rL   rM   )rX   r   r   r   r   r   r   rO   rP   rQ   rR   r)   flagsr|   r   s       r   check_raise_classTestRaising.check_raise_class   s    W%U[[N,e,V4q1%!!%C!!%
AF!!%"$))"2"2">">	Cr   c                 *    U R                  [        S9  g Nr   )r   r   r)   s    r   test_raise_class_nopython%TestRaising.test_raise_class_nopython   s    ^4r   c                 *    U R                  [        S9  g r   )r   r   r   s    r   test_raise_class_objmode$TestRaising.test_raise_class_objmode   s    %67r   c                    [         [        [        4 H  n[        US5      n[	        [
        R                  440 UD6" U5      nU R                  U" S5      S5        U R                  XXBS5        U R                  XU[        S5        U R                  XU[        R                  R                  R                  S5        M     g )Nsome messager   rK   rL   rM   )r   r!   r?   r^   r   r   r   r   r   rO   rP   rQ   rR   r)   r   clazzr|   r   s        r   check_raise_instance TestRaising.check_raise_instance   s    ~#%E#E>:F0%08EU1Xq)%%eU1E%%eUJJ%%eU&(ii&6&6&B&BAG%r   c                 *    U R                  [        S9  g r   )r   r   r   s    r   test_raise_instance_objmode'TestRaising.test_raise_instance_objmode   s    !!(9!:r   c                 *    U R                  [        S9  g r   )r   r   r   s    r   test_raise_instance_nopython(TestRaising.test_raise_instance_nopython   s    !!!7r   c                 >   [         [        [        4 H  n[        US5      n[	        U5      n[        S0 UD6" U5      n[        S0 UD6" [	        U5      5      nU R                  XXsS5        U R                  XU[        S5        U R                  XU[        S5        M     g)z4
Check exception propagation from nested functions.
r   rK   rL   rM   Nr   )	r   r!   r?   r^   rk   r   r   rO   r   )r)   r   jit_argsr   inner_pyfuncr|   inner_cfuncr   s           r   check_raise_nestedTestRaising.check_raise_nested   s     ~#%E)%@L#L1F//,7KO(ON;$?@E%%eU1E%%eUJJ%%eUJJ%r   c                 ,    U R                  [        SS9  g )NT)r   )r   r   r   s    r   test_raise_nested_objmode%TestRaising.test_raise_nested_objmode   s     1DAr   c                 ,    U R                  [        SS9  g )NT)r   )r   r   r   s    r   test_raise_nested_nopython&TestRaising.test_raise_nested_nopython   s    >r   c                    ^^^	 S m	[         n[        S0 UD6" U5      nU	4S j[        4U	4S j[        4U	4S j[        44 H0  u  mmUU4S jnU" U5      nU" U5      nU R                  XUT5        M2     g )Nc                     U er$   r   )rT   s    r   	raise_exc,TestRaising.check_reraise.<locals>.raise_exc   s    Ir   c                     > T " [         5      $ r$   )ZeroDivisionErrorr   s   r   <lambda>+TestRaising.check_reraise.<locals>.<lambda>   s    ),=">r   c                  (   > T " [        SS5      5      $ NmsgrK   rp   r   s   r   r   r      s    )N5!,D"Er   c                  (   > T " [        SS5      5      $ r   )r?   r   s   r   r   r      s    )M%,C"Dr   c                    >^  UU U4S jnU$ )Nc                  <   >  T" 5         g ! T  a
    T" 5          g f = fr$   r   )errfnops   r   impl9TestRaising.check_reraise.<locals>.gen_impl.<locals>.impl   s!     s    r   )r   r   r   r   s   ` r   gen_impl+TestRaising.check_reraise.<locals>.gen_impl   s    
 r   r   )rd   r   r   r!   r?   r   )
r)   r   r|   r   r   pybasedcbasedr   r   r   s
          @@@r   check_reraiseTestRaising.check_reraise   s|    	 % (>*,E')D&(	)GB v&Ge_F%%efcC)r   c                 *    U R                  [        S9  g r   )r   r   r   s    r   test_reraise_objmode TestRaising.test_reraise_objmode  s    !23r   c                 *    U R                  [        S9  g r   )r   r   r   s    r   test_reraise_nopython!TestRaising.test_reraise_nopython  s    0r   c                    [        U5      n[        [        R                  440 UD6" U5      nU R	                  [
        5       nU" S5        S S S 5        U R                  [        WR                  5      S5        g ! , (       d  f       N4= f)NrK   z)exceptions must derive from BaseException)	rX   r   r   r   r   	TypeErrorr   r   r   )r)   clsr   r|   r   r   s         r   check_raise_invalid_class%TestRaising.check_raise_invalid_class
  sh    S!U[[N,e,V4y)R!H *R\\*D	F *)s   	A99
Bc                 \    U R                  [        [        S9  U R                  S[        S9  g )Nr   rK   )r   intr   r   s    r    test_raise_invalid_class_objmode,TestRaising.test_raise_invalid_class_objmode  s*    &&s2C&D&&q0A&Br   c                    SnU R                  [        R                  5       nU R                  [        [
        S9  S S S 5        U R                  U[        WR                  5      5        U R                  [        R                  5       nU R                  S[
        S9  S S S 5        U R                  U[        UR                  5      5        g ! , (       d  f       N= f! , (       d  f       NE= f)Nz8Encountered unsupported constant type used for exceptionr   rK   )	r   r   UnsupportedErrorr   r   r   r   r   r   )r)   r   raisess      r   !test_raise_invalid_class_nopython-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                     [         S 5       nSnU R                  [        R                  5       nU" 5         S S S 5        U R	                  U[        WR                  5      5        g ! , (       d  f       N4= f)Nc                      Se)Nillegalr   r   r   r   foo8TestRaising.test_raise_bare_string_nopython.<locals>.foo   s    Or   zCDirectly raising a string constant as an exception is not supported)r   r   r   r   r   r   r   )r)   r   r   r   s       r   test_raise_bare_string_nopython+TestRaising.test_raise_bare_string_nopython  s]    		 
	v6676E 8c3v//01 87s   A$$
A2c                     [         n[        [        R                  440 UD6" U5      nU" S5        U R	                  XU[
        S5        g )NrK   rL   )rn   r   r   r   r   AssertionErrorr   s       r   check_assert_statement"TestRaising.check_assert_statement)  s<    U[[N,e,V4a!!%Jr   c                 *    U R                  [        S9  g r   )r  r   r   s    r   test_assert_statement_objmode)TestRaising.test_assert_statement_objmode/  s    ##*;#<r   c                 *    U R                  [        S9  g r   )r  r   r   s    r   test_assert_statement_nopython*TestRaising.test_assert_statement_nopython2  s    ##.#9r   c                 p   SnSnSnSnU[         4U[        4U[        4/n[        R                  S:  a.  UR                  U[         45        UR                  U[         45        U HO  u  px0 n	[        USU0U	5        U	S   n
[        [        R                  440 UD6" U
5      nU R                  XXS5        MQ     g )	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)rM      rT   frK   )r  r!   r?   r   	PYVERSIONappendexecr   r   r   r   )r)   r   simple_raiseassert_raisepy312_pep695_raisepy312_pep695_raise_2
test_casesf_textrT   locr|   r   s               r   check_raise_from_exec_string(TestRaising.check_raise_from_exec_string5  s    :3IM>*>*=)


 ??g%1>BC3^DE%KFC%s+XF0%08E%%eUC &r   c                 *    U R                  [        S9  g r   )r  r   r   s    r   $test_assert_from_exec_string_objmode0TestRaising.test_assert_from_exec_string_objmodeK  s    ))0A)Br   c                 *    U R                  [        S9  g r   )r  r   r   s    r   %test_assert_from_exec_string_nopython1TestRaising.test_assert_from_exec_string_nopythonN  s    )))?r   c                 `    [         n[        S0 UD6" U5      nU R                  XU[        5        g )Nr   )rq   r   r   r   r   s       r   check_user_code_error_traceback+TestRaising.check_user_code_error_tracebackQ  s-     ! % (!!%	Br   c                 *    U R                  [        S9  g r   )r"  r   r   s    r   &test_user_code_error_traceback_objmode2TestRaising.test_user_code_error_traceback_objmodeY  s    ,,3D,Er   c                 *    U R                  [        S9  g r   )r"  r   r   s    r   'test_user_code_error_traceback_nopython3TestRaising.test_user_code_error_traceback_nopython\  s    ,,>,Br   c                     [         n[        [        R                  440 UD6" U5      nU R	                  XU[
        S5        g )Nhello)rt   r   r   stringr   rO   r   s       r   check_raise_runtime_value%TestRaising.check_raise_runtime_value_  s5    $U\\O-u-f5!!%
GLr   c                 *    U R                  [        S9  g r   )r-  r   r   s    r    test_raise_runtime_value_objmode,TestRaising.test_raise_runtime_value_objmoded  s    &&->&?r   c                 *    U R                  [        S9  g r   )r-  r   r   s    r   !test_raise_runtime_value_nopython-TestRaising.test_raise_runtime_value_nopythong  s    &&-A&Br   c                 *    U R                  [        S9  g r   )r-  r   r   s    r   test_raise_runtime_value_nogil*TestRaising.test_raise_runtime_value_nogilj  s    &&\&:r   c           	         [         [        [        4 H  n[        U5      n[	        [
        R                  [
        R                  440 UD6" U5      nU R                  U" SS5      S5        U R                  XXBSS5        U R                  XU[        SS5        U R                  XU[        R                  R                  R                  SS5        M     g )	Nr   testrK   r+  rL   worldrM   rQ   )r   r!   r?   rb   r   r   r   r,  r   r   rO   rP   rQ   rR   r   s        r   &check_raise_instance_with_runtime_args2TestRaising.check_raise_instance_with_runtime_argsm  s    ~#%E07Fell3=u=fEEU1f-q1%%eU1gN%%eUJ&-/%%eU&(ii&6&6&B&BAxQ%r   c                 *    U R                  [        S9  g r   )r;  r   r   s    r   -test_raise_instance_with_runtime_args_objmode9TestRaising.test_raise_instance_with_runtime_args_objmodez  s    33:K3Lr   c                 *    U R                  [        S9  g r   )r;  r   r   s    r   .test_raise_instance_with_runtime_args_nopython:TestRaising.test_raise_instance_with_runtime_args_nopython}  s    33:N3Or   c                 *    U R                  [        S9  g r   )r;  r   r   s    r   +test_raise_instance_with_runtime_args_nogil7TestRaising.test_raise_instance_with_runtime_args_nogil  s    33,3Gr   c                     S nS nS nUS4US4U[         R                  44/nU HA  u  pVSnU R                  [        R                  U5         [        U5      " U5        S S S 5        MC     g ! , (       d  f       MU  = f)Nc                  F    [        S[        R                  " S5      S.5      e)NrK      r{   b)rO   rP   onesr   r   r   raise_literal_dictCTestRaising.test_dynamic_raise_bad_args.<locals>.raise_literal_dict  s    12771:677r   c                  *    [        [        S5      5      e)NrM   )rO   ranger   r   r   raise_range<TestRaising.test_dynamic_raise_bad_args.<locals>.raise_range  s    U1X&&r   c                 ,    [        U R                  5      er$   )rO   bit_generator)rngs    r   	raise_rng: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)   rL  rP  rU  funcsr|   argtypesr   s           r   test_dynamic_raise_bad_args'TestRaising.test_dynamic_raise_bad_args  s    	8	'	0  $"()
 !&FCC''(:(:C@Xv& A@ !&@@s   A,,
A;	c                     [         S 5       nSnU R                  [        U5         U" 5         S S S 5        g ! , (       d  f       g = f)Nc                      [        SSS.5      e)NrK   rM   rI  rs   r   r   r   raise_literal_dict2@TestRaising.test_dynamic_raise_dict.<locals>.raise_literal_dict2  s    11-..r   z{a: 1, b: 3})r   rX  rO   )r)   r`  r   s      r   test_dynamic_raise_dict#TestRaising.test_dynamic_raise_dict  s=    		/ 
	/ ##J4! 544s	   6
Ac                     [        SS9S 5       nSnU R                  [        R                  U5         U" S5        S S S 5        g ! , (       d  f       g = f)NF)r   c                     [        U 5      er$   rs   rm   s    r   raise_with_no_nrt7TestRaising.test_disable_nrt.<locals>.raise_with_no_nrt      Q-r   zNRT required but not enabled{   )r   rX  r   NumbaRuntimeError)r)   rf  r   s      r   test_disable_nrtTestRaising.test_disable_nrt  sK    	5		  
	  -##F$<$<cBc" CBBs   	A
Ac                    ^ [         S 5       m[         U4S j5       nU R                  UR                  S5      U" S5      5        g )Nc                     [        U 5      er$   rs   r{   s    r   raise_*TestRaising.test_try_raise.<locals>.raise_  rh  r   c                 H   >  T" U 5        U S-   $ ! [          a     U S-   $ f = f)NrK   )r   r{   rp  s    r   	try_raise-TestRaising.test_try_raise.<locals>.try_raise  s7    q	 q5L  q5Ls    
!!rM   )r   r   py_func)r)   rt  rp  s     @r   test_try_raiseTestRaising.test_try_raise  sJ    		  
	  
	 
	 	**1-y|<r   c           
      t  ^ [         S 5       m[         U4S j5       nSSS[        R                  " S5      SS/S[        SS/5      /nTU4 HY  nU HP  nU R	                  [
        5       nU" U5        S S S 5        U R                  U4WR                  R                  5        MR     M[     g ! , (       d  f       N>= f)	Nc                     [        U 5      er$   rs   ro  s    r   rp  .TestRaising.test_dynamic_raise.<locals>.raise_  rh  r   c                 J   >  T" U 5        g ! [          a    [        U 5      ef = fr$   )r   rO   rs  s    r   
try_raise_2TestRaising.test_dynamic_raise.<locals>.try_raise_  s(    $q	 $ m#$s    "rK   g?r+  rM   rL   )rK   rL   )	r   rP   rK  setr   rO   r   r   r0   )r)   r}  r0   r   r*   erp  s         @r   test_dynamic_raiseTestRaising.test_dynamic_raise  s    
 
	  
	  
	$ 
	$ GGAJFAK
 :&B&&z2asG 3  #)9)9:  '22s   (	B))
B7r   N)0r   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-  r0  r3  r6  r;  r>  rA  rD  r\  rb  rk  rw  r	   r
   r   r  r   r   r   r   rv   rv   ~   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   rv   __main__)%numpyrP   r   r   numbar   r   
numba.corer   r   r   numba.tests.supportr   r	   r
   r   unittestr   r   r   r   r   r   r   r!   r?   rX   r^   rb   rd   rk   rn   rq   rt   rv   r   mainr   r   r   <module>r     s     
   + +# #  "'D9 "E2$($7  4>	i 		 	EY E"#I #(
		
Y;( Y;x
 zMMO r   