mpt-extension-sdk 5.15__tar.gz → 5.16.0__tar.gz

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 (54) hide show
  1. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/PKG-INFO +1 -1
  2. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/mpt_http/base.py +7 -0
  3. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/mpt_http/mpt.py +12 -0
  4. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/mpt_http/wrap_http_error.py +17 -6
  5. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/pyproject.toml +1 -1
  6. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/.gitignore +0 -0
  7. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/LICENSE +0 -0
  8. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/README.md +0 -0
  9. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/__init__.py +0 -0
  10. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/airtable/__init__.py +0 -0
  11. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/airtable/wrap_http_error.py +0 -0
  12. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/constants.py +0 -0
  13. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/core/__init__.py +0 -0
  14. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/core/events/__init__.py +0 -0
  15. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/core/events/dataclasses.py +0 -0
  16. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/core/events/registry.py +0 -0
  17. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/core/extension.py +0 -0
  18. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/core/security.py +0 -0
  19. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/core/utils.py +0 -0
  20. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/flows/__init__.py +0 -0
  21. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/flows/context.py +0 -0
  22. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/flows/pipeline.py +0 -0
  23. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/key_vault/__init__.py +0 -0
  24. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/key_vault/base.py +0 -0
  25. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/mpt_http/__init__.py +0 -0
  26. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/mpt_http/utils.py +0 -0
  27. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/runtime/__init__.py +0 -0
  28. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/runtime/commands/__init__.py +0 -0
  29. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/runtime/commands/django.py +0 -0
  30. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/runtime/commands/run.py +0 -0
  31. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/runtime/djapp/__init__.py +0 -0
  32. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/runtime/djapp/apps.py +0 -0
  33. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/runtime/djapp/conf/__init__.py +0 -0
  34. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/runtime/djapp/conf/default.py +0 -0
  35. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/runtime/djapp/conf/urls.py +0 -0
  36. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/runtime/djapp/management/__init__.py +0 -0
  37. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/runtime/djapp/management/commands/__init__.py +0 -0
  38. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/runtime/djapp/management/commands/consume_events.py +0 -0
  39. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/runtime/djapp/middleware.py +0 -0
  40. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/runtime/errors.py +0 -0
  41. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/runtime/events/__init__.py +0 -0
  42. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/runtime/events/dispatcher.py +0 -0
  43. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/runtime/events/producers.py +0 -0
  44. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/runtime/events/utils.py +0 -0
  45. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/runtime/initializer.py +0 -0
  46. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/runtime/logging.py +0 -0
  47. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/runtime/master.py +0 -0
  48. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/runtime/swoext.py +0 -0
  49. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/runtime/tracer.py +0 -0
  50. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/runtime/utils.py +0 -0
  51. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/runtime/workers.py +0 -0
  52. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/swo_rql/__init__.py +0 -0
  53. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/swo_rql/constants.py +0 -0
  54. {mpt_extension_sdk-5.15 → mpt_extension_sdk-5.16.0}/mpt_extension_sdk/swo_rql/query_builder.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mpt-extension-sdk
3
- Version: 5.15
3
+ Version: 5.16.0
4
4
  Summary: Extensions SDK for SoftwareONE Marketplace Platform
5
5
  Author: SoftwareOne AG
6
6
  License: Apache-2.0 license
@@ -23,6 +23,13 @@ class MPTClient(Session):
23
23
  pool_maxsize=POOL_MAX_SIZE,
24
24
  ),
25
25
  )
26
+ self.mount(
27
+ "https://",
28
+ HTTPAdapter(
29
+ max_retries=retries,
30
+ pool_maxsize=POOL_MAX_SIZE,
31
+ ),
32
+ )
26
33
  self.headers.update(
27
34
  {
28
35
  "User-Agent": USER_AGENT,
@@ -253,6 +253,18 @@ def get_template_by_name(mpt_client, product_id, template_name):
253
253
  return templates["data"][0] if templates["data"] else None
254
254
 
255
255
 
256
+ @wrap_mpt_http_error
257
+ def get_asset_template_by_name(mpt_client, product_id, template_name):
258
+ """Retrieve an asset template by name."""
259
+ rql_filter = f"and(eq(type,Asset),eq(name,{template_name}))"
260
+ url = f"/catalog/products/{product_id}/templates?{rql_filter}&limit=1"
261
+ response = mpt_client.get(url)
262
+ response.raise_for_status()
263
+
264
+ templates = response.json()
265
+ return templates["data"][0] if templates["data"] else None
266
+
267
+
256
268
  @wrap_mpt_http_error
257
269
  def update_agreement(mpt_client, agreement_id, **kwargs):
258
270
  """Update an agreement."""
@@ -2,12 +2,17 @@ import json
2
2
  from functools import wraps
3
3
 
4
4
  from requests import HTTPError, JSONDecodeError
5
+ from requests.exceptions import RetryError
5
6
 
6
7
 
7
8
  class MPTError(Exception):
8
9
  """Represents a generic MPT error."""
9
10
 
10
11
 
12
+ class MPTMaxRetryError(MPTError):
13
+ """Represents a maximum request retry error."""
14
+
15
+
11
16
  class MPTHttpError(MPTError):
12
17
  """Represents an HTTP error."""
13
18
 
@@ -40,6 +45,15 @@ class MPTAPIError(MPTHttpError):
40
45
  return str(self.payload)
41
46
 
42
47
 
48
+ def transform_http_error(err):
49
+ """Transform an HTTP error to an MPT error."""
50
+ try:
51
+ payload = err.response.json()
52
+ except JSONDecodeError:
53
+ return MPTHttpError(err.response.status_code, err.response.content.decode())
54
+ return MPTAPIError(err.response.status_code, payload)
55
+
56
+
43
57
  def wrap_mpt_http_error(func):
44
58
  """Wrap a function to catch MPT HTTP errors."""
45
59
 
@@ -48,12 +62,9 @@ def wrap_mpt_http_error(func):
48
62
  try:
49
63
  return func(*args, **kwargs)
50
64
  except HTTPError as err:
51
- response = err.response
52
- try:
53
- payload = response.json()
54
- except JSONDecodeError:
55
- raise MPTHttpError(response.status_code, response.content.decode()) from err
56
- raise MPTAPIError(response.status_code, payload) from err
65
+ raise transform_http_error(err) from err
66
+ except RetryError as retry_error:
67
+ raise MPTMaxRetryError(str(retry_error))
57
68
 
58
69
  return _wrapper
59
70
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "mpt-extension-sdk"
3
- version = "5.15"
3
+ version = "5.16.0"
4
4
  description = "Extensions SDK for SoftwareONE Marketplace Platform"
5
5
  authors = [{ name = "SoftwareOne AG" }]
6
6
  requires-python = ">=3.12,<4"