o
    i>                     @   s8  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	 d dl
mZmZ d dlmZmZ d dlZe Zde_e Ze Zde_e Zde_de_G dd deZG d	d
 d
eZG dd deZG dd deZdd Zdd Zdd Zdd Z dd Z!dd Z"dd Z#dd Z$G dd  d eZ%e&d!kre'  dS dS )"    N)compile_isolatedFlags)jitnjit)typeserrors)TestCaseexpected_failure_py311Tc                   @      e Zd ZdS )MyErrorN__name__
__module____qualname__ r   r   j/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/numba/tests/test_exceptions.pyr          r   c                   @   r
   )
OtherErrorNr   r   r   r   r   r      r   r   c                       0   e Zd Z fddZdd Z fddZ  ZS )UDEArgsToSuperc                    s   t t| | || _d S N)superr   __init__value0selfargr   	__class__r   r   r   !   s   
zUDEArgsToSuper.__init__c                 C   s8   t || jsdS d}|| j|jkO }|| j|jkO }|S NFT)
isinstancer   argsr   r   otherZsamer   r   r   __eq__%   s   zUDEArgsToSuper.__eq__c                    s   t tt | jfS r   )hashr   r   __hash__r   r   r   r   r   r&   -   s   zUDEArgsToSuper.__hash__r   r   r   r   r$   r&   __classcell__r   r   r   r   r       s    r   c                       r   )UDENoArgSuperc                    s   t t|   || _|| _d S r   )r   r*   r   deferargr   r   r   r   r   r   2   s   
zUDENoArgSuper.__init__c                 C   sH   t || jsdS d}|| j|jkO }|| j|jkO }|| j|jkO }|S r   )r    r   r!   r+   r   r"   r   r   r   r$   7   s   zUDENoArgSuper.__eq__c                    s   t tt | j| jfS r   )r%   r   r*   r&   r+   r   r'   r   r   r   r&   @   s   zUDENoArgSuper.__hash__r(   r   r   r   r   r*   1   s    	r*   c                        fdd}|S )Nc                    s,   | dkr | dkrt | dkrtjj| S N         
ValueErrornplinalgLinAlgErroriexcr   r   raiserF   s   zraise_class.<locals>.raiserr   r9   r:   r   r8   r   raise_classE   s   	r<   c                    s    fdd}|S )Nc                    s>   | dkr	 d| dkrt  d| dkrtj d| S r-   r1   r6   r   r9   r   r   r:   S      

zraise_instance.<locals>.raiserr   )r9   r   r:   r   r=   r   raise_instanceR   s   r?   c                    r,   )Nc                    s>   | dkr	 |d| dkrt |d| dkrtj|d| S r-   r1   )r7   r   r8   r   r   r:   _   r>   z+raise_instance_runtime_args.<locals>.raiserr   r;   r   r8   r   raise_instance_runtime_args^   s   r@   c                    C   s    r   r   r   r   r   r   reraisej   s   rA   c                    r,   )Nc                    s   | dkr	t dd | S )Nr0   bar)r   r6   innerr   r   outero   s   
zouter_function.<locals>.outerr   )rD   rE   r   rC   r   outer_functionn   s   rF   c                 C   s   | dksJ dd S )Nr.   rB   r   r6   r   r   r   assert_usecasev      rG   c                   C   s   t  r   r   r   r   r   r   ude_bug_usecasez   s   rJ   c                 C      t | r   r2   )r   r   r   r   raise_runtime_value~   s   rM   c                   @   sP  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Z d=d> Z!d?d@ Z"dAdB Z#dCdD Z$dEdF Z%dGdH Z&dIdJ Z'dKdL Z(dMdN Z)e*dOdP Z+dQS )RTestRaisingc                 C   s   dd }t |ttjddtjf}|j}tjdtjd}| ||d||d | t	}||d W d    n1 s>w   Y  | t
|jd d S )	Nc                 S   s
   | j | S r   )shape)ar7   r   r   r   pyfunc      
