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.
Files changed (89) hide show
  1. {nextmv-0.31.0 → nextmv-0.33.0}/PKG-INFO +1 -1
  2. nextmv-0.33.0/nextmv/__about__.py +1 -0
  3. {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/__init__.py +5 -9
  4. {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/cloud/__init__.py +7 -0
  5. {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/cloud/acceptance_test.py +69 -5
  6. {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/cloud/application.py +294 -98
  7. {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/cloud/batch_experiment.py +7 -1
  8. nextmv-0.33.0/nextmv/cloud/ensemble.py +248 -0
  9. {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/cloud/package.py +62 -24
  10. {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/default_app/README.md +17 -2
  11. {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/default_app/app.yaml +1 -2
  12. nextmv-0.33.0/nextmv/default_app/input.json +5 -0
  13. nextmv-0.33.0/nextmv/default_app/main.py +37 -0
  14. {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/input.py +2 -8
  15. {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/local/application.py +250 -224
  16. {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/local/executor.py +9 -13
  17. nextmv-0.33.0/nextmv/local/local.py +97 -0
  18. {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/local/runner.py +3 -41
  19. {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/manifest.py +61 -2
  20. {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/output.py +6 -26
  21. {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/run.py +476 -108
  22. {nextmv-0.31.0 → nextmv-0.33.0}/tests/local/test_application.py +2 -1
  23. {nextmv-0.31.0 → nextmv-0.33.0}/tests/local/test_executor.py +3 -6
  24. {nextmv-0.31.0 → nextmv-0.33.0}/tests/local/test_runner.py +3 -2
  25. {nextmv-0.31.0 → nextmv-0.33.0}/tests/test_manifest.py +5 -0
  26. nextmv-0.33.0/tests/test_run.py +208 -0
  27. nextmv-0.31.0/nextmv/__about__.py +0 -1
  28. nextmv-0.31.0/tests/test_run.py +0 -18
  29. {nextmv-0.31.0 → nextmv-0.33.0}/.gitignore +0 -0
  30. {nextmv-0.31.0 → nextmv-0.33.0}/LICENSE +0 -0
  31. {nextmv-0.31.0 → nextmv-0.33.0}/README.md +0 -0
  32. {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/__entrypoint__.py +0 -0
  33. {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/_serialization.py +0 -0
  34. {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/base_model.py +0 -0
  35. {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/cloud/account.py +0 -0
  36. {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/cloud/client.py +0 -0
  37. {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/cloud/input_set.py +0 -0
  38. {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/cloud/instance.py +0 -0
  39. {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/cloud/scenario.py +0 -0
  40. {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/cloud/secrets.py +0 -0
  41. {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/cloud/url.py +0 -0
  42. {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/cloud/version.py +0 -0
  43. {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/default_app/.gitignore +0 -0
  44. {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/default_app/requirements.txt +0 -0
  45. {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/default_app/src/__init__.py +0 -0
  46. {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/default_app/src/main.py +0 -0
  47. {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/default_app/src/visuals.py +0 -0
  48. {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/deprecated.py +0 -0
  49. {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/local/__init__.py +0 -0
  50. {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/local/geojson_handler.py +0 -0
  51. {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/local/plotly_handler.py +0 -0
  52. {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/logger.py +0 -0
  53. {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/model.py +0 -0
  54. {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/options.py +0 -0
  55. {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/polling.py +0 -0
  56. {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/safe.py +0 -0
  57. {nextmv-0.31.0 → nextmv-0.33.0}/nextmv/status.py +0 -0
  58. {nextmv-0.31.0 → nextmv-0.33.0}/pyproject.toml +0 -0
  59. {nextmv-0.31.0 → nextmv-0.33.0}/tests/__init__.py +0 -0
  60. {nextmv-0.31.0 → nextmv-0.33.0}/tests/cloud/__init__.py +0 -0
  61. {nextmv-0.31.0 → nextmv-0.33.0}/tests/cloud/app.yaml +0 -0
  62. {nextmv-0.31.0 → nextmv-0.33.0}/tests/cloud/test_client.py +0 -0
  63. {nextmv-0.31.0 → nextmv-0.33.0}/tests/cloud/test_package.py +0 -0
  64. {nextmv-0.31.0 → nextmv-0.33.0}/tests/cloud/test_scenario.py +0 -0
  65. {nextmv-0.31.0 → nextmv-0.33.0}/tests/local/__init__.py +0 -0
  66. {nextmv-0.31.0 → nextmv-0.33.0}/tests/scripts/__init__.py +0 -0
  67. {nextmv-0.31.0 → nextmv-0.33.0}/tests/scripts/options1.py +0 -0
  68. {nextmv-0.31.0 → nextmv-0.33.0}/tests/scripts/options2.py +0 -0
  69. {nextmv-0.31.0 → nextmv-0.33.0}/tests/scripts/options3.py +0 -0
  70. {nextmv-0.31.0 → nextmv-0.33.0}/tests/scripts/options4.py +0 -0
  71. {nextmv-0.31.0 → nextmv-0.33.0}/tests/scripts/options5.py +0 -0
  72. {nextmv-0.31.0 → nextmv-0.33.0}/tests/scripts/options6.py +0 -0
  73. {nextmv-0.31.0 → nextmv-0.33.0}/tests/scripts/options7.py +0 -0
  74. {nextmv-0.31.0 → nextmv-0.33.0}/tests/scripts/options_deprecated.py +0 -0
  75. {nextmv-0.31.0 → nextmv-0.33.0}/tests/test_base_model.py +0 -0
  76. {nextmv-0.31.0 → nextmv-0.33.0}/tests/test_entrypoint/__init__.py +0 -0
  77. {nextmv-0.31.0 → nextmv-0.33.0}/tests/test_entrypoint/test_entrypoint.py +0 -0
  78. {nextmv-0.31.0 → nextmv-0.33.0}/tests/test_input.py +0 -0
  79. {nextmv-0.31.0 → nextmv-0.33.0}/tests/test_inputs/test_data.csv +0 -0
  80. {nextmv-0.31.0 → nextmv-0.33.0}/tests/test_inputs/test_data.json +0 -0
  81. {nextmv-0.31.0 → nextmv-0.33.0}/tests/test_inputs/test_data.txt +0 -0
  82. {nextmv-0.31.0 → nextmv-0.33.0}/tests/test_logger.py +0 -0
  83. {nextmv-0.31.0 → nextmv-0.33.0}/tests/test_model.py +0 -0
  84. {nextmv-0.31.0 → nextmv-0.33.0}/tests/test_options.py +0 -0
  85. {nextmv-0.31.0 → nextmv-0.33.0}/tests/test_output.py +0 -0
  86. {nextmv-0.31.0 → nextmv-0.33.0}/tests/test_polling.py +0 -0
  87. {nextmv-0.31.0 → nextmv-0.33.0}/tests/test_safe.py +0 -0
  88. {nextmv-0.31.0 → nextmv-0.33.0}/tests/test_serialization.py +0 -0
  89. {nextmv-0.31.0 → nextmv-0.33.0}/tests/test_version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nextmv
3
- Version: 0.31.0
3
+ Version: 0.33.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/
@@ -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 : ToleranceType
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, ToleranceType
276
- >>> tolerance = MetricTolerance(type=ToleranceType.absolute, value=0.1)
339
+ >>> from nextmv.cloud import MetricTolerance, MetricToleranceType
340
+ >>> tolerance = MetricTolerance(type=MetricToleranceType.absolute, value=0.1)
277
341
  >>> tolerance.type
278
- <ToleranceType.absolute: 'absolute'>
342
+ <MetricToleranceType.absolute: 'absolute'>
279
343
  >>> tolerance.value
280
344
  0.1
281
345
  """
282
346
 
283
- type: ToleranceType
347
+ type: MetricToleranceType
284
348
  """Type of tolerance."""
285
349
  value: float
286
350
  """Value of the tolerance."""