nextmv 0.31.0__tar.gz → 0.33.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.
- {nextmv-0.31.0 → nextmv-0.33.0}/PKG-INFO +1 -1
- nextmv-0.33.0/nextmv/__about__.py +1 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/__init__.py +5 -9
- {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/cloud/__init__.py +7 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/cloud/acceptance_test.py +69 -5
- {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/cloud/application.py +294 -98
- {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/cloud/batch_experiment.py +7 -1
- nextmv-0.33.0/nextmv/cloud/ensemble.py +248 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/cloud/package.py +62 -24
- {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/default_app/README.md +17 -2
- {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/default_app/app.yaml +1 -2
- nextmv-0.33.0/nextmv/default_app/input.json +5 -0
- nextmv-0.33.0/nextmv/default_app/main.py +37 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/input.py +2 -8
- {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/local/application.py +250 -224
- {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/local/executor.py +9 -13
- nextmv-0.33.0/nextmv/local/local.py +97 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/local/runner.py +3 -41
- {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/manifest.py +61 -2
- {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/output.py +6 -26
- {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/run.py +476 -108
- {nextmv-0.31.0 → nextmv-0.33.0}/tests/local/test_application.py +2 -1
- {nextmv-0.31.0 → nextmv-0.33.0}/tests/local/test_executor.py +3 -6
- {nextmv-0.31.0 → nextmv-0.33.0}/tests/local/test_runner.py +3 -2
- {nextmv-0.31.0 → nextmv-0.33.0}/tests/test_manifest.py +5 -0
- nextmv-0.33.0/tests/test_run.py +208 -0
- nextmv-0.31.0/nextmv/__about__.py +0 -1
- nextmv-0.31.0/tests/test_run.py +0 -18
- {nextmv-0.31.0 → nextmv-0.33.0}/.gitignore +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/LICENSE +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/README.md +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/__entrypoint__.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/_serialization.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/base_model.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/cloud/account.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/cloud/client.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/cloud/input_set.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/cloud/instance.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/cloud/scenario.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/cloud/secrets.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/cloud/url.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/cloud/version.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/default_app/.gitignore +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/default_app/requirements.txt +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/default_app/src/__init__.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/default_app/src/main.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/default_app/src/visuals.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/deprecated.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/local/__init__.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/local/geojson_handler.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/local/plotly_handler.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/logger.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/model.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/options.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/polling.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/safe.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/status.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/pyproject.toml +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/tests/__init__.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/tests/cloud/__init__.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/tests/cloud/app.yaml +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/tests/cloud/test_client.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/tests/cloud/test_package.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/tests/cloud/test_scenario.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/tests/local/__init__.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/tests/scripts/__init__.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/tests/scripts/options1.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/tests/scripts/options2.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/tests/scripts/options3.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/tests/scripts/options4.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/tests/scripts/options5.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/tests/scripts/options6.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/tests/scripts/options7.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/tests/scripts/options_deprecated.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/tests/test_base_model.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/tests/test_entrypoint/__init__.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/tests/test_entrypoint/test_entrypoint.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/tests/test_input.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/tests/test_inputs/test_data.csv +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/tests/test_inputs/test_data.json +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/tests/test_inputs/test_data.txt +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/tests/test_logger.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/tests/test_model.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/tests/test_options.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/tests/test_output.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/tests/test_polling.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/tests/test_safe.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/tests/test_serialization.py +0 -0
- {nextmv-0.31.0 → nextmv-0.33.0}/tests/test_version.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "v0.33.0"
|
|
@@ -3,8 +3,6 @@
|
|
|
3
3
|
from .__about__ import __version__
|
|
4
4
|
from .base_model import BaseModel as BaseModel
|
|
5
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
6
|
from .input import DataFile as DataFile
|
|
9
7
|
from .input import Input as Input
|
|
10
8
|
from .input import InputFormat as InputFormat
|
|
@@ -23,6 +21,7 @@ from .manifest import Manifest as Manifest
|
|
|
23
21
|
from .manifest import ManifestBuild as ManifestBuild
|
|
24
22
|
from .manifest import ManifestOption as ManifestOption
|
|
25
23
|
from .manifest import ManifestPython as ManifestPython
|
|
24
|
+
from .manifest import ManifestPythonArch as ManifestPythonArch
|
|
26
25
|
from .manifest import ManifestPythonModel as ManifestPythonModel
|
|
27
26
|
from .manifest import ManifestRuntime as ManifestRuntime
|
|
28
27
|
from .manifest import ManifestType as ManifestType
|
|
@@ -31,13 +30,6 @@ from .model import ModelConfiguration as ModelConfiguration
|
|
|
31
30
|
from .options import Option as Option
|
|
32
31
|
from .options import Options as Options
|
|
33
32
|
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
33
|
from .output import Asset as Asset
|
|
42
34
|
from .output import DataPoint as DataPoint
|
|
43
35
|
from .output import LocalOutputWriter as LocalOutputWriter
|
|
@@ -66,13 +58,17 @@ from .run import Format as Format
|
|
|
66
58
|
from .run import FormatInput as FormatInput
|
|
67
59
|
from .run import FormatOutput as FormatOutput
|
|
68
60
|
from .run import Metadata as Metadata
|
|
61
|
+
from .run import OptionsSummaryItem as OptionsSummaryItem
|
|
62
|
+
from .run import Run as Run
|
|
69
63
|
from .run import RunConfiguration as RunConfiguration
|
|
70
64
|
from .run import RunInformation as RunInformation
|
|
65
|
+
from .run import RunInfoStatistics as RunInfoStatistics
|
|
71
66
|
from .run import RunLog as RunLog
|
|
72
67
|
from .run import RunQueuing as RunQueuing
|
|
73
68
|
from .run import RunResult as RunResult
|
|
74
69
|
from .run import RunType as RunType
|
|
75
70
|
from .run import RunTypeConfiguration as RunTypeConfiguration
|
|
71
|
+
from .run import StatisticsIndicator as StatisticsIndicator
|
|
76
72
|
from .run import TrackedRun as TrackedRun
|
|
77
73
|
from .run import TrackedRunStatus as TrackedRunStatus
|
|
78
74
|
from .run import run_duration as run_duration
|
|
@@ -47,6 +47,7 @@ from .acceptance_test import MetricParams as MetricParams
|
|
|
47
47
|
from .acceptance_test import MetricResult as MetricResult
|
|
48
48
|
from .acceptance_test import MetricStatistics as MetricStatistics
|
|
49
49
|
from .acceptance_test import MetricTolerance as MetricTolerance
|
|
50
|
+
from .acceptance_test import MetricToleranceType as MetricToleranceType
|
|
50
51
|
from .acceptance_test import MetricType as MetricType
|
|
51
52
|
from .acceptance_test import ResultStatistics as ResultStatistics
|
|
52
53
|
from .acceptance_test import StatisticType as StatisticType
|
|
@@ -63,6 +64,12 @@ from .batch_experiment import BatchExperimentRun as BatchExperimentRun
|
|
|
63
64
|
from .batch_experiment import ExperimentStatus as ExperimentStatus
|
|
64
65
|
from .client import Client as Client
|
|
65
66
|
from .client import get_size as get_size
|
|
67
|
+
from .ensemble import EnsembleDefinition as EnsembleDefinition
|
|
68
|
+
from .ensemble import EvaluationRule as EvaluationRule
|
|
69
|
+
from .ensemble import RuleObjective as RuleObjective
|
|
70
|
+
from .ensemble import RuleTolerance as RuleTolerance
|
|
71
|
+
from .ensemble import RuleToleranceType as RuleToleranceType
|
|
72
|
+
from .ensemble import RunGroup as RunGroup
|
|
66
73
|
from .input_set import InputSet as InputSet
|
|
67
74
|
from .input_set import ManagedInput as ManagedInput
|
|
68
75
|
from .instance import Instance as Instance
|
|
@@ -47,6 +47,7 @@ from typing import Optional
|
|
|
47
47
|
|
|
48
48
|
from nextmv.base_model import BaseModel
|
|
49
49
|
from nextmv.cloud.batch_experiment import ExperimentStatus
|
|
50
|
+
from nextmv.deprecated import deprecated
|
|
50
51
|
|
|
51
52
|
|
|
52
53
|
class MetricType(str, Enum):
|
|
@@ -214,6 +215,9 @@ class Comparison(str, Enum):
|
|
|
214
215
|
|
|
215
216
|
class ToleranceType(str, Enum):
|
|
216
217
|
"""
|
|
218
|
+
!!! warning
|
|
219
|
+
`ToleranceType` is deprecated, use `MetricToleranceType` instead.
|
|
220
|
+
|
|
217
221
|
Type of tolerance used for a metric.
|
|
218
222
|
|
|
219
223
|
You can import the `ToleranceType` class directly from `cloud`:
|
|
@@ -242,6 +246,66 @@ class ToleranceType(str, Enum):
|
|
|
242
246
|
<ToleranceType.absolute: 'absolute'>
|
|
243
247
|
"""
|
|
244
248
|
|
|
249
|
+
undefined = ""
|
|
250
|
+
"""ToleranceType is deprecated, please use MetricToleranceType instead.
|
|
251
|
+
Undefined tolerance type."""
|
|
252
|
+
absolute = "absolute"
|
|
253
|
+
"""ToleranceType is deprecated, please use MetricToleranceType instead.
|
|
254
|
+
Absolute tolerance type."""
|
|
255
|
+
relative = "relative"
|
|
256
|
+
"""ToleranceType is deprecated, please use MetricToleranceType instead.
|
|
257
|
+
Relative tolerance type."""
|
|
258
|
+
|
|
259
|
+
|
|
260
|
+
# Override __getattribute__ to emit deprecation warnings when enum values are accessed
|
|
261
|
+
_original_getattribute = ToleranceType.__class__.__getattribute__
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
def _deprecated_getattribute(cls, name: str):
|
|
265
|
+
# Only emit deprecation warning if this is specifically the ToleranceType class
|
|
266
|
+
if cls is ToleranceType and name in ("undefined", "absolute", "relative"):
|
|
267
|
+
deprecated(
|
|
268
|
+
f"ToleranceType.{name}",
|
|
269
|
+
"ToleranceType is deprecated and will be removed in a future version. "
|
|
270
|
+
"Please use MetricToleranceType instead",
|
|
271
|
+
)
|
|
272
|
+
|
|
273
|
+
return _original_getattribute(cls, name)
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
ToleranceType.__class__.__getattribute__ = _deprecated_getattribute
|
|
277
|
+
|
|
278
|
+
|
|
279
|
+
class MetricToleranceType(str, Enum):
|
|
280
|
+
"""
|
|
281
|
+
Type of tolerance used for a metric.
|
|
282
|
+
|
|
283
|
+
You can import the `MetricToleranceType` class directly from `cloud`:
|
|
284
|
+
|
|
285
|
+
```python
|
|
286
|
+
from nextmv.cloud import MetricToleranceType
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
This enumeration defines the different types of tolerances that can be used
|
|
290
|
+
when comparing metrics in acceptance tests.
|
|
291
|
+
|
|
292
|
+
Attributes
|
|
293
|
+
----------
|
|
294
|
+
undefined : str
|
|
295
|
+
Undefined tolerance type (empty string).
|
|
296
|
+
absolute : str
|
|
297
|
+
Absolute tolerance type, using a fixed value.
|
|
298
|
+
relative : str
|
|
299
|
+
Relative tolerance type, using a percentage.
|
|
300
|
+
|
|
301
|
+
Examples
|
|
302
|
+
--------
|
|
303
|
+
>>> from nextmv.cloud import MetricToleranceType
|
|
304
|
+
>>> tol_type = MetricToleranceType.absolute
|
|
305
|
+
>>> tol_type
|
|
306
|
+
<MetricToleranceType.absolute: 'absolute'>
|
|
307
|
+
"""
|
|
308
|
+
|
|
245
309
|
undefined = ""
|
|
246
310
|
"""Undefined tolerance type."""
|
|
247
311
|
absolute = "absolute"
|
|
@@ -265,22 +329,22 @@ class MetricTolerance(BaseModel):
|
|
|
265
329
|
|
|
266
330
|
Attributes
|
|
267
331
|
----------
|
|
268
|
-
type :
|
|
332
|
+
type : MetricToleranceType
|
|
269
333
|
Type of tolerance (absolute or relative).
|
|
270
334
|
value : float
|
|
271
335
|
Value of the tolerance.
|
|
272
336
|
|
|
273
337
|
Examples
|
|
274
338
|
--------
|
|
275
|
-
>>> from nextmv.cloud import MetricTolerance,
|
|
276
|
-
>>> tolerance = MetricTolerance(type=
|
|
339
|
+
>>> from nextmv.cloud import MetricTolerance, MetricToleranceType
|
|
340
|
+
>>> tolerance = MetricTolerance(type=MetricToleranceType.absolute, value=0.1)
|
|
277
341
|
>>> tolerance.type
|
|
278
|
-
<
|
|
342
|
+
<MetricToleranceType.absolute: 'absolute'>
|
|
279
343
|
>>> tolerance.value
|
|
280
344
|
0.1
|
|
281
345
|
"""
|
|
282
346
|
|
|
283
|
-
type:
|
|
347
|
+
type: MetricToleranceType
|
|
284
348
|
"""Type of tolerance."""
|
|
285
349
|
value: float
|
|
286
350
|
"""Value of the tolerance."""
|