1"""
2Django's support for templates.
3
4The django.template namespace contains two independent subsystems:
5
61. Multiple Template Engines: support for pluggable template backends,
7 built-in backends and backend-independent APIs
82. Django Template Language: Django's own template engine, including its
9 built-in loaders, context processors, tags and filters.
10
11Ideally these subsystems would be implemented in distinct packages. However
12keeping them together made the implementation of Multiple Template Engines
13less disruptive .
14
15Here's a breakdown of which modules belong to which subsystem.
16
17Multiple Template Engines:
18
19- django.template.backends.*
20- django.template.loader
21- django.template.response
22
23Django Template Language:
24
25- django.template.base
26- django.template.context
27- django.template.context_processors
28- django.template.loaders.*
29- django.template.debug
30- django.template.defaultfilters
31- django.template.defaulttags
32- django.template.engine
33- django.template.loader_tags
34- django.template.smartif
35
36Shared:
37
38- django.template.utils
39
40"""
41
42# Multiple Template Engines
43
44from .engine import Engine
45from .utils import EngineHandler
46
47engines = EngineHandler()
48
49__all__ = ("Engine", "engines")
50
51
52# Django Template Language
53
54# Public exceptions
55from .base import VariableDoesNotExist # NOQA isort:skip
56from .context import Context, ContextPopException, RequestContext # NOQA isort:skip
57from .exceptions import TemplateDoesNotExist, TemplateSyntaxError # NOQA isort:skip
58
59# Template parts
60from .base import ( # NOQA isort:skip
61 Node,
62 NodeList,
63 Origin,
64 Template,
65 Variable,
66)
67
68# Library management
69from .library import Library # NOQA isort:skip
70
71# Import the .autoreload module to trigger the registrations of signals.
72from . import autoreload # NOQA isort:skip
73
74
75__all__ += ("Template", "Context", "RequestContext")