o
    GhV                     @   sD  d dl Z d dlmZ d dlZd dlZd dlZd dlmZ ej	j
ZedZdd Zdd Zd	d
 Zeej	de dfe dfe dfe dfe dfe dfe dfe dfe dfe dfe dfgdd Zeej	dejejejejejejejejejejejgdd Zdd Zdd Z dS )     Nwraps)Versionnumpyc                 C   s   t jt | |dkS )N   )ctypes	pythonapiPyCapsule_IsValid	py_object)capsulename r   Z/var/www/html/Persson_Maskin/env/lib/python3.10/site-packages/pyarrow/tests/test_dlpack.pyr	       s   r	   c                 C   sJ   |   }t|ddu sJ t| }tjj||dd |  dks#J d S )Ns   dltensorT)strict)r   r   )
__dlpack__r	   npfrom_dlpacktestingassert_array_equal__dlpack_device__)arrexpected_arrDLTensorresultr   r   r   check_dlpack_export$   s
   
r   c                    s   t   fdd}|S )Nc                     sD   t   t }z | i |W t |ksJ S t |ks!J w )N)gccollectpatotal_allocated_bytes)argskwargsallocated_bytesfr   r   wrapper/   s
   $z&check_bytes_allocated.<locals>.wrapperr   )r#   r$   r   r"   r   check_bytes_allocated.   s   r%   )
value_typenp_type_struint8uint16uint32uint64int8int16int32int64float16float32float64c                 C   s,  t tjt dk rtd tjg dt|d}tj|| d}t|| tj	
|}t|| |dd}tjdgt|d}t|| |dd}tjdgt|d}t|| |d}tjdd	gt|d}t|| tjg | d}tjg t|d}t|| tj	
|}t|| d S )
N1.24.0yNo dlpack support in numpy versions older than 1.22.0, strict keyword in assert_array_equal added in numpy version 1.24.0r         dtypetyper   r6   r   r7   )r   r   __version__pytestskiparrayr9   r   r   Tensor
from_numpyslice)r&   r'   expectedr   t
arr_slicedarr_zeror   r   r   test_dlpack:   s*   







rG   np_typec                 C   s   t tjt dk rtd tg d}tj|| djddd}tj	|}t
|| tj|| djddd}tj	|}t
|| d S )	Nr3   r4   )r   r6   r7            r   r   r8   )r6   r6   r6   C)orderF)r   r   r<   r=   r>   r?   reshaper   r@   rA   r   )rH   r   rC   rD   r   r   r   test_tensor_dlpackl   s   

rP   c                  C   sL  t tjt dk rtd tg d} tjtdd t	|  W d    n1 s,w   Y  tjddgdd	ggt
t d
} tjtdd t	|  W d    n1 sZw   Y  tg } tjtdd t	|  W d    n1 s{w   Y  tg d} tjtdd t	|  W d    d S 1 sw   Y  d S )Nz1.22.0z6No dlpack support in numpy versions older than 1.22.0.)r   Nr7   z,Can only use DLPack on arrays with no nulls.matchr   r   r7   rI   r:   z+DataType is not compatible with DLPack spec)TFTz5Bit-packed boolean data type not supported by DLPack.)r   r   r<   r=   r>   r   r?   raises	TypeErrorr   list_r.   )r   r   r   r   test_dlpack_not_supported   s*   

"rV   c                  C   s   t d} ttdt g}tjg dt d}tj|g|d}| || 	d}| 
||j}|d }t jtdd t| W d    n1 sOw   Y  t jtdd |  W d    d S 1 skw   Y  d S )	Nzpyarrow.cudaf0r5   r:   )schemar   z=DLPack support is implemented only for buffers on CPU device.rQ   )r=   importorskipr   rX   fieldr-   r?   record_batchserialize_record_batchContextread_record_batchrS   NotImplementedErrorr   r   r   )cudarX   a0batchcbufcbatchcarrr   r   r   test_dlpack_cuda_not_supported   s   

"rf   )!r   	functoolsr   r   r=   pyarrowr   pyarrow.vendored.versionr   markr   
pytestmarkrY   r   r	   r   r%   parametrizer(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   rG   rP   rV   rf   r   r   r   r   <module>   sL   












!