o
    @j2                     @   s  d dl Z d dlZd dlmZmZmZmZmZmZm	Z	m
Z
 d dlmZ ddlmZmZmZ ddlmZmZmZmZ ddlmZmZ erHddlmZ 	 d	Ze jG d
d dZe jG dd dZG dd dZ G dd de Z!G dd dej"e Z#G dd dej"e Z$G dd dej%e Z%dededefddZ&G dd dej'e!Z'G dd  d ej(e Z(G d!d" d"ej(e Z)G d#d$ d$ej*e!Z*G d%d& d&ej+e Z+d'e	d( dede	e,ef fd)d*Z-G d+d, d,ej.e Z.G d-d. d.ej/e Z/G d/d0 d0ej0e Z0G d1d2 d2ej1e Z1G d3d4 d4ej2e Z2d5ede3fd6d7Z4d8ed9edede3fd:d;Z5G d<d= d=ej6e Z6G d>d? d?ej7e Z7G d@dA dAej8e Z8G dBdC dCej9e Z9G dDdE dEej:e Z:e	e+e*e.e/e0e9f Z;dS )F    N)AnyDict	GeneratorListSetTYPE_CHECKINGUnioncast)ast   )FluentCyclicReferenceErrorFluentFormatErrorFluentReferenceError)
FluentType
FluentNone	FluentIntFluentFloat)reference_to_idunknown_reference_error_obj)FluentBundlei	  c                   @   s>   e Zd ZU ejedZeee	f e
d< ejddZee
d< dS )CurrentEnvironmentfactoryargsT)defaulterror_for_missing_argN)__name__
__module____qualname__attribdictr   r   strr   __annotations__r   bool r%   r%   f/var/www/www-root/data/www/ai-bot.pdev.uz/venv/lib/python3.10/site-packages/fluent/runtime/resolver.pyr   !   s   
 r   c                   @   s   e Zd ZU e Zded< e Zee	 ed< ejdddZ
eed< ejeddZeej ed	< ejed
Zeed< ejdeded fddZddeeeef df defddZdS )ResolverEnvironmentr   contexterrorsr   F)r   init
part_count)r   r*   active_patternsr   currentreplacementsreturn)r'   NNc                 k   s,    | j }tj|fi || _ | V  || _ dS )z
        Context manager that modifies the 'current' attribute of the
        environment, restoring the old data at the end.
        N)r-   r   evolve)selfr.   old_currentr%   r%   r&   modified:   s
   
zResolverEnvironment.modifiedNr   c                 C   s    | j |d ur|ddS i ddS )NF)r   r   )r3   )r1   r   r%   r%   r&   modified_for_term_referenceG   s
   z/ResolverEnvironment.modified_for_term_referenceN)r   r   r   r   r    r(   r#   r)   r   	Exceptionr+   intsetr,   r   FTLPatternr   r-   
contextlibcontextmanagerr   r   r3   r   r   r"   r4   r%   r%   r%   r&   r'   2   s   
 (r'   c                   @   s"   e Zd ZdZdedefddZdS )BaseResolvera  
    Abstract base class of all partially evaluated resolvers.

    Subclasses should implement __call__, with a
    ResolverEnvironment as parameter. An exception are wrapper
    classes that don't show up in the evaluation, but need to
    be part of the compiled tree structure.
    envr/   c                 C   s   t r5   )NotImplementedErrorr1   r>   r%   r%   r&   __call__V   s   zBaseResolver.__call__N)r   r   r   __doc__r'   r   rA   r%   r%   r%   r&   r=   L   s    	r=   c                   @   s   e Zd ZU eed< dS )LiteralvalueN)r   r   r   r"   r#   r%   r%   r%   r&   rC   Z   s   
 rC   c                       sp   e Zd ZU ded< ed ed< eedf ed< 			dddded deed df d	ed
ef
 fddZ	  Z
S )Message
Identifierid)r:   NrD   r:   
attributesN	Attributecommentkwargsc                    @   t  jdi | || _|| _|rdd |D | _d S i | _d S )Nc                 S      i | ]}|j j|jqS r%   rG   namerD   .0r   r%   r%   r&   
<dictcomp>l       z$Message.__init__.<locals>.<dictcomp>r%   super__init__rG   rD   rH   r1   rG   rD   rH   rJ   rK   	__class__r%   r&   rV   c      "zMessage.__init__)NNN)r   r   r   r#   r   r   r"   r   r   rV   __classcell__r%   r%   rX   r&   rE   ^   s$   
 rE   c                       sf   e Zd ZU ded< ded< eedf ed< 		ddddddeed df ded	ef
 fd
