nextmv 1.7.4.dev2__tar.gz → 1.7.4.dev3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/PKG-INFO +2 -1
- nextmv-1.7.4.dev3/nextmv/__about__.py +1 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/__init__.py +2 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/acceptance/create.py +17 -17
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/app/push.py +20 -7
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/batch/create.py +8 -13
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/ensemble/create.py +1 -1
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/input_set/create.py +47 -47
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/instance/create.py +1 -1
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/managed_input/create.py +4 -6
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/marketplace/subscription/create.py +2 -2
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/scenario/create.py +7 -9
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/secrets/create.py +1 -1
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/shadow/create.py +2 -2
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/switchback/create.py +4 -7
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/version/create.py +1 -1
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/configuration/create.py +20 -3
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/main.py +1 -1
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/manifest/init.py +49 -9
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/application/_run.py +15 -11
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/package.py +46 -146
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/local/executor.py +8 -1
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/manifest.py +272 -49
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/run.py +21 -0
- nextmv-1.7.4.dev2/nextmv/templates/binary_json_app.yaml → nextmv-1.7.4.dev3/nextmv/templates/binary_json.yaml +1 -1
- nextmv-1.7.4.dev3/nextmv/templates/binary_json_opt.yaml +84 -0
- nextmv-1.7.4.dev3/nextmv/templates/binary_multi-file_opt.yaml +92 -0
- nextmv-1.7.4.dev2/nextmv/templates/go_json_app.yaml → nextmv-1.7.4.dev3/nextmv/templates/go_json.yaml +1 -1
- nextmv-1.7.4.dev3/nextmv/templates/go_json_opt.yaml +84 -0
- nextmv-1.7.4.dev3/nextmv/templates/go_multi-file_opt.yaml +92 -0
- nextmv-1.7.4.dev2/nextmv/templates/java_json_app.yaml → nextmv-1.7.4.dev3/nextmv/templates/java_json.yaml +1 -1
- nextmv-1.7.4.dev3/nextmv/templates/java_json_opt.yaml +79 -0
- nextmv-1.7.4.dev3/nextmv/templates/java_multi-file_opt.yaml +87 -0
- nextmv-1.7.4.dev2/nextmv/templates/python_json_app.yaml → nextmv-1.7.4.dev3/nextmv/templates/python_json.yaml +1 -1
- nextmv-1.7.4.dev3/nextmv/templates/python_json_opt.yaml +81 -0
- nextmv-1.7.4.dev3/nextmv/templates/python_multi-file_opt.yaml +89 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/pyproject.toml +1 -0
- nextmv-1.7.4.dev3/tests/cli/manifest/test_init.py +286 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/cli/test_configuration.py +1 -1
- nextmv-1.7.4.dev3/tests/test_entrypoint/__init__.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/test_manifest.py +353 -0
- {nextmv-1.7.4.dev2/tests/local → nextmv-1.7.4.dev3/tests}/test_uv_handler.py +2 -2
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/uv.lock +14 -0
- nextmv-1.7.4.dev2/nextmv/__about__.py +0 -1
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/.gitignore +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/.python-version +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/CONTRIBUTING.md +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/LICENSE +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/README.md +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/__entrypoint__.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/_serialization.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/account.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/base_model.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/__init__.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/__init__.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/acceptance/__init__.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/acceptance/delete.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/acceptance/get.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/acceptance/list.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/acceptance/update.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/account/__init__.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/account/create.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/account/delete.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/account/get.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/account/update.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/app/__init__.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/app/create.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/app/delete.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/app/exists.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/app/get.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/app/list.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/app/update.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/batch/__init__.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/batch/delete.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/batch/get.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/batch/list.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/batch/metadata.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/batch/update.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/data/__init__.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/data/upload.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/ensemble/__init__.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/ensemble/delete.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/ensemble/get.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/ensemble/list.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/ensemble/update.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/input_set/__init__.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/input_set/delete.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/input_set/get.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/input_set/list.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/input_set/update.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/instance/__init__.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/instance/delete.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/instance/exists.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/instance/get.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/instance/list.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/instance/update.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/managed_input/__init__.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/managed_input/delete.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/managed_input/get.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/managed_input/list.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/managed_input/update.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/marketplace/__init__.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/marketplace/app/__init__.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/marketplace/app/create.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/marketplace/app/get.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/marketplace/app/list.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/marketplace/app/update.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/marketplace/subscription/__init__.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/marketplace/subscription/delete.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/marketplace/subscription/get.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/marketplace/subscription/list.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/marketplace/version/__init__.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/marketplace/version/create.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/marketplace/version/get.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/marketplace/version/list.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/marketplace/version/update.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/run/__init__.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/run/cancel.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/run/create.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/run/delete.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/run/get.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/run/input.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/run/list.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/run/logs.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/run/metadata.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/run/track.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/scenario/__init__.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/scenario/delete.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/scenario/get.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/scenario/list.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/scenario/metadata.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/scenario/update.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/secrets/__init__.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/secrets/delete.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/secrets/get.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/secrets/list.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/secrets/update.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/shadow/__init__.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/shadow/delete.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/shadow/get.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/shadow/list.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/shadow/metadata.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/shadow/start.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/shadow/stop.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/shadow/update.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/sso/__init__.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/sso/create.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/sso/delete.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/sso/disable.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/sso/domain/__init__.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/sso/domain/delete.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/sso/enable.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/sso/get.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/sso/update.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/switchback/__init__.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/switchback/delete.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/switchback/get.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/switchback/list.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/switchback/metadata.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/switchback/start.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/switchback/stop.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/switchback/update.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/upload/__init__.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/upload/create.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/version/__init__.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/version/delete.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/version/exists.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/version/get.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/version/list.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/version/update.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/community/__init__.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/community/clone.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/community/list.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/configuration/__init__.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/configuration/config.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/configuration/delete.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/configuration/list.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/init.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/local/__init__.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/local/app/__init__.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/local/app/delete.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/local/app/get.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/local/app/list.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/local/app/register.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/local/app/registered.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/local/app/sync.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/local/app/update.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/local/run/__init__.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/local/run/create.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/local/run/get.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/local/run/input.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/local/run/list.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/local/run/logs.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/local/run/metadata.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/local/run/visuals.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/manifest/__init__.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/manifest/validate.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/__init__.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/serve.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/server.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/tools/WORKFLOW.md +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/tools/__init__.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/tools/_helpers.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/tools/acceptance.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/tools/account.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/tools/app.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/tools/batch.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/tools/community.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/tools/ensemble.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/tools/guide.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/tools/input_set.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/tools/instance.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/tools/local.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/tools/managed_input.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/tools/profile.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/tools/run.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/tools/scenario.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/tools/secrets.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/tools/shadow.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/tools/sso.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/tools/switchback.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/tools/version.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/message.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/options.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/version.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/__init__.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/acceptance_test.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/account.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/application/__init__.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/application/_acceptance.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/application/_batch_scenario.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/application/_ensemble.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/application/_input_set.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/application/_instance.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/application/_managed_input.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/application/_secrets.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/application/_shadow.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/application/_switchback.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/application/_utils.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/application/_version.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/assets.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/batch_experiment.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/client.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/community.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/ensemble.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/input_set.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/instance.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/integration.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/marketplace.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/scenario.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/secrets.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/shadow.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/sso.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/switchback.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/url.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/version.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/content_format.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/deprecated.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/input.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/local/__init__.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/local/application.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/local/geojson_handler.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/local/local.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/local/plotly_handler.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/local/registry.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/local/runner.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/logger.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/model.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/options.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/output.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/polling.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/safe.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/status.py +0 -0
- /nextmv-1.7.4.dev2/nextmv/templates/binary_multi-file_app.yaml → /nextmv-1.7.4.dev3/nextmv/templates/binary_multi-file.yaml +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/go_json_hello-world/.gitignore +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/go_json_hello-world/README.md +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/go_json_hello-world/app.yaml +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/go_json_hello-world/go.mod +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/go_json_hello-world/input.json +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/go_json_hello-world/main.go +0 -0
- /nextmv-1.7.4.dev2/nextmv/templates/go_multi-file_app.yaml → /nextmv-1.7.4.dev3/nextmv/templates/go_multi-file.yaml +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/go_multi-file_hello-world/.gitignore +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/go_multi-file_hello-world/README.md +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/go_multi-file_hello-world/app.yaml +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/go_multi-file_hello-world/go.mod +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/go_multi-file_hello-world/inputs/input.json +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/go_multi-file_hello-world/main.go +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/java_json_hello-world/.gitignore +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/java_json_hello-world/Main.java +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/java_json_hello-world/README.md +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/java_json_hello-world/app.yaml +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/java_json_hello-world/input.json +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/java_json_hello-world/pom.xml +0 -0
- /nextmv-1.7.4.dev2/nextmv/templates/java_multi-file_app.yaml → /nextmv-1.7.4.dev3/nextmv/templates/java_multi-file.yaml +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/java_multi-file_hello-world/.gitignore +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/java_multi-file_hello-world/Main.java +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/java_multi-file_hello-world/README.md +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/java_multi-file_hello-world/app.yaml +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/java_multi-file_hello-world/inputs/input.json +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/java_multi-file_hello-world/pom.xml +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_class-assign/.gitignore +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_class-assign/README.md +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_class-assign/app.yaml +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_class-assign/input.json +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_class-assign/main.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_class-assign/requirements.txt +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_class-assign/visualizations.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_demand-alloc/.gitignore +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_demand-alloc/README.md +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_demand-alloc/allocation/README.md +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_demand-alloc/allocation/app.yaml +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_demand-alloc/allocation/input.json +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_demand-alloc/allocation/main.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_demand-alloc/allocation/requirements.txt +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_demand-alloc/allocation/visuals.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_demand-alloc/workflow/README.md +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_demand-alloc/workflow/app.yaml +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_demand-alloc/workflow/input.json +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_demand-alloc/workflow/main.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_demand-alloc/workflow/requirements.txt +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_demand-alloc/workflow/visuals.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_hello-world/.gitignore +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_hello-world/README.md +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_hello-world/app.yaml +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_hello-world/input.json +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_hello-world/main.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_hello-world/requirements.txt +0 -0
- /nextmv-1.7.4.dev2/nextmv/templates/python_multi-file_app.yaml → /nextmv-1.7.4.dev3/nextmv/templates/python_multi-file.yaml +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_class-assign/.gitignore +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_class-assign/README.md +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_class-assign/app.yaml +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_class-assign/inputs/input.json +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_class-assign/main.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_class-assign/requirements.txt +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_class-assign/visualizations.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_demand-alloc/README.md +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_demand-alloc/allocation/README.md +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_demand-alloc/allocation/app.yaml +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_demand-alloc/allocation/input.json +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_demand-alloc/allocation/main.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_demand-alloc/allocation/requirements.txt +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_demand-alloc/allocation/visuals.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_demand-alloc/workflow/.gitignore +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_demand-alloc/workflow/README.md +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_demand-alloc/workflow/app.yaml +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_demand-alloc/workflow/inputs/input.json +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_demand-alloc/workflow/main.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_demand-alloc/workflow/requirements.txt +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_demand-alloc/workflow/visuals.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_hello-world/.gitignore +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_hello-world/README.md +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_hello-world/app.yaml +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_hello-world/inputs/input.json +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_hello-world/main.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_hello-world/requirements.txt +0 -0
- {nextmv-1.7.4.dev2/nextmv/local → nextmv-1.7.4.dev3/nextmv}/uv_handler.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/__init__.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/cli/__init__.py +0 -0
- {nextmv-1.7.4.dev2/tests/cloud → nextmv-1.7.4.dev3/tests/cli/manifest}/__init__.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/cli/test_init_cli_call.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/cli/test_main.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/cli/test_mcp.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/cli/test_version.py +0 -0
- {nextmv-1.7.4.dev2/tests/integration → nextmv-1.7.4.dev3/tests/cloud}/__init__.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/cloud/app.yaml +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/cloud/test_client.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/cloud/test_instance.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/cloud/test_package.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/cloud/test_scenario.py +0 -0
- {nextmv-1.7.4.dev2/tests/integration/cloud → nextmv-1.7.4.dev3/tests/integration}/__init__.py +0 -0
- {nextmv-1.7.4.dev2/tests/local → nextmv-1.7.4.dev3/tests/integration/cloud}/__init__.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/integration/cloud/test_integration_cloud.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/integration/cloud/test_integration_marketplace.py +0 -0
- {nextmv-1.7.4.dev2/tests/scripts → nextmv-1.7.4.dev3/tests/local}/__init__.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/local/test_application.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/local/test_executor.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/local/test_registry.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/local/test_runner.py +0 -0
- {nextmv-1.7.4.dev2/tests/test_entrypoint → nextmv-1.7.4.dev3/tests/scripts}/__init__.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/scripts/options1.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/scripts/options2.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/scripts/options3.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/scripts/options4.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/scripts/options5.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/scripts/options6.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/scripts/options7.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/test_base_model.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/test_entrypoint/test_entrypoint.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/test_input.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/test_inputs/test_data.csv +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/test_inputs/test_data.json +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/test_inputs/test_data.txt +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/test_logger.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/test_model.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/test_options.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/test_output.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/test_polling.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/test_run.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/test_safe.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/test_serialization.py +0 -0
- {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/test_version.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: nextmv
|
|
3
|
-
Version: 1.7.4.
|
|
3
|
+
Version: 1.7.4.dev3
|
|
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,7 @@ Requires-Dist: pydantic>=2.5.2
|
|
|
225
225
|
Requires-Dist: pyyaml>=6.0.1
|
|
226
226
|
Requires-Dist: questionary>=2.1.1
|
|
227
227
|
Requires-Dist: requests>=2.31.0
|
|
228
|
+
Requires-Dist: tomli>=2.4.1; python_full_version < '3.11'
|
|
228
229
|
Requires-Dist: typer>=0.20.1
|
|
229
230
|
Requires-Dist: urllib3>=2.1.0
|
|
230
231
|
Requires-Dist: uv>=0.4.0
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "v1.7.4.dev3"
|
|
@@ -18,10 +18,12 @@ from .logger import log as log
|
|
|
18
18
|
from .logger import redirect_stdout as redirect_stdout
|
|
19
19
|
from .logger import reset_stdout as reset_stdout
|
|
20
20
|
from .manifest import MANIFEST_FILE_NAME as MANIFEST_FILE_NAME
|
|
21
|
+
from .manifest import ControlType as ControlType
|
|
21
22
|
from .manifest import Manifest as Manifest
|
|
22
23
|
from .manifest import ManifestBuild as ManifestBuild
|
|
23
24
|
from .manifest import ManifestExecution as ManifestExecution
|
|
24
25
|
from .manifest import ManifestOption as ManifestOption
|
|
26
|
+
from .manifest import ManifestOptionType as ManifestOptionType
|
|
25
27
|
from .manifest import ManifestPython as ManifestPython
|
|
26
28
|
from .manifest import ManifestPythonArch as ManifestPythonArch
|
|
27
29
|
from .manifest import ManifestPythonModel as ManifestPythonModel
|
|
@@ -80,7 +80,7 @@ app = typer.Typer()
|
|
|
80
80
|
}},
|
|
81
81
|
"statistic": "mean"
|
|
82
82
|
}}'
|
|
83
|
-
nextmv cloud acceptance create --app-id hare-app
|
|
83
|
+
nextmv cloud acceptance create --app-id hare-app \\
|
|
84
84
|
--candidate-instance-id candidate-123 --baseline-instance-id baseline-456 \\
|
|
85
85
|
--metrics "$METRIC" --input-set-id input-set-123[/dim]
|
|
86
86
|
|
|
@@ -103,7 +103,7 @@ app = typer.Typer()
|
|
|
103
103
|
}},
|
|
104
104
|
"statistic": "p95"
|
|
105
105
|
}}'
|
|
106
|
-
nextmv cloud acceptance create --app-id hare-app
|
|
106
|
+
nextmv cloud acceptance create --app-id hare-app \\
|
|
107
107
|
--candidate-instance-id candidate-123 --baseline-instance-id baseline-456 \\
|
|
108
108
|
--metrics "$METRIC1" --metrics "$METRIC2" --input-set-id input-set-123[/dim]
|
|
109
109
|
|
|
@@ -128,7 +128,7 @@ app = typer.Typer()
|
|
|
128
128
|
"statistic": "p95"
|
|
129
129
|
}}
|
|
130
130
|
]'
|
|
131
|
-
nextmv cloud acceptance create --app-id hare-app
|
|
131
|
+
nextmv cloud acceptance create --app-id hare-app \\
|
|
132
132
|
--candidate-instance-id candidate-123 --baseline-instance-id baseline-456 \\
|
|
133
133
|
--metrics "$METRICS" --input-set-id input-set-123[/dim]
|
|
134
134
|
|
|
@@ -142,7 +142,7 @@ app = typer.Typer()
|
|
|
142
142
|
}},
|
|
143
143
|
"statistic": "mean"
|
|
144
144
|
}}'
|
|
145
|
-
nextmv cloud acceptance create --app-id hare-app
|
|
145
|
+
nextmv cloud acceptance create --app-id hare-app \\
|
|
146
146
|
--candidate-instance-id candidate-123 --baseline-instance-id baseline-456 \\
|
|
147
147
|
--metrics "$METRIC" --input-set-id input-set-123 --wait[/dim]
|
|
148
148
|
|
|
@@ -156,7 +156,7 @@ app = typer.Typer()
|
|
|
156
156
|
}},
|
|
157
157
|
"statistic": "mean"
|
|
158
158
|
}}'
|
|
159
|
-
nextmv cloud acceptance create --app-id hare-app
|
|
159
|
+
nextmv cloud acceptance create --app-id hare-app \\
|
|
160
160
|
--candidate-instance-id candidate-123 --baseline-instance-id baseline-456 \\
|
|
161
161
|
--metrics "$METRIC" --input-set-id input-set-123 --output results.json[/dim]
|
|
162
162
|
"""
|
|
@@ -164,17 +164,6 @@ app = typer.Typer()
|
|
|
164
164
|
def create(
|
|
165
165
|
app_id: AppIDOption,
|
|
166
166
|
# Options for acceptance test configuration.
|
|
167
|
-
acceptance_test_id: Annotated[
|
|
168
|
-
str,
|
|
169
|
-
typer.Option(
|
|
170
|
-
"--acceptance-test-id",
|
|
171
|
-
"-t",
|
|
172
|
-
help="ID for the acceptance test.",
|
|
173
|
-
envvar="NEXTMV_ACCEPTANCE_TEST_ID",
|
|
174
|
-
metavar="ACCEPTANCE_TEST_ID",
|
|
175
|
-
rich_help_panel="Acceptance test configuration",
|
|
176
|
-
),
|
|
177
|
-
],
|
|
178
167
|
baseline_instance_id: Annotated[
|
|
179
168
|
str,
|
|
180
169
|
typer.Option(
|
|
@@ -207,6 +196,17 @@ def create(
|
|
|
207
196
|
rich_help_panel="Acceptance test configuration",
|
|
208
197
|
),
|
|
209
198
|
],
|
|
199
|
+
acceptance_test_id: Annotated[
|
|
200
|
+
str | None,
|
|
201
|
+
typer.Option(
|
|
202
|
+
"--acceptance-test-id",
|
|
203
|
+
"-t",
|
|
204
|
+
help="An optional ID for the acceptance test. If not provided, a random ID will be generated.",
|
|
205
|
+
envvar="NEXTMV_ACCEPTANCE_TEST_ID",
|
|
206
|
+
metavar="ACCEPTANCE_TEST_ID",
|
|
207
|
+
rich_help_panel="Acceptance test configuration",
|
|
208
|
+
),
|
|
209
|
+
] = None,
|
|
210
210
|
description: Annotated[
|
|
211
211
|
str | None,
|
|
212
212
|
typer.Option(
|
|
@@ -233,7 +233,7 @@ def create(
|
|
|
233
233
|
typer.Option(
|
|
234
234
|
"--name",
|
|
235
235
|
"-n",
|
|
236
|
-
help="
|
|
236
|
+
help="Optional name of the acceptance test. If not provided, the ID will be used as the name.",
|
|
237
237
|
metavar="NAME",
|
|
238
238
|
rich_help_panel="Acceptance test configuration",
|
|
239
239
|
),
|
|
@@ -77,7 +77,7 @@ def push(
|
|
|
77
77
|
"--create-instance-id",
|
|
78
78
|
"-c",
|
|
79
79
|
help="Link the newly created version to a [yellow]new[/yellow] instance with this ID. "
|
|
80
|
-
"Skips prompt to provide an instance ID. Useful for non-interactive sessions.",
|
|
80
|
+
"Skips prompt to provide an instance ID. Useful for non-interactive sessions. Activates --version-yes.",
|
|
81
81
|
metavar="CREATE_INSTANCE_ID",
|
|
82
82
|
rich_help_panel="Instance control",
|
|
83
83
|
),
|
|
@@ -88,7 +88,7 @@ def push(
|
|
|
88
88
|
"--update-instance-id",
|
|
89
89
|
"-u",
|
|
90
90
|
help="Link the newly created version to an [yellow]existing[/yellow] instance with this ID. "
|
|
91
|
-
"Skips prompt to provide an instance ID. Useful for non-interactive sessions.",
|
|
91
|
+
"Skips prompt to provide an instance ID. Useful for non-interactive sessions. Activates --version-yes.",
|
|
92
92
|
metavar="UPDATE_INSTANCE_ID",
|
|
93
93
|
rich_help_panel="Instance control",
|
|
94
94
|
),
|
|
@@ -109,9 +109,9 @@ def push(
|
|
|
109
109
|
prompted to create a new version. If a new version is created, you will be
|
|
110
110
|
prompted to link it to an instance. If the instance exists, you will be
|
|
111
111
|
asked if you want to update it. If it doesn't, you will be asked to create
|
|
112
|
-
it. You can use the following
|
|
112
|
+
it. You can use the following options to skip the prompts, useful in
|
|
113
113
|
non-interactive sessions like in a CI/CD pipeline: --version-yes,
|
|
114
|
-
--version-id, --create-instance-id, and --update-instance-id.
|
|
114
|
+
--version-no, --version-id, --create-instance-id, and --update-instance-id.
|
|
115
115
|
|
|
116
116
|
[bold][underline]Examples[/underline][/bold]
|
|
117
117
|
|
|
@@ -131,10 +131,10 @@ def push(
|
|
|
131
131
|
$ [dim]nextmv cloud app push --app-id hare-app --version-id v1.0.0[/dim]
|
|
132
132
|
|
|
133
133
|
- Push and create a new version, then link it to a new instance with a specific ID (no prompt).
|
|
134
|
-
$ [dim]nextmv cloud app push --app-id hare-app --
|
|
134
|
+
$ [dim]nextmv cloud app push --app-id hare-app --create-instance-id inst-1[/dim]
|
|
135
135
|
|
|
136
136
|
- Push and create a new version, then link it to an existing instance (no prompt).
|
|
137
|
-
$ [dim]nextmv cloud app push --app-id hare-app --
|
|
137
|
+
$ [dim]nextmv cloud app push --app-id hare-app --update-instance-id inst-1[/dim]
|
|
138
138
|
"""
|
|
139
139
|
|
|
140
140
|
cloud_app, _ = build_cloud_app(app_id=app_id, profile=profile)
|
|
@@ -144,7 +144,8 @@ def push(
|
|
|
144
144
|
exists = cloud_app.version_exists(version_id=version_id)
|
|
145
145
|
if exists:
|
|
146
146
|
error(
|
|
147
|
-
f"
|
|
147
|
+
f"Used option --version-id but version [magenta]{version_id}[/magenta] already exists "
|
|
148
|
+
f"for application [magenta]{app_id}[/magenta]."
|
|
148
149
|
)
|
|
149
150
|
|
|
150
151
|
# Cannot skip and auto-confirm version creation at the same time.
|
|
@@ -251,6 +252,8 @@ def handle_push(
|
|
|
251
252
|
version_yes=version_yes,
|
|
252
253
|
version_no=version_no,
|
|
253
254
|
now=now,
|
|
255
|
+
update_defined=update_defined,
|
|
256
|
+
create_defined=create_defined,
|
|
254
257
|
)
|
|
255
258
|
if not should_continue:
|
|
256
259
|
return ""
|
|
@@ -300,6 +303,8 @@ def _handle_version_creation(
|
|
|
300
303
|
version_yes: bool,
|
|
301
304
|
version_no: bool,
|
|
302
305
|
now: datetime,
|
|
306
|
+
update_defined: bool,
|
|
307
|
+
create_defined: bool,
|
|
303
308
|
) -> tuple[str, bool]:
|
|
304
309
|
"""
|
|
305
310
|
Handle the logic for version creation after pushing an application.
|
|
@@ -340,6 +345,14 @@ def _handle_version_creation(
|
|
|
340
345
|
info(f"Version [magenta]{version_id}[/magenta] does not exist. A new version will be created.")
|
|
341
346
|
version_yes = True # Activate auto-confirm since user provided a version ID.
|
|
342
347
|
|
|
348
|
+
if create_defined:
|
|
349
|
+
info("Used option --create-instance-id, which requires a version. A new version will be created.")
|
|
350
|
+
version_yes = True # Activate auto-confirm since user wants to create an instance.
|
|
351
|
+
|
|
352
|
+
if update_defined:
|
|
353
|
+
info("Used option --update-instance-id, which requires a version. A new version will be created.")
|
|
354
|
+
version_yes = True # Activate auto-confirm since user wants to update an instance.
|
|
355
|
+
|
|
343
356
|
# If we are not auto-confirming version creation, ask the user.
|
|
344
357
|
if not version_yes:
|
|
345
358
|
should_create = confirmation(
|
|
@@ -26,7 +26,7 @@ def create(
|
|
|
26
26
|
typer.Option(
|
|
27
27
|
"--batch-experiment-id",
|
|
28
28
|
"-b",
|
|
29
|
-
help="ID for the batch experiment. Will be generated if not provided.",
|
|
29
|
+
help="Optional ID for the batch experiment. Will be generated if not provided.",
|
|
30
30
|
envvar="NEXTMV_BATCH_EXPERIMENT_ID",
|
|
31
31
|
metavar="BATCH_EXPERIMENT_ID",
|
|
32
32
|
rich_help_panel="Batch experiment configuration",
|
|
@@ -57,7 +57,7 @@ def create(
|
|
|
57
57
|
typer.Option(
|
|
58
58
|
"--name",
|
|
59
59
|
"-n",
|
|
60
|
-
help="
|
|
60
|
+
help="Optional name of the batch experiment. If not provided, the ID will be used as the name.",
|
|
61
61
|
metavar="NAME",
|
|
62
62
|
rich_help_panel="Batch experiment configuration",
|
|
63
63
|
),
|
|
@@ -180,7 +180,7 @@ def create(
|
|
|
180
180
|
"instance_id": "warren-planner-v1"
|
|
181
181
|
}'
|
|
182
182
|
nextmv cloud batch create --app-id hare-app --batch-experiment-id bunny-hop-test \\
|
|
183
|
-
--
|
|
183
|
+
--input-set-id spring-gardens --runs "$RUN"[/dim]
|
|
184
184
|
|
|
185
185
|
- Create with multiple runs by repeating the flag.
|
|
186
186
|
$ [dim]RUN1='{
|
|
@@ -191,8 +191,7 @@ def create(
|
|
|
191
191
|
"input_id": "lettuce-field-2",
|
|
192
192
|
"instance_id": "hop-optimizer"
|
|
193
193
|
}'
|
|
194
|
-
nextmv cloud batch create --app-id hare-app --
|
|
195
|
-
--name "Lettuce Delivery Optimization" --input-set-id veggie-gardens \\
|
|
194
|
+
nextmv cloud batch create --app-id hare-app --input-set-id veggie-gardens \\
|
|
196
195
|
--runs "$RUN1" --runs "$RUN2"[/dim]
|
|
197
196
|
|
|
198
197
|
- Create with multiple runs in a single [magenta]json[/magenta] array.
|
|
@@ -206,16 +205,14 @@ def create(
|
|
|
206
205
|
"version_id": "tunnel-planner-v3"
|
|
207
206
|
}
|
|
208
207
|
]'
|
|
209
|
-
nextmv cloud batch create --app-id hare-app --
|
|
210
|
-
--name "Warren Construction Plans" --input-set-id burrow-sites --runs "$RUNS"[/dim]
|
|
208
|
+
nextmv cloud batch create --app-id hare-app --input-set-id burrow-sites --runs "$RUNS"[/dim]
|
|
211
209
|
|
|
212
210
|
- Create a batch experiment and wait for it to complete.
|
|
213
211
|
$ [dim]RUN='{
|
|
214
212
|
"input_id": "carrot-harvest",
|
|
215
213
|
"instance_id": "foraging-route"
|
|
216
214
|
}'
|
|
217
|
-
nextmv cloud batch create --app-id hare-app --
|
|
218
|
-
--name "Autumn Carrot Collection" --input-set-id harvest-season \\
|
|
215
|
+
nextmv cloud batch create --app-id hare-app --input-set-id harvest-season \\
|
|
219
216
|
--runs "$RUN" --wait[/dim]
|
|
220
217
|
|
|
221
218
|
- Create a batch experiment and save the results to a file, waiting for completion.
|
|
@@ -223,8 +220,7 @@ def create(
|
|
|
223
220
|
"input_id": "predator-zones",
|
|
224
221
|
"instance_id": "safe-hopper"
|
|
225
222
|
}'
|
|
226
|
-
nextmv cloud batch create --app-id hare-app --
|
|
227
|
-
--name "Fox Avoidance Routes" --input-set-id danger-zones \\
|
|
223
|
+
nextmv cloud batch create --app-id hare-app --input-set-id danger-zones \\
|
|
228
224
|
--runs "$RUN" --output bunny-safety-results.json[/dim]
|
|
229
225
|
|
|
230
226
|
- Create a batch experiment with option sets.
|
|
@@ -242,8 +238,7 @@ def create(
|
|
|
242
238
|
"fast-hops": {"max_speed": "10", "caution_level": "low"},
|
|
243
239
|
"careful-hops": {"max_speed": "5", "caution_level": "high"}
|
|
244
240
|
}'
|
|
245
|
-
nextmv cloud batch create --app-id hare-app --
|
|
246
|
-
--name "Speed vs Safety Analysis" --input-set-id garden-paths \\
|
|
241
|
+
nextmv cloud batch create --app-id hare-app --input-set-id garden-paths \\
|
|
247
242
|
--runs "$RUN1" --runs "$RUN2" --option-sets "$OPTION_SETS"[/dim]
|
|
248
243
|
"""
|
|
249
244
|
|
|
@@ -21,15 +21,25 @@ app = typer.Typer()
|
|
|
21
21
|
@app.command()
|
|
22
22
|
def create(
|
|
23
23
|
app_id: AppIDOption,
|
|
24
|
-
|
|
25
|
-
str,
|
|
24
|
+
description: Annotated[
|
|
25
|
+
str | None,
|
|
26
26
|
typer.Option(
|
|
27
|
-
"--
|
|
28
|
-
"-
|
|
29
|
-
help="
|
|
30
|
-
metavar="
|
|
27
|
+
"--description",
|
|
28
|
+
"-d",
|
|
29
|
+
help="An optional description for the input set.",
|
|
30
|
+
metavar="DESCRIPTION",
|
|
31
|
+
),
|
|
32
|
+
] = None,
|
|
33
|
+
end_time: Annotated[
|
|
34
|
+
datetime | None,
|
|
35
|
+
typer.Option(
|
|
36
|
+
"--end-time",
|
|
37
|
+
formats=["%Y-%m-%dT%H:%M:%S%z"],
|
|
38
|
+
help="End time for filtering runs in [magenta]RFC 3339[/magenta] format. "
|
|
39
|
+
"Object format: [dim]'2024-01-01T00:00:00Z'[/dim]",
|
|
40
|
+
metavar="END_TIME",
|
|
31
41
|
),
|
|
32
|
-
],
|
|
42
|
+
] = None,
|
|
33
43
|
input_set_id: Annotated[
|
|
34
44
|
str | None,
|
|
35
45
|
typer.Option(
|
|
@@ -49,13 +59,31 @@ def create(
|
|
|
49
59
|
metavar="INSTANCE_ID",
|
|
50
60
|
),
|
|
51
61
|
] = None,
|
|
52
|
-
|
|
62
|
+
managed_inputs: Annotated[
|
|
53
63
|
str | None,
|
|
54
64
|
typer.Option(
|
|
55
|
-
"--
|
|
56
|
-
"
|
|
57
|
-
|
|
58
|
-
metavar="
|
|
65
|
+
"--managed-inputs",
|
|
66
|
+
help="Managed inputs for the input set. Data should be valid [magenta]json[/magenta]. Object "
|
|
67
|
+
"format: [dim][{'id': 'id', 'name': 'name', 'description': 'description'}][/dim].",
|
|
68
|
+
metavar="MANAGED_INPUTS",
|
|
69
|
+
),
|
|
70
|
+
] = None,
|
|
71
|
+
maximum_runs: Annotated[
|
|
72
|
+
int | None,
|
|
73
|
+
typer.Option(
|
|
74
|
+
"--maximum-runs",
|
|
75
|
+
"-m",
|
|
76
|
+
help="Maximum number of runs to include (max [magenta]20[/magenta]).",
|
|
77
|
+
metavar="MAXIMUM_RUNS",
|
|
78
|
+
),
|
|
79
|
+
] = 20,
|
|
80
|
+
name: Annotated[
|
|
81
|
+
str | None,
|
|
82
|
+
typer.Option(
|
|
83
|
+
"--name",
|
|
84
|
+
"-n",
|
|
85
|
+
help="An optional name for the input set. If not provided, the ID will be used as the name.",
|
|
86
|
+
metavar="NAME",
|
|
59
87
|
),
|
|
60
88
|
] = None,
|
|
61
89
|
run_ids: Annotated[
|
|
@@ -77,34 +105,6 @@ def create(
|
|
|
77
105
|
metavar="START_TIME",
|
|
78
106
|
),
|
|
79
107
|
] = None,
|
|
80
|
-
end_time: Annotated[
|
|
81
|
-
datetime | None,
|
|
82
|
-
typer.Option(
|
|
83
|
-
"--end-time",
|
|
84
|
-
formats=["%Y-%m-%dT%H:%M:%S%z"],
|
|
85
|
-
help="End time for filtering runs in [magenta]RFC 3339[/magenta] format. "
|
|
86
|
-
"Object format: [dim]'2024-01-01T00:00:00Z'[/dim]",
|
|
87
|
-
metavar="END_TIME",
|
|
88
|
-
),
|
|
89
|
-
] = None,
|
|
90
|
-
maximum_runs: Annotated[
|
|
91
|
-
int | None,
|
|
92
|
-
typer.Option(
|
|
93
|
-
"--maximum-runs",
|
|
94
|
-
"-m",
|
|
95
|
-
help="Maximum number of runs to include (max [magenta]20[/magenta]).",
|
|
96
|
-
metavar="MAXIMUM_RUNS",
|
|
97
|
-
),
|
|
98
|
-
] = 20,
|
|
99
|
-
managed_inputs: Annotated[
|
|
100
|
-
str | None,
|
|
101
|
-
typer.Option(
|
|
102
|
-
"--managed-inputs",
|
|
103
|
-
help="Managed inputs for the input set. Data should be valid [magenta]json[/magenta]. Object "
|
|
104
|
-
"format: [dim][{'id': 'id', 'name': 'name', 'description': 'description'}][/dim].",
|
|
105
|
-
metavar="MANAGED_INPUTS",
|
|
106
|
-
),
|
|
107
|
-
] = None,
|
|
108
108
|
profile: ProfileOption = None,
|
|
109
109
|
) -> None:
|
|
110
110
|
"""
|
|
@@ -123,18 +123,18 @@ def create(
|
|
|
123
123
|
- Create an input set for application [magenta]hare-app[/magenta] from runs.
|
|
124
124
|
A random input set ID will be generated if one is not provided.
|
|
125
125
|
$ [dim]nextmv cloud input-set create --app-id hare-app \\
|
|
126
|
-
--
|
|
126
|
+
--run-ids run-1 --run-ids run-2 --run-ids run-3[/dim]
|
|
127
127
|
|
|
128
|
-
- Create an input set with a specific ID.
|
|
128
|
+
- Create an input set with a specific ID and name.
|
|
129
129
|
$ [dim]nextmv cloud input-set create --app-id hare-app --input-set-id hare-input-set \\
|
|
130
|
-
--name "Hare Input Set" --run-ids run-1 --run-ids run-2 --run-ids run-3
|
|
130
|
+
--name "Hare Input Set" --run-ids run-1 --run-ids run-2 --run-ids run-3[/dim]
|
|
131
131
|
|
|
132
132
|
- Create an input set using existing managed inputs.
|
|
133
|
-
$ [dim]nextmv cloud input-set create --app-id hare-app
|
|
133
|
+
$ [dim]nextmv cloud input-set create --app-id hare-app \\
|
|
134
134
|
--managed-inputs '[{"id": "hare-input-1", "name": "hare input", "description": "hare description"}]'[/dim]
|
|
135
135
|
|
|
136
136
|
- Create an input set from runs using a specific instance and time range.
|
|
137
|
-
$ [dim]nextmv cloud input-set create --app-id hare-app
|
|
137
|
+
$ [dim]nextmv cloud input-set create --app-id hare-app \\
|
|
138
138
|
--instance-id hare-instance --start-time "2024-01-01T00:00:00Z" \\
|
|
139
139
|
--end-time "2024-01-31T23:59:59Z"[/dim]
|
|
140
140
|
"""
|
|
@@ -156,8 +156,8 @@ def create(
|
|
|
156
156
|
managed_input_list.append(i)
|
|
157
157
|
|
|
158
158
|
input_set = cloud_app.new_input_set(
|
|
159
|
-
input_set_id,
|
|
160
|
-
name,
|
|
159
|
+
id=input_set_id,
|
|
160
|
+
name=name,
|
|
161
161
|
description=description,
|
|
162
162
|
instance_id=instance_id,
|
|
163
163
|
run_ids=run_ids,
|
|
@@ -55,7 +55,7 @@ def create(
|
|
|
55
55
|
typer.Option(
|
|
56
56
|
"--name",
|
|
57
57
|
"-n",
|
|
58
|
-
help="
|
|
58
|
+
help="Optional name for the instance. If a name is not provided, the instance ID will be used as the name.",
|
|
59
59
|
metavar="NAME",
|
|
60
60
|
),
|
|
61
61
|
] = None,
|
|
@@ -54,7 +54,7 @@ def create(
|
|
|
54
54
|
typer.Option(
|
|
55
55
|
"--name",
|
|
56
56
|
"-n",
|
|
57
|
-
help="
|
|
57
|
+
help="Optional name for the managed input. If not provided, the ID will be used as the name.",
|
|
58
58
|
metavar="NAME",
|
|
59
59
|
),
|
|
60
60
|
] = None,
|
|
@@ -99,14 +99,12 @@ def create(
|
|
|
99
99
|
[bold][underline]Examples[/underline][/bold]
|
|
100
100
|
|
|
101
101
|
- Create a managed input from an upload.
|
|
102
|
-
$ [dim]nextmv cloud managed-input create --app-id hare-app --
|
|
103
|
-
--upload-id upl_123456789[/dim]
|
|
102
|
+
$ [dim]nextmv cloud managed-input create --app-id hare-app --upload-id upl_123456789[/dim]
|
|
104
103
|
|
|
105
104
|
- Create a managed input from a run.
|
|
106
|
-
$ [dim]nextmv cloud managed-input create --app-id hare-app --
|
|
107
|
-
--run-id run_123456789[/dim]
|
|
105
|
+
$ [dim]nextmv cloud managed-input create --app-id hare-app --run-id run_123456789[/dim]
|
|
108
106
|
|
|
109
|
-
- Create a managed input with a specific ID and description.
|
|
107
|
+
- Create a managed input with a specific ID, name, and description.
|
|
110
108
|
$ [dim]nextmv cloud managed-input create --app-id hare-app --name "Test Input" \\
|
|
111
109
|
--managed-input-id inp_custom --description "Test case for validation" --upload-id upl_123456789[/dim]
|
|
112
110
|
|
|
@@ -35,8 +35,8 @@ def create(
|
|
|
35
35
|
|
|
36
36
|
Subscribe to a marketplace application by providing the subscription ID,
|
|
37
37
|
which combines the partner ID and application ID in the format
|
|
38
|
-
[
|
|
39
|
-
marketplace application in your account.
|
|
38
|
+
[magenta]<PARTNER_ID>-<APP_ID>[/magenta]. This allows you to access and use
|
|
39
|
+
the marketplace application in your account.
|
|
40
40
|
|
|
41
41
|
[bold][underline]Examples[/underline][/bold]
|
|
42
42
|
|
|
@@ -48,7 +48,7 @@ def create(
|
|
|
48
48
|
typer.Option(
|
|
49
49
|
"--name",
|
|
50
50
|
"-n",
|
|
51
|
-
help="
|
|
51
|
+
help="Optional name of the scenario test. If not provided, the ID will be used as the name.",
|
|
52
52
|
metavar="NAME",
|
|
53
53
|
rich_help_panel="Scenario test configuration",
|
|
54
54
|
),
|
|
@@ -172,7 +172,7 @@ def create(
|
|
|
172
172
|
}
|
|
173
173
|
}
|
|
174
174
|
}'
|
|
175
|
-
nextmv cloud scenario create --app-id hare-app --
|
|
175
|
+
nextmv cloud scenario create --app-id hare-app --scenarios "$SCENARIO"[/dim]
|
|
176
176
|
|
|
177
177
|
- Create with multiple scenarios by repeating the flag.
|
|
178
178
|
$ [dim]SCENARIO1='{
|
|
@@ -195,8 +195,7 @@ def create(
|
|
|
195
195
|
}
|
|
196
196
|
}
|
|
197
197
|
}'
|
|
198
|
-
nextmv cloud scenario create --app-id hare-app --
|
|
199
|
-
--scenarios "$SCENARIO1" --scenarios "$SCENARIO2"[/dim]
|
|
198
|
+
nextmv cloud scenario create --app-id hare-app --scenarios "$SCENARIO1" --scenarios "$SCENARIO2"[/dim]
|
|
200
199
|
|
|
201
200
|
- Create with multiple scenarios in a single [magenta]json[/magenta] array.
|
|
202
201
|
$ [dim]SCENARIOS='[
|
|
@@ -221,8 +220,7 @@ def create(
|
|
|
221
220
|
}
|
|
222
221
|
}
|
|
223
222
|
]'
|
|
224
|
-
nextmv cloud scenario create --app-id hare-app --
|
|
225
|
-
--scenarios "$SCENARIOS"[/dim]
|
|
223
|
+
nextmv cloud scenario create --app-id hare-app --scenarios "$SCENARIOS"[/dim]
|
|
226
224
|
|
|
227
225
|
- Create a scenario test and wait for it to complete.
|
|
228
226
|
$ [dim]SCENARIO='{
|
|
@@ -235,7 +233,7 @@ def create(
|
|
|
235
233
|
}
|
|
236
234
|
}
|
|
237
235
|
}'
|
|
238
|
-
nextmv cloud scenario create --app-id hare-app --
|
|
236
|
+
nextmv cloud scenario create --app-id hare-app --scenarios "$SCENARIO" \\
|
|
239
237
|
--wait[/dim]
|
|
240
238
|
|
|
241
239
|
- Create a scenario test and save the results to a file, waiting for completion.
|
|
@@ -249,7 +247,7 @@ def create(
|
|
|
249
247
|
}
|
|
250
248
|
}
|
|
251
249
|
}'
|
|
252
|
-
nextmv cloud scenario create --app-id hare-app --
|
|
250
|
+
nextmv cloud scenario create --app-id hare-app --scenarios "$SCENARIO" \\
|
|
253
251
|
--output bunny-safety-results.json[/dim]
|
|
254
252
|
|
|
255
253
|
- Create a scenario test with configuration options.
|
|
@@ -269,7 +267,7 @@ def create(
|
|
|
269
267
|
}
|
|
270
268
|
]
|
|
271
269
|
}'
|
|
272
|
-
nextmv cloud scenario create --app-id hare-app --
|
|
270
|
+
nextmv cloud scenario create --app-id hare-app --scenarios "$SCENARIO"[/dim]
|
|
273
271
|
"""
|
|
274
272
|
|
|
275
273
|
cloud_app, _ = build_cloud_app(app_id=app_id, profile=profile)
|
|
@@ -56,7 +56,7 @@ def create(
|
|
|
56
56
|
typer.Option(
|
|
57
57
|
"--name",
|
|
58
58
|
"-n",
|
|
59
|
-
help="
|
|
59
|
+
help="Optional name of the shadow test. If not provided, the ID will be used as the name.",
|
|
60
60
|
metavar="NAME",
|
|
61
61
|
),
|
|
62
62
|
] = None,
|
|
@@ -65,7 +65,7 @@ def create(
|
|
|
65
65
|
typer.Option(
|
|
66
66
|
"--shadow-test-id",
|
|
67
67
|
"-s",
|
|
68
|
-
help="ID for the shadow test. Will be generated if not provided.",
|
|
68
|
+
help="Optional ID for the shadow test. Will be generated if not provided.",
|
|
69
69
|
envvar="NEXTMV_SHADOW_TEST_ID",
|
|
70
70
|
metavar="SHADOW_TEST_ID",
|
|
71
71
|
),
|
|
@@ -73,7 +73,7 @@ def create(
|
|
|
73
73
|
typer.Option(
|
|
74
74
|
"--name",
|
|
75
75
|
"-n",
|
|
76
|
-
help="
|
|
76
|
+
help="Optional name of the switchback test. If not provided, the ID will be used as the name.",
|
|
77
77
|
metavar="NAME",
|
|
78
78
|
),
|
|
79
79
|
] = None,
|
|
@@ -115,19 +115,16 @@ def create(
|
|
|
115
115
|
[bold][underline]Examples[/underline][/bold]
|
|
116
116
|
|
|
117
117
|
- Create a switchback test alternating between two bunny instances.
|
|
118
|
-
$ [dim]nextmv cloud switchback create --app-id hare-app --
|
|
119
|
-
--name "Bunny Switch Hop" --baseline-instance-id fluffy-bunny-baseline \\
|
|
118
|
+
$ [dim]nextmv cloud switchback create --app-id hare-app --baseline-instance-id fluffy-bunny-baseline \\
|
|
120
119
|
--candidate-instance-id speedy-cottontail --unit-duration-minutes 15 --units 10[/dim]
|
|
121
120
|
|
|
122
121
|
- Create a switchback test with a scheduled start time.
|
|
123
|
-
$ [dim]nextmv cloud switchback create --app-id hare-app --
|
|
124
|
-
--name "Sunrise Switch Test" --baseline-instance-id wise-old-rabbit \\
|
|
122
|
+
$ [dim]nextmv cloud switchback create --app-id hare-app --baseline-instance-id wise-old-rabbit \\
|
|
125
123
|
--candidate-instance-id burrow-master --unit-duration-minutes 30 --units 8 \\
|
|
126
124
|
--start '2026-01-23T10:00:00Z'[/dim]
|
|
127
125
|
|
|
128
126
|
- Create a switchback test with a description.
|
|
129
|
-
$ [dim]nextmv cloud switchback create --app-id hare-app --
|
|
130
|
-
--name "Carrot Switch" --baseline-instance-id fluffy-bunny-baseline \\
|
|
127
|
+
$ [dim]nextmv cloud switchback create --app-id hare-app --baseline-instance-id fluffy-bunny-baseline \\
|
|
131
128
|
--candidate-instance-id hopping-candidate-ears --unit-duration-minutes 20 --units 12 \\
|
|
132
129
|
--description "Which bunny hops best for carrots?"[/dim]
|
|
133
130
|
"""
|
|
@@ -39,7 +39,7 @@ def create(
|
|
|
39
39
|
typer.Option(
|
|
40
40
|
"--name",
|
|
41
41
|
"-n",
|
|
42
|
-
help="
|
|
42
|
+
help="Optional name for the version. If a name is not provided, the version ID will be used as the name.",
|
|
43
43
|
metavar="NAME",
|
|
44
44
|
),
|
|
45
45
|
] = None,
|