<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</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
ƒ q¨W q˜W 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   

