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