dt-extensions-sdk 1.7.4__tar.gz → 1.8.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.
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/PKG-INFO +6 -5
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/README.md +2 -2
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/docs/guides/building.rst +13 -3
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/docs/guides/installation.rst +1 -1
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/docs/guides/migration.rst +1 -1
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/dynatrace_extension/__about__.py +1 -1
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/dynatrace_extension/cli/main.py +73 -15
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/pyproject.toml +6 -5
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/tests/cli/test_dt_sdk.py +2 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/.github/workflows/build-package.yml +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/.github/workflows/gh-pages-docs.yml +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/.github/workflows/publish.yml +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/.gitignore +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/LICENSE.txt +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/docs/_static/dt-sdk-header.png +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/docs/_static/dt-sdk-logo.png +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/docs/_static/favicon.ico +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/docs/_static/img/migrate-01-new-extension.png +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/docs/_static/img/migrate-02-type.png +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/docs/_static/img/migrate-03-import.png +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/docs/_static/img/migrate-04-import-remote.png +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/docs/_static/img/migrate-05-activation.png +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/docs/_static/img/migrate-06-activation-config.png +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/docs/api/events/event_severity.rst +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/docs/api/events/event_type.rst +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/docs/api/events/index.rst +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/docs/api/extension.rst +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/docs/api/metrics/index.rst +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/docs/api/metrics/metric.rst +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/docs/api/metrics/metric_type.rst +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/docs/cli/assemble.rst +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/docs/cli/build.rst +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/docs/cli/create.rst +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/docs/cli/gencerts.rst +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/docs/cli/help.rst +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/docs/cli/run.rst +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/docs/cli/sign.rst +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/docs/cli/upload.rst +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/docs/cli/wheel.rst +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/docs/conf.py +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/docs/guides/extension_structure.rst +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/docs/index.rst +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/docs/requirements.txt +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/dynatrace_extension/__init__.py +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/dynatrace_extension/cli/__init__.py +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/dynatrace_extension/cli/create/__init__.py +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/dynatrace_extension/cli/create/create.py +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/dynatrace_extension/cli/create/extension_template/.gitignore.template +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/dynatrace_extension/cli/create/extension_template/README.md.template +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/dynatrace_extension/cli/create/extension_template/activation.json.template +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/dynatrace_extension/cli/create/extension_template/extension/activationSchema.json.template +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/dynatrace_extension/cli/create/extension_template/extension/extension.yaml.template +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/dynatrace_extension/cli/create/extension_template/extension_name/__init__.py.template +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/dynatrace_extension/cli/create/extension_template/extension_name/__main__.py.template +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/dynatrace_extension/cli/create/extension_template/ruff.toml.template +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/dynatrace_extension/cli/create/extension_template/secrets.json.template +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/dynatrace_extension/cli/create/extension_template/setup.py.template +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/dynatrace_extension/cli/schema.py +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/dynatrace_extension/sdk/__init__.py +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/dynatrace_extension/sdk/activation.py +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/dynatrace_extension/sdk/callback.py +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/dynatrace_extension/sdk/communication.py +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/dynatrace_extension/sdk/event.py +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/dynatrace_extension/sdk/extension.py +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/dynatrace_extension/sdk/helper.py +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/dynatrace_extension/sdk/metric.py +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/dynatrace_extension/sdk/runtime.py +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/dynatrace_extension/sdk/snapshot.py +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/dynatrace_extension/sdk/status.py +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/dynatrace_extension/sdk/throttled_logger.py +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/dynatrace_extension/sdk/vendor/__init__.py +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/dynatrace_extension/sdk/vendor/mureq/LICENSE +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/dynatrace_extension/sdk/vendor/mureq/__init__.py +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/dynatrace_extension/sdk/vendor/mureq/mureq.py +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/tests/__init__.py +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/tests/cli/__init__.py +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/tests/cli/test_templates.py +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/tests/cli/test_types.py +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/tests/data/snapshot.json +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/tests/sdk/__init__.py +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/tests/sdk/test_activation.py +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/tests/sdk/test_callback.py +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/tests/sdk/test_communication.py +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/tests/sdk/test_endpoints_sfm.py +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/tests/sdk/test_extension.py +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/tests/sdk/test_metric.py +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/tests/sdk/test_runtime_properties.py +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/tests/sdk/test_snapshot.py +0 -0
- {dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/tests/sdk/test_status.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dt-extensions-sdk
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.8.0
|
|
4
4
|
Project-URL: Documentation, https://github.com/dynatrace-extensions/dt-extensions-python-sdk#readme
|
|
5
5
|
Project-URL: Issues, https://github.com/dynatrace-extensions/dt-extensions-python-sdk/issues
|
|
6
6
|
Project-URL: Source, https://github.com/dynatrace-extensions/dt-extensions-python-sdk
|
|
@@ -10,20 +10,21 @@ License-File: LICENSE.txt
|
|
|
10
10
|
Classifier: Development Status :: 4 - Beta
|
|
11
11
|
Classifier: Programming Language :: Python
|
|
12
12
|
Classifier: Programming Language :: Python :: 3.10
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
13
14
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
14
15
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
15
|
-
Requires-Python: <3.
|
|
16
|
+
Requires-Python: <3.15,>=3.10
|
|
16
17
|
Provides-Extra: cli
|
|
17
18
|
Requires-Dist: dt-cli>=1.6.13; extra == 'cli'
|
|
18
19
|
Requires-Dist: pyyaml; extra == 'cli'
|
|
19
20
|
Requires-Dist: ruff; extra == 'cli'
|
|
20
|
-
Requires-Dist: typer
|
|
21
|
+
Requires-Dist: typer; extra == 'cli'
|
|
21
22
|
Description-Content-Type: text/markdown
|
|
22
23
|
|
|
23
24
|
# Dynatrace Extensions Python SDK
|
|
24
25
|
|
|
25
26
|
[](https://pypi.org/project/dt-extensions-sdk)
|
|
26
|
-
[](https://img.shields.io/badge/python-3.10-blue)
|
|
27
|
+
[](https://img.shields.io/badge/python-3.10%20%7C%203.14-blue)
|
|
27
28
|
|
|
28
29
|
-----
|
|
29
30
|
|
|
@@ -41,7 +42,7 @@ The documentation can be found on [github pages](https://dynatrace-extensions.gi
|
|
|
41
42
|
|
|
42
43
|
### Requirements:
|
|
43
44
|
|
|
44
|
-
* Python 3.10
|
|
45
|
+
* Python 3.10 or 3.14
|
|
45
46
|
|
|
46
47
|
### Install the SDK
|
|
47
48
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Dynatrace Extensions Python SDK
|
|
2
2
|
|
|
3
3
|
[](https://pypi.org/project/dt-extensions-sdk)
|
|
4
|
-
[](https://img.shields.io/badge/python-3.10-blue)
|
|
4
|
+
[](https://img.shields.io/badge/python-3.10%20%7C%203.14-blue)
|
|
5
5
|
|
|
6
6
|
-----
|
|
7
7
|
|
|
@@ -19,7 +19,7 @@ The documentation can be found on [github pages](https://dynatrace-extensions.gi
|
|
|
19
19
|
|
|
20
20
|
### Requirements:
|
|
21
21
|
|
|
22
|
-
* Python 3.10
|
|
22
|
+
* Python 3.10 or 3.14
|
|
23
23
|
|
|
24
24
|
### Install the SDK
|
|
25
25
|
|
|
@@ -27,10 +27,12 @@ Native dependencies
|
|
|
27
27
|
| Your extension will run on a Dynatrace **Activegate** or **OneAgent**, which is a Linux or Windows machine, and it has a specific version of python.
|
|
28
28
|
| This means that your extension must be built on a machine that has the same version of python as the Activegate.
|
|
29
29
|
|
|
|
30
|
-
|
|
|
30
|
+
| Dynatrace extensions support **python 3.10** and **python 3.14**.
|
|
31
|
+
| We plan to end support for **python 3.10** around October/2026.
|
|
31
32
|
|
|
|
32
|
-
| When you build the extension with **dt-sdk build**, it downloads the dependencies **whl** files and places them in the lib folder of the extension.
|
|
33
|
+
| When you build the extension with **dt-sdk build**, it downloads the dependencies **whl** files and places them in the lib folder of the extension.
|
|
33
34
|
| To obtain whl files for different a operating system than what the build machine is, the SDK provides the **--extra-platform** flag.
|
|
35
|
+
| To download wheels for multiple Python versions, use the **--python-version** flag (can be specified multiple times).
|
|
34
36
|
|
|
|
35
37
|
| In summary, when building from Windows, you should use:
|
|
36
38
|
|
|
|
@@ -43,6 +45,14 @@ Native dependencies
|
|
|
43
45
|
| To get the correct extra wheel files for linux. Note, **manylinux2014_x86_64** works for several packages, but not all of them.
|
|
44
46
|
| You need to investigate the dependencies of your extension to find the correct extra platform if that is the case.
|
|
45
47
|
|
|
|
48
|
+
|
|
49
|
+
| To build for multiple Python versions:
|
|
50
|
+
|
|
|
51
|
+
|
|
52
|
+
.. code-block:: bash
|
|
53
|
+
|
|
54
|
+
dt-sdk build --python-version 3.10 --python-version 3.14
|
|
55
|
+
|
|
46
56
|
| When building from Linux, you should use:
|
|
47
57
|
|
|
|
48
58
|
|
|
@@ -120,7 +130,7 @@ Musl vs libc
|
|
|
120
130
|
| Extensions run on `libc`_ based systems, like Ubuntu, CentOS, Windows, etc.
|
|
121
131
|
| You should not use a `musl`_ based system, like Alpine, to build extensions.
|
|
122
132
|
|
|
|
123
|
-
| This means that if you are using a docker container to build the extension, you should use
|
|
133
|
+
| This means that if you are using a docker container to build the extension, you should use a **python:3.10** or **python:3.14** image, or any other image that is based on a `libc`_ system.
|
|
124
134
|
|
|
|
125
135
|
| The reason for this is that a **musl** based system will download native whl files that are not compatible with **libc** based systems.
|
|
126
136
|
|
|
@@ -6,7 +6,7 @@ Migrating EF1 Extensions
|
|
|
6
6
|
Requirements
|
|
7
7
|
============
|
|
8
8
|
|
|
9
|
-
* `Python 3.10 <https://www.python.org/downloads/>`_
|
|
9
|
+
* `Python 3.10 or 3.14 <https://www.python.org/downloads/>`_
|
|
10
10
|
* ``dt-extensions-sdk`` installed and in your ``PATH`` (you can run with ``dt-sdk --help``).
|
|
11
11
|
* `VSCode <https://code.visualstudio.com>`_ with the `Dynatrace Extensions <https://marketplace.visualstudio.com/items?itemName=DynatracePlatformExtensions.dynatrace-extensions>`_ extension installed.
|
|
12
12
|
|
|
@@ -17,10 +17,8 @@ from .schema import ExtensionYaml
|
|
|
17
17
|
app = typer.Typer(pretty_exceptions_show_locals=False, pretty_exceptions_enable=False)
|
|
18
18
|
console = Console()
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
console.print(f"Python 3.10.X is required to build extensions, you are using {sys.version_info}", style="bold red")
|
|
23
|
-
sys.exit(1)
|
|
20
|
+
SUPPORTED_PYTHON_VERSIONS = ["3.10", "3.14"]
|
|
21
|
+
|
|
24
22
|
|
|
25
23
|
CERT_DIR_ENVIRONMENT_VAR = "DT_CERTIFICATES_FOLDER"
|
|
26
24
|
CERTIFICATE_DEFAULT_PATH = Path.home() / ".dynatrace" / "certificates"
|
|
@@ -106,6 +104,12 @@ def build(
|
|
|
106
104
|
"-o",
|
|
107
105
|
help="Only build for the extra platforms, useful when building from arm64 (mac)",
|
|
108
106
|
),
|
|
107
|
+
python_versions: list[str] | None = typer.Option(
|
|
108
|
+
None,
|
|
109
|
+
"--python-version",
|
|
110
|
+
"-p",
|
|
111
|
+
help=f"Python versions to download wheels for. Supported: {', '.join(SUPPORTED_PYTHON_VERSIONS)}",
|
|
112
|
+
),
|
|
109
113
|
):
|
|
110
114
|
"""
|
|
111
115
|
Builds and signs an extension using the developer fused key-certificate
|
|
@@ -119,6 +123,7 @@ def build(
|
|
|
119
123
|
:param extra_index_url: Extra index url to use when downloading dependencies
|
|
120
124
|
:param find_links: Extra index url to use when downloading dependencies
|
|
121
125
|
:param only_extra_platforms: If true, only build for the extra platforms, useful when building from arm64
|
|
126
|
+
:param python_versions: Python versions to download wheels for, defaults to ['3.10']
|
|
122
127
|
"""
|
|
123
128
|
console.print(f"Building and signing extension from {extension_dir} to {target_directory}", style="cyan")
|
|
124
129
|
if target_directory is None:
|
|
@@ -127,7 +132,7 @@ def build(
|
|
|
127
132
|
target_directory.mkdir()
|
|
128
133
|
|
|
129
134
|
console.print("Stage 1 - Download and build dependencies", style="bold blue")
|
|
130
|
-
wheel(extension_dir, extra_platforms, extra_index_url, find_links, only_extra_platforms)
|
|
135
|
+
wheel(extension_dir, extra_platforms, extra_index_url, find_links, only_extra_platforms, python_versions)
|
|
131
136
|
|
|
132
137
|
console.print("Stage 2 - Create the extension zip file", style="bold blue")
|
|
133
138
|
built_zip = assemble(extension_dir, target_directory)
|
|
@@ -184,6 +189,11 @@ def assemble(
|
|
|
184
189
|
return output
|
|
185
190
|
|
|
186
191
|
|
|
192
|
+
def _version_to_pip_version(version: str) -> str:
|
|
193
|
+
"""Convert a version string like '3.10' to pip format '310'."""
|
|
194
|
+
return version.replace(".", "")
|
|
195
|
+
|
|
196
|
+
|
|
187
197
|
@app.command(help="Downloads the dependencies of the extension to the lib folder")
|
|
188
198
|
def wheel(
|
|
189
199
|
extension_dir: Path = typer.Argument(".", help="Path to the python extension"),
|
|
@@ -202,6 +212,12 @@ def wheel(
|
|
|
202
212
|
"-o",
|
|
203
213
|
help="Only build for the extra platforms, useful when building from arm64 (mac)",
|
|
204
214
|
),
|
|
215
|
+
python_versions: list[str] | None = typer.Option(
|
|
216
|
+
None,
|
|
217
|
+
"--python-version",
|
|
218
|
+
"-p",
|
|
219
|
+
help=f"Python versions to download wheels for. Supported: {', '.join(SUPPORTED_PYTHON_VERSIONS)}",
|
|
220
|
+
),
|
|
205
221
|
):
|
|
206
222
|
"""
|
|
207
223
|
Builds the extension and it's dependencies into wheel files
|
|
@@ -212,27 +228,43 @@ def wheel(
|
|
|
212
228
|
:param extra_index_url: Extra index url to use when downloading dependencies
|
|
213
229
|
:param find_links: Extra index url to use when downloading dependencies
|
|
214
230
|
:param only_extra_platforms: If true, only build for the extra platforms, useful when building from arm64
|
|
231
|
+
:param python_versions: Python versions to download wheels for, defaults to ['3.10']
|
|
215
232
|
"""
|
|
233
|
+
# Handle OptionInfo objects when called directly (not via CLI)
|
|
234
|
+
if python_versions is None or isinstance(python_versions, typer.models.OptionInfo):
|
|
235
|
+
python_versions = ["3.10"]
|
|
236
|
+
if only_extra_platforms is None or isinstance(only_extra_platforms, typer.models.OptionInfo):
|
|
237
|
+
only_extra_platforms = False
|
|
238
|
+
|
|
239
|
+
# Validate python versions
|
|
240
|
+
for version in python_versions:
|
|
241
|
+
if version not in SUPPORTED_PYTHON_VERSIONS:
|
|
242
|
+
msg = (
|
|
243
|
+
f"Python version {version} is not supported. Supported versions: {', '.join(SUPPORTED_PYTHON_VERSIONS)}"
|
|
244
|
+
)
|
|
245
|
+
console.print(msg, style="bold red")
|
|
246
|
+
raise typer.Exit(1)
|
|
247
|
+
|
|
216
248
|
relative_lib_folder_dir = "extension/lib"
|
|
217
249
|
lib_folder: Path = extension_dir / relative_lib_folder_dir
|
|
218
250
|
_clean_directory(lib_folder)
|
|
219
251
|
|
|
220
252
|
console.print(f"Downloading dependencies to {lib_folder}", style="cyan")
|
|
221
253
|
|
|
222
|
-
#
|
|
223
|
-
command = [sys.executable, "-m", "pip", "wheel", "-w", relative_lib_folder_dir]
|
|
254
|
+
# Build the wheel for the extension itself (no deps)
|
|
255
|
+
command = [sys.executable, "-m", "pip", "wheel", "-w", relative_lib_folder_dir, "--no-deps"]
|
|
224
256
|
if extra_index_url is not None:
|
|
225
257
|
command.extend(["--extra-index-url", extra_index_url])
|
|
226
258
|
if find_links is not None:
|
|
227
259
|
command.extend(["--find-links", find_links])
|
|
228
|
-
if only_extra_platforms:
|
|
229
|
-
command.append("--no-deps")
|
|
230
260
|
command.append(".")
|
|
231
261
|
run_process(command, cwd=extension_dir)
|
|
232
262
|
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
263
|
+
# Download dependencies for the current platform for each requested python version
|
|
264
|
+
if not only_extra_platforms:
|
|
265
|
+
for version in python_versions:
|
|
266
|
+
pip_version = _version_to_pip_version(version)
|
|
267
|
+
console.print(f"Downloading wheels for Python {version} (current platform)", style="cyan")
|
|
236
268
|
command = [
|
|
237
269
|
sys.executable,
|
|
238
270
|
"-m",
|
|
@@ -241,17 +273,43 @@ def wheel(
|
|
|
241
273
|
"-d",
|
|
242
274
|
relative_lib_folder_dir,
|
|
243
275
|
"--only-binary=:all:",
|
|
244
|
-
"--
|
|
245
|
-
|
|
276
|
+
"--python-version",
|
|
277
|
+
pip_version,
|
|
246
278
|
]
|
|
247
279
|
if extra_index_url:
|
|
248
280
|
command.extend(["--extra-index-url", extra_index_url])
|
|
249
281
|
if find_links:
|
|
250
282
|
command.extend(["--find-links", find_links])
|
|
251
283
|
command.append(".")
|
|
252
|
-
|
|
253
284
|
run_process(command, cwd=extension_dir)
|
|
254
285
|
|
|
286
|
+
# Download dependencies for extra platforms for each requested python version
|
|
287
|
+
if extra_platforms:
|
|
288
|
+
for extra_platform in extra_platforms:
|
|
289
|
+
for version in python_versions:
|
|
290
|
+
pip_version = _version_to_pip_version(version)
|
|
291
|
+
console.print(f"Downloading wheels for Python {version}, platform {extra_platform}", style="cyan")
|
|
292
|
+
command = [
|
|
293
|
+
sys.executable,
|
|
294
|
+
"-m",
|
|
295
|
+
"pip",
|
|
296
|
+
"download",
|
|
297
|
+
"-d",
|
|
298
|
+
relative_lib_folder_dir,
|
|
299
|
+
"--only-binary=:all:",
|
|
300
|
+
"--python-version",
|
|
301
|
+
pip_version,
|
|
302
|
+
"--platform",
|
|
303
|
+
extra_platform,
|
|
304
|
+
]
|
|
305
|
+
if extra_index_url:
|
|
306
|
+
command.extend(["--extra-index-url", extra_index_url])
|
|
307
|
+
if find_links:
|
|
308
|
+
command.extend(["--find-links", find_links])
|
|
309
|
+
command.append(".")
|
|
310
|
+
|
|
311
|
+
run_process(command, cwd=extension_dir)
|
|
312
|
+
|
|
255
313
|
console.print(f"Installed dependencies to {lib_folder}", style="bold green")
|
|
256
314
|
|
|
257
315
|
|
|
@@ -7,7 +7,7 @@ name = "dt-extensions-sdk"
|
|
|
7
7
|
dynamic = ["version"]
|
|
8
8
|
description = ''
|
|
9
9
|
readme = "README.md"
|
|
10
|
-
requires-python = ">=3.10,<3.
|
|
10
|
+
requires-python = ">=3.10,<3.15"
|
|
11
11
|
license = "MIT"
|
|
12
12
|
keywords = []
|
|
13
13
|
authors = [
|
|
@@ -17,13 +17,14 @@ classifiers = [
|
|
|
17
17
|
"Development Status :: 4 - Beta",
|
|
18
18
|
"Programming Language :: Python",
|
|
19
19
|
"Programming Language :: Python :: 3.10",
|
|
20
|
+
"Programming Language :: Python :: 3.14",
|
|
20
21
|
"Programming Language :: Python :: Implementation :: CPython",
|
|
21
22
|
"Programming Language :: Python :: Implementation :: PyPy",
|
|
22
23
|
]
|
|
23
24
|
dependencies = []
|
|
24
25
|
|
|
25
26
|
[project.optional-dependencies]
|
|
26
|
-
cli = [ "dt-cli>=1.6.13", "typer
|
|
27
|
+
cli = [ "dt-cli>=1.6.13", "typer", "pyyaml", "ruff"]
|
|
27
28
|
|
|
28
29
|
[project.urls]
|
|
29
30
|
Documentation = "https://github.com/dynatrace-extensions/dt-extensions-python-sdk#readme"
|
|
@@ -45,7 +46,7 @@ packages = ["dynatrace_extension"]
|
|
|
45
46
|
dependencies = [
|
|
46
47
|
"coverage[toml]>=6.5",
|
|
47
48
|
"pytest",
|
|
48
|
-
"typer
|
|
49
|
+
"typer",
|
|
49
50
|
"pyyaml",
|
|
50
51
|
"dt-cli>=1.6.13",
|
|
51
52
|
"freezegun"
|
|
@@ -72,7 +73,7 @@ dependencies = [
|
|
|
72
73
|
"black>=23.1.0",
|
|
73
74
|
"mypy>=1.0.0",
|
|
74
75
|
"ruff>=0.9.10",
|
|
75
|
-
"typer
|
|
76
|
+
"typer",
|
|
76
77
|
"pyyaml",
|
|
77
78
|
"pytest",
|
|
78
79
|
"freezegun"
|
|
@@ -101,7 +102,7 @@ dependencies = [
|
|
|
101
102
|
"sphinxcontrib-programoutput",
|
|
102
103
|
"wutch",
|
|
103
104
|
"dt-cli",
|
|
104
|
-
"typer
|
|
105
|
+
"typer",
|
|
105
106
|
"pyyaml",
|
|
106
107
|
"tomli"
|
|
107
108
|
]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/docs/_static/img/migrate-01-new-extension.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/docs/_static/img/migrate-04-import-remote.png
RENAMED
|
File without changes
|
{dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/docs/_static/img/migrate-05-activation.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/dynatrace_extension/cli/create/__init__.py
RENAMED
|
File without changes
|
{dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/dynatrace_extension/cli/create/create.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/dynatrace_extension/sdk/communication.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/dynatrace_extension/sdk/throttled_logger.py
RENAMED
|
File without changes
|
{dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/dynatrace_extension/sdk/vendor/__init__.py
RENAMED
|
File without changes
|
{dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/dynatrace_extension/sdk/vendor/mureq/LICENSE
RENAMED
|
File without changes
|
{dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/dynatrace_extension/sdk/vendor/mureq/__init__.py
RENAMED
|
File without changes
|
{dt_extensions_sdk-1.7.4 → dt_extensions_sdk-1.8.0}/dynatrace_extension/sdk/vendor/mureq/mureq.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|