nextmv 1.4.1.dev3__tar.gz → 1.4.2.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.4.1.dev3 → nextmv-1.4.2.dev3}/PKG-INFO +1 -1
- nextmv-1.4.2.dev3/nextmv/__about__.py +1 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/application/__init__.py +3 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/client.py +45 -28
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/manifest.py +19 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/cli/test_mcp.py +1 -1
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/cloud/app.yaml +6 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/test_manifest.py +52 -1
- nextmv-1.4.1.dev3/nextmv/__about__.py +0 -1
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/.gitignore +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/.python-version +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/CONTRIBUTING.md +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/LICENSE +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/README.md +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/__entrypoint__.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/__init__.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/_serialization.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/account.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/base_model.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/__init__.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/__init__.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/acceptance/__init__.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/acceptance/create.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/acceptance/delete.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/acceptance/get.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/acceptance/list.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/acceptance/update.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/account/__init__.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/account/create.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/account/delete.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/account/get.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/account/update.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/app/__init__.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/app/create.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/app/delete.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/app/exists.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/app/get.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/app/list.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/app/push.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/app/update.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/batch/__init__.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/batch/create.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/batch/delete.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/batch/get.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/batch/list.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/batch/metadata.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/batch/update.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/data/__init__.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/data/upload.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/ensemble/__init__.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/ensemble/create.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/ensemble/delete.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/ensemble/get.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/ensemble/list.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/ensemble/update.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/input_set/__init__.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/input_set/create.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/input_set/delete.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/input_set/get.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/input_set/list.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/input_set/update.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/instance/__init__.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/instance/create.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/instance/delete.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/instance/exists.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/instance/get.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/instance/list.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/instance/update.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/managed_input/__init__.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/managed_input/create.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/managed_input/delete.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/managed_input/get.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/managed_input/list.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/managed_input/update.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/marketplace/__init__.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/marketplace/app/__init__.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/marketplace/app/create.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/marketplace/app/get.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/marketplace/app/list.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/marketplace/app/update.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/marketplace/subscription/__init__.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/marketplace/subscription/create.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/marketplace/subscription/delete.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/marketplace/subscription/get.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/marketplace/subscription/list.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/marketplace/version/__init__.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/marketplace/version/create.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/marketplace/version/get.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/marketplace/version/list.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/marketplace/version/update.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/run/__init__.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/run/cancel.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/run/create.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/run/delete.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/run/get.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/run/input.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/run/list.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/run/logs.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/run/metadata.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/run/track.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/scenario/__init__.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/scenario/create.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/scenario/delete.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/scenario/get.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/scenario/list.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/scenario/metadata.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/scenario/update.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/secrets/__init__.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/secrets/create.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/secrets/delete.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/secrets/get.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/secrets/list.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/secrets/update.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/shadow/__init__.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/shadow/create.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/shadow/delete.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/shadow/get.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/shadow/list.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/shadow/metadata.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/shadow/start.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/shadow/stop.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/shadow/update.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/sso/__init__.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/sso/create.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/sso/delete.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/sso/disable.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/sso/domain/__init__.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/sso/domain/delete.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/sso/enable.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/sso/get.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/sso/update.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/switchback/__init__.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/switchback/create.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/switchback/delete.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/switchback/get.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/switchback/list.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/switchback/metadata.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/switchback/start.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/switchback/stop.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/switchback/update.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/upload/__init__.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/upload/create.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/version/__init__.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/version/create.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/version/delete.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/version/exists.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/version/get.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/version/list.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/version/update.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/community/__init__.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/community/clone.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/community/list.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/configuration/__init__.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/configuration/config.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/configuration/create.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/configuration/delete.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/configuration/list.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/init.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/local/__init__.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/local/app/__init__.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/local/app/delete.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/local/app/get.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/local/app/list.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/local/app/register.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/local/app/registered.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/local/app/sync.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/local/app/update.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/local/run/__init__.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/local/run/create.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/local/run/get.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/local/run/input.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/local/run/list.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/local/run/logs.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/local/run/metadata.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/local/run/visuals.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/main.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/manifest/__init__.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/manifest/init.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/manifest/validate.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/__init__.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/serve.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/server.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/tools/WORKFLOW.md +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/tools/__init__.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/tools/_helpers.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/tools/acceptance.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/tools/account.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/tools/app.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/tools/batch.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/tools/community.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/tools/ensemble.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/tools/guide.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/tools/input_set.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/tools/instance.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/tools/local.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/tools/managed_input.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/tools/profile.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/tools/run.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/tools/scenario.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/tools/secrets.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/tools/shadow.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/tools/sso.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/tools/switchback.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/tools/version.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/message.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/options.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/version.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/__init__.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/acceptance_test.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/account.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/application/_acceptance.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/application/_batch_scenario.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/application/_ensemble.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/application/_input_set.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/application/_instance.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/application/_managed_input.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/application/_run.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/application/_secrets.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/application/_shadow.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/application/_switchback.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/application/_utils.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/application/_version.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/assets.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/batch_experiment.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/community.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/ensemble.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/input_set.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/instance.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/integration.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/marketplace.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/package.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/scenario.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/secrets.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/shadow.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/sso.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/switchback.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/url.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/version.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/content_format.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/default_app/.gitignore +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/default_app/README.md +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/default_app/app.yaml +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/default_app/input.json +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/default_app/main.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/default_app/requirements.txt +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/default_app/src/__init__.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/default_app/src/visuals.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/deprecated.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/input.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/local/__init__.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/local/application.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/local/executor.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/local/geojson_handler.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/local/local.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/local/plotly_handler.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/local/registry.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/local/runner.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/logger.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/model.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/options.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/output.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/polling.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/run.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/safe.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/status.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/binary_json_app.yaml +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/binary_multi-file_app.yaml +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/go_json_app.yaml +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/go_json_hello-world/.gitignore +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/go_json_hello-world/README.md +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/go_json_hello-world/app.yaml +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/go_json_hello-world/go.mod +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/go_json_hello-world/input.json +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/go_json_hello-world/main.go +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/go_multi-file_app.yaml +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/go_multi-file_hello-world/.gitignore +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/go_multi-file_hello-world/README.md +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/go_multi-file_hello-world/app.yaml +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/go_multi-file_hello-world/go.mod +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/go_multi-file_hello-world/inputs/input.json +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/go_multi-file_hello-world/main.go +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/java_json_app.yaml +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/java_json_hello-world/.gitignore +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/java_json_hello-world/Main.java +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/java_json_hello-world/README.md +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/java_json_hello-world/app.yaml +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/java_json_hello-world/input.json +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/java_json_hello-world/pom.xml +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/java_multi-file_app.yaml +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/java_multi-file_hello-world/.gitignore +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/java_multi-file_hello-world/Main.java +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/java_multi-file_hello-world/README.md +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/java_multi-file_hello-world/app.yaml +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/java_multi-file_hello-world/inputs/input.json +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/java_multi-file_hello-world/pom.xml +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_app.yaml +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_class-assign/.gitignore +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_class-assign/README.md +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_class-assign/app.yaml +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_class-assign/input.json +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_class-assign/main.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_class-assign/requirements.txt +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_class-assign/visualizations.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_demand-alloc/.gitignore +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_demand-alloc/README.md +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_demand-alloc/allocation/README.md +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_demand-alloc/allocation/app.yaml +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_demand-alloc/allocation/input.json +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_demand-alloc/allocation/main.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_demand-alloc/allocation/requirements.txt +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_demand-alloc/allocation/visuals.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_demand-alloc/workflow/README.md +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_demand-alloc/workflow/app.yaml +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_demand-alloc/workflow/input.json +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_demand-alloc/workflow/main.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_demand-alloc/workflow/requirements.txt +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_demand-alloc/workflow/visuals.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_hello-world/.gitignore +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_hello-world/README.md +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_hello-world/app.yaml +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_hello-world/input.json +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_hello-world/main.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_hello-world/requirements.txt +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_app.yaml +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_class-assign/.gitignore +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_class-assign/README.md +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_class-assign/app.yaml +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_class-assign/inputs/input.json +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_class-assign/main.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_class-assign/requirements.txt +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_class-assign/visualizations.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_demand-alloc/README.md +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_demand-alloc/allocation/README.md +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_demand-alloc/allocation/app.yaml +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_demand-alloc/allocation/input.json +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_demand-alloc/allocation/main.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_demand-alloc/allocation/requirements.txt +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_demand-alloc/allocation/visuals.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_demand-alloc/workflow/.gitignore +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_demand-alloc/workflow/README.md +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_demand-alloc/workflow/app.yaml +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_demand-alloc/workflow/inputs/input.json +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_demand-alloc/workflow/main.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_demand-alloc/workflow/requirements.txt +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_demand-alloc/workflow/visuals.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_hello-world/.gitignore +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_hello-world/README.md +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_hello-world/app.yaml +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_hello-world/inputs/input.json +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_hello-world/main.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_hello-world/requirements.txt +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/pyproject.toml +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/__init__.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/cli/__init__.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/cli/test_configuration.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/cli/test_main.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/cli/test_version.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/cloud/__init__.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/cloud/test_client.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/cloud/test_instance.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/cloud/test_package.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/cloud/test_scenario.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/integration/__init__.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/integration/cloud/__init__.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/integration/cloud/test_integration_cloud.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/integration/cloud/test_integration_marketplace.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/local/__init__.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/local/test_application.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/local/test_executor.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/local/test_registry.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/local/test_runner.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/scripts/__init__.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/scripts/options1.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/scripts/options2.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/scripts/options3.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/scripts/options4.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/scripts/options5.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/scripts/options6.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/scripts/options7.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/test_base_model.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/test_entrypoint/__init__.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/test_entrypoint/test_entrypoint.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/test_input.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/test_inputs/test_data.csv +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/test_inputs/test_data.json +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/test_inputs/test_data.txt +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/test_logger.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/test_model.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/test_options.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/test_output.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/test_polling.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/test_run.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/test_safe.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/test_serialization.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/test_version.py +0 -0
- {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/uv.lock +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "v1.4.2.dev3"
|
|
@@ -811,6 +811,9 @@ class Application(
|
|
|
811
811
|
|
|
812
812
|
if manifest.configuration is not None and manifest.configuration.options is not None:
|
|
813
813
|
options = manifest.configuration.options.to_dict()
|
|
814
|
+
# Ignore local_only options since they are not meant to be used on the platform
|
|
815
|
+
if "items" in options:
|
|
816
|
+
options["items"] = [item for item in options["items"] if not item.get("local_only", False)]
|
|
814
817
|
if "format" in options and isinstance(options["format"], list):
|
|
815
818
|
# the endpoint expects a dictionary with a template key having a list of strings
|
|
816
819
|
# the app.yaml however defines format as a list of strings, so we need to convert it here
|
|
@@ -24,6 +24,7 @@ import requests
|
|
|
24
24
|
import yaml
|
|
25
25
|
from requests.adapters import HTTPAdapter, Retry
|
|
26
26
|
|
|
27
|
+
from nextmv import deprecated
|
|
27
28
|
from nextmv._serialization import deflated_serialize_json
|
|
28
29
|
|
|
29
30
|
_MAX_LAMBDA_PAYLOAD_SIZE: int = 500 * 1024 * 1024
|
|
@@ -197,12 +198,10 @@ class Client:
|
|
|
197
198
|
backoff_max: float = 60
|
|
198
199
|
"""Maximum backoff time to use for requests to the Nextmv Cloud API, in
|
|
199
200
|
seconds."""
|
|
200
|
-
configuration_file: str =
|
|
201
|
+
configuration_file: str | None = None
|
|
201
202
|
"""
|
|
202
203
|
Deprecated. This attribute is no longer being used. Use the `profile`
|
|
203
204
|
attribute to specify different configurations instead.
|
|
204
|
-
|
|
205
|
-
Path to the configuration file used by the Nextmv CLI.
|
|
206
205
|
"""
|
|
207
206
|
headers: dict[str, str] | None = None
|
|
208
207
|
"""Headers to use for requests to the Nextmv Cloud API."""
|
|
@@ -255,11 +254,14 @@ class Client:
|
|
|
255
254
|
Raises
|
|
256
255
|
------
|
|
257
256
|
ValueError
|
|
258
|
-
If
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
257
|
+
If no API key is found after checking the constructor argument,
|
|
258
|
+
the ``NEXTMV_API_KEY`` environment variable, and the
|
|
259
|
+
configuration file (for the resolved profile or the default
|
|
260
|
+
profile). A ``None`` or empty ``api_key`` is treated as unset
|
|
261
|
+
and causes the lookup to fall through to the next source.
|
|
262
|
+
If a profile is specified via ``NEXTMV_PROFILE`` or the
|
|
263
|
+
``profile`` attribute but is not found in the configuration file.
|
|
264
|
+
If ``apikey`` is not found in the configuration file for the
|
|
263
265
|
selected profile.
|
|
264
266
|
"""
|
|
265
267
|
|
|
@@ -268,6 +270,12 @@ class Client:
|
|
|
268
270
|
self.api_key = self.__resolve_api_key(profile)
|
|
269
271
|
self.__set_headers_api_key(self.api_key)
|
|
270
272
|
|
|
273
|
+
if self.configuration_file is not None and self.configuration_file != "":
|
|
274
|
+
deprecated(
|
|
275
|
+
name="Client.configuration_file",
|
|
276
|
+
reason="`Client.configuration_file` is deprecated, use `Client.profile` to work with another profile",
|
|
277
|
+
)
|
|
278
|
+
|
|
271
279
|
def request(
|
|
272
280
|
self,
|
|
273
281
|
method: str,
|
|
@@ -553,11 +561,21 @@ class Client:
|
|
|
553
561
|
The resolved profile name, or `None` if no profile is set.
|
|
554
562
|
"""
|
|
555
563
|
profile_env = os.getenv("NEXTMV_PROFILE")
|
|
556
|
-
if profile_env is not None
|
|
557
|
-
|
|
564
|
+
if profile_env is not None:
|
|
565
|
+
profile_env = profile_env.strip()
|
|
566
|
+
if profile_env != "":
|
|
567
|
+
if profile_env.lower() == "default":
|
|
568
|
+
return None
|
|
558
569
|
|
|
559
|
-
|
|
560
|
-
|
|
570
|
+
return profile_env
|
|
571
|
+
|
|
572
|
+
if self.profile is not None:
|
|
573
|
+
profile = self.profile.strip()
|
|
574
|
+
if profile != "":
|
|
575
|
+
if profile.lower() == "default":
|
|
576
|
+
return None
|
|
577
|
+
|
|
578
|
+
return profile
|
|
561
579
|
|
|
562
580
|
return None
|
|
563
581
|
|
|
@@ -584,23 +602,22 @@ class Client:
|
|
|
584
602
|
The resolved API endpoint URL.
|
|
585
603
|
"""
|
|
586
604
|
if self.url is not None and self.url != "":
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
return url_key_env
|
|
592
|
-
|
|
593
|
-
if profile is not None and profile != "":
|
|
605
|
+
url = self.url
|
|
606
|
+
elif (url_env := os.getenv("NEXTMV_ENDPOINT")):
|
|
607
|
+
url = url_env
|
|
608
|
+
elif profile is not None and profile != "":
|
|
594
609
|
url = _retrieve_endpoint_from_config(profile)
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
610
|
+
else:
|
|
611
|
+
# The fallback behavior is to attempt to retrieve the default endpoint
|
|
612
|
+
# from the config file. If everything fails, we return the hardcoded
|
|
613
|
+
# default endpoint.
|
|
614
|
+
try:
|
|
615
|
+
url = _retrieve_endpoint_from_config()
|
|
616
|
+
except (RuntimeError, ValueError):
|
|
617
|
+
url = "https://api.cloud.nextmv.io"
|
|
618
|
+
|
|
619
|
+
if not url.startswith("https://") and not url.startswith("http://"):
|
|
620
|
+
url = f"https://{url}"
|
|
604
621
|
|
|
605
622
|
return url
|
|
606
623
|
|
|
@@ -511,6 +511,8 @@ class ManifestOption(BaseModel):
|
|
|
511
511
|
The description of the option.
|
|
512
512
|
required : bool, default=False
|
|
513
513
|
Whether the option is required or not.
|
|
514
|
+
local_only : bool, default=False
|
|
515
|
+
Whether the option is only used locally and should not be sent to Nextmv Cloud.
|
|
514
516
|
additional_attributes : Optional[dict[str, Any]], default=None
|
|
515
517
|
Optional additional attributes for the option. The Nextmv Cloud may
|
|
516
518
|
perform validation on these attributes. For example, the maximum
|
|
@@ -551,11 +553,28 @@ class ManifestOption(BaseModel):
|
|
|
551
553
|
"""The description of the option"""
|
|
552
554
|
required: bool = False
|
|
553
555
|
"""Whether the option is required or not"""
|
|
556
|
+
local_only: bool = False
|
|
557
|
+
"""Whether the option is only used locally and should not be sent to Nextmv Cloud."""
|
|
554
558
|
additional_attributes: dict[str, Any] | None = None
|
|
555
559
|
"""Optional additional attributes for the option."""
|
|
556
560
|
ui: ManifestOptionUI | None = None
|
|
557
561
|
"""Optional UI attributes for the option."""
|
|
558
562
|
|
|
563
|
+
def model_post_init(self, __context) -> None:
|
|
564
|
+
"""
|
|
565
|
+
Validations done after parsing the model.
|
|
566
|
+
|
|
567
|
+
Raises
|
|
568
|
+
------
|
|
569
|
+
ValueError
|
|
570
|
+
If validation fails. A descriptive error message is provided in this case.
|
|
571
|
+
"""
|
|
572
|
+
|
|
573
|
+
# It does not make sense to define options as required AND them being local only,
|
|
574
|
+
# since this would make Platform runs via UI cumbersome to impossible.
|
|
575
|
+
if self.required and self.local_only:
|
|
576
|
+
raise ValueError(f"Option '{self.name}' cannot be both required and local only.")
|
|
577
|
+
|
|
559
578
|
@classmethod
|
|
560
579
|
def from_option(cls, option: Option) -> "ManifestOption":
|
|
561
580
|
"""
|
|
@@ -362,7 +362,7 @@ class TestGetClient(unittest.TestCase):
|
|
|
362
362
|
|
|
363
363
|
@patch.dict("os.environ", {}, clear=True)
|
|
364
364
|
@patch("nextmv.cli.mcp.tools._helpers.Client", side_effect=Exception("no config"))
|
|
365
|
-
def test_get_client_no_key_no_config_raises(self,
|
|
365
|
+
def test_get_client_no_key_no_config_raises(self, mock_client):
|
|
366
366
|
"""Test that _get_client raises when no API key or config is available."""
|
|
367
367
|
from nextmv.cli.mcp.server import _get_client
|
|
368
368
|
|
|
@@ -64,6 +64,12 @@ configuration:
|
|
|
64
64
|
control_type: select
|
|
65
65
|
hidden_from:
|
|
66
66
|
- operator
|
|
67
|
+
- name: a local only parameter
|
|
68
|
+
option_type: string
|
|
69
|
+
default: local_default
|
|
70
|
+
description: a local only description
|
|
71
|
+
required: false
|
|
72
|
+
local_only: true
|
|
67
73
|
content:
|
|
68
74
|
format: "multi-file"
|
|
69
75
|
multi-file:
|
|
@@ -189,7 +189,7 @@ class TestManifest(unittest.TestCase):
|
|
|
189
189
|
def test_extract_options(self):
|
|
190
190
|
manifest = Manifest.from_yaml("tests/cloud")
|
|
191
191
|
options = manifest.extract_options(should_parse=False)
|
|
192
|
-
self.assertEqual(len(options.options),
|
|
192
|
+
self.assertEqual(len(options.options), 6)
|
|
193
193
|
|
|
194
194
|
found = {
|
|
195
195
|
"string": False,
|
|
@@ -500,6 +500,57 @@ class TestManifestOption(unittest.TestCase):
|
|
|
500
500
|
self.assertEqual(option.required, manifest_option.required)
|
|
501
501
|
|
|
502
502
|
|
|
503
|
+
class TestManifestOptionLocalOnly(unittest.TestCase):
|
|
504
|
+
def test_local_only_defaults_to_false(self):
|
|
505
|
+
option = ManifestOption(name="my_option", option_type="string", default="val")
|
|
506
|
+
self.assertFalse(option.local_only)
|
|
507
|
+
|
|
508
|
+
def test_local_only_can_be_set_to_true(self):
|
|
509
|
+
option = ManifestOption(name="my_option", option_type="int", default=0, local_only=True)
|
|
510
|
+
self.assertTrue(option.local_only)
|
|
511
|
+
|
|
512
|
+
def test_required_and_local_only_raises(self):
|
|
513
|
+
with self.assertRaises(ValueError) as ctx:
|
|
514
|
+
ManifestOption(name="my_option", option_type="string", default="val", required=True, local_only=True)
|
|
515
|
+
self.assertIn("my_option", str(ctx.exception))
|
|
516
|
+
self.assertIn("required", str(ctx.exception).lower())
|
|
517
|
+
self.assertIn("local only", str(ctx.exception).lower())
|
|
518
|
+
|
|
519
|
+
def test_local_only_round_trips_through_dict(self):
|
|
520
|
+
original = ManifestOption(name="my_option", option_type="float", default=1.5, local_only=True)
|
|
521
|
+
as_dict = original.to_dict()
|
|
522
|
+
self.assertTrue(as_dict["local_only"])
|
|
523
|
+
restored = ManifestOption.from_dict(as_dict)
|
|
524
|
+
self.assertTrue(restored.local_only)
|
|
525
|
+
|
|
526
|
+
def test_non_local_only_round_trips_through_dict(self):
|
|
527
|
+
original = ManifestOption(name="my_option", option_type="bool", default=False, local_only=False)
|
|
528
|
+
as_dict = original.to_dict()
|
|
529
|
+
self.assertFalse(as_dict["local_only"])
|
|
530
|
+
restored = ManifestOption.from_dict(as_dict)
|
|
531
|
+
self.assertFalse(restored.local_only)
|
|
532
|
+
|
|
533
|
+
def test_local_only_loaded_from_yaml(self):
|
|
534
|
+
manifest = Manifest.from_yaml("tests/cloud")
|
|
535
|
+
items = manifest.configuration.options.items
|
|
536
|
+
local_only_items = [item for item in items if item.local_only]
|
|
537
|
+
self.assertEqual(len(local_only_items), 1)
|
|
538
|
+
item = local_only_items[0]
|
|
539
|
+
self.assertEqual(item.name, "a local only parameter")
|
|
540
|
+
self.assertEqual(item.option_type, "string")
|
|
541
|
+
self.assertEqual(item.default, "local_default")
|
|
542
|
+
self.assertFalse(item.required)
|
|
543
|
+
self.assertTrue(item.local_only)
|
|
544
|
+
|
|
545
|
+
def test_other_options_are_not_local_only(self):
|
|
546
|
+
manifest = Manifest.from_yaml("tests/cloud")
|
|
547
|
+
items = manifest.configuration.options.items
|
|
548
|
+
non_local_only_items = [item for item in items if not item.local_only]
|
|
549
|
+
# All items except the one explicitly marked local_only should have local_only=False.
|
|
550
|
+
for item in non_local_only_items:
|
|
551
|
+
self.assertFalse(item.local_only, msg=f"Option '{item.name}' should not be local_only")
|
|
552
|
+
|
|
553
|
+
|
|
503
554
|
class TestWriteSampleManifest(unittest.TestCase):
|
|
504
555
|
def test_writes_python_manifest(self):
|
|
505
556
|
with tempfile.TemporaryDirectory() as dirpath:
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "v1.4.1.dev3"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/marketplace/subscription/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|