nextmv 0.30.0__tar.gz → 0.31.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.
Files changed (86) hide show
  1. {nextmv-0.30.0 → nextmv-0.31.0}/PKG-INFO +5 -1
  2. nextmv-0.31.0/nextmv/__about__.py +1 -0
  3. nextmv-0.31.0/nextmv/__init__.py +85 -0
  4. {nextmv-0.30.0 → nextmv-0.31.0}/nextmv/cloud/__init__.py +38 -33
  5. {nextmv-0.30.0 → nextmv-0.31.0}/nextmv/cloud/account.py +1 -1
  6. {nextmv-0.30.0 → nextmv-0.31.0}/nextmv/cloud/application.py +212 -481
  7. {nextmv-0.30.0 → nextmv-0.31.0}/nextmv/cloud/input_set.py +1 -1
  8. {nextmv-0.30.0 → nextmv-0.31.0}/nextmv/cloud/package.py +1 -1
  9. nextmv-0.31.0/nextmv/cloud/url.py +73 -0
  10. nextmv-0.31.0/nextmv/default_app/.gitignore +1 -0
  11. {nextmv-0.30.0 → nextmv-0.31.0}/nextmv/default_app/app.yaml +2 -0
  12. {nextmv-0.30.0 → nextmv-0.31.0}/nextmv/default_app/src/main.py +2 -1
  13. {nextmv-0.30.0 → nextmv-0.31.0}/nextmv/input.py +17 -1
  14. nextmv-0.31.0/nextmv/local/__init__.py +5 -0
  15. nextmv-0.31.0/nextmv/local/application.py +1147 -0
  16. nextmv-0.31.0/nextmv/local/executor.py +718 -0
  17. nextmv-0.31.0/nextmv/local/geojson_handler.py +323 -0
  18. nextmv-0.31.0/nextmv/local/plotly_handler.py +61 -0
  19. nextmv-0.31.0/nextmv/local/runner.py +312 -0
  20. {nextmv-0.30.0/nextmv/cloud → nextmv-0.31.0/nextmv}/manifest.py +110 -69
  21. {nextmv-0.30.0 → nextmv-0.31.0}/nextmv/output.py +61 -8
  22. nextmv-0.31.0/nextmv/polling.py +287 -0
  23. {nextmv-0.30.0/nextmv/cloud → nextmv-0.31.0/nextmv}/run.py +390 -53
  24. {nextmv-0.30.0/nextmv/cloud → nextmv-0.31.0/nextmv}/safe.py +35 -3
  25. {nextmv-0.30.0/nextmv/cloud → nextmv-0.31.0/nextmv}/status.py +9 -9
  26. {nextmv-0.30.0 → nextmv-0.31.0}/pyproject.toml +4 -0
  27. {nextmv-0.30.0 → nextmv-0.31.0}/tests/cloud/test_package.py +1 -1
  28. nextmv-0.31.0/tests/local/test_application.py +781 -0
  29. nextmv-0.31.0/tests/local/test_executor.py +696 -0
  30. nextmv-0.31.0/tests/local/test_runner.py +396 -0
  31. nextmv-0.31.0/tests/test_entrypoint/__init__.py +0 -0
  32. {nextmv-0.30.0/tests/cloud → nextmv-0.31.0/tests}/test_manifest.py +1 -1
  33. {nextmv-0.30.0 → nextmv-0.31.0}/tests/test_options.py +0 -2
  34. nextmv-0.31.0/tests/test_polling.py +75 -0
  35. {nextmv-0.30.0/tests/cloud → nextmv-0.31.0/tests}/test_run.py +1 -1
  36. nextmv-0.30.0/tests/cloud/test_safe_name_id.py → nextmv-0.31.0/tests/test_safe.py +2 -2
  37. nextmv-0.30.0/nextmv/__about__.py +0 -1
  38. nextmv-0.30.0/nextmv/__init__.py +0 -45
  39. nextmv-0.30.0/tests/cloud/test_application.py +0 -181
  40. {nextmv-0.30.0 → nextmv-0.31.0}/.gitignore +0 -0
  41. {nextmv-0.30.0 → nextmv-0.31.0}/LICENSE +0 -0
  42. {nextmv-0.30.0 → nextmv-0.31.0}/README.md +0 -0
  43. {nextmv-0.30.0 → nextmv-0.31.0}/nextmv/__entrypoint__.py +0 -0
  44. {nextmv-0.30.0 → nextmv-0.31.0}/nextmv/_serialization.py +0 -0
  45. {nextmv-0.30.0 → nextmv-0.31.0}/nextmv/base_model.py +0 -0
  46. {nextmv-0.30.0 → nextmv-0.31.0}/nextmv/cloud/acceptance_test.py +0 -0
  47. {nextmv-0.30.0 → nextmv-0.31.0}/nextmv/cloud/batch_experiment.py +0 -0
  48. {nextmv-0.30.0 → nextmv-0.31.0}/nextmv/cloud/client.py +0 -0
  49. {nextmv-0.30.0 → nextmv-0.31.0}/nextmv/cloud/instance.py +0 -0
  50. {nextmv-0.30.0 → nextmv-0.31.0}/nextmv/cloud/scenario.py +0 -0
  51. {nextmv-0.30.0 → nextmv-0.31.0}/nextmv/cloud/secrets.py +0 -0
  52. {nextmv-0.30.0 → nextmv-0.31.0}/nextmv/cloud/version.py +0 -0
  53. {nextmv-0.30.0 → nextmv-0.31.0}/nextmv/default_app/README.md +0 -0
  54. {nextmv-0.30.0 → nextmv-0.31.0}/nextmv/default_app/requirements.txt +0 -0
  55. {nextmv-0.30.0 → nextmv-0.31.0}/nextmv/default_app/src/__init__.py +0 -0
  56. {nextmv-0.30.0 → nextmv-0.31.0}/nextmv/default_app/src/visuals.py +0 -0
  57. {nextmv-0.30.0 → nextmv-0.31.0}/nextmv/deprecated.py +0 -0
  58. {nextmv-0.30.0 → nextmv-0.31.0}/nextmv/logger.py +0 -0
  59. {nextmv-0.30.0 → nextmv-0.31.0}/nextmv/model.py +0 -0
  60. {nextmv-0.30.0 → nextmv-0.31.0}/nextmv/options.py +0 -0
  61. {nextmv-0.30.0 → nextmv-0.31.0}/tests/__init__.py +0 -0
  62. {nextmv-0.30.0 → nextmv-0.31.0}/tests/cloud/__init__.py +0 -0
  63. {nextmv-0.30.0 → nextmv-0.31.0}/tests/cloud/app.yaml +0 -0
  64. {nextmv-0.30.0 → nextmv-0.31.0}/tests/cloud/test_client.py +0 -0
  65. {nextmv-0.30.0 → nextmv-0.31.0}/tests/cloud/test_scenario.py +0 -0
  66. {nextmv-0.30.0/tests/scripts → nextmv-0.31.0/tests/local}/__init__.py +0 -0
  67. {nextmv-0.30.0/tests/test_entrypoint → nextmv-0.31.0/tests/scripts}/__init__.py +0 -0
  68. {nextmv-0.30.0 → nextmv-0.31.0}/tests/scripts/options1.py +0 -0
  69. {nextmv-0.30.0 → nextmv-0.31.0}/tests/scripts/options2.py +0 -0
  70. {nextmv-0.30.0 → nextmv-0.31.0}/tests/scripts/options3.py +0 -0
  71. {nextmv-0.30.0 → nextmv-0.31.0}/tests/scripts/options4.py +0 -0
  72. {nextmv-0.30.0 → nextmv-0.31.0}/tests/scripts/options5.py +0 -0
  73. {nextmv-0.30.0 → nextmv-0.31.0}/tests/scripts/options6.py +0 -0
  74. {nextmv-0.30.0 → nextmv-0.31.0}/tests/scripts/options7.py +0 -0
  75. {nextmv-0.30.0 → nextmv-0.31.0}/tests/scripts/options_deprecated.py +0 -0
  76. {nextmv-0.30.0 → nextmv-0.31.0}/tests/test_base_model.py +0 -0
  77. {nextmv-0.30.0 → nextmv-0.31.0}/tests/test_entrypoint/test_entrypoint.py +0 -0
  78. {nextmv-0.30.0 → nextmv-0.31.0}/tests/test_input.py +0 -0
  79. {nextmv-0.30.0 → nextmv-0.31.0}/tests/test_inputs/test_data.csv +0 -0
  80. {nextmv-0.30.0 → nextmv-0.31.0}/tests/test_inputs/test_data.json +0 -0
  81. {nextmv-0.30.0 → nextmv-0.31.0}/tests/test_inputs/test_data.txt +0 -0
  82. {nextmv-0.30.0 → nextmv-0.31.0}/tests/test_logger.py +0 -0
  83. {nextmv-0.30.0 → nextmv-0.31.0}/tests/test_model.py +0 -0
  84. {nextmv-0.30.0 → nextmv-0.31.0}/tests/test_output.py +0 -0
  85. {nextmv-0.30.0 → nextmv-0.31.0}/tests/test_serialization.py +0 -0
  86. {nextmv-0.30.0 → nextmv-0.31.0}/tests/test_version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nextmv
