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.
Files changed (58) hide show
  1. ibm_cloud_sdk_core/__init__.py +1 -0
  2. ibm_cloud_sdk_core/api_exception.py +18 -4
  3. ibm_cloud_sdk_core/authenticators/__init__.py +1 -0
  4. ibm_cloud_sdk_core/authenticators/authenticator.py +2 -1
  5. ibm_cloud_sdk_core/authenticators/basic_authenticator.py +12 -7
  6. ibm_cloud_sdk_core/authenticators/bearer_token_authenticator.py +7 -2
  7. ibm_cloud_sdk_core/authenticators/container_authenticator.py +25 -16
  8. ibm_cloud_sdk_core/authenticators/cp4d_authenticator.py +38 -23
  9. ibm_cloud_sdk_core/authenticators/iam_authenticator.py +22 -13
  10. ibm_cloud_sdk_core/authenticators/iam_request_based_authenticator.py +10 -8
  11. ibm_cloud_sdk_core/authenticators/mcsp_authenticator.py +134 -0
  12. ibm_cloud_sdk_core/authenticators/vpc_instance_authenticator.py +12 -11
  13. ibm_cloud_sdk_core/base_service.py +137 -103
  14. ibm_cloud_sdk_core/detailed_response.py +21 -15
  15. ibm_cloud_sdk_core/get_authenticator.py +35 -17
  16. ibm_cloud_sdk_core/http_adapter.py +28 -0
  17. ibm_cloud_sdk_core/logger.py +85 -0
  18. ibm_cloud_sdk_core/private_helpers.py +34 -0
  19. ibm_cloud_sdk_core/token_managers/container_token_manager.py +63 -33
  20. ibm_cloud_sdk_core/token_managers/cp4d_token_manager.py +35 -22
  21. ibm_cloud_sdk_core/token_managers/iam_request_based_token_manager.py +50 -21
  22. ibm_cloud_sdk_core/token_managers/iam_token_manager.py +24 -13
  23. ibm_cloud_sdk_core/token_managers/jwt_token_manager.py +3 -16
  24. ibm_cloud_sdk_core/token_managers/mcsp_token_manager.py +108 -0
  25. ibm_cloud_sdk_core/token_managers/token_manager.py +20 -23
  26. ibm_cloud_sdk_core/token_managers/vpc_instance_token_manager.py +37 -18
  27. ibm_cloud_sdk_core/utils.py +127 -48
  28. ibm_cloud_sdk_core/version.py +1 -1
  29. ibm_cloud_sdk_core-3.21.0.dist-info/METADATA +159 -0
  30. ibm_cloud_sdk_core-3.21.0.dist-info/RECORD +35 -0
  31. {ibm_cloud_sdk_core-3.16.0.dist-info → ibm_cloud_sdk_core-3.21.0.dist-info}/WHEEL +1 -1
  32. ibm_cloud_sdk_core-3.21.0.dist-info/top_level.txt +1 -0
  33. ibm_cloud_sdk_core-3.16.0.dist-info/METADATA +0 -112
  34. ibm_cloud_sdk_core-3.16.0.dist-info/RECORD +0 -52
  35. ibm_cloud_sdk_core-3.16.0.dist-info/top_level.txt +0 -3
  36. ibm_cloud_sdk_core-3.16.0.dist-info/zip-safe +0 -1
  37. test/__init__.py +0 -0
  38. test/test_api_exception.py +0 -73
  39. test/test_authenticator.py +0 -21
  40. test/test_base_service.py +0 -933
  41. test/test_basic_authenticator.py +0 -36
  42. test/test_bearer_authenticator.py +0 -28
  43. test/test_container_authenticator.py +0 -105
  44. test/test_container_token_manager.py +0 -283
  45. test/test_cp4d_authenticator.py +0 -171
  46. test/test_cp4d_token_manager.py +0 -56
  47. test/test_detailed_response.py +0 -57
  48. test/test_iam_authenticator.py +0 -157
  49. test/test_iam_token_manager.py +0 -362
  50. test/test_jwt_token_manager.py +0 -109
  51. test/test_no_auth_authenticator.py +0 -15
  52. test/test_token_manager.py +0 -84
  53. test/test_utils.py +0 -634
  54. test/test_vpc_instance_authenticator.py +0 -66
  55. test/test_vpc_instance_token_manager.py +0 -266
  56. test_integration/__init__.py +0 -0
  57. test_integration/test_cp4d_authenticator_integration.py +0 -45
  58. {ibm_cloud_sdk_core-3.16.0.dist-info → ibm_cloud_sdk_core-3.21.0.dist-info}/LICENSE +0 -0
@@ -1,6 +1,6 @@
1
1
  # coding: utf-8
2
2
 
3
- # Copyright 2019, 2021 IBM All Rights Reserved.
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 ssl
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
- class SSLHTTPAdapter(HTTPAdapter):
32
- """Wraps the original HTTP adapter and adds additional SSL context.
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
- #pylint: disable=arguments-differ
38
- def init_poolmanager(self, connections, maxsize, block):
39
- """Extends the parent's method by adding minimum SSL version to the args.
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
- ssl_context = create_urllib3_context()
42
- ssl_context.minimum_version = ssl.TLSVersion.TLSv1_2
43
- super().init_poolmanager(connections, maxsize, block, ssl_context=ssl_context)
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("Invalid argument type: " + str(type(string_list))
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("Invalid argument type: " + str(type(datetime_list))
168
- + ". Argument datetime_list must be of type List[datetime.datetime]")
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
- 'username')
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
@@ -1 +1 @@
1
- __version__ = '3.16.0'
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
+ [![Build Status](https://app.travis-ci.com/IBM/python-sdk-core.svg?branch=main)](https://app.travis-ci.com/IBM/python-sdk-core)
47
+ [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/ibm-cloud-sdk-core)](https://pypi.org/project/ibm-cloud-sdk-core/)
48
+ [![Latest Stable Version](https://img.shields.io/pypi/v/ibm-cloud-sdk-core.svg)](https://pypi.python.org/pypi/ibm-cloud-sdk-core)
49
+ [![CLA assistant](https://cla-assistant.io/readme/badge/ibm/python-sdk-core)](https://cla-assistant.io/ibm/python-sdk-core)
50
+ [![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](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,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.37.1)
2
+ Generator: setuptools (75.1.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -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
- [![Build Status](https://app.travis-ci.com/IBM/python-sdk-core.svg?branch=main)](https://app.travis-ci.com/IBM/python-sdk-core)
30
- [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/ibm-cloud-sdk-core)](https://pypi.org/project/ibm-cloud-sdk-core/)
31
- [![Latest Stable Version](https://img.shields.io/pypi/v/ibm-cloud-sdk-core.svg)](https://pypi.python.org/pypi/ibm-cloud-sdk-core)
32
- [![CLA assistant](https://cla-assistant.io/readme/badge/ibm/python-sdk-core)](https://cla-assistant.io/ibm/python-sdk-core)
33
- [![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](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,,
@@ -1,3 +0,0 @@
1
- ibm_cloud_sdk_core
2
- test
3
- test_integration