1# -*- coding: utf-8 -*- 2 3""" 4requests.exceptions 5~~~~~~~~~~~~~~~~~~~ 6 7This module contains the set of Requests' exceptions. 8""" 9from urllib3.exceptions import HTTPError as BaseHTTPError 10 11 12class RequestException(IOError): 13 """There was an ambiguous exception that occurred while handling your 14 request. 15 """ 16 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) 26 27 28class HTTPError(RequestException): 29 """An HTTP error occurred.""" 30 31 32class ConnectionError(RequestException): 33 """A Connection error occurred.""" 34 35 36class ProxyError(ConnectionError): 37 """A proxy error occurred.""" 38 39 40class SSLError(ConnectionError): 41 """An SSL error occurred.""" 42 43 44class Timeout(RequestException): 45 """The request timed out. 46 47 Catching this error will catch both 48 :exc:`~requests.exceptions.ConnectTimeout` and 49 :exc:`~requests.exceptions.ReadTimeout` errors. 50 """ 51 52 53class ConnectTimeout(ConnectionError, Timeout): 54 """The request timed out while trying to connect to the remote server. 55 56 Requests that produced this error are safe to retry. 57 """ 58 59 60class ReadTimeout(Timeout): 61 """The server did not send any data in the allotted amount of time.""" 62 63 64class URLRequired(RequestException): 65 """A valid URL is required to make a request.""" 66 67 68class TooManyRedirects(RequestException): 69 """Too many redirects.""" 70 71 72class MissingSchema(RequestException, ValueError): 73 """The URL schema (e.g. http or https) is missing.""" 74 75 76class InvalidSchema(RequestException, ValueError): 77 """See defaults.py for valid schemas.""" 78 79 80class InvalidURL(RequestException, ValueError): 81 """The URL provided was somehow invalid.""" 82 83 84class InvalidHeader(RequestException, ValueError): 85 """The header value provided was somehow invalid.""" 86 87 88class InvalidProxyURL(InvalidURL): 89 """The proxy URL provided is invalid.""" 90 91 92class ChunkedEncodingError(RequestException): 93 """The server declared chunked encoding but sent an invalid chunk.""" 94 95 96class ContentDecodingError(RequestException, BaseHTTPError): 97 """Failed to decode response content.""" 98 99 100class StreamConsumedError(RequestException, TypeError): 101 """The content for this response was already consumed.""" 102 103 104class RetryError(RequestException): 105 """Custom retries logic failed""" 106 107 108class UnrewindableBodyError(RequestException): 109 """Requests encountered an error when trying to rewind a body.""" 110 111# Warnings 112 113 114class RequestsWarning(Warning): 115 """Base warning for Requests.""" 116 117 118class FileModeWarning(RequestsWarning, DeprecationWarning): 119 """A file was opened in text mode, but Requests determined its binary length.""" 120 121 122class RequestsDependencyWarning(RequestsWarning): 123 """An imported dependency doesn't match the expected version range.""" 124