
    ُkh>                        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  G d de      Zy# e$ r)  ede j:                          e j<                  d       Y 9w xY w)    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            
           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j2                  d
efdZdej6                  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jD                  d
ee   fdZ#dejH                  d
efdZ%dejL                  d
efdZ'dejP                  d
efdZ)dejT                  d
e+eddf   fdZ,dejZ                  d
efdZ.dej^                  d
efdZ0de1ejH                  ej&                  f   d
efdZ2d ee1e3ej2                  f      d
efd!Z4 xZ5S )"GrammarVisitornode_interpolation_callbackr   resolver_interpolation_callback.memokwc                 N    t        |   di | || _        || _        || _        y)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/teggl/fontify/venv/lib/python3.12/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} |j                         dk(  sJ |j                  d      }t	        |t
        j                        rc || j                  |            }t	        |t              s:t        d| dt        |       d|j                  d      j                                |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   s    &   "a'''Qe3HHIT44U;<Cc3'2JJM O!#YKs3<<?+B+B+D*EG 
 Je\2z!!38   <<$$$r#   c                 l    |j                         dk(  sJ | j                  |j                  d            S N   r   r3   visitr4   r    r.   s     r"   visitConfigValuezGrammarVisitor.visitConfigValueb   0      "a'''zz#,,q/**r#   c                 $    | j                  |      S r(   _createPrimitiverE   s     r"   visitDictKeyzGrammarVisitor.visitDictKeyg       $$S))r#   c                      j                         dk\  sJ t         fdt        dj                         dz
  d      D              S )NrB   c              3   ^   K   | ]$  }j                  j                  |             & y wr(   )visitDictKeyValuePairr4   ).0ir.   r    s     r"   	<genexpr>z4GrammarVisitor.visitDictContainer.<locals>.<genexpr>o   s,      
 &&s||A7
s   *-r   )r3   dictrangerE   s   ``r"   visitDictContainerz!GrammarVisitor.visitDictContainerj   sM       "a''' 
1c//1A5q9
 
 	
r#   c                 l    |j                         dk(  sJ | j                  |j                  d            S Nr   r   rC   rE   s     r"   visitElementzGrammarVisitor.visitElementt   rG   r#   c                 l    |j                         dk(  sJ | j                  |j                  d            S rW   rC   rE   s     r"   r7   z!GrammarVisitor.visitInterpolationy   s2       "a'''zz#,,q/**r#   c                 p   |j                         dk\  sJ g }|j                         D ]  }t        |t              r|j                  }|j
                  t        j                  t        j                  t        j                  fv r|j                  |j                         v|j
                  t        j                  t        j                  fv rJ t        |t        j                        sJ |j                  | j!                  |              dj#                  |      }| j%                  || 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   s      "a'''__& 	DE%.LL66)--)66)77 
 %++AFF366-88-99&   
 "%)?)P)PQQQ ''(;(;E(BC!	D$ GG,-	//	499EEr#   c                    d|j                         cxk  rdk  sJ  J | j                  |j                  d            }|j                  d      }g }g }t        |t              r)|j
                  j                  t        j                  k(  sYJ t        |t        j                        sJ | j                  |      D ]'  \  }}|j                  |       |j                  |       ) | j                  |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LLO	i.##((,A,M,MMMMi)?)O)OPPP ..y9 %SC $% 33t8_ 4 
 	
