o
    it                     @   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 ]W}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   q/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/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 ]=}tjt|d }td|d D ]}tj|||| q| t |||d  W d    n1 sCw   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                    sL  d t  fdd}tjd tdD ]:}tjd}||\}}}}| |t|d d  | |t|d d  | |t|d d  | |d q| t}|tjd	 W d    n1 sgw   Y  | 	d
t
|j t dd }	| t}|	tjdd W d    n1 sw   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?   s0   
z(TestNdarrayIntrinsic.test_to_fixed_tuplec                 C   4   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   rT   gotexpectr   r   r   test_issue_3586_variant1f   
   
z-TestNdarrayIntrinsic.test_issue_3586_variant1c                 C   rP   )Nc                  S   s,   t d} d}t| jD ]}|d | |< q| S rQ   )r
   r)   sizerR   r   r   r   rT   t   s
   z;TestNdarrayIntrinsic.test_issue_3586_variant2.<locals>.funcrU   r   rV   rW   r   r   r   test_issue_3586_variant2s   r[   z-TestNdarrayIntrinsic.test_issue_3586_variant2N)r<   r=   r>   r?   rO   rZ   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   rd   re   r   )r   r.   ZzerosZint8r7   r8   r9   )r1   r   rG   sexpectedr   r   r   test_memcpy_region   s   
z%TestBytesIntrinsic.test_memcpy_regionN)r<   r=   r>   r?   rh   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w   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   Zfloat64TupleZ
from_typesrL   format)r1   rj   streamoutputpatZarytyZtuptyr   r   r   test_dump_refcount   s   
zTestRefCount.test_dump_refcountN)r<   r=   r>   rq   r   r   r   r   ri      s    ri   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 ]R}| ||d||d  ko)|jkn   t|jD ]}|d| }| |||| d |j q2|D ]}| |||d | |||d d qLqtjD ]h}| ||d||d  ko|jkn   t|jd D ]+}|d| }| |||| d |j | || d | ||||  q|D ]}| |||d | |||d d qqid S )Nc                 S      t | S r   )r   xr   r   r   <lambda>       z0TestZeroCounts.test_zero_count.<locals>.<lambda>c                 S   rs   r   )r   rt   r   r   r   rv      rw   )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   s0   
0 
0zTestZeroCounts.test_zero_countc              	      s   t fdd jtdd tj}t|tdD ]*}t} |d W d    n1 s1w   Y  	d
|t|j q fdd}|d	d
 |dd d S )Nc                     s    |  S r   r   rt   )rT   r   r   rv      rw   z0TestZeroCounts.check_error_msg.<locals>.<lambda>c                 S   s   t | tj S r   )
isinstancer   Integerrt   r   r   r   rv      s    )keyrB   z;{} is only defined for integers, but value passed was '{}'.c                    sR    ttf} |   W d    n1 sw   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   rT   Zunsupported_typestypr   r   r   )r   rT   r   r1   r   check_error_msg   s"   

zTestZeroCounts.check_error_msgc                 C      |  t d S r   )r   r   r1   r   r   r   test_trailing_zeros_error      z(TestZeroCounts.test_trailing_zeros_errorc                 C   r   r   )r   r   r   r   r   r   test_leading_zeros_error   r   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^   ri   rr   r   r   r   r   <module>   s     -E