Skip to content

fix: replace deprecated socket.error with OSError #1161

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jan 13, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 3 additions & 4 deletions googleapiclient/http.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
10 changes: 5 additions & 5 deletions tests/test_http.py
Original file line number Diff line number Diff line change
Expand Up @@ -137,22 +137,22 @@ 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()
else:
# 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
Expand All @@ -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:
Expand Down Expand Up @@ -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):
Expand Down