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

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

124

125

126

# urllib3/exceptions.py 

# Copyright 2008-2013 Andrey Petrov and contributors (see CONTRIBUTORS.txt) 

# 

# This module is part of urllib3 and is released under 

# the MIT License: http://www.opensource.org/licenses/mit-license.php 

 

 

## Base Exceptions 

 

class HTTPError(Exception): 

    "Base exception used by this module." 

    pass 

 

 

class PoolError(HTTPError): 

    "Base exception for errors caused within a pool." 

    def __init__(self, pool, message): 

        self.pool = pool 

        HTTPError.__init__(self, "%s: %s" % (pool, message)) 

 

    def __reduce__(self): 

        # For pickling purposes. 

        return self.__class__, (None, None) 

 

 

class RequestError(PoolError): 

    "Base exception for PoolErrors that have associated URLs." 

    def __init__(self, pool, url, message): 

        self.url = url 

        PoolError.__init__(self, pool, message) 

 

    def __reduce__(self): 

        # For pickling purposes. 

        return self.__class__, (None, self.url, None) 

 

 

class SSLError(HTTPError): 

    "Raised when SSL certificate fails in an HTTPS connection." 

    pass 

 

 

class ProxyError(HTTPError): 

    "Raised when the connection to a proxy fails." 

    pass 

 

 

class ConnectionError(HTTPError): 

    "Raised when a normal connection fails." 

    pass 

 

 

class DecodeError(HTTPError): 

    "Raised when automatic decoding based on Content-Type fails." 

    pass 

 

 

## Leaf Exceptions 

 

class MaxRetryError(RequestError): 

    "Raised when the maximum number of retries is exceeded." 

 

    def __init__(self, pool, url, reason=None): 

        self.reason = reason 

 

        message = "Max retries exceeded with url: %s" % url 

        if reason: 

            message += " (Caused by %s: %s)" % (type(reason), reason) 

        else: 

            message += " (Caused by redirect)" 

 

        RequestError.__init__(self, pool, url, message) 

 

 

class HostChangedError(RequestError): 

    "Raised when an existing pool gets a request for a foreign host." 

 

    def __init__(self, pool, url, retries=3): 

        message = "Tried to open a foreign host with url: %s" % url 

        RequestError.__init__(self, pool, url, message) 

        self.retries = retries 

 

 

class TimeoutStateError(HTTPError): 

    """ Raised when passing an invalid state to a timeout """ 

    pass 

 

 

class TimeoutError(HTTPError): 

    """ Raised when a socket timeout error occurs. 

 

    Catching this error will catch both :exc:`ReadTimeoutErrors 

    <ReadTimeoutError>` and :exc:`ConnectTimeoutErrors <ConnectTimeoutError>`. 

    """ 

    pass 

 

 

class ReadTimeoutError(TimeoutError, RequestError): 

    "Raised when a socket timeout occurs while receiving data from a server" 

    pass 

 

 

# This timeout error does not have a URL attached and needs to inherit from the 

# base HTTPError 

class ConnectTimeoutError(TimeoutError): 

    "Raised when a socket timeout occurs while connecting to a server" 

    pass 

 

 

class EmptyPoolError(PoolError): 

    "Raised when a pool runs out of connections and no more are allowed." 

    pass 

 

 

class ClosedPoolError(PoolError): 

    "Raised when a request enters a pool after the pool has been closed." 

    pass 

 

 

class LocationParseError(ValueError, HTTPError): 

    "Raised when get_host or similar fails to parse the URL input." 

 

    def __init__(self, location): 

        message = "Failed to parse: %s" % location 

        HTTPError.__init__(self, message) 

 

        self.location = location