�
V�fb�� � �* � d Z ddlZddlZddlZddlZddlmZ ddlmZ ddlm Z ddlm
Z
ddlmZ ddl
mZ d d
lmZ d dlmZ d dlmZ d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlm Z d dlm!Z! d dlm"Z" d dlm#Z# d dlm$Z$ d dl%m&Z& d dl%m'Z' d dl%m(Z( d d l%m)Z) d d!l%m*Z* d d"l+m,Z, d d#l+m-Z- d d$l+m.Z. d d%lm/Z/ d d&l0m1Z1 d d'l2m3Z3 d d(l2m4Z4 d d)l2m5Z5 d d*l6m7Z7 d d+l6m8Z8 d d,l6m9Z9 d d-l6m:Z: d d.l6m;Z; d d/l6m<Z< d d0l6m=Z= ej| rddl?Z@d d1lAmBZB d d2lCmDZD d d3lEmFZF ej� d4d5�6� ZH ed7�8� d9ej� eH d:ej� d;eHfd<�� ZKd=eLd;ej� ej� ej� ej� eQf d>f fd?�ZRd@ej� ej� d;ej� ej� ej� ej� eQf d>f fdA�ZSdBd5dCej� ej� eQej� dD f d;ej� eQdDf fdE�ZWdOdF�ZX G dG� d5� ZY G dH� d>� ZZ G dI� dJ� Z[ G dK� dL� Z\ G dM� dN� Z]eZeY_^ y)PzKClasses for managing templates and their runtime and compile time
options.
� N)�ChainMap)� lru_cache)�partial)�reduce)�CodeType)�Markup� )�nodes)�
CodeGenerator)�generate)�BLOCK_END_STRING)�BLOCK_START_STRING)�COMMENT_END_STRING)�COMMENT_START_STRING)�DEFAULT_FILTERS)�DEFAULT_NAMESPACE)�DEFAULT_POLICIES)�
DEFAULT_TESTS)�KEEP_TRAILING_NEWLINE)�LINE_COMMENT_PREFIX)�LINE_STATEMENT_PREFIX)�
LSTRIP_BLOCKS)�NEWLINE_SEQUENCE)�TRIM_BLOCKS)�VARIABLE_END_STRING)�VARIABLE_START_STRING)�TemplateNotFound)�TemplateRuntimeError)�TemplatesNotFound)�TemplateSyntaxError)�UndefinedError�� get_lexer)�Lexer)�TokenStream)�EvalContext)�Parser)�Context)�new_context)� Undefined)�_PassArg)�concat)�consume)�
import_string)�internalcode��LRUCache)�missing)�
BytecodeCache)� Extension)�
BaseLoader�
_env_bound�Environment)�bound�
)�maxsize�cls�args�returnc � � | |� }d|_ |S )a Return a new spontaneous environment. A spontaneous environment
is used for templates created directly rather than through an
existing environment.
:param cls: Environment class to create.
:param args: Positional arguments passed to environment.
T)�shared)r; r< |