o
    G¾±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s…J ‚~|ƒ 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+   úZ/var/www/html/Persson_Maskin/env/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Úignoreéd   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s…J ‚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   ÿ










õ!

