|
|
|
|
|
""" |
|
requests.exceptions |
|
~~~~~~~~~~~~~~~~~~~ |
|
|
|
This module contains the set of Requests' exceptions. |
|
""" |
|
from pip._vendor.urllib3.exceptions import HTTPError as BaseHTTPError |
|
|
|
|
|
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(RequestException, self).__init__(*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 schema (e.g. http or https) is missing.""" |
|
|
|
|
|
class InvalidSchema(RequestException, ValueError): |
|
"""See defaults.py for valid schemas.""" |
|
|
|
|
|
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.""" |
|
|
|
|
|
|
|
|
|
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.""" |
|
|