nextmv 1.4.1.dev3__tar.gz → 1.4.2.dev3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (396) hide show
  1. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/PKG-INFO +1 -1
  2. nextmv-1.4.2.dev3/nextmv/__about__.py +1 -0
  3. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/application/__init__.py +3 -0
  4. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/client.py +45 -28
  5. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/manifest.py +19 -0
  6. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/cli/test_mcp.py +1 -1
  7. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/cloud/app.yaml +6 -0
  8. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/test_manifest.py +52 -1
  9. nextmv-1.4.1.dev3/nextmv/__about__.py +0 -1
  10. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/.gitignore +0 -0
  11. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/.python-version +0 -0
  12. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/CONTRIBUTING.md +0 -0
  13. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/LICENSE +0 -0
  14. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/README.md +0 -0
  15. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/__entrypoint__.py +0 -0
  16. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/__init__.py +0 -0
  17. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/_serialization.py +0 -0
  18. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/account.py +0 -0
  19. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/base_model.py +0 -0
  20. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/__init__.py +0 -0
  21. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/__init__.py +0 -0
  22. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/acceptance/__init__.py +0 -0
  23. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/acceptance/create.py +0 -0
  24. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/acceptance/delete.py +0 -0
  25. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/acceptance/get.py +0 -0
  26. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/acceptance/list.py +0 -0
  27. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/acceptance/update.py +0 -0
  28. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/account/__init__.py +0 -0
  29. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/account/create.py +0 -0
  30. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/account/delete.py +0 -0
  31. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/account/get.py +0 -0
  32. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/account/update.py +0 -0
  33. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/app/__init__.py +0 -0
  34. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/app/create.py +0 -0
  35. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/app/delete.py +0 -0
  36. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/app/exists.py +0 -0
  37. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/app/get.py +0 -0
  38. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/app/list.py +0 -0
  39. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/app/push.py +0 -0
  40. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/app/update.py +0 -0
  41. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/batch/__init__.py +0 -0
  42. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/batch/create.py +0 -0
  43. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/batch/delete.py +0 -0
  44. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/batch/get.py +0 -0
  45. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/batch/list.py +0 -0
  46. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/batch/metadata.py +0 -0
  47. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/batch/update.py +0 -0
  48. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/data/__init__.py +0 -0
  49. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/data/upload.py +0 -0
  50. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/ensemble/__init__.py +0 -0
  51. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/ensemble/create.py +0 -0
  52. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/ensemble/delete.py +0 -0
  53. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/ensemble/get.py +0 -0
  54. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/ensemble/list.py +0 -0
  55. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/ensemble/update.py +0 -0
  56. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/input_set/__init__.py +0 -0
  57. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/input_set/create.py +0 -0
  58. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/input_set/delete.py +0 -0
  59. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/input_set/get.py +0 -0
  60. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/input_set/list.py +0 -0
  61. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/input_set/update.py +0 -0
  62. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/instance/__init__.py +0 -0
  63. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/instance/create.py +0 -0
  64. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/instance/delete.py +0 -0
  65. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/instance/exists.py +0 -0
  66. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/instance/get.py +0 -0
  67. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/instance/list.py +0 -0
  68. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/instance/update.py +0 -0
  69. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/managed_input/__init__.py +0 -0
  70. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/managed_input/create.py +0 -0
  71. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/managed_input/delete.py +0 -0
  72. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/managed_input/get.py +0 -0
  73. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/managed_input/list.py +0 -0
  74. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/managed_input/update.py +0 -0
  75. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/marketplace/__init__.py +0 -0
  76. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/marketplace/app/__init__.py +0 -0
  77. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/marketplace/app/create.py +0 -0
  78. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/marketplace/app/get.py +0 -0
  79. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/marketplace/app/list.py +0 -0
  80. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/marketplace/app/update.py +0 -0
  81. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/marketplace/subscription/__init__.py +0 -0
  82. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/marketplace/subscription/create.py +0 -0
  83. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/marketplace/subscription/delete.py +0 -0
  84. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/marketplace/subscription/get.py +0 -0
  85. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/marketplace/subscription/list.py +0 -0
  86. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/marketplace/version/__init__.py +0 -0
  87. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/marketplace/version/create.py +0 -0
  88. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/marketplace/version/get.py +0 -0
  89. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/marketplace/version/list.py +0 -0
  90. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/marketplace/version/update.py +0 -0
  91. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/run/__init__.py +0 -0
  92. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/run/cancel.py +0 -0
  93. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/run/create.py +0 -0
  94. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/run/delete.py +0 -0
  95. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/run/get.py +0 -0
  96. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/run/input.py +0 -0
  97. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/run/list.py +0 -0
  98. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/run/logs.py +0 -0
  99. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/run/metadata.py +0 -0
  100. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/run/track.py +0 -0
  101. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/scenario/__init__.py +0 -0
  102. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/scenario/create.py +0 -0
  103. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/scenario/delete.py +0 -0
  104. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/scenario/get.py +0 -0
  105. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/scenario/list.py +0 -0
  106. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/scenario/metadata.py +0 -0
  107. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/scenario/update.py +0 -0
  108. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/secrets/__init__.py +0 -0
  109. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/secrets/create.py +0 -0
  110. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/secrets/delete.py +0 -0
  111. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/secrets/get.py +0 -0
  112. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/secrets/list.py +0 -0
  113. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/secrets/update.py +0 -0
  114. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/shadow/__init__.py +0 -0
  115. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/shadow/create.py +0 -0
  116. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/shadow/delete.py +0 -0
  117. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/shadow/get.py +0 -0
  118. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/shadow/list.py +0 -0
  119. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/shadow/metadata.py +0 -0
  120. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/shadow/start.py +0 -0
  121. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/shadow/stop.py +0 -0
  122. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/shadow/update.py +0 -0
  123. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/sso/__init__.py +0 -0
  124. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/sso/create.py +0 -0
  125. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/sso/delete.py +0 -0
  126. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/sso/disable.py +0 -0
  127. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/sso/domain/__init__.py +0 -0
  128. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/sso/domain/delete.py +0 -0
  129. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/sso/enable.py +0 -0
  130. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/sso/get.py +0 -0
  131. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/sso/update.py +0 -0
  132. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/switchback/__init__.py +0 -0
  133. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/switchback/create.py +0 -0
  134. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/switchback/delete.py +0 -0
  135. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/switchback/get.py +0 -0
  136. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/switchback/list.py +0 -0
  137. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/switchback/metadata.py +0 -0
  138. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/switchback/start.py +0 -0
  139. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/switchback/stop.py +0 -0
  140. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/switchback/update.py +0 -0
  141. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/upload/__init__.py +0 -0
  142. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/upload/create.py +0 -0
  143. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/version/__init__.py +0 -0
  144. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/version/create.py +0 -0
  145. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/version/delete.py +0 -0
  146. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/version/exists.py +0 -0
  147. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/version/get.py +0 -0
  148. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/version/list.py +0 -0
  149. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/cloud/version/update.py +0 -0
  150. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/community/__init__.py +0 -0
  151. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/community/clone.py +0 -0
  152. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/community/list.py +0 -0
  153. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/configuration/__init__.py +0 -0
  154. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/configuration/config.py +0 -0
  155. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/configuration/create.py +0 -0
  156. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/configuration/delete.py +0 -0
  157. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/configuration/list.py +0 -0
  158. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/init.py +0 -0
  159. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/local/__init__.py +0 -0
  160. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/local/app/__init__.py +0 -0
  161. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/local/app/delete.py +0 -0
  162. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/local/app/get.py +0 -0
  163. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/local/app/list.py +0 -0
  164. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/local/app/register.py +0 -0
  165. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/local/app/registered.py +0 -0
  166. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/local/app/sync.py +0 -0
  167. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/local/app/update.py +0 -0
  168. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/local/run/__init__.py +0 -0
  169. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/local/run/create.py +0 -0
  170. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/local/run/get.py +0 -0
  171. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/local/run/input.py +0 -0
  172. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/local/run/list.py +0 -0
  173. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/local/run/logs.py +0 -0
  174. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/local/run/metadata.py +0 -0
  175. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/local/run/visuals.py +0 -0
  176. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/main.py +0 -0
  177. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/manifest/__init__.py +0 -0
  178. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/manifest/init.py +0 -0
  179. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/manifest/validate.py +0 -0
  180. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/__init__.py +0 -0
  181. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/serve.py +0 -0
  182. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/server.py +0 -0
  183. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/tools/WORKFLOW.md +0 -0
  184. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/tools/__init__.py +0 -0
  185. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/tools/_helpers.py +0 -0
  186. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/tools/acceptance.py +0 -0
  187. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/tools/account.py +0 -0
  188. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/tools/app.py +0 -0
  189. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/tools/batch.py +0 -0
  190. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/tools/community.py +0 -0
  191. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/tools/ensemble.py +0 -0
  192. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/tools/guide.py +0 -0
  193. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/tools/input_set.py +0 -0
  194. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/tools/instance.py +0 -0
  195. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/tools/local.py +0 -0
  196. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/tools/managed_input.py +0 -0
  197. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/tools/profile.py +0 -0
  198. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/tools/run.py +0 -0
  199. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/tools/scenario.py +0 -0
  200. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/tools/secrets.py +0 -0
  201. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/tools/shadow.py +0 -0
  202. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/tools/sso.py +0 -0
  203. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/tools/switchback.py +0 -0
  204. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/mcp/tools/version.py +0 -0
  205. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/message.py +0 -0
  206. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/options.py +0 -0
  207. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cli/version.py +0 -0
  208. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/__init__.py +0 -0
  209. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/acceptance_test.py +0 -0
  210. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/account.py +0 -0
  211. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/application/_acceptance.py +0 -0
  212. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/application/_batch_scenario.py +0 -0
  213. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/application/_ensemble.py +0 -0
  214. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/application/_input_set.py +0 -0
  215. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/application/_instance.py +0 -0
  216. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/application/_managed_input.py +0 -0
  217. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/application/_run.py +0 -0
  218. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/application/_secrets.py +0 -0
  219. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/application/_shadow.py +0 -0
  220. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/application/_switchback.py +0 -0
  221. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/application/_utils.py +0 -0
  222. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/application/_version.py +0 -0
  223. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/assets.py +0 -0
  224. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/batch_experiment.py +0 -0
  225. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/community.py +0 -0
  226. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/ensemble.py +0 -0
  227. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/input_set.py +0 -0
  228. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/instance.py +0 -0
  229. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/integration.py +0 -0
  230. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/marketplace.py +0 -0
  231. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/package.py +0 -0
  232. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/scenario.py +0 -0
  233. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/secrets.py +0 -0
  234. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/shadow.py +0 -0
  235. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/sso.py +0 -0
  236. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/switchback.py +0 -0
  237. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/url.py +0 -0
  238. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/cloud/version.py +0 -0
  239. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/content_format.py +0 -0
  240. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/default_app/.gitignore +0 -0
  241. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/default_app/README.md +0 -0
  242. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/default_app/app.yaml +0 -0
  243. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/default_app/input.json +0 -0
  244. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/default_app/main.py +0 -0
  245. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/default_app/requirements.txt +0 -0
  246. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/default_app/src/__init__.py +0 -0
  247. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/default_app/src/visuals.py +0 -0
  248. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/deprecated.py +0 -0
  249. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/input.py +0 -0
  250. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/local/__init__.py +0 -0
  251. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/local/application.py +0 -0
  252. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/local/executor.py +0 -0
  253. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/local/geojson_handler.py +0 -0
  254. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/local/local.py +0 -0
  255. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/local/plotly_handler.py +0 -0
  256. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/local/registry.py +0 -0
  257. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/local/runner.py +0 -0
  258. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/logger.py +0 -0
  259. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/model.py +0 -0
  260. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/options.py +0 -0
  261. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/output.py +0 -0
  262. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/polling.py +0 -0
  263. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/run.py +0 -0
  264. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/safe.py +0 -0
  265. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/status.py +0 -0
  266. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/binary_json_app.yaml +0 -0
  267. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/binary_multi-file_app.yaml +0 -0
  268. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/go_json_app.yaml +0 -0
  269. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/go_json_hello-world/.gitignore +0 -0
  270. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/go_json_hello-world/README.md +0 -0
  271. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/go_json_hello-world/app.yaml +0 -0
  272. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/go_json_hello-world/go.mod +0 -0
  273. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/go_json_hello-world/input.json +0 -0
  274. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/go_json_hello-world/main.go +0 -0
  275. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/go_multi-file_app.yaml +0 -0
  276. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/go_multi-file_hello-world/.gitignore +0 -0
  277. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/go_multi-file_hello-world/README.md +0 -0
  278. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/go_multi-file_hello-world/app.yaml +0 -0
  279. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/go_multi-file_hello-world/go.mod +0 -0
  280. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/go_multi-file_hello-world/inputs/input.json +0 -0
  281. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/go_multi-file_hello-world/main.go +0 -0
  282. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/java_json_app.yaml +0 -0
  283. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/java_json_hello-world/.gitignore +0 -0
  284. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/java_json_hello-world/Main.java +0 -0
  285. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/java_json_hello-world/README.md +0 -0
  286. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/java_json_hello-world/app.yaml +0 -0
  287. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/java_json_hello-world/input.json +0 -0
  288. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/java_json_hello-world/pom.xml +0 -0
  289. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/java_multi-file_app.yaml +0 -0
  290. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/java_multi-file_hello-world/.gitignore +0 -0
  291. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/java_multi-file_hello-world/Main.java +0 -0
  292. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/java_multi-file_hello-world/README.md +0 -0
  293. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/java_multi-file_hello-world/app.yaml +0 -0
  294. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/java_multi-file_hello-world/inputs/input.json +0 -0
  295. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/java_multi-file_hello-world/pom.xml +0 -0
  296. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_app.yaml +0 -0
  297. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_class-assign/.gitignore +0 -0
  298. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_class-assign/README.md +0 -0
  299. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_class-assign/app.yaml +0 -0
  300. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_class-assign/input.json +0 -0
  301. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_class-assign/main.py +0 -0
  302. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_class-assign/requirements.txt +0 -0
  303. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_class-assign/visualizations.py +0 -0
  304. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_demand-alloc/.gitignore +0 -0
  305. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_demand-alloc/README.md +0 -0
  306. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_demand-alloc/allocation/README.md +0 -0
  307. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_demand-alloc/allocation/app.yaml +0 -0
  308. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_demand-alloc/allocation/input.json +0 -0
  309. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_demand-alloc/allocation/main.py +0 -0
  310. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_demand-alloc/allocation/requirements.txt +0 -0
  311. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_demand-alloc/allocation/visuals.py +0 -0
  312. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_demand-alloc/workflow/README.md +0 -0
  313. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_demand-alloc/workflow/app.yaml +0 -0
  314. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_demand-alloc/workflow/input.json +0 -0
  315. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_demand-alloc/workflow/main.py +0 -0
  316. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_demand-alloc/workflow/requirements.txt +0 -0
  317. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_demand-alloc/workflow/visuals.py +0 -0
  318. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_hello-world/.gitignore +0 -0
  319. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_hello-world/README.md +0 -0
  320. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_hello-world/app.yaml +0 -0
  321. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_hello-world/input.json +0 -0
  322. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_hello-world/main.py +0 -0
  323. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_json_hello-world/requirements.txt +0 -0
  324. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_app.yaml +0 -0
  325. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_class-assign/.gitignore +0 -0
  326. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_class-assign/README.md +0 -0
  327. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_class-assign/app.yaml +0 -0
  328. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_class-assign/inputs/input.json +0 -0
  329. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_class-assign/main.py +0 -0
  330. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_class-assign/requirements.txt +0 -0
  331. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_class-assign/visualizations.py +0 -0
  332. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_demand-alloc/README.md +0 -0
  333. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_demand-alloc/allocation/README.md +0 -0
  334. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_demand-alloc/allocation/app.yaml +0 -0
  335. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_demand-alloc/allocation/input.json +0 -0
  336. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_demand-alloc/allocation/main.py +0 -0
  337. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_demand-alloc/allocation/requirements.txt +0 -0
  338. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_demand-alloc/allocation/visuals.py +0 -0
  339. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_demand-alloc/workflow/.gitignore +0 -0
  340. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_demand-alloc/workflow/README.md +0 -0
  341. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_demand-alloc/workflow/app.yaml +0 -0
  342. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_demand-alloc/workflow/inputs/input.json +0 -0
  343. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_demand-alloc/workflow/main.py +0 -0
  344. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_demand-alloc/workflow/requirements.txt +0 -0
  345. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_demand-alloc/workflow/visuals.py +0 -0
  346. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_hello-world/.gitignore +0 -0
  347. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_hello-world/README.md +0 -0
  348. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_hello-world/app.yaml +0 -0
  349. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_hello-world/inputs/input.json +0 -0
  350. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_hello-world/main.py +0 -0
  351. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/nextmv/templates/python_multi-file_hello-world/requirements.txt +0 -0
  352. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/pyproject.toml +0 -0
  353. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/__init__.py +0 -0
  354. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/cli/__init__.py +0 -0
  355. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/cli/test_configuration.py +0 -0
  356. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/cli/test_main.py +0 -0
  357. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/cli/test_version.py +0 -0
  358. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/cloud/__init__.py +0 -0
  359. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/cloud/test_client.py +0 -0
  360. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/cloud/test_instance.py +0 -0
  361. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/cloud/test_package.py +0 -0
  362. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/cloud/test_scenario.py +0 -0
  363. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/integration/__init__.py +0 -0
  364. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/integration/cloud/__init__.py +0 -0
  365. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/integration/cloud/test_integration_cloud.py +0 -0
  366. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/integration/cloud/test_integration_marketplace.py +0 -0
  367. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/local/__init__.py +0 -0
  368. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/local/test_application.py +0 -0
  369. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/local/test_executor.py +0 -0
  370. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/local/test_registry.py +0 -0
  371. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/local/test_runner.py +0 -0
  372. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/scripts/__init__.py +0 -0
  373. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/scripts/options1.py +0 -0
  374. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/scripts/options2.py +0 -0
  375. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/scripts/options3.py +0 -0
  376. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/scripts/options4.py +0 -0
  377. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/scripts/options5.py +0 -0
  378. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/scripts/options6.py +0 -0
  379. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/scripts/options7.py +0 -0
  380. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/test_base_model.py +0 -0
  381. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/test_entrypoint/__init__.py +0 -0
  382. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/test_entrypoint/test_entrypoint.py +0 -0
  383. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/test_input.py +0 -0
  384. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/test_inputs/test_data.csv +0 -0
  385. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/test_inputs/test_data.json +0 -0
  386. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/test_inputs/test_data.txt +0 -0
  387. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/test_logger.py +0 -0
  388. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/test_model.py +0 -0
  389. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/test_options.py +0 -0
  390. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/test_output.py +0 -0
  391. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/test_polling.py +0 -0
  392. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/test_run.py +0 -0
  393. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/test_safe.py +0 -0
  394. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/test_serialization.py +0 -0
  395. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/tests/test_version.py +0 -0
  396. {nextmv-1.4.1.dev3 → nextmv-1.4.2.dev3}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nextmv
