Skip to content

Commit c4a53ce

Browse files
committed
fix: defer urllib3 and grpc eager loading in transport modules
1 parent 5503252 commit c4a53ce

2 files changed

Lines changed: 20 additions & 10 deletions

File tree

packages/google-auth/google/auth/transport/grpc.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
__lazy_modules__: Set[str] = {"grpc"}
3737

3838

39-
class AuthMetadataPlugin(grpc.AuthMetadataPlugin):
39+
class AuthMetadataPlugin(object):
4040
"""A `gRPC AuthMetadataPlugin`_ that inserts the credentials into each
4141
request.
4242
@@ -54,10 +54,6 @@ class AuthMetadataPlugin(grpc.AuthMetadataPlugin):
5454
"""
5555

5656
def __init__(self, credentials, request, default_host=None):
57-
# pylint: disable=no-value-for-parameter
58-
# pylint doesn't realize that the super method takes no arguments
59-
# because this class is the same name as the superclass.
60-
super(AuthMetadataPlugin, self).__init__()
6157
self._credentials = credentials
6258
self._request = request
6359
self._default_host = default_host

packages/google-auth/google/auth/transport/urllib3.py

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,6 @@
6666
"packaging.version",
6767
}
6868

69-
if version.parse(urllib3.__version__) >= version.parse("2.0.0"): # pragma: NO COVER
70-
RequestMethods = urllib3._request_methods.RequestMethods # type: ignore
71-
else: # pragma: NO COVER
72-
RequestMethods = urllib3.request.RequestMethods # type: ignore
7369

7470
_LOGGER = logging.getLogger(__name__)
7571

@@ -213,7 +209,7 @@ def _make_mutual_tls_http(cert, key):
213209
return http
214210

215211

216-
class AuthorizedHttp(RequestMethods): # type: ignore
212+
class AuthorizedHttp(object):
217213
"""A urllib3 HTTP class with credentials.
218214
219215
This class is used to perform requests to API endpoints that require
@@ -296,6 +292,24 @@ def my_cert_callback():
296292
account credentials.
297293
"""
298294

295+
_encode_url_methods = {"DELETE", "GET", "HEAD", "OPTIONS"}
296+
297+
def __getattr__(self, name):
298+
if name in ("request", "request_encode_url", "request_encode_body"):
299+
import types
300+
301+
if version.parse(urllib3.__version__) >= version.parse("2.0.0"):
302+
rm = urllib3._request_methods.RequestMethods
303+
else:
304+
rm = urllib3.request.RequestMethods
305+
306+
method = getattr(rm, name)
307+
return types.MethodType(method, self)
308+
309+
raise AttributeError(
310+
f"'{self.__class__.__name__}' object has no attribute '{name}'"
311+
)
312+
299313
def __init__(
300314
self,
301315
credentials,

0 commit comments

Comments
 (0)