z5TestRaising.test_unituple_index_error.<locals>.pyfuncr.   Ar/   )Zdtyper   ztuple index out of range)r   r   ZArrayint32entry_pointr3   emptyassertEqualassertRaises
IndexErrorstr	exception)r   rQ   crescfuncrP   cmr   r   r   test_unituple_index_error   s   z%TestRaising.test_unituple_index_errorc                 G   sR  |t tttfv s
J | |}||  W d    n1 sw   Y  | |}||  W d    n1 s7w   Y  | |jj|jj t|jt	t
frW| |j|jk |tu rz||  W n tyw   tjt  }|dd  }	Y nw z||  W n ty   tjt  }
|
dd  }Y nw t|	|D ]\}}| || qd S d S )N)force_pyobj_flagsno_pyobj_flagsno_pyobj_flags_w_nrtno_gil_flagsrX   rW   r[   r!   r    r   r*   
assertTrue	Exception	tracebackformat_exceptionsysexc_infozipassertIn)r   Z	exec_moderQ   r]   Zexpected_error_classr!   ZpyerrZjiterrZ	py_framesZexpected_framesZc_framesZ
got_framesZexpfZgotfr   r   r   check_against_python   s:   


z TestRaising.check_against_pythonc                 C   sp   t t}t|tjf|d}|j}| |dd | |||td | |||td | |||t	j
j
jd d S )Nflagsr   r.   r/   r0   )r<   r   r   r   rT   rU   rW   rm   r2   r3   r4   r5   r   ro   rQ   r\   r]   r   r   r   check_raise_class   s   

zTestRaising.check_raise_classc                 C      | j td d S Nrn   )rq   rb   r'   r   r   r   test_raise_class_nopython      z%TestRaising.test_raise_class_nopythonc                 C   rr   rs   )rq   ra   r'   r   r   r   test_raise_class_objmode   ru   z$TestRaising.test_raise_class_objmodec                 C   s   t ttfD ]9}t|d}t|tjf|d}|j}| |dd | 	||||d | 	|||t
d | 	|||tjjjd qd S )Nsome messagern   r   r.   r/   r0   )r   r   r*   r?   r   r   rT   rU   rW   rm   r2   r3   r4   r5   r   ro   clazzrQ   r\   r]   r   r   r   check_raise_instance   s   


z TestRaising.check_raise_instancec                 C   rr   rs   )rz   ra   r'   r   r   r   test_raise_instance_objmode   ru   z'TestRaising.test_raise_instance_objmodec                 C   rr   rs   )rz   rb   r'   r   r   r   test_raise_instance_nopython   ru   z(TestRaising.test_raise_instance_nopythonc                 K   s   t ttfD ]:}t|d}t|}tdi ||}tdi |t|}| ||||d | |||td | |||td qdS )zD
        Check exception propagation from nested functions.
        rw   r.   r/   r0   Nr   )	r   r   r*   r?   rF   r   rm   r2   r   )r   ro   Zjit_argsry   Zinner_pyfuncrQ   Zinner_cfuncr]   r   r   r   check_raise_nested   s   
zTestRaising.check_raise_nestedc                 C      | j tdd d S )NT)Zforceobj)r}   ra   r'   r   r   r   test_raise_nested_objmode      z%TestRaising.test_raise_nested_objmodec                 C   r~   )NT)Znopython)r}   rb   r'   r   r   r   test_raise_nested_nopython   r   z&TestRaising.test_raise_nested_nopythonc                    s   dd t }t|d|d}|j}fddtffddtffddtffD ]\  fd	d
}||}||}| |||  q'd S )Nc                 S   s   | r   r   r8   r   r   r   	raise_exc   s   z,TestRaising.check_reraise.<locals>.raise_excr   rn   c                      s    t S r   )ZeroDivisionErrorr   r   r   r   <lambda>   s    z+TestRaising.check_reraise.<locals>.<lambda>c                          t ddS Nmsgr.   rI   r   r   r   r   r          c                      r   r   )r*   r   r   r   r   r      r   c                    s    fdd}|S )Nc                      s(   z  W d S   y     Y d S w r   r   r   )errfnopr   r   impl  s
   z9TestRaising.check_reraise.<locals>.gen_impl.<locals>.implr   )r   r   )r   r   )r   r   gen_impl  s   z+TestRaising.check_reraise.<locals>.gen_impl)rA   r   rU   r   r   r*   rm   )r   ro   rQ   r\   r]   r   ZpybasedZcbasedr   )r   r   r   r   check_reraise   s&   


