1 # -*- coding: utf-8 -*-
7 This module contains the set of Requests' exceptions.
9 from .packages.urllib3.exceptions import HTTPError as BaseHTTPError
12 class RequestException(IOError):
13 """There was an ambiguous exception that occurred while handling your
17 def __init__(self, *args, **kwargs):
18 """Initialize RequestException with `request` and `response` objects."""
19 response = kwargs.pop('response', None)
20 self.response = response
21 self.request = kwargs.pop('request', None)
22 if (response is not None and not self.request and
23 hasattr(response, 'request')):
24 self.request = self.response.request
25 super(RequestException, self).__init__(*args, **kwargs)
28 class HTTPError(RequestException):
29 """An HTTP error occurred."""
32 class ConnectionError(RequestException):
33 """A Connection error occurred."""
36 class ProxyError(ConnectionError):
37 """A proxy error occurred."""
40 class SSLError(ConnectionError):
41 """An SSL error occurred."""
44 class Timeout(RequestException):
45 """The request timed out.
47 Catching this error will catch both
48 :exc:`~requests.exceptions.ConnectTimeout` and
49 :exc:`~requests.exceptions.ReadTimeout` errors.
53 class ConnectTimeout(ConnectionError, Timeout):
54 """The request timed out while trying to connect to the remote server.
56 Requests that produced this error are safe to retry.
60 class ReadTimeout(Timeout):
61 """The server did not send any data in the allotted amount of time."""
64 class URLRequired(RequestException):
65 """A valid URL is required to make a request."""
68 class TooManyRedirects(RequestException):
69 """Too many redirects."""
72 class MissingSchema(RequestException, ValueError):
73 """The URL schema (e.g. http or https) is missing."""
76 class InvalidSchema(RequestException, ValueError):
77 """See defaults.py for valid schemas."""
80 class InvalidURL(RequestException, ValueError):
81 """The URL provided was somehow invalid."""
84 class InvalidHeader(RequestException, ValueError):
85 """The header value provided was somehow invalid."""
88 class ChunkedEncodingError(RequestException):
89 """The server declared chunked encoding but sent an invalid chunk."""
92 class ContentDecodingError(RequestException, BaseHTTPError):
93 """Failed to decode response content"""
96 class StreamConsumedError(RequestException, TypeError):
97 """The content for this response was already consumed"""
100 class RetryError(RequestException):
101 """Custom retries logic failed"""
107 class RequestsWarning(Warning):
108 """Base warning for Requests."""
112 class FileModeWarning(RequestsWarning, DeprecationWarning):
113 """A file was opened in text mode, but Requests determined its binary length."""