+
    i                     t  a  R t&0 t ^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIHt ^ RI	H
t
 ^ RI	Ht ^ RI	Ht ^ RIHt ] ^ k  ^ RIHt ^ R	IHt R
t]t]P2                  ! ]4      tRt ! R R]4      t ! R R]4      t]
P>                  ! R4      R 4       t R t!R t"RR lt#R t$RR lt%R#   ]]3 d    Rt]t Lfi ; i)    N)AnyTemplateSyntaxError)performance)
type_utils)util)
write_file)DebugUndefined)TemplateTFzCI_MISSING_JINJA_VAR/c                   h   a a ] tR t^.t oV3R lV 3R lltR t]RV3R lR ll4       tRtRt	Vt
V ;t# )	JinjaSyntaxParsingExceptionc                $   < V ^8  d   QhRS[ RR/# )   errorreturnNr   )format__classdict__s   "5/usr/lib/python3/dist-packages/cloudinit/templater.py__annotate__(JinjaSyntaxParsingException.__annotate__/   s     
# 
#"
# 

#    c                   < \         ST `  VP                  ;'       g    R VP                  VP                  VP
                  4       VP                  V n        R# )zunknown syntax errorN)super__init__messagelinenonamefilenamesource)selfr   	__class__s   &&r   r   $JinjaSyntaxParsingException.__init__/   sD     	MM333LLJJNN		
 llr   c                    V P                  V P                  V P                  V P                  P	                  4       V P                  ^,
          ,          P                  4       R7      # );Avoid jinja2.TemplateSyntaxError multi-line __str__ format.syntax_errorline_numberline_content)format_error_messager   r   r   
splitlinesstripr    s   &r   __str__#JinjaSyntaxParsingException.__str__;   sN    ((//1$++/BHHJ ) 
 	
r   c                2   < V ^8  d   QhRS[ RS[ RS[ RS[ /# )r   r&   r'   r(   r   )str)r   r   s   "r   r   r   D   s1     
 


 
 
	
r   c                d    V'       d   RV 2MRp\         P                  P                  V VVR7      # )r$   z:  r%   )r   message_templater   r%   s   &&&r   r)   0JinjaSyntaxParsingException.format_error_messageC   s<     /;L>**;;BB%#% C 
 	
r   zfUnable to parse Jinja template due to syntax error: {syntax_error} on line {line_number}{line_content})r   )r2   )__name__
__module____qualname____firstlineno__r   r-   staticmethodr)   r3   __static_attributes____classdictcell____classcell__)r!   r   s   @@r   r   r   .   s:     
# 
#
 
 
 
	= r   r   c                   0   a  ] tR t^Yt o RtR tR tRtV tR# )UndefinedJinjaVariablez>Class used to represent any undefined jinja template variable.c                .    \         : V P                  : 2# N)MISSING_JINJA_PREFIX_undefined_namer,   s   &r   r-   UndefinedJinjaVariable.__str__\   s    -t/C/CDDr   c                    \        V4      P                  \        R 4      p\        RP	                  V P
                  VR7      4      h)r2   zhUndefined jinja variable: "{this}-{other}". Jinja tried subtraction. Perhaps you meant "{this}_{other}"?)thisother)r0   replacerA   	TypeErrorr   rB   )r    rF   s   &&r   __sub__UndefinedJinjaVariable.__sub___   sI    E
""#7<@@F)) AG A
 	
r    N)	r5   r6   r7   r8   __doc__r-   rI   r:   r;   )r   s   @r   r>   r>   Y   s     HE
 
r   r>   zRendering basic templatec                >   a V3R lp\         P                  ! RW 4      # )zThis does simple replacement of bash variable like templates.

It identifies patterns like ${a} or $a and can also identify patterns like
${a.b} or $a.b which will look for a key 'b' in the dictionary rooted
by key 'a'.
c           
      X  < V P                  ^4      pVf   V P                  ^4      pVf   \        R4      h\        P                  ! VP	                  R4      4      pSp\        V4      ^8  d]   VP                  4       p\        V\        4      '       g-   \        RV: R\        P                  ! V4      : RV: R24      hW4,          pKl  VP                  4       p\        V\        4      '       g,   \        RV: RV: R\        P                  ! V4      : 24      h\        W4,          4      # )	   z,Match encountered but no valid group present.z&Can not traverse into non-dictionary 'z