zTestRaising.check_reraisec                 C   rr   rs   )r   ra   r'   r   r   r   test_reraise_objmode  ru   z TestRaising.test_reraise_objmodec                 C   rr   rs   )r   rb   r'   r   r   r   test_reraise_nopython  ru   z!TestRaising.test_reraise_nopythonc                 C   sh   t |}t|tjf|d}|j}| t}|d W d    n1 s$w   Y  | t|j	d d S )Nrn   r.   z)exceptions must derive from BaseException)
r<   r   r   rT   rU   rX   	TypeErrorrW   rZ   r[   )r   clsro   rQ   r\   r]   r^   r   r   r   check_raise_invalid_class  s   
z%TestRaising.check_raise_invalid_classc                 C   s    | j ttd | j dtd d S )Nrn   r.   )r   intra   r'   r   r   r    test_raise_invalid_class_objmode  s   z,TestRaising.test_raise_invalid_class_objmodec                 C   s   d}|  tj}| jttd W d    n1 sw   Y  | |t|j |  tj}| jdtd W d    n1 s@w   Y  | |t|j d S )Nz8Encountered unsupported constant type used for exceptionrn   r.   )	rX   r   UnsupportedErrorr   r   rb   rl   rZ   r[   )r   r   raisesr   r   r   !test_raise_invalid_class_nopython   s   z-TestRaising.test_raise_invalid_class_nopythonc                 C   sX   t dd }d}| tj}|  W d    n1 sw   Y  | |t|j d S )Nc                   S   s   d)Nillegalr   r   r   r   r   foo*  s   z8TestRaising.test_raise_bare_string_nopython.<locals>.foozCDirectly raising a string constant as an exception is not supported)r   rX   r   r   rl   rZ   r[   )r   r   r   r   r   r   r   test_raise_bare_string_nopython)  s   
z+TestRaising.test_raise_bare_string_nopythonc                 C   s:   t }t|tjf|d}|j}|d | |||td d S )Nrn   r.   r/   )rG   r   r   rT   rU   rm   AssertionErrorrp   r   r   r   check_assert_statement3  s
   z"TestRaising.check_assert_statementc                 C   rr   rs   )r   ra   r'   r   r   r   test_assert_statement_objmode:  ru   z)TestRaising.test_assert_statement_objmodec                 C   rr   rs   )r   rb   r'   r   r   r   test_assert_statement_nopython=  ru   z*TestRaising.test_assert_statement_nopythonc           
      C   sr   d}d}|t f|tf|tffD ]'\}}i }t|d|i| |d }t|tjf|d}|j}	| |||	|d qd S )Nz def f(a):
  raise exc('msg', 10)zdef f(a):
  assert a != 1r9   frn   r.   )	r   r   r*   execr   r   rT   rU   rm   )
r   ro   Zsimple_raiseZassert_raiseZf_textr9   locrQ   r\   r]   r   r   r   check_raise_from_exec_string@  s   z(TestRaising.check_raise_from_exec_stringc                 C   rr   rs   )r   ra   r'   r   r   r   $test_assert_from_exec_string_objmodeN  ru   z0TestRaising.test_assert_from_exec_string_objmodec                 C   rr   rs   )r   rb   r'   r   r   r   %test_assert_from_exec_string_nopythonQ  ru   z1TestRaising.test_assert_from_exec_string_nopythonc                 C   s,   t }t|d|d}|j}| |||t d S )Nr   rn   )rJ   r   rU   rm   r   rp   r   r   r   check_user_code_error_tracebackT  s   z+TestRaising.check_user_code_error_tracebackc                 C   rr   rs   )r   ra   r'   r   r   r   &test_user_code_error_traceback_objmode]  ru   z2TestRaising.test_user_code_error_traceback_objmodec                 C   rr   rs   )r   rb   r'   r   r   r   'test_user_code_error_traceback_nopython`  ru   z3TestRaising.test_user_code_error_traceback_nopythonc                 C   s2   t }t|tjf|d}|j}| |||td d S )Nrn   hello)rM   r   r   stringrU   rm   r2   rp   r   r   r   check_raise_runtime_valuec  s   z%TestRaising.check_raise_runtime_valuec                 C   rr   rs   )r   ra   r'   r   r   r    test_raise_runtime_value_objmodei  ru   z,TestRaising.test_raise_runtime_value_objmodec                 C   rr   rs   )r   rc   r'   r   r   r   !test_raise_runtime_value_nopythonl  ru   z-TestRaising.test_raise_runtime_value_nopythonc                 C   rr   rs   )r   rd   r'   r   r   r   test_raise_runtime_value_nogilo  ru   z*TestRaising.test_raise_runtime_value_nogilc              	   C   s   t ttfD ]>}t|}t|tjtjf|d}|j}| 	|ddd | 
||||dd | 
|||tdd | 
|||tjjjdd	 qd S )
Nrn   r   testr.   r   r/   Zworldr0   r4   )r   r   r*   r@   r   r   rT   r   rU   rW   rm   r2   r3   r4   r5   rx   r   r   r   &check_raise_instance_with_runtime_argsr  s"   
z2TestRaising.check_raise_instance_with_runtime_argsc                 C   rr   rs   )r   ra   r'   r   r   r   -test_raise_instance_with_runtime_args_objmode  ru   z9TestRaising.test_raise_instance_with_runtime_args_objmodec                 C   rr   rs   )r   rc   r'   r   r   r   .test_raise_instance_with_runtime_args_nopython  ru   z:TestRaising.test_raise_instance_with_runtime_args_nopythonc                 C   rr   rs   )r   rd   r'   r   r   r   +test_raise_instance_with_runtime_args_nogil  ru   z7TestRaising.test_raise_instance_with_runtime_args_nogilc              	   C   s   dd }dd }dd }|df|df|t jffg}|D ]"\}}d}| tj| t|| W d    n1 s8w   Y  qd S )	Nc                   S   s   t dtdd)Nr.      rP   b)r2   r3   onesr   r   r   r   raise_literal_dict  rH   zCTestRaising.test_dynamic_raise_bad_args.<locals>.raise_literal_dictc                   S   s   t td)Nr0   )r2   ranger   r   r   r   raise_range  s   z<TestRaising.test_dynamic_raise_bad_args.<locals>.raise_rangec                 S   s
   t | jr   )r2   Zbit_generator)rngr   r   r   	raise_rng  rR   z:TestRaising.test_dynamic_raise_bad_args.<locals>.raise_rngr   z/.*Cannot convert native .* to a Python object.*)r   Znpy_rngassertRaisesRegexr   ZTypingErrorr   )r   r   r   r   funcsrQ   argtypesr   r   r   r   test_dynamic_raise_bad_args  s   
