
    Ng>                        d dl Z d dlZd dlmZ d dlmZmZ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 erddlmZ 	 d dlmZ d d	lmZ d d
lmZ n-# e$ r%  ede j                    e j        d           Y nw xY w G d de          ZdS )    N)zip_longest)
TYPE_CHECKINGAnyCallableDict	GeneratorListOptionalSetTupleUnion)TerminalNode   )InterpolationResolutionError)Node)OmegaConfGrammarLexer)OmegaConfGrammarParser)OmegaConfGrammarParserVisitorzYError importing OmegaConf's generated parsers, run `python setup.py antlr` to regenerate.)filec            
       8    e Zd Zdeeeee                  ged         f         dedef         deee                  de	eef         f fdZ
dee         d	ed
ee         fdZd
ee         fdZdej        d
efdZdej        d
efdZdej        d
efdZdej        d
e	eef         fdZdej        d
efdZdej        d
efdZdej        d
ed         fdZdej        d
efdZdej        d
e eef         fdZ!dej"        d
ee         fdZ#dej$        d
efdZ%dej&        d
efdZ'dej(        d
efdZ)dej*        d
e+eddf         fdZ,dej-        d
efdZ.dej/        d
efdZ0de1ej$        ej        f         d
efdZ2d ee1e3ej        f                  d
efd!Z4 xZ5S )"GrammarVisitornode_interpolation_callbackr   resolver_interpolation_callback.memokwc                 d     t                      j        di | || _        || _        || _        dS )a  
        Constructor.

        :param node_interpolation_callback: Callback function that is called when
            needing to resolve a node interpolation. This function should take a single
            string input which is the key's dot path (ex: `"foo.bar"`).

        :param resolver_interpolation_callback: Callback function that is called when
            needing to resolve a resolver interpolation. This function should accept
            three keyword arguments: `name` (str, the name of the resolver),
            `args` (tuple, the inputs to the resolver), and `args_str` (tuple,
            the string representation of the inputs to the resolver).

        :param kw: Additional keyword arguments to be forwarded to parent class.
        N )super__init__r   r   r   )selfr   r   r   r   	__class__s        U/var/www/html/ai-engine/env/lib/python3.11/site-packages/omegaconf/grammar_visitor.pyr   zGrammarVisitor.__init__(   s=    2 	2+F(/N,			    	aggregate
nextResultreturnc                     t           NNotImplementedError)r    r$   r%   s      r"   aggregateResultzGrammarVisitor.aggregateResultF   s    !!r#   c                     t           r(   r)   )r    s    r"   defaultResultzGrammarVisitor.defaultResultI   s    !!r#   ctxc           
      "   ddl m} |                                dk    sJ |                    d          }t	          |t
          j                  r ||                     |                    }t	          |t                    sJt          d| dt          |           d|                    d                                                     |S t	          |t                    rt	          |j        j        t                    sJ |j        j        S )Nr   
_get_valuer   zrThe following interpolation is used to denote a config key and thus should return a string, but instead returned `z` of type `z`: )_utilsr1   getChildCountgetChild
isinstancer   InterpolationContextvisitInterpolationstrr   typegetTextr   symboltext)r    r.   r1   childress        r"   visitConfigKeyzGrammarVisitor.visitConfigKeyM   s3   &&&&&&   ""a''''Qe3HII 	%*T44U;;<<Cc3'' 2GJMG G!#YYG G+.<<??+B+B+D+DG G  
 Je\22 z!38 8    <$$r#   c                     |                                 dk    sJ |                     |                    d                    S N   r   r3   visitr4   r    r.   s     r"   visitConfigValuezGrammarVisitor.visitConfigValueb   ;      ""a''''zz#,,q//***r#   c                 ,    |                      |          S r(   _createPrimitiverE   s     r"   visitDictKeyzGrammarVisitor.visitDictKeyg       $$S)))r#   c                                                       dk    sJ t           fdt          d                                 dz
  d          D                       S )NrB   c              3   h   K   | ],}                                         |                    V  -d S r(   )visitDictKeyValuePairr4   ).0ir.   r    s     r"   	<genexpr>z4GrammarVisitor.visitDictContainer.<locals>.<genexpr>o   sO       
 
 &&s||A77
 
 
 
 
 
r#   r   )r3   dictrangerE   s   ``r"   visitDictContainerz!GrammarVisitor.visitDictContainerj   s}       ""a'''' 
 
 
 
 
1c//11A5q99
 
 
 
 
 	
r#   c                     |                                 dk    sJ |                     |                    d                    S Nr   r   rC   rE   s     r"   visitElementzGrammarVisitor.visitElementt   rG   r#   c                     |                                 dk    sJ |                     |                    d                    S rW   rC   rE   s     r"   r7   z!GrammarVisitor.visitInterpolationy   s=       ""a''''zz#,,q//***r#   c                 V   |                                 dk    sJ g }|                                D ]}t          |t                    rn|j        }|j        t          j        t          j        t          j	        fv r|
                    |j                   c|j        t          j        t          j        fv sJ t          |t          j                  sJ |
                    |                     |                     d                    |          }|                     || j                  S )N    )r3   getChildrenr5   r   r;   r9   r   DOTBRACKET_OPENBRACKET_CLOSEappendr<   
