
    Eg                    &   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/d0d1d2d3d4d5Z G d6 d7          Z G d8 d9          Z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large_stringUbinaryzz	time32[s]ttsttmttuttntdDtdmztss:ztsm:ztsu:ztsn:tDstDmtDutDn)z
time32[ms]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                  ^    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#   r%   r,   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     R/var/www/sysmax/venv/lib/python3.11/site-packages/pandas/core/interchange/utils.pyr3   r3   ;   s{          DDDEEFEFEFGGGFLFF &IDDDrM   r3   c                  "    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)r5   r6   r7   r8   LITTLEBIGNATIVENArL   rM   rN   rP   rP   ]   s(        88F
CF	BBBrM   rP   dtyper   returnstrc                   t          | t                    rt          j        S | t	          j        d          k    rt          j        S t          | t                    rddl}| j	        }|j
                            |          rd|j         d|j         S |j
                            |          r|j        d|j        d          d|j         S t"                              t'          |          d          }||S t)          t          | j                                        d          }||S t/          j        | d          rAt	          j        |           d         d         }t          j                            |d	
          S t          | t8                    r1t          j                            | j        d         | j        
          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   r3   rA   nprY   rF   r   pyarrowpyarrow_dtypetypes
is_decimal	precisionscaleis_timestamprd   unitPYARROW_CTYPESgetr[   getattrnameupperr   is_np_dtypedatetime_datarJ   formatr   NotImplementedError)rY   papa_type
format_strrc   s        rN   dtype_to_arrow_c_fmtr{   f   s    %)**   	"(3--		!!	E:	&	& 
%8w'' 	7;);;GM;;;X""7++ 	7
0F6Q66'*666#''Gd;;
!ej&6&6&8&8$??J
uc"" S %e,,Q/2
$++zb+III	E?	+	+ S$++uz!}+RRR
MMMM  rM   )rY   r   rZ   r[   )r8   
__future__r   typingnumpyrf   pandas._libsr   pandas.core.dtypes.dtypesr   r   r   TYPE_CHECKINGpandas._typingr   ro   r3   rP   r{   rL   rM   rN   <module>r      s    # " " " " "                     
 (''''''

C
C S c	
 c c C S S S  S c c C  c!" #$ =  D       D       - - - - - -rM   