nextmv 0.29.5.dev1__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.29.5.dev1 → 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.29.5.dev1 → nextmv-0.31.0}/nextmv/cloud/__init__.py +39 -30
  5. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/nextmv/cloud/acceptance_test.py +2 -51
  6. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/nextmv/cloud/account.py +1 -1
  7. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/nextmv/cloud/application.py +599 -516
  8. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/nextmv/cloud/batch_experiment.py +73 -1
  9. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/nextmv/cloud/input_set.py +1 -1
  10. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/nextmv/cloud/package.py +1 -1
  11. nextmv-0.31.0/nextmv/cloud/url.py +73 -0
  12. nextmv-0.31.0/nextmv/default_app/.gitignore +1 -0
  13. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/nextmv/default_app/app.yaml +2 -0
  14. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/nextmv/default_app/src/main.py +2 -1
  15. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/nextmv/input.py +17 -1
  16. nextmv-0.31.0/nextmv/local/__init__.py +5 -0
  17. nextmv-0.31.0/nextmv/local/application.py +1147 -0
  18. nextmv-0.31.0/nextmv/local/executor.py +718 -0
  19. nextmv-0.31.0/nextmv/local/geojson_handler.py +323 -0
  20. nextmv-0.31.0/nextmv/local/plotly_handler.py +61 -0
  21. nextmv-0.31.0/nextmv/local/runner.py +312 -0
  22. {nextmv-0.29.5.dev1/nextmv/cloud → nextmv-0.31.0/nextmv}/manifest.py +258 -54
  23. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/nextmv/output.py +61 -8
  24. nextmv-0.31.0/nextmv/polling.py +287 -0
  25. {nextmv-0.29.5.dev1/nextmv/cloud → nextmv-0.31.0/nextmv}/run.py +390 -53
  26. {nextmv-0.29.5.dev1/nextmv/cloud → nextmv-0.31.0/nextmv}/safe.py +35 -3
  27. {nextmv-0.29.5.dev1/nextmv/cloud → nextmv-0.31.0/nextmv}/status.py +9 -9
  28. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/pyproject.toml +4 -0
  29. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/tests/cloud/app.yaml +9 -0
  30. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/tests/cloud/test_package.py +1 -1
  31. nextmv-0.31.0/tests/local/test_application.py +781 -0
  32. nextmv-0.31.0/tests/local/test_executor.py +696 -0
  33. nextmv-0.31.0/tests/local/test_runner.py +396 -0
  34. nextmv-0.31.0/tests/test_entrypoint/__init__.py +0 -0
  35. {nextmv-0.29.5.dev1/tests/cloud → nextmv-0.31.0/tests}/test_manifest.py +48 -1
  36. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/tests/test_options.py +0 -2
  37. nextmv-0.31.0/tests/test_polling.py +75 -0
  38. {nextmv-0.29.5.dev1/tests/cloud → nextmv-0.31.0/tests}/test_run.py +1 -1
  39. nextmv-0.29.5.dev1/tests/cloud/test_safe_name_id.py → nextmv-0.31.0/tests/test_safe.py +2 -2
  40. nextmv-0.29.5.dev1/nextmv/__about__.py +0 -1
  41. nextmv-0.29.5.dev1/nextmv/__init__.py +0 -45
  42. nextmv-0.29.5.dev1/tests/cloud/test_application.py +0 -181
  43. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/.gitignore +0 -0
  44. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/LICENSE +0 -0
  45. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/README.md +0 -0
  46. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/nextmv/__entrypoint__.py +0 -0
  47. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/nextmv/_serialization.py +0 -0
  48. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/nextmv/base_model.py +0 -0
  49. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/nextmv/cloud/client.py +0 -0
  50. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/nextmv/cloud/instance.py +0 -0
  51. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/nextmv/cloud/scenario.py +0 -0
  52. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/nextmv/cloud/secrets.py +0 -0
  53. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/nextmv/cloud/version.py +0 -0
  54. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/nextmv/default_app/README.md +0 -0
  55. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/nextmv/default_app/requirements.txt +0 -0
  56. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/nextmv/default_app/src/__init__.py +0 -0
  57. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/nextmv/default_app/src/visuals.py +0 -0
  58. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/nextmv/deprecated.py +0 -0
  59. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/nextmv/logger.py +0 -0
  60. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/nextmv/model.py +0 -0
  61. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/nextmv/options.py +0 -0
  62. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/tests/__init__.py +0 -0
  63. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/tests/cloud/__init__.py +0 -0
  64. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/tests/cloud/test_client.py +0 -0
  65. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/tests/cloud/test_scenario.py +0 -0
  66. {nextmv-0.29.5.dev1/tests/scripts → nextmv-0.31.0/tests/local}/__init__.py +0 -0
  67. {nextmv-0.29.5.dev1/tests/test_entrypoint → nextmv-0.31.0/tests/scripts}/__init__.py +0 -0
  68. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/tests/scripts/options1.py +0 -0
  69. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/tests/scripts/options2.py +0 -0
  70. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/tests/scripts/options3.py +0 -0
  71. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/tests/scripts/options4.py +0 -0
  72. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/tests/scripts/options5.py +0 -0
  73. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/tests/scripts/options6.py +0 -0
  74. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/tests/scripts/options7.py +0 -0
  75. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/tests/scripts/options_deprecated.py +0 -0
  76. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/tests/test_base_model.py +0 -0
  77. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/tests/test_entrypoint/test_entrypoint.py +0 -0
  78. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/tests/test_input.py +0 -0
  79. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/tests/test_inputs/test_data.csv +0 -0
  80. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/tests/test_inputs/test_data.json +0 -0
  81. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/tests/test_inputs/test_data.txt +0 -0
  82. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/tests/test_logger.py +0 -0
  83. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/tests/test_model.py +0 -0
  84. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/tests/test_output.py +0 -0
  85. {nextmv-0.29.5.dev1 → nextmv-0.31.0}/tests/test_serialization.py +0 -0
  86. {nextmv-0.29.5.dev1 → 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.29.5.dev1
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,12 +1,47 @@
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
6
42
  from .acceptance_test import ComparisonInstance as ComparisonInstance
7
43
  from .acceptance_test import DistributionPercentiles as DistributionPercentiles
8
44
  from .acceptance_test import DistributionSummaryStatistics as DistributionSummaryStatistics
9
- from .acceptance_test import ExperimentStatus as ExperimentStatus
10
45
  from .acceptance_test import Metric as Metric
11
46
  from .acceptance_test import MetricParams as MetricParams
12
47
  from .acceptance_test import MetricResult as MetricResult
@@ -20,44 +55,18 @@ from .account import Account as Account
20
55
  from .account import Queue as Queue
21
56
  from .account import QueuedRun as QueuedRun
22
57
  from .application import Application as Application
23
- from .application import DownloadURL as DownloadURL
24
- from .application import PollingOptions as PollingOptions
25
- from .application import UploadURL as UploadURL
26
58
  from .application import poll as poll
27
59
  from .batch_experiment import BatchExperiment as BatchExperiment
28
60
  from .batch_experiment import BatchExperimentInformation as BatchExperimentInformation
29
61
  from .batch_experiment import BatchExperimentMetadata as BatchExperimentMetadata
30
62
  from .batch_experiment import BatchExperimentRun as BatchExperimentRun
63
+ from .batch_experiment import ExperimentStatus as ExperimentStatus
31
64
  from .client import Client as Client
32
65
  from .client import get_size as get_size
33
66
  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 ManifestOption as ManifestOption
41
- from .manifest import ManifestPython as ManifestPython
42
- from .manifest import ManifestPythonModel as ManifestPythonModel
43
- from .manifest import ManifestRuntime as ManifestRuntime
44
- from .manifest import ManifestType as ManifestType
45
- from .run import ErrorLog as ErrorLog
46
- from .run import ExternalRunResult as ExternalRunResult
47
- from .run import Format as Format
48
- from .run import FormatInput as FormatInput
49
- from .run import FormatOutput as FormatOutput
50
- from .run import Metadata as Metadata
51
- from .run import RunConfiguration as RunConfiguration
52
- from .run import RunInformation as RunInformation
53
- from .run import RunLog as RunLog
54
- from .run import RunQueuing as RunQueuing
55
- from .run import RunResult as RunResult
56
- from .run import RunType as RunType
57
- from .run import RunTypeConfiguration as RunTypeConfiguration
58
- from .run import TrackedRun as TrackedRun
59
- from .run import TrackedRunStatus as TrackedRunStatus
60
- from .run import run_duration as run_duration
61
70
  from .scenario import Scenario as Scenario
62
71
  from .scenario import ScenarioConfiguration as ScenarioConfiguration
63
72
  from .scenario import ScenarioInput as ScenarioInput
@@ -66,8 +75,8 @@ from .secrets import Secret as Secret
66
75
  from .secrets import SecretsCollection as SecretsCollection
67
76
  from .secrets import SecretsCollectionSummary as SecretsCollectionSummary
68
77
  from .secrets import SecretType as SecretType
69
- from .status import Status as Status
70
- from .status import StatusV2 as StatusV2
78
+ from .url import DownloadURL as DownloadURL
79
+ from .url import UploadURL as UploadURL
71
80
  from .version import Version as Version
72
81
  from .version import VersionExecutable as VersionExecutable
73
82
  from .version import VersionExecutableRequirements as VersionExecutableRequirements
@@ -46,6 +46,7 @@ from enum import Enum
46
46
  from typing import Optional
47
47
 
48
48
  from nextmv.base_model import BaseModel
49
+ from nextmv.cloud.batch_experiment import ExperimentStatus
49
50
 
50
51
 
51
52
  class MetricType(str, Enum):
@@ -249,56 +250,6 @@ class ToleranceType(str, Enum):
249
250
  """Relative tolerance type."""
250
251
 
251
252
 
252
- class ExperimentStatus(str, Enum):
253
- """
254
- Status of an acceptance test experiment.
255
-
256
- You can import the `ExperimentStatus` class directly from `cloud`:
257
-
258
- ```python
259
- from nextmv.cloud import ExperimentStatus
260
- ```
261
-
262
- This enumeration defines the different possible statuses of an experiment
263
- underlying an acceptance test.
264
-
265
- Attributes
266
- ----------
267
- started : str
268
- The experiment has started.
269
- completed : str
270
- The experiment was completed successfully.
271
- failed : str
272
- The experiment failed.
273
- draft : str
274
- The experiment is a draft.
275
- canceled : str
276
- The experiment was canceled.
277
- unknown : str
278
- The experiment status is unknown.
279
-
280
- Examples
281
- --------
282
- >>> from nextmv.cloud import ExperimentStatus
283
- >>> status = ExperimentStatus.completed
284
- >>> status
285
- <ExperimentStatus.completed: 'completed'>
286
- """
287
-
288
- started = "started"
289
- """The experiment has started."""
290
- completed = "completed"
291
- """The experiment was completed."""
292
- failed = "failed"
293
- """The experiment failed."""
294
- draft = "draft"
295
- """The experiment is a draft."""
296
- canceled = "canceled"
297
- """The experiment was canceled."""
298
- unknown = "unknown"
299
- """The experiment status is unknown."""
300
-
301
-
302
253
  class MetricTolerance(BaseModel):
303
254
  """
304
255
  Tolerance used for a metric in an acceptance test.
@@ -942,7 +893,7 @@ class AcceptanceTest(BaseModel):
942
893
  """Creation date of the acceptance test."""
943
894
  updated_at: datetime
944
895
  """Last update date of the acceptance test."""
945
- status: Optional[ExperimentStatus] = ExperimentStatus.unknown
896
+ status: Optional[ExperimentStatus] = ExperimentStatus.UNKNOWN
946
897
  """Status of the acceptance test."""
947
898
  results: Optional[AcceptanceTestResults] = None
948
899
  """Results of the acceptance test."""
@@ -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):