a ”ˆ«haã@s>ddlZddlZddlmZej ¡ZeƒZGdd„dƒZ dS)éN)Úcommandsc@sZeZdZdZdd„Zddd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dS)ÚParserz; Parser used for expanding strings containing functions. cCs ||_dS©N)Ú _repository)ÚselfZ repository©rúC/usr/lib/python3.9/site-packages/tuned/profiles/functions/parser.pyÚ__init__szParser.__init__ÚcCs&d|_||_t|ƒ|_g|_d|_dS)NrF)Ú_cntÚ_strÚlenÚ_lenÚ_stackÚ_esc©rÚsrrrÚ _parse_inits  zParser._parse_initcCs|j|jkr|j|jSdS)Nr )r rr )rrrrÚ _curr_charszParser._curr_charcCs|j|j|j|…Sr)r r )rrrrrÚ _curr_substrszParser._curr_substrcCs|j ||jf¡dSr)rÚappendr )rZescrrrÚ _push_posszParser._push_poscCsd|jd|…||j|dd…|_t|jƒ|_|jt|ƒ||d7_|jdkr`d|_dS)Nér)r r rr )rÚaÚbrrrrÚ_sub!s &  z Parser._subcCsêt d|j||j…¡}|ddkr(dSdd„|Dƒ}t d|d¡s\t d|d¡dSz|j |d¡}Wn&t y–t d |d¡YdS0|  |d d…¡}t  d d   |dd…¡|f¡|durÖdS|  ||j|¡dS) Nz(?,óz(Parser._process_func..z\w+$rzinvalid function name '%s'zfunction '%s' not implementedéz${f:%s} expands to: '%s'r)ÚreÚsplitr r ÚmatchÚlogÚerrorrZ load_funcÚ ImportErrorZexecuteÚdebugÚjoinr)rZ_fromÚslÚfrrrrÚ _process_func(s"   zParser._process_funccCsÒ| |¡|j|jkr´| ¡dkrpz|j ¡}Wn&tyVt d|¡|j YS0|dsŠ|  |d¡n|  d¡dkrŠ|  |j ¡| ¡dkržd|_ nd |_ |jd7_q t|jƒrÌt d |¡|j S) NÚ}z.invalid variable syntax, non pair '}' in: '%s'rrr#z${ú\TFz.invalid variable syntax, non pair '{' in: '%s')rr rrrÚpopÚ IndexErrorr'r(r r.rrrr )rrÚsirrrÚ_process;s&        zParser._processcCs(|dus|dkr|St dd| |¡¡S)Nr z \\(\${f:.*})z\1)r$Úsubr4rrrrÚexpandRsz Parser.expandN)r ) Ú__name__Ú __module__Ú __qualname__Ú__doc__r rrrrrr.r4r6rrrrr s r) r$Z tuned.logsZtunedZtuned.utils.commandsrZlogsÚgetr'ÚcmdrrrrrÚs