3
- Version: 0.30.0
3
+ Version: 0.31.0
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/
@@ -224,13 +224,17 @@ Requires-Dist: pyyaml>=6.0.1
224
224
  Requires-Dist: requests>=2.31.0
225
225
  Requires-Dist: urllib3>=2.1.0
226
226
  Provides-Extra: all
227
+ Requires-Dist: folium>=0.20.0; extra == 'all'
227
228
  Requires-Dist: mlflow>=2.17.2; extra == 'all'
229
+ Requires-Dist: plotly>=6.0.1; extra == 'all'
228
230
  Provides-Extra: dev
229
231
  Requires-Dist: build>=1.0.3; extra == 'dev'
232
+ Requires-Dist: folium>=0.20.0; extra == 'dev'
230
233
  Requires-Dist: mlflow>=2.19.0; extra == 'dev'
231
234
  Requires-Dist: nextroute>=1.11.1; extra == 'dev'
232
235
  Requires-Dist: openpyxl>=3.1.5; extra == 'dev'
233
236
  Requires-Dist: pandas>=2.2.3; extra == 'dev'
237
+ Requires-Dist: plotly>=6.0.1; extra == 'dev'
234
238
  Requires-Dist: pydantic>=2.5.2; extra == 'dev'
235
239
  Requires-Dist: pyyaml>=6.0.1; extra == 'dev'
