mpt-extension-sdk 5.17.1__tar.gz → 5.17.3__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.
- mpt_extension_sdk-5.17.3/PKG-INFO +94 -0
- mpt_extension_sdk-5.17.3/README.md +65 -0
- {mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/mpt_http/mpt.py +21 -0
- mpt_extension_sdk-5.17.3/mpt_extension_sdk/runtime/djapp/conf/__init__.py +6 -0
- mpt_extension_sdk-5.17.3/mpt_extension_sdk/runtime/events/__init__.py +0 -0
- {mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/runtime/events/producers.py +1 -1
- {mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/runtime/swoext.py +16 -12
- mpt_extension_sdk-5.17.1/mpt_extension_sdk/runtime/__init__.py → mpt_extension_sdk-5.17.3/mpt_extension_sdk/runtime/version.py +2 -2
- mpt_extension_sdk-5.17.3/mpt_extension_sdk/swo_rql/__init__.py +3 -0
- {mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/pyproject.toml +117 -44
- mpt_extension_sdk-5.17.1/PKG-INFO +0 -39
- mpt_extension_sdk-5.17.1/README.md +0 -2
- mpt_extension_sdk-5.17.1/mpt_extension_sdk/swo_rql/__init__.py +0 -5
- {mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/.gitignore +0 -0
- {mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/LICENSE +0 -0
- {mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/__init__.py +0 -0
- {mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/airtable/__init__.py +0 -0
- {mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/airtable/wrap_http_error.py +0 -0
- {mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/constants.py +0 -0
- {mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/core/__init__.py +0 -0
- {mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/core/events/__init__.py +0 -0
- {mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/core/events/dataclasses.py +0 -0
- {mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/core/events/registry.py +0 -0
- {mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/core/extension.py +0 -0
- {mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/core/security.py +0 -0
- {mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/core/utils.py +0 -0
- {mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/flows/__init__.py +0 -0
- {mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/flows/context.py +0 -0
- {mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/flows/pipeline.py +0 -0
- {mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/key_vault/__init__.py +0 -0
- {mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/key_vault/base.py +0 -0
- {mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/mpt_http/__init__.py +0 -0
- {mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/mpt_http/base.py +0 -0
- {mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/mpt_http/utils.py +0 -0
- {mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/mpt_http/wrap_http_error.py +0 -0
- {mpt_extension_sdk-5.17.1/mpt_extension_sdk/runtime/commands → mpt_extension_sdk-5.17.3/mpt_extension_sdk/runtime}/__init__.py +0 -0
- {mpt_extension_sdk-5.17.1/mpt_extension_sdk/runtime/djapp → mpt_extension_sdk-5.17.3/mpt_extension_sdk/runtime/commands}/__init__.py +0 -0
- {mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/runtime/commands/django.py +0 -0
- {mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/runtime/commands/run.py +0 -0
- {mpt_extension_sdk-5.17.1/mpt_extension_sdk/runtime/djapp/management → mpt_extension_sdk-5.17.3/mpt_extension_sdk/runtime/djapp}/__init__.py +0 -0
- {mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/runtime/djapp/apps.py +0 -0
- {mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/runtime/djapp/conf/default.py +0 -0
- /mpt_extension_sdk-5.17.1/mpt_extension_sdk/runtime/djapp/conf/__init__.py → /mpt_extension_sdk-5.17.3/mpt_extension_sdk/runtime/djapp/conf/product_utils.py +0 -0
- {mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/runtime/djapp/conf/urls.py +0 -0
- {mpt_extension_sdk-5.17.1/mpt_extension_sdk/runtime/djapp/management/commands → mpt_extension_sdk-5.17.3/mpt_extension_sdk/runtime/djapp/management}/__init__.py +0 -0
- {mpt_extension_sdk-5.17.1/mpt_extension_sdk/runtime/events → mpt_extension_sdk-5.17.3/mpt_extension_sdk/runtime/djapp/management/commands}/__init__.py +0 -0
- {mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/runtime/djapp/management/commands/consume_events.py +0 -0
- {mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/runtime/djapp/middleware.py +0 -0
- {mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/runtime/errors.py +0 -0
- {mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/runtime/events/dispatcher.py +0 -0
- {mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/runtime/events/utils.py +0 -0
- {mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/runtime/initializer.py +0 -0
- {mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/runtime/logging.py +0 -0
- {mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/runtime/master.py +0 -0
- {mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/runtime/tracer.py +0 -0
- {mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/runtime/utils.py +0 -0
- {mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/runtime/workers.py +0 -0
- {mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/swo_rql/constants.py +0 -0
- {mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/swo_rql/query_builder.py +0 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: mpt-extension-sdk
|
|
3
|
+
Version: 5.17.3
|
|
4
|
+
Summary: Extensions SDK for SoftwareONE Marketplace Platform
|
|
5
|
+
Author: SoftwareOne AG
|
|
6
|
+
License: Apache-2.0 license
|
|
7
|
+
License-File: LICENSE
|
|
8
|
+
Requires-Python: <4,>=3.12
|
|
9
|
+
Requires-Dist: azure-identity==1.25.*
|
|
10
|
+
Requires-Dist: azure-keyvault-secrets==4.10.*
|
|
11
|
+
Requires-Dist: azure-monitor-opentelemetry-exporter==1.0.0b46
|
|
12
|
+
Requires-Dist: click==8.3.*
|
|
13
|
+
Requires-Dist: debugpy==1.8.*
|
|
14
|
+
Requires-Dist: django-ninja==1.1.*
|
|
15
|
+
Requires-Dist: django==4.2.*
|
|
16
|
+
Requires-Dist: gunicorn==23.0.*
|
|
17
|
+
Requires-Dist: opentelemetry-api==1.39.0
|
|
18
|
+
Requires-Dist: opentelemetry-instrumentation-django==0.60.*
|
|
19
|
+
Requires-Dist: opentelemetry-instrumentation-logging==0.60.*
|
|
20
|
+
Requires-Dist: opentelemetry-instrumentation-requests==0.60.*
|
|
21
|
+
Requires-Dist: opentelemetry-sdk==1.39.0
|
|
22
|
+
Requires-Dist: pyfiglet==1.0.*
|
|
23
|
+
Requires-Dist: pyjwt==2.10.*
|
|
24
|
+
Requires-Dist: requests==2.32.*
|
|
25
|
+
Requires-Dist: rich==14.2.*
|
|
26
|
+
Requires-Dist: typing-extensions==4.15.*
|
|
27
|
+
Requires-Dist: watchfiles==1.1.*
|
|
28
|
+
Description-Content-Type: text/markdown
|
|
29
|
+
|
|
30
|
+
[](https://sonarcloud.io/summary/new_code?id=softwareone-platform_mpt-extension-sdk)
|
|
31
|
+
[](https://sonarcloud.io/summary/new_code?id=softwareone-platform_mpt-extension-sdk)
|
|
32
|
+
|
|
33
|
+
[](https://github.com/astral-sh/ruff)
|
|
34
|
+
|
|
35
|
+
# SoftwareONE Extension SDK
|
|
36
|
+
|
|
37
|
+
SDK for SoftwareONE python extensions
|
|
38
|
+
|
|
39
|
+
## Getting started
|
|
40
|
+
|
|
41
|
+
### Prerequisites
|
|
42
|
+
|
|
43
|
+
- Docker and Docker Compose plugin (`docker compose` CLI)
|
|
44
|
+
- `make`
|
|
45
|
+
- Valid `.env` file
|
|
46
|
+
- Adobe credentials and authorizations JSON files in the project root
|
|
47
|
+
- [CodeRabbit CLI](https://www.coderabbit.ai/cli) (optional. Used for running review check locally)
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
### Make targets overview
|
|
51
|
+
|
|
52
|
+
Common development workflows are wrapped in the `makefile`:
|
|
53
|
+
|
|
54
|
+
- `make help` – list available commands
|
|
55
|
+
- `make bash` – start the app container and open a bash shell
|
|
56
|
+
- `make build` – build the application image for development
|
|
57
|
+
- `make build-package` – build the package locally
|
|
58
|
+
- `make check` – run code quality checks (ruff, flake8, lockfile check)
|
|
59
|
+
- `make check-all` – run checks, formatting, and tests
|
|
60
|
+
- `make down` – stop and remove containers
|
|
61
|
+
- `make format` – apply formatting and import fixes
|
|
62
|
+
- `make review` – check the code in the cli by running CodeRabbit
|
|
63
|
+
- `make shell` – open a Django shell inside the running app container
|
|
64
|
+
- `make test` – run the test suite with pytest
|
|
65
|
+
|
|
66
|
+
## Running tests
|
|
67
|
+
|
|
68
|
+
Tests run inside Docker using the dev configuration.
|
|
69
|
+
|
|
70
|
+
Run the full test suite:
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
make test
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Pass additional arguments to pytest using the `args` variable:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
make test args="-k test_bla -vv"
|
|
80
|
+
make test args="tests/test_bla.py"
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Developer utilities
|
|
84
|
+
|
|
85
|
+
Useful helper targets during development:
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
make bash # open a bash shell in the app container
|
|
89
|
+
make build-package # build the package locally
|
|
90
|
+
make check # run ruff, flake8, and lockfile checks
|
|
91
|
+
make check-all # run checks and tests
|
|
92
|
+
make format # auto-format code and imports
|
|
93
|
+
make review # check the code in the cli by running CodeRabbit
|
|
94
|
+
```
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
[](https://sonarcloud.io/summary/new_code?id=softwareone-platform_mpt-extension-sdk)
|
|
2
|
+
[](https://sonarcloud.io/summary/new_code?id=softwareone-platform_mpt-extension-sdk)
|
|
3
|
+
|
|
4
|
+
[](https://github.com/astral-sh/ruff)
|
|
5
|
+
|
|
6
|
+
# SoftwareONE Extension SDK
|
|
7
|
+
|
|
8
|
+
SDK for SoftwareONE python extensions
|
|
9
|
+
|
|
10
|
+
## Getting started
|
|
11
|
+
|
|
12
|
+
### Prerequisites
|
|
13
|
+
|
|
14
|
+
- Docker and Docker Compose plugin (`docker compose` CLI)
|
|
15
|
+
- `make`
|
|
16
|
+
- Valid `.env` file
|
|
17
|
+
- Adobe credentials and authorizations JSON files in the project root
|
|
18
|
+
- [CodeRabbit CLI](https://www.coderabbit.ai/cli) (optional. Used for running review check locally)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
### Make targets overview
|
|
22
|
+
|
|
23
|
+
Common development workflows are wrapped in the `makefile`:
|
|
24
|
+
|
|
25
|
+
- `make help` – list available commands
|
|
26
|
+
- `make bash` – start the app container and open a bash shell
|
|
27
|
+
- `make build` – build the application image for development
|
|
28
|
+
- `make build-package` – build the package locally
|
|
29
|
+
- `make check` – run code quality checks (ruff, flake8, lockfile check)
|
|
30
|
+
- `make check-all` – run checks, formatting, and tests
|
|
31
|
+
- `make down` – stop and remove containers
|
|
32
|
+
- `make format` – apply formatting and import fixes
|
|
33
|
+
- `make review` – check the code in the cli by running CodeRabbit
|
|
34
|
+
- `make shell` – open a Django shell inside the running app container
|
|
35
|
+
- `make test` – run the test suite with pytest
|
|
36
|
+
|
|
37
|
+
## Running tests
|
|
38
|
+
|
|
39
|
+
Tests run inside Docker using the dev configuration.
|
|
40
|
+
|
|
41
|
+
Run the full test suite:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
make test
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Pass additional arguments to pytest using the `args` variable:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
make test args="-k test_bla -vv"
|
|
51
|
+
make test args="tests/test_bla.py"
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Developer utilities
|
|
55
|
+
|
|
56
|
+
Useful helper targets during development:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
make bash # open a bash shell in the app container
|
|
60
|
+
make build-package # build the package locally
|
|
61
|
+
make check # run ruff, flake8, and lockfile checks
|
|
62
|
+
make check-all # run checks and tests
|
|
63
|
+
make format # auto-format code and imports
|
|
64
|
+
make review # check the code in the cli by running CodeRabbit
|
|
65
|
+
```
|
|
@@ -427,6 +427,27 @@ def get_listings_by_price_list_and_seller_and_authorization(
|
|
|
427
427
|
return response.json()["data"]
|
|
428
428
|
|
|
429
429
|
|
|
430
|
+
@wrap_mpt_http_error
|
|
431
|
+
def get_item_prices_by_pricelist_id(mpt_client, price_list_id, item_ids):
|
|
432
|
+
"""
|
|
433
|
+
Retrieve item prices by price list ID.
|
|
434
|
+
|
|
435
|
+
Args:
|
|
436
|
+
mpt_client: Client instance to interact with the required API.
|
|
437
|
+
price_list_id: The ID of the price list to retrieve item prices for.
|
|
438
|
+
item_ids: The IDs list to retrieve prices.
|
|
439
|
+
|
|
440
|
+
Returns:
|
|
441
|
+
list: A list of item prices.
|
|
442
|
+
"""
|
|
443
|
+
item_ids_str = ",".join(item_ids)
|
|
444
|
+
response = mpt_client.get(
|
|
445
|
+
f"/catalog/price-lists/{price_list_id}/items?in(item.id,({item_ids_str}))"
|
|
446
|
+
)
|
|
447
|
+
response.raise_for_status()
|
|
448
|
+
return response.json()["data"]
|
|
449
|
+
|
|
450
|
+
|
|
430
451
|
@wrap_mpt_http_error
|
|
431
452
|
def create_listing(mpt_client, listing):
|
|
432
453
|
"""Create a new listing."""
|
|
File without changes
|
{mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/runtime/events/producers.py
RENAMED
|
@@ -11,7 +11,7 @@ from django.utils.module_loading import import_string
|
|
|
11
11
|
|
|
12
12
|
from mpt_extension_sdk.core.events.dataclasses import Event
|
|
13
13
|
from mpt_extension_sdk.core.utils import setup_client
|
|
14
|
-
from mpt_extension_sdk.swo_rql import RQLQuery
|
|
14
|
+
from mpt_extension_sdk.swo_rql import R as RQLQuery
|
|
15
15
|
|
|
16
16
|
logger = logging.getLogger(__name__)
|
|
17
17
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import click
|
|
2
2
|
from django.utils.module_loading import import_string
|
|
3
3
|
|
|
4
|
-
from mpt_extension_sdk.runtime import get_version
|
|
5
4
|
from mpt_extension_sdk.runtime.utils import show_banner
|
|
5
|
+
from mpt_extension_sdk.runtime.version import get_version
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
def print_version(ctx, param, value):
|
|
@@ -27,16 +27,6 @@ def cli(ctx):
|
|
|
27
27
|
show_banner()
|
|
28
28
|
|
|
29
29
|
|
|
30
|
-
for cmd in map(
|
|
31
|
-
import_string,
|
|
32
|
-
(
|
|
33
|
-
"mpt_extension_sdk.runtime.commands.run.run",
|
|
34
|
-
"mpt_extension_sdk.runtime.commands.django.django",
|
|
35
|
-
),
|
|
36
|
-
):
|
|
37
|
-
cli.add_command(cmd)
|
|
38
|
-
|
|
39
|
-
|
|
40
30
|
def make_django_command(name, django_command=None, help_value=None):
|
|
41
31
|
"""A wrapper to convert a Django subcommand a Click command."""
|
|
42
32
|
if django_command is None:
|
|
@@ -59,11 +49,25 @@ def make_django_command(name, django_command=None, help_value=None):
|
|
|
59
49
|
return inner
|
|
60
50
|
|
|
61
51
|
|
|
62
|
-
|
|
52
|
+
def register_commands():
|
|
53
|
+
"""Register django and extension run commands."""
|
|
54
|
+
cmds = map(
|
|
55
|
+
import_string,
|
|
56
|
+
(
|
|
57
|
+
"mpt_extension_sdk.runtime.commands.run.run",
|
|
58
|
+
"mpt_extension_sdk.runtime.commands.django.django",
|
|
59
|
+
),
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
for cmd in cmds:
|
|
63
|
+
cli.add_command(cmd)
|
|
64
|
+
|
|
65
|
+
cli.add_command(make_django_command("shell", help_value="Open Django console"))
|
|
63
66
|
|
|
64
67
|
|
|
65
68
|
def main():
|
|
66
69
|
"""Main entry point for the CLI."""
|
|
70
|
+
register_commands()
|
|
67
71
|
cli(standalone_mode=False)
|
|
68
72
|
|
|
69
73
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
from importlib.metadata import version
|
|
1
|
+
from importlib.metadata import PackageNotFoundError, version
|
|
2
2
|
|
|
3
3
|
try:
|
|
4
4
|
__version__ = version("swo-runtime")
|
|
5
|
-
except
|
|
5
|
+
except PackageNotFoundError: # pragma: no cover
|
|
6
6
|
__version__ = "0.0.0"
|
|
7
7
|
|
|
8
8
|
|
|
@@ -1,39 +1,31 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "mpt-extension-sdk"
|
|
3
|
-
version = "5.17.
|
|
3
|
+
version = "5.17.3"
|
|
4
4
|
description = "Extensions SDK for SoftwareONE Marketplace Platform"
|
|
5
5
|
authors = [{ name = "SoftwareOne AG" }]
|
|
6
6
|
requires-python = ">=3.12,<4"
|
|
7
7
|
readme = "README.md"
|
|
8
8
|
license = {text = "Apache-2.0 license"}
|
|
9
9
|
dependencies = [
|
|
10
|
-
"azure-identity
|
|
11
|
-
"azure-keyvault-secrets
|
|
12
|
-
"azure-monitor-opentelemetry-exporter==1.0.
|
|
13
|
-
"click==8.
|
|
10
|
+
"azure-identity==1.25.*",
|
|
11
|
+
"azure-keyvault-secrets==4.10.*",
|
|
12
|
+
"azure-monitor-opentelemetry-exporter==1.0.0b46",
|
|
13
|
+
"click==8.3.*",
|
|
14
14
|
"debugpy==1.8.*",
|
|
15
15
|
"django==4.2.*",
|
|
16
16
|
"django-ninja==1.1.*",
|
|
17
17
|
"gunicorn==23.0.*",
|
|
18
|
-
"
|
|
19
|
-
"
|
|
20
|
-
"
|
|
21
|
-
"opentelemetry-
|
|
22
|
-
"opentelemetry-
|
|
23
|
-
"opentelemetry-instrumentation-logging==0.51b0",
|
|
24
|
-
"opentelemetry-instrumentation-requests==0.51b0",
|
|
25
|
-
"opentelemetry-sdk==1.30.*",
|
|
26
|
-
"phonenumbers==8.13.*",
|
|
27
|
-
"pyairtable==2.3.*",
|
|
18
|
+
"opentelemetry-api==1.39.0",
|
|
19
|
+
"opentelemetry-instrumentation-django==0.60.*",
|
|
20
|
+
"opentelemetry-instrumentation-logging==0.60.*",
|
|
21
|
+
"opentelemetry-instrumentation-requests==0.60.*",
|
|
22
|
+
"opentelemetry-sdk==1.39.0",
|
|
28
23
|
"pyfiglet==1.0.*",
|
|
29
|
-
"pyjwt==2.
|
|
30
|
-
"pymsteams==0.2.*",
|
|
31
|
-
"regex>=2024.7.24,<2025",
|
|
24
|
+
"pyjwt==2.10.*",
|
|
32
25
|
"requests==2.32.*",
|
|
33
|
-
"rich==14.
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
"watchfiles==0.21.*",
|
|
26
|
+
"rich==14.2.*",
|
|
27
|
+
"typing-extensions==4.15.*",
|
|
28
|
+
"watchfiles==1.1.*",
|
|
37
29
|
]
|
|
38
30
|
|
|
39
31
|
[project.scripts]
|
|
@@ -44,24 +36,26 @@ app_config = "mpt_extension_sdk.runtime.djapp.apps:ExtensionConfig"
|
|
|
44
36
|
|
|
45
37
|
[dependency-groups]
|
|
46
38
|
dev = [
|
|
47
|
-
"flake8
|
|
48
|
-
"
|
|
39
|
+
"flake8==7.3.*", # force flake8 version to have same formatting everywhere, also update in pre-commit config
|
|
40
|
+
# "flake8-aaa==0.17.*", # also update pre-commit config TODO: add it on next iteration
|
|
41
|
+
"flake8-pyproject==1.2.*", # also update pre-commit config
|
|
42
|
+
"freezegun==1.5.*",
|
|
49
43
|
"ipdb==0.13.*",
|
|
50
|
-
"ipython==
|
|
51
|
-
"mypy==1.
|
|
52
|
-
"pre-commit==
|
|
53
|
-
"pytest==
|
|
54
|
-
"pytest-cov==
|
|
55
|
-
"pytest-deadfixtures==
|
|
56
|
-
"pytest-django==4.
|
|
57
|
-
"pytest-mock==3.
|
|
58
|
-
"pytest-randomly==
|
|
59
|
-
"pytest-xdist==3.
|
|
60
|
-
"responses==0.
|
|
61
|
-
"ruff==0.
|
|
44
|
+
"ipython==9.*",
|
|
45
|
+
"mypy==1.19.*",
|
|
46
|
+
"pre-commit==4.5.*",
|
|
47
|
+
"pytest==9.0.*",
|
|
48
|
+
"pytest-cov==7.0.*",
|
|
49
|
+
"pytest-deadfixtures==3.1.*",
|
|
50
|
+
"pytest-django==4.11.*",
|
|
51
|
+
"pytest-mock==3.15.*",
|
|
52
|
+
"pytest-randomly==4.0.*",
|
|
53
|
+
"pytest-xdist==3.8.*",
|
|
54
|
+
"responses==0.25.*",
|
|
55
|
+
"ruff==0.14.13", # force ruff version to have same formatting everywhere, also update in pre-commit config
|
|
62
56
|
"types-openpyxl==3.1.*",
|
|
63
|
-
"types-requests==2.
|
|
64
|
-
"wemake-python-styleguide==1.
|
|
57
|
+
"types-requests==2.32.*",
|
|
58
|
+
"wemake-python-styleguide==1.5.*", # also update pre-commit config
|
|
65
59
|
]
|
|
66
60
|
|
|
67
61
|
[build-system]
|
|
@@ -92,6 +86,59 @@ omit = [
|
|
|
92
86
|
"__init__.py",
|
|
93
87
|
]
|
|
94
88
|
|
|
89
|
+
[tool.flake8]
|
|
90
|
+
allowed-domain-names = ["result"]
|
|
91
|
+
allowed-module-metadata = ["__all__"]
|
|
92
|
+
aaa_act_block_style = "large"
|
|
93
|
+
doctests = true
|
|
94
|
+
extend-ignore = ["WPS226"]
|
|
95
|
+
extend-exclude = [
|
|
96
|
+
".coverage",
|
|
97
|
+
".github",
|
|
98
|
+
".idea",
|
|
99
|
+
".mypy_cache",
|
|
100
|
+
".pytest_cache",
|
|
101
|
+
".ruff_cache",
|
|
102
|
+
"uv.lock",
|
|
103
|
+
".venv"
|
|
104
|
+
]
|
|
105
|
+
format = "wemake"
|
|
106
|
+
max-imports = 17
|
|
107
|
+
max-line-length = 100
|
|
108
|
+
select = ["E999", "WPS"]
|
|
109
|
+
show-source = true
|
|
110
|
+
statistics = false
|
|
111
|
+
# To be fixed and removed
|
|
112
|
+
per-file-ignores = [
|
|
113
|
+
"tests/**/*.py: WPS",
|
|
114
|
+
"tests/*.py: WPS",
|
|
115
|
+
"mpt_extension_sdk/core/utils.py: WPS100 WPS453",
|
|
116
|
+
"mpt_extension_sdk/mpt_http/mpt.py: WPS202 WPS118 WPS211",
|
|
117
|
+
"mpt_extension_sdk/mpt_http/utils.py: WPS100",
|
|
118
|
+
"mpt_extension_sdk/mpt_http/wrap_http_error.py: WPS110 WPS430 WPS505",
|
|
119
|
+
"mpt_extension_sdk/runtime/__init__.py: WPS412",
|
|
120
|
+
"mpt_extension_sdk/runtime/djapp/conf/__init__.py: WPS412",
|
|
121
|
+
"mpt_extension_sdk/airtable/wrap_http_error.py: WPS110 WPS430 WPS231 WPS505 WPS328",
|
|
122
|
+
"mpt_extension_sdk/core/events/dataclasses.py: WPS110",
|
|
123
|
+
"mpt_extension_sdk/flows/context.py: WPS214",
|
|
124
|
+
"mpt_extension_sdk/key_vault/base.py: WPS615",
|
|
125
|
+
"mpt_extension_sdk/runtime/commands/run.py: WPS400 WPS216",
|
|
126
|
+
"mpt_extension_sdk/runtime/djapp/conf/default.py: WPS407",
|
|
127
|
+
"mpt_extension_sdk/runtime/djapp/management/commands/consume_events.py: WPS403 WPS213 WPS110",
|
|
128
|
+
"mpt_extension_sdk/runtime/djapp/middleware.py: WPS420 WPS122 WPS211 WPS121",
|
|
129
|
+
"mpt_extension_sdk/runtime/errors.py: WPS453",
|
|
130
|
+
"mpt_extension_sdk/runtime/events/dispatcher.py: WPS420 WPS230 WPS529",
|
|
131
|
+
"mpt_extension_sdk/runtime/events/producers.py: WPS210",
|
|
132
|
+
"mpt_extension_sdk/runtime/events/utils.py: WPS100 WPS430",
|
|
133
|
+
"mpt_extension_sdk/runtime/initializer.py: WPS407 WPS210",
|
|
134
|
+
"mpt_extension_sdk/runtime/logging.py: WPS115",
|
|
135
|
+
"mpt_extension_sdk/runtime/master.py: WPS220 WPS214 WPS230",
|
|
136
|
+
"mpt_extension_sdk/runtime/swoext.py: WPS110 WPS430",
|
|
137
|
+
"mpt_extension_sdk/runtime/utils.py: WPS100 WPS202 WPS460 WPS210 WPS221 WPS349 WPS110 WPS430 WPS237 WPS202 WPS460",
|
|
138
|
+
"mpt_extension_sdk/swo_rql/__init__.py: WPS111 WPS410 WPS412",
|
|
139
|
+
"mpt_extension_sdk/swo_rql/query_builder.py: WPS210 WPS231 WPS110 WPS214 WPS115 WPS111 WPS478 WPS221 WPS211 WPS237",
|
|
140
|
+
]
|
|
141
|
+
|
|
95
142
|
[tool.ruff]
|
|
96
143
|
preview = true
|
|
97
144
|
target-version = "py312"
|
|
@@ -170,11 +217,18 @@ ignore = [
|
|
|
170
217
|
external = [ "WPS" ]
|
|
171
218
|
|
|
172
219
|
# Plugin configs:
|
|
173
|
-
flake8-import-conventions
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
220
|
+
[tool.ruff.lint.flake8-import-conventions]
|
|
221
|
+
banned-from = ["ast", "datetime"]
|
|
222
|
+
aliases = { datetime = "dt" }
|
|
223
|
+
|
|
224
|
+
[tool.ruff.lint.flake8-quotes]
|
|
225
|
+
inline-quotes = "double"
|
|
226
|
+
|
|
227
|
+
[tool.ruff.lint.mccabe]
|
|
228
|
+
max-complexity = 6
|
|
229
|
+
|
|
230
|
+
[tool.ruff.lint.pydocstyle]
|
|
231
|
+
convention = "google"
|
|
178
232
|
|
|
179
233
|
[tool.ruff.lint.per-file-ignores]
|
|
180
234
|
"tests/*.py" = [
|
|
@@ -193,7 +247,26 @@ pydocstyle.convention = "google"
|
|
|
193
247
|
known-third-party = ["swo"]
|
|
194
248
|
|
|
195
249
|
[tool.mypy]
|
|
196
|
-
|
|
250
|
+
# The mypy configurations: http://bit.ly/2zEl9WI
|
|
251
|
+
enable_error_code = [
|
|
252
|
+
"truthy-bool",
|
|
253
|
+
"truthy-iterable",
|
|
254
|
+
"redundant-expr",
|
|
255
|
+
"unused-awaitable",
|
|
256
|
+
"ignore-without-code",
|
|
257
|
+
"possibly-undefined",
|
|
258
|
+
"redundant-self",
|
|
259
|
+
"explicit-override",
|
|
260
|
+
"mutable-override",
|
|
261
|
+
"unimported-reveal",
|
|
262
|
+
"deprecated",
|
|
263
|
+
]
|
|
264
|
+
exclude = ["tests"]
|
|
265
|
+
exclude_gitignore = true
|
|
266
|
+
ignore_missing_imports = true
|
|
267
|
+
local_partial_types = true
|
|
268
|
+
strict = true
|
|
269
|
+
warn_unreachable = true
|
|
197
270
|
|
|
198
271
|
[[tool.mypy.overrides]]
|
|
199
272
|
module = "django.*"
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: mpt-extension-sdk
|
|
3
|
-
Version: 5.17.1
|
|
4
|
-
Summary: Extensions SDK for SoftwareONE Marketplace Platform
|
|
5
|
-
Author: SoftwareOne AG
|
|
6
|
-
License: Apache-2.0 license
|
|
7
|
-
License-File: LICENSE
|
|
8
|
-
Requires-Python: <4,>=3.12
|
|
9
|
-
Requires-Dist: azure-identity<2,>=1.21.0
|
|
10
|
-
Requires-Dist: azure-keyvault-secrets<5,>=4.9.0
|
|
11
|
-
Requires-Dist: azure-monitor-opentelemetry-exporter==1.0.0b25
|
|
12
|
-
Requires-Dist: click==8.1.*
|
|
13
|
-
Requires-Dist: debugpy==1.8.*
|
|
14
|
-
Requires-Dist: django-ninja==1.1.*
|
|
15
|
-
Requires-Dist: django==4.2.*
|
|
16
|
-
Requires-Dist: gunicorn==23.0.*
|
|
17
|
-
Requires-Dist: jinja2==3.1.*
|
|
18
|
-
Requires-Dist: markdown-it-py==3.0.*
|
|
19
|
-
Requires-Dist: openpyxl==3.1.*
|
|
20
|
-
Requires-Dist: opentelemetry-api==1.30.*
|
|
21
|
-
Requires-Dist: opentelemetry-instrumentation-django==0.51b0
|
|
22
|
-
Requires-Dist: opentelemetry-instrumentation-logging==0.51b0
|
|
23
|
-
Requires-Dist: opentelemetry-instrumentation-requests==0.51b0
|
|
24
|
-
Requires-Dist: opentelemetry-sdk==1.30.*
|
|
25
|
-
Requires-Dist: phonenumbers==8.13.*
|
|
26
|
-
Requires-Dist: pyairtable==2.3.*
|
|
27
|
-
Requires-Dist: pyfiglet==1.0.*
|
|
28
|
-
Requires-Dist: pyjwt==2.8.*
|
|
29
|
-
Requires-Dist: pymsteams==0.2.*
|
|
30
|
-
Requires-Dist: regex<2025,>=2024.7.24
|
|
31
|
-
Requires-Dist: requests==2.32.*
|
|
32
|
-
Requires-Dist: rich==14.1.*
|
|
33
|
-
Requires-Dist: types-openpyxl==3.1.*
|
|
34
|
-
Requires-Dist: typing-extensions==4.14.*
|
|
35
|
-
Requires-Dist: watchfiles==0.21.*
|
|
36
|
-
Description-Content-Type: text/markdown
|
|
37
|
-
|
|
38
|
-
# swo-extension-sdk
|
|
39
|
-
SDK for SoftwareONE python extensions
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/airtable/__init__.py
RENAMED
|
File without changes
|
{mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/airtable/wrap_http_error.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/core/events/__init__.py
RENAMED
|
File without changes
|
{mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/core/events/dataclasses.py
RENAMED
|
File without changes
|
{mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/core/events/registry.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/key_vault/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/mpt_http/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/mpt_http/wrap_http_error.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/runtime/commands/django.py
RENAMED
|
File without changes
|
{mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/runtime/commands/run.py
RENAMED
|
File without changes
|
|
File without changes
|
{mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/runtime/djapp/apps.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/runtime/djapp/conf/urls.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/runtime/djapp/middleware.py
RENAMED
|
File without changes
|
|
File without changes
|
{mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/runtime/events/dispatcher.py
RENAMED
|
File without changes
|
{mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/runtime/events/utils.py
RENAMED
|
File without changes
|
{mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/runtime/initializer.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/swo_rql/constants.py
RENAMED
|
File without changes
|
{mpt_extension_sdk-5.17.1 → mpt_extension_sdk-5.17.3}/mpt_extension_sdk/swo_rql/query_builder.py
RENAMED
|
File without changes
|