blob: 2fc0219b0fadfa813d32f06277f29ad9f84304b4 [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 Ronacher55494e42010-01-22 09:41:48 +010026 :copyright: (c) 2010 by the Jinja Team.
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 Ronacher64b08a02010-03-12 03:17:41 +010041 DictLoader, FunctionLoader, PrefixLoader, ChoiceLoader, \
42 ModuleLoader
Armin Ronacher203bfcb2008-04-24 21:54:44 +020043
Armin Ronachera816bf42008-09-17 21:28:01 +020044# bytecode caches
Armin Ronacheraa1d17d2008-09-18 18:09:06 +020045from jinja2.bccache import BytecodeCache, FileSystemBytecodeCache, \
46 MemcachedBytecodeCache
Armin Ronachera816bf42008-09-17 21:28:01 +020047
Armin Ronacher203bfcb2008-04-24 21:54:44 +020048# undefined types
Armin Ronacherc63243e2008-04-14 22:53:58 +020049from jinja2.runtime import Undefined, DebugUndefined, StrictUndefined
Armin Ronacher203bfcb2008-04-24 21:54:44 +020050
Armin Ronacherd1342312008-04-28 12:20:12 +020051# exceptions
52from jinja2.exceptions import TemplateError, UndefinedError, \
Armin Ronacher31bbd9e2010-01-14 00:41:30 +010053 TemplateNotFound, TemplatesNotFound, TemplateSyntaxError, \
54 TemplateAssertionError
Armin Ronacherd1342312008-04-28 12:20:12 +020055
Armin Ronacher203bfcb2008-04-24 21:54:44 +020056# decorators and public utilities
Armin Ronacherf59bac22008-04-20 13:11:43 +020057from jinja2.filters import environmentfilter, contextfilter
Armin Ronacher187bde12008-05-01 18:19:16 +020058from jinja2.utils import Markup, escape, clear_caches, \
Armin Ronacher9bb7e472008-05-28 11:26:59 +020059 environmentfunction, contextfunction, is_undefined
Armin Ronacher7259c762008-04-30 13:03:59 +020060
61__all__ = [
62 'Environment', 'Template', 'BaseLoader', 'FileSystemLoader',
63 'PackageLoader', 'DictLoader', 'FunctionLoader', 'PrefixLoader',
Armin Ronacherccae0552008-10-05 23:08:58 +020064 'ChoiceLoader', 'BytecodeCache', 'FileSystemBytecodeCache',
65 'MemcachedBytecodeCache', 'Undefined', 'DebugUndefined',
66 'StrictUndefined', 'TemplateError', 'UndefinedError', 'TemplateNotFound',
Armin Ronacher31bbd9e2010-01-14 00:41:30 +010067 'TemplatesNotFound', 'TemplateSyntaxError', 'TemplateAssertionError',
Armin Ronacher64b08a02010-03-12 03:17:41 +010068 'ModuleLoader', 'environmentfilter', 'contextfilter', 'Markup', 'escape',
Armin Ronacher31bbd9e2010-01-14 00:41:30 +010069 'environmentfunction', 'contextfunction', 'clear_caches', 'is_undefined'
Armin Ronacher7259c762008-04-30 13:03:59 +020070]