o
    5ti                     @   sd   d dl Z d dlmZ d dlmZmZmZ d dlmZm	Z	 ee
ef ZG dd dZG dd dZdS )	    N)Decimal)FinalOptionalUnion)NanTypecodec                   @   s&   e Zd ZU dZeed< dZeed< dS )Formatr   NONE   THOUSAND_SEPARATORN)__name__
__module____qualname__r	   r   __annotations__r    r   r   K/home/ubuntu/.local/lib/python3.10/site-packages/dataproperty/_formatter.pyr      s   
 r   c                
   @   s   e Zd ZU dZejdejdejdejdej	diZ
eeeef  ed< 		ddedee dee d	dfd
dZ	ddee d	eeef fddZ	ddedee d	efddZd	efddZd	efddZdee d	efddZdS )	Formatter)__is_formatting_float__format_flags__datetime_format_str{}_BLANK_CURLY_BRACES_FORMAT_MAPTNdatetime_format_stris_formatting_floatformat_flagsreturnc                 C   s(   |d ur|| _ ntj| _ || _|| _d S N)_Formatter__format_flagsr   r	   _Formatter__datetime_format_str_Formatter__is_formatting_float)selfr   r   r   r   r   r   __init__   s
   
zFormatter.__init__decimal_placesc                 C   sb   t  | j}|tj| tjtj| tj|tj| tjtj| tjtj	| tj	i |S r   )
copyr   updater   INTEGERmake_format_strREAL_NUMBERINFINITYNANDATETIME)r    r"   
format_mapr   r   r   make_format_map)   s   
zFormatter.make_format_maptypecodec                 C   sd   | j |}|d ur|S |tjkr|  S |tjtjtjfv r$| |S |tj	kr0d| j
 d S dS )N{:}z{:s})r   getr   r%   _Formatter__get_integer_formatr'   r(   r)   !_Formatter__get_realnumber_formatr*   r   )r    r-   r"   
format_strr   r   r   r&   9   s   


zFormatter.make_format_strc                 C   s   | j tj@ rdS dS )N, )r   r   r   r    r   r   r   __get_base_format_strK   s   zFormatter.__get_base_format_strc                 C   s   d|    d S )Nr.   zd})_Formatter__get_base_format_strr6   r   r   r   __get_integer_formatQ   s   zFormatter.__get_integer_formatc                 C   sp   | j sdS |  }|d u st| rd| d S zd|dd|dd d W S  ty1   Y nw d| d S )	Nr   r.   zf}s.dfr/   )r   r8   r   is_type
ValueError)r    r"   base_formatr   r   r   __get_realnumber_formatT   s   z!Formatter.__get_realnumber_format)TNr   )r   r   r   	__slots__r   r	   
IP_ADDRESSBOOL
DICTIONARYLISTr   r   dictstrr   r   boolintr!   DecimalPlacesr,   r&   r8   r1   r2   r   r   r   r   r      sH   
 



r   )r#   decimalr   typingr   r   r   typepyr   r   floatrK   r   r   r   r   r   r   <module>   s    