
     	i}                    ~    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e          Z G d de          ZdS )	    )annotations)TYPE_CHECKINGAny)BufferDlpackDeviceTypeNc                  d    e Zd ZdZddd	Zedd            Zedd            ZddZddZ	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                    |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   s      V/srv/django_bis/venv311/lib/python3.11/site-packages/pandas/core/interchange/buffer.py__init__zPandasBuffer.__init__   sc     9Q< 			ag.>-@ @ @  FFHH"1       intc                >    | j         j        | j         j        j        z  S z'
        Buffer size in bytes.
        )r   sizer   r   r   s    r   bufsizezPandasBuffer.bufsize*   s    
 w|dgm444r   c                2    | j         j        d         d         S )?
        Pointer to start of the buffer as an integer.
        datar   )r   __array_interface__r    s    r   ptrzPandasBuffer.ptr1   s    
 w*62155r   r   c                4    | j                                         S z?
        Represent this structure as DLPack interface.
        )r   
__dlpack__r    s    r   r)   zPandasBuffer.__dlpack__8   s     w!!###r   #tuple[DlpackDeviceType, int | None]c                    t           j        dfS zU
        Device type and device ID for where the data in the buffer resides.
        Nr   CPUr    s    r   __dlpack_device__zPandasBuffer.__dlpack_device__>        !$d++r   strc                    dt          | j        | j        |                                 d         j        d          z   dz   S )NzPandasBuffer(r   r!   r&   device))r1   r!   r&   r/   namer    s    r   __repr__zPandasBuffer.__repr__D   sQ    #|8"4466q9>   
	
r   N)T)r   r   r   r   r   r   r   r   r   r   r   r*   r   r1   __name__
__module____qualname____doc__r   propertyr!   r&   r)   r/   r7    r   r   r	   r	      s             & 5 5 5 X5 6 6 6 X6$ $ $ $, , , ,
 
 
 
 
 
r   r	   c                  b    e Zd ZdZddZedd	            Zedd
            ZddZddZ	ddZ
dS )PandasBufferPyarrowr
   buffer	pa.Bufferlengthr   r   r   c               "    || _         || _        dS )z0
        Handle pyarrow chunked arrays.
        N)_buffer_length)r   rE   rG   s      r   r   zPandasBufferPyarrow.__init__W   s     r   c                    | j         j        S r   )rI   r   r    s    r   r!   zPandasBufferPyarrow.bufsizec   s    
 |  r   c                    | j         j        S )r#   )rI   addressr    s    r   r&   zPandasBufferPyarrow.ptrj   s    
 |##r   r   c                    t                      r(   )NotImplementedErrorr    s    r   r)   zPandasBufferPyarrow.__dlpack__q   s     "###r   r*   c                    t           j        dfS r,   r-   r    s    r   r/   z%PandasBufferPyarrow.__dlpack_device__w   r0   r   r1   c                H    dt          | j        | j        dd          z   dz   S )NzPandasBuffer[pyarrow](r.   r3   r5   )r1   r!   r&   r    s    r   r7   zPandasBufferPyarrow.__repr__}   s=    $#|8#   
	
r   N)rE   rF   rG   r   r   r   r8   r9   r:   r;   r<   rB   r   r   rD   rD   R   s         
 
 
 
 ! ! ! X! $ $ $ X$$ $ $ $, , , ,
 
 
 
 
 
r   rD   )
__future__r   typingr   r   *pandas.core.interchange.dataframe_protocolr   r   numpynppyarrowpar	   rD   rB   r   r   <module>rY      s    " " " " " "       
       
  =
 =
 =
 =
 =
6 =
 =
 =
@6
 6
 6
 6
 6
& 6
 6
 6
 6
 6
r   