mpt-extension-sdk 4.5.0__py3-none-any.whl → 4.6.1__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.
@@ -21,6 +21,13 @@ class MPTClient(Session):
21
21
  pool_maxsize=36,
22
22
  ),
23
23
  )
24
+ self.mount(
25
+ "https://",
26
+ HTTPAdapter(
27
+ max_retries=retries,
28
+ pool_maxsize=36,
29
+ ),
30
+ )
24
31
  self.headers.update(
25
32
  {
26
33
  "User-Agent": USER_AGENT,
@@ -34,9 +34,9 @@ def _paginated(mpt_client, url, limit=10):
34
34
 
35
35
  @wrap_mpt_http_error
36
36
  def get_agreement(mpt_client, agreement_id):
37
- response = mpt_client.get(
38
- f"/commerce/agreements/{agreement_id}?select=seller,buyer,listing,product,subscriptions"
39
- )
37
+ """Retrieve an agreement by ID."""
38
+ query = "select=seller,buyer,listing,product,subscriptions,assets,lines,parameters"
39
+ response = mpt_client.get(f"/commerce/agreements/{agreement_id}?{query}")
40
40
  response.raise_for_status()
41
41
  return response.json()
42
42
 
@@ -240,6 +240,18 @@ def get_template_by_name(mpt_client, product_id, template_name):
240
240
  return templates["data"][0]
241
241
 
242
242
 
243
+ @wrap_mpt_http_error
244
+ def get_asset_template_by_name(mpt_client, product_id, template_name):
245
+ """Retrieve an asset template by name."""
246
+ rql_filter = f"and(eq(type,Asset),eq(name,{template_name}))"
247
+ url = f"/catalog/products/{product_id}/templates?{rql_filter}&limit=1"
248
+ response = mpt_client.get(url)
249
+ response.raise_for_status()
250
+
251
+ templates = response.json()
252
+ return templates["data"][0] if templates["data"] else None
253
+
254
+
243
255
  @wrap_mpt_http_error
244
256
  def update_agreement(mpt_client, agreement_id, **kwargs):
245
257
  response = mpt_client.put(
@@ -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
  pass
9
10
 
10
11
 
12
+ class MPTMaxRetryError(MPTError):
13
+ pass
14
+
15
+
11
16
  class MPTHttpError(MPTError):
12
17
  def __init__(self, status_code: int, content: str):
13
18
  self.status_code = status_code
@@ -46,6 +51,8 @@ def wrap_mpt_http_error(func):
46
51
  raise MPTAPIError(e.response.status_code, e.response.json())
47
52
  except JSONDecodeError:
48
53
  raise MPTHttpError(e.response.status_code, e.response.content.decode())
54
+ except RetryError as e:
55
+ raise MPTMaxRetryError(str(e))
49
56
 
50
57
  return _wrapper
51
58
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mpt-extension-sdk
3
- Version: 4.5.0
3
+ Version: 4.6.1
4
4
  Summary: Extensions SDK for SoftwareONE Marketplace Platform
5
5
  License: Apache-2.0
6
6
  License-File: LICENSE
@@ -15,10 +15,10 @@ mpt_extension_sdk/flows/pipeline.py,sha256=3BO5X3jvuYnRTWrXRzImjVCVOCut8dSvkT2LZ
15
15
  mpt_extension_sdk/key_vault/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
16
  mpt_extension_sdk/key_vault/base.py,sha256=RVG_Wiq-MrPyngJ4gfUd8oxoh1LUop1SvtCM2xdlx8M,3361
17
17
  mpt_extension_sdk/mpt_http/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
- mpt_extension_sdk/mpt_http/base.py,sha256=3qgo9BW-uTRAbex26urMvLZU0fwnYnBprDRIJCHvTOk,1284
19
- mpt_extension_sdk/mpt_http/mpt.py,sha256=4o1nVuQF_KfHD9svmb0B9yPjyVC-L_Jg8et8qL5AXpE,16040
18
+ mpt_extension_sdk/mpt_http/base.py,sha256=8-yZZMBXAPcTqODUlcMQ3JroeRxLbjl5irLco9w3pHs,1448
19
+ mpt_extension_sdk/mpt_http/mpt.py,sha256=Q7x-xHwnXJTrg9AvaJf1z1iZZNrgjayHrclLBh9Jnfo,16554
20
20
  mpt_extension_sdk/mpt_http/utils.py,sha256=3wJTT84CXYGjZw6FksNDX8tIHijkL3Wcmld9r6Iz0xc,95
21
- mpt_extension_sdk/mpt_http/wrap_http_error.py,sha256=j8K6Ddx7NiM-FPRMQi25vuULAW8LXxzZ4EwuIJufxis,1801
21
+ mpt_extension_sdk/mpt_http/wrap_http_error.py,sha256=_f366ZFEJ59hyWYVj_RjkVv-fe5sM0XvJBAy6iQCvqc,1964
22
22
  mpt_extension_sdk/runtime/__init__.py,sha256=PQSAz9qvXHbxrn4KvuXSHB8y-A4Jpgbm6ZV-wPiNPyw,194
23
23
  mpt_extension_sdk/runtime/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
24
24
  mpt_extension_sdk/runtime/commands/django.py,sha256=j0UC9WKhaTi-sxwV4F-ZF3SE-657-Ucu_jEG0mIzJU4,1229
@@ -46,8 +46,8 @@ mpt_extension_sdk/runtime/workers.py,sha256=8KdI6neBEiMcc0zha8toCsZutvK2BhEXxb8N
46
46
  mpt_extension_sdk/swo_rql/__init__.py,sha256=QrvRDYhpK-Pd3OF-U2aMeazuKm_kbvXwLRIjd9Mm6ok,104
47
47
  mpt_extension_sdk/swo_rql/constants.py,sha256=39BZ78OzdU_dIQtoy-Z_5utXqEXRweIFvM9Zfxg9j5M,171
48
48
  mpt_extension_sdk/swo_rql/query_builder.py,sha256=XAoMYV1jaAouYjpqrh8nMaDNzD0as-BhMx8rsvdeZ0k,10500
49
- mpt_extension_sdk-4.5.0.dist-info/METADATA,sha256=rpA1rtC1fk0Y6Y6MxLBKEUpb9FBIq4zxLzkZ1lyFzxw,1708
50
- mpt_extension_sdk-4.5.0.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
51
- mpt_extension_sdk-4.5.0.dist-info/entry_points.txt,sha256=8uZQihFseK4Kp5XWHl9EDYneg-CLS8BFO-ygp0h34nc,143
52
- mpt_extension_sdk-4.5.0.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
53
- mpt_extension_sdk-4.5.0.dist-info/RECORD,,
49
+ mpt_extension_sdk-4.6.1.dist-info/METADATA,sha256=IuAvY9iKVgxuuPV17qBuTiq8AQgnPVl5Wwtce5ewYKY,1708
50
+ mpt_extension_sdk-4.6.1.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
51
+ mpt_extension_sdk-4.6.1.dist-info/entry_points.txt,sha256=8uZQihFseK4Kp5XWHl9EDYneg-CLS8BFO-ygp0h34nc,143
52
+ mpt_extension_sdk-4.6.1.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
53
+ mpt_extension_sdk-4.6.1.dist-info/RECORD,,