z'TestRaising.test_dynamic_raise_bad_argsc                 C   sH   t dd }d}| t| |  W d    d S 1 sw   Y  d S )Nc                   S   s   t ddd)Nr.   r0   r   rL   r   r   r   r   raise_literal_dict2  s   z@TestRaising.test_dynamic_raise_dict.<locals>.raise_literal_dict2z{a: 1, b: 3})r   r   r2   )r   r   r   r   r   r   test_dynamic_raise_dict  s   
"z#TestRaising.test_dynamic_raise_dictc                 C   sR   t dddd }d}| tj| |d W d    d S 1 s"w   Y  d S )NF)Z_nrtc                 S   rK   r   rL   r6   r   r   r   raise_with_no_nrt     z7TestRaising.test_disable_nrt.<locals>.raise_with_no_nrtzNRT required but not enabled{   )r   r   r   ZNumbaRuntimeError)r   r   r   r   r   r   test_disable_nrt  s   

"zTestRaising.test_disable_nrtc                    s6   t dd  t  fdd}| |d|d d S )Nc                 S   rK   r   rL   rP   r   r   r   raise_  r   z*TestRaising.test_try_raise.<locals>.raise_c                    s,   z	 |  W | d S  t y   Y | d S w )Nr.   )rf   r   r   r   r   	try_raise  s   
z-TestRaising.test_try_raise.<locals>.try_raiser0   )r   rW   Zpy_func)r   r   r   r   r   test_try_raise  s
   
zTestRaising.test_try_raisec              
      s   t dd  t  fdd}dddtddd	gd
tdd	gg} |fD ])}|D ]$}| t}|| W d    n1 s>w   Y  | |f|jj q(q$d S )Nc                 S   rK   r   rL   r   r   r   r   r     r   z.TestRaising.test_dynamic_raise.<locals>.raise_c                    s&   z |  W d S  t y   t| w r   )rf   r2   r   r   r   r   
try_raise_  s
   z2TestRaising.test_dynamic_raise.<locals>.try_raise_r.   g?r   r0   r/   )r.   r/   )	r   r3   r   setrX   r2   ZassertEqualsr[   r!   )r   r   r!   r   r   er   r   r   test_dynamic_raise  s(   

	
zTestRaising.test_dynamic_raiseN),r   r   r   r_   rm   rq   rt   rv   rz   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   r   r   rN      sT    *
		
			rN   __main__)(numpyr3   ri   rg   Znumba.core.compilerr   r   Znumbar   r   Z
numba.corer   r   Znumba.tests.supportr   r	   Zunittestra   Zforce_pyobjectrb   rc   Znrtrd   Zrelease_gilrf   r   r   r   r*   r<   r?   r@   rA   rF   rG   rJ   rM   rN   r   mainr   r   r   r   <module>   sD      _