ibm-cloud-sdk-core 3.16.0__py3-none-any.whl → 3.21.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ibm_cloud_sdk_core/__init__.py +1 -0
- ibm_cloud_sdk_core/api_exception.py +18 -4
- ibm_cloud_sdk_core/authenticators/__init__.py +1 -0
- ibm_cloud_sdk_core/authenticators/authenticator.py +2 -1
- ibm_cloud_sdk_core/authenticators/basic_authenticator.py +12 -7
- ibm_cloud_sdk_core/authenticators/bearer_token_authenticator.py +7 -2
- ibm_cloud_sdk_core/authenticators/container_authenticator.py +25 -16
- ibm_cloud_sdk_core/authenticators/cp4d_authenticator.py +38 -23
- ibm_cloud_sdk_core/authenticators/iam_authenticator.py +22 -13
- ibm_cloud_sdk_core/authenticators/iam_request_based_authenticator.py +10 -8
- ibm_cloud_sdk_core/authenticators/mcsp_authenticator.py +134 -0
- ibm_cloud_sdk_core/authenticators/vpc_instance_authenticator.py +12 -11
- ibm_cloud_sdk_core/base_service.py +137 -103
- ibm_cloud_sdk_core/detailed_response.py +21 -15
- ibm_cloud_sdk_core/get_authenticator.py +35 -17
- ibm_cloud_sdk_core/http_adapter.py +28 -0
- ibm_cloud_sdk_core/logger.py +85 -0
- ibm_cloud_sdk_core/private_helpers.py +34 -0
- ibm_cloud_sdk_core/token_managers/container_token_manager.py +63 -33
- ibm_cloud_sdk_core/token_managers/cp4d_token_manager.py +35 -22
- ibm_cloud_sdk_core/token_managers/iam_request_based_token_manager.py +50 -21
- ibm_cloud_sdk_core/token_managers/iam_token_manager.py +24 -13
- ibm_cloud_sdk_core/token_managers/jwt_token_manager.py +3 -16
- ibm_cloud_sdk_core/token_managers/mcsp_token_manager.py +108 -0
- ibm_cloud_sdk_core/token_managers/token_manager.py +20 -23
- ibm_cloud_sdk_core/token_managers/vpc_instance_token_manager.py +37 -18
- ibm_cloud_sdk_core/utils.py +127 -48
- ibm_cloud_sdk_core/version.py +1 -1
- ibm_cloud_sdk_core-3.21.0.dist-info/METADATA +159 -0
- ibm_cloud_sdk_core-3.21.0.dist-info/RECORD +35 -0
- {ibm_cloud_sdk_core-3.16.0.dist-info → ibm_cloud_sdk_core-3.21.0.dist-info}/WHEEL +1 -1
- ibm_cloud_sdk_core-3.21.0.dist-info/top_level.txt +1 -0
- ibm_cloud_sdk_core-3.16.0.dist-info/METADATA +0 -112
- ibm_cloud_sdk_core-3.16.0.dist-info/RECORD +0 -52
- ibm_cloud_sdk_core-3.16.0.dist-info/top_level.txt +0 -3
- ibm_cloud_sdk_core-3.16.0.dist-info/zip-safe +0 -1
- test/__init__.py +0 -0
- test/test_api_exception.py +0 -73
- test/test_authenticator.py +0 -21
- test/test_base_service.py +0 -933
- test/test_basic_authenticator.py +0 -36
- test/test_bearer_authenticator.py +0 -28
- test/test_container_authenticator.py +0 -105
- test/test_container_token_manager.py +0 -283
- test/test_cp4d_authenticator.py +0 -171
- test/test_cp4d_token_manager.py +0 -56
- test/test_detailed_response.py +0 -57
- test/test_iam_authenticator.py +0 -157
- test/test_iam_token_manager.py +0 -362
- test/test_jwt_token_manager.py +0 -109
- test/test_no_auth_authenticator.py +0 -15
- test/test_token_manager.py +0 -84
- test/test_utils.py +0 -634
- test/test_vpc_instance_authenticator.py +0 -66
- test/test_vpc_instance_token_manager.py +0 -266
- test_integration/__init__.py +0 -0
- test_integration/test_cp4d_authenticator_integration.py +0 -45
- {ibm_cloud_sdk_core-3.16.0.dist-info → ibm_cloud_sdk_core-3.21.0.dist-info}/LICENSE +0 -0
ibm_cloud_sdk_core/utils.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# coding: utf-8
|
|
2
2
|
|
|
3
|
-
# Copyright 2019,
|
|
3
|
+
# Copyright 2019, 2024 IBM All Rights Reserved.
|
|
4
4
|
#
|
|
5
5
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
6
|
# you may not use this file except in compliance with the License.
|
|
@@ -15,32 +15,104 @@
|
|
|
15
15
|
# limitations under the License.
|
|
16
16
|
# from ibm_cloud_sdk_core.authenticators import Authenticator
|
|
17
17
|
import datetime
|
|
18
|
+
import gzip
|
|
19
|
+
import io
|
|
18
20
|
import json as json_import
|
|
19
|
-
import
|
|
21
|
+
import re
|
|
20
22
|
from os import getenv, environ, getcwd
|
|
21
23
|
from os.path import isfile, join, expanduser
|
|
22
24
|
from typing import List, Union
|
|
23
25
|
from urllib.parse import urlparse, parse_qs
|
|
24
26
|
|
|
25
|
-
from requests.adapters import HTTPAdapter
|
|
26
|
-
from urllib3.util.ssl_ import create_urllib3_context
|
|
27
|
-
|
|
28
27
|
import dateutil.parser as date_parser
|
|
28
|
+
from .logger import get_logger
|
|
29
|
+
|
|
30
|
+
logger = get_logger()
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class GzipStream(io.RawIOBase):
|
|
34
|
+
"""Compress files on the fly.
|
|
29
35
|
|
|
36
|
+
GzipStream is a helper class around the gzip library. It helps to
|
|
37
|
+
compress already opened files (file-like objects) on the fly, so
|
|
38
|
+
there is no need to read everything into the memory and call the
|
|
39
|
+
`compress` function on it.
|
|
40
|
+
The GzipFile is opened on the instance itself so it needs to act
|
|
41
|
+
as a file-like object.
|
|
30
42
|
|
|
31
|
-
|
|
32
|
-
|
|
43
|
+
Args:
|
|
44
|
+
input: the source of the data to be compressed.
|
|
45
|
+
It can be a file-like object, bytes or string.
|
|
33
46
|
"""
|
|
34
|
-
def __init__(self, *args, **kwargs):
|
|
35
|
-
super().__init__(*args, **kwargs)
|
|
36
47
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
48
|
+
def __init__(self, source: Union[io.IOBase, bytes, str]):
|
|
49
|
+
self.buffer = b''
|
|
50
|
+
|
|
51
|
+
if isinstance(source, io.IOBase):
|
|
52
|
+
# The input is already a file-like object, use it as-is.
|
|
53
|
+
self.uncompressed = source
|
|
54
|
+
elif isinstance(source, str):
|
|
55
|
+
# Strings must be handled with StringIO.
|
|
56
|
+
self.uncompressed = io.StringIO(source)
|
|
57
|
+
else:
|
|
58
|
+
# Handle the rest as raw bytes.
|
|
59
|
+
self.uncompressed = io.BytesIO(source)
|
|
60
|
+
|
|
61
|
+
self.compressor = gzip.GzipFile(fileobj=self, mode='wb')
|
|
62
|
+
|
|
63
|
+
def read(self, size: int = -1) -> bytes:
|
|
64
|
+
"""Compresses and returns the requested size of data.
|
|
65
|
+
|
|
66
|
+
Args:
|
|
67
|
+
size: how many bytes to return. -1 to read and compress the whole file
|
|
40
68
|
"""
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
69
|
+
compressed = b''
|
|
70
|
+
|
|
71
|
+
if (size < 0) or (len(self.buffer) < size):
|
|
72
|
+
for raw in self.uncompressed:
|
|
73
|
+
# We need to encode text like streams (e.g. TextIOWrapper) to bytes.
|
|
74
|
+
if isinstance(raw, str):
|
|
75
|
+
raw = raw.encode()
|
|
76
|
+
|
|
77
|
+
self.compressor.write(raw)
|
|
78
|
+
|
|
79
|
+
# Stop compressing if we reached the max allowed size.
|
|
80
|
+
if 0 < size < len(self.buffer):
|
|
81
|
+
self.compressor.flush()
|
|
82
|
+
break
|
|
83
|
+
else:
|
|
84
|
+
self.compressor.close()
|
|
85
|
+
|
|
86
|
+
if size < 0:
|
|
87
|
+
# Return all data from the buffer.
|
|
88
|
+
compressed = self.buffer
|
|
89
|
+
self.buffer = b''
|
|
90
|
+
else:
|
|
91
|
+
# If we already have enough data in our buffer
|
|
92
|
+
# return the desired chunk of bytes
|
|
93
|
+
compressed = self.buffer[:size]
|
|
94
|
+
# then remove them from the buffer.
|
|
95
|
+
self.buffer = self.buffer[size:]
|
|
96
|
+
|
|
97
|
+
return compressed
|
|
98
|
+
|
|
99
|
+
def flush(self) -> None:
|
|
100
|
+
"""Not implemented."""
|
|
101
|
+
# Since this "pipe" sits between 2 other stream (source/read -> target/write)
|
|
102
|
+
# it wouldn't be worth to implemet flushing.
|
|
103
|
+
pass
|
|
104
|
+
|
|
105
|
+
def write(self, compressed: bytes) -> None:
|
|
106
|
+
"""Append the compressed data to the buffer
|
|
107
|
+
|
|
108
|
+
This happens when the target stream calls the `read` method and
|
|
109
|
+
that triggers the gzip "compressor".
|
|
110
|
+
"""
|
|
111
|
+
self.buffer += compressed
|
|
112
|
+
|
|
113
|
+
def close(self) -> None:
|
|
114
|
+
"""Closes the underlying file-like object."""
|
|
115
|
+
self.uncompressed.close()
|
|
44
116
|
|
|
45
117
|
|
|
46
118
|
def has_bad_first_or_last_char(val: str) -> bool:
|
|
@@ -52,8 +124,7 @@ def has_bad_first_or_last_char(val: str) -> bool:
|
|
|
52
124
|
Returns:
|
|
53
125
|
Whether or not the string starts or ends with bad characters.
|
|
54
126
|
"""
|
|
55
|
-
return val is not None and (val.startswith('{') or val.startswith('"')
|
|
56
|
-
or val.endswith('}') or val.endswith('"'))
|
|
127
|
+
return val is not None and (val.startswith('{') or val.startswith('"') or val.endswith('}') or val.endswith('"'))
|
|
57
128
|
|
|
58
129
|
|
|
59
130
|
def remove_null_values(dictionary: dict) -> dict:
|
|
@@ -146,8 +217,9 @@ def string_to_datetime_list(string_list: List[str]) -> List[datetime.datetime]:
|
|
|
146
217
|
the de-serialized list of strings as a list of datetime objects.
|
|
147
218
|
"""
|
|
148
219
|
if not isinstance(string_list, list):
|
|
149
|
-
raise ValueError(
|
|
150
|
-
+ ". Argument string_list must be of type List[str]"
|
|
220
|
+
raise ValueError(
|
|
221
|
+
"Invalid argument type: " + str(type(string_list)) + ". Argument string_list must be of type List[str]"
|
|
222
|
+
)
|
|
151
223
|
datetime_list = []
|
|
152
224
|
for string_val in string_list:
|
|
153
225
|
datetime_list.append(string_to_datetime(string_val))
|
|
@@ -164,8 +236,11 @@ def datetime_to_string_list(datetime_list: List[datetime.datetime]) -> List[str]
|
|
|
164
236
|
list of datetimes serialized as strings in iso8601 format.
|
|
165
237
|
"""
|
|
166
238
|
if not isinstance(datetime_list, list):
|
|
167
|
-
raise ValueError(
|
|
168
|
-
|
|
239
|
+
raise ValueError(
|
|
240
|
+
"Invalid argument type: "
|
|
241
|
+
+ str(type(datetime_list))
|
|
242
|
+
+ ". Argument datetime_list must be of type List[datetime.datetime]"
|
|
243
|
+
)
|
|
169
244
|
string_list = []
|
|
170
245
|
for datetime_val in datetime_list:
|
|
171
246
|
string_list.append(datetime_to_string(datetime_val))
|
|
@@ -271,6 +346,7 @@ def read_external_sources(service_name: str) -> dict:
|
|
|
271
346
|
Returns:
|
|
272
347
|
A dictionary containing relevant configuration for the service if found.
|
|
273
348
|
"""
|
|
349
|
+
logger.debug('Retrieving config properties for service \'%s\'', service_name)
|
|
274
350
|
config = {}
|
|
275
351
|
|
|
276
352
|
config = __read_from_credential_file(service_name)
|
|
@@ -280,7 +356,7 @@ def read_external_sources(service_name: str) -> dict:
|
|
|
280
356
|
|
|
281
357
|
if not config:
|
|
282
358
|
config = __read_from_vcap_services(service_name)
|
|
283
|
-
|
|
359
|
+
logger.debug('Retrieved %d properties', len(config))
|
|
284
360
|
return config
|
|
285
361
|
|
|
286
362
|
|
|
@@ -299,9 +375,7 @@ def __read_from_env_variables(service_name: str) -> dict:
|
|
|
299
375
|
return config
|
|
300
376
|
|
|
301
377
|
|
|
302
|
-
def __read_from_credential_file(service_name: str,
|
|
303
|
-
*,
|
|
304
|
-
separator: str = '=') -> dict:
|
|
378
|
+
def __read_from_credential_file(service_name: str, *, separator: str = '=') -> dict:
|
|
305
379
|
"""Return a config object based on credentials file for a service.
|
|
306
380
|
|
|
307
381
|
Args:
|
|
@@ -339,8 +413,7 @@ def __read_from_credential_file(service_name: str,
|
|
|
339
413
|
if len(key_val) == 2:
|
|
340
414
|
key = key_val[0]
|
|
341
415
|
value = key_val[1]
|
|
342
|
-
_parse_key_and_update_config(config, service_name, key,
|
|
343
|
-
value)
|
|
416
|
+
_parse_key_and_update_config(config, service_name, key, value)
|
|
344
417
|
except OSError:
|
|
345
418
|
# just absorb the exception and make sure we return an empty response
|
|
346
419
|
config = {}
|
|
@@ -348,11 +421,10 @@ def __read_from_credential_file(service_name: str,
|
|
|
348
421
|
return config
|
|
349
422
|
|
|
350
423
|
|
|
351
|
-
def _parse_key_and_update_config(config: dict, service_name: str, key: str,
|
|
352
|
-
value: str) -> None:
|
|
424
|
+
def _parse_key_and_update_config(config: dict, service_name: str, key: str, value: str) -> None:
|
|
353
425
|
service_name = service_name.replace(' ', '_').replace('-', '_').upper()
|
|
354
426
|
if key.startswith(service_name):
|
|
355
|
-
config[key[len(service_name) + 1:]] = value
|
|
427
|
+
config[key[len(service_name) + 1 :]] = value
|
|
356
428
|
|
|
357
429
|
|
|
358
430
|
def __read_from_vcap_services(service_name: str) -> dict:
|
|
@@ -370,39 +442,46 @@ def __read_from_vcap_services(service_name: str) -> dict:
|
|
|
370
442
|
services = json_import.loads(vcap_services)
|
|
371
443
|
for key in services.keys():
|
|
372
444
|
for i in range(len(services[key])):
|
|
373
|
-
if vcap_service_credentials and isinstance(
|
|
374
|
-
vcap_service_credentials, dict):
|
|
445
|
+
if vcap_service_credentials and isinstance(vcap_service_credentials, dict):
|
|
375
446
|
break
|
|
376
447
|
if services[key][i].get('name') == service_name:
|
|
377
|
-
vcap_service_credentials = services[key][i].get(
|
|
378
|
-
'credentials', {})
|
|
448
|
+
vcap_service_credentials = services[key][i].get('credentials', {})
|
|
379
449
|
if not vcap_service_credentials:
|
|
380
450
|
if service_name in services.keys():
|
|
381
451
|
service = services.get(service_name)
|
|
382
452
|
if service:
|
|
383
|
-
vcap_service_credentials = service[0].get(
|
|
384
|
-
'credentials', {})
|
|
453
|
+
vcap_service_credentials = service[0].get('credentials', {})
|
|
385
454
|
|
|
386
|
-
if vcap_service_credentials and isinstance(vcap_service_credentials,
|
|
387
|
-
dict):
|
|
455
|
+
if vcap_service_credentials and isinstance(vcap_service_credentials, dict):
|
|
388
456
|
new_vcap_creds = {}
|
|
389
457
|
# cf
|
|
390
|
-
if vcap_service_credentials.get(
|
|
391
|
-
'username') and vcap_service_credentials.get('password'):
|
|
458
|
+
if vcap_service_credentials.get('username') and vcap_service_credentials.get('password'):
|
|
392
459
|
new_vcap_creds['AUTH_TYPE'] = 'basic'
|
|
393
|
-
new_vcap_creds['USERNAME'] = vcap_service_credentials.get(
|
|
394
|
-
|
|
395
|
-
new_vcap_creds['PASSWORD'] = vcap_service_credentials.get(
|
|
396
|
-
'password')
|
|
460
|
+
new_vcap_creds['USERNAME'] = vcap_service_credentials.get('username')
|
|
461
|
+
new_vcap_creds['PASSWORD'] = vcap_service_credentials.get('password')
|
|
397
462
|
vcap_service_credentials = new_vcap_creds
|
|
398
463
|
elif vcap_service_credentials.get('iam_apikey'):
|
|
399
464
|
new_vcap_creds['AUTH_TYPE'] = 'iam'
|
|
400
|
-
new_vcap_creds['APIKEY'] = vcap_service_credentials.get(
|
|
401
|
-
'iam_apikey')
|
|
465
|
+
new_vcap_creds['APIKEY'] = vcap_service_credentials.get('iam_apikey')
|
|
402
466
|
vcap_service_credentials = new_vcap_creds
|
|
403
467
|
elif vcap_service_credentials.get('apikey'):
|
|
404
468
|
new_vcap_creds['AUTH_TYPE'] = 'iam'
|
|
405
|
-
new_vcap_creds['APIKEY'] = vcap_service_credentials.get(
|
|
406
|
-
'apikey')
|
|
469
|
+
new_vcap_creds['APIKEY'] = vcap_service_credentials.get('apikey')
|
|
407
470
|
vcap_service_credentials = new_vcap_creds
|
|
408
471
|
return vcap_service_credentials
|
|
472
|
+
|
|
473
|
+
|
|
474
|
+
# A regex that matches an "application/json" mimetype.
|
|
475
|
+
json_mimetype_pattern = re.compile('^application/json(\\s*;.*)?$')
|
|
476
|
+
|
|
477
|
+
|
|
478
|
+
def is_json_mimetype(mimetype: str) -> bool:
|
|
479
|
+
"""Returns true if 'mimetype' is a JSON-like mimetype, false otherwise.
|
|
480
|
+
|
|
481
|
+
Args:
|
|
482
|
+
mimetype: The mimetype to check.
|
|
483
|
+
|
|
484
|
+
Returns:
|
|
485
|
+
true if mimetype is a JSON-line mimetype, false otherwise.
|
|
486
|
+
"""
|
|
487
|
+
return mimetype is not None and json_mimetype_pattern.match(mimetype) is not None
|
ibm_cloud_sdk_core/version.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = '3.
|
|
1
|
+
__version__ = '3.21.0'
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: ibm-cloud-sdk-core
|
|
3
|
+
Version: 3.21.0
|
|
4
|
+
Summary: Core library used by SDKs for IBM Cloud Services
|
|
5
|
+
Author-email: IBM <devxsdk@us.ibm.com>
|
|
6
|
+
Project-URL: Repository, https://github.com/IBM/python-sdk-core
|
|
7
|
+
Project-URL: Documentation, https://github.com/IBM/python-sdk-core/blob/main/README.md
|
|
8
|
+
Project-URL: Issues, https://github.com/IBM/python-sdk-core/issues
|
|
9
|
+
Project-URL: Changelog, https://github.com/IBM/python-sdk-core/blob/main/CHANGELOG.md
|
|
10
|
+
Project-URL: Contributing, https://github.com/IBM/python-sdk-core/blob/main/CONTRIBUTING.md
|
|
11
|
+
Project-URL: License, https://github.com/IBM/python-sdk-core/blob/main/LICENSE
|
|
12
|
+
Keywords: ibm,cloud,ibm cloud services
|
|
13
|
+
Classifier: Programming Language :: Python
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
21
|
+
Classifier: Environment :: Console
|
|
22
|
+
Classifier: Intended Audience :: Developers
|
|
23
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
24
|
+
Classifier: Operating System :: OS Independent
|
|
25
|
+
Classifier: Topic :: Software Development :: Libraries
|
|
26
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
27
|
+
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
|
|
28
|
+
Requires-Python: >=3.8
|
|
29
|
+
Description-Content-Type: text/markdown
|
|
30
|
+
License-File: LICENSE
|
|
31
|
+
Requires-Dist: requests <3.0.0,>=2.31.0
|
|
32
|
+
Requires-Dist: urllib3 <3.0.0,>=2.1.0
|
|
33
|
+
Requires-Dist: python-dateutil <3.0.0,>=2.8.2
|
|
34
|
+
Requires-Dist: PyJWT <3.0.0,>=2.8.0
|
|
35
|
+
Provides-Extra: dev
|
|
36
|
+
Requires-Dist: coverage <8.0.0,>=7.3.2 ; extra == 'dev'
|
|
37
|
+
Requires-Dist: pylint <4.0.0,>=3.0.0 ; extra == 'dev'
|
|
38
|
+
Requires-Dist: pytest <8.0.0,>=7.4.2 ; extra == 'dev'
|
|
39
|
+
Requires-Dist: pytest-cov <5.0.0,>=4.1.0 ; extra == 'dev'
|
|
40
|
+
Requires-Dist: responses <1.0.0,>=0.23.3 ; extra == 'dev'
|
|
41
|
+
Requires-Dist: black <25.0.0,>=24.0.0 ; extra == 'dev'
|
|
42
|
+
Provides-Extra: publish
|
|
43
|
+
Requires-Dist: build ; extra == 'publish'
|
|
44
|
+
Requires-Dist: twine ; extra == 'publish'
|
|
45
|
+
|
|
46
|
+
[](https://app.travis-ci.com/IBM/python-sdk-core)
|
|
47
|
+
[](https://pypi.org/project/ibm-cloud-sdk-core/)
|
|
48
|
+
[](https://pypi.python.org/pypi/ibm-cloud-sdk-core)
|
|
49
|
+
[](https://cla-assistant.io/ibm/python-sdk-core)
|
|
50
|
+
[](https://github.com/semantic-release/semantic-release)
|
|
51
|
+
|
|
52
|
+
# IBM Python SDK Core Version 3.21.0
|
|
53
|
+
This project contains core functionality required by Python code generated by the IBM Cloud OpenAPI SDK Generator
|
|
54
|
+
(openapi-sdkgen).
|
|
55
|
+
|
|
56
|
+
# Python Version
|
|
57
|
+
The current minimum Python version supported is 3.8.
|
|
58
|
+
|
|
59
|
+
## Installation
|
|
60
|
+
|
|
61
|
+
To install, use `pip`:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
python -m pip install --upgrade ibm-cloud-sdk-core
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Authentication
|
|
68
|
+
The python-sdk-core project supports the following types of authentication:
|
|
69
|
+
- Basic Authentication
|
|
70
|
+
- Bearer Token Authentication
|
|
71
|
+
- Identity and Access Management (IAM) Authentication
|
|
72
|
+
- Container Authentication
|
|
73
|
+
- VPC Instance Authentication
|
|
74
|
+
- Cloud Pak for Data Authentication
|
|
75
|
+
- No Authentication (for testing)
|
|
76
|
+
|
|
77
|
+
For more information about the various authentication types and how to use them with your services, click [here](Authentication.md).
|
|
78
|
+
|
|
79
|
+
## Issues
|
|
80
|
+
|
|
81
|
+
If you encounter an issue with this project, you are welcome to submit a [bug report](https://github.com/IBM/python-sdk-core/issues).
|
|
82
|
+
Before opening a new issue, please search for similar issues. It's possible that someone has already reported it.
|
|
83
|
+
|
|
84
|
+
## Logging
|
|
85
|
+
|
|
86
|
+
This library uses Python's built-in `logging` module to perform logging of error,
|
|
87
|
+
warning, informational and debug messages.
|
|
88
|
+
The components within the SDK Core library use a single logger named `ibm-cloud-sdk-core`.
|
|
89
|
+
|
|
90
|
+
For complete information on the logging facility, please see: [Logging facility for Python](https://docs.python.org/3/library/logging.html).
|
|
91
|
+
|
|
92
|
+
### Enable logging
|
|
93
|
+
|
|
94
|
+
There are various ways to configure and enable the logging facility.
|
|
95
|
+
|
|
96
|
+
The code example below demonstrates a simple way to enable debug logging by invoking
|
|
97
|
+
the `logging.basicConfig()` function.
|
|
98
|
+
|
|
99
|
+
Note that, as a convenience, if you set the logging level to `DEBUG`, then HTTP request/response message logging
|
|
100
|
+
is also enabled.
|
|
101
|
+
|
|
102
|
+
The following code example shows how debug logging can be enabled:
|
|
103
|
+
```python
|
|
104
|
+
import logging
|
|
105
|
+
|
|
106
|
+
# Create a basic logging configuration that:
|
|
107
|
+
# 1. Defines a handler to display messages on the console.
|
|
108
|
+
# 2. Sets the root logger's logging level to DEBUG.
|
|
109
|
+
# 3. Sets the 'format' string used to display messages.
|
|
110
|
+
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s [%(name)s:%(levelname)s] %(message)s', force=True)
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
When running your application, you should see output like this if debug logging is enabled:
|
|
114
|
+
```
|
|
115
|
+
2024-09-16 15:44:45,174 [ibm-cloud-sdk-core:DEBUG] Get authenticator from environment, key=global_search
|
|
116
|
+
2024-09-16 15:44:45,175 [ibm-cloud-sdk-core:DEBUG] Set service URL: https://api.global-search-tagging.cloud.ibm.com
|
|
117
|
+
2024-09-16 15:44:45,175 [ibm-cloud-sdk-core:DEBUG] Set User-Agent: ibm-python-sdk-core-3.21.0 os.name=Linux os.version=6.10.9-100.fc39.x86_64 python.version=3.12.5
|
|
118
|
+
2024-09-16 15:44:45,181 [ibm-cloud-sdk-core:DEBUG] Configuring BaseService instance with service name: global_search
|
|
119
|
+
2024-09-16 15:44:45,181 [ibm-cloud-sdk-core:DEBUG] Performing synchronous token fetch
|
|
120
|
+
2024-09-16 15:44:45,182 [ibm-cloud-sdk-core:DEBUG] Invoking IAM get_token operation: https://iam.cloud.ibm.com/identity/token
|
|
121
|
+
2024-09-16 15:44:45,182 [urllib3.connectionpool:DEBUG] Starting new HTTPS connection (1): iam.cloud.ibm.com:443
|
|
122
|
+
send: b'POST /identity/token HTTP/1.1\r\nHost: iam.cloud.ibm.com\r\nUser-Agent: ibm-python-sdk-core/iam-authenticator-3.21.0 os.name=Linux os.version=6.10.9-100.fc39.x86_64 python.version=3.12.5\r\nAccept-Encoding: gzip, deflate\r\nAccept: application/json\r\nConnection: keep-alive\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: 135\r\n\r\n'
|
|
123
|
+
send: b'grant_type=urn%3Aibm%3Aparams%3Aoauth%3Agrant-type%3Aapikey&apikey=[redacted]&response_type=cloud_iam'
|
|
124
|
+
reply: 'HTTP/1.1 200 OK\r\n'
|
|
125
|
+
header: Content-Type: application/json
|
|
126
|
+
header: Content-Language: en-US
|
|
127
|
+
header: Content-Encoding: gzip
|
|
128
|
+
header: Date: Mon, 16 Sep 2024 20:44:45 GMT
|
|
129
|
+
header: Content-Length: 983
|
|
130
|
+
header: Connection: keep-alive
|
|
131
|
+
2024-09-16 15:44:45,670 [urllib3.connectionpool:DEBUG] https://iam.cloud.ibm.com:443 "POST /identity/token HTTP/11" 200 983
|
|
132
|
+
2024-09-16 15:44:45,672 [ibm-cloud-sdk-core:DEBUG] Returned from IAM get_token operation
|
|
133
|
+
2024-09-16 15:44:45,673 [ibm-cloud-sdk-core:DEBUG] Authenticated outbound request (type=iam)
|
|
134
|
+
2024-09-16 15:44:45,673 [ibm-cloud-sdk-core:DEBUG] Prepared request [POST https://api.global-search-tagging.cloud.ibm.com/v3/resources/search]
|
|
135
|
+
2024-09-16 15:44:45,673 [ibm-cloud-sdk-core:DEBUG] Sending HTTP request message
|
|
136
|
+
2024-09-16 15:44:45,674 [urllib3.connectionpool:DEBUG] Starting new HTTPS connection (1): api.global-search-tagging.cloud.ibm.com:443
|
|
137
|
+
send: b'POST /v3/resources/search?limit=1 HTTP/1.1\r\nHost: api.global-search-tagging.cloud.ibm.com\r\nUser-Agent: platform-services-python-sdk/0.57.0 (lang=python; os.name=Linux; os.version=6.10.9-100.fc39.x86_64; python.version=3.12.5)\r\nAccept-Encoding: gzip, deflate\r\nAccept: application/json\r\nConnection: keep-alive\r\ncontent-type: application/json\r\nAuthorization: [redacted]\r\nContent-Length: 39\r\n\r\n'
|
|
138
|
+
send: b'{"query": "GST-sdk-*", "fields": ["*"]}'
|
|
139
|
+
reply: 'HTTP/1.1 200 OK\r\n'
|
|
140
|
+
header: Content-Type: application/json
|
|
141
|
+
header: Content-Length: 22
|
|
142
|
+
header: Date: Mon, 16 Sep 2024 20:44:46 GMT
|
|
143
|
+
header: Connection: keep-alive
|
|
144
|
+
2024-09-16 15:44:46,079 [urllib3.connectionpool:DEBUG] https://api.global-search-tagging.cloud.ibm.com:443 "POST /v3/resources/search?limit=1 HTTP/11" 200 22
|
|
145
|
+
2024-09-16 15:44:46,080 [ibm-cloud-sdk-core:DEBUG] Received HTTP response message, status code 200
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
## Open source @ IBM
|
|
149
|
+
|
|
150
|
+
Find more open source projects on the [IBM Github Page](http://github.com/IBM)
|
|
151
|
+
|
|
152
|
+
## License
|
|
153
|
+
|
|
154
|
+
This library is licensed under Apache 2.0. Full license text is
|
|
155
|
+
available in [LICENSE](LICENSE).
|
|
156
|
+
|
|
157
|
+
## Contributing
|
|
158
|
+
|
|
159
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
ibm_cloud_sdk_core/__init__.py,sha256=Ef7P3r-KmVwoYQV9bP0zvaDSlgJtjaTcDYQXmVvm0Zs,2853
|
|
2
|
+
ibm_cloud_sdk_core/api_exception.py,sha256=YNd7Dg_yiwcHk-AA-suNlivgyrA9A32Do1qtYeKzuWc,3654
|
|
3
|
+
ibm_cloud_sdk_core/base_service.py,sha256=7gpq0w4B8t8NYYJ07WYwZkhwy97oO89bbDyYOH2NMqI,22094
|
|
4
|
+
ibm_cloud_sdk_core/detailed_response.py,sha256=agLMQ-Mh3bU_lLnSnSO1SwjuNBPQj8plO8ew2xXWL6I,3101
|
|
5
|
+
ibm_cloud_sdk_core/get_authenticator.py,sha256=GNUPJBt9YL4n3m2OluIwdekFUOLpHO3YAVszUHbLc-c,4842
|
|
6
|
+
ibm_cloud_sdk_core/http_adapter.py,sha256=nRUvt7hbSC8Vyhqe_oA5k_NKoRMM-S4VCSAZVQ-AHQU,1075
|
|
7
|
+
ibm_cloud_sdk_core/logger.py,sha256=sdDNAA9LlpynadFxTRsCWfqSNBrN6uKMxVsFuo2PnIo,2708
|
|
8
|
+
ibm_cloud_sdk_core/private_helpers.py,sha256=5ei9gNwuN-inNJ2WqMXcXEPfLM1NALOLi4ucLMcYohY,1181
|
|
9
|
+
ibm_cloud_sdk_core/utils.py,sha256=13sHWir3xvp5eJ2JE7FIdAXgQHOKCLlKGk_R-R5W2Ms,15828
|
|
10
|
+
ibm_cloud_sdk_core/version.py,sha256=DtTATt0aAO_SxEzHuw5gF87WyPXFdJ1GM3czmj0ovp4,23
|
|
11
|
+
ibm_cloud_sdk_core/authenticators/__init__.py,sha256=Ze_ArDqMWk1Xr311dXpHTtJUJYN2u8jCphoGTLBow9M,2133
|
|
12
|
+
ibm_cloud_sdk_core/authenticators/authenticator.py,sha256=dyTQDEAhlcN4y-wybTgMycSO5dC2pLntx3KCJTJGHdQ,1979
|
|
13
|
+
ibm_cloud_sdk_core/authenticators/basic_authenticator.py,sha256=-VETJqCwAj77_RNhokAp8rLqN0lkGj3TPF6xU1_lpY8,3366
|
|
14
|
+
ibm_cloud_sdk_core/authenticators/bearer_token_authenticator.py,sha256=McSziK-DUj64TpFyzNps6XR2IjRvyzOR_8C7V1pIfwE,2861
|
|
15
|
+
ibm_cloud_sdk_core/authenticators/container_authenticator.py,sha256=GKYHTflLiKhm9xF5KZAcjYXPN3yE2PztdEr2bOZUwKE,7042
|
|
16
|
+
ibm_cloud_sdk_core/authenticators/cp4d_authenticator.py,sha256=LNW9NYY7upiwxlKm633XokmXacEfxPLBPev1yirpx4w,6922
|
|
17
|
+
ibm_cloud_sdk_core/authenticators/iam_authenticator.py,sha256=ozrFBdVah1y8gcLL68fmReXCFEAltOGLCIuA6PuWLSY,4597
|
|
18
|
+
ibm_cloud_sdk_core/authenticators/iam_request_based_authenticator.py,sha256=0k-rtfaYV3KXxNCEOq8njNDAC4KmUJSbVxOPjbhIxWc,4686
|
|
19
|
+
ibm_cloud_sdk_core/authenticators/mcsp_authenticator.py,sha256=z3fFZf-iW0hsZ9qfJ1y-jKQ3DtNPGf9M9QNgu0gfMoA,5350
|
|
20
|
+
ibm_cloud_sdk_core/authenticators/no_auth_authenticator.py,sha256=dzuU6IJC19SocVHy7Fyln6xrfGvlqnXGeUNR9llspYo,979
|
|
21
|
+
ibm_cloud_sdk_core/authenticators/vpc_instance_authenticator.py,sha256=48Cq9YRRRXmPjhHvnW8-uNgqP8NfNTAG_ajxwg1Mdw0,5414
|
|
22
|
+
ibm_cloud_sdk_core/token_managers/__init__.py,sha256=NEiims6qB8doxq6wtlTBYCIdwf2wRiMTrV0bgfv7WAg,606
|
|
23
|
+
ibm_cloud_sdk_core/token_managers/container_token_manager.py,sha256=79ECLjuwh94JmexB9YSQju0rowPptdZrEGRQyMrMeeo,9523
|
|
24
|
+
ibm_cloud_sdk_core/token_managers/cp4d_token_manager.py,sha256=ETYOpcSPXZtffFgdx4Dq8WYeIXoc0d1iACFabt53Cwk,5163
|
|
25
|
+
ibm_cloud_sdk_core/token_managers/iam_request_based_token_manager.py,sha256=7BxUEm3HCw34uUUeDRY00i4BRxNwwV3YL6w9P7nulhc,8556
|
|
26
|
+
ibm_cloud_sdk_core/token_managers/iam_token_manager.py,sha256=bG94h0Io6XaneLUcSuJzLlKSpFLdKH49TieRNAY7fvA,4358
|
|
27
|
+
ibm_cloud_sdk_core/token_managers/jwt_token_manager.py,sha256=FDBdvirmUcJu5vIb5pdhqoQeFS6j0GBSDsF0HtLjg48,3785
|
|
28
|
+
ibm_cloud_sdk_core/token_managers/mcsp_token_manager.py,sha256=jaVwmqPnWF0ZG3lGOL33Q8wXj2tOQX52VYvle5sE_zM,4244
|
|
29
|
+
ibm_cloud_sdk_core/token_managers/token_manager.py,sha256=7vSaSctmy46o5OVnmvVafBAGKzoNjA7kJEzd-rrcLWM,7993
|
|
30
|
+
ibm_cloud_sdk_core/token_managers/vpc_instance_token_manager.py,sha256=0oYXV-Y2o5L3_70r53CxtJLS6Y2pIkzbi1CW1z-QR4Y,7014
|
|
31
|
+
ibm_cloud_sdk_core-3.21.0.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
32
|
+
ibm_cloud_sdk_core-3.21.0.dist-info/METADATA,sha256=_f1vpF8g_4SPhouDwJbxPW3ErjBsIz13N24jX6Sa3l4,8535
|
|
33
|
+
ibm_cloud_sdk_core-3.21.0.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
|
|
34
|
+
ibm_cloud_sdk_core-3.21.0.dist-info/top_level.txt,sha256=otLtvxe-8ugPRmPqeSnbaOjnAl0qjDRZ1HSkC3aeLpI,19
|
|
35
|
+
ibm_cloud_sdk_core-3.21.0.dist-info/RECORD,,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ibm_cloud_sdk_core
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.1
|
|
2
|
-
Name: ibm-cloud-sdk-core
|
|
3
|
-
Version: 3.16.0
|
|
4
|
-
Summary: Core library used by SDKs for IBM Cloud Services
|
|
5
|
-
Home-page: https://github.com/IBM/python-sdk-core
|
|
6
|
-
Author: IBM
|
|
7
|
-
Author-email: devxsdk@us.ibm.com
|
|
8
|
-
License: Apache 2.0
|
|
9
|
-
Keywords: watson,ibm,cloud,ibm cloud services
|
|
10
|
-
Classifier: Programming Language :: Python
|
|
11
|
-
Classifier: Programming Language :: Python :: 3
|
|
12
|
-
Classifier: Programming Language :: Python :: 3.7
|
|
13
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
14
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
15
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
16
|
-
Classifier: Development Status :: 5 - Production/Stable
|
|
17
|
-
Classifier: Intended Audience :: Developers
|
|
18
|
-
Classifier: License :: OSI Approved :: Apache Software License
|
|
19
|
-
Classifier: Operating System :: OS Independent
|
|
20
|
-
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
21
|
-
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
|
|
22
|
-
Description-Content-Type: text/markdown
|
|
23
|
-
License-File: LICENSE
|
|
24
|
-
Requires-Dist: requests (<3.0.0,>=2.26.0)
|
|
25
|
-
Requires-Dist: urllib3 (<2.0.0,>=1.26.0)
|
|
26
|
-
Requires-Dist: python-dateutil (<3.0.0,>=2.5.3)
|
|
27
|
-
Requires-Dist: PyJWT (<3.0.0,>=2.4.0)
|
|
28
|
-
|
|
29
|
-
[](https://app.travis-ci.com/IBM/python-sdk-core)
|
|
30
|
-
[](https://pypi.org/project/ibm-cloud-sdk-core/)
|
|
31
|
-
[](https://pypi.python.org/pypi/ibm-cloud-sdk-core)
|
|
32
|
-
[](https://cla-assistant.io/ibm/python-sdk-core)
|
|
33
|
-
[](https://github.com/semantic-release/semantic-release)
|
|
34
|
-
|
|
35
|
-
# IBM Python SDK Core Version 3.16.0
|
|
36
|
-
This project contains core functionality required by Python code generated by the IBM Cloud OpenAPI SDK Generator
|
|
37
|
-
(openapi-sdkgen).
|
|
38
|
-
|
|
39
|
-
# Python Version
|
|
40
|
-
The current minimum Python version supported is 3.7.
|
|
41
|
-
|
|
42
|
-
## Installation
|
|
43
|
-
|
|
44
|
-
To install, use `pip` or `easy_install`:
|
|
45
|
-
|
|
46
|
-
```bash
|
|
47
|
-
pip install --upgrade ibm-cloud-sdk-core
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
or
|
|
51
|
-
|
|
52
|
-
```bash
|
|
53
|
-
easy_install --upgrade ibm-cloud-sdk-core
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
## Authentication
|
|
57
|
-
The python-sdk-core project supports the following types of authentication:
|
|
58
|
-
- Basic Authentication
|
|
59
|
-
- Bearer Token
|
|
60
|
-
- Identity and Access Management (IAM)
|
|
61
|
-
- Cloud Pak for Data
|
|
62
|
-
- Container
|
|
63
|
-
- No Authentication
|
|
64
|
-
|
|
65
|
-
For more information about the various authentication types and how to use them with your services, click [here](Authentication.md)
|
|
66
|
-
|
|
67
|
-
## Issues
|
|
68
|
-
|
|
69
|
-
If you encounter an issue with this project, you are welcome to submit a [bug report](https://github.com/IBM/python-sdk-core/issues).
|
|
70
|
-
Before opening a new issue, please search for similar issues. It's possible that someone has already reported it.
|
|
71
|
-
|
|
72
|
-
## Logging
|
|
73
|
-
|
|
74
|
-
### Enable logging
|
|
75
|
-
|
|
76
|
-
```python
|
|
77
|
-
import logging
|
|
78
|
-
logging.basicConfig(level=logging.DEBUG)
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
This would show output of the form:
|
|
82
|
-
```
|
|
83
|
-
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): iam.cloud.ibm.com:443
|
|
84
|
-
DEBUG:urllib3.connectionpool:https://iam.cloud.ibm.com:443 "POST /identity/token HTTP/1.1" 200 1809
|
|
85
|
-
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): gateway.watsonplatform.net:443
|
|
86
|
-
DEBUG:urllib3.connectionpool:https://gateway.watsonplatform.net:443 "POST /assistant/api/v1/workspaces?version=2018-07-10 HTTP/1.1" 201 None
|
|
87
|
-
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): gateway.watsonplatform.net:443
|
|
88
|
-
DEBUG:urllib3.connectionpool:https://gateway.watsonplatform.net:443 "GET /assistant/api/v1/workspaces/883a2a44-eb5f-4b1a-96b0-32a90b475ea8?version=2018-07-10&export=true HTTP/1.1" 200 None
|
|
89
|
-
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): gateway.watsonplatform.net:443
|
|
90
|
-
DEBUG:urllib3.connectionpool:https://gateway.watsonplatform.net:443 "DELETE /assistant/api/v1/workspaces/883a2a44-eb5f-4b1a-96b0-32a90b475ea8?version=2018-07-10 HTTP/1.1" 200 28
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
### Low level request and response dump
|
|
94
|
-
To get low level information of the requests/ responses:
|
|
95
|
-
|
|
96
|
-
```python
|
|
97
|
-
from http.client import HTTPConnection
|
|
98
|
-
HTTPConnection.debuglevel = 1
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
## Open source @ IBM
|
|
102
|
-
|
|
103
|
-
Find more open source projects on the [IBM Github Page](http://github.com/IBM)
|
|
104
|
-
|
|
105
|
-
## License
|
|
106
|
-
|
|
107
|
-
This library is licensed under Apache 2.0. Full license text is
|
|
108
|
-
available in [LICENSE](LICENSE).
|
|
109
|
-
|
|
110
|
-
## Contributing
|
|
111
|
-
|
|
112
|
-
See [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
ibm_cloud_sdk_core/__init__.py,sha256=uVj5a2fM1X6OQ1ivAMf1BNUViJGex8RBOAMF4bhOUeA,2789
|
|
2
|
-
ibm_cloud_sdk_core/api_exception.py,sha256=OvY5-ACudE04O6heN8WwiTpEvNPEMjHx8iifC09IqjI,3180
|
|
3
|
-
ibm_cloud_sdk_core/base_service.py,sha256=XA1rPZczIEwvF41KXQlXFkOMmk3MPv7mYk1U1MdmhQk,20326
|
|
4
|
-
ibm_cloud_sdk_core/detailed_response.py,sha256=JJ0QErbtQn0IWBfqclHhsugktgDQ6m26D6uMIH9jxhw,2739
|
|
5
|
-
ibm_cloud_sdk_core/get_authenticator.py,sha256=jQV2PJGUzPCgVh15t9LG_Towkm7rPwAmIVJhfmoQUUk,4416
|
|
6
|
-
ibm_cloud_sdk_core/utils.py,sha256=NxYaU45OoIbiBmI0NUcHH7bI5PEiVgx_FMTbchTFE1c,13267
|
|
7
|
-
ibm_cloud_sdk_core/version.py,sha256=QvIdF5iFXpxlDqlLo7VlyHafPD55za59ZtMi1jF2kSo,23
|
|
8
|
-
ibm_cloud_sdk_core/authenticators/__init__.py,sha256=HLrbQMlA15-SKSgB2rW0qAjWDjnWNKWcqv2-Aet6iuQ,2083
|
|
9
|
-
ibm_cloud_sdk_core/authenticators/authenticator.py,sha256=WVVojlEPA8WMxWUSvFx7tCamU6fpDx5EwvZ0WYRqAJg,1946
|
|
10
|
-
ibm_cloud_sdk_core/authenticators/basic_authenticator.py,sha256=l-q55Xdv5ULhT_tF3lJgQPaFt_N0psAMolPzcERF-FE,3147
|
|
11
|
-
ibm_cloud_sdk_core/authenticators/bearer_token_authenticator.py,sha256=fHRSCGb8OQa6Rt6UIwO3fWmQMfNCGQDeq7ZBa_CPgIk,2624
|
|
12
|
-
ibm_cloud_sdk_core/authenticators/container_authenticator.py,sha256=jIssE6O0XoghQySqJUAC_Z5E-pM3umvrEHbo0Poh7R0,7040
|
|
13
|
-
ibm_cloud_sdk_core/authenticators/cp4d_authenticator.py,sha256=iUnmkmP8DAjX8LCm-eB6d-S_IPRlzoYonIR7zdj0yn8,6719
|
|
14
|
-
ibm_cloud_sdk_core/authenticators/iam_authenticator.py,sha256=E62Lzl8TJ448RzI8Iz7kz0t2iysuaY9S1T0Q95H3b2A,4580
|
|
15
|
-
ibm_cloud_sdk_core/authenticators/iam_request_based_authenticator.py,sha256=USEid25ZZc4dw8syjN0dXynIlBsOhoxx_u7tDTok9Mc,4568
|
|
16
|
-
ibm_cloud_sdk_core/authenticators/no_auth_authenticator.py,sha256=dzuU6IJC19SocVHy7Fyln6xrfGvlqnXGeUNR9llspYo,979
|
|
17
|
-
ibm_cloud_sdk_core/authenticators/vpc_instance_authenticator.py,sha256=p5jfxR1Vwau7alnJ-mGYOZbqPJmp6mp0c1NviZtSpvs,5291
|
|
18
|
-
ibm_cloud_sdk_core/token_managers/__init__.py,sha256=NEiims6qB8doxq6wtlTBYCIdwf2wRiMTrV0bgfv7WAg,606
|
|
19
|
-
ibm_cloud_sdk_core/token_managers/container_token_manager.py,sha256=fz0FRk-vQQcDehUXwPFgI0eSXWPn41Xtb2dNsQP8uOE,8441
|
|
20
|
-
ibm_cloud_sdk_core/token_managers/cp4d_token_manager.py,sha256=cjC24U8kud_j_DKec1vFZO-eP2qZbsV70VOdd9pvXZ4,4690
|
|
21
|
-
ibm_cloud_sdk_core/token_managers/iam_request_based_token_manager.py,sha256=f8DVYksQWHuJp_OAstaAFO1xvDO2ufMZvq7ikC6zk1E,7516
|
|
22
|
-
ibm_cloud_sdk_core/token_managers/iam_token_manager.py,sha256=RNGLAFW5z-9zarR6g_Ry7FKU4LxxzTESux3cBICZh3s,4230
|
|
23
|
-
ibm_cloud_sdk_core/token_managers/jwt_token_manager.py,sha256=OaqICSRrnJ0C322IqlhkjyT_cOEy3ZmH_DKWVXkHoCU,3984
|
|
24
|
-
ibm_cloud_sdk_core/token_managers/token_manager.py,sha256=_DULCGRmerMEkW4Tgi8HntXs0bu8-mgNQoSKLstpJQc,7660
|
|
25
|
-
ibm_cloud_sdk_core/token_managers/vpc_instance_token_manager.py,sha256=J-wJWh95MXsNjbTnY-VAY5dRJ4W79yJ0e3y4ZhbvHjU,6122
|
|
26
|
-
test/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
27
|
-
test/test_api_exception.py,sha256=zBdMGwXHlM4LBRgipadPPcmKb8TIDnZIsE07iH49tGk,2850
|
|
28
|
-
test/test_authenticator.py,sha256=yL4ZM5aPS5WDcekq28IxPeaxAgc_ujz64XUVwUhVv1o,592
|
|
29
|
-
test/test_base_service.py,sha256=l-7LDCBjBJW4-Vs459NsNpTcumCBMDikqbvphFVRHsQ,34363
|
|
30
|
-
test/test_basic_authenticator.py,sha256=FeGXWiY8xj8i6J2X5Q--qb6B-SAOvQzjg5eExpYVzPE,1605
|
|
31
|
-
test/test_bearer_authenticator.py,sha256=KFssfBZM109_1jWlYzPlZr3oo3vVYUkLVfIWfZZI9Us,1069
|
|
32
|
-
test/test_container_authenticator.py,sha256=a2iZO5qc0oMl7i6Y0KJiE-IYnTuAuRFe_r-ht1d4XVc,4422
|
|
33
|
-
test/test_container_token_manager.py,sha256=oZqmlVYF1HtkzOp0Ti1qS9CeGAoADhwqoO-FZW3D8rM,10644
|
|
34
|
-
test/test_cp4d_authenticator.py,sha256=GJVYRVwkPsyfWku8btjnrQCH-D3JHX8PBMA_3DdwYrM,6844
|
|
35
|
-
test/test_cp4d_token_manager.py,sha256=AJAB3fiu-3D1N3e28T7eYVCLd5G6xwx6ts8nc_gw7Hk,1735
|
|
36
|
-
test/test_detailed_response.py,sha256=iJWPzl-ZjghHc08O3BK3-bgLHfq8B8drotvxY68B0tw,2329
|
|
37
|
-
test/test_iam_authenticator.py,sha256=BbrnZAM2B9FZFxsfddsqQ8dJKuiMbEkrs6svdCdGCx4,5729
|
|
38
|
-
test/test_iam_token_manager.py,sha256=b6xsOaJCYDQ8FYqqqyTB4tWI4lSGsQ6Jqz5iuWCEjHE,12569
|
|
39
|
-
test/test_jwt_token_manager.py,sha256=b692b6Nnw_w0kBy7mslwVdhcImXg2uhSf9e7iaXfBkg,3820
|
|
40
|
-
test/test_no_auth_authenticator.py,sha256=LVytWa77ilm7Yhcc9qtG0WhsvYJpAUgPulbnwpvsLJc,448
|
|
41
|
-
test/test_token_manager.py,sha256=33OqwucCce9uoQWRHIjWFVH4EdBYmp1Y9gPJ2gueGvI,3031
|
|
42
|
-
test/test_utils.py,sha256=-6_D6N14ljUNUs-HzTTy5DgjGIaYirgwK8OZI-acnl8,28577
|
|
43
|
-
test/test_vpc_instance_authenticator.py,sha256=bdxWF6FTKR-GxJKo0vV8MhdBYAbsmD9OxHD0iooXTfo,2629
|
|
44
|
-
test/test_vpc_instance_token_manager.py,sha256=zhoL0MFcm3xFs-rbYiBLbOAfH8N_ZNj_t1o74oNaD8A,10103
|
|
45
|
-
test_integration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
46
|
-
test_integration/test_cp4d_authenticator_integration.py,sha256=1CDn5Hi5_mYTzPOGH0AN5thyN4PfbG6pR3XRgs2gsZA,1650
|
|
47
|
-
ibm_cloud_sdk_core-3.16.0.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
48
|
-
ibm_cloud_sdk_core-3.16.0.dist-info/METADATA,sha256=z9H_fTF0lvP2h7hw3UM1P39cet0dbR_WQXn7y_XhIds,4460
|
|
49
|
-
ibm_cloud_sdk_core-3.16.0.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
|
|
50
|
-
ibm_cloud_sdk_core-3.16.0.dist-info/top_level.txt,sha256=16lTiCOoJ5PUYTGw9ROgE93YWrwqgR1sRU6fJcU7h0U,41
|
|
51
|
-
ibm_cloud_sdk_core-3.16.0.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
52
|
-
ibm_cloud_sdk_core-3.16.0.dist-info/RECORD,,
|