dZ	  Z
S )TermrF   rG   r:   rD   rH   NrI   rJ   rK   c                    rL   )Nc                 S   rM   r%   rN   rP   r%   r%   r&   rR   }   rS   z!Term.__init__.<locals>.<dictcomp>r%   rT   rW   rX   r%   r&   rV   t   rZ   zTerm.__init__)NN)r   r   r   r#   r   r"   r   r   r   rV   r[   r%   r%   rX   r&   r\   o   s"   
 r\   c                       sV   e Zd ZU dZeed  ed< dedef fddZde	d	ee
ef fd
dZ  ZS )r:   i  )TextElement	Placeableelementsr   rK   c                    s   t  j|i | d S r5   )rU   rV   )r1   r   rK   rX   r%   r&   rV      s   zPattern.__init__r>   r/   c                    s   |  j v r jtd t S  j |  | j}| j j }t	| j|kr4 j 
|  td| jd fdd|D }  jt	|7  _ j 
|  |S )NzCyclic referencez+Too many parts in message (> {}), aborting. c                 3   s    | ]
}t |  V  qd S r5   )resolve)rQ   elementr>   r%   r&   	<genexpr>   s    
z#Pattern.__call__.<locals>.<genexpr>)r,   r)   appendr   r   addr_   	MAX_PARTSr+   lenremove
ValueErrorformatjoin)r1   r>   r_   remaining_partsretvalr%   rc   r&   rA      s"   
zPattern.__call__)r   r   r   rg   r   r   r#   r   rV   r'   r"   r   rA   r[   r%   r%   rX   r&   r:      s
   
 "r:   	fluentishr>   r/   c                 C   sH   t | tr| |jjS t | tr"t| tkr"tdt| t	j
| S )Nz8Too many characters in placeable ({}, max allowed is {}))
isinstancer   rk   r(   _babel_localer"   rh   MAX_PART_LENGTHrj   r:   rg   )ro   r>   r%   r%   r&   ra      s   

ra   c                   @   (   e Zd ZU eed< dedefddZdS )r]   rD   r>   r/   c                 C      | j S r5   rD   r@   r%   r%   r&   rA         zTextElement.__call__Nr   r   r   r"   r#   r'   rA   r%   r%   r%   r&   r]         
 r]   c                   @   s,   e Zd ZU ed ed< dedefddZdS )r^   )InlineExpressionr^   SelectExpression
expressionr>   r/   c                 C   s(   t | ||}|jjs|S d| d S )Nu   ⁨u   ⁩)ra   r{   r(   use_isolatingr1   r>   innerr%   r%   r&   rA      s   zPlaceable.__call__N)r   r   r   r   r#   r'   r   rA   r%   r%   r%   r&   r^      s   
 r^   c                   @   s2   e Zd ZU ededf ed< dedefddZdS )	NeverIsolatingPlaceablery   rz   r{   r>   r/   c                 C   s   t | ||}|S r5   )ra   r{   r}   r%   r%   r&   rA      s   z NeverIsolatingPlaceable.__call__N)	r   r   r   r   r^   r#   r'   r   rA   r%   r%   r%   r&   r      s   
 r   c                   @   rs   )StringLiteralrD   r>   r/   c                 C   s   |   d S )NrD   )parser@   r%   r%   r&   rA      s   zStringLiteral.__call__Nrw   r%   r%   r%   r&   r      rx   r   c                       sR   e Zd ZU eeef ed< dedef fddZ	de
deeef fddZ  ZS )	NumberLiteralrD   rK   c                    sD   t  j|fi | dtt| jv rt| j| _d S t| j| _d S )N.)rU   rV   r	   r"   rD   r   r   )r1   rD   rK   rX   r%   r&   rV      s   zNumberLiteral.__init__r>   r/   c                 C   rt   r5   ru   r@   r%   r%   r&   rA      rv   zNumberLiteral.__call__)r   r   r   r   r   r   r#   r"   r   rV   r'   rA   r[   r%   r%   rX   r&   r      s   
 "r   ref)MessageReferenceTermReferencec                 C   s   z!|j j| jjt| tjd}| jr|j| jj }n|j	}||W S  t
y>   t| }|jt| td| d Y S  tyY   t| }|jtd|  t| Y S w )N)term{}zNo pattern: )r(   _lookuprG   rO   rp   r9   r   	attributerH   rD   LookupErrorr   r)   re   r   r   	TypeErrorr   )r   r>   entrypatternref_idr%   r%   r&   resolveEntryReference   s   
r   c                   @   s<   e Zd ZU ded< ed ed< dedeeef fddZd	S )
r   rF   rG   rF   Nr   r>   r/   c                 C   s
   t | |S r5   )r   r@   r%   r%   r&   rA      s   
zMessageReference.__call__N	r   r   r   r#   r   r'   r"   r   rA   r%   r%   r%   r&   r         
 r   c                   @   sH   e Zd ZU ded< ed ed< ed ed< dedeeef fd	d
