o
    ҷh                     @  s  d Z ddlmZ ddlZddlZddlmZ ddlm	Z	m
Z
mZ ejr)ddlmZ i ddd	d
ddddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4ZG d5d6 d6ZG d7d8 d8Zd?d=d>ZdS )@zE
Utility functions and objects for implementing the interchange API.
    )annotationsN)lib)
ArrowDtypeCategoricalDtypeDatetimeTZDtype)DtypeObjnullnboolbuint8Cuint16Suint32Iuint64Lint8cint16int32iint64l	halffloatefloatfdoublegstringubinaryzz	time32[s]ttsz
time32[ms]ttmttuttntdDtdmztss:ztsm:ztsu:ztsn:tDstDmtDutDn)z
time64[us]z
time64[ns]zdate32[day]z
date64[ms]ztimestamp[s]ztimestamp[ms]ztimestamp[us]ztimestamp[ns]zduration[s]zduration[ms]zduration[us]zduration[ns]c                   @  s\   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dZdS )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
    r	   r   r   r   sr   r   r   r   r   r   r   r    r"   Ur)   r*   z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LARGE_STRINGDATE32DATE64	TIMESTAMPTIME rI   rI   P/var/www/html/venv/lib/python3.10/site-packages/pandas/core/interchange/utils.pyr/   :   s*    r/   c                   @  s    e Zd ZdZdZdZdZdZdS )
Endiannessz.Enum indicating the byte-order of a data-type.<>=|N)r2   r3   r4   r5   LITTLEBIGNATIVENArI   rI   rI   rJ   rK   \   s    rK   dtyper   returnstrc                 C  s$  t | trtjS | tdkrtjS t | trSddl}| j	}|j
|r.d|j d|j S |j
|rE|jdurEd|jd  d|j S tt|d}|durS|S tt| j d}|durb|S t| dryt| d d }tjj|d	d
S t | trtjj| jd | 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`.
    Or   Nzd:,ts:M )
resolutiontzzConversion of z- to Arrow C format string is not implemented.)
isinstancer   r/   r>   nprT   rC   r   pyarrowpyarrow_dtypetypes
is_decimal	precisionscaleis_timestampr^   unitPYARROW_CTYPESgetrV   getattrnameupperr   is_np_dtypedatetime_datarG   formatr   NotImplementedError)rT   papa_type
format_strr]   rI   rI   rJ   dtype_to_arrow_c_fmte   s2   



ru   )rT   r   rU   rV   )r5   
__future__r   typingnumpyr`   pandas._libsr   pandas.core.dtypes.dtypesr   r   r   TYPE_CHECKINGpandas._typingr   ri   r/   rK   ru   rI   rI   rI   rJ   <module>   sv    	
!"	