nextmv 1.0.0.dev9__py3-none-any.whl → 1.1.0.dev0__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.
Files changed (59) hide show
  1. nextmv/__about__.py +1 -1
  2. nextmv/cli/CONTRIBUTING.md +31 -11
  3. nextmv/cli/cloud/__init__.py +2 -0
  4. nextmv/cli/cloud/acceptance/delete.py +1 -4
  5. nextmv/cli/cloud/account/__init__.py +5 -3
  6. nextmv/cli/cloud/account/create.py +4 -1
  7. nextmv/cli/cloud/account/delete.py +1 -1
  8. nextmv/cli/cloud/app/delete.py +1 -1
  9. nextmv/cli/cloud/app/push.py +23 -42
  10. nextmv/cli/cloud/batch/delete.py +1 -4
  11. nextmv/cli/cloud/ensemble/delete.py +1 -4
  12. nextmv/cli/cloud/input_set/__init__.py +2 -0
  13. nextmv/cli/cloud/input_set/delete.py +64 -0
  14. nextmv/cli/cloud/instance/delete.py +1 -1
  15. nextmv/cli/cloud/managed_input/delete.py +1 -1
  16. nextmv/cli/cloud/run/create.py +4 -9
  17. nextmv/cli/cloud/scenario/delete.py +1 -4
  18. nextmv/cli/cloud/secrets/delete.py +1 -4
  19. nextmv/cli/cloud/shadow/delete.py +1 -4
  20. nextmv/cli/cloud/shadow/stop.py +14 -2
  21. nextmv/cli/cloud/sso/__init__.py +32 -0
  22. nextmv/cli/cloud/sso/create.py +97 -0
  23. nextmv/cli/cloud/sso/delete.py +58 -0
  24. nextmv/cli/cloud/sso/disable.py +56 -0
  25. nextmv/cli/cloud/sso/enable.py +56 -0
  26. nextmv/cli/cloud/sso/get.py +61 -0
  27. nextmv/cli/cloud/sso/update.py +78 -0
  28. nextmv/cli/cloud/switchback/delete.py +1 -4
  29. nextmv/cli/cloud/switchback/stop.py +14 -2
  30. nextmv/cli/cloud/version/delete.py +1 -1
  31. nextmv/cli/community/__init__.py +1 -1
  32. nextmv/cli/community/clone.py +11 -198
  33. nextmv/cli/community/list.py +51 -116
  34. nextmv/cli/configuration/config.py +27 -0
  35. nextmv/cli/configuration/create.py +4 -4
  36. nextmv/cli/configuration/delete.py +1 -1
  37. nextmv/cli/main.py +2 -3
  38. nextmv/cli/message.py +71 -54
  39. nextmv/cloud/__init__.py +5 -0
  40. nextmv/cloud/account.py +12 -10
  41. nextmv/cloud/application/__init__.py +12 -204
  42. nextmv/cloud/application/_acceptance.py +13 -8
  43. nextmv/cloud/application/_input_set.py +42 -6
  44. nextmv/cloud/application/_run.py +2 -2
  45. nextmv/cloud/application/_shadow.py +9 -3
  46. nextmv/cloud/application/_switchback.py +11 -2
  47. nextmv/cloud/batch_experiment.py +3 -1
  48. nextmv/cloud/community.py +446 -0
  49. nextmv/cloud/integration.py +7 -4
  50. nextmv/cloud/shadow.py +25 -0
  51. nextmv/cloud/sso.py +248 -0
  52. nextmv/cloud/switchback.py +2 -0
  53. nextmv/model.py +40 -4
  54. nextmv/options.py +1 -1
  55. {nextmv-1.0.0.dev9.dist-info → nextmv-1.1.0.dev0.dist-info}/METADATA +3 -1
  56. {nextmv-1.0.0.dev9.dist-info → nextmv-1.1.0.dev0.dist-info}/RECORD +59 -49
  57. {nextmv-1.0.0.dev9.dist-info → nextmv-1.1.0.dev0.dist-info}/WHEEL +0 -0
  58. {nextmv-1.0.0.dev9.dist-info → nextmv-1.1.0.dev0.dist-info}/entry_points.txt +0 -0
  59. {nextmv-1.0.0.dev9.dist-info → nextmv-1.1.0.dev0.dist-info}/licenses/LICENSE +0 -0
