From b7b9986fe13c483eeefb77673b4091911978ee46 Mon Sep 17 00:00:00 2001 From: Aaron Niskode-Dossett Date: Wed, 13 Jan 2021 09:18:01 -0600 Subject: [PATCH] fix: replace deprecated socket.error with OSError (#1161) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes #1148 🦕 --- googleapiclient/http.py | 7 +++---- tests/test_http.py | 10 +++++----- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/googleapiclient/http.py b/googleapiclient/http.py index 5e582cf8519..e78f70f1ab9 100644 --- a/googleapiclient/http.py +++ b/googleapiclient/http.py @@ -178,14 +178,13 @@ def _retry_request( except _ssl_SSLError as ssl_error: exception = ssl_error except socket.timeout as socket_timeout: - # It's important that this be before socket.error as it's a subclass + # Needs to be before socket.error as it's a subclass of OSError # socket.timeout has no errorcode exception = socket_timeout except ConnectionError as connection_error: - # Needs to be before socket.error as it's a subclass of - # OSError (socket.error) + # Needs to be before socket.error as it's a subclass of OSError exception = connection_error - except socket.error as socket_error: + except OSError as socket_error: # errno's contents differ by platform, so we have to match by name. # Some of these same errors may have been caught above, e.g. ECONNRESET *should* be # raised as a ConnectionError, but some libraries will raise it as a socket.error diff --git a/tests/test_http.py b/tests/test_http.py index f87d7e1613b..6292dc1bcbb 100644 --- a/tests/test_http.py +++ b/tests/test_http.py @@ -137,7 +137,7 @@ def request(self, *args, **kwargs): elif self.num_errors == 4: ex = httplib2.ServerNotFoundError() elif self.num_errors == 3: - ex = socket.error() + ex = OSError() ex.errno = socket.errno.EPIPE elif self.num_errors == 2: ex = ssl.SSLError() @@ -145,14 +145,14 @@ def request(self, *args, **kwargs): # Initialize the timeout error code to the platform's error code. try: # For Windows: - ex = socket.error() + ex = OSError() ex.errno = socket.errno.WSAETIMEDOUT except AttributeError: # For Linux/Mac: if PY3: ex = socket.timeout() else: - ex = socket.error() + ex = OSError() ex.errno = socket.errno.ETIMEDOUT self.num_errors -= 1 @@ -170,7 +170,7 @@ def request(self, *args, **kwargs): return httplib2.Response(self.success_json), self.success_data else: self.num_errors -= 1 - ex = socket.error() + ex = OSError() # set errno to a non-retriable value try: # For Windows: @@ -943,7 +943,7 @@ def test_no_retry_connection_errors(self): ) request._sleep = lambda _x: 0 # do nothing request._rand = lambda: 10 - with self.assertRaises(socket.error): + with self.assertRaises(OSError): response = request.execute(num_retries=3) def test_retry_connection_errors_non_resumable(self):