1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

# -*- coding: utf-8 -*- 

 

""" 

requests.exceptions 

~~~~~~~~~~~~~~~~~~~ 

 

This module contains the set of Requests' exceptions. 

""" 

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

 

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