
    `Vg                        d Z ddlmZ ddlZddlZddlZddlmZ ddl	Z
ddlmZ  G d d      Z G d d	      Zdd
Z G d de      Zy)zE
Utility functions and objects for implementing the interchange API.
    )annotationsN)DtypeObj)is_datetime64_dtypec                  X    e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdZy)ArrowCTypesz
    Enum for Apache Arrow C type format strings.

    The Arrow C data interface:
    https://arrow.apache.org/docs/format/CDataInterface.html#data-type-description-format-strings
    nbcCsSiIlLefgutdDtdmzts{resolution}:{tz}ztt{resolution}N)__name__
__module____qualname____doc__NULLBOOLINT8UINT8INT16UINT16INT32UINT32INT64UINT64FLOAT16FLOAT32FLOAT64STRINGDATE32DATE64	TIMESTAMPTIME     ^/var/www/html/hubwallet-dev/venv/lib/python3.12/site-packages/pandas/core/interchange/utils.pyr   r      se     DDDEEFEFEFGGGFFF &IDr/   r   c                       e Zd ZdZdZdZdZdZy)
Endiannessz.Enum indicating the byte-order of a data-type.<>=|N)r   r   r   r   LITTLEBIGNATIVENAr.   r/   r0   r2   r2   3   s    8F
CF	Br/   r2   c                   t        | t        j                        rt        j                  S | t        j                  d      k(  rt        j                  S t        t        | j                  j                         d      }||S t        |       rit        j                  dt        j                  t
        j                  |       j                         d   dd }t        j"                  j%                  |d      S t'        d|  d	      )
a   
    Represent pandas `dtype` as a format string in Apache Arrow C notation.

    Parameters
    ----------
    dtype : np.dtype
        Datatype of pandas DataFrame to represent.

    Returns
    -------
    str
        Format string in Apache Arrow C notation of the given `dtype`.
    ONz\[(.*)\]r       )
resolutiontzzConversion of z- to Arrow C format string is not implemented.)
isinstancepdCategoricalDtyper   r$   npdtyper)   getattrnameupperr   refindalltypingcaststrr,   formatNotImplementedError)rE   
format_strr?   s      r0   dtype_to_arrow_c_fmtrQ   <   s     %,,-   	"((3-	!!!ejj&6&6&8$?J5! ZZV[[5-I-M-MNqQRTSTU
$$++zb+II

LM r/   c                      e Zd ZdZy)NoBufferPresentz6Exception to signal that there is no requested buffer.N)r   r   r   r   r.   r/   r0   rS   rS   ^   s    @r/   rS   )rE   r   returnrM   )r   
__future__r   rI   rK   numpyrD   pandas._typingr   pandasrB   pandas.api.typesr   r   r2   rQ   	ExceptionrS   r.   r/   r0   <module>r[      sJ    # 	   #  0 B DAi Ar/   