£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<html>
3
<e$	                 @   sf   d dl Z d dlZd dlZddlmZ d dljZd dlmZ d dl	m
Z
mZ ejj ZG dd dZdS )    N   )	functions)commands)ConfigParserErrorc               @   sX   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd ZdS )	Variablesz8
	Storage and processing of variables used in profiles
	c             C   s"   t  | _i | _i | _tj | _d S )N)r   _cmd
_lookup_re_lookup_envr   Z	Functions
_functions)self r   /usr/lib/python3.6/variables.py__init__   s    zVariables.__init__c             C   s   |j |dkr|S || S )Nr   )find)r   sprefixr   r   r   _add_env_prefix   s    zVariables._add_env_prefixc             C   s   t jd|S )Nz\w+$)rematch)r   variabler   r   r   
_check_var   s    zVariables._check_varc             C   sj   |d krd S t |}| j|s0tjd|  d S | j|}|| jdtj| d < || j| j	|t
j< d S )Nz6variable definition '%s' contains unallowed charactersz
(?<!\\)\${})strr   logerrorexpandr	   r   escaper
   r   constsZ
ENV_PREFIX)r   r   valuer   vr   r   r   add_variable   s    

zVariables.add_variablec             C   s   t jj|stjd|  d S yLtddddd}t|_t|$}|j	dt
j d |j  | W d Q R X W n" tk
r   tjd	|  d S X x<|j D ]0}x*|j|D ]}| j||j||dd
 qW qW d S )Nz#unable to find variables_file: '%s'=#TF)Z
delimitersZinline_comment_prefixesZallow_no_valuestrict[z]
z"error parsing variables_file: '%s')raw)ospathexistsr   r   r   r   ZoptionxformopenZread_stringr   ZMAGIC_HEADER_NAMEreadr   ZsectionsZoptionsr!   get)r   filenameconfigfr   or   r   r   add_from_file+   s    
,zVariables.add_from_filec             C   sF   x@|D ]8}t |dkr.| jtjj||  q| j|||  qW d S )Ninclude)r   r1   r'   r(   normpathr!   )r   Zcfgitemr   r   r   add_from_cfg;   s    
zVariables.add_from_cfgc             C   s   t jdd| jj| j|S )Nz\\(\${\w+})z\1)r   subr   Zmultiple_re_replacer	   )r   r   r   r   r   expand_staticC   s    zVariables.expand_staticc             C   s&   |d krd S | j t|}| jj|S )N)r7   r   r   r   )r   r   r   r   r   r   r   F   s    zVariables.expandc             C   s   | j S )N)r
   )r   r   r   r   get_envN   s    zVariables.get_envN)__name__
__module____qualname____doc__r   r   r   r!   r1   r5   r7   r   r8   r   r   r   r   r      s   r   )r'   r   Z
tuned.logsZtunedr   Ztuned.constsr   Ztuned.utils.commandsr   Ztuned.utils.config_parserr   r   Zlogsr,   r   r   r   r   r   r   <module>   s   

