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' 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