Manifest Module¶
This section documents the manifest components of the Nextmv Python SDK.
manifest
¶
Module with the logic for handling an app manifest.
This module provides classes and functions for managing Nextmv app manifests. Manifest files (app.yaml) define how an application is built, run, and deployed on the Nextmv platform.
| CLASS | DESCRIPTION |
|---|---|
ManifestType |
Enum for application types based on programming language. |
ManifestRuntime |
Enum for runtime environments where apps run on Nextmv. |
ManifestPythonArch |
Enum for target architecture for bundling Python apps. |
ManifestBuild |
Class for build-specific attributes in the manifest. |
ManifestPythonModel |
Class for model-specific instructions for Python apps. |
ManifestPython |
Class for Python-specific instructions in the manifest. |
ManifestOptionUI |
Class for UI attributes of options in the manifest. |
ManifestOption |
Class representing an option for the decision model in the manifest. |
ManifestOptions |
Class containing a list of options for the decision model. |
ManifestValidation |
Class for validation rules for options in the manifest. |
ManifestContentMultiFileInput |
Class for multi-file content format input configuration. |
ManifestContentMultiFileOutput |
Class for multi-file content format output configuration. |
ManifestContentMultiFile |
Class for multi-file content format configuration. |
ManifestContent |
Class for content configuration specifying how app input/output is handled. |
ManifestConfiguration |
Class for configuration settings for the decision model. |
Manifest |
Main class representing an app manifest for Nextmv. |
| FUNCTION | DESCRIPTION |
|---|---|
default_python_manifest |
Creates a default Python manifest as a starting point for applications. |
Constants
MANIFEST_FILE_NAME Name of the app manifest file.
MANIFEST_FILE_NAME
module-attribute
¶
Manifest
¶
Bases: BaseModel
Represents an app manifest (app.yaml) for Nextmv Cloud.
You can import the Manifest class directly from nextmv:
An application that runs on the Nextmv Platform must contain a file named
app.yaml which is known as the app manifest. This file is used to specify
the execution environment for the app.
This class represents the app manifest and allows you to load it from a file or create it programmatically.
| PARAMETER | DESCRIPTION |
|---|---|
|
The files to include (or exclude) in the app. This is mandatory.
TYPE:
|
|
The runtime to use for the app, it provides the environment in which the app runs. This is mandatory.
TYPE:
|
|
Type of application, based on the programming language. This is mandatory.
TYPE:
|
|
Build-specific attributes. The
TYPE:
|
|
A command to run before the app is pushed to the Nextmv Cloud.
This command can be used to compile a binary, run tests or similar tasks.
One difference with what is specified under build, is that the command
will be executed via the shell (i.e.,
TYPE:
|
|
Only for Python apps. Contains further Python-specific attributes.
TYPE:
|
|
A list of options for the decision model. An option is a parameter that configures the decision model.
TYPE:
|
|
Optional entrypoint for the decision model. When not specified, the
following default entrypoints are used, according to the
TYPE:
|
Examples:
>>> from nextmv import Manifest, ManifestRuntime, ManifestType
>>> manifest = Manifest(
... files=["main.py", "model_logic/"],
... runtime=ManifestRuntime.PYTHON,
... type=ManifestType.PYTHON,
... )
>>> manifest.files
['main.py', 'model_logic/']
build
class-attribute
instance-attribute
¶
build: Optional[ManifestBuild] = None
Build-specific attributes.
The build.command to run to build the app. This command will be executed
without a shell, i.e., directly. The command must exit with a status of 0
to continue the push process of the app to Nextmv Cloud. This command is
executed prior to the pre-push command. The build.environment is used to
set environment variables when running the build command given as key-value
pairs.
configuration
class-attribute
instance-attribute
¶
configuration: Optional[ManifestConfiguration] = None
Configuration for the decision model. A list of options for the decision model. An option is a parameter that configures the decision model.
entrypoint
class-attribute
instance-attribute
¶
Optional entrypoint for the decision model. When not specified, the
following default entrypoints are used, according to the .runtime:
ManifestRuntime.PYTHON,ManifestRuntime.HEXALY,ManifestRuntime.PYOMO:./main.pyManifestRuntime.DEFAULT:./main- Java:
./main.jar
extract_options
¶
Convert the manifest options to a nextmv.Options object.
If the manifest does not have valid options defined in
.configuration.options.items, this method returns None.
| RETURNS | DESCRIPTION |
|---|---|
Optional[Options]
|
The options extracted from the manifest. If no options are found,
|
Examples:
>>> from nextmv import Manifest, ManifestConfiguration, ManifestOptions, ManifestOption
>>> manifest = Manifest(
... files=["main.py"],
... configuration=ManifestConfiguration(
... options=ManifestOptions(
... items=[
... ManifestOption(name="duration", option_type="string", default="10s")
... ]
... )
... )
... )
>>> sdk_options = manifest.extract_options()
>>> sdk_options.get_option("duration").default
'10s'
>>> empty_manifest = Manifest(files=["main.py"])
>>> empty_manifest.extract_options() is None
True
Source code in nextmv/nextmv/manifest.py
files
class-attribute
instance-attribute
¶
The files to include (or exclude) in the app. This is mandatory.
from_model_configuration
classmethod
¶
from_model_configuration(
model_configuration: ModelConfiguration,
) -> Manifest
Create a Python manifest from a nextmv.model.ModelConfiguration.
Note that the ModelConfiguration is almost always used in
conjunction with the nextmv.Model class. If you are not
implementing an instance of nextmv.Model, consider using the
from_options method instead to initialize the manifest with the
options of the model.
The resulting manifest will have:
filesset to["main.py", f"{model_configuration.name}/**"]runtimeset toManifestRuntime.PYTHONtypeset toManifestType.PYTHONpython.pip_requirementsset to the default requirements file name.python.model.nameset tomodel_configuration.name.python.model.optionspopulated frommodel_configuration.options.configuration.optionspopulated frommodel_configuration.options.
| PARAMETER | DESCRIPTION |
|---|---|
|
The model configuration.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
Manifest
|
The Python manifest. |
Examples:
>>> from nextmv.model import ModelConfiguration
>>> from nextmv.options import Options, Option
>>> from nextmv import Manifest
>>> opts = Options(Option(name="vehicle_count", option_type=int, default=5))
>>> mc = ModelConfiguration(name="vehicle_router", options=opts)
>>> manifest = Manifest.from_model_configuration(mc)
>>> manifest.python.model.name
'vehicle_router'
>>> manifest.files
['main.py', 'vehicle_router/**']
>>> manifest.configuration.options.items[0].name
'vehicle_count'
Source code in nextmv/nextmv/manifest.py
1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 | |
from_options
classmethod
¶
from_options(
options: Options, validation: OptionsEnforcement = None
) -> Manifest
Create a basic Python manifest from nextmv.options.Options.
If you have more files than just a main.py, make sure you modify
the .files attribute of the resulting manifest. This method assumes
that requirements are specified in a requirements.txt file. You may
also specify a different requirements file once you instantiate the
manifest.
The resulting manifest will have:
- files set to ["main.py"]
- runtime set to ManifestRuntime.PYTHON
- type set to ManifestType.PYTHON
- python.pip_requirements set to "requirements.txt".
- configuration.options populated from the provided options.
| PARAMETER | DESCRIPTION |
|---|---|
|
The options to include in the manifest.
TYPE:
|
|
The validation rules for the options. This is used to set the
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
Manifest
|
The manifest with the given options. |
Examples:
>>> from nextmv.options import Options, Option
>>> from nextmv import Manifest
>>> opts = Options(
... Option(name="max_runtime", option_type=str, default="60s"),
... Option(name="use_heuristic", option_type=bool, default=True)
... )
>>> manifest = Manifest.from_options(opts)
>>> manifest.files
['main.py']
>>> manifest.python.pip_requirements
'requirements.txt'
>>> len(manifest.configuration.options.items)
2
>>> manifest.configuration.options.items[0].name
'max_runtime'
Source code in nextmv/nextmv/manifest.py
1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 | |
from_yaml
classmethod
¶
Load a manifest from a YAML file.
The YAML file is expected to be named app.yaml and located in the
specified directory.
| PARAMETER | DESCRIPTION |
|---|---|
|
Path to the directory containing the
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
Manifest
|
The loaded manifest. |
| RAISES | DESCRIPTION |
|---|---|
FileNotFoundError
|
If the |
YAMLError
|
If there is an error parsing the YAML file. |
Examples:
Assuming an app.yaml file exists in ./my_app_dir:
# ./my_app_dir/app.yaml
files:
- main.py
runtime: ghcr.io/nextmv-io/runtime/python:3.11
type: python
>>> from nextmv import Manifest
>>> # manifest = Manifest.from_yaml("./my_app_dir") # This would be run
>>> # assert manifest.type == "python"
Source code in nextmv/nextmv/manifest.py
model_post_init
¶
model_post_init(__context) -> None
Post-initialization to set default entrypoint based on runtime if not specified.
This method is automatically called by Pydantic after the model is initialized. If no entrypoint is provided, it sets a default entrypoint based on the runtime: - Python runtimes (PYTHON, HEXALY, PYOMO, CUOPT): "./main.py" - DEFAULT runtime: "./main" - JAVA runtime: "./main.jar"
| PARAMETER | DESCRIPTION |
|---|---|
|
Pydantic context (unused in this implementation).
TYPE:
|
| RAISES | DESCRIPTION |
|---|---|
ValueError
|
If no entrypoint is provided and the runtime cannot be resolved to establish a default entrypoint. |
Source code in nextmv/nextmv/manifest.py
pre_push
class-attribute
instance-attribute
¶
pre_push: Optional[str] = Field(
serialization_alias="pre-push",
validation_alias=AliasChoices("pre-push", "pre_push"),
default=None,
)
A command to run before the app is pushed to the Nextmv Cloud.
This command can be used to compile a binary, run tests or similar tasks.
One difference with what is specified under build, is that the command will
be executed via the shell (i.e., bash -c on Linux & macOS or cmd /c on
Windows). The command must exit with a status of 0 to continue the push
process. This command is executed just before the app gets bundled and
pushed (after the build command).
python
class-attribute
instance-attribute
¶
python: Optional[ManifestPython] = None
Python-specific attributes. Only for Python apps. Contains further Python-specific attributes.
runtime
class-attribute
instance-attribute
¶
runtime: ManifestRuntime = PYTHON
The runtime to use for the app. It provides the environment in which the app runs. This is mandatory.
to_yaml
¶
to_yaml(dirpath: str) -> None
Write the manifest to a YAML file.
The manifest will be written to a file named app.yaml in the
specified directory.
| PARAMETER | DESCRIPTION |
|---|---|
|
Path to the directory where the
TYPE:
|
| RAISES | DESCRIPTION |
|---|---|
IOError
|
If there is an error writing the file. |
YAMLError
|
If there is an error serializing the manifest to YAML. |
Examples:
>>> from nextmv import Manifest
>>> manifest = Manifest(files=["solver.py"], type="python")
>>> # manifest.to_yaml("./output_dir") # This would create ./output_dir/app.yaml
Source code in nextmv/nextmv/manifest.py
type
class-attribute
instance-attribute
¶
type: ManifestType = PYTHON
Type of application, based on the programming language. This is mandatory.
ManifestBuild
¶
Bases: BaseModel
Build-specific attributes.
You can import the ManifestBuild class directly from nextmv:
| PARAMETER | DESCRIPTION |
|---|---|
|
The command to run to build the app. This command will be executed without a shell, i.e., directly. The command must exit with a status of 0 to continue the push process of the app to Nextmv Cloud. This command is executed prior to the pre-push command.
TYPE:
|
|
Environment variables to set when running the build command given as key-value pairs.
TYPE:
|
Examples:
>>> from nextmv import ManifestBuild
>>> build_config = ManifestBuild(
... command="make build",
... environment={"DEBUG": "true"}
... )
>>> build_config.command
'make build'
command
class-attribute
instance-attribute
¶
The command to run to build the app.
This command will be executed without a shell, i.e., directly. The command must exit with a status of 0 to continue the push process of the app to Nextmv Cloud. This command is executed prior to the pre-push command.
environment
class-attribute
instance-attribute
¶
Environment variables to set when running the build command.
Given as key-value pairs.
environment_to_dict
¶
Convert the environment variables to a dictionary.
| RETURNS | DESCRIPTION |
|---|---|
dict[str, str]
|
The environment variables as a dictionary of string key-value pairs. Returns an empty dictionary if no environment variables are set. |
Examples:
>>> from nextmv import ManifestBuild
>>> build_config = ManifestBuild(environment={"COUNT": 1, "NAME": "test"})
>>> build_config.environment_to_dict()
{'COUNT': '1', 'NAME': 'test'}
>>> build_config_empty = ManifestBuild()
>>> build_config_empty.environment_to_dict()
{}
Source code in nextmv/nextmv/manifest.py
ManifestConfiguration
¶
Bases: BaseModel
Configuration for the decision model.
You can import the ManifestConfiguration class directly from nextmv:
| PARAMETER | DESCRIPTION |
|---|---|
|
Options for the decision model.
TYPE:
|
Examples:
>>> from nextmv import ManifestConfiguration, ManifestOptions, ManifestOption
>>> model_config = ManifestConfiguration(
... options=ManifestOptions(
... items=[ManifestOption(name="debug_mode", option_type="bool", default=False)]
... )
... )
>>> model_config.options.items[0].name
'debug_mode'
content
class-attribute
instance-attribute
¶
content: Optional[ManifestContent] = None
Content configuration for specifying how the app input/output is handled.
options
class-attribute
instance-attribute
¶
options: Optional[ManifestOptions] = None
Options for the decision model.
ManifestContent
¶
Bases: BaseModel
Content configuration for specifying how the app input/output is handled.
You can import the ManifestContent class directly from nextmv:
| PARAMETER | DESCRIPTION |
|---|---|
|
The format of the content. Must be one of "json", "multi-file", or "csv-archive".
TYPE:
|
|
Configuration for multi-file content format.
TYPE:
|
Examples:
>>> from nextmv import ManifestContent
>>> content_config = ManifestContent(
... format="multi-file",
... multi_file=ManifestContentMultiFile(
... input=ManifestContentMultiFileInput(path="data/input/"),
... output=ManifestContentMultiFileOutput(
... statistics="my-outputs/statistics.json",
... assets="my-outputs/assets.json",
... solutions="my-outputs/solutions/"
... )
... )
... )
>>> content_config.format
'multi-file'
>>> content_config.multi_file.input.path
'data/input/'
format
instance-attribute
¶
The format of the content. Can only be InputFormat.JSON,
InputFormat.MULTI_FILE, or InputFormat.CSV_ARCHIVE.
model_post_init
¶
model_post_init(__context) -> None
Post-initialization validation to ensure format field contains valid values.
This method is automatically called by Pydantic after the model is initialized to validate that the format field contains one of the acceptable values.
| PARAMETER | DESCRIPTION |
|---|---|
|
Pydantic context (unused in this implementation).
TYPE:
|
| RAISES | DESCRIPTION |
|---|---|
ValueError
|
If the format field contains an invalid value that is not one of the acceptable formats (JSON, MULTI_FILE, or CSV_ARCHIVE). |
Source code in nextmv/nextmv/manifest.py
multi_file
class-attribute
instance-attribute
¶
multi_file: Optional[ManifestContentMultiFile] = Field(
serialization_alias="multi-file",
validation_alias=AliasChoices(
"multi-file", "multi_file"
),
default=None,
)
Configuration for multi-file content format.
ManifestContentMultiFile
¶
Bases: BaseModel
Configuration for multi-file content format.
You can import the ManifestContentMultiFile class directly from nextmv:
| PARAMETER | DESCRIPTION |
|---|---|
|
Configuration for multi-file content format input. |
|
Configuration for multi-file content format output. |
Examples:
>>> from nextmv import ManifestContentMultiFile, ManifestContentMultiFileInput, ManifestContentMultiFileOutput
>>> multi_file_config = ManifestContentMultiFile(
... input=ManifestContentMultiFileInput(path="data/input/"),
... output=ManifestContentMultiFileOutput(
... statistics="my-outputs/statistics.json",
... assets="my-outputs/assets.json",
... solutions="my-outputs/solutions/"
... )
... )
>>> multi_file_config.input.path
'data/input/'
input
instance-attribute
¶
Configuration for multi-file content format input.
output
instance-attribute
¶
output: ManifestContentMultiFileOutput
Configuration for multi-file content format output.
ManifestContentMultiFileInput
¶
Bases: BaseModel
Configuration for multi-file content format input.
You can import the ManifestContentMultiFileInput class directly from nextmv:
| PARAMETER | DESCRIPTION |
|---|---|
|
The path to the input file or directory.
TYPE:
|
Examples:
>>> from nextmv import ManifestContentMultiFileInput
>>> input_config = ManifestContentMultiFileInput(path="data/input/")
>>> input_config.path
'data/input/'
ManifestContentMultiFileOutput
¶
Bases: BaseModel
Configuration for multi-file content format output.
You can import the ManifestContentMultiFileOutput class directly from nextmv:
| PARAMETER | DESCRIPTION |
|---|---|
|
The path to the statistics file.
TYPE:
|
|
The path to the assets file.
TYPE:
|
|
The path to the solutions directory.
TYPE:
|
Examples:
>>> from nextmv import ManifestContentMultiFileOutput
>>> output_config = ManifestContentMultiFileOutput(
... statistics="my-outputs/statistics.json",
... assets="my-outputs/assets.json",
... solutions="my-outputs/solutions/"
... )
>>> output_config.statistics
'my-outputs/statistics.json'
ManifestOption
¶
Bases: BaseModel
An option for the decision model that is recorded in the manifest.
You can import the ManifestOption class directly from nextmv:
| PARAMETER | DESCRIPTION |
|---|---|
|
The name of the option.
TYPE:
|
|
The type of the option. This is a string representation of the
TYPE:
|
|
The default value of the option.
TYPE:
|
|
The description of the option.
TYPE:
|
|
Whether the option is required or not.
TYPE:
|
|
Optional additional attributes for the option. The Nextmv Cloud may
perform validation on these attributes. For example, the maximum
length of a string or the maximum value of an integer. These
additional attributes will be shown in the help message of the
TYPE:
|
|
Optional UI attributes for the option. This is a dictionary that can
contain additional information about how the option should be displayed
in the Nextmv Cloud UI. This is not used in the local
TYPE:
|
Examples:
>>> from nextmv import ManifestOption
>>> option = ManifestOption(
... name="solve.duration",
... option_type="string",
... default="30s",
... description="Maximum duration for the solver."
... )
>>> option.name
'solve.duration'
additional_attributes
class-attribute
instance-attribute
¶
Optional additional attributes for the option.
default
class-attribute
instance-attribute
¶
The default value of the option
description
class-attribute
instance-attribute
¶
The description of the option
from_option
classmethod
¶
from_option(option: Option) -> ManifestOption
Create a ManifestOption from an Option.
| PARAMETER | DESCRIPTION |
|---|---|
|
The option to convert.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
ManifestOption
|
The converted option. |
| RAISES | DESCRIPTION |
|---|---|
ValueError
|
If the |
Examples:
>>> from nextmv.options import Option
>>> from nextmv import ManifestOption
>>> sdk_option = Option(name="max_stops", option_type=int, default=100)
>>> manifest_opt = ManifestOption.from_option(sdk_option)
>>> manifest_opt.name
'max_stops'
>>> manifest_opt.option_type
'int'
Source code in nextmv/nextmv/manifest.py
option_type
class-attribute
instance-attribute
¶
option_type: str = Field(
serialization_alias="option_type",
validation_alias=AliasChoices("type", "option_type"),
)
The type of the option (e.g., "string", "int", "bool", "float).
required
class-attribute
instance-attribute
¶
Whether the option is required or not
to_option
¶
Convert the ManifestOption to an Option.
| RETURNS | DESCRIPTION |
|---|---|
Option
|
The converted option. |
| RAISES | DESCRIPTION |
|---|---|
ValueError
|
If the |
Examples:
>>> from nextmv import ManifestOption
>>> manifest_opt = ManifestOption(name="max_stops", option_type="int", default=100)
>>> sdk_option = manifest_opt.to_option()
>>> sdk_option.name
'max_stops'
>>> sdk_option.option_type
<class 'int'>
Source code in nextmv/nextmv/manifest.py
ui
class-attribute
instance-attribute
¶
ui: Optional[ManifestOptionUI] = None
Optional UI attributes for the option.
ManifestOptionUI
¶
Bases: BaseModel
UI attributes for an option in the manifest.
You can import the ManifestOptionUI class directly from nextmv:
| PARAMETER | DESCRIPTION |
|---|---|
|
The type of control to use for the option in the Nextmv Cloud UI. This is
useful for defining how the option should be presented in the Nextmv
Cloud UI. Current control types include "input", "select", "slider", and
"toggle". This attribute is not used in the local
TYPE:
|
|
A list of team roles to which this option will be hidden in the UI. For
example, if you want to hide an option from the "operator" role, you can
pass
TYPE:
|
|
An optional display name for the option. This is useful for making the option more user-friendly in the UI.
TYPE:
|
Examples:
>>> from nextmv import ManifestOptionUI
>>> ui_config = ManifestOptionUI(control_type="input")
>>> ui_config.control_type
'input'
control_type
class-attribute
instance-attribute
¶
The type of control to use for the option in the Nextmv Cloud UI.
display_name
class-attribute
instance-attribute
¶
An optional display name for the option. This is useful for making the option more user-friendly in the UI.
hidden_from
class-attribute
instance-attribute
¶
A list of team roles for which this option will be hidden in the UI.
ManifestOptions
¶
Bases: BaseModel
Options for the decision model.
You can import the ManifestOptions class directly from nextmv:
| PARAMETER | DESCRIPTION |
|---|---|
|
If strict is set to
TYPE:
|
|
The actual list of options for the decision model. An option is a parameter that configures the decision model.
TYPE:
|
|
Optional validation rules for all options.
|
|
A list of strings that define how options are transformed into command
line arguments. Use
TYPE:
|
Examples:
>>> from nextmv import ManifestOptions, ManifestOption
>>> options_config = ManifestOptions(
... strict=True,
... validation=ManifestValidation(enforce="all"),
... items=[
... ManifestOption(name="timeout", option_type="int", default=60),
... ManifestOption(name="vehicle_capacity", option_type="float", default=100.0)
... ]
... )
>>> options_config.strict
True
>>> len(options_config.items)
2
format
class-attribute
instance-attribute
¶
A list of strings that define how options are transformed into command line arguments.
Use {{name}} to refer to the option name and {{value}} to refer to the option value.
For example, ["-{{name}}", "{{value}}"] will transform an option named max_vehicles
with a value of 10 into the command line argument -max_vehicles 10.
from_options
classmethod
¶
from_options(
options: Options,
validation: OptionsEnforcement = None,
format: Optional[list[str]] = None,
) -> ManifestOptions
Create a ManifestOptions from a nextmv.Options.
| PARAMETER | DESCRIPTION |
|---|---|
|
The options to convert.
TYPE:
|
|
Optional validation rules for the options. If provided, it will be
used to set the
TYPE:
|
|
A list of strings that define how options are transformed into
command line arguments. Use For example,
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
ManifestOptions
|
The converted options. |
Examples:
>>> from nextmv.options import Options, Option
>>> from nextmv import ManifestOptions
>>> sdk_options = Options(Option("max_vehicles", int, 5))
>>> manifest_options = ManifestOptions.from_options(sdk_options)
>>> manifest_options.items[0].name
'max_vehicles'
Source code in nextmv/nextmv/manifest.py
items
class-attribute
instance-attribute
¶
items: Optional[list[ManifestOption]] = None
The actual list of options for the decision model.
An option is a parameter that configures the decision model.
strict
class-attribute
instance-attribute
¶
If strict is set to True, only the listed options will be allowed.
validation
class-attribute
instance-attribute
¶
validation: Optional[ManifestValidation] = None
Optional validation rules for all options.
ManifestPython
¶
Bases: BaseModel
Python-specific instructions.
You can import the ManifestPython class directly from nextmv:
| PARAMETER | DESCRIPTION |
|---|---|
|
Path to a requirements.txt file containing (additional) Python
dependencies that will be bundled with the app. Alternatively, you can provide a
list of strings, each representing a package to install, e.g.,
TYPE:
|
|
Information about an encoded decision model as handled via mlflow. This information is used to load the decision model from the app bundle.
TYPE:
|
Examples:
>>> from nextmv import ManifestPython, ManifestPythonModel
>>> python_config = ManifestPython(
... pip_requirements="requirements.txt",
... model=ManifestPythonModel(name="my_model")
... )
>>> python_config.pip_requirements
'requirements.txt'
arch
class-attribute
instance-attribute
¶
arch: Optional[ManifestPythonArch] = None
The architecture this model is meant to run on. One of "arm64" or "amd64". Uses "arm64" if not specified.
model
class-attribute
instance-attribute
¶
model: Optional[ManifestPythonModel] = None
Information about an encoded decision model.
As handled via mlflow. This information is used to load the decision model from the app bundle.
pip_requirements
class-attribute
instance-attribute
¶
pip_requirements: Optional[Union[str, list[str]]] = Field(
serialization_alias="pip-requirements",
validation_alias=AliasChoices(
"pip-requirements", "pip_requirements"
),
default=None,
)
Path to a requirements.txt file or list of packages.
Contains (additional) Python dependencies that will be bundled with the app. Can be either a string path to a requirements.txt file or a list of package specifications.
validate_version
classmethod
¶
validate_version(
v: Optional[Union[str, float]],
) -> Optional[str]
Validate and convert the Python version field to a string.
This validator allows the version to be specified as either a float or string in the manifest for convenience, but ensures it's stored internally as a string.
| PARAMETER | DESCRIPTION |
|---|---|
|
The version value to validate. Can be None, a string, or a float.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
Optional[str]
|
The version as a string, or None if the input was None. |
Examples:
>>> ManifestPython.validate_version(3.11)
'3.11'
>>> ManifestPython.validate_version("3.11")
'3.11'
>>> ManifestPython.validate_version(None) is None
True
Source code in nextmv/nextmv/manifest.py
version
class-attribute
instance-attribute
¶
The Python version this model is meant to run with. Uses "3.11" if not specified.
ManifestPythonArch
¶
Bases: str, Enum
Target architecture for bundling Python apps.
You can import the ManifestPythonArch class directly from nextmv:
| ATTRIBUTE | DESCRIPTION |
|---|---|
ARM64 |
ARM 64-bit architecture.
TYPE:
|
AMD64 |
AMD 64-bit architecture.
TYPE:
|
Examples:
ManifestPythonModel
¶
Bases: BaseModel
Model-specific instructions for a Python app.
You can import the ManifestPythonModel class directly from nextmv:
| PARAMETER | DESCRIPTION |
|---|---|
|
The name of the decision model.
TYPE:
|
|
Options for the decision model. This is a data representation of the
TYPE:
|
Examples:
>>> from nextmv import ManifestPythonModel
>>> python_model_config = ManifestPythonModel(
... name="routing_model",
... options=[{"name": "max_vehicles", "type": "int", "default": 10}]
... )
>>> python_model_config.name
'routing_model'
options
class-attribute
instance-attribute
¶
Options for the decision model. This is a data representation of the
nextmv.Options class. It consists of a list of dicts. Each dict
represents the nextmv.Option class. It is used to be able to
reconstruct an Options object from data when loading a decision model.
ManifestRuntime
¶
Bases: str, Enum
Runtime (environment) where the app will be run on Nextmv Cloud.
You can import the ManifestRuntime class directly from nextmv:
This enum defines the supported runtime environments for applications that can be deployed on Nextmv Cloud.
| ATTRIBUTE | DESCRIPTION |
|---|---|
DEFAULT |
This runtime is used to run compiled applications such as Go binaries.
TYPE:
|
PYTHON |
This runtime is used as the basis for all other Python runtimes and Python applications.
TYPE:
|
JAVA |
This runtime is used to run Java applications.
TYPE:
|
PYOMO |
This runtime provisions Python packages to run Pyomo applications.
TYPE:
|
HEXALY |
This runtime provisions Python packages to run Hexaly applications.
TYPE:
|
Examples:
>>> from nextmv import ManifestRuntime
>>> runtime = ManifestRuntime.PYTHON
>>> runtime
<ManifestRuntime.PYTHON: 'ghcr.io/nextmv-io/runtime/python:3.11'>
>>> str(runtime)
'ghcr.io/nextmv-io/runtime/python:3.11'
CUOPT
class-attribute
instance-attribute
¶
A runtime providing the NVIDIA cuOpt solver.
DEFAULT
class-attribute
instance-attribute
¶
This runtime is used to run compiled applications such as Go binaries.
HEXALY
class-attribute
instance-attribute
¶
Based on the python runtime, it provisions (pre-installs) the Hexaly solver to run Python applications.
JAVA
class-attribute
instance-attribute
¶
This runtime is used to run Java applications.
PYOMO
class-attribute
instance-attribute
¶
This runtime provisions Python packages to run Pyomo applications.
PYTHON
class-attribute
instance-attribute
¶
This runtime is used as the basis for all other Python runtimes and Python applications.
ManifestType
¶
Bases: str, Enum
Type of application in the manifest, based on the programming language.
You can import the ManifestType class directly from nextmv:
This enum defines the supported programming languages for applications that can be deployed on Nextmv Cloud.
| ATTRIBUTE | DESCRIPTION |
|---|---|
PYTHON |
Python format, used for Python applications.
TYPE:
|
GO |
Go format, used for Go applications.
TYPE:
|
JAVA |
Java format, used for Java applications.
TYPE:
|
Examples:
ManifestValidation
¶
Bases: BaseModel
Validation rules for options in the manifest.
You can import the ManifestValidation class directly from nextmv:
| PARAMETER | DESCRIPTION |
|---|---|
|
The enforcement level for the validation rules. This can be set to "none" or "all". If set to "none", no validation will be performed on the options prior to creating a run. If set to "all", all validation rules will be enforced on the options, and runs will not be created if any of the rules of the options are violated.
TYPE:
|
Examples:
>>> from nextmv import ManifestValidation
>>> validation = ManifestValidation(enforce="all")
>>> validation.enforce
'all'
enforce
class-attribute
instance-attribute
¶
The enforcement level for the validation rules. This can be set to "none" or "all". If set to "none", no validation will be performed on the options prior to creating a run. If set to "all", all validation rules will be enforced on the options, and runs will not be created if any of the rules of the options are violated.
default_python_manifest
¶
default_python_manifest() -> Manifest
Creates a default Python manifest as a starting point for applications being executed on the Nextmv Platform.
You can import the default_python_manifest function directly from nextmv:
| RETURNS | DESCRIPTION |
|---|---|
Manifest
|
A default Python manifest with common settings. |