|
7 | 7 | import json |
8 | 8 | import os |
9 | 9 |
|
10 | | -try: |
11 | | - import jwt |
12 | | -except ImportError: |
13 | | - jwt = None # type: ignore[assignment] |
14 | | - |
15 | 10 | try: |
16 | 11 | from yandex.cloud.iam.v1 import iam_token_service_pb2_grpc |
17 | 12 | from yandex.cloud.iam.v1 import iam_token_service_pb2 |
|
29 | 24 | iam_token_service_pb2_grpc = None |
30 | 25 | iam_token_service_pb2 = None |
31 | 26 |
|
32 | | -try: |
33 | | - import requests |
34 | | -except ImportError: |
35 | | - requests = None # type: ignore |
36 | | - |
37 | | - |
38 | 27 | DEFAULT_METADATA_URL = "http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/token" |
39 | 28 | YANDEX_CLOUD_IAM_TOKEN_SERVICE_URL = "https://iam.api.cloud.yandex.net/iam/v1/tokens" |
40 | 29 | YANDEX_CLOUD_JWT_ALGORITHM = "PS256" |
41 | 30 |
|
42 | 31 |
|
43 | 32 | 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 |
45 | 37 | now = time.time() |
46 | 38 | now_utc = datetime.fromtimestamp(now, timezone.utc) |
47 | 39 | exp_utc = datetime.fromtimestamp(now + jwt_expiration_timeout, timezone.utc) |
@@ -180,14 +172,19 @@ def __init__(self, metadata_url=None, tracer=None): |
180 | 172 | :param ydb.Tracer tracer: ydb tracer |
181 | 173 | """ |
182 | 174 | 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 |
184 | 179 | self.extra_error_message = ( |
185 | 180 | "Check that metadata service configured properly since we failed to fetch it from metadata_url." |
186 | 181 | ) |
187 | 182 | self._metadata_url = DEFAULT_METADATA_URL if metadata_url is None else metadata_url |
188 | 183 |
|
189 | 184 | @tracing.with_trace() |
190 | 185 | def _make_token_request(self): |
| 186 | + import requests |
| 187 | + |
191 | 188 | response = requests.get(self._metadata_url, headers={"Metadata-Flavor": "Google"}, timeout=3) |
192 | 189 | response.raise_for_status() |
193 | 190 | return json.loads(response.text) |
|
0 commit comments