r#   c                 `   ddl m} |j                         dk(  sJ | j                  |j	                  d            }|j	                  d      }t        |t              r'|j                  j                  t        j                  k(  sJ  || j                  |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+!!%:%@%@@	
A 4,,S\\!_=>Ezr#   c                     |j                         dv sJ |j                         dk(  rg S |j                  d      }t        |t        j                        sJ t        d | j                  |      D              S )NrB   r[   rB   r   c              3   &   K   | ]	  \  }}|  y wr(   r   )rP   rv   _s      r"   rR   z4GrammarVisitor.visitListContainer.<locals>.<genexpr>   s     CFCCCs   )r3   r4   r5   r   rq   listrr   )r    r.   sequences      r"   visitListContainerz!GrammarVisitor.visitListContainer   sq       "f,,,!#I<<?($:$J$JKKKCd&8&8&BCCCr#   c                 $    | j                  |      S r(   rI   rE   s     r"   visitPrimitivezGrammarVisitor.visitPrimitive   rL   r#   c                     |j                         }|dv sJ |dk(  r)t        | j                  |j                  d                  S dS )Nr   r[   r   r\   )r3   r8   rD   r4   )r    r.   ns      r"   visitQuotedValuezGrammarVisitor.visitQuotedValue   sC    F{{346s4::cll1o./ArAr#   c                 b   ddl m} |j                         dk\  sJ g }t        |j	                               d d d   D ]  }t        |t              rO|j                  j                  t        j                  k(  sJ |j                  |j                  j                         bt        |t        j                        sJ  || j                  |            }t        |t               s+t#        d|j%                          d| dt        |             |j                  |        dj'                  |      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   s   &   "a'''#//+,SqS1 	#E%.||((,A,D,DDDDU\\../!%)?)T)TUUU!$"9"9%"@A!$,6Y ==?+>$?R:,( 
 T"	# xxr#   Nc              #     K   ddl m} j                         dk\  sJ dfd}d}j                         D ]  }t	        |t
        j                        r, || j                  |            |j                         f d}It	        |t              r'|j                  j                  t        j                  k(  sJ |r |        d d} |r |        d y y w)Nr   r0   c                  d    j                         } t        j                  d|  dt               y )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   s2    ++-CMM#C5 )P 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   s      	'   "a'''	 !__& 	-E%!7!F!FG
 !!2!25!9:EMMOKK$)! ul3))-B-H-HHI %%' L(,%#	-$ L s   CCc                 l    |j                         dk(  sJ | j                  |j                  d            S rA   rC   rE   s     r"   visitSingleElementz!GrammarVisitor.visitSingleElement  s2       "a'''zz#,,q/**r#   c                     |j                         dk(  r<|j                  d      }t        |t        j                        r| j                  |      S | j                  t        |j                                     S rW   )	r3   r4   r5   r   r6   r7   	_unescaper   r]   )r    r.   cs      r"   	visitTextzGrammarVisitor.visitText#  sa     !#QA!3HHI..q11 ~~d3??#4566r#   c                    |j                         dk(  r|j                  d      }t        |t        j                        r| j                  |      S t        |t              sJ |j                  }|j                  t        j                  t        j                  t        j                  fv r|j                  S |j                  t        j                  k(  ry |j                  t        j                  k(  rt!        |j                        S |j                  t        j"                  k(  rt%        |j                        S |j                  t        j&                  k(  r|j                  j)                         dk(  S |j                  t        j*                  k(  r| j-                  |g      S |j                  t        j.                  k(  rt1        d      J |j                         | j-                  t3        |j5                                     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OE%!7!L!LM..u55e\222\\F{{%((%33%++ 
 {{" 5 : :: 5 9 996;;'' 5 ; ;;V[[)) 5 : ::{{((*f44 5 9 99~~ug.. 5 8 88$%ABB%&++%5~~d3??#4566r#   seqc                 
   g }t        ||dd       D ]^  \  }}t        |t              r |j                  }|j                  t
        j                  k(  r*|j                  t        |j                        dz  dz    d }n|j                  t
        j                  k(  sp|j                  t
        j                  k(  rt        |t        j                        s9|j                  t
        j                  k(  r/|t        |t        j                        r|j                  ddd   }nC|j                  }n6t        |t        j                        sJ t        | j                  |            }|j!                  |       a dj#                  |      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  sL    *3AB8 %	OD)$-KK662<<< 66CK1$4q$8"9";<D FF3777 "7"?"??&%'='R'R "7"B"BB%-) )+A+V+V  66!$Q$<D66D!$(>(S(STTT422489KKK%	N 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"I %c %*+$:$M$M +RU +
* 6 E E *# *
)>>
	c3h
+ 6 E E +# +
+)>>+	+F)BBF	&	FB
)FF
	
2)AA	sCx	D)>>	D	c	D*"8"I"I *c *B$:$M$M BRU B%;%O%O TW ,()99(	3d?	#(T+)>>+	+
73?? 
7C 
7$7"33"113
$7 
$7L3%&<&Q&QQRS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QSa2 a  	cZZ CHHQKs   A +BB