236
240
  Requires-Dist: requests>=2.31.0; extra == 'dev'
@@ -0,0 +1 @@
1
+ __version__ = "v0.31.0"
@@ -0,0 +1,85 @@
1
+ """Nextmv Python SDK."""
2
+
3
+ from .__about__ import __version__
4
+ from .base_model import BaseModel as BaseModel
5
+ from .base_model import from_dict as from_dict
6
+ from .input import DEFAULT_INPUT_JSON_FILE as DEFAULT_INPUT_JSON_FILE
7
+ from .input import INPUTS_KEY as INPUTS_KEY
8
+ from .input import DataFile as DataFile
9
+ from .input import Input as Input
10
+ from .input import InputFormat as InputFormat
11
+ from .input import InputLoader as InputLoader
12
+ from .input import LocalInputLoader as LocalInputLoader
13
+ from .input import csv_data_file as csv_data_file
14
+ from .input import json_data_file as json_data_file
15
+ from .input import load as load
16
+ from .input import load_local as load_local
17
+ from .input import text_data_file as text_data_file
18
+ from .logger import log as log
19
+ from .logger import redirect_stdout as redirect_stdout
20
+ from .logger import reset_stdout as reset_stdout
21
+ from .manifest import MANIFEST_FILE_NAME as MANIFEST_FILE_NAME
22
+ from .manifest import Manifest as Manifest
23
+ from .manifest import ManifestBuild as ManifestBuild
24
+ from .manifest import ManifestOption as ManifestOption
25
+ from .manifest import ManifestPython as ManifestPython
26
+ from .manifest import ManifestPythonModel as ManifestPythonModel
27
+ from .manifest import ManifestRuntime as ManifestRuntime
28
+ from .manifest import ManifestType as ManifestType
29
+ from .model import Model as Model
30
+ from .model import ModelConfiguration as ModelConfiguration
31
+ from .options import Option as Option
32
+ from .options import Options as Options
33
+ from .options import Parameter as Parameter
34
+ from .output import ASSETS_KEY as ASSETS_KEY
35
+ from .output import DEFAULT_OUTPUT_JSON_FILE as DEFAULT_OUTPUT_JSON_FILE
36
+ from .output import LOGS_FILE as LOGS_FILE
37
+ from .output import LOGS_KEY as LOGS_KEY
38
+ from .output import OUTPUTS_KEY as OUTPUTS_KEY
39
+ from .output import SOLUTIONS_KEY as SOLUTIONS_KEY
40
+ from .output import STATISTICS_KEY as STATISTICS_KEY
41
+ from .output import Asset as Asset
42
+ from .output import DataPoint as DataPoint
43
+ from .output import LocalOutputWriter as LocalOutputWriter
44
+ from .output import Output as Output
45
+ from .output import OutputFormat as OutputFormat
46
+ from .output import OutputWriter as OutputWriter
47
+ from .output import ResultStatistics as ResultStatistics
48
+ from .output import RunStatistics as RunStatistics
49
+ from .output import Series as Series
50
+ from .output import SeriesData as SeriesData
51
+ from .output import SolutionFile as SolutionFile
52
+ from .output import Statistics as Statistics
53
+ from .output import Visual as Visual
54
+ from .output import VisualSchema as VisualSchema
55
+ from .output import csv_solution_file as csv_solution_file
56
+ from .output import json_solution_file as json_solution_file
57
+ from .output import text_solution_file as text_solution_file
58
+ from .output import write as write
59
+ from .output import write_local as write_local
60
+ from .polling import DEFAULT_POLLING_OPTIONS as DEFAULT_POLLING_OPTIONS
61
+ from .polling import PollingOptions as PollingOptions
62
+ from .polling import poll as poll
63
+ from .run import ErrorLog as ErrorLog
64
+ from .run import ExternalRunResult as ExternalRunResult
65
+ from .run import Format as Format
66
+ from .run import FormatInput as FormatInput
67
+ from .run import FormatOutput as FormatOutput
68
+ from .run import Metadata as Metadata
69
+ from .run import RunConfiguration as RunConfiguration
70
+ from .run import RunInformation as RunInformation
71
+ from .run import RunLog as RunLog
72
+ from .run import RunQueuing as RunQueuing
73
+ from .run import RunResult as RunResult
74
+ from .run import RunType as RunType
75
+ from .run import RunTypeConfiguration as RunTypeConfiguration
76
+ from .run import TrackedRun as TrackedRun
77
+ from .run import TrackedRunStatus as TrackedRunStatus
78
+ from .run import run_duration as run_duration
79
+ from .safe import safe_id as safe_id
80
+ from .safe import safe_name_and_id as safe_name_and_id
81
+ from .status import Status as Status
82
+ from .status import StatusV2 as StatusV2
83
+
84
+ VERSION = __version__
85
+ """The version of the Nextmv Python SDK."""
@@ -1,5 +1,41 @@
1
1
  """Functionality for interacting with the Nextmv Cloud."""
