Source code for grab.error

"""
Custom exception which Grab instance could generate.

Taxonomy:

Exception
|-> GrabError
    |-> GrabNetworkError
        |-> GrabTimeoutError
        |-> GrabConnectionError
        |-> GrabCouldNotResolveHostError
    |-> GrabAuthError
    |-> GrabMisuseError
    |-> GrabTooManyRedirectsError
    |-> GrabInvalidUrl
    |-> GrabInternalError

Exception
| -> weblib.error.WeblibError
     |-> DataNotFound <- IndexError
"""

from __future__ import absolute_import
from weblib.error import DataNotFound  # noqa pylint: disable=unused-import


[docs]class GrabError(Exception): """ All custom Grab exception should be children of that class. """
class OriginalExceptionError(object): """ Exception sub-class which constructor accepts original exception as second argument """ def __init__(self, *args, **kwargs): if len(args) > 1: self.original_exc = args[1] else: self.original_exc = None super(OriginalExceptionError, self).__init__(*args, **kwargs)
[docs]class GrabNetworkError(OriginalExceptionError, GrabError): """ Raises in case of network error. """
[docs]class GrabTimeoutError(GrabNetworkError): """ Raises when configured time is outed for the request. In curl transport it is CURLE_OPERATION_TIMEDOUT (28) """
[docs]class GrabConnectionError(GrabNetworkError): """ Raised when it is not possible to establish network connection. In curl transport it is CURLE_COULDNT_CONNECT (7) """
class GrabCouldNotResolveHostError(GrabNetworkError): """ URLE_COULDNT_RESOLVE_HOST (6) Couldn't resolve host. The given remote host was not resolved. """
[docs]class GrabAuthError(GrabError): """ Raised when remote server denies authentication credentials. In curl transport it is CURLE_COULDNT_CONNECT (67) """
[docs]class GrabMisuseError(GrabError): """ Indicates incorrect usage of grab API. """
[docs]class GrabTooManyRedirectsError(GrabError): """ Raised when Grab reached max. allowd number of redirects for one request. """
[docs]class GrabInvalidUrl(GrabError): """ Raised when Grab have no idea how to handle the URL or when some error occurred while normalizing URL e.g. IDN processing. """
class GrabInternalError(OriginalExceptionError, GrabError): pass