%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /snap/core/17212/usr/lib/python3/dist-packages/cloudinit/__pycache__/
Upload File :
Create Path :
Current File : //snap/core/17212/usr/lib/python3/dist-packages/cloudinit/__pycache__/templater.cpython-35.pyc



"�T`��@suddlZddlZyddlmZdZWneefk
rRdZYnXy*ddlmZ	ddlm
ZdZWn$eefk
r�dZe
ZYnXddlmZddlmZddlmZeje�Zejd	ej�Zejd
�ZdZGdd
�d
e�Zdd�Zdd�Zdd�Zddd�Z ddd�Z!dd�Z"dS)�N)�TemplateTF)�DebugUndefined)�log)�
type_utils)�utilz##\s*template:(.*)z)\$\{([A-Za-z0-9_.]+)\}|\$([A-Za-z0-9_.]+)zCI_MISSING_JINJA_VAR/c@s.eZdZdZdd�Zdd�ZdS)�UndefinedJinjaVariablez>Class used to represent any undefined jinja template variable.cCsdt|jfS)Nz%s%s)�MISSING_JINJA_PREFIX�_undefined_name)�self�r�5/usr/lib/python3/dist-packages/cloudinit/templater.py�__str__-szUndefinedJinjaVariable.__str__cCs=t|�jtd�}tdjd|jd|���dS)N�zhUndefined jinja variable: "{this}-{other}". Jinja tried subtraction. Perhaps you meant "{this}_{other}"?�this�other)�str�replacer�	TypeError�formatr	)r
rrrr�__sub__0s	zUndefinedJinjaVariable.__sub__N)�__name__�
__module__�__qualname__�__doc__r
rrrrrr*srcs"�fdd�}tj||�S)z�This does simple replacement of bash variable like templates.

    It identifies patterns like ${a} or $a and can also identify patterns like
    ${a.b} or $a.b which will look for a key 'b' in the dictionary rooted
    by key 'a'.
    cs|jd�}|dkr*|jd�}|dkrBtd��tj|jd��}�}x]t|�dkr�|j�}t|t�s�t	d|t
j|�|f��||}qcW|j�}t|t�s�t	d||t
j|�f��t||�S)N��z,Match encountered but no valid group present�.zRCan not traverse into non-dictionary '%s' of type %s while looking for subkey '%s'z<Can not extract key '%s' from non-dictionary '%s' of type %s)
�group�RuntimeError�collections�deque�split�len�popleft�
isinstance�dictr�tuZobj_namer)�match�name�pathZselected_params�key)�paramsrr�replacer@s*
zbasic_render.<locals>.replacer)�
BASIC_MATCHER�sub)�contentr+r,r)r+r�basic_render8sr0cCsydd�}dd�}|jd�dkrH|jdd�\}}n|}d}tj|�}|s�tr�tjd�d	||fSd
t|fSn�|jd�j	�j
�}|dkr�td|��|dkr�tr�tj
d
�d
t|fS|dkrtrd||fS|d	krItrItj
d�d
t|fS|d	krhtrhd	||fSd
t|fSdS)NcSst|d|g�j�S)NZ
searchList)�	CTemplateZrespond)r/r+rrr�cheetah_render`sz'detect_template.<locals>.cheetah_rendercSs>|jd�rdnd}t|dtdd�j|�|S)N�
rZ	undefinedZtrim_blocksT)�endswith�	JTemplaterZrender)r/r+�addrrr�jinja_rendercs	z%detect_template.<locals>.jinja_renderr3rrz3Using Cheetah as the renderer for unknown template.�cheetah�basic�jinjaz.Unknown template rendering type '%s' requestedzcJinja not available as the selected renderer for desired template, reverting to the basic renderer.zeCheetah not available as the selected renderer for desired template, reverting to the basic renderer.���)r:r8r9)�findr!�TYPE_MATCHERr'�CHEETAH_AVAILABLE�LOG�debugr0r�lower�strip�
ValueError�JINJA_AVAILABLEZwarning)�textr2r7Zident�restZ
type_match�
template_typerrr�detect_template^s6








rHcCsY|si}ttj|dd�jd��\}}}tjd||�|||�S)N�decodeFzutf-8z+Rendering content of '%s' using renderer %s)rHrZ	load_filerIr?r@)�fnr+rG�rendererr/rrr�render_from_file�s*rLi�cCs)t||�}tj||d|�dS)N�mode)rLr�
write_file)rJ�outfnr+rM�contentsrrr�render_to_file�srQcCs)t||�}tj||d|�dS)zpRender string (or py2 unicode) to file.
    Warning: py2 str with non-ascii chars will cause UnicodeDecodeError.rMN)�
render_stringrrN)r/rOr+rMrPrrr�render_string_to_file�srScCs.|si}t|�\}}}|||�S)zhRender string (or py2 unicode).
    Warning: py2 str with non-ascii chars will cause UnicodeDecodeError.)rH)r/r+Z_template_typerKrrrrR�srR)#r�reZCheetah.Templaterr1r>�ImportError�AttributeErrorZjinja2r5rZ
JUndefinedrD�objectZ	cloudinitrZloggingrr&rZ	getLoggerrr?�compile�Ir=r-rrr0rHrLrQrSrRrrrr�<module>
s6

&-

Zerion Mini Shell 1.0