a
    
dt                     @   s   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
 d dlmZmZ d dlmZmZ d dlmZ d dlmZ d d	lmZmZ d d
l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ZdS )    N)TestCasecaptured_stdout)njit	literally)types)tuple_setitembuild_full_slice_tuple)to_fixed_tupleempty_inferred)memcpy_region)dump_refcount)trailing_zerosleading_zeros)TypingErrorc                   @   s    e Zd ZdZdd Zdd ZdS )TestTupleIntrinsicz!Tests for numba.unsafe.tuple
    c           
         s   t dd }td tdD ]}tdd t fddt D }td	d t D }ttt|}t| t|}t|}t	
|}||t	
|< ||||\}}	| || | |	t| qd S )
Nc                 S   s,   | }t ||D ]\}}t|||}q| |fS N)zipr   )tupidxsvalsZout_tupiv r   k/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/numba/tests/test_unsafe_intrinsics.pyfoo   s    z2TestTupleIntrinsic.test_tuple_setitem.<locals>.foo{         
   c                    s   g | ]}t d  qS )r   randomrandint.0r   nr   r   
<listcomp>       z9TestTupleIntrinsic.test_tuple_setitem.<locals>.<listcomp>c                 S   s   g | ]}t d dqS )r   r   r   r"   r   r   r   r&      r'   )r   r    seedranger!   tuplelistlenshufflenpasarrayassertEqual)
selfr   _r   r   r   Z
expect_tupZ
expect_outZgot_tupZgot_outr   r$   r   test_tuple_setitem   s     



z%TestTupleIntrinsic.test_tuple_setitemc              	   C   s   t dd }tddD ]z}tjt|d }td|d D ]}tj|||| q>| t |||d  W d    q1 s0    Y  qd S )Nc                 S   s   | t t| S r   )r   r   )ar%   r   r   r   full_slice_array.   s    z=TestTupleIntrinsic.test_slice_tuple.<locals>.full_slice_arrayr      )	r   r)   r.   r    arangetestingassert_array_equalassertRaisesr   )r1   r5   r%   r4   r   r   r   r   test_slice_tuple-   s    
z#TestTupleIntrinsic.test_slice_tupleN)__name__
__module____qualname____doc__r3   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 )	TestNdarrayIntrinsicz#Tests for numba.unsafe.ndarray
    c                    sN  d t  fdd}tjd tdD ]t}tjd}||\}}}}| |t|d d  | |t|d d  | |t|d d  | |d q(| t }|tjd	 W d    n1 s0    Y  | 	d
t
|j t dd }	| t"}|	tjdd W d    n1 s*0    Y  d}
| 	|
t
|j d S )Nr6   c                    s6   t | dd}t | d}t |  }t | d}||||fS )Nr   )length   r   r	   )arrayr4   bcdconstr   r   r   B   s
    


z5TestNdarrayIntrinsic.test_to_fixed_tuple.<locals>.foor   r   r   rB   r   r   rB   zNot supported on array.ndim=2c                 S   s
   t | |S r   rC   )rD   rA   r   r   r   tuple_with_length]   s    zCTestNdarrayIntrinsic.test_to_fixed_tuple.<locals>.tuple_with_lengthz$*length* argument must be a constant)r   r.   r    r(   r)   r0   r*   r:   r   assertInstr	exception)r1   r   r2   Zarrr4   rE   rF   rG   ZraisesrK   Z	expectmsgr   rH   r   test_to_fixed_tuple?   s,    .
2z(TestNdarrayIntrinsic.test_to_fixed_tuplec                 C   s4   t dd }| }tdgd }tj|| d S )Nc                  S   s.   t d} d}tt| D ]}|d | |< q| S N)r   g?rB   )r
   r)   r,   Sr4   r   r   r   r   funcg   s
    z;TestNdarrayIntrinsic.test_issue_3586_variant1.<locals>.func@r   r   r.   r/   r8   r9   r1   rS   gotexpectr   r   r   test_issue_3586_variant1f   s
    
z-TestNdarrayIntrinsic.test_issue_3586_variant1c                 C   s4   t dd }| }tdgd }tj|| d S )Nc                  S   s,   t d} d}t| jD ]}|d | |< q| S rP   )r
   r)   sizerQ   r   r   r   rS   t   s
    z;TestNdarrayIntrinsic.test_issue_3586_variant2.<locals>.funcrT   r   rU   rV   r   r   r   test_issue_3586_variant2s   s
    
