a
    
d\                     @   s   d dl Z d dlZd dlmZ d dlZd dlmZmZm	Z	m
Z
 d dlmZ d dlmZmZ d dlmZmZmZmZ d dlmZmZmZmZmZmZmZ G dd	 d	eZG d
d deZG dd deZ G dd deZ!G dd deeZ"G dd deZ#eG dd deZ$e%dkre&  dS )    N)product)njittypedobjmodeprange)	PYVERSION)ir_utilsir)UnsupportedErrorCompilerErrorNumbaPerformanceWarningTypingError)TestCaseunittestcaptured_stdoutMemoryLeakMixinskip_parfors_unsupportedskip_unless_scipyexpected_failure_py311c                   @   s   e Zd ZdS )MyErrorN)__name__
__module____qualname__ r   r   d/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/numba/tests/test_try_except.pyr      s   r   c                   @   s   e Zd 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edd Zdd Zdd Zdd Zd S )!TestTryBareExceptzhTest the following pattern:

        try:
            <body>
        except:
            <handling>
    c                    s@   t dd  t  fdd}| |dd | |dd d S )	Nc                 S   s   | rt d S Nr   xr   r   r   inner    s    z5TestTryBareExcept.test_try_inner_raise.<locals>.innerc                    s"   z |  W dS    Y dS 0 d S )N
not raisedcaughtr   r   r    r   r   udt%   s
    z3TestTryBareExcept.test_try_inner_raise.<locals>.udtFr!   Tr"   r   assertEqualselfr$   r   r#   r   test_try_inner_raise   s    
z&TestTryBareExcept.test_try_inner_raisec                    s   t dd  t  fdd}| t}|d W d    n1 sD0    Y  | t|jd | |dd | |d	d
 d S )Nc                 S   s&   | dkrt dn| dkr"t dd S )N   one   twor   r   r   r   r   r    1   s    
z5TestTryBareExcept.test_try_state_reset.<locals>.innerc                    s6   z |  d}W n   d}Y n0 | dkr2 d |S )Nr!   r"   r   r,   r   )r   resr#   r   r   r$   8   s    
z3TestTryBareExcept.test_try_state_reset.<locals>.udtr   r-   r*   r"   r!   )r   assertRaisesr   r&   str	exceptionr(   r$   raisesr   r#   r   test_try_state_reset0   s    

&z&TestTryBareExcept.test_try_state_resetc                 C   s   t dd }|S )Nc                 S   sZ   | dkrt d tdn<| dkr4t d tdn"| dkrNt d td	nt d
 d S )Nr*   call_oner+   r,   call_twor-      
call_threethree
call_otherprintr   r   r   r   r   r    J   s    


z-TestTryBareExcept._multi_inner.<locals>.inner)r   )r(   r    r   r   r   _multi_innerI   s    
zTestTryBareExcept._multi_innerc              	      s8  |    t fdd}| tB}t }|ddd W d    n1 sL0    Y  W d    n1 sj0    Y  | |  g d | t|j	d t }|ddd W d    n1 s0    Y  | |  g d	 t }|ddd W d    n1 s0    Y  | |  g d
 d S )Nc                    sp   zFzt d  |  t d W n$   t d  | t d Y n0 W n$   t d  | t d Y n0 d S )NABCDEF)r=   )r   yzr#   r   r   r$   ]   s    z.TestTryBareExcept.test_nested_try.<locals>.udtr*   r,   r8   )r?   r6   rA   r7   rC   r9   r:   r   )r?   r6   rA   r;   rB   )r?   r6   rA   r7   rC   r;   rD   )