2
2
 
3
+ # These imports are kept for backwards compatibility but the preferred import path is
4
+ # from nextmv directly. These imports will be removed in a future release.
5
+ from nextmv.manifest import MANIFEST_FILE_NAME as MANIFEST_FILE_NAME
6
+ from nextmv.manifest import Manifest as Manifest
7
+ from nextmv.manifest import ManifestBuild as ManifestBuild
8
+ from nextmv.manifest import ManifestContent as ManifestContent
9
+ from nextmv.manifest import ManifestContentMultiFile as ManifestContentMultiFile
10
+ from nextmv.manifest import ManifestContentMultiFileInput as ManifestContentMultiFileInput
11
+ from nextmv.manifest import ManifestContentMultiFileOutput as ManifestContentMultiFileOutput
12
+ from nextmv.manifest import ManifestOption as ManifestOption
13
+ from nextmv.manifest import ManifestPython as ManifestPython
14
+ from nextmv.manifest import ManifestPythonModel as ManifestPythonModel
15
+ from nextmv.manifest import ManifestRuntime as ManifestRuntime
16
+ from nextmv.manifest import ManifestType as ManifestType
17
+ from nextmv.polling import PollingOptions as PollingOptions
18
+ from nextmv.run import ErrorLog as ErrorLog
19
+ from nextmv.run import ExternalRunResult as ExternalRunResult
20
+ from nextmv.run import Format as Format
21
+ from nextmv.run import FormatInput as FormatInput
22
+ from nextmv.run import FormatOutput as FormatOutput
23
+ from nextmv.run import Metadata as Metadata
24
+ from nextmv.run import RunConfiguration as RunConfiguration
25
+ from nextmv.run import RunInformation as RunInformation
26
+ from nextmv.run import RunLog as RunLog
27
+ from nextmv.run import RunQueuing as RunQueuing
28
+ from nextmv.run import RunResult as RunResult
29
+ from nextmv.run import RunType as RunType
30
+ from nextmv.run import RunTypeConfiguration as RunTypeConfiguration
31
+ from nextmv.run import TrackedRun as TrackedRun
32
+ from nextmv.run import TrackedRunStatus as TrackedRunStatus
33
+ from nextmv.run import run_duration as run_duration
34
+ from nextmv.safe import safe_id as safe_id
35
+ from nextmv.safe import safe_name_and_id as safe_name_and_id
36
+ from nextmv.status import Status as Status
37
+ from nextmv.status import StatusV2 as StatusV2
38
+
3
39
  from .acceptance_test import AcceptanceTest as AcceptanceTest
