blob: 265395266e567fdc297715ef7de1a4cf9a8139bd [file] [log] [blame]
Armin Ronacher07bc6842008-03-31 14:18:49 +02001# -*- coding: utf-8 -*-
2"""
Armin Ronacher26c0f512008-04-17 11:16:01 +02003 jinja2.exceptions
4 ~~~~~~~~~~~~~~~~~
Armin Ronacher07bc6842008-03-31 14:18:49 +02005
6 Jinja exceptions.
7
Armin Ronacherd1342312008-04-28 12:20:12 +02008 :copyright: 2008 by Armin Ronacher.
Armin Ronacher07bc6842008-03-31 14:18:49 +02009 :license: BSD, see LICENSE for more details.
10"""
11
12
Armin Ronachere791c2a2008-04-07 18:39:54 +020013class TemplateError(Exception):
Armin Ronacher9a822052008-04-17 18:44:07 +020014 """Baseclass for all template errors."""
15
16
17class UndefinedError(TemplateError):
Armin Ronacherd1342312008-04-28 12:20:12 +020018 """Raised if a template tries to operate on :class:`Undefined`."""
Armin Ronacher07bc6842008-03-31 14:18:49 +020019
20
Armin Ronacher5cdc1ac2008-05-07 12:17:18 +020021class SecurityError(TemplateError):
22 """Raised if a template tries to do something insecure if the
23 sandbox is enabled.
24 """
25
26
Armin Ronacher07bc6842008-03-31 14:18:49 +020027class TemplateNotFound(IOError, LookupError, TemplateError):
Armin Ronacher9a822052008-04-17 18:44:07 +020028 """Raised if a template does not exist."""
Armin Ronacher07bc6842008-03-31 14:18:49 +020029
30 def __init__(self, name):
31 IOError.__init__(self, name)
32 self.name = name
33
34
Armin Ronacher68f77672008-04-17 11:50:39 +020035class TemplateSyntaxError(TemplateError):
Armin Ronacher9a822052008-04-17 18:44:07 +020036 """Raised to tell the user that there is a problem with the template."""
Armin Ronacher07bc6842008-03-31 14:18:49 +020037
Armin Ronacheraaf010d2008-05-01 13:14:30 +020038 def __init__(self, message, lineno, filename):
Priit Laes4149a0e2008-04-17 19:04:44 +020039 TemplateError.__init__(self, '%s (line %s)' % (message, lineno))
Armin Ronachere791c2a2008-04-07 18:39:54 +020040 self.message = message
Armin Ronacher07bc6842008-03-31 14:18:49 +020041 self.lineno = lineno
Armin Ronacheraaf010d2008-05-01 13:14:30 +020042 self.filename = filename
Armin Ronacher07bc6842008-03-31 14:18:49 +020043
44
Armin Ronacher53042292008-04-26 18:30:19 +020045class TemplateAssertionError(TemplateSyntaxError):
Armin Ronacher9a822052008-04-17 18:44:07 +020046 """Like a template syntax error, but covers cases where something in the
47 template caused an error at compile time that wasn't necessarily caused
48 by a syntax error.
49 """
Armin Ronachere791c2a2008-04-07 18:39:54 +020050
Armin Ronachere791c2a2008-04-07 18:39:54 +020051
Armin Ronacher07bc6842008-03-31 14:18:49 +020052class TemplateRuntimeError(TemplateError):
Armin Ronacherd1342312008-04-28 12:20:12 +020053 """A runtime error."""
Benjamin Wieganda3152742008-04-28 18:07:52 +020054
55
56class FilterArgumentError(Exception):
57 """This error is raised if a filter was called with inappropriate
58 arguments
59 """