r>   r   r0   r   r   r&   getvaluesplitr1   r2   )r(   r$   r4   stdoutr   r#   r   test_nested_tryZ   s.    H
*
,
z!TestTryBareExcept.test_nested_tryc                    s  |    t fdd}t }|dd}W d    n1 s>0    Y  | |  g d | |d t }|dd}W d    n1 s0    Y  | |  g d | |d t }|dd}W d    n1 s0    Y  | |  g d	 | |d
 d S )Nc                    sL   z2t d t|D ]}t | || kr | qW n   t d Y n0 |S )Nr?   r@   )r=   range)r   nir#   r   r   r$      s    z/TestTryBareExcept.test_loop_in_try.<locals>.udtr8      )r?   0123r9   r@   r*   )r?   rO   rP   r6   r@   r   )r?   rO   r;   rP   rQ   r,   )r>   r   r   r&   rG   rH   r(   r$   rI   r.   r   r#   r   test_loop_in_try   s0    (
(
(
z"TestTryBareExcept.test_loop_in_tryc                 C   s   t dd }t }|d}W d    n1 s00    Y  | |  ddg | |d t }|d}W d    n1 s0    Y  | |  ddg | |d	 d S )
Nc                 S   s<   z t d | rtdt d W n   t d Y dS 0 dS )Nr?   Zmy_errorr@   rA   A  {   r<   r   r   r   r   r$      s    z0TestTryBareExcept.test_raise_in_try.<locals>.udtTr?   rA   rU   Fr@   rV   r   r   r&   rG   rH   rS   r   r   r   test_raise_in_try   s     
&
&
z#TestTryBareExcept.test_raise_in_tryc                    sb   t  fdd t } d}W d    n1 s40    Y  | | | |  dg d S )Nc                    sD   | dkr0z | d  W n   t d Y dS 0 | dkr@tdd S )Nr   r*   CAUGHT   r2   )r=   
ValueErrorr   foor   r   r]      s    z-TestTryBareExcept.test_recursion.<locals>.foo
   rY   )r   r   assertIsNoner&   rG   rH   )r(   rI   r.   r   r\   r   test_recursion   s    
&
z TestTryBareExcept.test_recursionc                    sn   t dd  t  fdd}t }|d}W d    n1 s@0    Y  | |d | |  g  d S )Nc                 s   s:   | dkr6zdV  t dW n ty4   td Y n0 d S )Nr      r2   rY   )r[   	Exceptionr=   r   r   r   r   r]      s    z)TestTryBareExcept.test_yield.<locals>.fooc                    s   t  | S r   )nextrF   r\   r   r   bar   s    z)TestTryBareExcept.test_yield.<locals>.barr^   ra   rW   )r(   re   rI   r.   r   r\   r   
test_yield   s    
&zTestTryBareExcept.test_yieldc                 C   sT   t dd }t }|d W d    n1 s00    Y  | |  dg d S )Nc                 S   s   dd }|  d S )Nc                   S   s(   zt dW n   td Y dS 0 d S )Nr2   rY   rZ   r[   r=   r   r   r   r   re      s
    z9TestTryBareExcept.test_closure2.<locals>.foo.<locals>.barr   r   re   r   r   r   r]      s    z,TestTryBareExcept.test_closure2.<locals>.foor^   rY   rW   r(   r]   rI   r   r   r   test_closure2   s
    
	&zTestTryBareExcept.test_closure2c                 C   sh   t dd }t }|d}W d    n1 s00    Y  | |g d | |  dgd  d S )Nc                 S   s    dd }dd t |g dD S )Nc                 S   s*   zt dW n   td |  Y S 0 d S )Nr2   rY   rg   rd   r   r   r   re     s
    z9TestTryBareExcept.test_closure3.<locals>.foo.<locals>.barc                 S   s   g | ]}|qS r   r   .0r   r   r   r   
<listcomp>      z@TestTryBareExcept.test_closure3.<locals>.foo.<locals>.<listcomp>r*   r,   r8   )maprh   r   r   r   r]   	  s    z,TestTryBareExcept.test_closure3.<locals>.foor^   ro   rY   r8   rW   r(   r]   rI   r.   r   r   r   test_closure3  s    
	&zTestTryBareExcept.test_closure3c                 C   s   t dd }t }|d}W d    n1 s00    Y  | |  d | | t }|d}W d    n1 s|0    Y  | | d | |g d d S )Nc                 S   s@   dd }zdd t |ddd| gD W S    td Y n0 d S )	Nc                 S   s   | dk rt d| S )Nr   r2   r[   rd   r   r   r   re     s    z9TestTryBareExcept.test_closure4.<locals>.foo.<locals>.barc                 S   s   g | ]}|qS r   r   rk   r   r   r   rm   "  rn   z@TestTryBareExcept.test_closure4.<locals>.foo.<locals>.<listcomp>r*   r,   r8   rY   )rp   r=   rh   r   r   r   r]     s
    z,TestTryBareExcept.test_closure4.<locals>.foor/   rY       )r*   r,   r8   rt   )r   r   r&   rG   stripr_   rq   r   r   r   test_closure4  s    
