# -------------------------------------------------------------------------- # Error handlers. # -------------------------------------------------------------------------- class TemplateError(Exception): """ Base class for all exceptions raised by the template engine. """ pass class LoadError(TemplateError): """ Error attempting to load a template file. """ pass class NestingError(TemplateError): """ Improperly nested template tags. """ pass class InvalidTag(TemplateError): """ Unrecognised template tag. """ pass class InvalidFilter(TemplateError): """ Unrecognised filter name. """ pass class TemplateSyntaxError(TemplateError): """ Invalid template syntax. """ pass class CallError(TemplateError): """ Raised if a callable variable throws an exception. """ pass class FilterError(TemplateError): """ Raised if a filter function throws an exception. """ pass class UnpackingError(TemplateError): """ Raised if an attempt to unpack a for-loop variable fails. """ pass class TemplateNotFound(TemplateError): """ Raised if a loader cannot locate a template. """ pass class Undefined: """ Null type returned when a context lookup fails. """ def __str__(self): return '' def __bool__(self): return False def __len__(self): return 0 def __contains__(self, key): return False def __iter__(self): return self def __next__(self): raise StopIteration def __eq__(self, other): return False def __ne__(self, other): return True