nextmv 0.38.0.dev0__tar.gz → 0.39.0.dev0__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.
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/PKG-INFO +2 -1
- nextmv-0.39.0.dev0/nextmv/__about__.py +1 -0
- nextmv-0.39.0.dev0/nextmv/cli/main.py +11 -0
- nextmv-0.39.0.dev0/nextmv/cli/version.py +14 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/nextmv/cloud/application.py +14 -10
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/pyproject.toml +4 -0
- nextmv-0.39.0.dev0/tests/test_entrypoint/__init__.py +0 -0
- nextmv-0.38.0.dev0/nextmv/__about__.py +0 -1
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/.gitignore +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/LICENSE +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/README.md +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/nextmv/__entrypoint__.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/nextmv/__init__.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/nextmv/_serialization.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/nextmv/base_model.py +0 -0
- {nextmv-0.38.0.dev0/nextmv/default_app/src → nextmv-0.39.0.dev0/nextmv/cli}/__init__.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/nextmv/cloud/__init__.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/nextmv/cloud/acceptance_test.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/nextmv/cloud/account.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/nextmv/cloud/assets.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/nextmv/cloud/batch_experiment.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/nextmv/cloud/client.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/nextmv/cloud/ensemble.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/nextmv/cloud/input_set.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/nextmv/cloud/instance.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/nextmv/cloud/integration.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/nextmv/cloud/package.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/nextmv/cloud/scenario.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/nextmv/cloud/secrets.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/nextmv/cloud/url.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/nextmv/cloud/version.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/nextmv/default_app/.gitignore +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/nextmv/default_app/README.md +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/nextmv/default_app/app.yaml +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/nextmv/default_app/input.json +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/nextmv/default_app/main.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/nextmv/default_app/requirements.txt +0 -0
- {nextmv-0.38.0.dev0/tests → nextmv-0.39.0.dev0/nextmv/default_app/src}/__init__.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/nextmv/default_app/src/visuals.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/nextmv/deprecated.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/nextmv/input.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/nextmv/local/__init__.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/nextmv/local/application.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/nextmv/local/executor.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/nextmv/local/geojson_handler.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/nextmv/local/local.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/nextmv/local/plotly_handler.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/nextmv/local/runner.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/nextmv/logger.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/nextmv/manifest.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/nextmv/model.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/nextmv/options.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/nextmv/output.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/nextmv/polling.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/nextmv/run.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/nextmv/safe.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/nextmv/status.py +0 -0
- {nextmv-0.38.0.dev0/tests/cloud → nextmv-0.39.0.dev0/tests}/__init__.py +0 -0
- {nextmv-0.38.0.dev0/tests/local → nextmv-0.39.0.dev0/tests/cloud}/__init__.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/tests/cloud/app.yaml +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/tests/cloud/test_client.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/tests/cloud/test_instance.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/tests/cloud/test_package.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/tests/cloud/test_scenario.py +0 -0
- {nextmv-0.38.0.dev0/tests/scripts → nextmv-0.39.0.dev0/tests/local}/__init__.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/tests/local/test_application.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/tests/local/test_executor.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/tests/local/test_runner.py +0 -0
- {nextmv-0.38.0.dev0/tests/test_entrypoint → nextmv-0.39.0.dev0/tests/scripts}/__init__.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/tests/scripts/options1.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/tests/scripts/options2.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/tests/scripts/options3.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/tests/scripts/options4.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/tests/scripts/options5.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/tests/scripts/options6.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/tests/scripts/options7.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/tests/scripts/options_deprecated.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/tests/test_base_model.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/tests/test_entrypoint/test_entrypoint.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/tests/test_input.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/tests/test_inputs/test_data.csv +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/tests/test_inputs/test_data.json +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/tests/test_inputs/test_data.txt +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/tests/test_logger.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/tests/test_manifest.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/tests/test_model.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/tests/test_options.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/tests/test_output.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/tests/test_polling.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/tests/test_run.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/tests/test_safe.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/tests/test_serialization.py +0 -0
- {nextmv-0.38.0.dev0 → nextmv-0.39.0.dev0}/tests/test_version.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: nextmv
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.39.0.dev0
|
|
4
4
|
Summary: The all-purpose Python SDK for Nextmv
|
|
5
5
|
Project-URL: Homepage, https://www.nextmv.io
|
|
6
6
|
Project-URL: Documentation, https://nextmv-py.docs.nextmv.io/en/latest/nextmv/
|
|
@@ -221,6 +221,7 @@ Requires-Python: >=3.10
|
|
|
221
221
|
Requires-Dist: pydantic>=2.5.2
|
|
222
222
|
Requires-Dist: pyyaml>=6.0.1
|
|
223
223
|
Requires-Dist: requests>=2.31.0
|
|
224
|
+
Requires-Dist: typer>=0.20.1
|
|
224
225
|
Requires-Dist: urllib3>=2.1.0
|
|
225
226
|
Provides-Extra: all
|
|
226
227
|
Requires-Dist: folium>=0.20.0; extra == 'all'
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "v0.39.0.dev0"
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import typer
|
|
2
|
+
|
|
3
|
+
from nextmv.cli.version import app as version_app
|
|
4
|
+
|
|
5
|
+
app = typer.Typer(
|
|
6
|
+
help="The Nextmv Command Line Interface (CLI).",
|
|
7
|
+
epilog="[italic]:rabbit: Made with :heart: by Nextmv.[/italic]",
|
|
8
|
+
rich_markup_mode="rich",
|
|
9
|
+
context_settings={"help_option_names": ["--help", "-h"]},
|
|
10
|
+
)
|
|
11
|
+
app.add_typer(version_app)
|
|
@@ -2548,7 +2548,7 @@ class Application:
|
|
|
2548
2548
|
|
|
2549
2549
|
Retrieves a list of assets associated with a specific run. This method ONLY
|
|
2550
2550
|
returns the asset metadata, the content needs to be fetched via the
|
|
2551
|
-
`
|
|
2551
|
+
`download_asset_content` method.
|
|
2552
2552
|
|
|
2553
2553
|
Parameters
|
|
2554
2554
|
----------
|
|
@@ -2582,9 +2582,13 @@ class Application:
|
|
|
2582
2582
|
asset_data["run_id"] = run_id
|
|
2583
2583
|
return [RunAsset.from_dict(asset) for asset in assets_data]
|
|
2584
2584
|
|
|
2585
|
-
def
|
|
2585
|
+
def download_asset_content(
|
|
2586
|
+
self,
|
|
2587
|
+
asset: RunAsset,
|
|
2588
|
+
destination: str | pathlib.Path | io.BytesIO | None = None,
|
|
2589
|
+
) -> Any | None:
|
|
2586
2590
|
"""
|
|
2587
|
-
Downloads an asset to a specified destination.
|
|
2591
|
+
Downloads an asset's content to a specified destination.
|
|
2588
2592
|
|
|
2589
2593
|
Parameters
|
|
2590
2594
|
----------
|
|
@@ -2599,10 +2603,10 @@ class Application:
|
|
|
2599
2603
|
Returns
|
|
2600
2604
|
-------
|
|
2601
2605
|
Any or None
|
|
2602
|
-
If
|
|
2603
|
-
|
|
2604
|
-
|
|
2605
|
-
to the given destination and the method returns
|
|
2606
|
+
If `destination` is None, returns the asset content: for JSON assets, a
|
|
2607
|
+
`dict` parsed from the JSON response; for other asset types, the raw
|
|
2608
|
+
`bytes` content. If `destination` is provided, the content is written
|
|
2609
|
+
to the given destination and the method returns `None`.
|
|
2606
2610
|
|
|
2607
2611
|
Raises
|
|
2608
2612
|
------
|
|
@@ -2614,13 +2618,13 @@ class Application:
|
|
|
2614
2618
|
>>> assets = app.list_assets("run-123")
|
|
2615
2619
|
>>> asset = assets[0] # Assume we want to download the first asset
|
|
2616
2620
|
>>> # Download to a file path
|
|
2617
|
-
>>> app.
|
|
2621
|
+
>>> app.download_asset_content(asset, "polygons.geojson")
|
|
2618
2622
|
>>> # Download to an in-memory bytes buffer
|
|
2619
2623
|
>>> import io
|
|
2620
2624
|
>>> buffer = io.BytesIO()
|
|
2621
|
-
>>> app.
|
|
2625
|
+
>>> app.download_asset_content(asset, buffer)
|
|
2622
2626
|
>>> # Download and get content directly (for JSON assets)
|
|
2623
|
-
>>> content = app.
|
|
2627
|
+
>>> content = app.download_asset_content(asset)
|
|
2624
2628
|
>>> print(content)
|
|
2625
2629
|
{'type': 'FeatureCollection', 'features': [...]}
|
|
2626
2630
|
"""
|
|
@@ -20,6 +20,7 @@ dependencies = [
|
|
|
20
20
|
"urllib3>=2.1.0",
|
|
21
21
|
"requests>=2.31.0",
|
|
22
22
|
"pyyaml>=6.0.1",
|
|
23
|
+
"typer>=0.20.1",
|
|
23
24
|
]
|
|
24
25
|
description = "The all-purpose Python SDK for Nextmv"
|
|
25
26
|
dynamic = [
|
|
@@ -49,6 +50,9 @@ Homepage = "https://www.nextmv.io"
|
|
|
49
50
|
Documentation = "https://nextmv-py.docs.nextmv.io/en/latest/nextmv/"
|
|
50
51
|
Repository = "https://github.com/nextmv-io/nextmv-py"
|
|
51
52
|
|
|
53
|
+
[project.scripts]
|
|
54
|
+
nextmv = "nextmv.cli.main:app"
|
|
55
|
+
|
|
52
56
|
[project.optional-dependencies]
|
|
53
57
|
all = [
|
|
54
58
|
"folium>=0.20.0",
|
|
File without changes
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "v0.38.0.dev0"
|
|
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
|
|
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
|
|
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
|
|
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
|