
    g                    ^    d dl mZ d dlZd dlZ G d dej
                        Z G d d      Zy)    )annotationsNc                  0    e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zy
)DlpackDeviceTypez3Integer enum for device type codes matching DLPack.                  	   
   N)__name__
__module____qualname____doc__CPUCUDA
CPU_PINNEDOPENCLVULKANMETALVPIROCM     O/var/www/openai/venv/lib/python3.12/site-packages/pyarrow/interchange/buffer.pyr   r      s-    =
CDJFFE
CDr   r   c                  T    e Zd ZdZd	d
dZedd       Zedd       Zd ZddZ	ddZ
y)_PyArrowBufferaY  
    Data in the buffer is guaranteed to be contiguous in memory.

    Note that there is no dtype attribute present, a buffer can be thought of
    as simply a block of memory. However, if the column that the buffer is
    attached to has a dtype that's supported by DLPack and ``__dlpack__`` is
    implemented, then that dtype information will be contained in the return
    value from ``__dlpack__``.

    This distinction is useful to support both data exchange via DLPack on a
    buffer and (b) dtypes like variable-length strings which do not have a
    fixed number of bytes per element.
    c                    || _         y)z)
        Handle PyArrow Buffers.
        N)_x)selfx
allow_copys      r   __init__z_PyArrowBuffer.__init__4   s     r   c                .    | j                   j                  S )z'
        Buffer size in bytes.
        )r    sizer!   s    r   bufsizez_PyArrowBuffer.bufsize:   s    
 ww||r   c                .    | j                   j                  S )z?
        Pointer to start of the buffer as an integer.
        )r    addressr'   s    r   ptrz_PyArrowBuffer.ptrA   s    
 wwr   c                    t        d      )a}  
        Produce DLPack capsule (see array API standard).

        Raises:
            - TypeError : if the buffer contains unsupported dtypes.
            - NotImplementedError : if DLPack support is not implemented

        Useful to have to connect to array libraries. Support optional because
        it's not completely trivial to implement for a Python-only library.
        
__dlpack__)NotImplementedErrorr'   s    r   r-   z_PyArrowBuffer.__dlpack__H   s     ",//r   c                h    | j                   j                  rt        j                  dfS t	        d      )z
        Device type and device ID for where the data in the buffer resides.
        Uses device type codes matching DLPack.
        Note: must be implemented even if ``__dlpack__`` is not.
        N__dlpack_device__)r    is_cpur   r   r.   r'   s    r   r0   z _PyArrowBuffer.__dlpack_device__U   s,     77>>$(($//%&9::r   c                    dt        | j                  | j                  | j                         d   j                  d      z   dz   S )NzPyArrowBuffer(r   )r(   r+   device))strr(   r+   r0   namer'   s    r   __repr__z_PyArrowBuffer.__repr__`   sK    #||88"446q9>> 
	
r   N)T)r"   z	pa.Bufferr#   boolreturnNone)r9   int)r9   z#tuple[DlpackDeviceType, int | None])r9   r5   )r   r   r   r   r$   propertyr(   r+   r-   r0   r7   r   r   r   r   r   %   sC        0	;
r   r   )
__future__r   enumpyarrowpaIntEnumr   r   r   r   r   <module>rB      s,   $ #  
t|| 
F
 F
r   