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.
Files changed (401) hide show
  1. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/PKG-INFO +2 -1
  2. nextmv-1.7.4.dev3/nextmv/__about__.py +1 -0
  3. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/__init__.py +2 -0
  4. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/acceptance/create.py +17 -17
  5. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/app/push.py +20 -7
  6. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/batch/create.py +8 -13
  7. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/ensemble/create.py +1 -1
  8. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/input_set/create.py +47 -47
  9. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/instance/create.py +1 -1
  10. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/managed_input/create.py +4 -6
  11. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/marketplace/subscription/create.py +2 -2
  12. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/scenario/create.py +7 -9
  13. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/secrets/create.py +1 -1
  14. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/shadow/create.py +2 -2
  15. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/switchback/create.py +4 -7
  16. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/version/create.py +1 -1
  17. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/configuration/create.py +20 -3
  18. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/main.py +1 -1
  19. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/manifest/init.py +49 -9
  20. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/application/_run.py +15 -11
  21. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/package.py +46 -146
  22. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/local/executor.py +8 -1
  23. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/manifest.py +272 -49
  24. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/run.py +21 -0
  25. nextmv-1.7.4.dev2/nextmv/templates/binary_json_app.yaml → nextmv-1.7.4.dev3/nextmv/templates/binary_json.yaml +1 -1
  26. nextmv-1.7.4.dev3/nextmv/templates/binary_json_opt.yaml +84 -0
  27. nextmv-1.7.4.dev3/nextmv/templates/binary_multi-file_opt.yaml +92 -0
  28. nextmv-1.7.4.dev2/nextmv/templates/go_json_app.yaml → nextmv-1.7.4.dev3/nextmv/templates/go_json.yaml +1 -1
  29. nextmv-1.7.4.dev3/nextmv/templates/go_json_opt.yaml +84 -0
  30. nextmv-1.7.4.dev3/nextmv/templates/go_multi-file_opt.yaml +92 -0
  31. nextmv-1.7.4.dev2/nextmv/templates/java_json_app.yaml → nextmv-1.7.4.dev3/nextmv/templates/java_json.yaml +1 -1
  32. nextmv-1.7.4.dev3/nextmv/templates/java_json_opt.yaml +79 -0
  33. nextmv-1.7.4.dev3/nextmv/templates/java_multi-file_opt.yaml +87 -0
  34. nextmv-1.7.4.dev2/nextmv/templates/python_json_app.yaml → nextmv-1.7.4.dev3/nextmv/templates/python_json.yaml +1 -1
  35. nextmv-1.7.4.dev3/nextmv/templates/python_json_opt.yaml +81 -0
  36. nextmv-1.7.4.dev3/nextmv/templates/python_multi-file_opt.yaml +89 -0
  37. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/pyproject.toml +1 -0
  38. nextmv-1.7.4.dev3/tests/cli/manifest/test_init.py +286 -0
  39. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/cli/test_configuration.py +1 -1
  40. nextmv-1.7.4.dev3/tests/test_entrypoint/__init__.py +0 -0
  41. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/test_manifest.py +353 -0
  42. {nextmv-1.7.4.dev2/tests/local → nextmv-1.7.4.dev3/tests}/test_uv_handler.py +2 -2
  43. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/uv.lock +14 -0
  44. nextmv-1.7.4.dev2/nextmv/__about__.py +0 -1
  45. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/.gitignore +0 -0
  46. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/.python-version +0 -0
  47. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/CONTRIBUTING.md +0 -0
  48. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/LICENSE +0 -0
  49. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/README.md +0 -0
  50. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/__entrypoint__.py +0 -0
  51. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/_serialization.py +0 -0
  52. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/account.py +0 -0
  53. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/base_model.py +0 -0
  54. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/__init__.py +0 -0
  55. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/__init__.py +0 -0
  56. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/acceptance/__init__.py +0 -0
  57. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/acceptance/delete.py +0 -0
  58. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/acceptance/get.py +0 -0
  59. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/acceptance/list.py +0 -0
  60. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/acceptance/update.py +0 -0
  61. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/account/__init__.py +0 -0
  62. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/account/create.py +0 -0
  63. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/account/delete.py +0 -0
  64. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/account/get.py +0 -0
  65. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/account/update.py +0 -0
  66. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/app/__init__.py +0 -0
  67. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/app/create.py +0 -0
  68. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/app/delete.py +0 -0
  69. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/app/exists.py +0 -0
  70. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/app/get.py +0 -0
  71. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/app/list.py +0 -0
  72. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/app/update.py +0 -0
  73. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/batch/__init__.py +0 -0
  74. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/batch/delete.py +0 -0
  75. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/batch/get.py +0 -0
  76. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/batch/list.py +0 -0
  77. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/batch/metadata.py +0 -0
  78. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/batch/update.py +0 -0
  79. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/data/__init__.py +0 -0
  80. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/data/upload.py +0 -0
  81. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/ensemble/__init__.py +0 -0
  82. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/ensemble/delete.py +0 -0
  83. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/ensemble/get.py +0 -0
  84. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/ensemble/list.py +0 -0
  85. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/ensemble/update.py +0 -0
  86. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/input_set/__init__.py +0 -0
  87. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/input_set/delete.py +0 -0
  88. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/input_set/get.py +0 -0
  89. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/input_set/list.py +0 -0
  90. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/input_set/update.py +0 -0
  91. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/instance/__init__.py +0 -0
  92. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/instance/delete.py +0 -0
  93. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/instance/exists.py +0 -0
  94. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/instance/get.py +0 -0
  95. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/instance/list.py +0 -0
  96. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/instance/update.py +0 -0
  97. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/managed_input/__init__.py +0 -0
  98. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/managed_input/delete.py +0 -0
  99. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/managed_input/get.py +0 -0
  100. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/managed_input/list.py +0 -0
  101. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/managed_input/update.py +0 -0
  102. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/marketplace/__init__.py +0 -0
  103. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/marketplace/app/__init__.py +0 -0
  104. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/marketplace/app/create.py +0 -0
  105. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/marketplace/app/get.py +0 -0
  106. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/marketplace/app/list.py +0 -0
  107. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/marketplace/app/update.py +0 -0
  108. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/marketplace/subscription/__init__.py +0 -0
  109. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/marketplace/subscription/delete.py +0 -0
  110. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/marketplace/subscription/get.py +0 -0
  111. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/marketplace/subscription/list.py +0 -0
  112. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/marketplace/version/__init__.py +0 -0
  113. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/marketplace/version/create.py +0 -0
  114. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/marketplace/version/get.py +0 -0
  115. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/marketplace/version/list.py +0 -0
  116. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/marketplace/version/update.py +0 -0
  117. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/run/__init__.py +0 -0
  118. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/run/cancel.py +0 -0
  119. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/run/create.py +0 -0
  120. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/run/delete.py +0 -0
  121. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/run/get.py +0 -0
  122. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/run/input.py +0 -0
  123. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/run/list.py +0 -0
  124. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/run/logs.py +0 -0
  125. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/run/metadata.py +0 -0
  126. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/run/track.py +0 -0
  127. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/scenario/__init__.py +0 -0
  128. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/scenario/delete.py +0 -0
  129. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/scenario/get.py +0 -0
  130. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/scenario/list.py +0 -0
  131. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/scenario/metadata.py +0 -0
  132. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/scenario/update.py +0 -0
  133. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/secrets/__init__.py +0 -0
  134. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/secrets/delete.py +0 -0
  135. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/secrets/get.py +0 -0
  136. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/secrets/list.py +0 -0
  137. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/secrets/update.py +0 -0
  138. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/shadow/__init__.py +0 -0
  139. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/shadow/delete.py +0 -0
  140. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/shadow/get.py +0 -0
  141. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/shadow/list.py +0 -0
  142. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/shadow/metadata.py +0 -0
  143. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/shadow/start.py +0 -0
  144. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/shadow/stop.py +0 -0
  145. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/shadow/update.py +0 -0
  146. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/sso/__init__.py +0 -0
  147. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/sso/create.py +0 -0
  148. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/sso/delete.py +0 -0
  149. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/sso/disable.py +0 -0
  150. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/sso/domain/__init__.py +0 -0
  151. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/sso/domain/delete.py +0 -0
  152. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/sso/enable.py +0 -0
  153. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/sso/get.py +0 -0
  154. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/sso/update.py +0 -0
  155. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/switchback/__init__.py +0 -0
  156. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/switchback/delete.py +0 -0
  157. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/switchback/get.py +0 -0
  158. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/switchback/list.py +0 -0
  159. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/switchback/metadata.py +0 -0
  160. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/switchback/start.py +0 -0
  161. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/switchback/stop.py +0 -0
  162. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/switchback/update.py +0 -0
  163. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/upload/__init__.py +0 -0
  164. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/upload/create.py +0 -0
  165. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/version/__init__.py +0 -0
  166. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/version/delete.py +0 -0
  167. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/version/exists.py +0 -0
  168. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/version/get.py +0 -0
  169. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/version/list.py +0 -0
  170. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/cloud/version/update.py +0 -0
  171. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/community/__init__.py +0 -0
  172. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/community/clone.py +0 -0
  173. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/community/list.py +0 -0
  174. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/configuration/__init__.py +0 -0
  175. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/configuration/config.py +0 -0
  176. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/configuration/delete.py +0 -0
  177. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/configuration/list.py +0 -0
  178. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/init.py +0 -0
  179. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/local/__init__.py +0 -0
  180. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/local/app/__init__.py +0 -0
  181. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/local/app/delete.py +0 -0
  182. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/local/app/get.py +0 -0
  183. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/local/app/list.py +0 -0
  184. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/local/app/register.py +0 -0
  185. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/local/app/registered.py +0 -0
  186. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/local/app/sync.py +0 -0
  187. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/local/app/update.py +0 -0
  188. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/local/run/__init__.py +0 -0
  189. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/local/run/create.py +0 -0
  190. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/local/run/get.py +0 -0
  191. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/local/run/input.py +0 -0
  192. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/local/run/list.py +0 -0
  193. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/local/run/logs.py +0 -0
  194. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/local/run/metadata.py +0 -0
  195. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/local/run/visuals.py +0 -0
  196. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/manifest/__init__.py +0 -0
  197. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/manifest/validate.py +0 -0
  198. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/__init__.py +0 -0
  199. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/serve.py +0 -0
  200. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/server.py +0 -0
  201. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/tools/WORKFLOW.md +0 -0
  202. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/tools/__init__.py +0 -0
  203. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/tools/_helpers.py +0 -0
  204. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/tools/acceptance.py +0 -0
  205. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/tools/account.py +0 -0
  206. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/tools/app.py +0 -0
  207. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/tools/batch.py +0 -0
  208. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/tools/community.py +0 -0
  209. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/tools/ensemble.py +0 -0
  210. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/tools/guide.py +0 -0
  211. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/tools/input_set.py +0 -0
  212. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/tools/instance.py +0 -0
  213. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/tools/local.py +0 -0
  214. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/tools/managed_input.py +0 -0
  215. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/tools/profile.py +0 -0
  216. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/tools/run.py +0 -0
  217. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/tools/scenario.py +0 -0
  218. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/tools/secrets.py +0 -0
  219. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/tools/shadow.py +0 -0
  220. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/tools/sso.py +0 -0
  221. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/tools/switchback.py +0 -0
  222. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/mcp/tools/version.py +0 -0
  223. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/message.py +0 -0
  224. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/options.py +0 -0
  225. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cli/version.py +0 -0
  226. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/__init__.py +0 -0
  227. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/acceptance_test.py +0 -0
  228. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/account.py +0 -0
  229. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/application/__init__.py +0 -0
  230. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/application/_acceptance.py +0 -0
  231. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/application/_batch_scenario.py +0 -0
  232. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/application/_ensemble.py +0 -0
  233. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/application/_input_set.py +0 -0
  234. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/application/_instance.py +0 -0
  235. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/application/_managed_input.py +0 -0
  236. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/application/_secrets.py +0 -0
  237. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/application/_shadow.py +0 -0
  238. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/application/_switchback.py +0 -0
  239. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/application/_utils.py +0 -0
  240. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/application/_version.py +0 -0
  241. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/assets.py +0 -0
  242. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/batch_experiment.py +0 -0
  243. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/client.py +0 -0
  244. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/community.py +0 -0
  245. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/ensemble.py +0 -0
  246. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/input_set.py +0 -0
  247. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/instance.py +0 -0
  248. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/integration.py +0 -0
  249. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/marketplace.py +0 -0
  250. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/scenario.py +0 -0
  251. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/secrets.py +0 -0
  252. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/shadow.py +0 -0
  253. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/sso.py +0 -0
  254. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/switchback.py +0 -0
  255. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/url.py +0 -0
  256. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/cloud/version.py +0 -0
  257. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/content_format.py +0 -0
  258. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/deprecated.py +0 -0
  259. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/input.py +0 -0
  260. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/local/__init__.py +0 -0
  261. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/local/application.py +0 -0
  262. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/local/geojson_handler.py +0 -0
  263. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/local/local.py +0 -0
  264. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/local/plotly_handler.py +0 -0
  265. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/local/registry.py +0 -0
  266. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/local/runner.py +0 -0
  267. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/logger.py +0 -0
  268. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/model.py +0 -0
  269. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/options.py +0 -0
  270. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/output.py +0 -0
  271. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/polling.py +0 -0
  272. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/safe.py +0 -0
  273. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/status.py +0 -0
  274. /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
  275. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/go_json_hello-world/.gitignore +0 -0
  276. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/go_json_hello-world/README.md +0 -0
  277. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/go_json_hello-world/app.yaml +0 -0
  278. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/go_json_hello-world/go.mod +0 -0
  279. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/go_json_hello-world/input.json +0 -0
  280. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/go_json_hello-world/main.go +0 -0
  281. /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
  282. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/go_multi-file_hello-world/.gitignore +0 -0
  283. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/go_multi-file_hello-world/README.md +0 -0
  284. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/go_multi-file_hello-world/app.yaml +0 -0
  285. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/go_multi-file_hello-world/go.mod +0 -0
  286. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/go_multi-file_hello-world/inputs/input.json +0 -0
  287. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/go_multi-file_hello-world/main.go +0 -0
  288. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/java_json_hello-world/.gitignore +0 -0
  289. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/java_json_hello-world/Main.java +0 -0
  290. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/java_json_hello-world/README.md +0 -0
  291. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/java_json_hello-world/app.yaml +0 -0
  292. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/java_json_hello-world/input.json +0 -0
  293. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/java_json_hello-world/pom.xml +0 -0
  294. /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
  295. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/java_multi-file_hello-world/.gitignore +0 -0
  296. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/java_multi-file_hello-world/Main.java +0 -0
  297. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/java_multi-file_hello-world/README.md +0 -0
  298. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/java_multi-file_hello-world/app.yaml +0 -0
  299. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/java_multi-file_hello-world/inputs/input.json +0 -0
  300. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/java_multi-file_hello-world/pom.xml +0 -0
  301. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_class-assign/.gitignore +0 -0
  302. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_class-assign/README.md +0 -0
  303. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_class-assign/app.yaml +0 -0
  304. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_class-assign/input.json +0 -0
  305. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_class-assign/main.py +0 -0
  306. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_class-assign/requirements.txt +0 -0
  307. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_class-assign/visualizations.py +0 -0
  308. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_demand-alloc/.gitignore +0 -0
  309. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_demand-alloc/README.md +0 -0
  310. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_demand-alloc/allocation/README.md +0 -0
  311. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_demand-alloc/allocation/app.yaml +0 -0
  312. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_demand-alloc/allocation/input.json +0 -0
  313. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_demand-alloc/allocation/main.py +0 -0
  314. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_demand-alloc/allocation/requirements.txt +0 -0
  315. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_demand-alloc/allocation/visuals.py +0 -0
  316. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_demand-alloc/workflow/README.md +0 -0
  317. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_demand-alloc/workflow/app.yaml +0 -0
  318. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_demand-alloc/workflow/input.json +0 -0
  319. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_demand-alloc/workflow/main.py +0 -0
  320. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_demand-alloc/workflow/requirements.txt +0 -0
  321. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_demand-alloc/workflow/visuals.py +0 -0
  322. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_hello-world/.gitignore +0 -0
  323. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_hello-world/README.md +0 -0
  324. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_hello-world/app.yaml +0 -0
  325. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_hello-world/input.json +0 -0
  326. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_hello-world/main.py +0 -0
  327. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_json_hello-world/requirements.txt +0 -0
  328. /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
  329. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_class-assign/.gitignore +0 -0
  330. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_class-assign/README.md +0 -0
  331. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_class-assign/app.yaml +0 -0
  332. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_class-assign/inputs/input.json +0 -0
  333. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_class-assign/main.py +0 -0
  334. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_class-assign/requirements.txt +0 -0
  335. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_class-assign/visualizations.py +0 -0
  336. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_demand-alloc/README.md +0 -0
  337. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_demand-alloc/allocation/README.md +0 -0
  338. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_demand-alloc/allocation/app.yaml +0 -0
  339. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_demand-alloc/allocation/input.json +0 -0
  340. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_demand-alloc/allocation/main.py +0 -0
  341. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_demand-alloc/allocation/requirements.txt +0 -0
  342. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_demand-alloc/allocation/visuals.py +0 -0
  343. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_demand-alloc/workflow/.gitignore +0 -0
  344. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_demand-alloc/workflow/README.md +0 -0
  345. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_demand-alloc/workflow/app.yaml +0 -0
  346. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_demand-alloc/workflow/inputs/input.json +0 -0
  347. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_demand-alloc/workflow/main.py +0 -0
  348. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_demand-alloc/workflow/requirements.txt +0 -0
  349. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_demand-alloc/workflow/visuals.py +0 -0
  350. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_hello-world/.gitignore +0 -0
  351. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_hello-world/README.md +0 -0
  352. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_hello-world/app.yaml +0 -0
  353. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_hello-world/inputs/input.json +0 -0
  354. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_hello-world/main.py +0 -0
  355. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/nextmv/templates/python_multi-file_hello-world/requirements.txt +0 -0
  356. {nextmv-1.7.4.dev2/nextmv/local → nextmv-1.7.4.dev3/nextmv}/uv_handler.py +0 -0
  357. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/__init__.py +0 -0
  358. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/cli/__init__.py +0 -0
  359. {nextmv-1.7.4.dev2/tests/cloud → nextmv-1.7.4.dev3/tests/cli/manifest}/__init__.py +0 -0
  360. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/cli/test_init_cli_call.py +0 -0
  361. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/cli/test_main.py +0 -0
  362. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/cli/test_mcp.py +0 -0
  363. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/cli/test_version.py +0 -0
  364. {nextmv-1.7.4.dev2/tests/integration → nextmv-1.7.4.dev3/tests/cloud}/__init__.py +0 -0
  365. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/cloud/app.yaml +0 -0
  366. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/cloud/test_client.py +0 -0
  367. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/cloud/test_instance.py +0 -0
  368. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/cloud/test_package.py +0 -0
  369. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/cloud/test_scenario.py +0 -0
  370. {nextmv-1.7.4.dev2/tests/integration/cloud → nextmv-1.7.4.dev3/tests/integration}/__init__.py +0 -0
  371. {nextmv-1.7.4.dev2/tests/local → nextmv-1.7.4.dev3/tests/integration/cloud}/__init__.py +0 -0
  372. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/integration/cloud/test_integration_cloud.py +0 -0
  373. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/integration/cloud/test_integration_marketplace.py +0 -0
  374. {nextmv-1.7.4.dev2/tests/scripts → nextmv-1.7.4.dev3/tests/local}/__init__.py +0 -0
  375. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/local/test_application.py +0 -0
  376. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/local/test_executor.py +0 -0
  377. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/local/test_registry.py +0 -0
  378. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/local/test_runner.py +0 -0
  379. {nextmv-1.7.4.dev2/tests/test_entrypoint → nextmv-1.7.4.dev3/tests/scripts}/__init__.py +0 -0
  380. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/scripts/options1.py +0 -0
  381. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/scripts/options2.py +0 -0
  382. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/scripts/options3.py +0 -0
  383. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/scripts/options4.py +0 -0
  384. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/scripts/options5.py +0 -0
  385. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/scripts/options6.py +0 -0
  386. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/scripts/options7.py +0 -0
  387. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/test_base_model.py +0 -0
  388. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/test_entrypoint/test_entrypoint.py +0 -0
  389. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/test_input.py +0 -0
  390. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/test_inputs/test_data.csv +0 -0
  391. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/test_inputs/test_data.json +0 -0
  392. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/test_inputs/test_data.txt +0 -0
  393. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/test_logger.py +0 -0
  394. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/test_model.py +0 -0
  395. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/test_options.py +0 -0
  396. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/test_output.py +0 -0
  397. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/test_polling.py +0 -0
  398. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/test_run.py +0 -0
  399. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/test_safe.py +0 -0
  400. {nextmv-1.7.4.dev2 → nextmv-1.7.4.dev3}/tests/test_serialization.py +0 -0
  401. {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.dev2
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 --acceptance-test-id test-123 \\
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 --acceptance-test-id test-123 \\
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 --acceptance-test-id test-123 \\
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 --acceptance-test-id test-123 \\
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 --acceptance-test-id test-123 \\
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="Name of the acceptance test. If not provided, the ID will be used as the name.",
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 flags to skip the prompts, useful in
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 --version-yes --create-instance-id inst-1[/dim]
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 --version-yes --update-instance-id inst-1[/dim]
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"Version [magenta]{version_id}[/magenta] already exists for application [magenta]{app_id}[/magenta]."
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="Name of the batch experiment. If not provided, the ID will be used as the name.",
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
- --name "Spring Meadow Routes" --input-set-id spring-gardens --runs "$RUN"[/dim]
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 --batch-experiment-id lettuce-routes \\
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 --batch-experiment-id warren-expansion \\
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 --batch-experiment-id harvest-time \\
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 --batch-experiment-id safety-analysis \\
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 --batch-experiment-id hop-comparison \\
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
 
@@ -203,7 +203,7 @@ def create(
203
203
  typer.Option(
204
204
  "--name",
205
205
  "-n",
206
- help="A name for the ensemble definition.",
206
+ help="Optional name for the ensemble definition. If not provided, the ID will be used as the name.",
207
207
  metavar="NAME",
208
208
  ),
209
209
  ] = None,
@@ -21,15 +21,25 @@ app = typer.Typer()
21
21
  @app.command()
22
22
  def create(
23
23
  app_id: AppIDOption,
24
- name: Annotated[
25
- str,
24
+ description: Annotated[
25
+ str | None,
26
26
  typer.Option(
27
- "--name",
28
- "-n",
29
- help="A name for the input set.",
30
- metavar="NAME",
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
- description: Annotated[
62
+ managed_inputs: Annotated[
53
63
  str | None,
54
64
  typer.Option(
55
- "--description",
56
- "-d",
57
- help="An optional description for the input set.",
58
- metavar="DESCRIPTION",
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
- --name "Hare Input Set" --run-ids run-1 --run-ids run-2 --run-ids run-3"[/dim]
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"[/dim]
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 --name "Hare Input Set" \\
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 --name "Hare Input Set" \\
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="A name for the instance. If a name is not provided, the instance ID will be used as the name.",
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="A name for the managed input. If not provided, the ID will be used as the name.",
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 --name "Test Input 1" \
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 --name "Baseline Run" \
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
- [dim]<PARTNER_ID>-<APP_ID>[/dim]. This allows you to access and use the
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="Name of the scenario test. If not provided, the ID will be used as the name.",
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 --name "Spring Meadow Routes" --scenarios "$SCENARIO"[/dim]
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 --name "Lettuce Delivery Optimization" \\
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 --name "Warren Construction Plans" \\
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 --name "Autumn Carrot Collection" --scenarios "$SCENARIO" \\
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 --name "Fox Avoidance Routes" --scenarios "$SCENARIO" \\
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 --name "Speed Analysis" --scenarios "$SCENARIO"[/dim]
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)
@@ -45,7 +45,7 @@ def create(
45
45
  typer.Option(
46
46
  "--name",
47
47
  "-n",
48
- help="A name for the secrets collection.",
48
+ help="An optional name for the secrets collection. If not provided, the ID will be used as the name.",
49
49
  metavar="NAME",
50
50
  ),
51
51
  ] = None,
@@ -56,7 +56,7 @@ def create(
56
56
  typer.Option(
57
57
  "--name",
58
58
  "-n",
59
- help="Name of the shadow test. If not provided, the ID will be used as the name.",
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="Name of the switchback test. If not provided, the ID will be used as the name.",
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 --switchback-test-id bunny-switch-hop \\
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 --switchback-test-id sunrise-switch \\
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 --switchback-test-id carrot-switch \\
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="A name for the version. If a name is not provided, the version ID will be used as the name.",
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,