File: //usr/lib/python3.6/site-packages/jinja2/__pycache__/sandbox.cpython-36.opt-1.pyc
3
�G�gND � @ s� d Z ddlZddlZddlmZ ddlmZ ddlmZ ddl m
Z
ddlmZm
Z
ddlmZ dd lmZ dd
lmZ dZe
r�edd
dddg�Zne� Zedddg�Zeddg�Zeddg�Zeddg�ZddlZejddedd� ddlmZ efZe fZ!e"fZ#y6ddl$m$Z$m%Z% dd l&m&Z& e!e$e%f7 Z!ee&f7 ZW n e'k
�rP Y nX ydd!l(m)Z) ee)f7 ZW n e'k
�r� Y nX dd"lm*Z*m+Z+m,Z, ee*f7 Ze!e+f7 Z!e#e,f7 Z#ee-d#d$d%d&d'd(d)d*g�fe!e-d$d'd+d,d*g�fe#e-d-d.d/d0d1d(g�fee-d-d2d$d1d3d'd4d(d5g �ffZ.G d6d7� d7e�Z/d8d9� Z0d:d;� Z1d<d=� Z2d>d?� Z3G d@dA� dAe�Z4G dBdC� dCe4�Z5yddDl6m7Z7 W n e'k
�r� dEdF� Z7Y nX G dGdH� dHe8�Z9G dIdJ� dJe9e�Z:G dKdL� dLe9e�Z;dS )Maj
jinja2.sandbox
~~~~~~~~~~~~~~
Adds a sandbox layer to Jinja as it was the default behavior in the old
Jinja 1 releases. This sandbox is slightly different from Jinja 1 as the
default behavior is easier to use.
The behavior can be changed by subclassing the environment.
:copyright: (c) 2017 by the Jinja Team.
:license: BSD.
� N)�Mapping)�update_wrapper)�Environment)�
SecurityError)�string_types�PY2)�Markup)�EscapeFormatter)� Formatteri�� Zfunc_closureZ func_codeZ func_dictZ
func_defaultsZfunc_globalsZim_classZim_funcZim_self�gi_frame�gi_code�cr_frame�cr_code�ag_code�ag_frame�ignorezthe sets modulezjinja2.sandbox)�module)�deque)�UserDict� DictMixin)�UserList)�Set)�
MutableSet�MutableMapping�MutableSequence�add�clear�difference_update�discard�pop�remove�symmetric_difference_update�update�popitem�
setdefault�append�reverse�insert�sort�extend�
appendleft�
extendleft�popleft�rotatec @ s0 e Zd ZdZdd� Zdd� Zdd� Zdd � Zd
S )�_MagicFormatMappingz�This class implements a dummy wrapper to fix a bug in the Python
standard library for string formatting.
See https://bugs.python.org/issue13598 for information about why
this is necessary.
c C s || _ || _d| _d S )Nr )�_args�_kwargs�_last_index)�self�args�kwargs� r5 �/usr/lib/python3.6/sandbox.py�__init__s s z_MagicFormatMapping.__init__c C sN |dkrD| j }| j d7 _ y
| j| S tk
r: Y nX t|�}| j| S )N� � )r1 r/ �LookupError�strr0 )r2 �key�idxr5 r5 r6 �__getitem__x s
z_MagicFormatMapping.__getitem__c C s
t | j�S )N)�iterr0 )r2 r5 r5 r6 �__iter__� s z_MagicFormatMapping.__iter__c C s
t | j�S )N)�lenr0 )r2 r5 r5 r6 �__len__� s z_MagicFormatMapping.__len__N)�__name__�
__module__�__qualname__�__doc__r7 r>