We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent 1973e6e commit bb80c91Copy full SHA for bb80c91
.env.example
@@ -0,0 +1,9 @@
1
+MPT_API_BASE_URL=https://api.example.com/
2
+
3
+MPT_API_TOKEN=idt:TKN-4138-9324:...
4
+MPT_API_TOKEN_CLIENT=idt:TKN...
5
+MPT_API_TOKEN_OPERATIONS=idt:TKN-4138-9324:...
6
+MPT_API_TOKEN_VENDOR=idt:TKN-8857-1729:...
7
+RP_API_KEY="pytest_Ox...
8
+RP_ENDPOINT="https://reportportal.example.com"
9
+RP_LAUNCH="dev-env"
.env.sample
README.md
@@ -1 +1,68 @@
# mpt-api-python-client
+A Python client for interacting with the MPT API.
+## Installation
+Install as a uv dependency:
+```bash
10
+uv add mpt-api-client
11
+cp .env.example .env
12
+```
13
14
+## Usage
15
16
+```python
17
+from mpt_api_client import MPTClient
18
19
+#client = MPTClient(api_key=os.getenv("MPT_API_KEY"), base_url=os.getenv("MPT_API_URL"))
20
+client = MPTClient() # Will get the api_key and base_url from the environment variables
21
22
+for product in client.catalog.products.iterate():
23
+ print(product.name)
24
25
26
+## Async Usage
27
28
29
+import asyncio
30
+from mpt_api_client import AsyncMPTClient
31
32
+async def main():
33
+ # client = AsyncMPTClient(api_key=os.getenv("MPT_API_KEY"), base_url=os.getenv("MPT_API_URL"))
34
+ client = AsyncMPTClient() # Will get the api_key and base_url from the environment variables
35
+ async for product in client.catalog.products.iterate():
36
37
38
+asyncio.run(main())
39
40
41
+## Development
42
43
+Clone the repository and install dependencies:
44
45
46
+git clone https://github.com/albertsola/mpt-api-python-client.git
47
+cd mpt-api-python-client
48
+uv add -r requirements.txt
49
50
51
+## Testing
52
53
+Run all validations with:
54
55
56
+docker compose run --rm app_test
57
58
59
+Run pytest with:
60
61
62
+pytest tests/unit
63
+pytest tests/e2e
64
+pytest tests/seed
65
66
+## License
67
68
+MIT
mpt_api_client/resources/catalog/products.py
@@ -113,7 +113,7 @@ def documents(self, product_id: str) -> DocumentService:
113
http_client=self.http_client, endpoint_params={"product_id": product_id}
114
)
115
116
- def product_parameters(self, product_id: str) -> ParametersService:
+ def parameters(self, product_id: str) -> ParametersService: # noqa: WPS110
117
"""Return product_parameters service."""
118
return ParametersService(
119
@@ -191,7 +191,7 @@ def documents(self, product_id: str) -> AsyncDocumentService:
191
192
193
194
- def product_parameters(self, product_id: str) -> AsyncParametersService:
+ def parameters(self, product_id: str) -> AsyncParametersService: # noqa: WPS110
195
196
return AsyncParametersService(
197
seed/catalog/product_parameters.py
@@ -27,9 +27,7 @@ async def get_parameter(
except ValueError:
logger.debug("Loading parameter: %s", parameter_id)
product_id = context.get_string("catalog.product.id")
- parameter = await mpt_vendor.catalog.products.product_parameters(product_id).get(
- parameter_id
- )
+ parameter = await mpt_vendor.catalog.products.parameters(product_id).get(parameter_id)
context.set_resource(namespace, parameter)
return parameter
@@ -72,9 +70,7 @@ async def create_parameter(
72
70
if not product_id:
73
71
raise ValueError("Product id is required.")
74
parameter_data = build_parameter(context=context)
75
- parameter = await mpt_vendor.catalog.products.product_parameters(product_id).create(
76
- parameter_data
77
+ parameter = await mpt_vendor.catalog.products.parameters(product_id).create(parameter_data)
78
logger.debug("Parameter created: %s", parameter.id)
79
context[f"{namespace}.id"] = parameter.id
80
tests/seed/catalog/test_product_parameters.py
@@ -39,7 +39,7 @@ async def test_get_parameter(
context["catalog.product.id"] = "product-123"
service = AsyncMock(spec=AsyncParametersService)
service.get.return_value = parameter
- vendor_client.catalog.products.product_parameters.return_value = service
+ vendor_client.catalog.products.parameters.return_value = service
fetched_parameter = await get_parameter(context=context, mpt_vendor=vendor_client)
@@ -67,7 +67,7 @@ async def test_get_or_create_parameter_create_new(
) -> None:
69
parameters_service.create.return_value = parameter
- vendor_client.catalog.products.product_parameters.return_value = parameters_service
+ vendor_client.catalog.products.parameters.return_value = parameters_service
with (
patch("seed.catalog.product_parameters.get_parameter", return_value=None),
@@ -96,7 +96,7 @@ async def test_create_parameter_success(
96
context["catalog.parameter_group.id"] = "group-123"
97
98
service.create.return_value = parameter
99
100
101
created = await create_parameter(context=context, mpt_vendor=vendor_client)
102
tests/unit/resources/catalog/test_products.py
@@ -66,7 +66,7 @@ def test_async_mixins_present(async_products_service, method):
("parameter_groups", ParameterGroupsService),
("media", MediaService),
("documents", DocumentService),
- ("product_parameters", ParametersService),
+ ("parameters", ParametersService),
("templates", TemplatesService),
("terms", TermService),
],
@@ -85,7 +85,7 @@ def test_property_services(products_service, service_method, expected_service_cl
85
("parameter_groups", AsyncParameterGroupsService),
86
("media", AsyncMediaService),
87
("documents", AsyncDocumentService),
88
- ("product_parameters", AsyncParametersService),
+ ("parameters", AsyncParametersService),
89
("templates", AsyncTemplatesService),
90
("terms", AsyncTermService),
91
0 commit comments