a
    
d                     @   sp   d dl mZmZmZ d dlZd dlZd dlmZ d dl	m
Z
 dd Zdd ZG d	d
 d
e
Zedkrle  dS )    )print_functionabsolute_importdivisionN)guvectorize)TestCasec                 C   s(   t d| jd dD ]}|d | |< qd S )Nr      rangeshape)x_ty_1t r   q/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/numba/tests/npyufunc/test_update_inplace.pypy_replace_2nd   s    r   c                 C   sF   t d| jd D ]0}|d | |< d|d  ||< d|d  ||< qd S )Nr   r      r   )x0_tx1_tZx2_tr   r   r   r   r   py_update_3   s    r   c                   @   s>   e Zd ZdddZdd Zdd Zd	d
 Zdd Zdd ZdS )TestUpdateInplaceTr   c                    s   dd|ffD ]\ } fddt |jd D }dd |D }|g ||R   |g |t|gR   tt||D ]B\}\}	}
|rtjj|	|
d| d qx| j|	|
k	 d| d	 qxqd S )
N)Zf8TZf4c                    s   g | ]}t d  qS )
   )npzeros).0_Zdtyper   r   
<listcomp>       z:TestUpdateInplace._run_test_for_gufunc.<locals>.<listcomp>   c                 S   s   g | ]}|  qS r   )copy)r   r   r   r   r   r      r   zinput %s)err_msg)msg)
r	   Zninr   array	enumeratezipZtestingZassert_equalZassertFalseall)selfgufuncZpy_funcexpect_f4_to_passzZexpect_to_passinputsZ	ex_inputsir   Zex_x_tr   r   r   _run_test_for_gufunc   s    z&TestUpdateInplace._run_test_for_gufuncc                 C   sl   t dgdddt}| j|tdd t dgddddt}| |t t dgddd	dt}| |t d S )
Nvoid(f8[:], f8[:])(t),()TnopythonFr(   r   r0   writable_args)r   r   r   r,   r&   r'   r   r   r   test_update_inplace(   s(    
z%TestUpdateInplace.test_update_inplacec                 C   s@   t dgdddddt}t dgdddddt}| |t d S )Nr-   r.   Tr2   )r0   r4   cacher5   r6   r   r   r   test_update_inplace_with_cache9   s    z0TestUpdateInplace.test_update_inplace_with_cachec                 C   s(   t dgdddddt}| |t d S )Nr-   r.   Tr2   parallelr0   r4   targetr5   r6   r   r   r   test_update_inplace_parallelD   s    z.TestUpdateInplace.test_update_inplace_parallelc                 C   sl   t dgdddt}| j|tdd t dgddddt}| |t t dgddd	dt}| |t d S )
Nz void(f8[:], f8[:], f8[:], f8[:])z(t),(t),(t),()Tr/   Fr1   )r   r   r   r3   )r   r   r   )r   r   r,   r6   r   r   r   test_update_inplace_3K   s*    z'TestUpdateInplace.test_update_inplace_3c                 C   sH  |  t& tdgddddt W d    n1 s60    Y  |  t& tdgddddt W d    n1 sv0    Y  |  t& tdgddddt W d    n1 s0    Y  |  t& tdgddddt W d    n1 s0    Y  |  t( tdgddd	d
dt W d    n1 s:0    Y  d S )Nr-   r.   T)r   r   r      r3   )r?   ))Zz_tr2   Zcudar;   )assertRaises
ValueErrorr   r   RuntimeError	TypeError)r&   r   r   r   test_exceptions^   s>    
""""z!TestUpdateInplace.test_exceptionsN)Tr   )	__name__
__module____qualname__r,   r7   r9   r=   r>   rE   r   r   r   r   r      s     
r   __main__)
__future__r   r   r   Zunittestnumpyr   Znumbar   Znumba.tests.supportr   r   r   r   rF   mainr   r   r   r   <module>   s   b