INTER_OPENINTER_CLOSEr   ConfigKeyContextr?   joinr   r   )r    r.   inter_key_tokensr=   s	inter_keys         r"   visitInterpolationNodez%GrammarVisitor.visitInterpolationNode   s7      ""a''''__&& 	D 	DE%.. DL6)-)6)7  
 %++AF33336-8-9&     
 "%)?)PQQQQQ ''(;(;E(B(BCCCCGG,--	//	49EEEr#   c                 T   d|                                 cxk    rdk    sn J |                     |                    d                    }|                    d          }g }g }t          |t                    r|j        j        t          j        k    sJ nat          |t          j
                  sJ |                     |          D ]/\  }}|                    |           |                    |           0|                     |t          |          t          |                    S )N      r   r[   )nameargsargs_str)r3   rD   r4   r5   r   r;   r9   r   BRACE_CLOSEr   SequenceContextvisitSequencera   r   tuple)r    r.   resolver_name	maybe_seqrn   ro   valtxts           r"   visitInterpolationResolverz)GrammarVisitor.visitInterpolationResolver   s-   
 C%%'',,,,1,,,,,,

3<<??33LLOO	i.. 	%#(,A,MMMMMMi)?)OPPPPP ..y99 % %SC   $$$$33t8__ 4 
 
 	
r#   c                    ddl m} |                                dk    sJ |                     |                    d                    }|                    d          }t          |t                    r|j        j        t          j
        k    sJ  ||                     |                    d                              }||fS )Nr   r0   r[   r   rB   )r2   r1   r3   rD   r4   r5   r   r;   r9   r   COLONrX   )r    r.   r1   keycolonvalues         r"   rO   z$GrammarVisitor.visitDictKeyValuePair   s     	'&&&&&  ""a''''jja))Qul++	
