Ë
    	êñiý  ã                  ór   — d dl mZ d dlmZ d dlmZmZmZmZ d dl	m
Z
 erd dlmZ d dlmZ  G d„ de«      Zy	)
é    )Úannotations)ÚTYPE_CHECKING)ÚBufferÚCopyNotAllowedErrorÚDlpackDeviceTypeÚ	DtypeKind)Úpolars_dtype_to_dtype)ÚNoReturn)ÚSeriesc                  óZ   — e Zd ZdZddœdd„Zedd„«       Zedd„«       Zdd„Zdd„Z	dd	„Z
y
)ÚPolarsBufferaQ  
    A buffer object backed by a Polars Series consisting of a single chunk.

    Parameters
    ----------
    data
        The Polars Series backing the buffer object.
    allow_copy
        Allow data to be copied during operations on this column. If set to `False`,
        a RuntimeError will be raised if data would be copied.
    T)Ú
allow_copyc               óv   — |j                  «       dkD  r|sd}t        |«      ‚|j                  «       }|| _        y )Né   z-non-contiguous buffer must be made contiguous)Ún_chunksr   ÚrechunkÚ_data)ÚselfÚdatar   Úmsgs       ú[/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/polars/interchange/buffer.pyÚ__init__zPolarsBuffer.__init__    s5   € Ø�=‰=‹?˜QÒÙØE�Ü)¨#Ó.Ð.Ø—<‘<“>ˆDàˆ�
ó    c                ó.  — t        | j                  j                  «      }|d   t        j                  k(  r>| j                  j                  «       \  }}}||z   }t        |d«      \  }}|dk(  r|S |dz   S | j                  j                  «       |d   dz  z  S )zBuffer size in bytes.r   é   r   )r	   r   Údtyper   ÚBOOLÚ_get_buffer_infoÚdivmodÚlen)r   r   Ú_ÚoffsetÚlengthÚn_bitsÚn_bytesÚrests           r   ÚbufsizezPolarsBuffer.bufsize)   sŽ   € ô & d§j¡j×&6Ñ&6Ó7ˆà�‰8”y—~‘~Ò%Ø $§
¡
× ;Ñ ;Ó =ÑˆAˆv�vØ˜f‘_ˆFÜ" 6¨1Ó-‰MˆG�Tà�qŠyØ�à ‘{Ð"à�z‰z�~‰~Ó 5¨¡8¨q¡=Ñ1Ð1r   c                óB   — | j                   j                  «       \  }}}|S )z-Pointer to start of the buffer as an integer.)r   r   )r   Úpointerr!   s      r   ÚptrzPolarsBuffer.ptr:   s!   € ð Ÿ
™
×3Ñ3Ó5‰ˆ��AØˆr   c                ó   — d}t        |«      ‚)z-Represent this structure as DLPack interface.Ú
__dlpack__)ÚNotImplementedError)r   r   s     r   r,   zPolarsBuffer.__dlpack__@   s   € àˆÜ! #Ó&Ð&r   c                ó&   — t         j                  dfS )zCDevice type and device ID for where the data in the buffer resides.N)r   ÚCPU)r   s    r   Ú__dlpack_device__zPolarsBuffer.__dlpack_device__E   s   € ä ×$Ñ$ dÐ+Ð+r   c                ó„   — | j                   }| j                  }| j                  «       d   j                  }d|› d|› d|›d�S )Nr   zPolarsBuffer(bufsize=z, ptr=z	, device=ú))r'   r*   r0   Úname)r   r'   r*   Údevices       r   Ú__repr__zPolarsBuffer.__repr__I   sH   € Ø—,‘,ˆØ�h‰hˆØ×'Ñ'Ó)¨!Ñ,×1Ñ1ˆØ& w i¨v°c°U¸)ÀFÀ:ÈQÐOÐOr   N)r   r   r   ÚboolÚreturnÚNone)r7   Úint)r7   r
   )r7   ztuple[DlpackDeviceType, None])r7   Ústr)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Úpropertyr'   r*   r,   r0   r5   © r   r   r   r      sJ   „ ñ
ð <@õ ð ò2ó ð2ð  òó ðó
'ó
,ôPr   r   N)Ú
__future__r   Útypingr   Úpolars.interchange.protocolr   r   r   r   Úpolars.interchange.utilsr	   r
   Úpolarsr   r   r@   r   r   ú<module>rF      s1   ðÝ "å  ÷ó õ ;áÝåô:P�6õ :Pr   