o
    @j\                     @   s   d dl mZm Z  d dlmZ d dlmZmZ d dlmZm	Z	 ddl
mZmZmZmZmZ ddlmZ dZd	Zd
edefddZdeee	f defddZdedefddZdS )    )datedatetime)Decimal)AnyUnion)MessageReferenceTermReference   )	FluentIntFluentFloatFluentDecimal
FluentDateFluentDateTime)FluentReferenceError-.valreturnc                 C   sb   t | tr	t| S t | trt| S t | trt| S t | tr%t	| S t | t
r/t| S | S )z1
    Convert a python type to a Fluent Type.
    )
isinstanceintr
   floatr   r   r   r   r   from_date_timer   r   	from_date)r    r   c/var/www/www-root/data/www/ai-bot.pdev.uz/venv/lib/python3.10/site-packages/fluent/runtime/utils.pynative_to_fluent   s   






r   refc                 C   s>   t | trt| jj }n| jj}| jrd|t| jjgS |S )z
    Returns a string reference for a MessageReference or TermReference
    AST node.

    e.g.
       message
       message.attr
       -term
       -term.attr
     )r   r   
TERM_SIGILidname	attributejoinATTRIBUTE_SEPARATOR)r   startr   r   r   reference_to_id    s   
r%   ref_idc                 C   s<   t | v rtd|  S | trtd|  S td|  S )NzUnknown attribute: zUnknown term: zUnknown message: )r#   r   
startswithr   )r&   r   r   r   unknown_reference_error_obj6   s
   
r(   N)r   r   decimalr   typingr   r   fluent.syntax.astr   r   typesr
   r   r   r   r   errorsr   r   r#   r   strr%   r(   r   r   r   r   <module>   s    