Skip to content
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鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: replace deprecated socket.error with OSError #1161

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.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
7 changes: 3 additions & 4 deletions googleapiclient/http.py
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
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