o
    h                     @   s<  d dl Z d dlZd dlZd dlZd dlZzd dlZW n ey'   ejjZ	Y nw d dl
Zde fde fde fde fde fde fde fd	e fd
e fde fde fgZdd Zdd Zejdedd Zdd Zejjdd Zdd Zdd Z dd Z!dd Z"d d! Z#d"d# Z$dS )$    Ni1i2i4i8u1u2u4u8f2f4f8c                  C   s  t jdd} tj| }|jdksJ |jg ksJ |jdks"J |j	| j	ks*J |j
| j
ks2J |js7J |js<J |  }d|j_tj|}|jrOJ tjj| dd}|jdks^J |jdd	gksgJ |d
dkspJ |dd	ksyJ t|}| d usJ ~| d u sJ d S )N
         (   F)xy)	dim_namesr   r   r      )nprandomrandnpaTensor
from_numpyndimr   sizeshapestridesis_contiguous
is_mutablecopyflags	writeabledim_nameweakrefref)datatensordata2wr r+   M/var/www/vscode/kcb/lib/python3.10/site-packages/pyarrow/tests/test_tensor.pytest_tensor_attrs.   s,   



r-   c                  C   sB   t jtjdd} t| }|  }t| |d ksJ d S )Nr   r   r   )	r   r   r   r   r   r   sysgetrefcountto_numpy)r(   narrayr+   r+   r,   test_tensor_base_objectO   s   
r3   zdtype_str,arrow_typec                 C   s   t | }t  td dt jdd |}W d    n1 s%w   Y  tj	
|}|j|ks7J t| | }||k sGJ d S )Nignored   r   r   )r   dtypewarningscatch_warningssimplefilterr   r   astyper   r   r   typereprr0   all)	dtype_str
arrow_typer6   r'   r(   resultr+   r+   r,   test_tensor_numpy_roundtripV   s   


rA   c                 C   sn   t jdd}tj|}tjt	| d}t
|d}tj|| |d tj|}||s5J d S )Nr   r   zpyarrow-tensor-ipc-roundtripi   r   )r   r   r   r   r   r   ospathjoinstrcreate_memory_mapipcwrite_tensorseekread_tensorequals)tmpdirr'   r(   rC   mmapr@   r+   r+   r,   test_tensor_ipc_roundtripf   s   
rN   c                 C   sn   t jdd}tj|}| d }tj|dd}tj|| |	  tj
tj|dd}||s5J d S )Nr   r   ztensor-compressed-filegzip)compression)r   r   r   r   r   r   output_streamrG   rH   closerJ   input_streamrK   )tempdirr'   r(   rC   
out_streamr@   r+   r+   r,   $test_tensor_ipc_read_from_compressedu   s   rV   c           	      C   s   t jdd}tj|d d d }t jddd}tj|d d d d dd d f }tjt	| d}t
|d}||fD ] }|d tj|| |d tj|}||s_J q?d S )Nr   r   r      zpyarrow-tensor-ipc-stridedi   r   )r   r   r   r   r   r   rB   rC   rD   rE   rF   rI   rG   rH   rJ   rK   )	rL   data1tensor1r)   tensor2rC   rM   r(   r@   r+   r+   r,   test_tensor_ipc_strided   s   $

r[   c                  C   s   dd } dd }t jdddd d d d dd d f }tj|}tjt |}| || | }d	|d
< tjt |}||| d S )Nc                 S   s*   |  |sJ | |ksJ | |krJ d S NrK   abr+   r+   r,   eq      ztest_tensor_equals.<locals>.eqc                 S   s*   |  |rJ | |krJ | |ksJ d S r\   r]   r^   r+   r+   r,   ne   rb   ztest_tensor_equals.<locals>.ner   rW   r   r   g      ?)	   r   r   )r   r   r   r   r   r   ascontiguousarrayr!   )ra   rc   r'   rY   rZ   r+   r+   r,   test_tensor_equals   s   (
rf   c                   C   sJ   t jtdd ttjtd W d    d S 1 sw   Y  d S )N
unhashable)matchr   )	pytestraises	TypeErrorhashr   r   r   r   aranger+   r+   r+   r,   test_tensor_hashing   s   "rn   c                  C   s8   t jdd} tj| }tj|| jd ksJ d S )Nr   r      )	r   r   r   r   r   r   rG   get_tensor_sizer   )r'   r(   r+   r+   r,   test_tensor_size   s   rq   c                 C   s   t jdd}tj|}tj|}tj	
t| d}t||}tj|| tjdkr2|  tj|dd}tj| }t j|| d S )Nr   r   zpyarrow-tensor-ipc-read-tensor
emscriptenr)mode)r   r   r   r   r   r   rG   rp   rB   rC   rD   rE   rF   rH   r.   platformrR   
memory_maprJ   r0   testingassert_equal)rL   r'   r(   	data_sizerC   
write_mmap	read_mmapr2   r+   r+   r,   test_read_tensor   s   
r|   c                  C   s  t jdft jdft jdft jdft jdffD ]o\} }t jd| d}|j} | }t	j
|}t|}|j|ks9J |j|jksAJ |j|jksIJ |jdksPJ |j|jksXJ |j|jks`J |jd	 |jjkskJ t ||  |kswJ ~~t ||  |ksJ qd S )
Nz=bz=qz=Qedr   )r6   r   ro   )r   int8int64uint64float16float64rm   r6   tolistr   r   r   
memoryviewformatr   r   r   nbytesitemsizer;   	bit_width
frombuffer)r6   expected_formatr'   lstr(   mr+   r+   r,   test_tensor_memoryview   s,   r   )%rB   r.   ri   r7   r%   numpyr   ImportErrormark
pytestmarkpyarrowr   r   int16int32r   uint8uint16uint32r   r   float32r   tensor_type_pairsr-   r3   parametrizerA   rN   rO   rV   r[   rf   rn   rq   r|   r   r+   r+   r+   r,   <module>   sH   










!

