o
    1فi}                     @  sd   d dl mZ d dlmZmZ d dlmZmZ er d dlZ	d dl
ZG dd deZG dd deZdS )	    )annotations)TYPE_CHECKINGAny)BufferDlpackDeviceTypeNc                   @  sV   e Zd ZdZddd	d
ZedddZedddZdddZdddZ	dddZ
dS ) PandasBufferF
    Data in the buffer is guaranteed to be contiguous in memory.
    Tx
np.ndarray
allow_copyboolreturnNonec                 C  s:   |j d r|j |jjfks|r| }ntd|| _dS )zG
        Handle only regular columns (= numpy arrays) for now.
        r   zBExports cannot be zero-copy in the case of a non-contiguous bufferN)stridesdtypeitemsizecopyRuntimeError_x)selfr	   r    r   _/home/test-dt/pcm-url-check/venv/lib/python3.10/site-packages/pandas/core/interchange/buffer.py__init__   s   

zPandasBuffer.__init__intc                 C  s   | j j| j jj S z'
        Buffer size in bytes.
        )r   sizer   r   r   r   r   r   bufsize*   s   zPandasBuffer.bufsizec                 C  s   | j jd d S )?
        Pointer to start of the buffer as an integer.
        datar   )r   __array_interface__r   r   r   r   ptr1   s   zPandasBuffer.ptrr   c                 C  s
   | j  S z?
        Represent this structure as DLPack interface.
        )r   
__dlpack__r   r   r   r   r#   8      
zPandasBuffer.__dlpack__#tuple[DlpackDeviceType, int | None]c                 C  
   t jdfS zU
        Device type and device ID for where the data in the buffer resides.
        Nr   CPUr   r   r   r   __dlpack_device__>   r$   zPandasBuffer.__dlpack_device__strc                 C  s&   dt | j| j|  d jd d S )NzPandasBuffer(r   r   r!   device))r+   r   r!   r*   namer   r   r   r   __repr__D   s   zPandasBuffer.__repr__N)T)r	   r
   r   r   r   r   r   r   r   r   r   r%   r   r+   __name__
__module____qualname____doc__r   propertyr   r!   r#   r*   r0   r   r   r   r   r      s    

r   c                   @  sT   e Zd ZdZddd	Zedd
dZedddZdddZdddZ	dddZ
dS )PandasBufferPyarrowr   buffer	pa.Bufferlengthr   r   r   c                C  s   || _ || _dS )z0
        Handle pyarrow chunked arrays.
        N)_buffer_length)r   r<   r>   r   r   r   r   W   s   	
zPandasBufferPyarrow.__init__c                 C     | j jS r   )r?   r   r   r   r   r   r   c      zPandasBufferPyarrow.bufsizec                 C  rA   )r   )r?   addressr   r   r   r   r!   j   rB   zPandasBufferPyarrow.ptrr   c                 C  s   t  r"   )NotImplementedErrorr   r   r   r   r#   q   s   zPandasBufferPyarrow.__dlpack__r%   c                 C  r&   r'   r(   r   r   r   r   r*   w   r$   z%PandasBufferPyarrow.__dlpack_device__r+   c                 C  s   dt | j| jdd d S )NzPandasBuffer[pyarrow](r)   r,   r.   )r+   r   r!   r   r   r   r   r0   }   s   zPandasBufferPyarrow.__repr__N)r<   r=   r>   r   r   r   r1   r2   r3   r4   r5   r   r   r   r   r;   R   s    


r;   )
__future__r   typingr   r   *pandas.core.interchange.dataframe_protocolr   r   numpynppyarrowpar   r;   r   r   r   r   <module>   s    @