o
    Zhd                     @   s  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	 dd Z
dd Zdd	 Zeejd
e ejfe ejfe ejfe ejfe ejfe ejfe ejfe ejfe ejfe ejfe ejfgdd Zdd Zdd ZdS )    Nwraps)Versionc                 C   s   t jt | |dkS )N   )ctypesZ	pythonapiPyCapsule_IsValidZ	py_object)Zcapsulename r	   P/var/www/html/lang_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   )Z
__dlpack__r   npfrom_dlpackZtestingZassert_array_equal__dlpack_device__)arrZexpected_arrZDLTensorresultr	   r	   r
   check_dlpack_export    s
   
r   c                    s   t   fdd}|S )Nc                     s<   t  }z | i |W t  |ksJ S t  |ksJ w )N)paZtotal_allocated_bytes)argskwargsZ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_typec                 C   s   t tjt dk rtd tjg d|d}tj|| d}t|| |dd}tjdg|d}t|| |dd}tjdg|d}t|| |d}tjdd	g|d}t|| tjg | d}tjg |d}t|| d S )
Nz1.24.0zyNo dlpack support in numpy versions older than 1.22.0, strict keyword in assert_array_equal added in numpy version 1.24.0r         )Zdtypetyper   r   r   r   )	r   r   __version__pytestskiparrayr   r   slice)r   r   expectedr   Z
arr_slicedZarr_zeror	   r	   r
   test_dlpack5   s"   





r&   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   Nr   z,Can only use DLPack on arrays with no nulls.matchr   r   r      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_int32)r   r	   r	   r
   test_dlpack_not_supporteda   s*   

"r.   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.cudaZf0r   r   )schemar   z=DLPack support is implemented only for buffers on CPU device.r'   )r!   Zimportorskipr   r/   fieldint16r#   Zrecord_batchZserialize_record_batchContextZread_record_batchr*   NotImplementedErrorr   r   r   )cudar/   Za0batchZcbufZcbatchZcarrr	   r	   r
   test_dlpack_cuda_not_supported|   s   

"r6   )r   	functoolsr   r!   numpyr   Zpyarrowr   Zpyarrow.vendored.versionr   r   r   r   markZparametrizeZuint8Zuint16Zuint32Zuint64Zint8r1   r-   Zint64Zfloat16Zfloat32Zfloat64r&   r.   r6   r	   r	   r	   r
   <module>   s8   
