nextmv 0.29.0.dev0__py3-none-any.whl → 0.29.2.dev1__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/cloud/application.py +86 -9
- nextmv/cloud/client.py +1 -1
- nextmv/cloud/run.py +34 -0
- nextmv/input.py +75 -18
- nextmv/output.py +1 -1
- {nextmv-0.29.0.dev0.dist-info → nextmv-0.29.2.dev1.dist-info}/METADATA +13 -1
- {nextmv-0.29.0.dev0.dist-info → nextmv-0.29.2.dev1.dist-info}/RECORD +10 -10
- {nextmv-0.29.0.dev0.dist-info → nextmv-0.29.2.dev1.dist-info}/WHEEL +0 -0
- {nextmv-0.29.0.dev0.dist-info → nextmv-0.29.2.dev1.dist-info}/licenses/LICENSE +0 -0
nextmv/__about__.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "v0.29.
|
|
1
|
+
__version__ = "v0.29.2.dev1"
|
nextmv/cloud/application.py
CHANGED
|
@@ -1573,6 +1573,13 @@ class Application:
|
|
|
1573
1573
|
json_configurations: Optional[dict[str, Any]]
|
|
1574
1574
|
Optional configurations for JSON serialization. This is used to
|
|
1575
1575
|
customize the serialization before data is sent.
|
|
1576
|
+
dir_path: Optional[str]
|
|
1577
|
+
Path to a directory containing input files. If specified, the
|
|
1578
|
+
function will package the files in the directory into a tar file
|
|
1579
|
+
and upload it as a large input. This is useful for input formats
|
|
1580
|
+
like `nextmv.InputFormat.CSV_ARCHIVE` or `nextmv.InputFormat.MULTI_FILE`.
|
|
1581
|
+
If both `input` and `dir_path` are specified, the `input` is
|
|
1582
|
+
ignored, and the files in the directory are used instead.
|
|
1576
1583
|
|
|
1577
1584
|
Returns
|
|
1578
1585
|
----------
|
|
@@ -1612,10 +1619,8 @@ class Application:
|
|
|
1612
1619
|
if input_data is not None:
|
|
1613
1620
|
input_size = get_size(input_data)
|
|
1614
1621
|
|
|
1615
|
-
upload_url_required = input_size > _MAX_RUN_SIZE or tar_file != ""
|
|
1616
1622
|
upload_id_used = upload_id is not None
|
|
1617
|
-
|
|
1618
|
-
if not upload_id_used and upload_url_required:
|
|
1623
|
+
if self.__upload_url_required(upload_id_used, input_size, tar_file, input):
|
|
1619
1624
|
upload_url = self.upload_url()
|
|
1620
1625
|
self.upload_large_input(input=input_data, upload_url=upload_url, tar_file=tar_file)
|
|
1621
1626
|
upload_id = upload_url.upload_id
|
|
@@ -1650,11 +1655,18 @@ class Application:
|
|
|
1650
1655
|
if not isinstance(v, str):
|
|
1651
1656
|
raise ValueError(f"options must be dict[str,str], option {k} has type {type(v)} instead.")
|
|
1652
1657
|
payload["options"] = options_dict
|
|
1658
|
+
|
|
1653
1659
|
if configuration is not None:
|
|
1654
1660
|
configuration_dict = (
|
|
1655
1661
|
configuration.to_dict() if isinstance(configuration, RunConfiguration) else configuration
|
|
1656
1662
|
)
|
|
1657
|
-
|
|
1663
|
+
else:
|
|
1664
|
+
configuration = RunConfiguration()
|
|
1665
|
+
configuration.resolve(input=input, dir_path=dir_path)
|
|
1666
|
+
configuration_dict = configuration.to_dict()
|
|
1667
|
+
|
|
1668
|
+
payload["configuration"] = configuration_dict
|
|
1669
|
+
|
|
1658
1670
|
if batch_experiment_id is not None:
|
|
1659
1671
|
payload["batch_experiment_id"] = batch_experiment_id
|
|
1660
1672
|
if external_result is not None:
|
|
@@ -1688,6 +1700,8 @@ class Application:
|
|
|
1688
1700
|
configuration: Optional[Union[RunConfiguration, dict[str, Any]]] = None,
|
|
1689
1701
|
batch_experiment_id: Optional[str] = None,
|
|
1690
1702
|
external_result: Optional[Union[ExternalRunResult, dict[str, Any]]] = None,
|
|
1703
|
+
json_configurations: Optional[dict[str, Any]] = None,
|
|
1704
|
+
dir_path: Optional[str] = None,
|
|
1691
1705
|
) -> RunResult:
|
|
1692
1706
|
"""
|
|
1693
1707
|
Submit an input to start a new run of the application and poll for the
|
|
@@ -1699,11 +1713,35 @@ class Application:
|
|
|
1699
1713
|
----------
|
|
1700
1714
|
input: Union[Input, dict[str, Any], BaseModel, str]
|
|
1701
1715
|
Input to use for the run. This can be a `nextmv.Input` object,
|
|
1702
|
-
`dict`, `BaseModel` or `str`.
|
|
1703
|
-
|
|
1704
|
-
`
|
|
1705
|
-
`
|
|
1706
|
-
|
|
1716
|
+
`dict`, `BaseModel` or `str`.
|
|
1717
|
+
|
|
1718
|
+
If `nextmv.Input` is used, and the `input_format` is either
|
|
1719
|
+
`nextmv.InputFormat.JSON` or `nextmv.InputFormat.TEXT`, then the
|
|
1720
|
+
input data is extracted from the `.data` property.
|
|
1721
|
+
|
|
1722
|
+
If you want to work with `nextmv.InputFormat.CSV_ARCHIVE` or
|
|
1723
|
+
`nextmv.InputFormat.MULTI_FILE`, you should use the `dir_path`
|
|
1724
|
+
argument instead. This argument takes precedence over the `input`.
|
|
1725
|
+
If `dir_path` is specified, this function looks for files in that
|
|
1726
|
+
directory and tars them, to later be uploaded using the
|
|
1727
|
+
`upload_large_input` method. If both the `dir_path` and `input`
|
|
1728
|
+
arguments are provided, the `input` is ignored.
|
|
1729
|
+
|
|
1730
|
+
When `dir_path` is specified, the `configuration` argument must
|
|
1731
|
+
also be provided. More specifically, the
|
|
1732
|
+
`RunConfiguration.format.format_input.input_type` parameter
|
|
1733
|
+
dictates what kind of input is being submitted to the Nextmv Cloud.
|
|
1734
|
+
Make sure that this parameter is specified when working with the
|
|
1735
|
+
following input formats:
|
|
1736
|
+
|
|
1737
|
+
- `nextmv.InputFormat.CSV_ARCHIVE`
|
|
1738
|
+
- `nextmv.InputFormat.MULTI_FILE`
|
|
1739
|
+
|
|
1740
|
+
When working with JSON or text data, use the `input` argument
|
|
1741
|
+
directly.
|
|
1742
|
+
|
|
1743
|
+
In general, if an input is too large, it will be uploaded with the
|
|
1744
|
+
`upload_large_input` method.
|
|
1707
1745
|
instance_id: Optional[str]
|
|
1708
1746
|
ID of the instance to use for the run. If not provided, the default
|
|
1709
1747
|
instance ID associated to the Class (`default_instance_id`) is
|
|
@@ -1743,6 +1781,16 @@ class Application:
|
|
|
1743
1781
|
configuration. This is used when the run is an external run. We
|
|
1744
1782
|
suggest that instead of specifying this parameter, you use the
|
|
1745
1783
|
`track_run_with_result` method of the class.
|
|
1784
|
+
json_configurations: Optional[dict[str, Any]]
|
|
1785
|
+
Optional configurations for JSON serialization. This is used to
|
|
1786
|
+
customize the serialization before data is sent.
|
|
1787
|
+
dir_path: Optional[str]
|
|
1788
|
+
Path to a directory containing input files. If specified, the
|
|
1789
|
+
function will package the files in the directory into a tar file
|
|
1790
|
+
and upload it as a large input. This is useful for input formats
|
|
1791
|
+
like `nextmv.InputFormat.CSV_ARCHIVE` or `nextmv.InputFormat.MULTI_FILE`.
|
|
1792
|
+
If both `input` and `dir_path` are specified, the `input` is
|
|
1793
|
+
ignored, and the files in the directory are used instead.
|
|
1746
1794
|
|
|
1747
1795
|
Returns
|
|
1748
1796
|
----------
|
|
@@ -1774,6 +1822,8 @@ class Application:
|
|
|
1774
1822
|
configuration=configuration,
|
|
1775
1823
|
batch_experiment_id=batch_experiment_id,
|
|
1776
1824
|
external_result=external_result,
|
|
1825
|
+
json_configurations=json_configurations,
|
|
1826
|
+
dir_path=dir_path,
|
|
1777
1827
|
)
|
|
1778
1828
|
|
|
1779
1829
|
return self.run_result_with_polling(
|
|
@@ -3297,6 +3347,33 @@ class Application:
|
|
|
3297
3347
|
|
|
3298
3348
|
return tar_file_path
|
|
3299
3349
|
|
|
3350
|
+
def __upload_url_required(
|
|
3351
|
+
self,
|
|
3352
|
+
upload_id_used: bool,
|
|
3353
|
+
input_size: int,
|
|
3354
|
+
tar_file: str,
|
|
3355
|
+
input: Union[Input, dict[str, Any], BaseModel, str] = None,
|
|
3356
|
+
) -> bool:
|
|
3357
|
+
"""
|
|
3358
|
+
Auxiliary function to determine if an upload URL is required
|
|
3359
|
+
based on the input size, type, and configuration.
|
|
3360
|
+
"""
|
|
3361
|
+
|
|
3362
|
+
if upload_id_used:
|
|
3363
|
+
return False
|
|
3364
|
+
|
|
3365
|
+
non_json_payload = False
|
|
3366
|
+
if isinstance(input, str):
|
|
3367
|
+
non_json_payload = True
|
|
3368
|
+
elif isinstance(input, Input) and input.input_format != InputFormat.JSON:
|
|
3369
|
+
non_json_payload = True
|
|
3370
|
+
elif tar_file is not None and tar_file != "":
|
|
3371
|
+
non_json_payload = True
|
|
3372
|
+
|
|
3373
|
+
size_exceeds = input_size > _MAX_RUN_SIZE
|
|
3374
|
+
|
|
3375
|
+
return size_exceeds or non_json_payload
|
|
3376
|
+
|
|
3300
3377
|
|
|
3301
3378
|
def poll( # noqa: C901
|
|
3302
3379
|
polling_options: PollingOptions,
|
nextmv/cloud/client.py
CHANGED
|
@@ -397,7 +397,7 @@ class Client:
|
|
|
397
397
|
|
|
398
398
|
if upload_data is not None:
|
|
399
399
|
kwargs["data"] = upload_data
|
|
400
|
-
elif tar_file is not None:
|
|
400
|
+
elif tar_file is not None and tar_file != "":
|
|
401
401
|
if not os.path.exists(tar_file):
|
|
402
402
|
raise ValueError(f"tar_file {tar_file} does not exist")
|
|
403
403
|
kwargs["data"] = open(tar_file, "rb")
|
nextmv/cloud/run.py
CHANGED
|
@@ -470,6 +470,40 @@ class RunConfiguration(BaseModel):
|
|
|
470
470
|
queuing: Optional[RunQueuing] = None
|
|
471
471
|
"""Queuing configuration for the run."""
|
|
472
472
|
|
|
473
|
+
def resolve(
|
|
474
|
+
self,
|
|
475
|
+
input: Union[Input, dict[str, Any], BaseModel, str],
|
|
476
|
+
dir_path: Optional[str] = None,
|
|
477
|
+
) -> None:
|
|
478
|
+
"""
|
|
479
|
+
Resolves the run configuration by modifying or setting the `format`,
|
|
480
|
+
based on the type of input that is provided.
|
|
481
|
+
|
|
482
|
+
Parameters
|
|
483
|
+
----------
|
|
484
|
+
input : Input or dict[str, Any] or BaseModel or str, optional
|
|
485
|
+
The input to use for resolving the run configuration.
|
|
486
|
+
dir_path : str, optional
|
|
487
|
+
The directory path where inputs can be loaded from.
|
|
488
|
+
"""
|
|
489
|
+
|
|
490
|
+
# If the value is set by the user, do not change it.
|
|
491
|
+
if self.format is not None:
|
|
492
|
+
return
|
|
493
|
+
|
|
494
|
+
self.format = Format(format_input=FormatInput(input_type=InputFormat.JSON))
|
|
495
|
+
|
|
496
|
+
if isinstance(input, dict):
|
|
497
|
+
self.format.format_input.input_type = InputFormat.JSON
|
|
498
|
+
elif isinstance(input, str):
|
|
499
|
+
self.format.format_input.input_type = InputFormat.TEXT
|
|
500
|
+
elif dir_path is not None and dir_path != "":
|
|
501
|
+
# Kinda hard to detect if we should be working with CSV_ARCHIVE or
|
|
502
|
+
# MULTI_FILE, so we default to MULTI_FILE.
|
|
503
|
+
self.format.format_input.input_type = InputFormat.MULTI_FILE
|
|
504
|
+
elif isinstance(input, Input):
|
|
505
|
+
self.format.format_input.input_type = input.input_format
|
|
506
|
+
|
|
473
507
|
|
|
474
508
|
class ExternalRunResult(BaseModel):
|
|
475
509
|
"""
|
nextmv/input.py
CHANGED
|
@@ -108,7 +108,7 @@ class DataFile:
|
|
|
108
108
|
the following arguments:
|
|
109
109
|
|
|
110
110
|
- `file_path`: a `str` argument which is the location where this
|
|
111
|
-
|
|
111
|
+
data will be read from. This includes the dir and name of the
|
|
112
112
|
file. As such, the `name` parameter of this class is going to be
|
|
113
113
|
passed to the `reader` function, joined with the directory where the
|
|
114
114
|
file will be read from.
|
|
@@ -134,7 +134,7 @@ class DataFile:
|
|
|
134
134
|
following arguments:
|
|
135
135
|
|
|
136
136
|
- `file_path`: a `str` argument which is the location where this
|
|
137
|
-
|
|
137
|
+
data will be read from. This includes the dir and name of the
|
|
138
138
|
file. As such, the `name` parameter of this class is going to be
|
|
139
139
|
passed to the `loader` function, joined with the directory where the
|
|
140
140
|
file will be read from.
|
|
@@ -155,9 +155,24 @@ class DataFile:
|
|
|
155
155
|
Optional positional arguments to pass to the loader function. This can be
|
|
156
156
|
used to customize the behavior of the loader.
|
|
157
157
|
"""
|
|
158
|
+
input_data_key: Optional[str] = None
|
|
159
|
+
"""
|
|
160
|
+
Use this parameter to set a custom key to represent your file.
|
|
161
|
+
|
|
162
|
+
When using `InputFormat.MULTI_FILE` as the `input_format` of the `Input`,
|
|
163
|
+
the data from the file is loaded to the `.data` parameter of the `Input`.
|
|
164
|
+
In that case, the type of `.data` is `dict[str, Any]`, where each key
|
|
165
|
+
represents the file name (with extension) and the value is the data that is
|
|
166
|
+
actually loaded from the file using the `loader` function. You can set a
|
|
167
|
+
custom key to represent your file by using this attribute.
|
|
168
|
+
"""
|
|
158
169
|
|
|
159
170
|
|
|
160
|
-
def json_data_file(
|
|
171
|
+
def json_data_file(
|
|
172
|
+
name: str,
|
|
173
|
+
json_configurations: Optional[dict[str, Any]] = None,
|
|
174
|
+
input_data_key: Optional[str] = None,
|
|
175
|
+
) -> DataFile:
|
|
161
176
|
"""
|
|
162
177
|
This is a convenience function to create a `DataFile` that reads JSON data.
|
|
163
178
|
|
|
@@ -173,6 +188,15 @@ def json_data_file(name: str, json_configurations: Optional[dict[str, Any]] = No
|
|
|
173
188
|
Name of the data file. You don't need to include the `.json` extension.
|
|
174
189
|
json_configurations : dict[str, Any], optional
|
|
175
190
|
JSON-specific configurations for reading the data.
|
|
191
|
+
input_data_key : str, optional
|
|
192
|
+
A custom key to represent the data from this file.
|
|
193
|
+
|
|
194
|
+
When using `InputFormat.MULTI_FILE` as the `input_format` of the `Input`,
|
|
195
|
+
the data from the file is loaded to the `.data` parameter of the `Input`.
|
|
196
|
+
In that case, the type of `.data` is `dict[str, Any]`, where each key
|
|
197
|
+
represents the file name (with extension) and the value is the data that is
|
|
198
|
+
actually loaded from the file using the `loader` function. You can set a
|
|
199
|
+
custom key to represent your file by using this attribute.
|
|
176
200
|
|
|
177
201
|
Returns
|
|
178
202
|
-------
|
|
@@ -204,10 +228,15 @@ def json_data_file(name: str, json_configurations: Optional[dict[str, Any]] = No
|
|
|
204
228
|
return DataFile(
|
|
205
229
|
name=name,
|
|
206
230
|
loader=loader,
|
|
231
|
+
input_data_key=input_data_key,
|
|
207
232
|
)
|
|
208
233
|
|
|
209
234
|
|
|
210
|
-
def csv_data_file(
|
|
235
|
+
def csv_data_file(
|
|
236
|
+
name: str,
|
|
237
|
+
csv_configurations: Optional[dict[str, Any]] = None,
|
|
238
|
+
input_data_key: Optional[str] = None,
|
|
239
|
+
) -> DataFile:
|
|
211
240
|
"""
|
|
212
241
|
This is a convenience function to create a `DataFile` that reads CSV data.
|
|
213
242
|
|
|
@@ -223,6 +252,15 @@ def csv_data_file(name: str, csv_configurations: Optional[dict[str, Any]] = None
|
|
|
223
252
|
Name of the data file. You don't need to include the `.csv` extension.
|
|
224
253
|
csv_configurations : dict[str, Any], optional
|
|
225
254
|
CSV-specific configurations for reading the data.
|
|
255
|
+
input_data_key : str, optional
|
|
256
|
+
A custom key to represent the data from this file.
|
|
257
|
+
|
|
258
|
+
When using `InputFormat.MULTI_FILE` as the `input_format` of the `Input`,
|
|
259
|
+
the data from the file is loaded to the `.data` parameter of the `Input`.
|
|
260
|
+
In that case, the type of `.data` is `dict[str, Any]`, where each key
|
|
261
|
+
represents the file name (with extension) and the value is the data that is
|
|
262
|
+
actually loaded from the file using the `loader` function. You can set a
|
|
263
|
+
custom key to represent your file by using this attribute.
|
|
226
264
|
|
|
227
265
|
Returns
|
|
228
266
|
-------
|
|
@@ -254,10 +292,11 @@ def csv_data_file(name: str, csv_configurations: Optional[dict[str, Any]] = None
|
|
|
254
292
|
return DataFile(
|
|
255
293
|
name=name,
|
|
256
294
|
loader=loader,
|
|
295
|
+
input_data_key=input_data_key,
|
|
257
296
|
)
|
|
258
297
|
|
|
259
298
|
|
|
260
|
-
def text_data_file(name: str) -> DataFile:
|
|
299
|
+
def text_data_file(name: str, input_data_key: Optional[str] = None) -> DataFile:
|
|
261
300
|
"""
|
|
262
301
|
This is a convenience function to create a `DataFile` that reads utf-8
|
|
263
302
|
encoded text data.
|
|
@@ -274,6 +313,15 @@ def text_data_file(name: str) -> DataFile:
|
|
|
274
313
|
----------
|
|
275
314
|
name : str
|
|
276
315
|
Name of the data file. The file extension must be provided in the name.
|
|
316
|
+
input_data_key : str, optional
|
|
317
|
+
A custom key to represent the data from this file.
|
|
318
|
+
|
|
319
|
+
When using `InputFormat.MULTI_FILE` as the `input_format` of the `Input`,
|
|
320
|
+
the data from the file is loaded to the `.data` parameter of the `Input`.
|
|
321
|
+
In that case, the type of `.data` is `dict[str, Any]`, where each key
|
|
322
|
+
represents the file name (with extension) and the value is the data that is
|
|
323
|
+
actually loaded from the file using the `loader` function. You can set a
|
|
324
|
+
custom key to represent your file by using this attribute.
|
|
277
325
|
|
|
278
326
|
Returns
|
|
279
327
|
-------
|
|
@@ -297,6 +345,7 @@ def text_data_file(name: str) -> DataFile:
|
|
|
297
345
|
return DataFile(
|
|
298
346
|
name=name,
|
|
299
347
|
loader=loader,
|
|
348
|
+
input_data_key=input_data_key,
|
|
300
349
|
)
|
|
301
350
|
|
|
302
351
|
|
|
@@ -311,18 +360,6 @@ class Input:
|
|
|
311
360
|
from nextmv import Input
|
|
312
361
|
```
|
|
313
362
|
|
|
314
|
-
Parameters
|
|
315
|
-
----------
|
|
316
|
-
data : Union[Union[dict[str, Any], Any], str, list[dict[str, Any]],
|
|
317
|
-
dict[str, list[dict[str, Any]]], dict[str, Any]]
|
|
318
|
-
The actual data.
|
|
319
|
-
input_format : InputFormat, optional
|
|
320
|
-
Format of the input data. Default is `InputFormat.JSON`.
|
|
321
|
-
options : Options, optional
|
|
322
|
-
Options that the input was created with.
|
|
323
|
-
|
|
324
|
-
Notes
|
|
325
|
-
-----
|
|
326
363
|
The `data`'s type must match the `input_format`:
|
|
327
364
|
|
|
328
365
|
- `InputFormat.JSON`: the data is `Union[dict[str, Any], Any]`. This just
|
|
@@ -340,6 +377,18 @@ class Input:
|
|
|
340
377
|
from one or more files in a specific directory. Given that each file can
|
|
341
378
|
be of different types (JSON, CSV, Excel, etc...), the data captured from
|
|
342
379
|
each might vary. To reflect this, the data is loaded as a dict of items.
|
|
380
|
+
You can have a custom key for the data, that is not the file name, if
|
|
381
|
+
you use the `input_data_key` parameter of the `DataFile` class.
|
|
382
|
+
|
|
383
|
+
Parameters
|
|
384
|
+
----------
|
|
385
|
+
data : Union[Union[dict[str, Any], Any], str, list[dict[str, Any]],
|
|
386
|
+
dict[str, list[dict[str, Any]]], dict[str, Any]]
|
|
387
|
+
The actual data.
|
|
388
|
+
input_format : InputFormat, optional
|
|
389
|
+
Format of the input data. Default is `InputFormat.JSON`.
|
|
390
|
+
options : Options, optional
|
|
391
|
+
Options that the input was created with.
|
|
343
392
|
|
|
344
393
|
Raises
|
|
345
394
|
------
|
|
@@ -888,7 +937,15 @@ class LocalInputLoader(InputLoader):
|
|
|
888
937
|
*data_file.loader_args,
|
|
889
938
|
**data_file.loader_kwargs,
|
|
890
939
|
)
|
|
891
|
-
|
|
940
|
+
|
|
941
|
+
key = name
|
|
942
|
+
if data_file.input_data_key is not None:
|
|
943
|
+
key = data_file.input_data_key
|
|
944
|
+
|
|
945
|
+
if data.get(key) is not None:
|
|
946
|
+
raise ValueError(f"Duplicate input data key found: {key}")
|
|
947
|
+
|
|
948
|
+
data[key] = d
|
|
892
949
|
|
|
893
950
|
return data
|
|
894
951
|
|
nextmv/output.py
CHANGED
|
@@ -582,7 +582,7 @@ class SolutionFile:
|
|
|
582
582
|
`csv.DictWriter`, then the data should be a list of dictionaries, where
|
|
583
583
|
each dictionary represents a row in the CSV file.
|
|
584
584
|
"""
|
|
585
|
-
writer: Callable[[str,
|
|
585
|
+
writer: Callable[[str, Any], None]
|
|
586
586
|
"""
|
|
587
587
|
Callable that writes the solution data to the file. This should be a
|
|
588
588
|
function implemented by the user. There are convenience functions that you
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: nextmv
|
|
3
|
-
Version: 0.29.
|
|
3
|
+
Version: 0.29.2.dev1
|
|
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/
|
|
@@ -225,6 +225,18 @@ Requires-Dist: requests>=2.31.0
|
|
|
225
225
|
Requires-Dist: urllib3>=2.1.0
|
|
226
226
|
Provides-Extra: all
|
|
227
227
|
Requires-Dist: mlflow>=2.17.2; extra == 'all'
|
|
228
|
+
Provides-Extra: dev
|
|
229
|
+
Requires-Dist: build>=1.0.3; extra == 'dev'
|
|
230
|
+
Requires-Dist: mlflow>=2.19.0; extra == 'dev'
|
|
231
|
+
Requires-Dist: nextroute>=1.11.1; extra == 'dev'
|
|
232
|
+
Requires-Dist: openpyxl>=3.1.5; extra == 'dev'
|
|
233
|
+
Requires-Dist: pandas>=2.2.3; extra == 'dev'
|
|
234
|
+
Requires-Dist: pydantic>=2.5.2; extra == 'dev'
|
|
235
|
+
Requires-Dist: pyyaml>=6.0.1; extra == 'dev'
|
|
236
|
+
Requires-Dist: requests>=2.31.0; extra == 'dev'
|
|
237
|
+
Requires-Dist: ruff>=0.1.7; extra == 'dev'
|
|
238
|
+
Requires-Dist: twine>=4.0.2; extra == 'dev'
|
|
239
|
+
Requires-Dist: urllib3>=2.1.0; extra == 'dev'
|
|
228
240
|
Description-Content-Type: text/markdown
|
|
229
241
|
|
|
230
242
|
# Nextmv Python SDK
|
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
nextmv/__about__.py,sha256=
|
|
1
|
+
nextmv/__about__.py,sha256=GsQEf7UDs4W0bljhrNkXljBHxyv30ngFhMCbDaDHo-0,29
|
|
2
2
|
nextmv/__entrypoint__.py,sha256=dA0iwwHtrq6Z9w9FxmxKLoBGLyhe7jWtUAU-Y3PEgHg,1094
|
|
3
3
|
nextmv/__init__.py,sha256=FsF0pEkOSBuPY5EKu7NsBxro7jswGmOmaw61kZEudXY,1930
|
|
4
4
|
nextmv/_serialization.py,sha256=JlSl6BL0M2Esf7F89GsGIZ__Pp8RnFRNM0UxYhuuYU4,2853
|
|
5
5
|
nextmv/base_model.py,sha256=qmJ4AsYr9Yv01HQX_BERrn3229gyoZrYyP9tcyqNfeU,2311
|
|
6
6
|
nextmv/deprecated.py,sha256=kEVfyQ-nT0v2ePXTNldjQG9uH5IlfQVy3L4tztIxwmU,1638
|
|
7
|
-
nextmv/input.py,sha256=
|
|
7
|
+
nextmv/input.py,sha256=iTMIdhSi4H-Xot44CYaUH110WDcpWDsJ5JXxSMGIZaY,40030
|
|
8
8
|
nextmv/logger.py,sha256=kNIbu46MisrzYe4T0hNMpWfRTKKacDVvbtQcNys_c_E,2513
|
|
9
9
|
nextmv/model.py,sha256=SVoJLN_f5knXjaPLlyWWvzIqX_qKu1txn6pYfKPwt14,15019
|
|
10
10
|
nextmv/options.py,sha256=-9ru7nzqMsFf0aAAfR5OuMvChXYT6aho5sGghHKu8Ds,37323
|
|
11
|
-
nextmv/output.py,sha256=
|
|
11
|
+
nextmv/output.py,sha256=mBvxOshyizH9g2dc8Yp7iOwDCtFng_UnyTfzg14RMtQ,54044
|
|
12
12
|
nextmv/cloud/__init__.py,sha256=7BCh3z-XkbIcMvFHmbj2wA8OquIovjrAZL7O9kA9VZc,3868
|
|
13
13
|
nextmv/cloud/acceptance_test.py,sha256=Bcfdmh2fkPeBx8FDCngeUo2fjV_LhsUdygnzDQCDbYY,26898
|
|
14
14
|
nextmv/cloud/account.py,sha256=eukiYQha4U2fkIjg4SgdoawKE1kU5G7GPyDJVrn8hHA,6064
|
|
15
|
-
nextmv/cloud/application.py,sha256=
|
|
15
|
+
nextmv/cloud/application.py,sha256=qMf7N0DpJnnkJiyMYjqFjR_2fVzOTjqT-bUWShYg7XE,119766
|
|
16
16
|
nextmv/cloud/batch_experiment.py,sha256=rD3m-ioE1G8ADYN7afzr7zlq-3H22TNlj9RAh-_ZqIo,7270
|
|
17
|
-
nextmv/cloud/client.py,sha256=
|
|
17
|
+
nextmv/cloud/client.py,sha256=E0DiUb377jvEnpXlRnfT1PGCI0Jm0lTUoX5VqeU91lk,18165
|
|
18
18
|
nextmv/cloud/input_set.py,sha256=2dqmf5z-rZjTKwtBRvnUdfPfKv28It5uTCX0C70uP4Y,4242
|
|
19
19
|
nextmv/cloud/instance.py,sha256=SS4tbp0LQMWDaeYpwcNxJei82oi_Hozv1t5i3QGjASY,4024
|
|
20
20
|
nextmv/cloud/manifest.py,sha256=bphIZJzStkAc1gme39SecwI4L36QDjeyhWEZrSaukS4,35782
|
|
21
21
|
nextmv/cloud/package.py,sha256=f0OjdlIOsI2LpmgSxdFf6YaA8Ucs9yAm_3bO0Cp8LH4,13027
|
|
22
|
-
nextmv/cloud/run.py,sha256=
|
|
22
|
+
nextmv/cloud/run.py,sha256=YPBVjbnc6Ebgjxm5Rw1eY2-MiYx3KC7fQyqKWXY9auY,20836
|
|
23
23
|
nextmv/cloud/safe.py,sha256=idifvV8P_79Zo2hIC_qxqZt9LUmD5TLQ9ikKwRUvd34,2522
|
|
24
24
|
nextmv/cloud/scenario.py,sha256=JRFTDiFBcrgud6wE2qDHUu5oO-Ur3zbPYhhB6ONCxTo,14263
|
|
25
25
|
nextmv/cloud/secrets.py,sha256=fA5cX0jfTsPVZWV7433wzETGlXpWRLHGswuObx9e6FQ,6820
|
|
26
26
|
nextmv/cloud/status.py,sha256=blvykRCTCTBkaqH88j4dzdQLhU2v1Ig62-_va98zw20,2789
|
|
27
27
|
nextmv/cloud/version.py,sha256=5_S7_pWUVBFbvAArku20eK7S645GJcHtgE2OpXLdSzQ,5300
|
|
28
|
-
nextmv-0.29.
|
|
29
|
-
nextmv-0.29.
|
|
30
|
-
nextmv-0.29.
|
|
31
|
-
nextmv-0.29.
|
|
28
|
+
nextmv-0.29.2.dev1.dist-info/METADATA,sha256=U0q6Eh7QzFYBNZx1GAtncOgdzf79v0O98TsBNYNl92Y,15831
|
|
29
|
+
nextmv-0.29.2.dev1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
30
|
+
nextmv-0.29.2.dev1.dist-info/licenses/LICENSE,sha256=ZIbK-sSWA-OZprjNbmJAglYRtl5_K4l9UwAV3PGJAPc,11349
|
|
31
|
+
nextmv-0.29.2.dev1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|