' of type z while looking for subkey ''zCan not extract key 'z' from non-dictionary ')groupRuntimeErrorcollectionsdequesplitlenpopleft
isinstancedictrH   tuobj_namer0   )matchr   pathselected_paramskeyparamss   &    r   replacerbasic_render.<locals>.replacerr   s    {{1~<;;q>D<MNN  C1 $i!m,,.Cot44 'O(DcK  .2Olln/400_)EG  ?'((r   z)\$\{([A-Za-z0-9_.]+)\}|\$([A-Za-z0-9_.]+))resub)contentra   rb   s   &f r   basic_renderrg   i   s     )6 664h r   c                    R  pV P                  R4      R8w  d   V P                  R^4      w  r#MT pRp\        P                  ! RV\        P                  4      pV'       g
   R\
        V 3# VP                  ^4      P                  4       P                  4       pVR	9  d   \        RV,          4      hVR8X  d+   \        '       g   \        P                  R4       R\
        V3# VR8X  d   \        '       d   RW3# R\
        V3# )
c           	         V P                  R 4      '       d   R MRp \        P                  ! R4      ;_uu_ 4        \        V \        RR.R7      P
                  ! R/ VB V,            uuRRR4       #   + '       g   i     R# ; i  \         d,   pT;P                  ^,          un        \        TR7      ThRp?i\         d   pYDhRp?ii ; i)	
r2   zRendering jinja2 templateTzjinja2.ext.do)	undefinedtrim_blocks
extensionsN)r   rK   )
endswithr   Timed	JTemplater>   renderr   r   r   	Exception)rf   ra   addtemplate_syntax_errorunknown_errors   &&   r   jinja_render%detect_template.<locals>.jinja_render   s    &&t,,d"	3""#>??"8$($3#4	
 f '
  &'  @??? # 	)!((A-(-+()  	32	3sF   B ,A2'
B 2B	=B B C&B77CCCCrj   r2   z##\s*template:(.*)basicjinjaz.Unknown template rendering type '%s' requestedzcJinja not available as the selected renderer for desired template, reverting to the basic renderer.)ry   rx   )findrV   rd   r]   Irg   rR   lowerr+   
ValueErrorJINJA_AVAILABLELOGwarning)textrv   identrest
type_matchtemplate_types   &     r   detect_templater      s    3, yy"jjq)t/=Jt,,"((+11399; 22@   G#OOKKF \400g%//\00t,,r   c                     V'       g   / p\        \        P                  ! V 4      4      w  r#p\        P	                  R W4       V! WA4      # )z+Rendering content of '%s' using renderer %s)r   r   load_text_filer   debug)fnra   r   rendererrf   s   &&   r   render_from_filer      s>    '6t7J7J27N'O$MWII;ROG$$r   c                 L    \        W4      p\        P                  ! WVR 7       R# ))modeN)r   r   r	   )r   outfnra   r   contentss   &&&& r   render_to_filer      s    +HOOE$/r   c                B    V'       g   / p\        V 4      w  r#p V! W4      # )zRender string)r   )rf   ra   _template_typer   s   &&  r   render_stringr      s$    (7(@%NgG$$r   c                 \   \         P                  ! V4      pR V RV/p\        WV4      P                  4       R,           pV'       d3   \         P                  ! VRR7      pV'       g   \        RV,          4      hVR8X  d"   \        P                  P                  V4       R	# \        W%RR7       R	# )
variantprefixrj   T)defaultz.Cannot render template file %s - invalid yaml.-w)omodeN)
r   r   r   rstrip	load_yamlrS   sysstdoutwriter	   )r   templateoutputis_yamlr   r   
tpl_paramsouts   &&&&&   r   render_templater      s    ""8,HWh7Jh3;;=DHnnXt4@8K  }

"63/r   c                @    V ^8  d   Qh/ ^ \         9   d
   \        ;R&   # )r   
JUndefined)__conditional_annotations__r   )r   s   "r   r   r      s        C! r   )i  r@   )'r   rT   loggingrd   r   typingr   jinja2r   	cloudinitr   r   r[   r   cloudinit.atomic_helperr	   r
   _DebugUndefinedr   rp   r   r   ImportErrorAttributeErrorobject	getLoggerr5   r   rA   r   r>   timedrg   r   r   r   r   r   r   )r   s   @r   <module>r      s       	 
  & ! &  .
 8,O J
 !. &"5 &V
Z 
  -.% /%P/-d%0
%0g 	^$ OJs    B' 'B76B7