nextmv 1.1.3.dev2__tar.gz → 1.2.0.dev0__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 (286) hide show
  1. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/.gitignore +1 -1
  2. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/PKG-INFO +2 -7
  3. nextmv-1.2.0.dev0/nextmv/__about__.py +1 -0
  4. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/acceptance/delete.py +2 -3
  5. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/account/delete.py +2 -3
  6. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/app/delete.py +2 -3
  7. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/app/push.py +4 -5
  8. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/batch/delete.py +2 -3
  9. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/ensemble/delete.py +2 -3
  10. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/input_set/delete.py +2 -3
  11. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/instance/delete.py +2 -3
  12. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/managed_input/delete.py +2 -3
  13. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/marketplace/subscription/delete.py +1 -2
  14. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/scenario/delete.py +2 -3
  15. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/secrets/delete.py +1 -2
  16. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/shadow/delete.py +1 -2
  17. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/sso/delete.py +2 -3
  18. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/sso/disable.py +2 -3
  19. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/sso/enable.py +2 -3
  20. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/switchback/delete.py +2 -3
  21. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/version/delete.py +2 -3
  22. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/configuration/config.py +2 -3
  23. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/configuration/delete.py +1 -2
  24. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/local/__init__.py +2 -0
  25. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/local/app/delete.py +2 -3
  26. nextmv-1.2.0.dev0/nextmv/cli/local/manifest/__init__.py +19 -0
  27. nextmv-1.2.0.dev0/nextmv/cli/local/manifest/init.py +78 -0
  28. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/main.py +3 -6
  29. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/message.py +135 -0
  30. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/manifest.py +49 -0
  31. nextmv-1.2.0.dev0/nextmv/templates/go_app.yaml +24 -0
  32. nextmv-1.2.0.dev0/nextmv/templates/java_app.yaml +19 -0
  33. nextmv-1.2.0.dev0/nextmv/templates/python_app.yaml +21 -0
  34. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/pyproject.toml +2 -9
  35. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/tests/test_manifest.py +75 -0
  36. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/uv.lock +35 -305
  37. nextmv-1.1.3.dev2/nextmv/__about__.py +0 -1
  38. nextmv-1.1.3.dev2/nextmv/cli/confirm.py +0 -34
  39. nextmv-1.1.3.dev2/nextmv/cli/mcp/__init__.py +0 -26
  40. nextmv-1.1.3.dev2/nextmv/cli/mcp/serve.py +0 -76
  41. nextmv-1.1.3.dev2/nextmv/cli/mcp/server.py +0 -1927
  42. nextmv-1.1.3.dev2/tests/cli/test_mcp.py +0 -622
  43. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/.python-version +0 -0
  44. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/LICENSE +0 -0
  45. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/README.md +0 -0
  46. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/__entrypoint__.py +0 -0
  47. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/__init__.py +0 -0
  48. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/_serialization.py +0 -0
  49. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/base_model.py +0 -0
  50. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/CONTRIBUTING.md +0 -0
  51. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/__init__.py +0 -0
  52. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/__init__.py +0 -0
  53. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/acceptance/__init__.py +0 -0
  54. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/acceptance/create.py +0 -0
  55. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/acceptance/get.py +0 -0
  56. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/acceptance/list.py +0 -0
  57. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/acceptance/update.py +0 -0
  58. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/account/__init__.py +0 -0
  59. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/account/create.py +0 -0
  60. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/account/get.py +0 -0
  61. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/account/update.py +0 -0
  62. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/app/__init__.py +0 -0
  63. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/app/create.py +0 -0
  64. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/app/exists.py +0 -0
  65. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/app/get.py +0 -0
  66. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/app/list.py +0 -0
  67. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/app/update.py +0 -0
  68. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/batch/__init__.py +0 -0
  69. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/batch/create.py +0 -0
  70. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/batch/get.py +0 -0
  71. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/batch/list.py +0 -0
  72. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/batch/metadata.py +0 -0
  73. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/batch/update.py +0 -0
  74. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/data/__init__.py +0 -0
  75. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/data/upload.py +0 -0
  76. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/ensemble/__init__.py +0 -0
  77. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/ensemble/create.py +0 -0
  78. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/ensemble/get.py +0 -0
  79. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/ensemble/list.py +0 -0
  80. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/ensemble/update.py +0 -0
  81. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/input_set/__init__.py +0 -0
  82. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/input_set/create.py +0 -0
  83. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/input_set/get.py +0 -0
  84. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/input_set/list.py +0 -0
  85. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/input_set/update.py +0 -0
  86. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/instance/__init__.py +0 -0
  87. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/instance/create.py +0 -0
  88. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/instance/exists.py +0 -0
  89. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/instance/get.py +0 -0
  90. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/instance/list.py +0 -0
  91. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/instance/update.py +0 -0
  92. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/managed_input/__init__.py +0 -0
  93. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/managed_input/create.py +0 -0
  94. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/managed_input/get.py +0 -0
  95. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/managed_input/list.py +0 -0
  96. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/managed_input/update.py +0 -0
  97. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/marketplace/__init__.py +0 -0
  98. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/marketplace/app/__init__.py +0 -0
  99. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/marketplace/app/create.py +0 -0
  100. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/marketplace/app/get.py +0 -0
  101. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/marketplace/app/list.py +0 -0
  102. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/marketplace/app/update.py +0 -0
  103. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/marketplace/subscription/__init__.py +0 -0
  104. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/marketplace/subscription/create.py +0 -0
  105. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/marketplace/subscription/get.py +0 -0
  106. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/marketplace/subscription/list.py +0 -0
  107. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/marketplace/version/__init__.py +0 -0
  108. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/marketplace/version/create.py +0 -0
  109. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/marketplace/version/get.py +0 -0
  110. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/marketplace/version/list.py +0 -0
  111. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/marketplace/version/update.py +0 -0
  112. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/run/__init__.py +0 -0
  113. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/run/cancel.py +0 -0
  114. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/run/create.py +0 -0
  115. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/run/get.py +0 -0
  116. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/run/input.py +0 -0
  117. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/run/list.py +0 -0
  118. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/run/logs.py +0 -0
  119. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/run/metadata.py +0 -0
  120. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/run/track.py +0 -0
  121. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/scenario/__init__.py +0 -0
  122. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/scenario/create.py +0 -0
  123. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/scenario/get.py +0 -0
  124. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/scenario/list.py +0 -0
  125. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/scenario/metadata.py +0 -0
  126. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/scenario/update.py +0 -0
  127. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/secrets/__init__.py +0 -0
  128. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/secrets/create.py +0 -0
  129. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/secrets/get.py +0 -0
  130. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/secrets/list.py +0 -0
  131. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/secrets/update.py +0 -0
  132. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/shadow/__init__.py +0 -0
  133. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/shadow/create.py +0 -0
  134. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/shadow/get.py +0 -0
  135. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/shadow/list.py +0 -0
  136. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/shadow/metadata.py +0 -0
  137. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/shadow/start.py +0 -0
  138. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/shadow/stop.py +0 -0
  139. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/shadow/update.py +0 -0
  140. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/sso/__init__.py +0 -0
  141. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/sso/create.py +0 -0
  142. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/sso/get.py +0 -0
  143. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/sso/update.py +0 -0
  144. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/switchback/__init__.py +0 -0
  145. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/switchback/create.py +0 -0
  146. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/switchback/get.py +0 -0
  147. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/switchback/list.py +0 -0
  148. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/switchback/metadata.py +0 -0
  149. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/switchback/start.py +0 -0
  150. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/switchback/stop.py +0 -0
  151. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/switchback/update.py +0 -0
  152. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/upload/__init__.py +0 -0
  153. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/upload/create.py +0 -0
  154. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/version/__init__.py +0 -0
  155. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/version/create.py +0 -0
  156. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/version/exists.py +0 -0
  157. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/version/get.py +0 -0
  158. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/version/list.py +0 -0
  159. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/cloud/version/update.py +0 -0
  160. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/community/__init__.py +0 -0
  161. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/community/clone.py +0 -0
  162. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/community/list.py +0 -0
  163. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/configuration/__init__.py +0 -0
  164. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/configuration/create.py +0 -0
  165. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/configuration/list.py +0 -0
  166. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/local/app/__init__.py +0 -0
  167. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/local/app/get.py +0 -0
  168. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/local/app/list.py +0 -0
  169. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/local/app/register.py +0 -0
  170. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/local/app/registered.py +0 -0
  171. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/local/app/sync.py +0 -0
  172. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/local/app/update.py +0 -0
  173. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/local/run/__init__.py +0 -0
  174. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/local/run/create.py +0 -0
  175. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/local/run/get.py +0 -0
  176. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/local/run/input.py +0 -0
  177. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/local/run/list.py +0 -0
  178. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/local/run/logs.py +0 -0
  179. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/local/run/metadata.py +0 -0
  180. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/local/run/visuals.py +0 -0
  181. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/options.py +0 -0
  182. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cli/version.py +0 -0
  183. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cloud/__init__.py +0 -0
  184. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cloud/acceptance_test.py +0 -0
  185. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cloud/account.py +0 -0
  186. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cloud/application/__init__.py +0 -0
  187. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cloud/application/_acceptance.py +0 -0
  188. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cloud/application/_batch_scenario.py +0 -0
  189. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cloud/application/_ensemble.py +0 -0
  190. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cloud/application/_input_set.py +0 -0
  191. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cloud/application/_instance.py +0 -0
  192. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cloud/application/_managed_input.py +0 -0
  193. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cloud/application/_run.py +0 -0
  194. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cloud/application/_secrets.py +0 -0
  195. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cloud/application/_shadow.py +0 -0
  196. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cloud/application/_switchback.py +0 -0
  197. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cloud/application/_utils.py +0 -0
  198. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cloud/application/_version.py +0 -0
  199. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cloud/assets.py +0 -0
  200. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cloud/batch_experiment.py +0 -0
  201. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cloud/client.py +0 -0
  202. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cloud/community.py +0 -0
  203. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cloud/ensemble.py +0 -0
  204. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cloud/input_set.py +0 -0
  205. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cloud/instance.py +0 -0
  206. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cloud/integration.py +0 -0
  207. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cloud/marketplace.py +0 -0
  208. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cloud/package.py +0 -0
  209. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cloud/scenario.py +0 -0
  210. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cloud/secrets.py +0 -0
  211. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cloud/shadow.py +0 -0
  212. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cloud/sso.py +0 -0
  213. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cloud/switchback.py +0 -0
  214. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cloud/url.py +0 -0
  215. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/cloud/version.py +0 -0
  216. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/default_app/.gitignore +0 -0
  217. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/default_app/README.md +0 -0
  218. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/default_app/app.yaml +0 -0
  219. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/default_app/input.json +0 -0
  220. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/default_app/main.py +0 -0
  221. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/default_app/requirements.txt +0 -0
  222. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/default_app/src/__init__.py +0 -0
  223. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/default_app/src/visuals.py +0 -0
  224. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/deprecated.py +0 -0
  225. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/input.py +0 -0
  226. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/local/__init__.py +0 -0
  227. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/local/application.py +0 -0
  228. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/local/executor.py +0 -0
  229. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/local/geojson_handler.py +0 -0
  230. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/local/local.py +0 -0
  231. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/local/plotly_handler.py +0 -0
  232. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/local/registry.py +0 -0
  233. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/local/runner.py +0 -0
  234. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/logger.py +0 -0
  235. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/model.py +0 -0
  236. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/options.py +0 -0
  237. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/output.py +0 -0
  238. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/polling.py +0 -0
  239. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/run.py +0 -0
  240. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/safe.py +0 -0
  241. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/nextmv/status.py +0 -0
  242. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/tests/README.md +0 -0
  243. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/tests/__init__.py +0 -0
  244. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/tests/cli/__init__.py +0 -0
  245. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/tests/cli/test_configuration.py +0 -0
  246. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/tests/cli/test_main.py +0 -0
  247. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/tests/cli/test_version.py +0 -0
  248. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/tests/cloud/__init__.py +0 -0
  249. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/tests/cloud/app.yaml +0 -0
  250. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/tests/cloud/test_client.py +0 -0
  251. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/tests/cloud/test_instance.py +0 -0
  252. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/tests/cloud/test_package.py +0 -0
  253. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/tests/cloud/test_scenario.py +0 -0
  254. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/tests/integration/__init__.py +0 -0
  255. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/tests/integration/cloud/__init__.py +0 -0
  256. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/tests/integration/cloud/test_integration_cloud.py +0 -0
  257. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/tests/integration/cloud/test_integration_marketplace.py +0 -0
  258. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/tests/local/__init__.py +0 -0
  259. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/tests/local/test_application.py +0 -0
  260. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/tests/local/test_executor.py +0 -0
  261. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/tests/local/test_registry.py +0 -0
  262. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/tests/local/test_runner.py +0 -0
  263. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/tests/scripts/__init__.py +0 -0
  264. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/tests/scripts/options1.py +0 -0
  265. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/tests/scripts/options2.py +0 -0
  266. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/tests/scripts/options3.py +0 -0
  267. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/tests/scripts/options4.py +0 -0
  268. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/tests/scripts/options5.py +0 -0
  269. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/tests/scripts/options6.py +0 -0
  270. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/tests/scripts/options7.py +0 -0
  271. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/tests/test_base_model.py +0 -0
  272. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/tests/test_entrypoint/__init__.py +0 -0
  273. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/tests/test_entrypoint/test_entrypoint.py +0 -0
  274. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/tests/test_input.py +0 -0
  275. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/tests/test_inputs/test_data.csv +0 -0
  276. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/tests/test_inputs/test_data.json +0 -0
  277. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/tests/test_inputs/test_data.txt +0 -0
  278. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/tests/test_logger.py +0 -0
  279. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/tests/test_model.py +0 -0
  280. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/tests/test_options.py +0 -0
  281. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/tests/test_output.py +0 -0
  282. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/tests/test_polling.py +0 -0
  283. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/tests/test_run.py +0 -0
  284. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/tests/test_safe.py +0 -0
  285. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/tests/test_serialization.py +0 -0
  286. {nextmv-1.1.3.dev2 → nextmv-1.2.0.dev0}/tests/test_version.py +0 -0
