nextmv 1.0.0.dev7__py3-none-any.whl → 1.0.0.dev8__py3-none-any.whl
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/__about__.py +1 -1
- nextmv/_serialization.py +1 -1
- nextmv/cli/cloud/acceptance/create.py +12 -12
- nextmv/cli/cloud/app/push.py +15 -15
- nextmv/cli/cloud/input_set/__init__.py +0 -2
- nextmv/cli/cloud/run/create.py +9 -4
- nextmv/cli/cloud/shadow/stop.py +2 -14
- nextmv/cli/cloud/switchback/stop.py +2 -14
- nextmv/cli/community/clone.py +197 -11
- nextmv/cli/community/list.py +116 -46
- nextmv/cloud/__init__.py +0 -4
- nextmv/cloud/application/__init__.py +200 -1
- nextmv/cloud/application/_acceptance.py +8 -13
- nextmv/cloud/application/_input_set.py +6 -42
- nextmv/cloud/application/_run.py +8 -1
- nextmv/cloud/application/_shadow.py +3 -9
- nextmv/cloud/application/_switchback.py +2 -11
- nextmv/cloud/batch_experiment.py +1 -3
- nextmv/cloud/client.py +1 -1
- nextmv/cloud/integration.py +4 -7
- nextmv/cloud/shadow.py +0 -25
- nextmv/cloud/switchback.py +0 -2
- nextmv/default_app/main.py +4 -6
- nextmv/local/executor.py +83 -3
- nextmv/local/geojson_handler.py +1 -1
- nextmv/manifest.py +11 -7
- nextmv/model.py +2 -2
- nextmv/options.py +1 -1
- nextmv/output.py +57 -21
- nextmv/run.py +12 -3
- {nextmv-1.0.0.dev7.dist-info → nextmv-1.0.0.dev8.dist-info}/METADATA +1 -3
- {nextmv-1.0.0.dev7.dist-info → nextmv-1.0.0.dev8.dist-info}/RECORD +35 -37
- nextmv/cli/cloud/input_set/delete.py +0 -67
- nextmv/cloud/community.py +0 -441
- {nextmv-1.0.0.dev7.dist-info → nextmv-1.0.0.dev8.dist-info}/WHEEL +0 -0
- {nextmv-1.0.0.dev7.dist-info → nextmv-1.0.0.dev8.dist-info}/entry_points.txt +0 -0
- {nextmv-1.0.0.dev7.dist-info → nextmv-1.0.0.dev8.dist-info}/licenses/LICENSE +0 -0
nextmv/output.py
CHANGED
|
@@ -8,9 +8,9 @@ destinations.
|
|
|
8
8
|
Classes
|
|
9
9
|
-------
|
|
10
10
|
RunStatistics
|
|
11
|
-
Statistics about a general run.
|
|
11
|
+
Deprecated: Statistics about a general run.
|
|
12
12
|
ResultStatistics
|
|
13
|
-
Statistics about a specific result.
|
|
13
|
+
Deprecated: Statistics about a specific result.
|
|
14
14
|
DataPoint
|
|
15
15
|
A data point representing a 2D coordinate.
|
|
16
16
|
Series
|
|
@@ -18,7 +18,10 @@ Series
|
|
|
18
18
|
SeriesData
|
|
19
19
|
Data container for multiple series of data points.
|
|
20
20
|
Statistics
|
|
21
|
-
Complete statistics container for a
|
|
21
|
+
Deprecated: Use metrics instead. Complete statistics container for a
|
|
22
|
+
solution, including run metrics and result data.
|
|
23
|
+
Metrics
|
|
24
|
+
Metrics container for a solution.
|
|
22
25
|
OutputFormat
|
|
23
26
|
Enumeration of supported output formats.
|
|
24
27
|
SolutionFile
|
|
@@ -46,7 +49,9 @@ Attributes
|
|
|
46
49
|
ASSETS_KEY : str
|
|
47
50
|
Assets key constant used for identifying assets in the run output.
|
|
48
51
|
STATISTICS_KEY : str
|
|
49
|
-
Statistics key constant used for identifying statistics in the run output.
|
|
52
|
+
Deprecated: Use METRICS_KEY instead. Statistics key constant used for identifying statistics in the run output.
|
|
53
|
+
METRICS_KEY : str
|
|
54
|
+
Metrics key constant used for identifying metrics in the run output.
|
|
50
55
|
SOLUTIONS_KEY : str
|
|
51
56
|
Solutions key constant used for identifying solutions in the run output.
|
|
52
57
|
OUTPUTS_KEY : str
|
|
@@ -75,7 +80,11 @@ Assets key constant used for identifying assets in the run output.
|
|
|
75
80
|
"""
|
|
76
81
|
STATISTICS_KEY = "statistics"
|
|
77
82
|
"""
|
|
78
|
-
Statistics key constant used for identifying statistics in the run output.
|
|
83
|
+
Deprecated: Use METRICS_KEY instead. Statistics key constant used for identifying statistics in the run output.
|
|
84
|
+
"""
|
|
85
|
+
METRICS_KEY = "metrics"
|
|
86
|
+
"""
|
|
87
|
+
Metrics key constant used for identifying metrics in the run output.
|
|
79
88
|
"""
|
|
80
89
|
SOLUTIONS_KEY = "solutions"
|
|
81
90
|
"""
|
|
@@ -89,7 +98,7 @@ Outputs key constant used for identifying outputs in the run output.
|
|
|
89
98
|
|
|
90
99
|
class RunStatistics(BaseModel):
|
|
91
100
|
"""
|
|
92
|
-
Statistics about a general run.
|
|
101
|
+
Deprecated: Statistics about a general run.
|
|
93
102
|
|
|
94
103
|
You can import the `RunStatistics` class directly from `nextmv`:
|
|
95
104
|
|
|
@@ -129,7 +138,7 @@ class RunStatistics(BaseModel):
|
|
|
129
138
|
|
|
130
139
|
class ResultStatistics(BaseModel):
|
|
131
140
|
"""
|
|
132
|
-
Statistics about a specific result.
|
|
141
|
+
Deprecated: Statistics about a specific result.
|
|
133
142
|
|
|
134
143
|
You can import the `ResultStatistics` class directly from `nextmv`:
|
|
135
144
|
|
|
@@ -169,7 +178,7 @@ class ResultStatistics(BaseModel):
|
|
|
169
178
|
|
|
170
179
|
class DataPoint(BaseModel):
|
|
171
180
|
"""
|
|
172
|
-
A data point representing a 2D coordinate.
|
|
181
|
+
Deprecated: A data point representing a 2D coordinate.
|
|
173
182
|
|
|
174
183
|
You can import the `DataPoint` class directly from `nextmv`:
|
|
175
184
|
|
|
@@ -202,7 +211,7 @@ class DataPoint(BaseModel):
|
|
|
202
211
|
|
|
203
212
|
class Series(BaseModel):
|
|
204
213
|
"""
|
|
205
|
-
A series of data points for visualization or analysis.
|
|
214
|
+
Deprecated: A series of data points for visualization or analysis.
|
|
206
215
|
|
|
207
216
|
You can import the `Series` class directly from `nextmv`:
|
|
208
217
|
|
|
@@ -236,7 +245,7 @@ class Series(BaseModel):
|
|
|
236
245
|
|
|
237
246
|
class SeriesData(BaseModel):
|
|
238
247
|
"""
|
|
239
|
-
Data container for multiple series of data points.
|
|
248
|
+
Deprecated: Data container for multiple series of data points.
|
|
240
249
|
|
|
241
250
|
You can import the `SeriesData` class directly from `nextmv`:
|
|
242
251
|
|
|
@@ -271,6 +280,9 @@ class SeriesData(BaseModel):
|
|
|
271
280
|
|
|
272
281
|
class Statistics(BaseModel):
|
|
273
282
|
"""
|
|
283
|
+
!!! warning
|
|
284
|
+
`Statistics` is deprecated, use `Metrics` instead.
|
|
285
|
+
|
|
274
286
|
Complete statistics container for a solution, including run metrics and
|
|
275
287
|
result data.
|
|
276
288
|
|
|
@@ -877,7 +889,9 @@ class Output:
|
|
|
877
889
|
The solution to the decision problem. The type must match the
|
|
878
890
|
`output_format`. Default is None.
|
|
879
891
|
statistics : Optional[Union[Statistics, dict[str, Any]]], optional
|
|
880
|
-
Statistics of the solution. Default is None.
|
|
892
|
+
Deprecated: Use Metrics instead. Statistics of the solution. Default is None.
|
|
893
|
+
metrics : Optional[dict[str, Any]], optional
|
|
894
|
+
Metrics of the solution. Default is None.
|
|
881
895
|
csv_configurations : Optional[dict[str, Any]], optional
|
|
882
896
|
Configuration for writing CSV files. Default is None.
|
|
883
897
|
json_configurations : Optional[dict[str, Any]], optional
|
|
@@ -916,17 +930,16 @@ class Output:
|
|
|
916
930
|
Examples
|
|
917
931
|
--------
|
|
918
932
|
>>> from nextmv.output import Output, OutputFormat, Statistics, RunStatistics
|
|
919
|
-
>>>
|
|
920
|
-
>>> stats = Statistics(run=run_stats)
|
|
933
|
+
>>> metrics = {"duration": 30.0, "iterations": 100}
|
|
921
934
|
>>> solution = {"routes": [{"vehicle": 1, "stops": [1, 2, 3]}, {"vehicle": 2, "stops": [4, 5]}]}
|
|
922
935
|
>>> output = Output(
|
|
923
936
|
... output_format=OutputFormat.JSON,
|
|
924
937
|
... solution=solution,
|
|
925
|
-
...
|
|
938
|
+
... metrics=metrics,
|
|
926
939
|
... json_configurations={"indent": 4}
|
|
927
940
|
... )
|
|
928
941
|
>>> output_dict = output.to_dict()
|
|
929
|
-
>>> "solution" in output_dict and "
|
|
942
|
+
>>> "solution" in output_dict and "metrics" in output_dict
|
|
930
943
|
True
|
|
931
944
|
"""
|
|
932
945
|
|
|
@@ -969,11 +982,16 @@ class Output:
|
|
|
969
982
|
"""
|
|
970
983
|
statistics: Statistics | dict[str, Any] | None = None
|
|
971
984
|
"""
|
|
985
|
+
Deprecated: Use Metrics instead.
|
|
972
986
|
Statistics of the solution. These statistics can be of type `Statistics` or a
|
|
973
987
|
simple dictionary. If the statistics are of type `Statistics`, they will be
|
|
974
988
|
serialized to a dictionary using the `to_dict` method. If they are a
|
|
975
|
-
dictionary, they will be used as is.
|
|
976
|
-
|
|
989
|
+
dictionary, they will be used as is.
|
|
990
|
+
"""
|
|
991
|
+
metrics: dict[str, Any] | None = None
|
|
992
|
+
"""
|
|
993
|
+
Metrics of the solution. These metrics should be provided as a simple or
|
|
994
|
+
nested dictionary.
|
|
977
995
|
"""
|
|
978
996
|
csv_configurations: dict[str, Any] | None = None
|
|
979
997
|
"""
|
|
@@ -1088,7 +1106,7 @@ class Output:
|
|
|
1088
1106
|
# Statistics need to end up as a dict, so we achieve that based on the
|
|
1089
1107
|
# type of statistics that were used to create the class.
|
|
1090
1108
|
if self.statistics is None:
|
|
1091
|
-
statistics =
|
|
1109
|
+
statistics = None
|
|
1092
1110
|
elif isinstance(self.statistics, Statistics):
|
|
1093
1111
|
statistics = self.statistics.to_dict()
|
|
1094
1112
|
elif isinstance(self.statistics, dict):
|
|
@@ -1098,6 +1116,18 @@ class Output:
|
|
|
1098
1116
|
f"unsupported statistics type: {type(self.statistics)}, supported types are `Statistics` or `dict`"
|
|
1099
1117
|
)
|
|
1100
1118
|
|
|
1119
|
+
if self.metrics is None:
|
|
1120
|
+
metrics = None
|
|
1121
|
+
elif isinstance(self.metrics, dict):
|
|
1122
|
+
metrics = self.metrics
|
|
1123
|
+
else:
|
|
1124
|
+
raise TypeError(f"unsupported metrics type: {type(self.metrics)}, supported type is `dict`")
|
|
1125
|
+
|
|
1126
|
+
# if both metrics and statistics are None, set statistics to an
|
|
1127
|
+
# empty dict for backward compatibility
|
|
1128
|
+
if statistics is None and metrics is None:
|
|
1129
|
+
statistics = {}
|
|
1130
|
+
|
|
1101
1131
|
# Assets need to end up as a list of dicts, so we achieve that based on
|
|
1102
1132
|
# the type of each asset in the list.
|
|
1103
1133
|
assets = []
|
|
@@ -1117,10 +1147,16 @@ class Output:
|
|
|
1117
1147
|
output_dict = {
|
|
1118
1148
|
"options": options,
|
|
1119
1149
|
"solution": self.solution if self.solution is not None else {},
|
|
1120
|
-
STATISTICS_KEY: statistics,
|
|
1121
1150
|
ASSETS_KEY: assets,
|
|
1122
1151
|
}
|
|
1123
1152
|
|
|
1153
|
+
# Only include statistics in output if it's not None
|
|
1154
|
+
if statistics is not None:
|
|
1155
|
+
output_dict[STATISTICS_KEY] = statistics
|
|
1156
|
+
|
|
1157
|
+
if metrics is not None:
|
|
1158
|
+
output_dict[METRICS_KEY] = metrics
|
|
1159
|
+
|
|
1124
1160
|
# Add the auxiliary configurations to the output dictionary if they are
|
|
1125
1161
|
# defined and not empty.
|
|
1126
1162
|
if (
|
|
@@ -1193,9 +1229,9 @@ class LocalOutputWriter(OutputWriter):
|
|
|
1193
1229
|
|
|
1194
1230
|
Examples
|
|
1195
1231
|
--------
|
|
1196
|
-
>>> from nextmv.output import LocalOutputWriter, Output,
|
|
1232
|
+
>>> from nextmv.output import LocalOutputWriter, Output, Metrics
|
|
1197
1233
|
>>> writer = LocalOutputWriter()
|
|
1198
|
-
>>> output = Output(solution={"result": 42},
|
|
1234
|
+
>>> output = Output(solution={"result": 42}, metrics={"time": 1.23})
|
|
1199
1235
|
>>> # Write to stdout
|
|
1200
1236
|
>>> writer.write(output, path=None)
|
|
1201
1237
|
>>> # Write to a file
|
nextmv/run.py
CHANGED
|
@@ -434,6 +434,9 @@ class RunInfoStatistics(BaseModel):
|
|
|
434
434
|
"""List of statistics indicators."""
|
|
435
435
|
|
|
436
436
|
|
|
437
|
+
RunInfoMetrics = RunInfoStatistics
|
|
438
|
+
|
|
439
|
+
|
|
437
440
|
class OptionsSummaryItem(BaseModel):
|
|
438
441
|
"""
|
|
439
442
|
Summary item for options used in a run.
|
|
@@ -529,7 +532,9 @@ class Run(BaseModel):
|
|
|
529
532
|
experiment_id : str, optional
|
|
530
533
|
ID of the experiment associated with the run. Defaults to None.
|
|
531
534
|
statistics : RunInfoStatistics, optional
|
|
532
|
-
Statistics of the run. Defaults to None.
|
|
535
|
+
Deprecated: Statistics of the run. Defaults to None.
|
|
536
|
+
metrics: RunInfoMetrics, optional
|
|
537
|
+
Metrics of the run. Defaults to None.
|
|
533
538
|
input_id : str, optional
|
|
534
539
|
ID of the input associated with the run. Defaults to None.
|
|
535
540
|
option_set : str, optional
|
|
@@ -603,7 +608,9 @@ class Run(BaseModel):
|
|
|
603
608
|
experiment_id: str | None = None
|
|
604
609
|
"""ID of the experiment associated with the run."""
|
|
605
610
|
statistics: RunInfoStatistics | None = None
|
|
606
|
-
"""Statistics of the run."""
|
|
611
|
+
"""Deprecated: Statistics of the run."""
|
|
612
|
+
metrics: RunInfoMetrics | None = None
|
|
613
|
+
"""Metrics of the run."""
|
|
607
614
|
input_id: str | None = None
|
|
608
615
|
"""ID of the input associated with the run."""
|
|
609
616
|
option_set: str | None = None
|
|
@@ -677,7 +684,9 @@ class Metadata(BaseModel):
|
|
|
677
684
|
status_v2: StatusV2
|
|
678
685
|
"""Status of the run."""
|
|
679
686
|
statistics: dict[str, Any] | None = None
|
|
680
|
-
"""User defined statistics of the run."""
|
|
687
|
+
"""Deprecated: User defined statistics of the run."""
|
|
688
|
+
metrics: dict[str, Any] | None = None
|
|
689
|
+
"""User defined metrics of the run."""
|
|
681
690
|
|
|
682
691
|
def run_is_finalized(self) -> bool:
|
|
683
692
|
"""
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: nextmv
|
|
3
|
-
Version: 1.0.0.
|
|
3
|
+
Version: 1.0.0.dev8
|
|
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/
|
|
@@ -230,13 +230,11 @@ Provides-Extra: dev
|
|
|
230
230
|
Requires-Dist: build>=1.0.3; extra == 'dev'
|
|
231
231
|
Requires-Dist: folium>=0.20.0; extra == 'dev'
|
|
232
232
|
Requires-Dist: mlflow>=2.19.0; extra == 'dev'
|
|
233
|
-
Requires-Dist: nextpipe>=0.6.0; extra == 'dev'
|
|
234
233
|
Requires-Dist: nextroute>=1.11.1; extra == 'dev'
|
|
235
234
|
Requires-Dist: openpyxl>=3.1.5; extra == 'dev'
|
|
236
235
|
Requires-Dist: pandas>=2.2.3; extra == 'dev'
|
|
237
236
|
Requires-Dist: plotly>=6.0.1; extra == 'dev'
|
|
238
237
|
Requires-Dist: pydantic>=2.5.2; extra == 'dev'
|
|
239
|
-
Requires-Dist: pytest>=9.0.2; extra == 'dev'
|
|
240
238
|
Requires-Dist: pyyaml>=6.0.1; extra == 'dev'
|
|
241
239
|
Requires-Dist: requests>=2.31.0; extra == 'dev'
|
|
242
240
|
Requires-Dist: ruff>=0.1.7; extra == 'dev'
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
nextmv/__about__.py,sha256=
|
|
1
|
+
nextmv/__about__.py,sha256=gaYHqa3kcC-a8tfZv6Hq1-xsB1kwSym282AsDr7hgq8,28
|
|
2
2
|
nextmv/__entrypoint__.py,sha256=XMT-ds1f2Yc6KoI2C0YEH-rJj5gVLfJMqUdRfcA3_KQ,1070
|
|
3
3
|
nextmv/__init__.py,sha256=LwpGBSiV0UG13zKHO2N3Ikb7bCMV08Gfbl6Cp80b_2g,3813
|
|
4
|
-
nextmv/_serialization.py,sha256=
|
|
4
|
+
nextmv/_serialization.py,sha256=fT-GXiy9cNo7D2KL1blZcsAaQHHgkEVTI_JvXIFlWZc,2833
|
|
5
5
|
nextmv/base_model.py,sha256=kPFqE-c_3LcEy8fY0qDrJk_gbPYgSKtetRMby71oxE8,2298
|
|
6
6
|
nextmv/deprecated.py,sha256=U1YD-vie0dEVWFJgIwOuinxACHsyiEIQpfrt95ykhlg,1651
|
|
7
7
|
nextmv/input.py,sha256=iONLkXhcIXRCJVPNVkJdivh47A399VMepsSxNZByX2I,37649
|
|
8
8
|
nextmv/logger.py,sha256=kNIbu46MisrzYe4T0hNMpWfRTKKacDVvbtQcNys_c_E,2513
|
|
9
|
-
nextmv/manifest.py,sha256=
|
|
10
|
-
nextmv/model.py,sha256=
|
|
11
|
-
nextmv/options.py,sha256=
|
|
12
|
-
nextmv/output.py,sha256=
|
|
9
|
+
nextmv/manifest.py,sha256=VoZo7cGKGCdmcxDu5ECTZPY67J4LAUxBu6gmhgXVWRY,49216
|
|
10
|
+
nextmv/model.py,sha256=uthHjRCrC1b9OCoyQ_n-2_nfP1bFu-nMiUxYhmLf0SI,14989
|
|
11
|
+
nextmv/options.py,sha256=3BnnuAoiFD6qr0EMYv1VgAXarDjLb-t7OpC1IpsnS1M,29648
|
|
12
|
+
nextmv/output.py,sha256=7ioVUlsQiQP9MeR6baUXs9C-5q6jcBteu1DUNExcHCw,55707
|
|
13
13
|
nextmv/polling.py,sha256=fwnAxmfpuBg4d6pi53TRTyyefdpf-cHLoTG6trAu-QA,11048
|
|
14
|
-
nextmv/run.py,sha256=
|
|
14
|
+
nextmv/run.py,sha256=o6_nSPOYwGCsCaqmYYAwrtCLE_aJuqy5NHFRfXYE7TI,54440
|
|
15
15
|
nextmv/safe.py,sha256=VAK4fGEurbLNji4Pg5Okga5XQSbI4aI9JJf95_68Z20,3867
|
|
16
16
|
nextmv/status.py,sha256=VqmOgxiEK89Y88ZUxZPfUXmY0HqvN28Lc1PDt0-9PLw,1600
|
|
17
17
|
nextmv/cli/CONTRIBUTING.md,sha256=xM_skfI1WPh2UtZ1axbB8AfOLJ3LZk8YhQpZY4qtSqw,21911
|
|
@@ -23,7 +23,7 @@ nextmv/cli/options.py,sha256=ymd6Y7_ZQkln35nHw3pLnFpqivgmJfuYAnyizmEuonc,6887
|
|
|
23
23
|
nextmv/cli/version.py,sha256=VRbfNpUvCFYPcphr-F3Ph4Z4UwtVis4keyVFHj1JISw,681
|
|
24
24
|
nextmv/cli/cloud/__init__.py,sha256=pywNNBy_poHaKn3_oIZRR9DDE8w3u65KvLpnX6S0BQI,1886
|
|
25
25
|
nextmv/cli/cloud/acceptance/__init__.py,sha256=v4U1m6z5zI8mQpmIE4kFeEYOsaDxnGRnRj2j5I6WueI,711
|
|
26
|
-
nextmv/cli/cloud/acceptance/create.py,sha256=
|
|
26
|
+
nextmv/cli/cloud/acceptance/create.py,sha256=lc1EYydsIuxr2qiQ_0W7po8DnPIfXSYR-5cm_6ddYGA,14604
|
|
27
27
|
nextmv/cli/cloud/acceptance/delete.py,sha256=julZ6Bs6YcsmyuE00yPjPScIRz4QteNt-GUR4J2Hp_I,2260
|
|
28
28
|
nextmv/cli/cloud/acceptance/get.py,sha256=pb3hRdIiynTi4K7xDNCMJE7bW46FE-X3EoAQU8kQJjE,3438
|
|
29
29
|
nextmv/cli/cloud/acceptance/list.py,sha256=9tTV4B2lgDqNxDnaNXkHxeh7jUQuAu9GQJsEKJ_NqIo,1881
|
|
@@ -39,7 +39,7 @@ nextmv/cli/cloud/app/delete.py,sha256=HLgDx4eMf_LYyGC8aQxuvNrhOfnWmDuutPjk4ywILa
|
|
|
39
39
|
nextmv/cli/cloud/app/exists.py,sha256=gd9pmR1Oq_cCjaTNB82PmJtDYowrb17vBfQYjoh6E9Q,1258
|
|
40
40
|
nextmv/cli/cloud/app/get.py,sha256=_v_7PrUniaaRvHclBA02V-UVcbVe1eFixGU6CeXA4m4,1765
|
|
41
41
|
nextmv/cli/cloud/app/list.py,sha256=AI1VNNueYfzwuSAFlf-vXbZEY-th5BrzXZgn-3uusFo,1653
|
|
42
|
-
nextmv/cli/cloud/app/push.py,sha256=
|
|
42
|
+
nextmv/cli/cloud/app/push.py,sha256=mbGThAgmfxO2JqfXq8HXAdRT81b55MBfCGaDtSJQsUM,15624
|
|
43
43
|
nextmv/cli/cloud/app/update.py,sha256=4Mp8Zf40K1hdHO3KT9Md3piBWqzracfpWtujJfbPocM,4070
|
|
44
44
|
nextmv/cli/cloud/batch/__init__.py,sha256=-_UjmvrQItACUY_BQ_cOffNJixNHAb4vH_pew25sJ3o,774
|
|
45
45
|
nextmv/cli/cloud/batch/create.py,sha256=T70sjvvTxXxRpC4COFZFU5ei6ylS5MWLg6VLP3SjIso,15465
|
|
@@ -56,9 +56,8 @@ nextmv/cli/cloud/ensemble/delete.py,sha256=C1xmISSaUhtsV94w2z2rzhenp2mm9E0GXHy4d
|
|
|
56
56
|
nextmv/cli/cloud/ensemble/get.py,sha256=-4crRjI8MF8meq5uUhUR3q39lK4EIsvpzaODfGvwx3k,2135
|
|
57
57
|
nextmv/cli/cloud/ensemble/list.py,sha256=zm7TfBM5HH_8I-r4U219AbmQadET96kw1MrsjwARSAM,1887
|
|
58
58
|
nextmv/cli/cloud/ensemble/update.py,sha256=5AeuhY-CytzON1FFoEijBlo1T9oHvkq3mxV9I3qCeLA,3383
|
|
59
|
-
nextmv/cli/cloud/input_set/__init__.py,sha256=
|
|
59
|
+
nextmv/cli/cloud/input_set/__init__.py,sha256=wyt0LX9xqcGDrb-rPx-MN0WQA7o9jZnK2CpShfrki3o,867
|
|
60
60
|
nextmv/cli/cloud/input_set/create.py,sha256=nJWsaj-fPXS8rwIbh13_wXc9SitDA4ByIHhlBS51GHo,5661
|
|
61
|
-
nextmv/cli/cloud/input_set/delete.py,sha256=8-cJtgcgh_kK0K7AtHZmYSCvTmxwtyQIhWcmt6aYAZI,2125
|
|
62
61
|
nextmv/cli/cloud/input_set/get.py,sha256=MvMD6tmMA_ui4MVCwRkOnmU0WySJmSJX7x2Q-x_xXwA,1916
|
|
63
62
|
nextmv/cli/cloud/input_set/list.py,sha256=7I0F1rs19bY9d_V2TjEFxHCbHq3bNV_mO0Fd9qJ58IY,1896
|
|
64
63
|
nextmv/cli/cloud/input_set/update.py,sha256=P5b94m08hGMAGr455fH-Cd1yryeMC15r1YfmJEt2NSw,4144
|
|
@@ -77,7 +76,7 @@ nextmv/cli/cloud/managed_input/list.py,sha256=6l4zJPVErmooobteBn05RmoXHgvI0RBt_L
|
|
|
77
76
|
nextmv/cli/cloud/managed_input/update.py,sha256=E1ddfQ9VJ7SgG8V6kkRYbgKhS4vDyv06WePNbLEXUsE,3191
|
|
78
77
|
nextmv/cli/cloud/run/__init__.py,sha256=KyonwVd5lfweaq-cIpPuRAzHFrK0slfqJsIjsT_p4PU,1102
|
|
79
78
|
nextmv/cli/cloud/run/cancel.py,sha256=d7aQQQmek_i3P2cDmpOohLiwSjWxfKEiVAvBnNYAmuE,1259
|
|
80
|
-
nextmv/cli/cloud/run/create.py,sha256=
|
|
79
|
+
nextmv/cli/cloud/run/create.py,sha256=eGjlYCWGf_57Qlqbaok-iLzcLmHAaCZor6TskhMabPk,19706
|
|
81
80
|
nextmv/cli/cloud/run/get.py,sha256=bUczN6a1SV3wkW0uUPfQdO3i13BF51udixmuyiicdi8,7826
|
|
82
81
|
nextmv/cli/cloud/run/input.py,sha256=QEdDnKxEmucUwPPRAqh1VuErw5rKaAwXOHrmJESP-k0,3171
|
|
83
82
|
nextmv/cli/cloud/run/list.py,sha256=z3286Q0Aznz-qAvanCB03rXjCfGPk84A32t8AqTC2Cs,2563
|
|
@@ -104,7 +103,7 @@ nextmv/cli/cloud/shadow/get.py,sha256=8NmXl2romVPGfS9KP4G2Sv4SuSZKgRx85GZ4ClwTqW
|
|
|
104
103
|
nextmv/cli/cloud/shadow/list.py,sha256=aVFa3FAzfcUsMlD0hYgZwhoF75GQkaNDHrrq82qqylQ,1810
|
|
105
104
|
nextmv/cli/cloud/shadow/metadata.py,sha256=vHJYVDXXHwiqQrG0J0D_aRP--b47UfEgJwJOXqfskSo,2161
|
|
106
105
|
nextmv/cli/cloud/shadow/start.py,sha256=SkDYSfyQLdfHJKCOzc4CW6MVO7YBWCZCOAoGBzqSFhI,1464
|
|
107
|
-
nextmv/cli/cloud/shadow/stop.py,sha256=
|
|
106
|
+
nextmv/cli/cloud/shadow/stop.py,sha256=gb6UuNf-HNCaACKzdAix1pr8oMn-A1SQJEFUXrOr228,1333
|
|
108
107
|
nextmv/cli/cloud/shadow/update.py,sha256=l7_gODO9fXYGOLzFMJmIVpT5Jku9XQAo2PI5x3AP4xU,2880
|
|
109
108
|
nextmv/cli/cloud/switchback/__init__.py,sha256=jYeujjbqvqRGIgvC0wr3I6zavw1az7IS8jiJsAlH-z4,981
|
|
110
109
|
nextmv/cli/cloud/switchback/create.py,sha256=lEboNjN1ZFbuOCFmK2ADIRH-pIENc80NcR809rDOY3I,5085
|
|
@@ -113,7 +112,7 @@ nextmv/cli/cloud/switchback/get.py,sha256=GQKzaW4jCfV21DyZ5vDNrkFH2Tw1pR8Zv_71ji
|
|
|
113
112
|
nextmv/cli/cloud/switchback/list.py,sha256=wrXXA9aMLLcq_6WFk-dy9RopE57dFZb7TxlWdRx9G94,1882
|
|
114
113
|
nextmv/cli/cloud/switchback/metadata.py,sha256=WDhK-AVKEJQ38WhPZqPOgemHt-PI__r6sIEBFQtKxVw,2287
|
|
115
114
|
nextmv/cli/cloud/switchback/start.py,sha256=N9Bci8DmCQW8XUm93Rhj30TCf_YvK6N5qxZXMpW2X1I,1535
|
|
116
|
-
nextmv/cli/cloud/switchback/stop.py,sha256=
|
|
115
|
+
nextmv/cli/cloud/switchback/stop.py,sha256=xEF2JqDhOhxzli79qqwIGVJiNW14BnfEbfc70sXF7dE,1397
|
|
117
116
|
nextmv/cli/cloud/switchback/update.py,sha256=pILZUbqlIM6l1mrbVPtks6CGcgre5829sSnD2yMZd-0,3000
|
|
118
117
|
nextmv/cli/cloud/upload/__init__.py,sha256=khOl6NxkPd4KEqN0xMdxzmST-Ct3Vr_xk8zbMvbrLl8,511
|
|
119
118
|
nextmv/cli/cloud/upload/create.py,sha256=vRTHCeh7cbB9JSAMUCpcdQrzQ1od5FiFiNdPPh7sFqw,1216
|
|
@@ -125,61 +124,60 @@ nextmv/cli/cloud/version/get.py,sha256=eGbka3TG8UJE150h22rn0BUqTi1xRE7roVDj6yJvn
|
|
|
125
124
|
nextmv/cli/cloud/version/list.py,sha256=sKdHgyowLG1jyUEtu87yCPC5_2-0i3VDEgfmvb-bBn0,1770
|
|
126
125
|
nextmv/cli/cloud/version/update.py,sha256=mEUYXGHLGkiEGH31KK6jDDfviHEhVCdLjLQL_5u0vLk,2869
|
|
127
126
|
nextmv/cli/community/__init__.py,sha256=t2l6adm9Km6hSvSFzeKHTQzacVSnwjx4wpj2kqee5nM,612
|
|
128
|
-
nextmv/cli/community/clone.py,sha256=
|
|
129
|
-
nextmv/cli/community/list.py,sha256=
|
|
127
|
+
nextmv/cli/community/clone.py,sha256=qXDgsMfAnAcZvP9kOp-O4rqj0qw0zueg9BgWl71DqpA,9202
|
|
128
|
+
nextmv/cli/community/list.py,sha256=ad7qPPaNh29tj_ggR4lJnRkMTgWstHQFV90sqdiWcdA,7440
|
|
130
129
|
nextmv/cli/configuration/__init__.py,sha256=7oryF4PKkORh8bcdgbN2k36rZrFpJsM7Xfq_J4-MkFs,516
|
|
131
130
|
nextmv/cli/configuration/config.py,sha256=t43ubCcbfbpfq9HvkVb2WQY9V47lrLEP0KvsWfjOJ8Y,6667
|
|
132
131
|
nextmv/cli/configuration/create.py,sha256=aDj6wFl6_RRMmvCLTNIeCcFotNOGoupso785M46nh2Y,2668
|
|
133
132
|
nextmv/cli/configuration/delete.py,sha256=3l1Mx8ATCwoiggbYBjG0ArmYSbS_GlJ5cCCymG2CEhU,1935
|
|
134
133
|
nextmv/cli/configuration/list.py,sha256=HIZvDJQW5B0-o_ZqQHuxRw7N_VmxqYM46fucKCvo1zw,2208
|
|
135
|
-
nextmv/cloud/__init__.py,sha256=
|
|
134
|
+
nextmv/cloud/__init__.py,sha256=watvsgucVgOCIlwrmnvIxW8lyUfEerhDzOn-Zp-dl1I,3954
|
|
136
135
|
nextmv/cloud/acceptance_test.py,sha256=H34lvccJzN1URpnhrHstcVxgvq1s2iCymiKIPBHcToY,25828
|
|
137
136
|
nextmv/cloud/account.py,sha256=X2xQjzhgEdKR0eypH8lWKUOwDISjJSd5SwOwEnpfTVk,13573
|
|
138
137
|
nextmv/cloud/assets.py,sha256=alw634ub-DR0CHQXZy_ObeGvQthPXFLdgzgbvbH1SGY,1376
|
|
139
|
-
nextmv/cloud/batch_experiment.py,sha256=
|
|
140
|
-
nextmv/cloud/client.py,sha256=
|
|
141
|
-
nextmv/cloud/community.py,sha256=LSiKF5agLTHFbW5fBAv-m3MsWm3XuROpw4_KkPpwtZM,13060
|
|
138
|
+
nextmv/cloud/batch_experiment.py,sha256=thS94-ZdMR7Em5TeGN5UtnIDHmhzqld_U49SODyhrPU,10537
|
|
139
|
+
nextmv/cloud/client.py,sha256=FGyzpwPBXMiiT4Jr2DLvWzzhjQ64AdadPDACaCuIDGM,18100
|
|
142
140
|
nextmv/cloud/ensemble.py,sha256=_hKPjSLtuGH1xGG70ZBsmY_IL5XinZqVHHwBxtX9Omw,8570
|
|
143
141
|
nextmv/cloud/input_set.py,sha256=wsLmMI1C7BslWDN5j1RnVUA8z54-Hq1eLG9bkzyqafo,4187
|
|
144
142
|
nextmv/cloud/instance.py,sha256=rLrgNNvNyC6hZtjxIfTR2Luylmbh2emJIZVCy_hTJZ4,5495
|
|
145
|
-
nextmv/cloud/integration.py,sha256=
|
|
143
|
+
nextmv/cloud/integration.py,sha256=S4BNX3GFGNA1SXDWaRAUeS0hW6XkYXWSdWXX-s-x_nA,18112
|
|
146
144
|
nextmv/cloud/package.py,sha256=88XSJ15QGcHboNJAw2hGowiLKBu2O2nV5ZieZFx7XDI,17133
|
|
147
145
|
nextmv/cloud/scenario.py,sha256=1_4PI9ehYaSonEe_l59cFhZNmqQ_brXXP6-mVq9i8a8,14183
|
|
148
146
|
nextmv/cloud/secrets.py,sha256=fA5cX0jfTsPVZWV7433wzETGlXpWRLHGswuObx9e6FQ,6820
|
|
149
|
-
nextmv/cloud/shadow.py,sha256=
|
|
150
|
-
nextmv/cloud/switchback.py,sha256=
|
|
147
|
+
nextmv/cloud/shadow.py,sha256=DWJfFkwlbULdl988A1HkOsyQGq0l9xtLT8Q-ZzsepH0,7214
|
|
148
|
+
nextmv/cloud/switchback.py,sha256=AGA0LDMu7sHndczy2TrcZghn_ZRnTGlBDmGRZG34dZY,7344
|
|
151
149
|
nextmv/cloud/url.py,sha256=Fz70ywkWdCLmP21ZBmJwZi5kDbjpmsX_VlwVF_xQeHg,1836
|
|
152
150
|
nextmv/cloud/version.py,sha256=5_S7_pWUVBFbvAArku20eK7S645GJcHtgE2OpXLdSzQ,5300
|
|
153
|
-
nextmv/cloud/application/__init__.py,sha256=
|
|
154
|
-
nextmv/cloud/application/_acceptance.py,sha256=
|
|
151
|
+
nextmv/cloud/application/__init__.py,sha256=E1Q-WIly_PiNg1ynMynA81SwX88Q6uH_lqWKtQQX0tg,40369
|
|
152
|
+
nextmv/cloud/application/_acceptance.py,sha256=ZwbVkur3-1fwM_L4F8ZUqrNaIdHgYGxKd3utoOCWjSc,13679
|
|
155
153
|
nextmv/cloud/application/_batch_scenario.py,sha256=cSsX5vPOkm91UqRBPIcqlOvQ0iojwt4sQKYGZEE7x6k,28479
|
|
156
154
|
nextmv/cloud/application/_ensemble.py,sha256=05l9uR0hTnW8nQjhRzjd2TPfvCoaAqNddWP-aVRL5rg,7666
|
|
157
|
-
nextmv/cloud/application/_input_set.py,sha256=
|
|
155
|
+
nextmv/cloud/application/_input_set.py,sha256=m7PKqhR3evdE_a_RER1L6iKwftlaxTiRd1JQvgCepUU,7069
|
|
158
156
|
nextmv/cloud/application/_instance.py,sha256=Jjig8NI1jXNyBQoYj7JOfS0JFmw5jJdKLfi82fqBYgo,8386
|
|
159
157
|
nextmv/cloud/application/_managed_input.py,sha256=zaWqGpe8Y5XWheroAqZSo-xNHfn2MKblNwRUbQVXBRM,6694
|
|
160
|
-
nextmv/cloud/application/_run.py,sha256=
|
|
158
|
+
nextmv/cloud/application/_run.py,sha256=LgSKm537F0ej-LTsMVmabkyOBtFnaHjvAdInnPzL6UI,53898
|
|
161
159
|
nextmv/cloud/application/_secrets.py,sha256=hWhPAyY8aDF8zlEz9opPNLrFOYtp-COFqG_jgOZ6VxI,9476
|
|
162
|
-
nextmv/cloud/application/_shadow.py,sha256=
|
|
163
|
-
nextmv/cloud/application/_switchback.py,sha256=
|
|
160
|
+
nextmv/cloud/application/_shadow.py,sha256=8uH0Zr-9czef2BhshYLzc0yBQhIcIdBYTCIiUS1ru44,9123
|
|
161
|
+
nextmv/cloud/application/_switchback.py,sha256=MapHkquya7SeyNnEVIy7E7Um_9VuMH7XiB7FFxZx6Po,9743
|
|
164
162
|
nextmv/cloud/application/_utils.py,sha256=GqksGBHCV2sc-itL6hlWnncUJjIxhw6LH3pOjs4M-us,1643
|
|
165
163
|
nextmv/cloud/application/_version.py,sha256=o1jVLfoKJNCs-32P7hkL1IGba8Eb1hnT6vnaZpyc0dk,8543
|
|
166
164
|
nextmv/default_app/.gitignore,sha256=gsfnfXMYNt-YTroh5hAzauwBZoPDJ6D_fB17rMSnIko,8
|
|
167
165
|
nextmv/default_app/README.md,sha256=hW3zWcYzxhYfof-pThaN1Fkx93GT8tTUVRhx15edBis,662
|
|
168
166
|
nextmv/default_app/app.yaml,sha256=TKjKnuoK0SDpouB_AS7TQmE_8HZbQYjmwFvhzFL1xpc,382
|
|
169
167
|
nextmv/default_app/input.json,sha256=zgvbKL3boB0WIU6-9mEU3ZWBddQ5cQ0vhgmDwDyz4hE,63
|
|
170
|
-
nextmv/default_app/main.py,sha256=
|
|
168
|
+
nextmv/default_app/main.py,sha256=j5L0itCyXKl3ezgkaS0cToLHzSl26Ah-PYr0gvxizxU,815
|
|
171
169
|
nextmv/default_app/requirements.txt,sha256=wRE_HkYYWzCGnYZ2NuatHXul4gCHvU3iUAdsxtzpYiA,29
|
|
172
170
|
nextmv/default_app/src/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
173
171
|
nextmv/default_app/src/visuals.py,sha256=WYK_YBnLmYo3TpVev1CpoNCuW5R7hk9QIkeCmvMn1Fs,1014
|
|
174
172
|
nextmv/local/__init__.py,sha256=6BsoqlK4dw6X11_uKzz9gBPfxKpdiol2FYO8R3X73SE,116
|
|
175
173
|
nextmv/local/application.py,sha256=SBOARPnffAH6q-S0GGPEjt0gYIXmeR-38-VcZMfhqKk,47745
|
|
176
|
-
nextmv/local/executor.py,sha256=
|
|
177
|
-
nextmv/local/geojson_handler.py,sha256=
|
|
174
|
+
nextmv/local/executor.py,sha256=BxR7QWb4RekeFphJ4rOvJs8fYZGIQfgWlc75b8I7GRU,39310
|
|
175
|
+
nextmv/local/geojson_handler.py,sha256=CVlW5iof-8AODudEQ-a_o6WHqAeULfQS7-oJHf1-sAQ,12538
|
|
178
176
|
nextmv/local/local.py,sha256=cp56UpI8h19Ob6Jvb_Ni0ceXH5Vv3ET_iPTDe6ftq3Y,2617
|
|
179
177
|
nextmv/local/plotly_handler.py,sha256=bLb50e3AkVr_W-F6S7lXfeRdN60mG2jk3UElNmhoMWU,1930
|
|
180
178
|
nextmv/local/runner.py,sha256=bM1dFIAG4f9pEtbyevzkRa9nSppqTeD8naomNzJVBRU,8560
|
|
181
|
-
nextmv-1.0.0.
|
|
182
|
-
nextmv-1.0.0.
|
|
183
|
-
nextmv-1.0.0.
|
|
184
|
-
nextmv-1.0.0.
|
|
185
|
-
nextmv-1.0.0.
|
|
179
|
+
nextmv-1.0.0.dev8.dist-info/METADATA,sha256=f8DkOWUbGdeNNNBWcVrcHD7z0CAP9PgAWrDr6QOFK3Q,16484
|
|
180
|
+
nextmv-1.0.0.dev8.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
181
|
+
nextmv-1.0.0.dev8.dist-info/entry_points.txt,sha256=bH7kXUt_IOLpeW_O7Z-J2gALs2YYJ4CmWuzS8MdK6uY,48
|
|
182
|
+
nextmv-1.0.0.dev8.dist-info/licenses/LICENSE,sha256=ZIbK-sSWA-OZprjNbmJAglYRtl5_K4l9UwAV3PGJAPc,11349
|
|
183
|
+
nextmv-1.0.0.dev8.dist-info/RECORD,,
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
This module defines the cloud input-set delete command for the Nextmv CLI.
|
|
3
|
-
"""
|
|
4
|
-
|
|
5
|
-
from typing import Annotated
|
|
6
|
-
|
|
7
|
-
import typer
|
|
8
|
-
|
|
9
|
-
from nextmv.cli.configuration.config import build_app
|
|
10
|
-
from nextmv.cli.confirm import get_confirmation
|
|
11
|
-
from nextmv.cli.message import info, success
|
|
12
|
-
from nextmv.cli.options import AppIDOption, InputSetIDOption, ProfileOption
|
|
13
|
-
|
|
14
|
-
# Set up subcommand application.
|
|
15
|
-
app = typer.Typer()
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
@app.command()
|
|
19
|
-
def delete(
|
|
20
|
-
app_id: AppIDOption,
|
|
21
|
-
input_set_id: InputSetIDOption,
|
|
22
|
-
yes: Annotated[
|
|
23
|
-
bool,
|
|
24
|
-
typer.Option(
|
|
25
|
-
"--yes",
|
|
26
|
-
"-y",
|
|
27
|
-
help="Agree to deletion confirmation prompt. Useful for non-interactive sessions.",
|
|
28
|
-
),
|
|
29
|
-
] = False,
|
|
30
|
-
profile: ProfileOption = None,
|
|
31
|
-
) -> None:
|
|
32
|
-
"""
|
|
33
|
-
Deletes a Nextmv Cloud input set.
|
|
34
|
-
|
|
35
|
-
This action is permanent and cannot be undone. The input set and all
|
|
36
|
-
associated data will be deleted. Use the --yes flag to skip the
|
|
37
|
-
confirmation prompt.
|
|
38
|
-
|
|
39
|
-
[bold][underline]Examples[/underline][/bold]
|
|
40
|
-
|
|
41
|
-
- Delete the input set with the ID [magenta]hop-analysis[/magenta] from application
|
|
42
|
-
[magenta]hare-app[/magenta].
|
|
43
|
-
$ [dim]nextmv cloud input-set delete --app-id hare-app --input-set-id hop-analysis[/dim]
|
|
44
|
-
|
|
45
|
-
- Delete the input set without confirmation prompt.
|
|
46
|
-
$ [dim]nextmv cloud input-set delete --app-id hare-app --input-set-id carrot-routes --yes[/dim]
|
|
47
|
-
"""
|
|
48
|
-
|
|
49
|
-
if not yes:
|
|
50
|
-
confirm = get_confirmation(
|
|
51
|
-
f"Are you sure you want to delete input set [magenta]{input_set_id}[/magenta] "
|
|
52
|
-
f"from application [magenta]{app_id}[/magenta]? This action cannot be undone.",
|
|
53
|
-
)
|
|
54
|
-
|
|
55
|
-
if not confirm:
|
|
56
|
-
info(
|
|
57
|
-
msg=f"Input set [magenta]{input_set_id}[/magenta] will not be deleted.",
|
|
58
|
-
emoji=":bulb:",
|
|
59
|
-
)
|
|
60
|
-
return
|
|
61
|
-
|
|
62
|
-
cloud_app = build_app(app_id=app_id, profile=profile)
|
|
63
|
-
cloud_app.delete_input_set(input_set_id=input_set_id)
|
|
64
|
-
success(
|
|
65
|
-
f"Input set [magenta]{input_set_id}[/magenta] deleted successfully "
|
|
66
|
-
f"from application [magenta]{app_id}[/magenta]."
|
|
67
|
-
)
|