&
&zTestTryBareExcept.test_closure4c                 C   sR   t dd }t }|  W d    n1 s.0    Y  | |  dg d S )Nc                  S   s8   t d} zt j| }W n   td | Y S 0 d S )N)rt   rt   rY   )npzerosZlinalgZcholeskyr=   )aZcholr   r   r   r]   3  s    
z0TestTryBareExcept.test_real_problem.<locals>.foorY   rW   ri   r   r   r   test_real_problem1  s
    
$z#TestTryBareExcept.test_real_problemc                 C   sl   t dd }t }|d W d    n1 s00    Y  | |  dgd dd tddD   d S )	Nc                 S   s   t | D ]*}z|dkrtW q   td Y q0 qzLz.z|dkrFtW n   td tY n0 W n   td tY n0 W n   td Y n0 d S )NrN   rY   ZCAUGHT1ZCAUGHT2ZCAUGHT3)rK   r[   r=   )rL   rM   r   r   r   r]   B  s&    z,TestTryBareExcept.test_for_loop.<locals>.foor^   rY   rt   c                 S   s   g | ]}d | qS )zCAUGHT%sr   )rl   rM   r   r   r   rm   _  rn   z3TestTryBareExcept.test_for_loop.<locals>.<listcomp>r*   )r   r   r&   rG   rH   rK   ri   r   r   r   test_for_loopA  s    
&
zTestTryBareExcept.test_for_loopc                 C   s$   t dd }|d}| |d d S )Nc                 S   s   zW n   Y n0 | S r   r   r   r   r   r   r]   c  s
    z,TestTryBareExcept.test_try_pass.<locals>.foorV   r%   )r(   r]   r.   r   r   r   test_try_passb  s    
zTestTryBareExcept.test_try_passc                 C   sR   t dd }| t}|  W d    n1 s20    Y  | dt|j d S )Nc                   S   s    zt dW n    Y n0 d S NERRORrs   r   r   r   r   r$   o  s    z6TestTryBareExcept.test_try_except_reraise.<locals>.udt4The re-raising of an exception is not yet supported.r   r0   r
   assertInr1   r2   r3   r   r   r   test_try_except_reraisen  s    