nextmv/cloud/sso.py ADDED
@@ -0,0 +1,248 @@
1
+ """
2
+ Single Sign-On (SSO) functionality for the Nextmv Cloud API.
3
+
4
+ This module provides classes and methods to manage Single Sign-On (SSO)
5
+ configurations for Nextmv Cloud organizations (accounts).
6
+
7
+ Classes
8
+ -------
9
+ SSOConfiguration
10
+ Represents the SSO configuration for a Nextmv Cloud organization (account)
11
+ and provides methods to create, retrieve, update, enable, disable, and
12
+ delete SSO configurations.
13
+ """
14
+
15
+ from pydantic import Field
16
+
17
+ from nextmv.base_model import BaseModel
18
+ from nextmv.cloud.client import Client
19
+
20
+
21
+ class SSOConfiguration(BaseModel):
22
+ """
23
+ Configuration for Single Sign-On (SSO) in Nextmv Cloud.
24
+
25
+ You can import the `SSOConfiguration` class directly from `cloud`:
26
+
27
+ ```python
28
+ from nextmv.cloud import SSOConfiguration
29
+ ```
30
+
31
+ Attributes
32
+ ----------
33
+ allow_non_domain_users : bool, optional
34
+ Whether to allow users who are not part of the SSO domain to access the
35
+ Nextmv Cloud organization (account). Default is `False`.
36
+ enabled : bool, optional
37
+ Whether SSO is enabled for the Nextmv Cloud organization (account).
38
+ metadata_url : str, optional
39
+ The URL to the SSO metadata document.
40
+ metadata_document : str, optional
41
+ The SSO metadata document as a string.
42
+ client : Client
43
+ Client to use for interacting with the Nextmv Cloud API. This is an
44
+ SDK-specific attribute and it is not part of the API representation of
45
+ an SSO configuration.
46
+ sso_endpoint : str
47
+ Base endpoint for SSO operations. This is an SDK-specific attribute and
48
+ it is not part of the API representation of an SSO configuration.
49
+ """
50
+
51
+ allow_non_domain_users: bool = False
52
+ """
53
+ Whether to allow users who are not part of the SSO domain to access the
54
+ Nextmv Cloud organization (account).
55
+ """
56
+
57
+ enabled: bool | None = None
58
+ """
59
+ Whether SSO is enabled for the Nextmv Cloud organization (account).
60
+ """
61
+ metadata_url: str | None = None
62
+ """
63
+ The URL to the SSO metadata document.
64
+ """
65
+ metadata_document: str | None = None
66
+ """
67
+ The SSO metadata document as a string.
68
+ """
69
+
70
+ # SDK-specific attributes for convenience when using methods.
71
+ client: Client = Field(exclude=True)
72
+ """Client to use for interacting with the Nextmv Cloud API."""
73
+ sso_endpoint: str = Field(exclude=True, default="/v1/enterprise/sso")
74
+
75
+ @classmethod
76
+ def get(cls, client: Client) -> "SSOConfiguration":
77
+ """
78
+ Retrieve the SSO configuration for the current Nextmv Cloud
79
+ organization (account).
80
+
81
+ Parameters
82
+ ----------
83
+ client : Client
84
+ Client to use for interacting with the Nextmv Cloud API.
85
+
86
+ Returns
87
+ -------
88
+ SSOConfiguration
89
+ The SSO configuration for the organization (account).
90
+
91
+ Raises
92
+ ------
93
+ requests.HTTPError
94
+ If the response status code is not 2xx.
95
+ """
96
+
97
+ response = client.request(
98
+ method="GET",
99
+ endpoint=cls.sso_endpoint,
100
+ )
101
+
102
+ return cls.from_dict({"client": client} | response.json())
103
+
104
+ @classmethod
105
+ def new(
106
+ cls,
107
+ client: Client,
108
+ allow_non_domain_users: bool = False,
109
+ enabled: bool | None = None,
110
+ metadata_url: str | None = None,
111
+ metadata_document: str | None = None,
112
+ ) -> "SSOConfiguration":
113
+ """
114
+ Create a new SSO configuration for the current Nextmv Cloud
115
+ organization (account).
116
+
117
+ Parameters
118
+ ----------
119
+ client : Client
120
+ Client to use for interacting with the Nextmv Cloud API.
121
+ allow_non_domain_users : bool, optional
122
+ Whether to allow users who are not part of the SSO domain to access
123
+ the Nextmv Cloud organization (account). Default is `False`.
124
+ enabled : bool, optional
125
+ Whether SSO is enabled for the Nextmv Cloud organization (account).
126
+ metadata_url : str, optional
127
+ The URL to the SSO metadata document.
128
+ metadata_document : str, optional
129
+ The SSO metadata document as a string.
130
+
131
+ Returns
132
+ -------
133
+ SSOConfiguration
134
+ The newly created SSO configuration for the organization (account).
135
+
136
+ Raises
137
+ ------
138
+ requests.HTTPError
139
+ If the response status code is not 2xx.
140
+ """
141
+
142
+ payload = {
143
+ "allow_non_domain_users": allow_non_domain_users,
144
+ "enabled": enabled,
145
+ "metadata_url": metadata_url,
146
+ "metadata_document": metadata_document,
147
+ }
148
+
149
+ response = client.request(
150
+ method="POST",
151
+ endpoint=cls.sso_endpoint,
152
+ json=payload,
153
+ )
154
+
155
+ return cls.from_dict({"client": client} | response.json())
156
+
157
+ def delete(self) -> None:
158
+ """
159
+ Delete the SSO configuration for the current Nextmv Cloud
160
+ organization (account).
161
+
162
+ Raises
163
+ ------
164
+ requests.HTTPError
165
+ If the response status code is not 2xx.
166
+ """
167
+
168
+ self.client.request(
169
+ method="DELETE",
170
+ endpoint=self.sso_endpoint,
171
+ )
172
+
173
+ def disable(self) -> None:
174
+ """
175
+ Disable SSO for the current Nextmv Cloud organization (account).
176
+
177
+ Raises
178
+ ------
179
+ requests.HTTPError
180
+ If the response status code is not 2xx.
181
+ """
182
+
183
+ self.client.request(
184
+ method="PUT",
185
+ endpoint=f"{self.sso_endpoint}/disable",
186
+ )
187
+
188
+ def enable(self) -> None:
189
+ """
190
+ Enable SSO for the current Nextmv Cloud organization (account).
191
+
192
+ Raises
193
+ ------
194
+ requests.HTTPError
195
+ If the response status code is not 2xx.
196
+ """
197
+
198
+ self.client.request(
199
+ method="PUT",
200
+ endpoint=f"{self.sso_endpoint}/enable",
201
+ )
202
+
203
+ def update(
204
+ self,
205
+ metadata_url: str | None = None,
206
+ metadata_document: str | None = None,
207
+ ) -> "SSOConfiguration":
208
+ """
209
+ Update the SSO configuration for the current Nextmv Cloud
210
+ organization (account).
211
+
212
+ If you wish to enable or disable SSO, please use the `enable` and
213
+ `disable` methods instead.
214
+
215
+ Parameters
216
+ ----------
217
+ metadata_url : str, optional
218
+ The URL to the SSO metadata document.
219
+ metadata_document : str, optional
220
+ The SSO metadata document as a string.
221
+
222
+ Returns
223
+ -------
224
+ SSOConfiguration
225
+ The updated SSO configuration for the organization (account).
226
+
227
+ Raises
228
+ ------
229
+ requests.HTTPError
230
+ If the response status code is not 2xx.
231
+ """
232
+
233
+ config = self.get(self.client)
234
+ config_dict = config.to_dict()
235
+ payload = config_dict.copy()
236
+
237
+ if metadata_url is not None and metadata_url != "":
238
+ payload["metadata_url"] = metadata_url
239
+ if metadata_document is not None and metadata_document != "":
240
+ payload["metadata_document"] = metadata_document
241
+
242
+ response = self.client.request(
243
+ method="PUT",
244
+ endpoint=self.sso_endpoint,
245
+ json=payload,
246
+ )
247
+
248
+ return self.from_dict({"client": self.client} | response.json())
@@ -45,6 +45,8 @@ class TestComparisonSingle(BaseModel):
45
45
  ID of the candidate instance for comparison.