4
40
  from .acceptance_test import AcceptanceTestResults as AcceptanceTestResults
5
41
  from .acceptance_test import Comparison as Comparison
@@ -19,9 +55,6 @@ from .account import Account as Account
19
55
  from .account import Queue as Queue
20
56
  from .account import QueuedRun as QueuedRun
21
57
  from .application import Application as Application
22
- from .application import DownloadURL as DownloadURL
23
- from .application import PollingOptions as PollingOptions
24
- from .application import UploadURL as UploadURL
25
58
  from .application import poll as poll
26
59
  from .batch_experiment import BatchExperiment as BatchExperiment
27
60
  from .batch_experiment import BatchExperimentInformation as BatchExperimentInformation
@@ -34,34 +67,6 @@ from .input_set import InputSet as InputSet
34
67
  from .input_set import ManagedInput as ManagedInput
35
68
  from .instance import Instance as Instance
36
69
  from .instance import InstanceConfiguration as InstanceConfiguration
37
- from .manifest import MANIFEST_FILE_NAME as MANIFEST_FILE_NAME
38
- from .manifest import Manifest as Manifest
39
- from .manifest import ManifestBuild as ManifestBuild
40
- from .manifest import ManifestContent as ManifestContent
41
- from .manifest import ManifestContentMultiFile as ManifestContentMultiFile
42
- from .manifest import ManifestContentMultiFileInput as ManifestContentMultiFileInput
43
- from .manifest import ManifestContentMultiFileOutput as ManifestContentMultiFileOutput
44
- from .manifest import ManifestOption as ManifestOption
45
- from .manifest import ManifestPython as ManifestPython
46
- from .manifest import ManifestPythonModel as ManifestPythonModel
47
- from .manifest import ManifestRuntime as ManifestRuntime
48
- from .manifest import ManifestType as ManifestType
49
- from .run import ErrorLog as ErrorLog
50
- from .run import ExternalRunResult as ExternalRunResult
51
- from .run import Format as Format
52
- from .run import FormatInput as FormatInput
53
- from .run import FormatOutput as FormatOutput
54
- from .run import Metadata as Metadata
55
- from .run import RunConfiguration as RunConfiguration
56
- from .run import RunInformation as RunInformation
57
- from .run import RunLog as RunLog
58
- from .run import RunQueuing as RunQueuing
59
- from .run import RunResult as RunResult
60
- from .run import RunType as RunType
61
- from .run import RunTypeConfiguration as RunTypeConfiguration
62
- from .run import TrackedRun as TrackedRun
63
- from .run import TrackedRunStatus as TrackedRunStatus
64
- from .run import run_duration as run_duration
65
70
  from .scenario import Scenario as Scenario
66
71
  from .scenario import ScenarioConfiguration as ScenarioConfiguration
67
72
  from .scenario import ScenarioInput as ScenarioInput
@@ -70,8 +75,8 @@ from .secrets import Secret as Secret
70
75
  from .secrets import SecretsCollection as SecretsCollection
71
76
  from .secrets import SecretsCollectionSummary as SecretsCollectionSummary
72
77
  from .secrets import SecretType as SecretType
73
- from .status import Status as Status
74
- from .status import StatusV2 as StatusV2
78
+ from .url import DownloadURL as DownloadURL
79
+ from .url import UploadURL as UploadURL
75
80
  from .version import Version as Version
76
81
  from .version import VersionExecutable as VersionExecutable
77
82
  from .version import VersionExecutableRequirements as VersionExecutableRequirements
@@ -20,7 +20,7 @@ from datetime import datetime
20
20
 
21
21
  from nextmv.base_model import BaseModel
22
22
  from nextmv.cloud.client import Client
23
- from nextmv.cloud.status import Status, StatusV2
23
+ from nextmv.status import Status, StatusV2
24
24
 
25
25
 
26
26
  class QueuedRun(BaseModel):