Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

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."""