@@ -24,7 +24,7 @@ share/python-wheels/
24
24
  *.egg-info/
25
25
  .installed.cfg
26
26
  *.egg
27
- MANIFEST
27
+ # MANIFEST
28
28
 
29
29
  # PyInstaller
30
30
  # Usually these files are written by a python script from a template
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nextmv
3
- Version: 1.1.3.dev2
3
+ Version: 1.2.0.dev0
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/
@@ -223,15 +223,10 @@ Requires-Dist: pip>=26.0
223
223
  Requires-Dist: plotly>=6.0.1
224
224
  Requires-Dist: pydantic>=2.5.2
225
225
  Requires-Dist: pyyaml>=6.0.1
226
+ Requires-Dist: questionary>=2.1.1
226
227
  Requires-Dist: requests>=2.31.0
227
228
  Requires-Dist: typer>=0.20.1
228
229
  Requires-Dist: urllib3>=2.1.0
229
- Provides-Extra: all
230
- Requires-Dist: folium>=0.20.0; extra == 'all'
231
- Requires-Dist: mcp[cli]>=1.0; extra == 'all'
232
- Requires-Dist: plotly>=6.0.1; extra == 'all'
233
- Provides-Extra: mcp
234
- Requires-Dist: mcp[cli]>=1.0; extra == 'mcp'
235
230
  Provides-Extra: notebook
