o
    ij"                     @   s  d dl Z d dlZd dlmZ d dlmZmZmZ d dl	Z	edddd Z
edddd	 Zeddd
d Zedddd Zedddd Zdd ZedZedZedZedZedZedZedZedZedZG dd deeZG dd deeZedkre	  dS dS )     N)jit)TestCasecompile_functionMemoryLeakMixinTZnopythonc                 C   s   t | S N)len)buf r
   o/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/numba/tests/test_buffer_protocol.pylen_usecase
      r   c                 C   s   | | S r   r
   )r	   ir
   r
   r   getitem_usecase   r   r   c                 C   s    | || }|d d|d   S )Nr      r
   )r	   r   jsr
   r
   r   getslice_usecase   s   r   c                 C   s   || |< d S r   r
   )r	   r   vr
   r
   r   setitem_usecase   s   r   c                 C   s.   d}t | D ]\}}||7 }||d 9 }q|S )Ng           )	enumerate)r	   resr   xr
   r
   r   iter_usecase   s
   r   c                 C   s&   dt   }td|t }tdd|S )Nz'def func(x):
        return x.%(attr)s
funcTr   )localsr   globalsr   )attrcodepyfuncr
   r
   r   
attrgetter(   s
   r"   
contiguousc_contiguousf_contiguousitemsizenbytesndimreadonlyshapestridesc                   @   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dd Zdd Zdd ZdS )TestBufferProtocolz6
    Test operations on buffer-providing objects.
    c                 #   s8    d}dD ]\} t  | fddt|D V  qd S )N
   ))b)Br   )hx)H@  )r   `y)I@B )lr5   )Lr7   )q         )Ql           )f      ?)dg      c                    s   g | ]}|  qS r
   r
   ).0r   offsetr
   r   
<listcomp>P   s    z.TestBufferProtocol._arrays.<locals>.<listcomp>)arrayrange)selfnletterr
   rA   r   _arrays@   s
   "zTestBufferProtocol._arraysc                 c   s    d}t tdV  t dV  dD ]\}}}t t||||V  qtdd}|jjr4|jj	r6J t |V  |j
}|jj	rF|jjrHJ t |V  |d d d }|jj	s\|jjr^J t |V  d S )Nr-   	   abcdefghi))Zint8ir-   )Zuint8r   r-   )Zint16r2   i  )Zuint16r4   iP  )Zint32r5   i )Zuint32r   r7   )Zint64r;   r-   )Zuint64r   l    )Zfloat32r>         @)Zfloat64r>   rK   )Z	complex64                    (@      @)Z
complex128rL   rM            r   )
memoryview	bytearraynpZlinspaceZastypearangereshapeflagsr$   r%   T)rF   rG   Zdtypestartstoparrr
   r
   r   _memoryviewsR   s   


zTestBufferProtocol._memoryviewsc                 c   s6    dV  t dV  td}|jdd t |V  d S )N   xyzrJ      Fwrite)rR   rT   rU   setflagsrF   r[   r
   r
   r   _readonliesq   s   

zTestBufferProtocol._readonliesc                 G   s   |j }| || ||  d S r   )Zpy_funcassertPreciseEqual)rF   Zjitfuncargsr!   r
   r
   r   _check_unaryx   s   zTestBufferProtocol._check_unaryc                 C      |  t| d S r   )rf   r   rF   objr
   r
   r   	check_len|      zTestBufferProtocol.check_lenc                 C   rg   r   )rf   r   rh   r
   r
   r   
check_iter   rk   zTestBufferProtocol.check_iterc              
   C   sh   dd }||D ])}z|| }W n t tfy'   t|tr$|j| }n Y nw | t||| qd S )Nc                 s   s\    z| j }W n ty   t| f}Y nw t|D ]}t|dkr(|d V  q|V  qd S )Nr   r   )r*   AttributeErrorr   rT   Zndindex)ri   r*   tupr
   r
   r   yield_indices   s   
z7TestBufferProtocol.check_getitem.<locals>.yield_indices)NotImplementedError	TypeError
isinstancerR   ri   rd   r   )rF   ri   ro   r   expectedr
   r
   r   check_getitem   s   
z TestBufferProtocol.check_getitemc                 C   st   t t|D ]1}t|}|| d d }t||| | || | t|D ]\}}||kr6| || | q&qd S )Nr   r   )rE   r   listr   assertEqualr   )rF   ri   r   origvalr   r
   r
   r   check_setitem   s   z TestBufferProtocol.check_setitemc                 C   s   |  t|dt|d  d S )Nr   )rf   r   r   rh   r
   r
   r   check_getslice   s   z!TestBufferProtocol.check_getslicec                 C   sd   |  td |  d |  D ]}|  | q|  D ]}|  | q|  D ]}| | q(d S )Nr^   r]   )rj   rS   r\   rI   rc   rt   rF   memr[   r	   r
   r
   r   test_len      
zTestBufferProtocol.test_lenc                 C   sd   |  td |  d |  D ]}|  | q|  D ]}|  | q|  D ]}|  | q(d S Ns   abcr]   )rt   rS   r\   rI   rc   r{   r
   r
   r   test_getitem   r~   zTestBufferProtocol.test_getitemc                 C   s   |    | td W d    n1 sw   Y  | d | td |    | tdtd W d    n1 sAw   Y  |  D ]}| | qJd S )Ns   abcdes   xyzuvwr   r-   )assertTypingErrorrz   rS   rR   rD   rE   rc   rt   )rF   r	   r
   r
   r   test_getslice   s   


z TestBufferProtocol.test_getslicec              	   C   s   |  td |  D ]}|  | q|  D ]}| | q|  D ]}|   |  | W d    n1 s9w   Y  q#d S )NrJ   )ry   rS   rI   r\   rt   rc   r   )rF   r[   r|   r	   r
   r
   r   test_setitem   s   
zTestBufferProtocol.test_setitemc                 C   sZ   |  td |  d |  td |  D ]}|  | q|  D ]}| | q#d S r   )rl   rS   rR   rI   rc   rt   )rF   r[   r	   r
   r
   r   	test_iter   s   
zTestBufferProtocol.test_iterN)__name__
__module____qualname____doc__rI   r\   rc   rf   rj   rl   rt   ry   rz   r}   r   r   r   r   r
   r
   r
   r   r,   ;   s     



r,   c                   @   sP   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S )TestMemoryViewz=
    Test memoryview-specific attributes and operations.
    c                 c   sn    t d}|V  |d}|V  |jV  |d d d V  |jdd |V  t d}|jdks2J |V  d S )NrN   rO   r   Fr_   r
   r   )rT   rU   rV   rX   ra   Zzerosr(   rb   r
   r
   r   rI      s   



zTestMemoryView._arraysc                 C   ,   |   D ]}t|}| t||j qd S r   )rI   rR   rd   ndim_usecaser(   rF   r[   mr
   r
   r   	test_ndim      zTestMemoryView.test_ndimc                 C   r   r   )rI   rR   rd   shape_usecaser*   r   r
   r
   r   
test_shape   r   zTestMemoryView.test_shapec                 C   r   r   )rI   rR   rd   strides_usecaser+   r   r
   r
   r   test_strides   r   zTestMemoryView.test_stridesc                 C   r   r   )rI   rR   rd   itemsize_usecaser&   r   r
   r
   r   test_itemsize   r   zTestMemoryView.test_itemsizec                 C   s2   |   D ]}t|}| t||j|j  qd S r   )rI   rR   rd   nbytes_usecasesizer&   r   r
   r
   r   test_nbytes  s   zTestMemoryView.test_nbytesc                 C   sd   |   D ]}t|}| t||jj  qtd}| t|d ttd}| t|d d S )Nr]   TF)rI   rR   assertIsreadonly_usecaserW   Z	writeablerS   r   r
   r
   r   test_readonly	  s   zTestMemoryView.test_readonlyc                 C   s   t td}| t|d | t|d | t|d |  D ](}t |}| t||jjp4|jj	 | t||jj	 | t||jj q"d S )Nr]   T)
rR   rS   r   contiguous_usecasec_contiguous_usecasef_contiguous_usecaserI   rW   r%   r$   )rF   r   r[   r
   r
   r   test_contiguous  s   
zTestMemoryView.test_contiguousN)r   r   r   r   rI   r   r   r   r   r   r   r   r
   r
   r
   r   r      s    	r   __main__)rD   numpyrT   Znumbar   Znumba.tests.supportr   r   r   Zunittestr   r   r   r   r   r"   r   r   r   r   r   r   r   r   r   r,   r   r   mainr
   r
   r
   r   <module>   s>    




 $B