3
- Version: 1.4.1.dev3
3
+ Version: 1.4.2.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/
@@ -0,0 +1 @@
1
+ __version__ = "v1.4.2.dev3"
@@ -811,6 +811,9 @@ class Application(
811
811
 
812
812
  if manifest.configuration is not None and manifest.configuration.options is not None:
813
813
  options = manifest.configuration.options.to_dict()
814
+ # Ignore local_only options since they are not meant to be used on the platform
815
+ if "items" in options:
816
+ options["items"] = [item for item in options["items"] if not item.get("local_only", False)]
814
817
  if "format" in options and isinstance(options["format"], list):
815
818
  # the endpoint expects a dictionary with a template key having a list of strings
816
819
  # the app.yaml however defines format as a list of strings, so we need to convert it here
@@ -24,6 +24,7 @@ import requests
24
24
  import yaml
25
25
  from requests.adapters import HTTPAdapter, Retry
26
26
 
27
+ from nextmv import deprecated
27
28
  from nextmv._serialization import deflated_serialize_json
28
29
 
29
30
  _MAX_LAMBDA_PAYLOAD_SIZE: int = 500 * 1024 * 1024
@@ -197,12 +198,10 @@ class Client:
197
198
  backoff_max: float = 60
198
199
  """Maximum backoff time to use for requests to the Nextmv Cloud API, in
199
200
  seconds."""
200
- configuration_file: str = "~/.nextmv/config.yaml"
201
+ configuration_file: str | None = None
201
202
  """
202
203
  Deprecated. This attribute is no longer being used. Use the `profile`
203
204
  attribute to specify different configurations instead.
204
-
205
- Path to the configuration file used by the Nextmv CLI.
206
205
  """
207
206
  headers: dict[str, str] | None = None
208
207
  """Headers to use for requests to the Nextmv Cloud API."""
@@ -255,11 +254,14 @@ class Client:
255
254
  Raises
256
255
  ------
257
256
  ValueError
258
- If `api_key` is an empty string.
259
- If no API key is found in any of the lookup locations.
260
- If a profile is specified via `NEXTMV_PROFILE` but not found in
261
- the configuration file.
262
- If `apikey` is not found in the configuration file for the
257
+ If no API key is found after checking the constructor argument,
258
+ the ``NEXTMV_API_KEY`` environment variable, and the
259
+ configuration file (for the resolved profile or the default
260
+ profile). A ``None`` or empty ``api_key`` is treated as unset
261
+ and causes the lookup to fall through to the next source.
262
+ If a profile is specified via ``NEXTMV_PROFILE`` or the
263
+ ``profile`` attribute but is not found in the configuration file.
264
+ If ``apikey`` is not found in the configuration file for the
263
265
  selected profile.
264
266
  """
265
267
 
@@ -268,6 +270,12 @@ class Client:
268
270
  self.api_key = self.__resolve_api_key(profile)
269
271
  self.__set_headers_api_key(self.api_key)
270
272
 
273
+ if self.configuration_file is not None and self.configuration_file != "":
274
+ deprecated(
275
+ name="Client.configuration_file",
276
+ reason="`Client.configuration_file` is deprecated, use `Client.profile` to work with another profile",
277
+ )
278
+
271
279
  def request(
272
280
  self,
273
281
  method: str,
@@ -553,11 +561,21 @@ class Client:
553
561
  The resolved profile name, or `None` if no profile is set.
554
562
  """
555
563
  profile_env = os.getenv("NEXTMV_PROFILE")
556
- if profile_env is not None and profile_env != "":
557
- return profile_env
564
+ if profile_env is not None:
565
+ profile_env = profile_env.strip()
566
+ if profile_env != "":
567
+ if profile_env.lower() == "default":
568
+ return None
558
569
 
559
- if self.profile is not None and self.profile != "":
560
- return self.profile
570
+ return profile_env
571
+
572
+ if self.profile is not None:
573
+ profile = self.profile.strip()
574
+ if profile != "":
575
+ if profile.lower() == "default":
576
+ return None
577
+
578
+ return profile
561
579
 
562
580
  return None
563
581
 
@@ -584,23 +602,22 @@ class Client:
584
602
  The resolved API endpoint URL.
585
603
  """
586
604
  if self.url is not None and self.url != "":
587
- return self.url
588
-
589
- url_key_env = os.getenv("NEXTMV_ENDPOINT")
590
- if url_key_env is not None and url_key_env != "":
591
- return url_key_env
592
-
593
- if profile is not None and profile != "":
605
+ url = self.url
606
+ elif (url_env := os.getenv("NEXTMV_ENDPOINT")):
607
+ url = url_env
608
+ elif profile is not None and profile != "":
594
609
  url = _retrieve_endpoint_from_config(profile)
595
- return url
596
-
597
- # The fallback behavior is to attempt to retrieve the default endpoint
598
- # from the config file. If everything fails, we return the hardcoded
599
- # default endpoint.
600
- try:
601
- url = _retrieve_endpoint_from_config()
602
- except (RuntimeError, ValueError):
603
- url = "https://api.cloud.nextmv.io"
610
+ else:
611
+ # The fallback behavior is to attempt to retrieve the default endpoint
612
+ # from the config file. If everything fails, we return the hardcoded
613
+ # default endpoint.
614
+ try:
615
+ url = _retrieve_endpoint_from_config()
616
+ except (RuntimeError, ValueError):
617
+ url = "https://api.cloud.nextmv.io"
618
+
619
+ if not url.startswith("https://") and not url.startswith("http://"):
620
+ url = f"https://{url}"
604
621
 
605
622
  return url
606
623
 
@@ -511,6 +511,8 @@ class ManifestOption(BaseModel):
511
511
  The description of the option.
512
512
  required : bool, default=False
513
513
  Whether the option is required or not.
514
+ local_only : bool, default=False
515
+ Whether the option is only used locally and should not be sent to Nextmv Cloud.
514
516
  additional_attributes : Optional[dict[str, Any]], default=None
515
517
  Optional additional attributes for the option. The Nextmv Cloud may
516
518
  perform validation on these attributes. For example, the maximum
@@ -551,11 +553,28 @@ class ManifestOption(BaseModel):
551
553
  """The description of the option"""
552
554
  required: bool = False
553
555
  """Whether the option is required or not"""
556
+ local_only: bool = False
557
+ """Whether the option is only used locally and should not be sent to Nextmv Cloud."""
554
558
  additional_attributes: dict[str, Any] | None = None
555
559
  """Optional additional attributes for the option."""
556
560
  ui: ManifestOptionUI | None = None
557
561
  """Optional UI attributes for the option."""
558
562
 
563
+ def model_post_init(self, __context) -> None:
564
+ """
565
+ Validations done after parsing the model.
566
+
567
+ Raises
568
+ ------
569
+ ValueError
570
+ If validation fails. A descriptive error message is provided in this case.
571
+ """
572
+
573
+ # It does not make sense to define options as required AND them being local only,
574
+ # since this would make Platform runs via UI cumbersome to impossible.
575
+ if self.required and self.local_only:
576
+ raise ValueError(f"Option '{self.name}' cannot be both required and local only.")
577
+
559
578
  @classmethod
560
579
  def from_option(cls, option: Option) -> "ManifestOption":
561
580
  """
@@ -362,7 +362,7 @@ class TestGetClient(unittest.TestCase):
362
362
 
363
363
  @patch.dict("os.environ", {}, clear=True)
364
364
  @patch("nextmv.cli.mcp.tools._helpers.Client", side_effect=Exception("no config"))
365
- def test_get_client_no_key_no_config_raises(self, mock_build):
365
+ def test_get_client_no_key_no_config_raises(self, mock_client):
366
366
  """Test that _get_client raises when no API key or config is available."""
367
367
  from nextmv.cli.mcp.server import _get_client
368
368
 
@@ -64,6 +64,12 @@ configuration:
64
64
  control_type: select
65
65
  hidden_from:
66
66
  - operator
67
+ - name: a local only parameter
68
+ option_type: string
69
+ default: local_default
70
+ description: a local only description
71
+ required: false
72
+ local_only: true
67
73
  content:
68
74
  format: "multi-file"
69
75
  multi-file:
@@ -189,7 +189,7 @@ class TestManifest(unittest.TestCase):
189
189
  def test_extract_options(self):
190
190
  manifest = Manifest.from_yaml("tests/cloud")
191
191
  options = manifest.extract_options(should_parse=False)
192
- self.assertEqual(len(options.options), 5)
192
+ self.assertEqual(len(options.options), 6)
193
193
 
194
194
  found = {
195
195
  "string": False,
@@ -500,6 +500,57 @@ class TestManifestOption(unittest.TestCase):
500
500
  self.assertEqual(option.required, manifest_option.required)
501
501
 
502
502
 
503
+ class TestManifestOptionLocalOnly(unittest.TestCase):
504
+ def test_local_only_defaults_to_false(self):
505
+ option = ManifestOption(name="my_option", option_type="string", default="val")
506
+ self.assertFalse(option.local_only)
507
+
508
+ def test_local_only_can_be_set_to_true(self):
509
+ option = ManifestOption(name="my_option", option_type="int", default=0, local_only=True)
510
+ self.assertTrue(option.local_only)
511
+
512
+ def test_required_and_local_only_raises(self):
513
+ with self.assertRaises(ValueError) as ctx:
514
+ ManifestOption(name="my_option", option_type="string", default="val", required=True, local_only=True)
515
+ self.assertIn("my_option", str(ctx.exception))
516
+ self.assertIn("required", str(ctx.exception).lower())
517
+ self.assertIn("local only", str(ctx.exception).lower())
518
+
519
+ def test_local_only_round_trips_through_dict(self):
520
+ original = ManifestOption(name="my_option", option_type="float", default=1.5, local_only=True)
521
+ as_dict = original.to_dict()
522
+ self.assertTrue(as_dict["local_only"])
523
+ restored = ManifestOption.from_dict(as_dict)
524
+ self.assertTrue(restored.local_only)
525
+
526
+ def test_non_local_only_round_trips_through_dict(self):
527
+ original = ManifestOption(name="my_option", option_type="bool", default=False, local_only=False)
528
+ as_dict = original.to_dict()
529
+ self.assertFalse(as_dict["local_only"])
530
+ restored = ManifestOption.from_dict(as_dict)
531
+ self.assertFalse(restored.local_only)
532
+
533
+ def test_local_only_loaded_from_yaml(self):
534
+ manifest = Manifest.from_yaml("tests/cloud")
535
+ items = manifest.configuration.options.items
536
+ local_only_items = [item for item in items if item.local_only]
537
+ self.assertEqual(len(local_only_items), 1)
538
+ item = local_only_items[0]
539
+ self.assertEqual(item.name, "a local only parameter")
540
+ self.assertEqual(item.option_type, "string")
541
+ self.assertEqual(item.default, "local_default")
542
+ self.assertFalse(item.required)
543
+ self.assertTrue(item.local_only)
544
+
545
+ def test_other_options_are_not_local_only(self):
546
+ manifest = Manifest.from_yaml("tests/cloud")
547
+ items = manifest.configuration.options.items
548
+ non_local_only_items = [item for item in items if not item.local_only]
549
+ # All items except the one explicitly marked local_only should have local_only=False.
550
+ for item in non_local_only_items:
551
+ self.assertFalse(item.local_only, msg=f"Option '{item.name}' should not be local_only")
552
+
553
+
503
554
  class TestWriteSampleManifest(unittest.TestCase):
504
555
  def test_writes_python_manifest(self):
505
556
  with tempfile.TemporaryDirectory() as dirpath:
@@ -1 +0,0 @@
1
- __version__ = "v1.4.1.dev3"
File without changes
File without changes
File without changes
File without changes
File without changes