$z)TestTryBareExcept.test_try_except_reraiseN)r   r   r   __doc__r)   r5   r>   rJ   rT   rX   r`   rf   rj   rr   rw   r   r{   r|   r}   r   r   r   r   r   r      s"   -*!
!r   c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestTryExceptCaughtc                 C   s   t dd }t }|d W d    n1 s00    Y  | |  g d t }|d W d    n1 sv0    Y  | |  g d d S )Nc                 S   sH   z t d | rtdt d W n ty:   t d Y n0 t d d S )Nr?   Z321r@   rA   rB   r=   ZeroDivisionErrorrb   r   r   r   r   r$     s    z5TestTryExceptCaught.test_catch_exception.<locals>.udtT)r?   rA   rB   Fr?   r@   rB   rW   )r(   r$   rI   r   r   r   test_catch_exception  s    
&
&
z(TestTryExceptCaught.test_catch_exceptionc                 C   s   t dd }t }|d}W d    n1 s00    Y  | |  ddg | |d t }|d}W d    n1 s0    Y  | |  g d | |d	 d S )
Nc                 S   sP   z t d | rtt d d}W n" tyB   t d d}| Y S 0 t d |S )Nr?   r@   rV   rA   rU   rB   r   )r   rr   r   r   r$     s    
z5TestTryExceptCaught.test_return_in_catch.<locals>.udtTr?   rA   rU   Fr   rV   rW   rS   r   r   r   test_return_in_catch  s     
&
&
z(TestTryExceptCaught.test_return_in_catchc                 C   sT   t dd }| t}|d W d    n1 s40    Y  | dt|j d S )Nc              
   S   sB   z| r
t d}W n, ty< } zd}|W  Y d }~S d }~0 0 |S )NrV   rU   )r   rb   )r   r   er   r   r   r$     s    z1TestTryExceptCaught.test_save_caught.<locals>.udtTz3Exception object cannot be stored into variable (e)r   r3   r   r   r   test_save_caught  s    

&z$TestTryExceptCaught.test_save_caughtc                 C   sR   t dd }| t}|  W d    n1 s20    Y  | dt|j d S )Nc                   S   s&   zt dW n ty     Y n0 d S r~   r[   rb   r   r   r   r   r$     s    z8TestTryExceptCaught.test_try_except_reraise.<locals>.udtr   r   r3   r   r   r   r     s    
$z+TestTryExceptCaught.test_try_except_reraisec                 C   sR   t dd }| t}|  W d    n1 s20    Y  | dt|j d S )Nc                   S   s@   zt dW n. ty:   z W n ty4    Y n0 Y n0 d S r~   r   r   r   r   r   r$     s    z>TestTryExceptCaught.test_try_except_reraise_chain.<locals>.udtr   r   r3   r   r   r   test_try_except_reraise_chain  s    
	$z1TestTryExceptCaught.test_try_except_reraise_chainc                 C   s0   t dd }| |dd | |dd d S )Nc                 S   s.   zd|   W n t y    Y dS 0 d|  S d S )Nr*     )rb   rE   r   r   r   r$     s
    z7TestTryExceptCaught.test_division_operator.<locals>.udtr   r   r,   g      ?r%   r'   r   r   r   test_division_operator  s    
z*TestTryExceptCaught.test_division_operatorN)	r   r   r   r   r   r   r   r   r   r   r   r   r   r   ~  s   $r   c                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	TestTryExceptNestedzTests for complicated nestingc                 O   s   t  }||i | W d    n1 s*0    Y  | }t  }||i | W d    n1 sf0    Y  | }| j||d||d d S )Nzargs={} kwargs={})msg)r   rG   r&   format)r(   ZcfuncpyfuncargskwargsrI   expectgotr   r   r   check_compare  s    ,,
z!TestTryExceptNested.check_comparec              	   C   sX   t dd }ttddgdd}| | |D ]$\}}}}| j||j||||d q.d S )Nc                 S   s   t d | rt d z(t d |r2t d tdt d W n ty   t d zXt d z(t d	 |rzt d
 tdt d W n ty   t d Y n
0 t d W n ty   t d Y n
0 t d t d Y n
0 t d t d t d d S )Nr?   r@   rA   rB   rE   rC   rD   HIJrF   KLMNOPGQRr=   r   rb   r   rE   rF   pr   r   r   r$     s:    z5TestTryExceptNested.test_try_except_else.<locals>.udtTFrt   repeatr   r   listr   
assertTruer   Zpy_func)r(   r$   casesr   rE   rF   r   r   r   r   test_try_except_else  s    
"
z(TestTryExceptNested.test_try_except_elsec                 C   sP   t dd }ttddgdd}| | |D ]\}}| j||j||d q.d S )Nc                 S   s   zz$t d | rt d tt d W n   t d Y n0 W zLzt d |rZt d tW n tyv   t d Y n
0 t d W t d	 qt d	 0 nZzLzt d |rt d tW n ty   t d Y n
0 t d W t d	 n
t d	 0 0 d S )
Nr?   r@   rA   rB   rC   rD   r   r   r   r   r   qr   r   r   r$   B  s4    

z8TestTryExceptNested.test_try_except_finally.<locals>.udtTFr,   r   r   r   )r(   r$   r   r   r   r   r   r   test_try_except_finallyA  s    

z+TestTryExceptNested.test_try_except_finallyN)r   r   r   r   r   r   r   r   r   r   r   r     s   ,r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestTryExceptRefctc                 C   sX   t dd }|ddd}| t|ttd |ddd}| t|ttd d S )Nc                 S   sP   t  }z(t| D ]}||kr"t|| qW n tyF   | Y S 0 |S d S r   )r   ListrK   
IndexErrorappendrb   )rL   raise_atlstrM   r   r   r   r$   d  s    
z6TestTryExceptRefct.test_list_direct_raise.<locals>.udtr^   rN   r   r   r&   r   rK   r(   r$   outr   r   r   test_list_direct_raisec  s    
z)TestTryExceptRefct.test_list_direct_raisec                    st   t dd  t  fdd}|ddd}| t|dgttd  |ddd}| t|dgttd  d S )	Nc                 S   s(   t |D ]}||krt| | q| S r   )rK   r   r   )r   rL   r   rM   r   r   r   appenderw  s
    z=TestTryExceptRefct.test_list_indirect_raise.<locals>.appenderc                    sB   t  }|d z || | W n ty8   | Y S 0 |S d S )N  )r   r   r   rb   )rL   r   r   r   r   r   r$     s    

z8TestTryExceptRefct.test_list_indirect_raise.<locals>.udtr^   rN   r   r   r   r   r   r   r   test_list_indirect_raisev  s    

z+TestTryExceptRefct.test_list_indirect_raisec                 C   sR   t dd }| t}|  W d    n1 s20    Y  | t|jd d S )Nc                  S   sZ   z:t  } td | d td | d td | W S  tyT   td Y n0 d S )Nr?   r   r@   ZfdarA   rB   )r   r   r=   r   rb   )r   r   r   r   r$     s    

z<TestTryExceptRefct.test_incompatible_refinement.<locals>.udtz@Cannot refine type|cannot safely cast unicode_type to int(32|64))r   r0   r   ZassertRegexpMatchesr1   r2   r3   r   r   r   test_incompatible_refinement  s    
$z/TestTryExceptRefct.test_incompatible_refinementN)r   r   r   r   r   r   r   r   r   r   r   b  s   r   c                   @   sD   e Zd Zdd Zedd Zedd Zee	dk dd	d
 Z
dS )TestTryExceptOtherControlFlowc                 C   sL   t dd }| t|ddttd | t|ddttd d S )Nc              	   s   s@   t | D ]2}z||krt|V  W q ty8   Y  d S 0 qd S r   )rK   r[   rb   )rL   r   rM   r   r   r   r$     s    
z5TestTryExceptOtherControlFlow.test_yield.<locals>.udtr^   rN   r   r'   r   r   r   rf     s    
	z(TestTryExceptOtherControlFlow.test_yieldc                 C   sV   t dd }| t}|  W d    n1 s20    Y  d}| |t|j d S )Nc                   S   sN   z4t   tt  W d    n1 s(0    Y  W n tyH   Y d S 0 d S r   )r   r=   objectrb   r   r   r   r   r$     s
    ,z7TestTryExceptOtherControlFlow.test_objmode.<locals>.udtlunsupported control flow: with-context contains branches (i.e. break/return/raise) that can leave the block r   r0   r   r   r1   r2   )r(   r$   r4   r   r   r   r   test_objmode  s    
$z*TestTryExceptOtherControlFlow.test_objmodec                    sb   dd  t  fdd}| t}|  W d    n1 s>0    Y  d}| |t|j d S )Nc                 S   s   t tt|  S r   )rx   Zasarrayr   reversedtolistr   r   r   r   re     s    zCTestTryExceptOtherControlFlow.test_objmode_output_type.<locals>.barc                     sf   t d} t | }z:tdd | | 7 }W d    n1 sB0    Y  W n ty`   Y n0 |S )NrN   zintp[:]r   )rx   arangeZ
zeros_liker   rb   )r   rE   re   r   r   r     s    

