123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- """
- requests.exceptions
- ~~~~~~~~~~~~~~~~~~~
- This module contains the set of Requests' exceptions.
- """
- from urllib3.exceptions import HTTPError as BaseHTTPError
- from .compat import JSONDecodeError as CompatJSONDecodeError
- class RequestException(IOError):
- """There was an ambiguous exception that occurred while handling your
- request.
- """
- def __init__(self, *args, **kwargs):
- """Initialize RequestException with `request` and `response` objects."""
- response = kwargs.pop("response", None)
- self.response = response
- self.request = kwargs.pop("request", None)
- if response is not None and not self.request and hasattr(response, "request"):
- self.request = self.response.request
- super().__init__(*args, **kwargs)
- class InvalidJSONError(RequestException):
- """A JSON error occurred."""
- class JSONDecodeError(InvalidJSONError, CompatJSONDecodeError):
- """Couldn't decode the text into json"""
- def __init__(self, *args, **kwargs):
- """
- Construct the JSONDecodeError instance first with all
- args. Then use it's args to construct the IOError so that
- the json specific args aren't used as IOError specific args
- and the error message from JSONDecodeError is preserved.
- """
- CompatJSONDecodeError.__init__(self, *args)
- InvalidJSONError.__init__(self, *self.args, **kwargs)
- class HTTPError(RequestException):
- """An HTTP error occurred."""
- class ConnectionError(RequestException):
- """A Connection error occurred."""
- class ProxyError(ConnectionError):
- """A proxy error occurred."""
- class SSLError(ConnectionError):
- """An SSL error occurred."""
- class Timeout(RequestException):
- """The request timed out.
- Catching this error will catch both
- :exc:`~requests.exceptions.ConnectTimeout` and
- :exc:`~requests.exceptions.ReadTimeout` errors.
- """
- class ConnectTimeout(ConnectionError, Timeout):
- """The request timed out while trying to connect to the remote server.
- Requests that produced this error are safe to retry.
- """
- class ReadTimeout(Timeout):
- """The server did not send any data in the allotted amount of time."""
- class URLRequired(RequestException):
- """A valid URL is required to make a request."""
- class TooManyRedirects(RequestException):
- """Too many redirects."""
- class MissingSchema(RequestException, ValueError):
- """The URL scheme (e.g. http or https) is missing."""
- class InvalidSchema(RequestException, ValueError):
- """The URL scheme provided is either invalid or unsupported."""
- class InvalidURL(RequestException, ValueError):
- """The URL provided was somehow invalid."""
- class InvalidHeader(RequestException, ValueError):
- """The header value provided was somehow invalid."""
- class InvalidProxyURL(InvalidURL):
- """The proxy URL provided is invalid."""
- class ChunkedEncodingError(RequestException):
- """The server declared chunked encoding but sent an invalid chunk."""
- class ContentDecodingError(RequestException, BaseHTTPError):
- """Failed to decode response content."""
- class StreamConsumedError(RequestException, TypeError):
- """The content for this response was already consumed."""
- class RetryError(RequestException):
- """Custom retries logic failed"""
- class UnrewindableBodyError(RequestException):
- """Requests encountered an error when trying to rewind a body."""
- # Warnings
- class RequestsWarning(Warning):
- """Base warning for Requests."""
- class FileModeWarning(RequestsWarning, DeprecationWarning):
- """A file was opened in text mode, but Requests determined its binary length."""
- class RequestsDependencyWarning(RequestsWarning):
- """An imported dependency doesn't match the expected version range."""
|