fix: replace deprecated socket.error with OSError (#1161)
Fixes #1148 🦕
diff --git a/googleapiclient/http.py b/googleapiclient/http.py
index 5e582cf..e78f70f 100644
--- a/googleapiclient/http.py
+++ b/googleapiclient/http.py
@@ -178,14 +178,13 @@
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 f87d7e1..6292dc1 100644
--- a/tests/test_http.py
+++ b/tests/test_http.py
@@ -137,7 +137,7 @@
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 @@
# 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 @@
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 @@
)
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):