diff options
Diffstat (limited to 'lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/web/error.py')
-rwxr-xr-x | lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/web/error.py | 381 |
1 files changed, 0 insertions, 381 deletions
diff --git a/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/web/error.py b/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/web/error.py deleted file mode 100755 index 2fa8b43c..00000000 --- a/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/web/error.py +++ /dev/null @@ -1,381 +0,0 @@ -# -*- test-case-name: twisted.web.test.test_error -*- -# Copyright (c) Twisted Matrix Laboratories. -# See LICENSE for details. - -""" -Exception definitions for L{twisted.web}. -""" - -import operator - -from twisted.web import http - - -class Error(Exception): - """ - A basic HTTP error. - - @type status: C{str} - @ivar status: Refers to an HTTP status code, for example L{http.NOT_FOUND}. - - @type message: C{str} - @param message: A short error message, for example "NOT FOUND". - - @type response: C{str} - @ivar response: A complete HTML document for an error page. - """ - def __init__(self, code, message=None, response=None): - """ - Initializes a basic exception. - - @type code: C{str} - @param code: Refers to an HTTP status code, for example - L{http.NOT_FOUND}. If no C{message} is given, C{code} is mapped to a - descriptive string that is used instead. - - @type message: C{str} - @param message: A short error message, for example "NOT FOUND". - - @type response: C{str} - @param response: A complete HTML document for an error page. - """ - if not message: - try: - message = http.responses.get(int(code)) - except ValueError: - # If code wasn't a stringified int, can't map the - # status code to a descriptive string so keep message - # unchanged. - pass - - Exception.__init__(self, code, message, response) - self.status = code - self.message = message - self.response = response - - - def __str__(self): - return '%s %s' % (self[0], self[1]) - - - -class PageRedirect(Error): - """ - A request resulted in an HTTP redirect. - - @type location: C{str} - @ivar location: The location of the redirect which was not followed. - """ - def __init__(self, code, message=None, response=None, location=None): - """ - Initializes a page redirect exception. - - @type code: C{str} - @param code: Refers to an HTTP status code, for example - L{http.NOT_FOUND}. If no C{message} is given, C{code} is mapped to a - descriptive string that is used instead. - - @type message: C{str} - @param message: A short error message, for example "NOT FOUND". - - @type response: C{str} - @param response: A complete HTML document for an error page. - - @type location: C{str} - @param location: The location response-header field value. It is an - absolute URI used to redirect the receiver to a location other than - the Request-URI so the request can be completed. - """ - if not message: - try: - message = http.responses.get(int(code)) - except ValueError: - # If code wasn't a stringified int, can't map the - # status code to a descriptive string so keep message - # unchanged. - pass - - if location and message: - message = "%s to %s" % (message, location) - - Error.__init__(self, code, message, response) - self.location = location - - - -class InfiniteRedirection(Error): - """ - HTTP redirection is occurring endlessly. - - @type location: C{str} - @ivar location: The first URL in the series of redirections which was - not followed. - """ - def __init__(self, code, message=None, response=None, location=None): - """ - Initializes an infinite redirection exception. - - @type code: C{str} - @param code: Refers to an HTTP status code, for example - L{http.NOT_FOUND}. If no C{message} is given, C{code} is mapped to a - descriptive string that is used instead. - - @type message: C{str} - @param message: A short error message, for example "NOT FOUND". - - @type response: C{str} - @param response: A complete HTML document for an error page. - - @type location: C{str} - @param location: The location response-header field value. It is an - absolute URI used to redirect the receiver to a location other than - the Request-URI so the request can be completed. - """ - if not message: - try: - message = http.responses.get(int(code)) - except ValueError: - # If code wasn't a stringified int, can't map the - # status code to a descriptive string so keep message - # unchanged. - pass - - if location and message: - message = "%s to %s" % (message, location) - - Error.__init__(self, code, message, response) - self.location = location - - - -class RedirectWithNoLocation(Error): - """ - Exception passed to L{ResponseFailed} if we got a redirect without a - C{Location} header field. - - @since: 11.1 - """ - - def __init__(self, code, message, uri): - """ - Initializes a page redirect exception when no location is given. - - @type code: C{str} - @param code: Refers to an HTTP status code, for example - L{http.NOT_FOUND}. If no C{message} is given, C{code} is mapped to - a descriptive string that is used instead. - - @type message: C{str} - @param message: A short error message. - - @type uri: C{str} - @param uri: The URI which failed to give a proper location header - field. - """ - message = "%s to %s" % (message, uri) - - Error.__init__(self, code, message) - self.uri = uri - - - -class UnsupportedMethod(Exception): - """ - Raised by a resource when faced with a strange request method. - - RFC 2616 (HTTP 1.1) gives us two choices when faced with this situtation: - If the type of request is known to us, but not allowed for the requested - resource, respond with NOT_ALLOWED. Otherwise, if the request is something - we don't know how to deal with in any case, respond with NOT_IMPLEMENTED. - - When this exception is raised by a Resource's render method, the server - will make the appropriate response. - - This exception's first argument MUST be a sequence of the methods the - resource *does* support. - """ - - allowedMethods = () - - def __init__(self, allowedMethods, *args): - Exception.__init__(self, allowedMethods, *args) - self.allowedMethods = allowedMethods - - if not operator.isSequenceType(allowedMethods): - why = "but my first argument is not a sequence." - s = ("First argument must be a sequence of" - " supported methods, %s" % (why,)) - raise TypeError, s - - - -class SchemeNotSupported(Exception): - """ - The scheme of a URI was not one of the supported values. - """ - - - -class RenderError(Exception): - """ - Base exception class for all errors which can occur during template - rendering. - """ - - - -class MissingRenderMethod(RenderError): - """ - Tried to use a render method which does not exist. - - @ivar element: The element which did not have the render method. - @ivar renderName: The name of the renderer which could not be found. - """ - def __init__(self, element, renderName): - RenderError.__init__(self, element, renderName) - self.element = element - self.renderName = renderName - - - def __repr__(self): - return '%r: %r had no render method named %r' % ( - self.__class__.__name__, self.element, self.renderName) - - - -class MissingTemplateLoader(RenderError): - """ - L{MissingTemplateLoader} is raised when trying to render an Element without - a template loader, i.e. a C{loader} attribute. - - @ivar element: The Element which did not have a document factory. - """ - def __init__(self, element): - RenderError.__init__(self, element) - self.element = element - - - def __repr__(self): - return '%r: %r had no loader' % (self.__class__.__name__, - self.element) - - - -class UnexposedMethodError(Exception): - """ - Raised on any attempt to get a method which has not been exposed. - """ - - - -class UnfilledSlot(Exception): - """ - During flattening, a slot with no associated data was encountered. - """ - - - -class UnsupportedType(Exception): - """ - During flattening, an object of a type which cannot be flattened was - encountered. - """ - - - -class FlattenerError(Exception): - """ - An error occurred while flattening an object. - - @ivar _roots: A list of the objects on the flattener's stack at the time - the unflattenable object was encountered. The first element is least - deeply nested object and the last element is the most deeply nested. - """ - def __init__(self, exception, roots, traceback): - self._exception = exception - self._roots = roots - self._traceback = traceback - Exception.__init__(self, exception, roots, traceback) - - - def _formatRoot(self, obj): - """ - Convert an object from C{self._roots} to a string suitable for - inclusion in a render-traceback (like a normal Python traceback, but - can include "frame" source locations which are not in Python source - files). - - @param obj: Any object which can be a render step I{root}. - Typically, L{Tag}s, strings, and other simple Python types. - - @return: A string representation of C{obj}. - @rtype: L{str} - """ - # There's a circular dependency between this class and 'Tag', although - # only for an isinstance() check. - from twisted.web.template import Tag - if isinstance(obj, (str, unicode)): - # It's somewhat unlikely that there will ever be a str in the roots - # list. However, something like a MemoryError during a str.replace - # call (eg, replacing " with ") could possibly cause this. - # Likewise, UTF-8 encoding a unicode string to a byte string might - # fail like this. - if len(obj) > 40: - if isinstance(obj, str): - prefix = 1 - else: - prefix = 2 - return repr(obj[:20])[:-1] + '<...>' + repr(obj[-20:])[prefix:] - else: - return repr(obj) - elif isinstance(obj, Tag): - if obj.filename is None: - return 'Tag <' + obj.tagName + '>' - else: - return "File \"%s\", line %d, column %d, in \"%s\"" % ( - obj.filename, obj.lineNumber, - obj.columnNumber, obj.tagName) - else: - return repr(obj) - - - def __repr__(self): - """ - Present a string representation which includes a template traceback, so - we can tell where this error occurred in the template, as well as in - Python. - """ - # Avoid importing things unnecessarily until we actually need them; - # since this is an 'error' module we should be extra paranoid about - # that. - from traceback import format_list - if self._roots: - roots = ' ' + '\n '.join([ - self._formatRoot(r) for r in self._roots]) + '\n' - else: - roots = '' - if self._traceback: - traceback = '\n'.join([ - line - for entry in format_list(self._traceback) - for line in entry.splitlines()]) + '\n' - else: - traceback = '' - return ( - 'Exception while flattening:\n' + - roots + traceback + - self._exception.__class__.__name__ + ': ' + - str(self._exception) + '\n') - - - def __str__(self): - return repr(self) - - - -__all__ = [ - 'Error', 'PageRedirect', 'InfiniteRedirection', 'RenderError', - 'MissingRenderMethod', 'MissingTemplateLoader', 'UnexposedMethodError', - 'UnfilledSlot', 'UnsupportedType', 'FlattenerError', - 'RedirectWithNoLocation' -] |