Move creation of attributes to RequestException
authorIan Cordasco <graffatcolmingov@gmail.com>
Wed, 29 Jan 2014 02:13:57 +0000 (20:13 -0600)
committerIan Cordasco <graffatcolmingov@gmail.com>
Wed, 29 Jan 2014 02:13:57 +0000 (20:13 -0600)
Pass request objects in HTTPAdapter

requests/adapters.py
requests/exceptions.py

index dd10e9593386438b88874ea490de52cded208e82..ca462232c8f4c402a58d3c1908809a65a0b2838c 100644 (file)
@@ -372,19 +372,19 @@ class HTTPAdapter(BaseAdapter):
                     conn._put_conn(low_conn)
 
         except socket.error as sockerr:
-            raise ConnectionError(sockerr)
+            raise ConnectionError(sockerr, request=request)
 
         except MaxRetryError as e:
-            raise ConnectionError(e)
+            raise ConnectionError(e, request=request)
 
         except _ProxyError as e:
             raise ProxyError(e)
 
         except (_SSLError, _HTTPError) as e:
             if isinstance(e, _SSLError):
-                raise SSLError(e)
+                raise SSLError(e, request=request)
             elif isinstance(e, TimeoutError):
-                raise Timeout(e)
+                raise Timeout(e, request=request)
             else:
                 raise
 
index cd3c760016dbe39ba68a784697ffe291a7535216..7c291f2bcffc7b2b574970743987dfcba81bab4e 100644 (file)
@@ -14,15 +14,20 @@ 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.
+        """
+        self.response = kwargs.pop('response', None)
+        self.request = kwargs.pop('request', None)
+        if self.response and not self.request:
+            self.request = self.response.request
+        super(RequestException, self).__init__(*args, **kwargs)
+
 
 class HTTPError(RequestException):
     """An HTTP error occurred."""
 
-    def __init__(self, *args, **kwargs):
-        """ Initializes HTTPError with optional `response` object. """
-        self.response = kwargs.pop('response', None)
-        super(HTTPError, self).__init__(*args, **kwargs)
-
 
 class ConnectionError(RequestException):
     """A Connection error occurred."""