fix!: drop support for Python 2.7 (#778)
Drop use of 'six' wrapper library.
Drop 'u"' prefixes.
Drop support for app_engine 'classic' mode (Python 2.7-only).
Release-As: 2.0.0b1
Closes #777.
diff --git a/google/oauth2/_client.py b/google/oauth2/_client.py
index 2f4e847..f819371 100644
--- a/google/oauth2/_client.py
+++ b/google/oauth2/_client.py
@@ -24,11 +24,9 @@
"""
import datetime
+import http.client
import json
-
-import six
-from six.moves import http_client
-from six.moves import urllib
+import urllib
from google.auth import _helpers
from google.auth import exceptions
@@ -120,7 +118,7 @@
)
response_data = json.loads(response_body)
- if response.status == http_client.OK:
+ if response.status == http.client.OK:
break
else:
error_desc = response_data.get("error_description") or ""
@@ -131,9 +129,9 @@
):
retry += 1
continue
- return response.status == http_client.OK, response_data
+ return response.status == http.client.OK, response_data
- return response.status == http_client.OK, response_data
+ return response.status == http.client.OK, response_data
def _token_endpoint_request(
@@ -196,7 +194,7 @@
access_token = response_data["access_token"]
except KeyError as caught_exc:
new_exc = exceptions.RefreshError("No access token in response.", response_data)
- six.raise_from(new_exc, caught_exc)
+ raise new_exc from caught_exc
expiry = _parse_expiry(response_data)
@@ -236,7 +234,7 @@
id_token = response_data["id_token"]
except KeyError as caught_exc:
new_exc = exceptions.RefreshError("No ID token in response.", response_data)
- six.raise_from(new_exc, caught_exc)
+ raise new_exc from caught_exc
payload = jwt.decode(id_token, verify=False)
expiry = datetime.datetime.utcfromtimestamp(payload["exp"])
@@ -265,7 +263,7 @@
access_token = response_data["access_token"]
except KeyError as caught_exc:
new_exc = exceptions.RefreshError("No access token in response.", response_data)
- six.raise_from(new_exc, caught_exc)
+ raise new_exc from caught_exc
refresh_token = response_data.get("refresh_token", refresh_token)
expiry = _parse_expiry(response_data)
diff --git a/google/oauth2/_client_async.py b/google/oauth2/_client_async.py
index cf51211..8849023 100644
--- a/google/oauth2/_client_async.py
+++ b/google/oauth2/_client_async.py
@@ -24,11 +24,9 @@
"""
import datetime
+import http.client
import json
-
-import six
-from six.moves import http_client
-from six.moves import urllib
+import urllib
from google.auth import exceptions
from google.auth import jwt
@@ -85,7 +83,7 @@
response_data = json.loads(response_body)
- if response.status == http_client.OK:
+ if response.status == http.client.OK:
break
else:
error_desc = response_data.get("error_description") or ""
@@ -96,9 +94,9 @@
):
retry += 1
continue
- return response.status == http_client.OK, response_data
+ return response.status == http.client.OK, response_data
- return response.status == http_client.OK, response_data
+ return response.status == http.client.OK, response_data
async def _token_endpoint_request(
@@ -161,7 +159,7 @@
access_token = response_data["access_token"]
except KeyError as caught_exc:
new_exc = exceptions.RefreshError("No access token in response.", response_data)
- six.raise_from(new_exc, caught_exc)
+ raise new_exc from caught_exc
expiry = client._parse_expiry(response_data)
@@ -201,7 +199,7 @@
id_token = response_data["id_token"]
except KeyError as caught_exc:
new_exc = exceptions.RefreshError("No ID token in response.", response_data)
- six.raise_from(new_exc, caught_exc)
+ raise new_exc from caught_exc
payload = jwt.decode(id_token, verify=False)
expiry = datetime.datetime.utcfromtimestamp(payload["exp"])
diff --git a/google/oauth2/_id_token_async.py b/google/oauth2/_id_token_async.py
index ab681a9..a4a526d 100644
--- a/google/oauth2/_id_token_async.py
+++ b/google/oauth2/_id_token_async.py
@@ -58,12 +58,10 @@
.. _CacheControl: https://cachecontrol.readthedocs.io
"""
+import http.client
import json
import os
-import six
-from six.moves import http_client
-
from google.auth import environment_vars
from google.auth import exceptions
from google.auth import jwt
@@ -88,7 +86,7 @@
"""
response = await request(certs_url, method="GET")
- if response.status != http_client.OK:
+ if response.status != http.client.OK:
raise exceptions.TransportError(
"Could not fetch certificates at {}".format(certs_url)
)
@@ -243,10 +241,10 @@
"GOOGLE_APPLICATION_CREDENTIALS is not valid service account credentials.",
caught_exc,
)
- six.raise_from(new_exc, caught_exc)
+ raise new_exc from caught_exc
- # 2. Try to fetch ID token from metada server if it exists. The code works for GAE and
- # Cloud Run metadata server as well.
+ # 2. Try to fetch ID token from metada server if it exists. The code works
+ # for GAE and Cloud Run metadata server as well.
try:
from google.auth import compute_engine
from google.auth.compute_engine import _metadata
diff --git a/google/oauth2/_reauth_async.py b/google/oauth2/_reauth_async.py
index 09e0760..510578b 100644
--- a/google/oauth2/_reauth_async.py
+++ b/google/oauth2/_reauth_async.py
@@ -34,8 +34,6 @@
import sys
-from six.moves import range
-
from google.auth import exceptions
from google.oauth2 import _client
from google.oauth2 import _client_async
diff --git a/google/oauth2/challenges.py b/google/oauth2/challenges.py
index d0b070e..7756a80 100644
--- a/google/oauth2/challenges.py
+++ b/google/oauth2/challenges.py
@@ -20,8 +20,6 @@
import getpass
import sys
-import six
-
from google.auth import _helpers
from google.auth import exceptions
@@ -44,8 +42,7 @@
return getpass.getpass(text)
-@six.add_metaclass(abc.ABCMeta)
-class ReauthChallenge(object):
+class ReauthChallenge(object, metaclass=abc.ABCMeta):
"""Base class for reauth challenges."""
@property
diff --git a/google/oauth2/credentials.py b/google/oauth2/credentials.py
index 158249e..98fd71b 100644
--- a/google/oauth2/credentials.py
+++ b/google/oauth2/credentials.py
@@ -35,8 +35,6 @@
import io
import json
-import six
-
from google.auth import _cloud_sdk
from google.auth import _helpers
from google.auth import credentials
@@ -336,7 +334,7 @@
ValueError: If the info is not in the expected format.
"""
keys_needed = set(("refresh_token", "client_id", "client_secret"))
- missing = keys_needed.difference(six.iterkeys(info))
+ missing = keys_needed.difference(info)
if missing:
raise ValueError(
diff --git a/google/oauth2/id_token.py b/google/oauth2/id_token.py
index 540ccd1..25492ca 100644
--- a/google/oauth2/id_token.py
+++ b/google/oauth2/id_token.py
@@ -55,12 +55,10 @@
.. _CacheControl: https://cachecontrol.readthedocs.io
"""
+import http.client
import json
import os
-import six
-from six.moves import http_client
-
from google.auth import environment_vars
from google.auth import exceptions
from google.auth import jwt
@@ -97,7 +95,7 @@
"""
response = request(certs_url, method="GET")
- if response.status != http_client.OK:
+ if response.status != http.client.OK:
raise exceptions.TransportError(
"Could not fetch certificates at {}".format(certs_url)
)
@@ -242,10 +240,10 @@
"GOOGLE_APPLICATION_CREDENTIALS is not valid service account credentials.",
caught_exc,
)
- six.raise_from(new_exc, caught_exc)
+ raise new_exc from caught_exc
- # 2. Try to fetch ID token from metada server if it exists. The code works for GAE and
- # Cloud Run metadata server as well.
+ # 2. Try to fetch ID token from metada server if it exists. The code
+ # works for GAE and Cloud Run metadata server as well.
try:
from google.auth import compute_engine
from google.auth.compute_engine import _metadata
diff --git a/google/oauth2/reauth.py b/google/oauth2/reauth.py
index d914fe9..fc2629e 100644
--- a/google/oauth2/reauth.py
+++ b/google/oauth2/reauth.py
@@ -34,8 +34,6 @@
import sys
-from six.moves import range
-
from google.auth import exceptions
from google.oauth2 import _client
from google.oauth2 import challenges
diff --git a/google/oauth2/sts.py b/google/oauth2/sts.py
index ae3c014..9f2d68a 100644
--- a/google/oauth2/sts.py
+++ b/google/oauth2/sts.py
@@ -31,10 +31,9 @@
.. _rfc8693 section 2.2.1: https://tools.ietf.org/html/rfc8693#section-2.2.1
"""
+import http.client
import json
-
-from six.moves import http_client
-from six.moves import urllib
+import urllib
from google.oauth2 import utils
@@ -146,7 +145,7 @@
)
# If non-200 response received, translate to OAuthError exception.
- if response.status != http_client.OK:
+ if response.status != http.client.OK:
utils.handle_error_response(response_body)
response_data = json.loads(response_body)
diff --git a/google/oauth2/utils.py b/google/oauth2/utils.py
index 593f032..c57833d 100644
--- a/google/oauth2/utils.py
+++ b/google/oauth2/utils.py
@@ -45,8 +45,6 @@
import enum
import json
-import six
-
from google.auth import exceptions
@@ -77,8 +75,7 @@
self.client_secret = client_secret
-@six.add_metaclass(abc.ABCMeta)
-class OAuthClientAuthHandler(object):
+class OAuthClientAuthHandler(object, metaclass=abc.ABCMeta):
"""Abstract class for handling client authentication in OAuth-based
operations.
"""