blob: 0a3ff6f3f9489c0b24f08bb0cae53f74ea576a94 [file] [log] [blame]
Armin Ronacher92f572f2007-02-26 22:17:32 +01001# -*- coding: utf-8 -*-
2"""
Armin Ronacher07bc6842008-03-31 14:18:49 +02003 jinja2
4 ~~~~~~
Armin Ronacherae16fd02007-03-27 21:31:24 +02005
Armin Ronacher203bfcb2008-04-24 21:54:44 +02006 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.
Armin Ronacherae16fd02007-03-27 21:31:24 +02009
10 Nutshell
11 --------
12
Armin Ronacher203bfcb2008-04-24 21:54:44 +020013 Here a small example of a Jinja2 template::
Armin Ronacherae16fd02007-03-27 21:31:24 +020014
15 {% extends 'base.html' %}
16 {% block title %}Memberlist{% endblock %}
17 {% block content %}
18 <ul>
19 {% for user in users %}
Armin Ronacher203bfcb2008-04-24 21:54:44 +020020 <li><a href="{{ user.url }}">{{ user.username }}</a></li>
Armin Ronacherae16fd02007-03-27 21:31:24 +020021 {% endfor %}
22 </ul>
23 {% endblock %}
24
Armin Ronacherae16fd02007-03-27 21:31:24 +020025
Armin Ronacher203bfcb2008-04-24 21:54:44 +020026 :copyright: 2008 by Armin Ronacher, Christoph Hack.
Armin Ronacher92f572f2007-02-26 22:17:32 +010027 :license: BSD, see LICENSE for more details.
28"""
Armin Ronacher203bfcb2008-04-24 21:54:44 +020029__docformat__ = 'restructuredtext en'
30try:
31 __version__ = __import__('pkg_resources') \
32 .get_distribution('Jinja2').version
33except:
34 __version__ = 'unknown'
35
36# high level interface
37from jinja2.environment import Environment, Template
38
39# loaders
Armin Ronacher9a822052008-04-17 18:44:07 +020040from jinja2.loaders import BaseLoader, FileSystemLoader, PackageLoader, \
Armin Ronacher203bfcb2008-04-24 21:54:44 +020041 DictLoader, FunctionLoader, PrefixLoader, ChoiceLoader
42
Armin Ronachera816bf42008-09-17 21:28:01 +020043# bytecode caches
Armin Ronacheraa1d17d2008-09-18 18:09:06 +020044from jinja2.bccache import BytecodeCache, FileSystemBytecodeCache, \
45 MemcachedBytecodeCache
Armin Ronachera816bf42008-09-17 21:28:01 +020046
Armin Ronacher203bfcb2008-04-24 21:54:44 +020047# undefined types
Armin Ronacherc63243e2008-04-14 22:53:58 +020048from jinja2.runtime import Undefined, DebugUndefined, StrictUndefined
Armin Ronacher203bfcb2008-04-24 21:54:44 +020049
Armin Ronacherd1342312008-04-28 12:20:12 +020050# exceptions
51from jinja2.exceptions import TemplateError, UndefinedError, \
52 TemplateNotFound, TemplateSyntaxError, TemplateAssertionError
53
Armin Ronacher203bfcb2008-04-24 21:54:44 +020054# decorators and public utilities
Armin Ronacherf59bac22008-04-20 13:11:43 +020055from jinja2.filters import environmentfilter, contextfilter
Armin Ronacher187bde12008-05-01 18:19:16 +020056from jinja2.utils import Markup, escape, clear_caches, \
Armin Ronacher9bb7e472008-05-28 11:26:59 +020057 environmentfunction, contextfunction, is_undefined
Armin Ronacher7259c762008-04-30 13:03:59 +020058
59__all__ = [
60 'Environment', 'Template', 'BaseLoader', 'FileSystemLoader',
61 'PackageLoader', 'DictLoader', 'FunctionLoader', 'PrefixLoader',
62 'ChoiceLoader', 'Undefined', 'DebugUndefined', 'StrictUndefined',
63 'TemplateError', 'UndefinedError', 'TemplateNotFound',
64 'TemplateSyntaxError', 'TemplateAssertionError', 'environmentfilter',
65 'contextfilter', 'Markup', 'escape', 'environmentfunction',
Armin Ronacher9bb7e472008-05-28 11:26:59 +020066 'contextfunction', 'clear_caches', 'is_undefined'
Armin Ronacher7259c762008-04-30 13:03:59 +020067]