Skip to content

Commit bb80c91

Browse files
committed
MPT-15151 Rename catalog product parameter service
- Renamed c.catalog.products.product_parameter to c.catalog.products.parameter - Updated README.md - moved .env.sample > .env.example
1 parent 1973e6e commit bb80c91

File tree

7 files changed

+85
-15
lines changed

7 files changed

+85
-15
lines changed

.env.example

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Lines changed: 0 additions & 2 deletions
This file was deleted.

README.md

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,68 @@
11
# mpt-api-python-client
2+
3+
A Python client for interacting with the MPT API.
4+
5+
## Installation
6+
7+
Install as a uv dependency:
8+
9+
```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+
```python
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+
print(product.name)
37+
38+
asyncio.run(main())
39+
```
40+
41+
## Development
42+
43+
Clone the repository and install dependencies:
44+
45+
```bash
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+
```bash
56+
docker compose run --rm app_test
57+
```
58+
59+
Run pytest with:
60+
61+
```bash
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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ def documents(self, product_id: str) -> DocumentService:
113113
http_client=self.http_client, endpoint_params={"product_id": product_id}
114114
)
115115

116-
def product_parameters(self, product_id: str) -> ParametersService:
116+
def parameters(self, product_id: str) -> ParametersService: # noqa: WPS110
117117
"""Return product_parameters service."""
118118
return ParametersService(
119119
http_client=self.http_client, endpoint_params={"product_id": product_id}
@@ -191,7 +191,7 @@ def documents(self, product_id: str) -> AsyncDocumentService:
191191
http_client=self.http_client, endpoint_params={"product_id": product_id}
192192
)
193193

194-
def product_parameters(self, product_id: str) -> AsyncParametersService:
194+
def parameters(self, product_id: str) -> AsyncParametersService: # noqa: WPS110
195195
"""Return product_parameters service."""
196196
return AsyncParametersService(
197197
http_client=self.http_client, endpoint_params={"product_id": product_id}

seed/catalog/product_parameters.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,7 @@ async def get_parameter(
2727
except ValueError:
2828
logger.debug("Loading parameter: %s", parameter_id)
2929
product_id = context.get_string("catalog.product.id")
30-
parameter = await mpt_vendor.catalog.products.product_parameters(product_id).get(
31-
parameter_id
32-
)
30+
parameter = await mpt_vendor.catalog.products.parameters(product_id).get(parameter_id)
3331
context.set_resource(namespace, parameter)
3432
return parameter
3533

@@ -72,9 +70,7 @@ async def create_parameter(
7270
if not product_id:
7371
raise ValueError("Product id is required.")
7472
parameter_data = build_parameter(context=context)
75-
parameter = await mpt_vendor.catalog.products.product_parameters(product_id).create(
76-
parameter_data
77-
)
73+
parameter = await mpt_vendor.catalog.products.parameters(product_id).create(parameter_data)
7874
logger.debug("Parameter created: %s", parameter.id)
7975
context[f"{namespace}.id"] = parameter.id
8076
context.set_resource(namespace, parameter)

tests/seed/catalog/test_product_parameters.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ async def test_get_parameter(
3939
context["catalog.product.id"] = "product-123"
4040
service = AsyncMock(spec=AsyncParametersService)
4141
service.get.return_value = parameter
42-
vendor_client.catalog.products.product_parameters.return_value = service
42+
vendor_client.catalog.products.parameters.return_value = service
4343

4444
fetched_parameter = await get_parameter(context=context, mpt_vendor=vendor_client)
4545

@@ -67,7 +67,7 @@ async def test_get_or_create_parameter_create_new(
6767
) -> None:
6868
context["catalog.product.id"] = "product-123"
6969
parameters_service.create.return_value = parameter
70-
vendor_client.catalog.products.product_parameters.return_value = parameters_service
70+
vendor_client.catalog.products.parameters.return_value = parameters_service
7171

7272
with (
7373
patch("seed.catalog.product_parameters.get_parameter", return_value=None),
@@ -96,7 +96,7 @@ async def test_create_parameter_success(
9696
context["catalog.parameter_group.id"] = "group-123"
9797
service = AsyncMock(spec=AsyncParametersService)
9898
service.create.return_value = parameter
99-
vendor_client.catalog.products.product_parameters.return_value = service
99+
vendor_client.catalog.products.parameters.return_value = service
100100

101101
created = await create_parameter(context=context, mpt_vendor=vendor_client)
102102

tests/unit/resources/catalog/test_products.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ def test_async_mixins_present(async_products_service, method):
6666
("parameter_groups", ParameterGroupsService),
6767
("media", MediaService),
6868
("documents", DocumentService),
69-
("product_parameters", ParametersService),
69+
("parameters", ParametersService),
7070
("templates", TemplatesService),
7171
("terms", TermService),
7272
],
@@ -85,7 +85,7 @@ def test_property_services(products_service, service_method, expected_service_cl
8585
("parameter_groups", AsyncParameterGroupsService),
8686
("media", AsyncMediaService),
8787
("documents", AsyncDocumentService),
88-
("product_parameters", AsyncParametersService),
88+
("parameters", AsyncParametersService),
8989
("templates", AsyncTemplatesService),
9090
("terms", AsyncTermService),
9191
],

0 commit comments

Comments
 (0)