46
46
  """
47
47
 
48
+ __test__ = False # Prevents pytest from collecting this class as a test case
49
+
48
50
  baseline_instance_id: str
49
51
  """ID of the baseline instance for comparison."""
50
52
  candidate_instance_id: str
nextmv/model.py CHANGED
@@ -18,6 +18,8 @@ deployed to Nextmv Cloud for execution.
18
18
  import logging
19
19
  import os
20
20
  import shutil
21
+ import sqlite3
22
+ import time
21
23
  import warnings
22
24
  from dataclasses import dataclass
23
25
  from typing import Any
@@ -344,6 +346,9 @@ class Model:
344
346
 
345
347
  _cleanup_python_model(model_dir, configuration, verbose=False)
346
348
 
349
+ # Removing this seems to make the "apps from models" experience once
350
+ # again. I am not removing it entirely because we might want to
351
+ # re-introduce it later on.
347
352
  # signature = None
348
353
  # if configuration.options is not None:
349
354
  # options_dict = configuration.options.to_dict()
@@ -359,7 +364,7 @@ class Model:
359
364
  path=model_path, # Customize the name of the model location.
360
365
  infer_code_paths=True, # Makes the imports portable.
361
366
  python_model=MLFlowModel(),
362
- # signature=signature, # Allows us to work with our own `Options` class.
367
+ # signature=signature, # Please see comment above about keeping this in case we need to go back.
363
368
  )
364
369
 
365
370
  # Create an auxiliary requirements file with the model dependencies.
@@ -418,9 +423,7 @@ def _cleanup_python_model(
418
423
  if os.path.exists(model_path):
419
424
  shutil.rmtree(model_path)
420
425
 
421
- mlflow_db_path = os.path.join(model_dir, "mlflow.db")
422
- if os.path.exists(mlflow_db_path):
423
- os.remove(mlflow_db_path)
426
+ _cleanup_mlflow_db(model_dir)
424
427
 
425
428
  requirements_file = os.path.join(model_dir, _REQUIREMENTS_FILE)
426
429
  if os.path.exists(requirements_file):
@@ -432,3 +435,36 @@ def _cleanup_python_model(
432
435
 
433
436
  if verbose:
434
437
  log("🧹 Cleaned up Python model artifacts.")
438
+
439
+
440
+ def _cleanup_mlflow_db(model_dir: str) -> None:
441
+ """
442
+ Clean up the mlflow.db file created during model packaging.
443
+
444
+ Parameters
445
+ ----------
446
+ model_dir : str
447
+ The directory where the model was saved.
448
+ """
449
+ mlflow_db_path = os.path.join(model_dir, "mlflow.db")
450
+ if not os.path.exists(mlflow_db_path):
451
+ return
452
+
453
+ # Try to close any open SQLite connections and retry deletion
454
+ max_retries = 5
455
+ for attempt in range(max_retries):
456
+ try:
457
+ # Attempt to connect and close to release any locks
458
+ try:
459
+ conn = sqlite3.connect(mlflow_db_path)
460
+ conn.close()
461
+ except Exception:
462
+ pass
463
+ os.remove(mlflow_db_path)
464
+ break
465
+ except PermissionError:
466
+ if attempt < max_retries - 1:
467
+ time.sleep(0.5)
468
+ else:
469
+ log(f"Could not delete {mlflow_db_path} after {max_retries} retries due to file lock.")
470
+ break
nextmv/options.py CHANGED
@@ -695,7 +695,7 @@ class Options:
695
695
  help=argparse.SUPPRESS,
696
696
  default="1",
697
697
  )
698
- args = parser.parse_args()
698
+ args, _ = parser.parse_known_args()
699
699
 
700
700
  for arg in vars(args):
701
701
  if arg == "fff" or arg == "f":
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nextmv
3
- Version: 1.0.0.dev9
3
+ Version: 1.1.0.dev0
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,10 +230,12 @@ 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>=3.9.0; extra == 'dev'
233
+ Requires-Dist: nextpipe>=0.6.0; extra == 'dev'
233
234
  Requires-Dist: openpyxl>=3.1.5; extra == 'dev'
234
235
  Requires-Dist: pandas>=2.2.3; extra == 'dev'
235
236
  Requires-Dist: plotly>=6.0.1; extra == 'dev'
236
237
  Requires-Dist: pydantic>=2.5.2; extra == 'dev'
238
+ Requires-Dist: pytest>=9.0.2; extra == 'dev'
237
239
  Requires-Dist: pyyaml>=6.0.1; extra == 'dev'
238
240
  Requires-Dist: requests>=2.31.0; extra == 'dev'
239
241
  Requires-Dist: ruff>=0.1.7; extra == 'dev'
@@ -1,4 +1,4 @@
1
- nextmv/__about__.py,sha256=VlLsZkZ0zjltxAYOr-XbXribwiPhO-YMZ5Qymsv1Se0,28
1
+ nextmv/__about__.py,sha256=sdMWpxPaxLx9snT2SjJ_Sjn3ddOnm-EdMGcDpyW0Zu0,28
2
2
  nextmv/__entrypoint__.py,sha256=XMT-ds1f2Yc6KoI2C0YEH-rJj5gVLfJMqUdRfcA3_KQ,1070
3
3
  nextmv/__init__.py,sha256=LwpGBSiV0UG13zKHO2N3Ikb7bCMV08Gfbl6Cp80b_2g,3813
4
4
  nextmv/_serialization.py,sha256=jYitMS1MU8ldsmObT-K_8V8P2Wx69tnDiEHCCgPGun4,2834
@@ -7,43 +7,43 @@ 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
9
  nextmv/manifest.py,sha256=v9En9zMZVKZn6G_HThoKUZowMtZr5hxzwWiK9wkVHPU,49023
10
- nextmv/model.py,sha256=GWzg9eWtTKjZqsQNvMPWdv5BLLb63Ied_q2koXxiCxM,15066
11
- nextmv/options.py,sha256=3BnnuAoiFD6qr0EMYv1VgAXarDjLb-t7OpC1IpsnS1M,29648
10
+ nextmv/model.py,sha256=LxmWU8bPNlAap_9etPRydsgmgfH7Tgh0OXBLhIve7HY,16212
11
+ nextmv/options.py,sha256=PZtw2SIK48gkjzbJwMN6nfXm_3Utaa_ZUd23Y1XxS2Q,29657
12
12
  nextmv/output.py,sha256=MbmI7t8p2LhKD1T--IZnsHvIuFY_TM8wTNCdLQVWs2A,54356
13
13
  nextmv/polling.py,sha256=fwnAxmfpuBg4d6pi53TRTyyefdpf-cHLoTG6trAu-QA,11048
14
14
  nextmv/run.py,sha256=8tkRQexJC8JN7IkLlhpwEW5pEudxwDq2sC_PImfwReI,54126
15
15
  nextmv/safe.py,sha256=VAK4fGEurbLNji4Pg5Okga5XQSbI4aI9JJf95_68Z20,3867
16
16
  nextmv/status.py,sha256=VqmOgxiEK89Y88ZUxZPfUXmY0HqvN28Lc1PDt0-9PLw,1600
17
- nextmv/cli/CONTRIBUTING.md,sha256=xM_skfI1WPh2UtZ1axbB8AfOLJ3LZk8YhQpZY4qtSqw,21911
17
+ nextmv/cli/CONTRIBUTING.md,sha256=5o6QgwqWXbE8pNigf0859oPYum8cy2lgCYFppoP8whc,22705
18
18
  nextmv/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
19
  nextmv/cli/confirm.py,sha256=1CBzH_StMerGmeJYPjm5AizhkKDDtrA-2_S4x0MmBE4,809
20
- nextmv/cli/main.py,sha256=Rbho_HCVxVYfGhx2cOl2d1lTn_OOHXjEfb2BjG3FCyw,5551
21
- nextmv/cli/message.py,sha256=2qCU-JC8Pcd67FjZrovGgijuCd_tvx_ByEKGG67HQtU,3560
20
+ nextmv/cli/main.py,sha256=AwkIavXOAY-WmLA7F9eY2o6RWTOYHhgZiLs6WeqcB2E,5518
21
+ nextmv/cli/message.py,sha256=NWeCmpkA_IEDay3Fu3YjNN9eSi3p8e-Tw9wp1qAjfXI,3809
22
22
  nextmv/cli/options.py,sha256=ymd6Y7_ZQkln35nHw3pLnFpqivgmJfuYAnyizmEuonc,6887
23
23
  nextmv/cli/version.py,sha256=VRbfNpUvCFYPcphr-F3Ph4Z4UwtVis4keyVFHj1JISw,681
24
- nextmv/cli/cloud/__init__.py,sha256=pywNNBy_poHaKn3_oIZRR9DDE8w3u65KvLpnX6S0BQI,1886
24
+ nextmv/cli/cloud/__init__.py,sha256=0Ec_ettl3cHcLt_tgH6z1M1HGtADxdHLUBBwvmCj4rA,1969
25
25
  nextmv/cli/cloud/acceptance/__init__.py,sha256=v4U1m6z5zI8mQpmIE4kFeEYOsaDxnGRnRj2j5I6WueI,711
26
26
  nextmv/cli/cloud/acceptance/create.py,sha256=Mtiy7fMBU5Ay_hxb2DXxdaM2XvR_QDbldtyjQIAaelQ,14582
27
- nextmv/cli/cloud/acceptance/delete.py,sha256=julZ6Bs6YcsmyuE00yPjPScIRz4QteNt-GUR4J2Hp_I,2260
27
+ nextmv/cli/cloud/acceptance/delete.py,sha256=htN7XqGudKhSrDpUwWhcb5VUp-sf4PTRZpqf5ObzAg8,2193
28
28
  nextmv/cli/cloud/acceptance/get.py,sha256=pb3hRdIiynTi4K7xDNCMJE7bW46FE-X3EoAQU8kQJjE,3438
29
29
  nextmv/cli/cloud/acceptance/list.py,sha256=9tTV4B2lgDqNxDnaNXkHxeh7jUQuAu9GQJsEKJ_NqIo,1881
30
30
  nextmv/cli/cloud/acceptance/update.py,sha256=ZyhYlkA7Sp0WWMewV774elwvjFKhyg-7jIE9L1yeipU,2912
31
- nextmv/cli/cloud/account/__init__.py,sha256=N3WqUHe48tBFWQ_I83EAgL_ng-y0tN6qHKROIMMxQhE,768
32
- nextmv/cli/cloud/account/create.py,sha256=V8f2zlGryBHKR3TBI3A7t9MSSaS8GHMClYquGQXqRrQ,2876
33
- nextmv/cli/cloud/account/delete.py,sha256=2pwFTkKnBv9ezG9kdsKesi8gxbrDUQGsteIuzGxLdOM,1848
31
+ nextmv/cli/cloud/account/__init__.py,sha256=-jKD2vNYCs1RKmJ5LmgYE8jnmwKnvCBPVeHSdNFkHx0,882
32
+ nextmv/cli/cloud/account/create.py,sha256=D1jeUrPUgcWx4NnqxIJyI9hVkVa46k0tbGjSumfyWWw,3002
33
+ nextmv/cli/cloud/account/delete.py,sha256=G6vblaHK21goNPIGRnTQyLDpZuPvRdMa5QEsZ566hF8,1828
34
34
  nextmv/cli/cloud/account/get.py,sha256=KT0Cs2ZQtZV4D0efAjMIj47RSKSSsU3-1ZApH8oYzLU,1860
35
35
  nextmv/cli/cloud/account/update.py,sha256=z_g_uEAgBJDcb0Kh80NbKTA7gycrJb6hHjJPVG9wEVw,2124
36
36
  nextmv/cli/cloud/app/__init__.py,sha256=-ex_7C34XY1K3bU8hQ9vdnjJEzNamuuHNuK_cJSkHac,1037
37
37
  nextmv/cli/cloud/app/create.py,sha256=JPVRFsnuN1ffvsAb1A6AbbRbkF6bLXjN6AqSoy7JY3c,4680
38
- nextmv/cli/cloud/app/delete.py,sha256=HLgDx4eMf_LYyGC8aQxuvNrhOfnWmDuutPjk4ywILaE,1702
38
+ nextmv/cli/cloud/app/delete.py,sha256=5OaLFOnmwhaMOG2507ZsoyAMz_fvZi6BGFfzDFDvfE4,1682
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=mbGThAgmfxO2JqfXq8HXAdRT81b55MBfCGaDtSJQsUM,15624
42
+ nextmv/cli/cloud/app/push.py,sha256=GbyiVcf5U-lCGL_hy5Ya6ihnNFleYD8_rrg5PJ3oSOg,15369
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
46
- nextmv/cli/cloud/batch/delete.py,sha256=BtNf2o-WHLtRo2ws3IaK2JJ5Ns1wYQSe8opTq-WNy1Q,2245
46
+ nextmv/cli/cloud/batch/delete.py,sha256=S_qmQi5l57maJ2sAJtS-ie5FFZh_KykdWbGHBeKil8E,2178
47
47
  nextmv/cli/cloud/batch/get.py,sha256=t0yMITCeagJPDJee_b83a0JINiL3yLeWouLzBeWJCnE,3485
48
48
  nextmv/cli/cloud/batch/list.py,sha256=ustDRT0-YNFcri80m32JaXynid0L5tDEN6cXzKqYTYo,1880
49
49
  nextmv/cli/cloud/batch/metadata.py,sha256=GnQT5e_KiAH8yYnDk4njb7ejt5q4LYv3MJl1b6uXY1U,2216
@@ -52,31 +52,32 @@ nextmv/cli/cloud/data/__init__.py,sha256=CZ_htB1sa25nJDugrAi-HbQsfNu-8of0yFAqgbm
52
52
  nextmv/cli/cloud/data/upload.py,sha256=dVa5Xf0al8cTs1wRJlDXDQ210rpG9Jy0WA21H85iVis,5668
53
53
  nextmv/cli/cloud/ensemble/__init__.py,sha256=CVcuxGpPyLeU1eDMBCk1eT0mYy-FWKiyboh1VWwZxfc,1056
54
54
  nextmv/cli/cloud/ensemble/create.py,sha256=wO8vzEUqoEg_QHF_S3ljmbo_XulOKhvbeJg_atznDpw,14873
55
- nextmv/cli/cloud/ensemble/delete.py,sha256=C1xmISSaUhtsV94w2z2rzhenp2mm9E0GXHy4dAVG3So,2235
55
+ nextmv/cli/cloud/ensemble/delete.py,sha256=k44YxkyvppDFhMEFPEkMSc0nlNN7GXXIhy4ltIbdM9w,2168
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=wyt0LX9xqcGDrb-rPx-MN0WQA7o9jZnK2CpShfrki3o,867
59
+ nextmv/cli/cloud/input_set/__init__.py,sha256=qDyIc0JJm1oU9tyt9MgjkJL6VKXSFCySPTKKHqfLHCM,957
60
60
  nextmv/cli/cloud/input_set/create.py,sha256=nJWsaj-fPXS8rwIbh13_wXc9SitDA4ByIHhlBS51GHo,5661
61
+ nextmv/cli/cloud/input_set/delete.py,sha256=jPm_xcw5d4vPSrykgHRPqBONokyF9a8deDBN6cowxT8,2058
61
62
  nextmv/cli/cloud/input_set/get.py,sha256=MvMD6tmMA_ui4MVCwRkOnmU0WySJmSJX7x2Q-x_xXwA,1916
62
63
  nextmv/cli/cloud/input_set/list.py,sha256=7I0F1rs19bY9d_V2TjEFxHCbHq3bNV_mO0Fd9qJ58IY,1896
63
64
  nextmv/cli/cloud/input_set/update.py,sha256=P5b94m08hGMAGr455fH-Cd1yryeMC15r1YfmJEt2NSw,4144
64
65
  nextmv/cli/cloud/instance/__init__.py,sha256=UH46OH_xNpGGzIbUTMHBXZ7SLStikOhz1iC8lO2Nfjs,1111
65
66
  nextmv/cli/cloud/instance/create.py,sha256=4gVp8K3yyJDUQ0NqHRl-quswH8XuF8kBMezC9feweJc,9640
66
- nextmv/cli/cloud/instance/delete.py,sha256=jtOIb7-eJtzkEcroQee9aPRNViA9Ck0xprB4fgBWOFA,1970
67
+ nextmv/cli/cloud/instance/delete.py,sha256=k5HH5K3LAK645i4_so2EUxDNyGX5C97WG2UAp1yXVCI,1950
67
68
  nextmv/cli/cloud/instance/exists.py,sha256=c3I8MU9efvc3YLwo-PUV7U4HiHgku-RZL_CQGWG2UTw,1320
68
69
  nextmv/cli/cloud/instance/get.py,sha256=To5WFwLi8XmcT3yMA0ZTqwHFM1JBclTMtpuAMNiEXo0,1872
69
70
  nextmv/cli/cloud/instance/list.py,sha256=df_gxIUz3COGwekbqg-hBDKLGVz8fV_FY3rRRb5iPZg,1791
70
71
  nextmv/cli/cloud/instance/update.py,sha256=skrxC7oCOqND_U8EnyQT27YAuWEaqgUEpFzlx4Yn5g8,7327
71
72
  nextmv/cli/cloud/managed_input/__init__.py,sha256=aS1YQ_nN92Z7-GG-geEiEABx_fq5nVS23Nii6W8uGbQ,940
72
73
  nextmv/cli/cloud/managed_input/create.py,sha256=wHqGBiMSyxbpdu02KxF5srUcZA6t3MZqa3EmMWC_0eY,4868
73
- nextmv/cli/cloud/managed_input/delete.py,sha256=6zmkt6qUQm8QZlecRFupq_TbMxIboyqJzbJxusqFCzM,2127
74
+ nextmv/cli/cloud/managed_input/delete.py,sha256=guOqv0IkJZStyHwqfjiWdm-b1Dbs4NUBZikKv_7-NQs,2107
74
75
  nextmv/cli/cloud/managed_input/get.py,sha256=Rl2RmSOmMUXy2XAiaKhgLwE8RvqF8crfmfY3PfxjlfE,2045
75
76
  nextmv/cli/cloud/managed_input/list.py,sha256=6l4zJPVErmooobteBn05RmoXHgvI0RBt_Lnb-Z_rDYU,1896
76
77
  nextmv/cli/cloud/managed_input/update.py,sha256=E1ddfQ9VJ7SgG8V6kkRYbgKhS4vDyv06WePNbLEXUsE,3191
77
78
  nextmv/cli/cloud/run/__init__.py,sha256=KyonwVd5lfweaq-cIpPuRAzHFrK0slfqJsIjsT_p4PU,1102
78
79
  nextmv/cli/cloud/run/cancel.py,sha256=d7aQQQmek_i3P2cDmpOohLiwSjWxfKEiVAvBnNYAmuE,1259
79
- nextmv/cli/cloud/run/create.py,sha256=eGjlYCWGf_57Qlqbaok-iLzcLmHAaCZor6TskhMabPk,19706
80
+ nextmv/cli/cloud/run/create.py,sha256=39D4VdcfYRioziIy-qjLDSs-_dhSavrkmzcltUfgz3M,19526
80
81
  nextmv/cli/cloud/run/get.py,sha256=bUczN6a1SV3wkW0uUPfQdO3i13BF51udixmuyiicdi8,7826
81
82
  nextmv/cli/cloud/run/input.py,sha256=QEdDnKxEmucUwPPRAqh1VuErw5rKaAwXOHrmJESP-k0,3171
82
83
  nextmv/cli/cloud/run/list.py,sha256=z3286Q0Aznz-qAvanCB03rXjCfGPk84A32t8AqTC2Cs,2563
@@ -85,80 +86,89 @@ nextmv/cli/cloud/run/metadata.py,sha256=R2vOndXVQ9U2fooZdL0rmKR3j5uimS-Z8ElS8zH8
85
86
  nextmv/cli/cloud/run/track.py,sha256=xOGvv93popCf6HpaoGTXPSgm3s4kh5NNgGmQEWVI7gs,17867
86
87
  nextmv/cli/cloud/scenario/__init__.py,sha256=lHblPFBIlCGjRzEw9VLEG8dPKoWRKyi88a2VYfXwqsM,792
87
88
  nextmv/cli/cloud/scenario/create.py,sha256=JFaVucmznc_fo5o6PVTaDhWjtxtMBU1hCthJgpI8UoA,15524
88
- nextmv/cli/cloud/scenario/delete.py,sha256=AclEOwM6Z_1_OOu3lnXWpVlpEPHQ3zPEGbFiiQOMpUM,2114
89
+ nextmv/cli/cloud/scenario/delete.py,sha256=eHP3NnrGLqEPcwFrVY6aTPSHMIqVkE9MdE7XMILlvCE,2047
89
90
  nextmv/cli/cloud/scenario/get.py,sha256=KVoY2fumrHIYl8vHYhHEdKQNkUukPMw4vKhMBMOTNBE,3414
90
91
  nextmv/cli/cloud/scenario/list.py,sha256=uOfmwPDhwatqKxq0FxlmCcvObptGXd1_tQPnUwUtD2Q,1853
91
92
  nextmv/cli/cloud/scenario/metadata.py,sha256=FKs-0s1AWqQ9EaYLifYx_uYr045jAWIfAm1V1eGjhz0,2210
92
93
  nextmv/cli/cloud/scenario/update.py,sha256=41Z2T8T6dfm3iFVShFQL24F2bH72pyYtPMPDB5w8v-w,2924
93
94
  nextmv/cli/cloud/secrets/__init__.py,sha256=-96-F6eccRH804CePGJDsDCnjD5LRdwvSRqmAbTdVjY,1056
94
95
  nextmv/cli/cloud/secrets/create.py,sha256=iBaGmwAHrSjnGqFtqg_yarYglDNfsNBWVJvhhjwLWCQ,8146
95
- nextmv/cli/cloud/secrets/delete.py,sha256=XgknxQByaowcE6klBpfUcZX5dy-Of2oI37aqhZ8-7LY,2200
96
+ nextmv/cli/cloud/secrets/delete.py,sha256=unpJFviXBwrvIzvvszPpJJca24c2KN7CKWB7nnJFhBk,2133
96
97
  nextmv/cli/cloud/secrets/get.py,sha256=nacOWX_MUcHRImjMptQSTu8krtrrE38CZKYfYG5epEw,2150
97
98
  nextmv/cli/cloud/secrets/list.py,sha256=3TxuHNnQqnNw8c8YigvXldpRMYwZts-ESmh07AqiXDk,1879
98
99
  nextmv/cli/cloud/secrets/update.py,sha256=LuKDhnQ202NS2Gby8n46VsW7R8-82-zHJ7NU2R3hrXQ,5300
99
100
  nextmv/cli/cloud/shadow/__init__.py,sha256=O9dqXZHOCRDzz7dI7ZWzUPxRGXfQXrQWQup2YLT6LTs,941
100
101
  nextmv/cli/cloud/shadow/create.py,sha256=SnG42mZFhslfkuJdiw75cyXkKJbkzTDvnNGMTnvINpo,6598
101
- nextmv/cli/cloud/shadow/delete.py,sha256=eq_1S4VWseMTCi21A8AzYbWO_NB43O1Y4k_hW5kt2LQ,2169
102
+ nextmv/cli/cloud/shadow/delete.py,sha256=LgNtQG062XCt__KyuFFcN-1VejWqxSiyynzPZOAuPsE,2102
102
103
  nextmv/cli/cloud/shadow/get.py,sha256=8NmXl2romVPGfS9KP4G2Sv4SuSZKgRx85GZ4ClwTqWc,1764
103
104
  nextmv/cli/cloud/shadow/list.py,sha256=aVFa3FAzfcUsMlD0hYgZwhoF75GQkaNDHrrq82qqylQ,1810
104
105
  nextmv/cli/cloud/shadow/metadata.py,sha256=vHJYVDXXHwiqQrG0J0D_aRP--b47UfEgJwJOXqfskSo,2161
105
106
  nextmv/cli/cloud/shadow/start.py,sha256=SkDYSfyQLdfHJKCOzc4CW6MVO7YBWCZCOAoGBzqSFhI,1464
106
- nextmv/cli/cloud/shadow/stop.py,sha256=gb6UuNf-HNCaACKzdAix1pr8oMn-A1SQJEFUXrOr228,1333
107
+ nextmv/cli/cloud/shadow/stop.py,sha256=WNg73nHkQ6Mo7hdg3qfSXQBkd77iKPfRIdSSJxTHhTY,1706
107
108
  nextmv/cli/cloud/shadow/update.py,sha256=l7_gODO9fXYGOLzFMJmIVpT5Jku9XQAo2PI5x3AP4xU,2880
109
+ nextmv/cli/cloud/sso/__init__.py,sha256=30jM1Qh9L1fQIctcnT5xcHUggismEYsIhHIsxgrI4_I,919
110
+ nextmv/cli/cloud/sso/create.py,sha256=bF04XZ-dEFsDEsVIjVtMNP3UH83x5XyLA6vt8ITuNbg,3325
111
+ nextmv/cli/cloud/sso/delete.py,sha256=5mB9t8UcHTuN8WEPbrJG93Ai9uGXOzfInK7fb_IL8pc,1563
112
+ nextmv/cli/cloud/sso/disable.py,sha256=Juv6xC6qMlQrG_C_c-s7V4FqepPzbueKifNeX6RwZ0w,1464
113
+ nextmv/cli/cloud/sso/enable.py,sha256=OH2Yyz8RHhYDNG4o2ABT23k4Hdd9iBnJTbf8JVq7mf4,1451
114
+ nextmv/cli/cloud/sso/get.py,sha256=odfcoggvMOgDT9VUtji-wUMysCEgaHnqjAsrVr1SmMk,1644
115
+ nextmv/cli/cloud/sso/update.py,sha256=u4Z_Ejr0612EXwvBVJZpJA_p6PP763BNUXCuQTNp_yY,2404
108
116
  nextmv/cli/cloud/switchback/__init__.py,sha256=jYeujjbqvqRGIgvC0wr3I6zavw1az7IS8jiJsAlH-z4,981
109
117
  nextmv/cli/cloud/switchback/create.py,sha256=lEboNjN1ZFbuOCFmK2ADIRH-pIENc80NcR809rDOY3I,5085
110
- nextmv/cli/cloud/switchback/delete.py,sha256=S8HlaIH32UTGs4DY-xE3FgZ9bmX2d7hXdPVSTFq4Mjk,2253
118
+ nextmv/cli/cloud/switchback/delete.py,sha256=W0TWsYw0MI23MbN8Oj6lQn7K7jEafY1dWW4HVMooyeY,2186
111
119
  nextmv/cli/cloud/switchback/get.py,sha256=GQKzaW4jCfV21DyZ5vDNrkFH2Tw1pR8Zv_71jiMZ8UA,1863
112
120
  nextmv/cli/cloud/switchback/list.py,sha256=wrXXA9aMLLcq_6WFk-dy9RopE57dFZb7TxlWdRx9G94,1882
113
121
  nextmv/cli/cloud/switchback/metadata.py,sha256=WDhK-AVKEJQ38WhPZqPOgemHt-PI__r6sIEBFQtKxVw,2287
114
122
  nextmv/cli/cloud/switchback/start.py,sha256=N9Bci8DmCQW8XUm93Rhj30TCf_YvK6N5qxZXMpW2X1I,1535
115
- nextmv/cli/cloud/switchback/stop.py,sha256=xEF2JqDhOhxzli79qqwIGVJiNW14BnfEbfc70sXF7dE,1397
123
+ nextmv/cli/cloud/switchback/stop.py,sha256=pOasfThNCB3GXDNz4TPyJ5DNnMf3vLin6lAh1XoAk-Y,1774
116
124
  nextmv/cli/cloud/switchback/update.py,sha256=pILZUbqlIM6l1mrbVPtks6CGcgre5829sSnD2yMZd-0,3000
117
125
  nextmv/cli/cloud/upload/__init__.py,sha256=khOl6NxkPd4KEqN0xMdxzmST-Ct3Vr_xk8zbMvbrLl8,511
118
126
  nextmv/cli/cloud/upload/create.py,sha256=vRTHCeh7cbB9JSAMUCpcdQrzQ1od5FiFiNdPPh7sFqw,1216
119
127
  nextmv/cli/cloud/version/__init__.py,sha256=ATPKdKvQM-IambdwIcqB1GZzqLVpjn1ZQkz2E_RghzY,1016
120
128
  nextmv/cli/cloud/version/create.py,sha256=ionmDnCtf0-6ql4QRlfU98q82rV70llAQ5nrqP-php4,3017
121
- nextmv/cli/cloud/version/delete.py,sha256=PLdV8kqjXQDBstJTxFaUlufg3wuL-zTd4RG26Bun0vs,1944
129
+ nextmv/cli/cloud/version/delete.py,sha256=F-USKuET_qxxZerO7aPGLBrvs31heVCCz1BvCLnPtn8,1924
122
130
  nextmv/cli/cloud/version/exists.py,sha256=DAWP-3n_yaqqxtQAWBwhSziMYJifFEdydfOmsvCP92U,1298
123
131
  nextmv/cli/cloud/version/get.py,sha256=eGbka3TG8UJE150h22rn0BUqTi1xRE7roVDj6yJvnRY,1839
124
132
  nextmv/cli/cloud/version/list.py,sha256=sKdHgyowLG1jyUEtu87yCPC5_2-0i3VDEgfmvb-bBn0,1770
125
133
  nextmv/cli/cloud/version/update.py,sha256=mEUYXGHLGkiEGH31KK6jDDfviHEhVCdLjLQL_5u0vLk,2869
126
- nextmv/cli/community/__init__.py,sha256=t2l6adm9Km6hSvSFzeKHTQzacVSnwjx4wpj2kqee5nM,612
127
- nextmv/cli/community/clone.py,sha256=C9ujRTBpL7fbgpBjIALsNjzYh5T-8weHOzkV1bsuiLU,9236
128
- nextmv/cli/community/list.py,sha256=ad7qPPaNh29tj_ggR4lJnRkMTgWstHQFV90sqdiWcdA,7440
134
+ nextmv/cli/community/__init__.py,sha256=FJRlBlIC4y-npgh9HNz2wezecq8vfsYWo2MAQdUj1UM,612
135
+ nextmv/cli/community/clone.py,sha256=_I1C58pKmfAHdl-8eaZDeaxZm2Rnp2en8PCPdflAse4,2912
136
+ nextmv/cli/community/list.py,sha256=Gf9E-wD-0GQcaTPGBNp8p_zX44UAL5bYG6LKroTKLCU,5807
129
137
  nextmv/cli/configuration/__init__.py,sha256=7oryF4PKkORh8bcdgbN2k36rZrFpJsM7Xfq_J4-MkFs,516
130
- nextmv/cli/configuration/config.py,sha256=t43ubCcbfbpfq9HvkVb2WQY9V47lrLEP0KvsWfjOJ8Y,6667
131
- nextmv/cli/configuration/create.py,sha256=aDj6wFl6_RRMmvCLTNIeCcFotNOGoupso785M46nh2Y,2668
132
- nextmv/cli/configuration/delete.py,sha256=3l1Mx8ATCwoiggbYBjG0ArmYSbS_GlJ5cCCymG2CEhU,1935
138
+ nextmv/cli/configuration/config.py,sha256=6NM537xHrmUruFRtrXkhE3OI0XFRAnCaSJDEfG_AtHw,7356
139
+ nextmv/cli/configuration/create.py,sha256=lTOxE-38BO7qed1I-wlJ8Ey1WHGMTPbGMozncW8xizM,2737
140
+ nextmv/cli/configuration/delete.py,sha256=-3IL0nh367D0NhIdPXOCCCAWhejABS8QIfOcoH_cW-M,1915
133
141
  nextmv/cli/configuration/list.py,sha256=HIZvDJQW5B0-o_ZqQHuxRw7N_VmxqYM46fucKCvo1zw,2208
134
- nextmv/cloud/__init__.py,sha256=watvsgucVgOCIlwrmnvIxW8lyUfEerhDzOn-Zp-dl1I,3954
142
+ nextmv/cloud/__init__.py,sha256=8zrGJ-UYusPgBz87CnUNEteiU-V475EOFStGPQWFNYY,4237
135
143
  nextmv/cloud/acceptance_test.py,sha256=H34lvccJzN1URpnhrHstcVxgvq1s2iCymiKIPBHcToY,25828
136
- nextmv/cloud/account.py,sha256=X2xQjzhgEdKR0eypH8lWKUOwDISjJSd5SwOwEnpfTVk,13573
144
+ nextmv/cloud/account.py,sha256=y1fNj7Y1ghQ3r9nIkpSFlmsTsCaN1ZzOfEOHkjavvoE,13849
137
145
  nextmv/cloud/assets.py,sha256=alw634ub-DR0CHQXZy_ObeGvQthPXFLdgzgbvbH1SGY,1376
138
- nextmv/cloud/batch_experiment.py,sha256=thS94-ZdMR7Em5TeGN5UtnIDHmhzqld_U49SODyhrPU,10537
146
+ nextmv/cloud/batch_experiment.py,sha256=flwP5pbBio-ilAbopj8DdSWOlxGbct1IOElsgcyVN8U,10545
139
147
  nextmv/cloud/client.py,sha256=Yj4FE4GKsLHkYijAYXcotlyNfhAWANMuWetHXsYPg1M,18101
148
+ nextmv/cloud/community.py,sha256=mWZqQR4DqwZQ6BYQRQxPZyH39EW4CLNm6QG_L6HEyQ8,13123
140
149
  nextmv/cloud/ensemble.py,sha256=_hKPjSLtuGH1xGG70ZBsmY_IL5XinZqVHHwBxtX9Omw,8570
141
150
  nextmv/cloud/input_set.py,sha256=wsLmMI1C7BslWDN5j1RnVUA8z54-Hq1eLG9bkzyqafo,4187
142
151
  nextmv/cloud/instance.py,sha256=rLrgNNvNyC6hZtjxIfTR2Luylmbh2emJIZVCy_hTJZ4,5495
143
- nextmv/cloud/integration.py,sha256=S4BNX3GFGNA1SXDWaRAUeS0hW6XkYXWSdWXX-s-x_nA,18112
152
+ nextmv/cloud/integration.py,sha256=ce8TWOw_xIXxf8tzqHNriPmJ2dRA9v2EZSXnWZEvWVk,18314
144
153
  nextmv/cloud/package.py,sha256=88XSJ15QGcHboNJAw2hGowiLKBu2O2nV5ZieZFx7XDI,17133
145
154
  nextmv/cloud/scenario.py,sha256=1_4PI9ehYaSonEe_l59cFhZNmqQ_brXXP6-mVq9i8a8,14183
146
155
  nextmv/cloud/secrets.py,sha256=fA5cX0jfTsPVZWV7433wzETGlXpWRLHGswuObx9e6FQ,6820
147
- nextmv/cloud/shadow.py,sha256=DWJfFkwlbULdl988A1HkOsyQGq0l9xtLT8Q-ZzsepH0,7214
148
- nextmv/cloud/switchback.py,sha256=AGA0LDMu7sHndczy2TrcZghn_ZRnTGlBDmGRZG34dZY,7344
156
+ nextmv/cloud/shadow.py,sha256=U-s9alkDS3wmYCEVDKEvuceveWOZOiF7rkH4_8eKdNk,7711
157
+ nextmv/cloud/sso.py,sha256=FaLE-e-xMrbXgTJbD-Mti4knroGWU4XGroZKPRCJsWk,7325
158
+ nextmv/cloud/switchback.py,sha256=6e4J5zCewgGaitB5iJiO3u6BPHcAlzdAB5WU8j2b4K8,7427
149
159
  nextmv/cloud/url.py,sha256=Fz70ywkWdCLmP21ZBmJwZi5kDbjpmsX_VlwVF_xQeHg,1836
150
160
  nextmv/cloud/version.py,sha256=5_S7_pWUVBFbvAArku20eK7S645GJcHtgE2OpXLdSzQ,5300
151
- nextmv/cloud/application/__init__.py,sha256=XmRdxE-pMUGdOG8tCblQUAtb9q5F_9Xdh3SoGk-Nj2Q,40221
152
- nextmv/cloud/application/_acceptance.py,sha256=ZwbVkur3-1fwM_L4F8ZUqrNaIdHgYGxKd3utoOCWjSc,13679
161
+ nextmv/cloud/application/__init__.py,sha256=_f8AKvw3VY5d8MtM1JMao6kbVafZWiLi7cKJilzP0ik,33099
162
+ nextmv/cloud/application/_acceptance.py,sha256=PEkf9cDunK40UNw96QBhpJpH5SOFLZMtmnyX84uAo9k,13974
153
163
  nextmv/cloud/application/_batch_scenario.py,sha256=cSsX5vPOkm91UqRBPIcqlOvQ0iojwt4sQKYGZEE7x6k,28479
154
164
  nextmv/cloud/application/_ensemble.py,sha256=05l9uR0hTnW8nQjhRzjd2TPfvCoaAqNddWP-aVRL5rg,7666
155
- nextmv/cloud/application/_input_set.py,sha256=m7PKqhR3evdE_a_RER1L6iKwftlaxTiRd1JQvgCepUU,7069
165
+ nextmv/cloud/application/_input_set.py,sha256=BXleeHOClCkwOh53vG6F_561XzAo_XgrHfGmNbJxIds,8131
156
166
  nextmv/cloud/application/_instance.py,sha256=Jjig8NI1jXNyBQoYj7JOfS0JFmw5jJdKLfi82fqBYgo,8386
157
167
  nextmv/cloud/application/_managed_input.py,sha256=zaWqGpe8Y5XWheroAqZSo-xNHfn2MKblNwRUbQVXBRM,6694
158
- nextmv/cloud/application/_run.py,sha256=-cAnkqiZ1rP37XbV8xH_R89wvMZpDzBFzSi684GgErA,53895
168
+ nextmv/cloud/application/_run.py,sha256=4lrxyQCUGJszdiYNGynYg6RXBPqjQ4tFcDmxH9dfSXY,53869
159
169
  nextmv/cloud/application/_secrets.py,sha256=hWhPAyY8aDF8zlEz9opPNLrFOYtp-COFqG_jgOZ6VxI,9476
160
- nextmv/cloud/application/_shadow.py,sha256=8uH0Zr-9czef2BhshYLzc0yBQhIcIdBYTCIiUS1ru44,9123
161
- nextmv/cloud/application/_switchback.py,sha256=MapHkquya7SeyNnEVIy7E7Um_9VuMH7XiB7FFxZx6Po,9743
170
+ nextmv/cloud/application/_shadow.py,sha256=ck1v0yBuayGnlLlq5pEIwNQOE3wU29m9jsx8II7MxqQ,9327
171
+ nextmv/cloud/application/_switchback.py,sha256=MbB9MVlBUeQkm_xekRC56bgEdcIFKmFnLPtfMXGLItI,9994
162
172
  nextmv/cloud/application/_utils.py,sha256=GqksGBHCV2sc-itL6hlWnncUJjIxhw6LH3pOjs4M-us,1643
163
173
  nextmv/cloud/application/_version.py,sha256=o1jVLfoKJNCs-32P7hkL1IGba8Eb1hnT6vnaZpyc0dk,8543
164
174
  nextmv/default_app/.gitignore,sha256=gsfnfXMYNt-YTroh5hAzauwBZoPDJ6D_fB17rMSnIko,8
@@ -176,8 +186,8 @@ nextmv/local/geojson_handler.py,sha256=7FavJdkUonop-yskjis0x3qFGB8A5wZyoBUblw-bV
176
186
  nextmv/local/local.py,sha256=cp56UpI8h19Ob6Jvb_Ni0ceXH5Vv3ET_iPTDe6ftq3Y,2617
177
187
  nextmv/local/plotly_handler.py,sha256=bLb50e3AkVr_W-F6S7lXfeRdN60mG2jk3UElNmhoMWU,1930
178
188
  nextmv/local/runner.py,sha256=bM1dFIAG4f9pEtbyevzkRa9nSppqTeD8naomNzJVBRU,8560
179
- nextmv-1.0.0.dev9.dist-info/METADATA,sha256=401CvhCVmExbub4P0bcQU64MItlTOaSq5VTcVSyD0ss,16433
180
- nextmv-1.0.0.dev9.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
181
- nextmv-1.0.0.dev9.dist-info/entry_points.txt,sha256=bH7kXUt_IOLpeW_O7Z-J2gALs2YYJ4CmWuzS8MdK6uY,48
182
- nextmv-1.0.0.dev9.dist-info/licenses/LICENSE,sha256=ZIbK-sSWA-OZprjNbmJAglYRtl5_K4l9UwAV3PGJAPc,11349
183
- nextmv-1.0.0.dev9.dist-info/RECORD,,
189
+ nextmv-1.1.0.dev0.dist-info/METADATA,sha256=PBdBO9bnlZQoMLvyHFiEfoErbhGp3EKZzOMZ9e5TwIw,16525
190
+ nextmv-1.1.0.dev0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
191
+ nextmv-1.1.0.dev0.dist-info/entry_points.txt,sha256=bH7kXUt_IOLpeW_O7Z-J2gALs2YYJ4CmWuzS8MdK6uY,48
192
+ nextmv-1.1.0.dev0.dist-info/licenses/LICENSE,sha256=ZIbK-sSWA-OZprjNbmJAglYRtl5_K4l9UwAV3PGJAPc,11349
193
+ nextmv-1.1.0.dev0.dist-info/RECORD,,