!%:%@@@@@
4,,S\\!__==>>Ezr#   c                     |                                 dv sJ |                                 dk    rg S |                    d          }t          |t          j                  sJ t          d |                     |          D                       S )NrB   r[   rB   r   c              3       K   | ]	\  }}|V  
d S r(   r   )rP   rv   _s      r"   rR   z4GrammarVisitor.visitListContainer.<locals>.<genexpr>   s&      CCFCCCCCCCCr#   )r3   r4   r5   r   rq   listrr   )r    r.   sequences      r"   visitListContainerz!GrammarVisitor.visitListContainer   s       ""f,,,,!##I<<??($:$JKKKKKCCd&8&8&B&BCCCCCCr#   c                 ,    |                      |          S r(   rI   rE   s     r"   visitPrimitivezGrammarVisitor.visitPrimitive   rL   r#   c                     |                                 }|dv sJ |dk    r5t          |                     |                    d                              ndS )Nr   r[   r   r\   )r3   r8   rD   r4   )r    r.   ns      r"   visitQuotedValuezGrammarVisitor.visitQuotedValue   sQ    F{{{{3466s4::cll1oo..///rAr#   c                    ddl m} |                                dk    sJ g }t          |                                          d d d         D ]}t          |t                    r<|j        j        t          j
        k    sJ |                    |j        j                   St          |t          j                  sJ  ||                     |                    }t          |t                     s7t#          d|                                 d| dt          |                     |                    |           d                    |          S )Nr   r0   rB   z?The name of a resolver must be a string, but the interpolation z resolved to `z` which is of type .)r2   r1   r3   r   r]   r5   r   r;   r9   r   IDra   r<   r   r6   r7   r8   r   r:   re   )r    r.   r1   itemsr=   items         r"   visitResolverNamez GrammarVisitor.visitResolverName   sf   &&&&&&   ""a''''#//++,,SSqS1 	# 	#E%.. #|(,A,DDDDDU\.////!%)?)TUUUUU!z$"9"9%"@"@AA!$,, 6( ==??( (:>( (::( (  
 T""""xxr#   Nc              #     K   ddl m}                                 dk    sJ dfd}d}                                D ]}t	          |t
          j                  r7 ||                     |                    |                                fV  d}St	          |t                    r|j
        j        t          j        k    sJ |r |             dV  d}|r |             dV  d S d S )	Nr   r0   r&   c                  n                                     } t          j        d|  dt                     d S )NzIn the sequence `z` some elements are missing: please replace them with empty quoted strings. See https://github.com/omry/omegaconf/issues/572 for details.)category)r:   warningswarnUserWarning)rw   r.   s    r"   empty_str_warningz7GrammarVisitor.visitSequence.<locals>.empty_str_warning   sR    ++--CMQC Q Q Q %	     r#   TF)r\   r\   )r&   N)r2   r1   r3   r]   r5   r   ElementContextrX   r:   r   r;   r9   r   COMMA)r    r.   r1   r   is_previous_commar=   s    `    r"   rr   zGrammarVisitor.visitSequence   sR      	'&&&&&   ""a''''	 	 	 	 	 	 !__&& 	- 	-E%!7!FGG -
 !j!2!25!9!9::EMMOOKKKK$)!! ul33)-B-HHHHH$ -%%''' LLLL(,%% 	LLLLL	 	r#   c                     |                                 dk    sJ |                     |                    d                    S rA   rC   rE   s     r"   visitSingleElementz!GrammarVisitor.visitSingleElement  s=       ""a''''zz#,,q//***r#   c                 "   |                                 dk    rD|                    d          }t          |t          j                  r|                     |          S |                     t          |                                                    S rW   )	r3   r4   r5   r   r6   r7   	_unescaper   r]   )r    r.   cs      r"   	visitTextzGrammarVisitor.visitText#  sz     !##QA!3HII 2..q111 ~~d3??#4#455666r#   c                    |                                 dk    r|                    d          }t          |t          j                  r|                     |          S t          |t                    sJ |j        }|j        t          j
        t          j        t          j        fv r|j        S |j        t          j        k    rd S |j        t          j        k    rt!          |j                  S |j        t          j        k    rt%          |j                  S |j        t          j        k    r|j                                        dk    S |j        t          j        k    r|                     |g          S |j        t          j        k    rt1          d          J |j                    |                     t3          |                                                    S )Nr   r   truezWS should never be reached)r3   r4   r5   r   r6   r7   r   r;   r9   r   r   UNQUOTED_CHARrz   r<   NULLINTintFLOATfloatBOOLlowerESCr   WSAssertionErrorr   r]   )r    r.   r=   r;   s       r"   rJ   zGrammarVisitor._createPrimitive/  s    !##LLOOE%!7!LMM 6..u555e\22222\F{%(%3%+  
 {" 5 :::t 5 9996;''' 5 ;;;V[))) 5 :::{((**f44 5 999~~ug... 5 888$%ABBB%&+%%%~~d3??#4#455666r#   seqc                    g }t          ||dd                   D ]A\  }}t          |t                    r|j        }|j        t
          j        k    r)|j        t          |j                  dz  dz    d         }n|j        t
          j	        k    s`|j        t
          j
        k    rt          |t          j                  s1|j        t
          j        k    r-|t          |t          j                  r|j        ddd         }nF|j        }n>t          |t          j                  sJ t          |                     |                    }|                    |           Cd                    |          S )a<  
        Concatenate all symbols / interpolations in `seq`, unescaping symbols as needed.

        Interpolations are resolved and cast to string *WITHOUT* escaping their result
        (it is assumed that whatever escaping is required was already handled during the
        resolving of the interpolation).
        r   NrB   r\   )r   r5   r   r;   r9   r   	ESC_INTERr<   lenr   TOP_ESCr   r6   
QUOTED_ESCr8   r7   ra   re   )r    r   chrsnode	next_noderg   r<   s          r"   r   zGrammarVisitor._unescapeU  sq    *3ABB88 %	 %	OD)$-- #:K62<<< 6CKK1$4q$8"9";";<DD F3777 "7"???&%'='R  @ "7"BBB%-) )+A+V    . 6!$Q$<DD6DD!$(>(STTTTT42248899KKwwt}}r#   )6__name__
__module____qualname__r   r8   r
   r   r   r   r   r   r	   r+   r-   r   rd   r?   ConfigValueContextrF   DictKeyContextrK   DictContainerContextrU   r   rX   r6   r7   InterpolationNodeContextri   InterpolationResolverContextrx   DictKeyValuePairContextr   rO   ListContainerContextr   PrimitiveContextr   QuotedValueContextr   ResolverNameContextr   rq   r   rr   SingleElementContextr   TextContextr   r   rJ   r   r   __classcell__)r!   s   @r"   r   r   '   s	       %-(3s8$%V&
 *2#s(); s3x  38n     <"c " "S	 " " " ""tCy " " " "%"8"I %c % % % %*+$:$M +RU + + + +
* 6 E *# * * * *
)>
	c3h
 
 
 
+ 6 E +# + + + +
+)>+	+ + + +F)BF	&	F F F FB
)F
	
 
 
 
2)A	sCx   	D)>	D	c	D 	D 	D 	D*"8"I *c * * * *B$:$M BRU B B B B%;%O TW    ,()9(	3d?	#( ( ( (T+)>+	+ + + +
73? 
7C 
7 
7 
7 
7$7"3"13
$7 
$7 $7 $7 $7L3%&<&QQRS3 
3 3 3 3 3 3 3 3r#   r   ) sysr   	itertoolsr   typingr   r   r   r   r   r	   r
   r   r   r   antlr4r   errorsr   baser   +omegaconf.grammar.gen.OmegaConfGrammarLexerr   ,omegaconf.grammar.gen.OmegaConfGrammarParserr   3omegaconf.grammar.gen.OmegaConfGrammarParserVisitorr   ModuleNotFoundErrorprintstderrexitr   r   r#   r"   <module>r      s   



  ! ! ! ! ! !                               0 0 0 0 0 0 QQQQQQSSSSSS          	EcZ    CHQKKKKKa a a a a2 a a a a as   A 'A98A9