.zLTestTryExceptOtherControlFlow.test_objmode_output_type.<locals>.test_objmoder   r   )r(   r   r4   r   r   r   r   test_objmode_output_type  s    $z6TestTryExceptOtherControlFlow.test_objmode_output_type)r8   	   zPython 3.9+ onlyc           	      C   s   dd }t |D ]}|jdkr q0q| d ti |j}d}|j D ]6\}}|	t
jD ] }d}|jr`||jd v r`d}q`qL|s| d	 d S )
Nc                   S   s(   zt W n t y"   tdY n0 d S r~   )rb   r[   r   r   r   r   r     s    zMTestTryExceptOtherControlFlow.test_reraise_opcode_unreachable.<locals>.pyfuncRERAISEz!expected RERAISE opcode not foundFz8Unreachable condition reached (op code RERAISE executed)r   Tz.expected RERAISE unreachable message not found)disget_instructionsopnameZfailr   Zget_ir_of_code__code__blocksitemsZ
find_instsr	   ZStaticRaiseZexc_args)	r(   r   instZfunc_irfoundZlblZblkstmtr   r   r   r   test_reraise_opcode_unreachable  s    

z=TestTryExceptOtherControlFlow.test_reraise_opcode_unreachableN)r   r   r   rf   r   r   r   r   ZskipIfr   r   r   r   r   r   r     s   

r   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestTryExceptParforsc                 C   sN   dd }dg}|| }|  tdd|| | |  tdd|| | d S )Nc              	   S   s>   d}t | D ],}z|d7 }W q ty6   |d7 }Y q0 q|S )Nr   r*   r   rb   rL   crM   r   r   r   r$     s    z>TestTryExceptParfors.test_try_in_prange_reduction.<locals>.udtr^   FparallelT)r&   r   r(   r$   r   r   r   r   r   test_try_in_prange_reduction  s
    	z1TestTryExceptParfors.test_try_in_prange_reductionc                 C   s   dd }dg}|| }|  tdd|| | tjdd6}tdt |  tdd|| | W d    n1 sx0    Y  |  t|d	 | d
t|d  d S )Nc                 S   s<   d}zt | D ]}|d7 }qW n ty2   Y dS 0 |S d S )Nr   r*   r   r   r   r   r   r   r$     s    zCTestTryExceptParfors.test_try_outside_prange_reduction.<locals>.udtr^   Fr   T)recordalwaysr*   z5no transformation for parallel execution was possibler   )	r&   r   warningscatch_warningssimplefilterr   lenr   r1   )r(   r$   r   r   wr   r   r   !test_try_outside_prange_reduction  s    
8
z6TestTryExceptParfors.test_try_outside_prange_reductionc                 C   sV   dd }t ddg}|| }| tdd|| | | tdd|| | d S )Nc              	   S   sX   |   }t| jD ]@}z ||kr$t| | | ||< W q tyP   d||< Y q0 q|S Nr/   copyr   sizer[   rb   Zarrr   r   rM   r   r   r   r$   *  s    z8TestTryExceptParfors.test_try_in_prange_map.<locals>.udtr^      Fr   Trx   r   ZassertPreciseEqualr   r   r   r   r   test_try_in_prange_map)  s
    z+TestTryExceptParfors.test_try_in_prange_mapc                 C   sV   dd }t ddg}|| }| tdd|| | | tdd|| | d S )Nc                 S   sX   |   }z0t| jD ] }||kr$t| | | ||< qW n tyR   d||< Y n0 |S r   r   r   r   r   r   r$   ;  s    z=TestTryExceptParfors.test_try_outside_prange_map.<locals>.udtr^   r   Fr   Tr   r   r   r   r   test_try_outside_prange_map:  s
    z0TestTryExceptParfors.test_try_outside_prange_mapN)r   r   r   r   r   r   r   r   r   r   r   r     s   r   __main__)'r   r   	itertoolsr   numpyrx   Znumbar   r   r   r   Znumba.core.utilsr   Z
numba.corer   r	   Znumba.core.errorsr
   r   r   r   Znumba.tests.supportr   r   r   r   r   r   r   rb   r   r   r   r   r   r   r   r   mainr   r   r   r   <module>   s*   $  i ]CZL
