# -*- coding: utf-8 -*-from ._compat import imapfrom ._compat import implements_to_stringfrom ._compat import PY2from ._compat import text_typeclass TemplateError(Exception):"""Baseclass for all template errors."""if PY2:def __init__(self, message=None):if message is not None:message = text_type(message).encode("utf-8")Exception.__init__(self, message)@propertydef message(self):if self.args:message = self.args[0]if message is not None:return message.decode("utf-8", "replace")def __unicode__(self):return self.message or u""else:def __init__(self, message=None):Exception.__init__(self, message)@propertydef message(self):if self.args:message = self.args[0]if message is not None:return message@implements_to_stringclass TemplateNotFound(IOError, LookupError, TemplateError):"""Raised if a template does not exist... versionchanged:: 2.11If the given name is :class:`Undefined` and no message wasprovided, an :exc:`UndefinedError` is raised."""# looks weird, but removes the warning descriptor that just# bogusly warns us about message being deprecatedmessage = Nonedef __init__(self, name, message=None):IOError.__init__(self, name)if message is None:from .runtime import Undefinedif isinstance(name, Undefined):name._fail_with_undefined_error()message = nameself.message = messageself.name = nameself.templates = [name]def __str__(self):return self.messageclass TemplatesNotFound(TemplateNotFound):"""Like :class:`TemplateNotFound` but raised if multiple templatesare selected. This is a subclass of :class:`TemplateNotFound`exception, so just catching the base exception will catch both... versionchanged:: 2.11If a name in the list of names is :class:`Undefined`, a messageabout it being undefined is shown rather than the empty string... versionadded:: 2.2"""def __init__(self, names=(), message=None):if message is None:from .runtime import Undefinedparts = []for name in names:if isinstance(name, Undefined):parts.append(name._undefined_message)else:parts.append(name)message = u"none of the templates given were found: " + u", ".join(imap(text_type, parts))TemplateNotFound.__init__(self, names and names[-1] or None, message)self.templates = list(names)@implements_to_stringclass TemplateSyntaxError(TemplateError):"""Raised to tell the user that there is a problem with the template."""def __init__(self, message, lineno, name=None, filename=None):TemplateError.__init__(self, message)self.lineno = linenoself.name = nameself.filename = filenameself.source = None# this is set to True if the debug.translate_syntax_error# function translated the syntax error into a new tracebackself.translated = Falsedef __str__(self):# for translated errors we only return the messageif self.translated:return self.message# otherwise attach some stufflocation = "line %d" % self.linenoname = self.filename or self.nameif name:location = 'File "%s", %s' % (name, location)lines = [self.message, " " + location]# if the source is set, add the line to the outputif self.source is not None:try:line = self.source.splitlines()[self.lineno - 1]except IndexError:line = Noneif line:lines.append(" " + line.strip())return u"\n".join(lines)def __reduce__(self):# https://bugs.python.org/issue1692335 Exceptions that take# multiple required arguments have problems with pickling.# Without this, raises TypeError: __init__() missing 1 required# positional argument: 'lineno'return self.__class__, (self.message, self.lineno, self.name, self.filename)class TemplateAssertionError(TemplateSyntaxError):"""Like a template syntax error, but covers cases where something in thetemplate caused an error at compile time that wasn't necessarily causedby a syntax error. However it's a direct subclass of:exc:`TemplateSyntaxError` and has the same attributes."""class TemplateRuntimeError(TemplateError):"""A generic runtime error in the template engine. Under some situationsJinja may raise this exception."""class UndefinedError(TemplateRuntimeError):"""Raised if a template tries to operate on :class:`Undefined`."""class SecurityError(TemplateRuntimeError):"""Raised if a template tries to do something insecure if thesandbox is enabled."""class FilterArgumentError(TemplateRuntimeError):"""This error is raised if a filter was called with inappropriatearguments"""
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。