
    Mh}                    z    S SK Jr  S SKJrJr  S SKJrJr  \(       a  S SKr	S SK
r " S S\5      r " S S\5      rg)	    )annotations)TYPE_CHECKINGAny)BufferDlpackDeviceTypeNc                  l    \ rS rSrSrSSS jjr\SS j5       r\SS j5       rSS jr	SS jr
SS jrS	rg
)PandasBuffer   >
Data in the buffer is guaranteed to be contiguous in memory.
c                    UR                   S   (       aH  UR                   UR                  R                  4:X  d#  U(       a  UR                  5       nO[	        S5      eXl        g)z7
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)selfx
allow_copys      P/var/www/html/env/lib/python3.13/site-packages/pandas/core/interchange/buffer.py__init__PandasBuffer.__init__   sP     99Q<		agg.>.>-@ @ FFH"1      c                p    U R                   R                  U R                   R                  R                  -  $ z
Buffer size in bytes.
)r   sizer   r   r   s    r   bufsizePandasBuffer.bufsize*   s%    
 ww||dggmm4444r   c                :    U R                   R                  S   S   $ )/
Pointer to start of the buffer as an integer.
datar   )r   __array_interface__r   s    r   ptrPandasBuffer.ptr1   s    
 ww**62155r   c                6    U R                   R                  5       $ z/
Represent this structure as DLPack interface.
)r   
__dlpack__r   s    r   r(   PandasBuffer.__dlpack__8   s     ww!!##r   c                &    [         R                  S4$ zE
Device type and device ID for where the data in the buffer resides.
Nr   CPUr   s    r   __dlpack_device__PandasBuffer.__dlpack_device__>        !$$d++r   c                    S[        U R                  U R                  U R                  5       S   R                  S.5      -   S-   $ )NzPandasBuffer(r   r   r$   device))strr   r$   r.   namer   s    r   __repr__PandasBuffer.__repr__D   sK    #||88"446q9>> 
	
r   )r   N)T)r   z
np.ndarrayr   boolreturnNoner:   intr:   r   r:   z#tuple[DlpackDeviceType, int | None]r:   r5   __name__
__module____qualname____firstlineno____doc__r   propertyr   r$   r(   r.   r7   __static_attributes__ r   r   r	   r	      sC    & 5 5 6 6$,
r   r	   c                  t    \ rS rSrSr      SS jr\SS j5       r\SS j5       rSS jr	SS jr
SS jrS	rg
)PandasBufferPyarrowR   r   c                   Xl         X l        g)z 
Handle pyarrow chunked arrays.
N_buffer_length)r   bufferlengths      r   r   PandasBufferPyarrow.__init__W   s     r   c                .    U R                   R                  $ r   )rO   r   r   s    r   r   PandasBufferPyarrow.bufsizec   s    
 ||   r   c                .    U R                   R                  $ )r!   )rO   addressr   s    r   r$   PandasBufferPyarrow.ptrj   s    
 ||###r   c                    [        5       er'   )NotImplementedErrorr   s    r   r(   PandasBufferPyarrow.__dlpack__q   s     "##r   c                &    [         R                  S4$ r+   r,   r   s    r   r.   %PandasBufferPyarrow.__dlpack_device__w   r0   r   c                T    S[        U R                  U R                  SS.5      -   S-   $ )NzPandasBuffer[pyarrow](r-   r2   r4   )r5   r   r$   r   s    r   r7   PandasBufferPyarrow.__repr__}   s7    $#||88# 
	
r   rN   N)rQ   z	pa.BufferrR   r=   r:   r;   r<   r>   r?   r@   rA   rI   r   r   rK   rK   R   s_    

 	

 

 ! ! $ $$,
r   rK   )
__future__r   typingr   r   *pandas.core.interchange.dataframe_protocolr   r   numpynppyarrowpar	   rK   rI   r   r   <module>rg      s6    "

 =
6 =
@6
& 6
r   