Skip to content

Commit 803d111

Browse files
authored
Merge pull request #805 from ydb-platform/simplify_package_import
Improve module import
2 parents e672a11 + 5e8573b commit 803d111

2 files changed

Lines changed: 13 additions & 14 deletions

File tree

ydb/driver.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
from . import credentials as credentials_impl, table, scheme, pool
88
from . import tracing
9-
from . import iam
109
from . import _utilities
1110

1211
if TYPE_CHECKING:
@@ -63,6 +62,7 @@ def credentials_from_env_variables(tracer: Optional[tracing.Tracer] = None) -> "
6362
metadata_credentials = os.getenv("YDB_METADATA_CREDENTIALS", "0") == "1"
6463
if metadata_credentials:
6564
ctx.trace({"credentials.metadata": True})
65+
from . import iam
6666

6767
return iam.MetadataUrlCredentials(tracer=tracer)
6868

@@ -84,6 +84,8 @@ def credentials_from_env_variables(tracer: Optional[tracing.Tracer] = None) -> "
8484
"credentials.metadata": True,
8585
}
8686
)
87+
from . import iam
88+
8789
return iam.MetadataUrlCredentials(tracer=tracer)
8890

8991

ydb/iam/auth.py

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,6 @@
77
import json
88
import os
99

10-
try:
11-
import jwt
12-
except ImportError:
13-
jwt = None # type: ignore[assignment]
14-
1510
try:
1611
from yandex.cloud.iam.v1 import iam_token_service_pb2_grpc
1712
from yandex.cloud.iam.v1 import iam_token_service_pb2
@@ -29,19 +24,16 @@
2924
iam_token_service_pb2_grpc = None
3025
iam_token_service_pb2 = None
3126

32-
try:
33-
import requests
34-
except ImportError:
35-
requests = None # type: ignore
36-
37-
3827
DEFAULT_METADATA_URL = "http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/token"
3928
YANDEX_CLOUD_IAM_TOKEN_SERVICE_URL = "https://iam.api.cloud.yandex.net/iam/v1/tokens"
4029
YANDEX_CLOUD_JWT_ALGORITHM = "PS256"
4130

4231

4332
def get_jwt(account_id, access_key_id, private_key, jwt_expiration_timeout, algorithm, token_service_url, subject=None):
44-
assert jwt is not None, "Install pyjwt library to use jwt tokens"
33+
try:
34+
import jwt
35+
except ImportError as e:
36+
raise ImportError("Install pyjwt library to use jwt tokens") from e
4537
now = time.time()
4638
now_utc = datetime.fromtimestamp(now, timezone.utc)
4739
exp_utc = datetime.fromtimestamp(now + jwt_expiration_timeout, timezone.utc)
@@ -180,14 +172,19 @@ def __init__(self, metadata_url=None, tracer=None):
180172
:param ydb.Tracer tracer: ydb tracer
181173
"""
182174
super(MetadataUrlCredentials, self).__init__(tracer)
183-
assert requests is not None, "Install requests library to use metadata credentials provider"
175+
try:
176+
import requests # noqa: F401
177+
except ImportError as e:
178+
raise ImportError("Install requests library to use metadata credentials provider") from e
184179
self.extra_error_message = (
185180
"Check that metadata service configured properly since we failed to fetch it from metadata_url."
186181
)
187182
self._metadata_url = DEFAULT_METADATA_URL if metadata_url is None else metadata_url
188183

189184
@tracing.with_trace()
190185
def _make_token_request(self):
186+
import requests
187+
191188
response = requests.get(self._metadata_url, headers={"Metadata-Flavor": "Google"}, timeout=3)
192189
response.raise_for_status()
193190
return json.loads(response.text)

0 commit comments

Comments
 (0)