File: //opt/saltstack/salt/lib/python3.10/site-packages/salt/utils/__pycache__/jinja.cpython-310.pyc
o
�N�gц � @ sh d Z ddlZddlZddlZddlZddlZddlZddlZddl Z ddl
Z
ddlmZ ddl
mZ ddlmZ ddlmZmZmZ ddlZddlmZmZmZ ddlmZ dd lmZ dd
lmZ ddlZ ddl!Z ddl"Z ddl#Z ddl$Z ddl%Z ddl&Z ddl'm(Z( ddl)m*Z*m+Z+m,Z, dd
l-m.Z. ddl/m0Z0 zddl1m2Z2 W n e3y� ddlm2Z2 Y nw e�4e5�Z6ddgZ7e �8d�Z9e0ej:�Z;G dd� de�Z<G dd� de.�Z=e+d�dd� �Z>e,d�dRdd��Z?e,d�dd� �Z@e*d �d!d"� �ZAe*d#�d$d%� �ZBe*d&�d'd&� �ZCe*d(�dSd*d(��ZDe*d+�dTd,d+��ZEe*d-�d.d-� �ZFe*� d/d0� �ZGe*d1�dRd2d1��ZHe*d3�dRd4d3��ZIe*d5�dRd6d5��ZJe*d7�d8d9� �ZKe*� d:d;� �ZLe*d<�d=d>� �ZMe*d?�d@dA� �ZNe*dB�dCdD� �ZOe*dE�dFdE� �ZPe*dG�dHdG� �ZQe*dI�dJdI� �ZRe*dK�dLdK� �ZSe*dM�dNdM� �ZTzejUZUW n
eV�y� ejWZUY nw eUdOdP� �ZXG dQd� de�ZYdS )UzK
Jinja loading utils to enable a more powerful backend for jinja templates
� N)�Hashable)�wraps)�minidom)�Element�
SubElement�tostring)�
BaseLoader�TemplateNotFound�nodes)�TemplateModule)�TemplateRuntimeError)� Extension��
TemplateError)�jinja_filter�jinja_global�
jinja_test)�OrderedDict)�Version)�Markup�SaltCacheLoader�SerializerExtensionz$91633EBF-1C86-5E33-935A-28061F4B480Ec @ sZ e Zd ZdZ ddd�Zdd � Zd
d� Zdd
� Zdd� Zdd� Z dd� Z
dd� ZdS )r z�
A special jinja Template Loader for salt.
Requested templates are always fetched from the server
to guarantee that the file is up to date.
Templates are cached like regular salt states
and only loaded once per loader instance.
�base�utf-8FNc C s� || _ || _|| _|| _| jr"|| j d vrg | _n|d | | _ntj�|d d|�g| _t� d| j� g | _
|| _|d u | _d S )NZpillar_rootsZcachedir�fileszJinja search path: %s)
�opts�saltenv�encoding�pillar_rend�
searchpath�os�path�join�log�debug�cached�_file_client�_close_file_client)�selfr r r r r&