܍~cVddlZddlZddlmZddlZdZejdezejdejdgZdZGdd ej Z dS) N)StringIOz[a-zA-Z_]+[a-zA-Z0-9_]*z\$z\$[0-9#\?\-@\*]z\$\{.+\}cJtD]}||rdSdS)NTF)SHELL_VAR_REGEXESsearch)textrs D/usr/lib/python3/dist-packages/cloudinit/distros/parsers/sys_conf.py_contains_shell_variabler $s4  88D>> 44  5c,eZdZdZdZdZddZdZdS) SysConfaA 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"). cLtj||dddS)NFT) interpolationwrite_empty_values) configobj ConfigObj__init__)selfcontentss r rzSysConf.__init__4s5$$ (%D %     r c<|}t}t|ttfr)|d|n"|t ||S)N )writer isinstancelisttuplejoinstrgetvalue)rr out_contentss r __str__zSysConf.__str__9s}::<<zz hu . . .   tyy22 3 3 3 3   s8}} - - -$$&&&r Fc8t|tstd|zt|dkrdSd}|ddvr#|ddvrt|dkrfd}n|dr(|d rnQtjd |rz SysConf._quote..Ksd44Q77!;r z$()z [\t\r\n ]z[\n\"']c4||zSr()_get_triple_quoter+s r r-z SysConf._quote..Y$*@*@*C*Ca*Gr c4||zSr(r)r+s r r-z SysConf._quote..]r1r ) rr ValueErrorlenstrip startswithendswithrerr pipesquote)rvalue multiline quot_funcs` r _quotezSysConf._quoteBsJ%%% E9UCDD D u::??2 8z ! !eBi:&=&=5zzQ;;;; {{}}''-- 0%++--2H2H2M2M 09\5110/66 09Z77 G G G G&I !H G G G&I%*K  Lyr c|||}|||}||}||d||S)N=)_decode_elementr>)r indent_stringentry this_entrycommentvalkeycmnts r _write_linezSysConf._write_lineesx""4;;z#:#:;;""4;;u#5#566##G,, M C C C D   r N)F)__name__ __module__ __qualname____doc__rr r>rIr r r r +s`   '''! ! ! ! F      r r ) r9r8iorrSHELL_VAR_RULEcompilerr rr rNr r rRs  ,BJu~%&&BJ!""BJ{ F F F F F i!F F F F F r