From 4f63d5dd46d0bb05bd3ea2e8a1d9a3688d7b69e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cat=20Lee=20Ball=20=F0=9F=8E=B7=F0=9F=90=9B?= Date: Thu, 20 Jun 2019 15:30:27 -0700 Subject: [PATCH] Ensure string for Py3 compat --- apitools/base/py/credentials_lib.py | 13 +++++++++++-- apitools/base/py/util.py | 2 ++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/apitools/base/py/credentials_lib.py b/apitools/base/py/credentials_lib.py index 69c0f3d0..03a61575 100644 --- a/apitools/base/py/credentials_lib.py +++ b/apitools/base/py/credentials_lib.py @@ -137,6 +137,15 @@ def GetCredentials(package_name, scopes, client_id, client_secret, user_agent, **kwds): """Attempt to get credentials, using an oauth dance as the last resort.""" scopes = util.NormalizeScopes(scopes) + if isinstance(scope_spec, six.string_types): + scope_spec = six.ensure_str(scope_spec) + return set(scope_spec.split(' ')) + elif isinstance(scope_spec, collections.Iterable): + scope_spec = [six.ensure_str(x) for x in scope_spec] + return set(scope_spec) + raise exceptions.TypecheckError( + 'NormalizeScopes expected string or iterable, found %s' % ( + type(scope_spec),)) client_info = { 'client_id': client_id, 'client_secret': client_secret, @@ -355,7 +364,7 @@ def _ScopesFromMetadataServer(self, scopes): def GetServiceAccount(self, account): relative_url = 'instance/service-accounts' response = _GceMetadataRequest(relative_url) - response_lines = [six.ensure_text(line).rstrip(u'/\n\r') + response_lines = [six.ensure_str(line).rstrip(u'/\n\r') for line in response.readlines()] return account in response_lines @@ -363,7 +372,7 @@ def GetInstanceScopes(self): relative_url = 'instance/service-accounts/{0}/scopes'.format( self.__service_account_name) response = _GceMetadataRequest(relative_url) - return util.NormalizeScopes(scope.strip() + return util.NormalizeScopes(six.ensure_str(scope).strip() for scope in response.readlines()) # pylint: disable=arguments-differ diff --git a/apitools/base/py/util.py b/apitools/base/py/util.py index b131cdf6..ac1a44c2 100644 --- a/apitools/base/py/util.py +++ b/apitools/base/py/util.py @@ -76,8 +76,10 @@ def DetectGce(): def NormalizeScopes(scope_spec): """Normalize scope_spec to a set of strings.""" if isinstance(scope_spec, six.string_types): + scope_spec = six.ensure_str(scope_spec) return set(scope_spec.split(' ')) elif isinstance(scope_spec, collections.Iterable): + scope_spec = [six.ensure_str(x) for x in scope_spec] return set(scope_spec) raise exceptions.TypecheckError( 'NormalizeScopes expected string or iterable, found %s' % (