1# -*- coding: utf-8 -*-
2"""
3    jinja2
4    ~~~~~~
5
6    Jinja2 is a template engine written in pure Python.  It provides a
7    Django inspired non-XML syntax but supports inline expressions and
8    an optional sandboxed environment.
9
10    Nutshell
11    --------
12
13    Here a small example of a Jinja2 template::
14
15        {% extends 'base.html' %}
16        {% block title %}Memberlist{% endblock %}
17        {% block content %}
18          <ul>
19          {% for user in users %}
20            <li><a href="{{ user.url }}">{{ user.username }}</a></li>
21          {% endfor %}
22          </ul>
23        {% endblock %}
24
25
26    :copyright: (c) 2017 by the Jinja Team.
27    :license: BSD, see LICENSE for more details.
28"""
29__docformat__ = 'restructuredtext en'
30__version__ = "2.10.3"
31
32# high level interface
33from jinja2.environment import Environment, Template
34
35# loaders
36from jinja2.loaders import BaseLoader, FileSystemLoader, PackageLoader, \
37     DictLoader, FunctionLoader, PrefixLoader, ChoiceLoader, \
38     ModuleLoader
39
40# bytecode caches
41from jinja2.bccache import BytecodeCache, FileSystemBytecodeCache, \
42     MemcachedBytecodeCache
43
44# undefined types
45from jinja2.runtime import Undefined, DebugUndefined, StrictUndefined, \
46     make_logging_undefined
47
48# exceptions
49from jinja2.exceptions import TemplateError, UndefinedError, \
50     TemplateNotFound, TemplatesNotFound, TemplateSyntaxError, \
51     TemplateAssertionError, TemplateRuntimeError
52
53# decorators and public utilities
54from jinja2.filters import environmentfilter, contextfilter, \
55     evalcontextfilter
56from jinja2.utils import Markup, escape, clear_caches, \
57     environmentfunction, evalcontextfunction, contextfunction, \
58     is_undefined, select_autoescape
59
60__all__ = [
61    'Environment', 'Template', 'BaseLoader', 'FileSystemLoader',
62    'PackageLoader', 'DictLoader', 'FunctionLoader', 'PrefixLoader',
63    'ChoiceLoader', 'BytecodeCache', 'FileSystemBytecodeCache',
64    'MemcachedBytecodeCache', 'Undefined', 'DebugUndefined',
65    'StrictUndefined', 'TemplateError', 'UndefinedError', 'TemplateNotFound',
66    'TemplatesNotFound', 'TemplateSyntaxError', 'TemplateAssertionError',
67    'TemplateRuntimeError',
68    'ModuleLoader', 'environmentfilter', 'contextfilter', 'Markup', 'escape',
69    'environmentfunction', 'contextfunction', 'clear_caches', 'is_undefined',
70    'evalcontextfilter', 'evalcontextfunction', 'make_logging_undefined',
71    'select_autoescape',
72]
73
74
75def _patch_async():
76    from jinja2.utils import have_async_gen
77    if have_async_gen:
78        from jinja2.asyncsupport import patch_all
79        patch_all()
80
81
82_patch_async()
83del _patch_async
84