236
231
  Requires-Dist: mlflow>=3.9.0; extra == 'notebook'
237
232
  Description-Content-Type: text/markdown
@@ -0,0 +1 @@
1
+ __version__ = "v1.2.0.dev0"
@@ -7,8 +7,7 @@ from typing import Annotated
7
7
  import typer
8
8
 
9
9
  from nextmv.cli.configuration.config import build_cloud_app
10
- from nextmv.cli.confirm import get_confirmation
11
- from nextmv.cli.message import info, success
10
+ from nextmv.cli.message import confirmation, info, success
12
11
  from nextmv.cli.options import AcceptanceTestIDOption, AppIDOption, ProfileOption
13
12
 
14
13
  # Set up subcommand application.
@@ -47,7 +46,7 @@ def delete(
47
46
  """
48
47
 
49
48
  if not yes:
50
- confirm = get_confirmation(
49
+ confirm = confirmation(
51
50
  f"Are you sure you want to delete acceptance test [magenta]{acceptance_test_id}[/magenta] "
52
51
  f"from application [magenta]{app_id}[/magenta]? This action cannot be undone.",
53
52
  )
@@ -7,8 +7,7 @@ from typing import Annotated
7
7
  import typer
8
8
 
9
9
  from nextmv.cli.configuration.config import build_account
10
- from nextmv.cli.confirm import get_confirmation
11
- from nextmv.cli.message import info, success
10
+ from nextmv.cli.message import confirmation, info, success
12
11
  from nextmv.cli.options import AccountIDOption, ProfileOption
13
12
 
14
13
  # Set up subcommand application.
@@ -46,7 +45,7 @@ def delete(
46
45
  """
47
46
 
48
47
  if not yes:
49
- confirm = get_confirmation(
48
+ confirm = confirmation(
50
49
  f"Are you sure you want to delete account [magenta]{account_id}[/magenta]? This action cannot be undone.",
51
50
  )
52
51
 
@@ -7,8 +7,7 @@ from typing import Annotated
7
7
  import typer
8
8
 
9
9
  from nextmv.cli.configuration.config import build_cloud_app
10
- from nextmv.cli.confirm import get_confirmation
11
- from nextmv.cli.message import info, success
10
+ from nextmv.cli.message import confirmation, info, success
12
11
  from nextmv.cli.options import AppIDOption, ProfileOption
13
12
 
14
13
  # Set up subcommand application.
@@ -44,7 +43,7 @@ def delete(
44
43
  """
45
44
 
46
45
  if not yes:
47
- confirm = get_confirmation(
46
+ confirm = confirmation(
48
47
  f"Are you sure you want to delete application [magenta]{app_id}[/magenta]? This action cannot be undone.",
49
48
  )
50
49
 
@@ -10,8 +10,7 @@ import typer
10
10
  from rich.prompt import Prompt
11
11
 
12
12
  from nextmv.cli.configuration.config import build_cloud_app
13
- from nextmv.cli.confirm import get_confirmation
14
- from nextmv.cli.message import error, in_progress, info, success
13
+ from nextmv.cli.message import confirmation, error, in_progress, info, success
15
14
  from nextmv.cli.options import AppIDOption, ProfileOption
16
15
  from nextmv.cloud.application import Application
17
16
  from nextmv.manifest import Manifest
@@ -256,7 +255,7 @@ def _handle_version_creation(
256
255
 
257
256
  # If we are not auto-confirming version creation, ask the user.
258
257
  if not version_yes:
259
- should_create = get_confirmation(
258
+ should_create = confirmation(
260
259
  msg=f"Do you want to create a new version for application [magenta]{app_id}[/magenta] now?",
261
260
  default=True,
262
261
  )
@@ -327,7 +326,7 @@ def _handle_instance_prompting(
327
326
 
328
327
  # If the instance exists, ask if we want to update it.
329
328
  if exists:
330
- should_update = get_confirmation(
329
+ should_update = confirmation(
331
330
  msg=f"Instance [magenta]{instance_id}[/magenta] exists. "
332
331
  f"Do you want to link it to version [magenta]{version_id}[/magenta]?",
333
332
  default=True,
@@ -347,7 +346,7 @@ def _handle_instance_prompting(
347
346
  return
348
347
 
349
348
  # If the instance does not exist, ask if we want to create it.
350
- should_create = get_confirmation(
349
+ should_create = confirmation(
351
350
  msg=f"Instance [magenta]{instance_id}[/magenta] does not exist. "
352
351
  f"Do you want to create it using version [magenta]{version_id}[/magenta]?",
353
352
  default=True,
@@ -7,8 +7,7 @@ from typing import Annotated
7
7
  import typer
8
8
 
9
9
  from nextmv.cli.configuration.config import build_cloud_app
10
- from nextmv.cli.confirm import get_confirmation
11
- from nextmv.cli.message import info, success
10
+ from nextmv.cli.message import confirmation, info, success
12
11
  from nextmv.cli.options import AppIDOption, BatchExperimentIDOption, ProfileOption
13
12
 
14
13
  # Set up subcommand application.
@@ -47,7 +46,7 @@ def delete(
47
46
  """
48
47
 
49
48
  if not yes:
50
- confirm = get_confirmation(
49
+ confirm = confirmation(
51
50
  f"Are you sure you want to delete batch experiment [magenta]{batch_experiment_id}[/magenta] "
52
51
  f"from application [magenta]{app_id}[/magenta]? This action cannot be undone.",
53
52
  )
@@ -7,8 +7,7 @@ from typing import Annotated
7
7
  import typer
8
8
 
9
9
  from nextmv.cli.configuration.config import build_cloud_app
10
- from nextmv.cli.confirm import get_confirmation
11
- from nextmv.cli.message import info, success
10
+ from nextmv.cli.message import confirmation, info, success
12
11
  from nextmv.cli.options import AppIDOption, EnsembleDefinitionIDOption, ProfileOption
13
12
 
14
13
  # Set up subcommand application.
@@ -46,7 +45,7 @@ def delete(
46
45
  """
47
46
 
48
47
  if not yes:
49
- confirm = get_confirmation(
48
+ confirm = confirmation(
50
49
  f"Are you sure you want to delete ensemble definition [magenta]{ensemble_definition_id}[/magenta] "
51
50
  f"from application [magenta]{app_id}[/magenta]? This action cannot be undone.",
52
51
  )
@@ -7,8 +7,7 @@ from typing import Annotated
7
7
  import typer
8
8
 
9
9
  from nextmv.cli.configuration.config import build_cloud_app
10
- from nextmv.cli.confirm import get_confirmation
11
- from nextmv.cli.message import info, success
10
+ from nextmv.cli.message import confirmation, info, success
12
11
  from nextmv.cli.options import AppIDOption, InputSetIDOption, ProfileOption
13
12
 
14
13
  # Set up subcommand application.
@@ -47,7 +46,7 @@ def delete(
47
46
  """
48
47
 
49
48
  if not yes:
50
- confirm = get_confirmation(
49
+ confirm = confirmation(
51
50
  f"Are you sure you want to delete input set [magenta]{input_set_id}[/magenta] "
52
51
  f"from application [magenta]{app_id}[/magenta]? This action cannot be undone.",
53
52
  )
@@ -7,8 +7,7 @@ from typing import Annotated
7
7
  import typer
8
8
 
9
9
  from nextmv.cli.configuration.config import build_cloud_app
10
- from nextmv.cli.confirm import get_confirmation
11
- from nextmv.cli.message import info, success
10
+ from nextmv.cli.message import confirmation, info, success
12
11
  from nextmv.cli.options import AppIDOption, InstanceIDOption, ProfileOption
13
12
 
14
13
  # Set up subcommand application.
@@ -45,7 +44,7 @@ def delete(
45
44
  """
46
45
 
47
46
  if not yes:
48
- confirm = get_confirmation(
47
+ confirm = confirmation(
49
48
  f"Are you sure you want to delete instance [magenta]{instance_id}[/magenta] "
50
49
  f"from application [magenta]{app_id}[/magenta]? This action cannot be undone.",
51
50
  )
@@ -7,8 +7,7 @@ from typing import Annotated
7
7
  import typer
8
8
 
9
9
  from nextmv.cli.configuration.config import build_cloud_app
10
- from nextmv.cli.confirm import get_confirmation
11
- from nextmv.cli.message import info, success
10
+ from nextmv.cli.message import confirmation, info, success
12
11
  from nextmv.cli.options import AppIDOption, ManagedInputIDOption, ProfileOption
13
12
 
14
13
  # Set up subcommand application.
@@ -47,7 +46,7 @@ def delete(
47
46
  """
48
47
 
49
48
  if not yes:
50
- confirm = get_confirmation(
49
+ confirm = confirmation(
51
50
  f"Are you sure you want to delete managed input [magenta]{managed_input_id}[/magenta] "
52
51
  f"from application [magenta]{app_id}[/magenta]? This action cannot be undone.",
53
52
  )
@@ -7,7 +7,6 @@ from typing import Annotated
7
7
  import typer
8
8
 
9
9
  from nextmv.cli.configuration.config import build_marketplace_subscription
10
- from nextmv.cli.confirm import get_confirmation
11
10
  from nextmv.cli.message import info, success
12
11
  from nextmv.cli.options import MarketplaceSubscriptionIDOption, ProfileOption
13
12
 
@@ -44,7 +43,7 @@ def delete(
44
43
  """
45
44
 
46
45
  if not yes:
47
- confirm = get_confirmation(
46
+ confirm = confirmation(
48
47
  f"Are you sure you want to delete subscription with ID [magenta]{subscription_id}[/magenta]?",
49
48
  )
50
49
 
@@ -7,8 +7,7 @@ from typing import Annotated
7
7
  import typer
8
8
 
9
9
  from nextmv.cli.configuration.config import build_cloud_app
10
- from nextmv.cli.confirm import get_confirmation
11
- from nextmv.cli.message import info, success
10
+ from nextmv.cli.message import confirmation, info, success
12
11
  from nextmv.cli.options import AppIDOption, ProfileOption, ScenarioTestIDOption
13
12
 
14
13
  # Set up subcommand application.
@@ -47,7 +46,7 @@ def delete(
47
46
  """
48
47
 
49
48
  if not yes:
50
- confirm = get_confirmation(
49
+ confirm = confirmation(
51
50
  f"Are you sure you want to delete scenario test [magenta]{scenario_test_id}[/magenta] "
52
51
  f"from application [magenta]{app_id}[/magenta]? This action cannot be undone.",
53
52
  )
@@ -7,7 +7,6 @@ from typing import Annotated
7
7
  import typer
8
8
 
9
9
  from nextmv.cli.configuration.config import build_cloud_app
10
- from nextmv.cli.confirm import get_confirmation
11
10
  from nextmv.cli.message import info, success
12
11
  from nextmv.cli.options import AppIDOption, ProfileOption, SecretsCollectionIDOption
13
12
 
@@ -46,7 +45,7 @@ def delete(
46
45
  """
47
46
 
48
47
  if not yes:
49
- confirm = get_confirmation(
48
+ confirm = confirmation(
50
49
  f"Are you sure you want to delete secrets collection [magenta]{secrets_collection_id}[/magenta] "
51
50
  f"from application [magenta]{app_id}[/magenta]? This action cannot be undone.",
52
51
  )
@@ -7,7 +7,6 @@ from typing import Annotated
7
7
  import typer
8
8
 
9
9
  from nextmv.cli.configuration.config import build_cloud_app
10
- from nextmv.cli.confirm import get_confirmation
11
10
  from nextmv.cli.message import info, success
12
11
  from nextmv.cli.options import AppIDOption, ProfileOption, ShadowTestIDOption
13
12
 
@@ -47,7 +46,7 @@ def delete(
47
46
  """
48
47
 
49
48
  if not yes:
50
- confirm = get_confirmation(
49
+ confirm = confirmation(
51
50
  f"Are you sure you want to delete shadow test [magenta]{shadow_test_id}[/magenta] "
52
51
  f"from application [magenta]{app_id}[/magenta]? This action cannot be undone.",
53
52
  )
@@ -7,8 +7,7 @@ from typing import Annotated
7
7
  import typer
8
8
 
9
9
  from nextmv.cli.configuration.config import build_sso_config
10
- from nextmv.cli.confirm import get_confirmation
11
- from nextmv.cli.message import info, success
10
+ from nextmv.cli.message import confirmation, info, success
12
11
  from nextmv.cli.options import ProfileOption
13
12
 
14
13
  # Set up subcommand application.
@@ -44,7 +43,7 @@ def delete(
44
43
  """
45
44
 
46
45
  if not yes:
47
- confirm = get_confirmation(
46
+ confirm = confirmation(
48
47
  "Are you sure you want to delete the sso configuration? "
49
48
  "You can create it again with [code]nextmv cloud sso create[/code].",
50
49
  )
@@ -7,8 +7,7 @@ from typing import Annotated
7
7
  import typer
8
8
 
9
9
  from nextmv.cli.configuration.config import build_sso_config
10
- from nextmv.cli.confirm import get_confirmation
11
- from nextmv.cli.message import info, success
10
+ from nextmv.cli.message import confirmation, info, success
12
11
  from nextmv.cli.options import ProfileOption
13
12
 
14
13
  # Set up subcommand application.
@@ -43,7 +42,7 @@ def disable(
43
42
  """
44
43
 
45
44
  if not yes:
46
- confirm = get_confirmation(
45
+ confirm = confirmation(
47
46
  "Are you sure you want to disable the sso configuration?.",
48
47
  )
49
48
 
@@ -7,8 +7,7 @@ from typing import Annotated
7
7
  import typer
8
8
 
9
9
  from nextmv.cli.configuration.config import build_sso_config
10
- from nextmv.cli.confirm import get_confirmation
11
- from nextmv.cli.message import info, success
10
+ from nextmv.cli.message import confirmation, info, success
12
11
  from nextmv.cli.options import ProfileOption
13
12
 
14
13
  # Set up subcommand application.
@@ -43,7 +42,7 @@ def enable(
43
42
  """
44
43
 
45
44
  if not yes:
46
- confirm = get_confirmation(
45
+ confirm = confirmation(
47
46
  "Are you sure you want to enable the sso configuration?.",
48
47
  )
49
48
 
@@ -7,8 +7,7 @@ from typing import Annotated
7
7
  import typer
8
8
 
9
9
  from nextmv.cli.configuration.config import build_cloud_app
10
- from nextmv.cli.confirm import get_confirmation
11
- from nextmv.cli.message import info, success
10
+ from nextmv.cli.message import confirmation, info, success
12
11
  from nextmv.cli.options import AppIDOption, ProfileOption, SwitchbackTestIDOption
13
12
 
14
13
  # Set up subcommand application.
@@ -47,7 +46,7 @@ def delete(
47
46
  """
48
47
 
49
48
  if not yes:
50
- confirm = get_confirmation(
49
+ confirm = confirmation(
51
50
  f"Are you sure you want to delete switchback test [magenta]{switchback_test_id}[/magenta] "
52
51
  f"from application [magenta]{app_id}[/magenta]? This action cannot be undone.",
53
52
  )
@@ -7,8 +7,7 @@ from typing import Annotated
7
7
  import typer
8
8
 
9
9
  from nextmv.cli.configuration.config import build_cloud_app
10
- from nextmv.cli.confirm import get_confirmation
11
- from nextmv.cli.message import info, success
10
+ from nextmv.cli.message import confirmation, info, success
12
11
  from nextmv.cli.options import AppIDOption, ProfileOption, VersionIDOption
13
12
 
14
13
  # Set up subcommand application.
@@ -45,7 +44,7 @@ def delete(
45
44
  """
46
45
 
47
46
  if not yes:
48
- confirm = get_confirmation(
47
+ confirm = confirmation(
49
48
  f"Are you sure you want to delete version [magenta]{version_id}[/magenta] "
50
49
  f"from application [magenta]{app_id}[/magenta]? This action cannot be undone.",
51
50
  )
@@ -8,8 +8,7 @@ from typing import Any
8
8
  import yaml
9
9
 
10
10
  from nextmv import cloud, local
11
- from nextmv.cli.confirm import get_confirmation
12
- from nextmv.cli.message import error, info, success, warning
11
+ from nextmv.cli.message import confirmation, error, info, success, warning
13
12
  from nextmv.cloud.account import Account
14
13
  from nextmv.cloud.client import Client
15
14
  from nextmv.cloud.marketplace import MarketplaceApplication, MarketplaceSubscription
@@ -169,7 +168,7 @@ def build_cloud_app(app_id: str, profile: str | None = None) -> cloud.Applicatio
169
168
  return cloud.Application(client=client, id=app_id)
170
169
 
171
170
  warning(f"Application with ID [magenta]{app_id}[/magenta] does not exist.")
172
- should_create = get_confirmation(f"Do you want to create a new application with ID [magenta]{app_id}[/magenta]?")
171
+ should_create = confirmation(f"Do you want to create a new application with ID [magenta]{app_id}[/magenta]?")
173
172
  if not should_create:
174
173
  error(
175
174
  f"Application with ID [magenta]{app_id}[/magenta] was not created and does not exist. "
@@ -7,7 +7,6 @@ from typing import Annotated
7
7
  import typer
8
8
 
9
9
  from nextmv.cli.configuration.config import load_config, save_config
10
- from nextmv.cli.confirm import get_confirmation
11
10
  from nextmv.cli.message import error, info, success
12
11
 
13
12
  # Set up subcommand application.
@@ -53,7 +52,7 @@ def delete(
53
52
  error(f"Profile [magenta]{profile}[/magenta] does not exist.")
54
53
 
55
54
  if not yes:
56
- confirm = get_confirmation(
55
+ confirm = confirmation(
57
56
  f"Are you sure you want to delete profile [magenta]{profile}[/magenta]? This action cannot be undone.",
58
57
  )
59
58
 
@@ -5,11 +5,13 @@ This module defines the local command tree for the Nextmv CLI.
5
5
  import typer
6
6
 
7
7
  from nextmv.cli.local.app import app as app_app
8
+ from nextmv.cli.local.manifest import app as manifest_app
8
9
  from nextmv.cli.local.run import app as run_app
9
10
 
10
11
  # Set up subcommand application.
11
12
  app = typer.Typer()
12
13
  app.add_typer(app_app, name="app")
14
+ app.add_typer(manifest_app, name="manifest")
13
15
  app.add_typer(run_app, name="run")
14
16
 
15
17
 
@@ -7,8 +7,7 @@ from typing import Annotated
7
7
 
8
8
  import typer
9
9
 
10
- from nextmv.cli.confirm import get_confirmation
11
- from nextmv.cli.message import info, success, warning
10
+ from nextmv.cli.message import confirmation, info, success, warning
12
11
  from nextmv.cli.options import LocalAppIDOption, LocalAppSrcOption
13
12
  from nextmv.local.registry import Registry
14
13
 
@@ -53,7 +52,7 @@ def delete(
53
52
  elif app_src is not None and app_src != "":
54
53
  msg = f"Are you sure you want to delete application with source [magenta]{app_src}[/magenta]?"
55
54
 
56
- confirm = get_confirmation(f"{msg} This action cannot be undone.")
55
+ confirm = confirmation(f"{msg} This action cannot be undone.")
57
56
 
58
57
  if not confirm:
59
58
  if app_id is not None and app_id != "":
@@ -0,0 +1,19 @@
1
+ """
2
+ This module defines the local manifest command tree for the Nextmv CLI.
3
+ """
4
+
5
+ import typer
6
+
7
+ from nextmv.cli.local.manifest.init import app as init_app
8
+
9
+ # Set up subcommand application.
10
+ app = typer.Typer()
11
+ app.add_typer(init_app)
12
+
13
+
14
+ @app.callback()
15
+ def callback() -> None:
16
+ """
17
+ Manage Nextmv app manifest files.
18
+ """
19
+ pass
@@ -0,0 +1,78 @@
1
+ """
2
+ This module defines the local manifest init command for the Nextmv CLI.
3
+ """
4
+
5
+ from typing import Annotated
6
+
7
+ import typer
8
+
9
+ from nextmv.cli.message import choice, directory_path, enum_values, success
10
+ from nextmv.manifest import ManifestType, initialize_manifest
11
+
12
+ _SUPPORTED_TYPES = [ManifestType.PYTHON, ManifestType.GO, ManifestType.JAVA]
13
+
14
+ # Set up subcommand application.
15
+ app = typer.Typer()
16
+
17
+
18
+ @app.command()
19
+ def init(
20
+ dirpath: Annotated[
21
+ str | None,
22
+ typer.Option(
23
+ "--dirpath",
24
+ "-d",
25
+ help="The directory path where the manifest file will be initialized. Useful for non-interactive sessions.",
26
+ metavar="DIRPATH",
27
+ ),
28
+ ] = None,
29
+ manifest_type: Annotated[
30
+ ManifestType | None,
31
+ typer.Option(
32
+ "--type",
33
+ "-t",
34
+ help=f"The type of manifest to initialize. Allowed values are: {enum_values(ManifestType)}. "
35
+ "Useful for non-interactive sessions.",
36
+ metavar="TYPE",
37
+ ),
38
+ ] = None,
39
+ ) -> None:
40
+ """
41
+ Initialize an [magenta]app.yaml[/magenta] (app manifest) file.
42
+
43
+ Creates a sample [magenta]app.yaml[/magenta] manifest file by prompting the
44
+ user to provide the type and directory path. You can use the --dirpath and
45
+ --type options to skip the prompts. If the directory does not exist, it
46
+ will be created. If a manifest file already exists in the directory, it
47
+ will be overwritten.
48
+
49
+ [bold][underline]Examples[/underline][/bold]
50
+
51
+ - Initialize a Python manifest in the current directory.
52
+ $ [dim]nextmv local manifest init[/dim]
53
+
54
+ - Initialize a Go manifest in the [magenta]./my-app[/magenta] directory.
55
+ $ [dim]nextmv local manifest init --type go --dirpath ./my-app[/dim]
56
+
57
+ - Initialize a Java manifest in the [magenta]./my-app[/magenta] directory.
58
+ $ [dim]nextmv local manifest init --type java --dirpath ./my-app[/dim]
59
+ """
60
+
61
+ if manifest_type is None or manifest_type == "":
62
+ manifest_type = choice(
63
+ msg="What is the type of your Nextmv app?",
64
+ choices=[member.value for member in ManifestType],
65
+ default=ManifestType.PYTHON.value,
66
+ )
67
+ manifest_type = ManifestType(manifest_type)
68
+
69
+ if dirpath is None or dirpath == "":
70
+ dirpath = directory_path(
71
+ msg="In which directory would you like to init the manifest?",
72
+ default=".",
73
+ )
74
+ print("This is the directory where the manifest file will be initialized:", dirpath)
75
+ dirpath = dirpath or "."
76
+
77
+ dst = initialize_manifest(manifest_type=manifest_type, dirpath=dirpath)
78
+ success(f"Manifest of type [magenta]{manifest_type.value}[/magenta] initialized at [magenta]{dst}[/magenta].")
@@ -24,10 +24,8 @@ from nextmv.cli.cloud import app as cloud_app
24
24
  from nextmv.cli.community import app as community_app
25
25
  from nextmv.cli.configuration import app as configuration_app
26
26
  from nextmv.cli.configuration.config import CONFIG_DIR, GO_CLI_PATH, load_config
27
- from nextmv.cli.confirm import get_confirmation
28
27
  from nextmv.cli.local import app as local_app
29
- from nextmv.cli.mcp import app as mcp_app
30
- from nextmv.cli.message import error, info, success, warning
28
+ from nextmv.cli.message import confirmation, error, info, success, warning
31
29
  from nextmv.cli.version import app as version_app
32
30
  from nextmv.cli.version import version_callback
33
31
 
@@ -51,7 +49,6 @@ app.add_typer(cloud_app, name="cloud")
51
49
  app.add_typer(community_app, name="community")
52
50
  app.add_typer(configuration_app, name="configuration")
53
51
  app.add_typer(local_app, name="local")
54
- app.add_typer(mcp_app, name="mcp")
55
52
  app.add_typer(version_app)
56
53
 
57
54
 
@@ -78,7 +75,7 @@ def callback(
78
75
  return
79
76
 
80
77
  # Skip checks for certain commands.
81
- ignored_commands = {"configuration", "mcp", "version"}
78
+ ignored_commands = {"configuration", "version"}
82
79
  if ctx.invoked_subcommand in ignored_commands:
83
80
  return
84
81
 
@@ -96,7 +93,7 @@ def handle_go_cli() -> None:
96
93
 
97
94
  exists = go_cli_exists()
98
95
  if exists:
99
- delete = get_confirmation(
96
+ delete = confirmation(
100
97
  "Do you want to delete the [italic red]deprecated[/italic red] Nextmv CLI "
101
98
  f"at [magenta]{GO_CLI_PATH}[/magenta] now?"
102
99
  )