
    x[h7                     \    S SK r S SKrS SKJr  S SKrSrS r " S S\R                  5      rg)    N)StringIOz[a-zA-Z_]+[a-zA-Z0-9_]*c                     [         R                  " S[        -   5      [         R                  " S5      [         R                  " S5      4 H  nUR                  U 5      (       d  M    g   g)Nz\$z\$[0-9#\?\-@\*]z\$\{.+\}TF)recompileSHELL_VAR_RULEsearch)textrs     D/usr/lib/python3/dist-packages/cloudinit/distros/parsers/sys_conf.py_contains_shell_variabler      sS     	

5>)*


%& 	

;	 88D>>	     c                   4    \ rS rSrSrS rS rS	S jrS rSr	g)
SysConf*   zA configobj.ConfigObj subclass specialised for sysconfig files.

:param contents:
    The sysconfig file to parse, in a format accepted by
    ``configobj.ConfigObj.__init__`` (i.e. "a filename, file like object,
    or list of lines").
c                 B    [         R                  R                  XSSS9  g )NFT)interpolationwrite_empty_values)	configobj	ConfigObj__init__)selfcontentss     r   r   SysConf.__init__3   s"    $$%D 	% 	
r   c                     U R                  5       n[        5       n[        U[        [        45      (       a0  UR                  SR                  U5      5        UR                  5       $ UR                  [        U5      5        UR                  5       $ )N
)writer   
isinstancelisttuplejoinstrgetvalue)r   r   out_contentss      r   __str__SysConf.__str__8   sp    ::<zhu..tyy23 $$&& s8}-$$&&r   c                 .  ^  [        U[        5      (       d  [        SU-  5      eU(       d  gS nUS   S;   a  US   S;   a  [        U5      S:X  a  U 4S jnOUR	                  5       R                  S5      (       a%  UR	                  5       R                  S	5      (       a  Of[        R                  " S
U5      (       aJ  [        U5      (       a*  [        R                  " SU5      (       a  U 4S jnOU 4S jnO[        R                  nU(       d  U$ U" U5      $ )NzValue "%s" is not a string r   )"'   c                 ,   > TR                  U 5      U -  $ N_get_single_quotexr   s    r   <lambda> SysConf._quote.<locals>.<lambda>J   s    d44Q7!;r   z$()z	[\t\r\n ]z[\n\"']c                 ,   > TR                  U 5      U -  $ r-   )_get_triple_quoter0   s    r   r2   r3   X       $*@*@*Ca*Gr   c                 ,   > TR                  U 5      U -  $ r-   r.   r0   s    r   r2   r3   \   r7   r   )r   r!   
ValueErrorlenstrip
startswithendswithr   r   r   shlexquote)r   value	multiline	quot_funcs   `   r   _quoteSysConf._quoteA   s    %%%9UCDD	8z!eBi:&=5zQ; 
 {{}''--%++-2H2H2M2M99\511/66 99Z77 G &
 !H & %*KK	Lr   c                     U R                  U R                  U5      5      nU R                  U R                  U5      5      nU R                  U5      nU< U< S< U< U< 3$ )N=)_decode_elementrC   )r   indent_stringentry
this_entrycommentvalkeycmnts           r   _write_lineSysConf._write_lined   s_     ""4;;z#:;""4;;u#56##G,
 	
r    N)F)
__name__
__module____qualname____firstlineno____doc__r   r$   rC   rO   __static_attributes__rQ   r   r   r   r   *   s    

'! F
r   r   )	r   r>   ior   r   r   r   r   r   rQ   r   r   <module>rY      s5    
   
 , F
i!! F
r   