File: //usr/lib/python3/dist-packages/cloudinit/distros/parsers/__pycache__/sys_conf.cpython-38.pyc
U
Ӈg? � @ sf d dl Z d dlZd dlmZ d dlZdZe �de �e �d�e �d�gZdd� ZG d d
� d
ej �Z
dS )� N)�StringIOz[a-zA-Z_]+[a-zA-Z0-9_]*z\$z\$[0-9#\?\-@\*]z\$\{.+\}c C s t D ]}|�| �r dS qdS )NTF)�SHELL_VAR_REGEXES�search)�text�r� r �D/usr/lib/python3/dist-packages/cloudinit/distros/parsers/sys_conf.py�_contains_shell_variable$ s
r c @ s2 e Zd ZdZdd� Zdd� Zddd�Zd d
� ZdS )
�SysConfa A 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 C s t jj| |ddd� d S )NFT)�
interpolationZwrite_empty_values)� configobj� ConfigObj�__init__)�self�contentsr r r r 4 s �zSysConf.__init__c C sD | � � }t� }t|ttf�r.|� d�|�� n|� t|�� |�� S )N�
)�writer �
isinstance�list�tuple�join�str�getvalue)r r Zout_contentsr r r �__str__9 s zSysConf.__str__Fc s� t |t�std| ��t|�dkr&dS d }|d dkr\|d dkr\t|�dkr�� fdd�}n`|�� �d �rz|�� �d
�rznBt�d|�r�t |�r�t�d|�r�� fd
d�}q�� fdd�}nt
j}|s�|S ||�S )NzValue "%s" is not a stringr � )�"�'���� c s � � | �| S �N�Z_get_single_quote��x�r r r �<lambda>K � z SysConf._quote.<locals>.<lambda>z$(�)z [\t\r\n ]z[\n\"']c s � � | �| S r )Z_get_triple_quoter! r# r r r$ Y r% c s � � | �| S r r r! r# r r r$ ] r% )r r �
ValueError�len�strip�
startswith�endswith�rer r �shlexZquote)r �valueZ multilineZ quot_funcr r# r �_quoteB s,
�
�
�zSysConf._quotec C s<