z-TestNdarrayIntrinsic.test_issue_3586_variant2N)r<   r=   r>   r?   rO   rY   r[   r   r   r   r   r@   <   s   'r@   c                   @   s   e Zd ZdZdd ZdS )TestBytesIntrinsicz!Tests for numba.unsafe.bytes
    c                 C   sV   t dd }tjdtjd}tjdtjd}||d|dd g d}tj|| d S )	Nc                 S   s   t | jj||jj||d d S )Nr   )r   ctypesdata)dstZ	dst_indexsrcZ	src_indexnbytesr   r   r   r      s    
z2TestBytesIntrinsic.test_memcpy_region.<locals>.foor   )Zdtype   r      )
r   r   r   r   r   rB   r6   rb   rc   r   )r   r.   zerosZint8r7   r8   r9   )r1   r   rG   sexpectedr   r   r   test_memcpy_region   s    
z%TestBytesIntrinsic.test_memcpy_regionN)r<   r=   r>   r?   rg   r   r   r   r   r\      s   r\   c                   @   s   e Zd Zdd ZdS )TestRefCountc                 C   s   t dd }t }|  W d    n1 s.0    Y  | }d}tjd d d }tj|gd }| ||| | ||| d S )Nc                  S   s&   t d} | | f}t|  t| d S )Nr   )r.   Zonesr   )r4   rE   r   r   r   use_dump_refcount   s    
z:TestRefCount.test_dump_refcount.<locals>.use_dump_refcountzdump refct of {}r   rB   )	r   r   getvaluer   float64TupleZ
from_typesrL   format)r1   ri   streamoutputpatZarytyZtuptyr   r   r   test_dump_refcount   s    
$zTestRefCount.test_dump_refcountN)r<   r=   r>   rq   r   r   r   r   rh      s   rh   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestZeroCountsc                 C   s  t dd }t dd }g d}tjD ]}| ||d||d  koR|jkn   t|jD ].}|d| }| |||| d |j qd|D ]0}| |||d | |||d d qq&tjD ]}| ||d||d  ko|jkn   t|jd D ]X}|d| }| |||| d |j | || d | ||||  q|D ]2}| |||d | |||d d qrqd S )Nc                 S   s   t | S r   )r   xr   r   r   <lambda>   r'   z0TestZeroCounts.test_zero_count.<locals>.<lambda>c                 S   s   t | S r   )r   rs   r   r   r   ru      r'   )rB   *   ~      r   rB   r   )	r   r   Zunsigned_domain
assertTrueZbitwidthr)   r0   ZassertGreaterZsigned_domain)r1   ZlztzZevensTr   valr%   r   r   r   test_zero_count   s*    
0 
0zTestZeroCounts.test_zero_countc              	      s   t fdd jtdd tj}t|tdD ]T}t} |d W d    n1 sb0    Y  	d
|t|j q2 fdd}|d	d
 |dd d S )Nc                     s    |  S r   r   rs   )rS   r   r   ru      r'   z0TestZeroCounts.check_error_msg.<locals>.<lambda>c                 S   s   t | tj S r   )
isinstancer   ZIntegerrs   r   r   r   ru      r'   )keyrB   z;{} is only defined for integers, but value passed was '{}'.c                    sR    ttf} |   W d    n1 s,0    Y  dt|j d S )Nz{}() )r:   r   	TypeErrorrL   rm   rM   rN   )argsstringe)cfunc	func_namer1   r   r   check   s    &z-TestZeroCounts.check_error_msg.<locals>.checkrJ   z-takes 2 positional arguments but 3 were givenr   z&missing 1 required positional argument)r   _namefilterr   Znumber_domainsortedrM   r:   r   rL   rm   rN   )r1   rS   Zunsupported_typestypr   r   r   )r   rS   r   r1   r   check_error_msg   s"    
*
zTestZeroCounts.check_error_msgc                 C   s   |  t d S r   )r   r   r1   r   r   r   test_trailing_zeros_error   s    z(TestZeroCounts.test_trailing_zeros_errorc                 C   s   |  t d S r   )r   r   r   r   r   r   test_leading_zeros_error   s    z'TestZeroCounts.test_leading_zeros_errorN)r<   r=   r>   r}   r   r   r   r   r   r   r   rr      s   rr   )r    numpyr.   Znumba.tests.supportr   r   Znumbar   r   Z
numba.corer   Znumba.cpython.unsafe.tupler   r   Znumba.np.unsafe.ndarrayr	   r
   Znumba.core.unsafe.bytesr   Znumba.core.unsafe.refcountr   Znumba.cpython.unsafe.numbersr   r   Znumba.core.errorsr   r   r@   r\   rh   rr   r   r   r   r   <module>   s   -E