ZdS )r   rF   rG   r   r   )CallArgumentsN	argumentsr>   r/   c                    s~   | j r | j jr jtdt|   fdd| j jD }nd } j|d t	|  W  d    S 1 s8w   Y  d S )Nz0Ignored positional arguments passed to term '{}'c                       i | ]
}|j j | qS r%   rO   rD   rQ   kwargrc   r%   r&   rR          z*TermReference.__call__.<locals>.<dictcomp>)r   )
r   
positionalr)   re   r   rk   r   namedr4   r   )r1   r>   rK   r%   rc   r&   rA      s   

$zTermReference.__call__Nr   r%   r%   r%   r&   r      s
   
 r   c                   @   s(   e Zd ZU ded< dedefddZdS )VariableReferencerF   rG   r>   r/   c                 C   s   | j j}z|jj| }W n ty(   |jjr"|jtd|  t	| Y S w t
|ttfr2|S |jtd|t| t	|S )NzUnknown external: z!Unsupported external type: {}, {})rG   rO   r-   r   r   r   r)   re   r   r   rp   r   r"   r   rk   type)r1   r>   rO   arg_valr%   r%   r&   rA     s    
zVariableReference.__call__N)r   r   r   r#   r'   r   rA   r%   r%   r%   r&   r     rx   r   c                   @   s   e Zd ZU ded< eed< dS )rI   rF   rG   rD   N)r   r   r   r#   r:   r%   r%   r%   r&   rI     s   
 rI   c                   @   s<   e Zd ZU ded< ed ed< dedeeef fddZ	d	S )
rz   ry   selectorVariantvariantsr>   r/   c                 C   sv   |  |}d }d }| jD ]}|jr|}t||||r |} nq|d u r6|d u r4|jtd t S |}|	|S )Nz
No default)
r   r   r   matchkeyr)   re   r   r   rD   )r1   r>   r   r   foundvariantr%   r%   r&   rA   "  s    


zSelectExpression.__call__N)
r   r   r   r#   r   r'   r   r"   r   rA   r%   r%   r%   r&   rz     r   rz   valc                 C   s   t | ttfS r5   )rp   r7   float)r   r%   r%   r&   	is_number6  s   r   val1val2c                 C   sv   | d u s	t | trdS |d u st |trdS t| r*t|s)tt|j| |kS n
t|r4t|| |S tt| |kS )NF)rp   r   r   r	   r$   r(   _plural_formr   )r   r   r>   r%   r%   r&   r   :  s   r   c                   @   s.   e Zd ZU edef ed< eed< eed< dS )r   rF   r   rD   r   N)r   r   r   r   r   r#   r:   r$   r%   r%   r%   r&   r   I  s   
 r   c                   @   rs   )rF   rO   r>   r/   c                 C   rt   r5   )rO   r@   r%   r%   r&   rA   R  rv   zIdentifier.__call__Nrw   r%   r%   r%   r&   rF   O  rx   rF   c                   @   s.   e Zd ZU eedef  ed< ed ed< dS )r   ry   r   NamedArgumentr   N)r   r   r   r   r   r^   r#   r%   r%   r%   r&   r   V  s   
 r   c                   @   s0   e Zd ZU eed< eed< dedefddZdS )FunctionReferencerG   r   r>   r/   c              
      s    fdd| j jD } fdd| j jD }| jj}z jj| }W n ty<    j	t
d| t|d  Y S w z||i |W S  tyc } z j	| t|d W  Y d }~S d }~ww )Nc                    s   g | ]}| qS r%   r%   )rQ   argrc   r%   r&   
<listcomp>`  s    z.FunctionReference.__call__.<locals>.<listcomp>c                    r   r%   r   r   rc   r%   r&   rR   a  r   z.FunctionReference.__call__.<locals>.<dictcomp>zUnknown function: {}z())r   r   r   rG   rO   r(   
_functionsr   r)   re   r   rk   r   r6   )r1   r>   r   rK   function_namefunctioner%   rc   r&   rA   _  s$   
zFunctionReference.__call__N)	r   r   r   rF   r#   r   r'   r   rA   r%   r%   r%   r&   r   [  s   
 r   c                   @   s&   e Zd ZU eed< eeef ed< dS )r   rO   rD   N)r   r   r   rF   r#   r   r   r   r%   r%   r%   r&   r   q  s   
 r   )<r   r;   typingr   r   r   r   r   r   r   r	   fluent.syntaxr
   r9   r)   r   r   r   typesr   r   r   r   utilsr   r   bundler   rr   sr   r'   r=   rC   EntryrE   r\   r:   ra   r]   r^   r   r   r   r"   r   r   r   r   rI   rz   r$   r   r   r   rF   r   r   r   ry   r%   r%   r%   r&   <module>   s`    (



