nextmv 1.6.3.dev0__tar.gz → 1.7.0__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 (397) hide show
  1. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/PKG-INFO +1 -1
  2. nextmv-1.7.0/nextmv/__about__.py +1 -0
  3. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/__init__.py +2 -2
  4. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/mcp/tools/_helpers.py +10 -10
  5. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cloud/application/__init__.py +2 -2
  6. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cloud/package.py +2 -2
  7. nextmv-1.7.0/nextmv/content_format.py +122 -0
  8. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/input.py +226 -107
  9. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/local/application.py +195 -21
  10. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/local/executor.py +64 -71
  11. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/manifest.py +146 -17
  12. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/model.py +1 -61
  13. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/output.py +982 -213
  14. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/binary_multi-file_app.yaml +3 -3
  15. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/go_multi-file_app.yaml +3 -3
  16. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/go_multi-file_hello-world/app.yaml +2 -2
  17. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/go_multi-file_hello-world/main.go +1 -1
  18. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/java_multi-file_app.yaml +3 -3
  19. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/java_multi-file_hello-world/Main.java +1 -1
  20. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/java_multi-file_hello-world/app.yaml +2 -2
  21. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/python_json_class-assign/main.py +5 -7
  22. {nextmv-1.6.3.dev0/nextmv/templates/python_multi-file_class-assign → nextmv-1.7.0/nextmv/templates/python_json_class-assign}/requirements.txt +1 -1
  23. {nextmv-1.6.3.dev0/nextmv/templates/python_multi-file_demand-alloc → nextmv-1.7.0/nextmv/templates/python_json_demand-alloc}/allocation/main.py +48 -42
  24. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/python_json_demand-alloc/allocation/requirements.txt +1 -1
  25. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/python_json_demand-alloc/workflow/main.py +2 -3
  26. {nextmv-1.6.3.dev0/nextmv/templates/python_multi-file_demand-alloc → nextmv-1.7.0/nextmv/templates/python_json_demand-alloc}/workflow/requirements.txt +1 -1
  27. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/python_json_hello-world/main.py +3 -8
  28. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/python_json_hello-world/requirements.txt +1 -1
  29. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/python_multi-file_app.yaml +3 -3
  30. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/python_multi-file_class-assign/app.yaml +3 -3
  31. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/python_multi-file_class-assign/main.py +4 -10
  32. {nextmv-1.6.3.dev0/nextmv/templates/python_json_class-assign → nextmv-1.7.0/nextmv/templates/python_multi-file_class-assign}/requirements.txt +1 -1
  33. {nextmv-1.6.3.dev0/nextmv/templates/python_json_demand-alloc → nextmv-1.7.0/nextmv/templates/python_multi-file_demand-alloc}/allocation/main.py +30 -27
  34. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/python_multi-file_demand-alloc/allocation/requirements.txt +1 -1
  35. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/python_multi-file_demand-alloc/workflow/app.yaml +3 -3
  36. {nextmv-1.6.3.dev0/nextmv/templates/python_json_demand-alloc → nextmv-1.7.0/nextmv/templates/python_multi-file_demand-alloc}/workflow/requirements.txt +1 -1
  37. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/python_multi-file_hello-world/app.yaml +3 -3
  38. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/python_multi-file_hello-world/main.py +2 -11
  39. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/python_multi-file_hello-world/requirements.txt +1 -1
  40. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/tests/cli/test_mcp.py +5 -5
  41. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/tests/cloud/app.yaml +1 -1
  42. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/tests/local/test_executor.py +41 -77
  43. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/tests/test_input.py +544 -2
  44. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/tests/test_manifest.py +1 -1
  45. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/tests/test_output.py +1054 -20
  46. nextmv-1.6.3.dev0/nextmv/__about__.py +0 -1
  47. nextmv-1.6.3.dev0/nextmv/content_format.py +0 -53
  48. nextmv-1.6.3.dev0/nextmv/default_app/README.md +0 -32
  49. nextmv-1.6.3.dev0/nextmv/default_app/app.yaml +0 -21
  50. nextmv-1.6.3.dev0/nextmv/default_app/main.py +0 -35
  51. nextmv-1.6.3.dev0/nextmv/default_app/requirements.txt +0 -2
  52. nextmv-1.6.3.dev0/nextmv/default_app/src/visuals.py +0 -36
  53. nextmv-1.6.3.dev0/nextmv/templates/python_json_hello-world/.gitignore +0 -1
  54. nextmv-1.6.3.dev0/nextmv/templates/python_multi-file_hello-world/inputs/input.json +0 -5
  55. nextmv-1.6.3.dev0/tests/test_entrypoint/__init__.py +0 -0
  56. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/.gitignore +0 -0
  57. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/.python-version +0 -0
  58. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/CONTRIBUTING.md +0 -0
  59. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/LICENSE +0 -0
  60. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/README.md +0 -0
  61. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/__entrypoint__.py +0 -0
  62. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/_serialization.py +0 -0
  63. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/account.py +0 -0
  64. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/base_model.py +0 -0
  65. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/__init__.py +0 -0
  66. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/__init__.py +0 -0
  67. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/acceptance/__init__.py +0 -0
  68. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/acceptance/create.py +0 -0
  69. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/acceptance/delete.py +0 -0
  70. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/acceptance/get.py +0 -0
  71. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/acceptance/list.py +0 -0
  72. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/acceptance/update.py +0 -0
  73. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/account/__init__.py +0 -0
  74. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/account/create.py +0 -0
  75. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/account/delete.py +0 -0
  76. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/account/get.py +0 -0
  77. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/account/update.py +0 -0
  78. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/app/__init__.py +0 -0
  79. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/app/create.py +0 -0
  80. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/app/delete.py +0 -0
  81. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/app/exists.py +0 -0
  82. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/app/get.py +0 -0
  83. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/app/list.py +0 -0
  84. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/app/push.py +0 -0
  85. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/app/update.py +0 -0
  86. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/batch/__init__.py +0 -0
  87. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/batch/create.py +0 -0
  88. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/batch/delete.py +0 -0
  89. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/batch/get.py +0 -0
  90. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/batch/list.py +0 -0
  91. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/batch/metadata.py +0 -0
  92. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/batch/update.py +0 -0
  93. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/data/__init__.py +0 -0
  94. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/data/upload.py +0 -0
  95. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/ensemble/__init__.py +0 -0
  96. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/ensemble/create.py +0 -0
  97. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/ensemble/delete.py +0 -0
  98. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/ensemble/get.py +0 -0
  99. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/ensemble/list.py +0 -0
  100. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/ensemble/update.py +0 -0
  101. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/input_set/__init__.py +0 -0
  102. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/input_set/create.py +0 -0
  103. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/input_set/delete.py +0 -0
  104. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/input_set/get.py +0 -0
  105. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/input_set/list.py +0 -0
  106. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/input_set/update.py +0 -0
  107. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/instance/__init__.py +0 -0
  108. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/instance/create.py +0 -0
  109. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/instance/delete.py +0 -0
  110. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/instance/exists.py +0 -0
  111. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/instance/get.py +0 -0
  112. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/instance/list.py +0 -0
  113. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/instance/update.py +0 -0
  114. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/managed_input/__init__.py +0 -0
  115. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/managed_input/create.py +0 -0
  116. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/managed_input/delete.py +0 -0
  117. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/managed_input/get.py +0 -0
  118. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/managed_input/list.py +0 -0
  119. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/managed_input/update.py +0 -0
  120. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/marketplace/__init__.py +0 -0
  121. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/marketplace/app/__init__.py +0 -0
  122. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/marketplace/app/create.py +0 -0
  123. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/marketplace/app/get.py +0 -0
  124. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/marketplace/app/list.py +0 -0
  125. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/marketplace/app/update.py +0 -0
  126. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/marketplace/subscription/__init__.py +0 -0
  127. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/marketplace/subscription/create.py +0 -0
  128. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/marketplace/subscription/delete.py +0 -0
  129. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/marketplace/subscription/get.py +0 -0
  130. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/marketplace/subscription/list.py +0 -0
  131. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/marketplace/version/__init__.py +0 -0
  132. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/marketplace/version/create.py +0 -0
  133. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/marketplace/version/get.py +0 -0
  134. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/marketplace/version/list.py +0 -0
  135. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/marketplace/version/update.py +0 -0
  136. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/run/__init__.py +0 -0
  137. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/run/cancel.py +0 -0
  138. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/run/create.py +0 -0
  139. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/run/delete.py +0 -0
  140. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/run/get.py +0 -0
  141. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/run/input.py +0 -0
  142. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/run/list.py +0 -0
  143. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/run/logs.py +0 -0
  144. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/run/metadata.py +0 -0
  145. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/run/track.py +0 -0
  146. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/scenario/__init__.py +0 -0
  147. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/scenario/create.py +0 -0
  148. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/scenario/delete.py +0 -0
  149. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/scenario/get.py +0 -0
  150. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/scenario/list.py +0 -0
  151. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/scenario/metadata.py +0 -0
  152. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/scenario/update.py +0 -0
  153. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/secrets/__init__.py +0 -0
  154. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/secrets/create.py +0 -0
  155. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/secrets/delete.py +0 -0
  156. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/secrets/get.py +0 -0
  157. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/secrets/list.py +0 -0
  158. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/secrets/update.py +0 -0
  159. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/shadow/__init__.py +0 -0
  160. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/shadow/create.py +0 -0
  161. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/shadow/delete.py +0 -0
  162. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/shadow/get.py +0 -0
  163. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/shadow/list.py +0 -0
  164. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/shadow/metadata.py +0 -0
  165. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/shadow/start.py +0 -0
  166. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/shadow/stop.py +0 -0
  167. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/shadow/update.py +0 -0
  168. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/sso/__init__.py +0 -0
  169. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/sso/create.py +0 -0
  170. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/sso/delete.py +0 -0
  171. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/sso/disable.py +0 -0
  172. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/sso/domain/__init__.py +0 -0
  173. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/sso/domain/delete.py +0 -0
  174. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/sso/enable.py +0 -0
  175. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/sso/get.py +0 -0
  176. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/sso/update.py +0 -0
  177. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/switchback/__init__.py +0 -0
  178. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/switchback/create.py +0 -0
  179. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/switchback/delete.py +0 -0
  180. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/switchback/get.py +0 -0
  181. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/switchback/list.py +0 -0
  182. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/switchback/metadata.py +0 -0
  183. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/switchback/start.py +0 -0
  184. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/switchback/stop.py +0 -0
  185. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/switchback/update.py +0 -0
  186. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/upload/__init__.py +0 -0
  187. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/upload/create.py +0 -0
  188. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/version/__init__.py +0 -0
  189. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/version/create.py +0 -0
  190. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/version/delete.py +0 -0
  191. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/version/exists.py +0 -0
  192. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/version/get.py +0 -0
  193. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/version/list.py +0 -0
  194. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/cloud/version/update.py +0 -0
  195. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/community/__init__.py +0 -0
  196. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/community/clone.py +0 -0
  197. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/community/list.py +0 -0
  198. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/configuration/__init__.py +0 -0
  199. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/configuration/config.py +0 -0
  200. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/configuration/create.py +0 -0
  201. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/configuration/delete.py +0 -0
  202. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/configuration/list.py +0 -0
  203. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/init.py +0 -0
  204. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/local/__init__.py +0 -0
  205. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/local/app/__init__.py +0 -0
  206. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/local/app/delete.py +0 -0
  207. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/local/app/get.py +0 -0
  208. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/local/app/list.py +0 -0
  209. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/local/app/register.py +0 -0
  210. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/local/app/registered.py +0 -0
  211. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/local/app/sync.py +0 -0
  212. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/local/app/update.py +0 -0
  213. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/local/run/__init__.py +0 -0
  214. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/local/run/create.py +0 -0
  215. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/local/run/get.py +0 -0
  216. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/local/run/input.py +0 -0
  217. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/local/run/list.py +0 -0
  218. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/local/run/logs.py +0 -0
  219. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/local/run/metadata.py +0 -0
  220. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/local/run/visuals.py +0 -0
  221. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/main.py +0 -0
  222. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/manifest/__init__.py +0 -0
  223. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/manifest/init.py +0 -0
  224. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/manifest/validate.py +0 -0
  225. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/mcp/__init__.py +0 -0
  226. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/mcp/serve.py +0 -0
  227. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/mcp/server.py +0 -0
  228. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/mcp/tools/WORKFLOW.md +0 -0
  229. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/mcp/tools/__init__.py +0 -0
  230. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/mcp/tools/acceptance.py +0 -0
  231. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/mcp/tools/account.py +0 -0
  232. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/mcp/tools/app.py +0 -0
  233. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/mcp/tools/batch.py +0 -0
  234. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/mcp/tools/community.py +0 -0
  235. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/mcp/tools/ensemble.py +0 -0
  236. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/mcp/tools/guide.py +0 -0
  237. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/mcp/tools/input_set.py +0 -0
  238. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/mcp/tools/instance.py +0 -0
  239. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/mcp/tools/local.py +0 -0
  240. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/mcp/tools/managed_input.py +0 -0
  241. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/mcp/tools/profile.py +0 -0
  242. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/mcp/tools/run.py +0 -0
  243. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/mcp/tools/scenario.py +0 -0
  244. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/mcp/tools/secrets.py +0 -0
  245. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/mcp/tools/shadow.py +0 -0
  246. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/mcp/tools/sso.py +0 -0
  247. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/mcp/tools/switchback.py +0 -0
  248. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/mcp/tools/version.py +0 -0
  249. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/message.py +0 -0
  250. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/options.py +0 -0
  251. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cli/version.py +0 -0
  252. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cloud/__init__.py +0 -0
  253. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cloud/acceptance_test.py +0 -0
  254. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cloud/account.py +0 -0
  255. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cloud/application/_acceptance.py +0 -0
  256. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cloud/application/_batch_scenario.py +0 -0
  257. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cloud/application/_ensemble.py +0 -0
  258. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cloud/application/_input_set.py +0 -0
  259. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cloud/application/_instance.py +0 -0
  260. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cloud/application/_managed_input.py +0 -0
  261. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cloud/application/_run.py +0 -0
  262. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cloud/application/_secrets.py +0 -0
  263. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cloud/application/_shadow.py +0 -0
  264. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cloud/application/_switchback.py +0 -0
  265. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cloud/application/_utils.py +0 -0
  266. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cloud/application/_version.py +0 -0
  267. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cloud/assets.py +0 -0
  268. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cloud/batch_experiment.py +0 -0
  269. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cloud/client.py +0 -0
  270. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cloud/community.py +0 -0
  271. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cloud/ensemble.py +0 -0
  272. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cloud/input_set.py +0 -0
  273. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cloud/instance.py +0 -0
  274. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cloud/integration.py +0 -0
  275. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cloud/marketplace.py +0 -0
  276. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cloud/scenario.py +0 -0
  277. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cloud/secrets.py +0 -0
  278. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cloud/shadow.py +0 -0
  279. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cloud/sso.py +0 -0
  280. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cloud/switchback.py +0 -0
  281. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cloud/url.py +0 -0
  282. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/cloud/version.py +0 -0
  283. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/deprecated.py +0 -0
  284. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/local/__init__.py +0 -0
  285. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/local/geojson_handler.py +0 -0
  286. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/local/local.py +0 -0
  287. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/local/plotly_handler.py +0 -0
  288. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/local/registry.py +0 -0
  289. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/local/runner.py +0 -0
  290. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/logger.py +0 -0
  291. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/options.py +0 -0
  292. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/polling.py +0 -0
  293. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/run.py +0 -0
  294. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/safe.py +0 -0
  295. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/status.py +0 -0
  296. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/binary_json_app.yaml +0 -0
  297. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/go_json_app.yaml +0 -0
  298. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/go_json_hello-world/.gitignore +0 -0
  299. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/go_json_hello-world/README.md +0 -0
  300. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/go_json_hello-world/app.yaml +0 -0
  301. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/go_json_hello-world/go.mod +0 -0
  302. {nextmv-1.6.3.dev0/nextmv/default_app → nextmv-1.7.0/nextmv/templates/go_json_hello-world}/input.json +0 -0
  303. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/go_json_hello-world/main.go +0 -0
  304. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/go_multi-file_hello-world/.gitignore +0 -0
  305. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/go_multi-file_hello-world/README.md +0 -0
  306. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/go_multi-file_hello-world/go.mod +0 -0
  307. {nextmv-1.6.3.dev0/nextmv/templates/go_json_hello-world → nextmv-1.7.0/nextmv/templates/go_multi-file_hello-world/inputs}/input.json +0 -0
  308. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/java_json_app.yaml +0 -0
  309. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/java_json_hello-world/.gitignore +0 -0
  310. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/java_json_hello-world/Main.java +0 -0
  311. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/java_json_hello-world/README.md +0 -0
  312. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/java_json_hello-world/app.yaml +0 -0
  313. {nextmv-1.6.3.dev0/nextmv/templates/go_multi-file_hello-world/inputs → nextmv-1.7.0/nextmv/templates/java_json_hello-world}/input.json +0 -0
  314. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/java_json_hello-world/pom.xml +0 -0
  315. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/java_multi-file_hello-world/.gitignore +0 -0
  316. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/java_multi-file_hello-world/README.md +0 -0
  317. {nextmv-1.6.3.dev0/nextmv/templates/java_json_hello-world → nextmv-1.7.0/nextmv/templates/java_multi-file_hello-world/inputs}/input.json +0 -0
  318. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/java_multi-file_hello-world/pom.xml +0 -0
  319. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/python_json_app.yaml +0 -0
  320. {nextmv-1.6.3.dev0/nextmv/default_app → nextmv-1.7.0/nextmv/templates/python_json_class-assign}/.gitignore +0 -0
  321. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/python_json_class-assign/README.md +0 -0
  322. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/python_json_class-assign/app.yaml +0 -0
  323. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/python_json_class-assign/input.json +0 -0
  324. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/python_json_class-assign/visualizations.py +0 -0
  325. {nextmv-1.6.3.dev0/nextmv/templates/python_json_class-assign → nextmv-1.7.0/nextmv/templates/python_json_demand-alloc}/.gitignore +0 -0
  326. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/python_json_demand-alloc/README.md +0 -0
  327. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/python_json_demand-alloc/allocation/README.md +0 -0
  328. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/python_json_demand-alloc/allocation/app.yaml +0 -0
  329. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/python_json_demand-alloc/allocation/input.json +0 -0
  330. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/python_json_demand-alloc/allocation/visuals.py +0 -0
  331. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/python_json_demand-alloc/workflow/README.md +0 -0
  332. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/python_json_demand-alloc/workflow/app.yaml +0 -0
  333. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/python_json_demand-alloc/workflow/input.json +0 -0
  334. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/python_json_demand-alloc/workflow/visuals.py +0 -0
  335. {nextmv-1.6.3.dev0/nextmv/templates/python_json_demand-alloc → nextmv-1.7.0/nextmv/templates/python_json_hello-world}/.gitignore +0 -0
  336. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/python_json_hello-world/README.md +0 -0
  337. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/python_json_hello-world/app.yaml +0 -0
  338. {nextmv-1.6.3.dev0/nextmv/templates/java_multi-file_hello-world/inputs → nextmv-1.7.0/nextmv/templates/python_json_hello-world}/input.json +0 -0
  339. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/python_multi-file_class-assign/.gitignore +0 -0
  340. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/python_multi-file_class-assign/README.md +0 -0
  341. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/python_multi-file_class-assign/inputs/input.json +0 -0
  342. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/python_multi-file_class-assign/visualizations.py +0 -0
  343. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/python_multi-file_demand-alloc/README.md +0 -0
  344. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/python_multi-file_demand-alloc/allocation/README.md +0 -0
  345. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/python_multi-file_demand-alloc/allocation/app.yaml +0 -0
  346. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/python_multi-file_demand-alloc/allocation/input.json +0 -0
  347. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/python_multi-file_demand-alloc/allocation/visuals.py +0 -0
  348. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/python_multi-file_demand-alloc/workflow/.gitignore +0 -0
  349. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/python_multi-file_demand-alloc/workflow/README.md +0 -0
  350. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/python_multi-file_demand-alloc/workflow/inputs/input.json +0 -0
  351. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/python_multi-file_demand-alloc/workflow/main.py +0 -0
  352. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/python_multi-file_demand-alloc/workflow/visuals.py +0 -0
  353. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/python_multi-file_hello-world/.gitignore +0 -0
  354. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/nextmv/templates/python_multi-file_hello-world/README.md +0 -0
  355. {nextmv-1.6.3.dev0/nextmv/templates/python_json_hello-world → nextmv-1.7.0/nextmv/templates/python_multi-file_hello-world/inputs}/input.json +0 -0
  356. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/pyproject.toml +0 -0
  357. {nextmv-1.6.3.dev0/nextmv/default_app/src → nextmv-1.7.0/tests}/__init__.py +0 -0
  358. {nextmv-1.6.3.dev0/tests → nextmv-1.7.0/tests/cli}/__init__.py +0 -0
  359. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/tests/cli/test_configuration.py +0 -0
  360. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/tests/cli/test_main.py +0 -0
  361. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/tests/cli/test_version.py +0 -0
  362. {nextmv-1.6.3.dev0/tests/cli → nextmv-1.7.0/tests/cloud}/__init__.py +0 -0
  363. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/tests/cloud/test_client.py +0 -0
  364. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/tests/cloud/test_instance.py +0 -0
  365. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/tests/cloud/test_package.py +0 -0
  366. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/tests/cloud/test_scenario.py +0 -0
  367. {nextmv-1.6.3.dev0/tests/cloud → nextmv-1.7.0/tests/integration}/__init__.py +0 -0
  368. {nextmv-1.6.3.dev0/tests/integration → nextmv-1.7.0/tests/integration/cloud}/__init__.py +0 -0
  369. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/tests/integration/cloud/test_integration_cloud.py +0 -0
  370. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/tests/integration/cloud/test_integration_marketplace.py +0 -0
  371. {nextmv-1.6.3.dev0/tests/integration/cloud → nextmv-1.7.0/tests/local}/__init__.py +0 -0
  372. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/tests/local/test_application.py +0 -0
  373. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/tests/local/test_registry.py +0 -0
  374. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/tests/local/test_runner.py +0 -0
  375. {nextmv-1.6.3.dev0/tests/local → nextmv-1.7.0/tests/scripts}/__init__.py +0 -0
  376. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/tests/scripts/options1.py +0 -0
  377. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/tests/scripts/options2.py +0 -0
  378. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/tests/scripts/options3.py +0 -0
  379. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/tests/scripts/options4.py +0 -0
  380. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/tests/scripts/options5.py +0 -0
  381. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/tests/scripts/options6.py +0 -0
  382. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/tests/scripts/options7.py +0 -0
  383. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/tests/test_base_model.py +0 -0
  384. {nextmv-1.6.3.dev0/tests/scripts → nextmv-1.7.0/tests/test_entrypoint}/__init__.py +0 -0
  385. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/tests/test_entrypoint/test_entrypoint.py +0 -0
  386. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/tests/test_inputs/test_data.csv +0 -0
  387. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/tests/test_inputs/test_data.json +0 -0
  388. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/tests/test_inputs/test_data.txt +0 -0
  389. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/tests/test_logger.py +0 -0
  390. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/tests/test_model.py +0 -0
  391. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/tests/test_options.py +0 -0
  392. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/tests/test_polling.py +0 -0
  393. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/tests/test_run.py +0 -0
  394. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/tests/test_safe.py +0 -0
  395. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/tests/test_serialization.py +0 -0
  396. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/tests/test_version.py +0 -0
  397. {nextmv-1.6.3.dev0 → nextmv-1.7.0}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nextmv
3
- Version: 1.6.3.dev0
3
+ Version: 1.7.0
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.7.0"
@@ -5,9 +5,9 @@ from .account import AccountMemberRole as AccountMemberRole
5
5
  from .base_model import BaseModel as BaseModel
6
6
  from .base_model import from_dict as from_dict
7
7
  from .content_format import ContentFormat as ContentFormat
8
+ from .content_format import InputFormat as InputFormat
8
9
  from .input import DataFile as DataFile
9
10
  from .input import Input as Input
10
- from .input import InputFormat as InputFormat
11
11
  from .input import InputLoader as InputLoader
12
12
  from .input import LocalInputLoader as LocalInputLoader
13
13
  from .input import csv_data_file as csv_data_file
@@ -27,11 +27,11 @@ from .manifest import ManifestPythonArch as ManifestPythonArch
27
27
  from .manifest import ManifestPythonModel as ManifestPythonModel
28
28
  from .manifest import ManifestRuntime as ManifestRuntime
29
29
  from .manifest import ManifestType as ManifestType
30
+ from .manifest import ModelConfiguration as ModelConfiguration
30
31
  from .manifest import default_python_manifest as default_python_manifest
31
32
  from .manifest import find_files as find_files
32
33
  from .manifest import initialize_manifest as initialize_manifest
33
34
  from .model import Model as Model
34
- from .model import ModelConfiguration as ModelConfiguration
35
35
  from .options import Option as Option
36
36
  from .options import Options as Options
37
37
  from .output import Asset as Asset
@@ -9,7 +9,7 @@ from typing import Any
9
9
  from nextmv import local
10
10
  from nextmv.cloud import Application, Client
11
11
  from nextmv.content_format import ContentFormat
12
- from nextmv.local.executor import process_run_visuals
12
+ from nextmv.local.executor import _process_run_visuals
13
13
  from nextmv.local.local import LOGS_FILE, LOGS_KEY
14
14
  from nextmv.logger import log
15
15
  from nextmv.output import ASSETS_KEY, METRICS_KEY, OUTPUTS_KEY, SOLUTIONS_KEY, STATISTICS_KEY
@@ -239,9 +239,9 @@ def _extract_cloud_run_outputs(result_dict: dict[str, Any], endpoint: str, run_i
239
239
  Mirrors the local run ``outputs/`` directory structure:
240
240
 
241
241
  * ``outputs/solutions/solution.json`` — the full output dict (matches local)
242
- * ``outputs/metrics/metrics.json`` — raw metrics value
243
- * ``outputs/statistics/statistics.json`` — wrapped as ``{"statistics": ...}``
244
- * ``outputs/assets/assets.json`` — wrapped as ``{"assets": ...}``
242
+ * ``outputs/metrics.json`` — raw metrics value
243
+ * ``outputs/statistics.json`` — wrapped as ``{"statistics": ...}``
244
+ * ``outputs/assets.json`` — wrapped as ``{"assets": ...}``
245
245
 
246
246
  Skipped when *output* is not a dict with inline data (e.g. csv-archive
247
247
  results where the SDK already extracted files via ``output_dir_path``).
@@ -261,15 +261,15 @@ def _extract_cloud_run_outputs(result_dict: dict[str, Any], endpoint: str, run_i
261
261
  with open(path, "w") as fh:
262
262
  json.dump(output, fh, indent=2)
263
263
 
264
- # metrics → outputs/metrics/metrics.json (raw, matching local)
264
+ # metrics → outputs/metrics.json (raw, matching local)
265
265
  metrics = output.get(METRICS_KEY)
266
266
  if metrics:
267
- path = os.path.join(outputs_dir, METRICS_KEY, f"{METRICS_KEY}.json")
267
+ path = os.path.join(outputs_dir, f"{METRICS_KEY}.json")
268
268
  os.makedirs(os.path.dirname(path), exist_ok=True)
269
269
  with open(path, "w") as fh:
270
270
  json.dump(metrics, fh, indent=2)
271
271
 
272
- # statistics → outputs/statistics/statistics.json (wrapped, matching local)
272
+ # statistics → outputs/statistics.json (wrapped, matching local)
273
273
  statistics = output.get(STATISTICS_KEY)
274
274
  if statistics:
275
275
  path = os.path.join(outputs_dir, STATISTICS_KEY, f"{STATISTICS_KEY}.json")
@@ -277,17 +277,17 @@ def _extract_cloud_run_outputs(result_dict: dict[str, Any], endpoint: str, run_i
277
277
  with open(path, "w") as fh:
278
278
  json.dump({STATISTICS_KEY: statistics}, fh, indent=2)
279
279
 
280
- # assets → outputs/assets/assets.json (wrapped, matching local)
280
+ # assets → outputs/assets.json (wrapped, matching local)
281
281
  assets = output.get(ASSETS_KEY)
282
282
  if assets:
283
- path = os.path.join(outputs_dir, ASSETS_KEY, f"{ASSETS_KEY}.json")
283
+ path = os.path.join(outputs_dir, f"{ASSETS_KEY}.json")
284
284
  os.makedirs(os.path.dirname(path), exist_ok=True)
285
285
  with open(path, "w") as fh:
286
286
  json.dump({ASSETS_KEY: assets}, fh, indent=2)
287
287
 
288
288
  # Generate visuals from assets (Plotly/GeoJSON → HTML), matching local.
289
289
  try:
290
- process_run_visuals(run_dir=run_dir, outputs_dir=outputs_dir)
290
+ _process_run_visuals(run_dir=run_dir, outputs_dir=outputs_dir)
291
291
  except Exception as exc:
292
292
  log(f"Visual generation failed for run {run_id}: {exc}")
293
293
 
@@ -48,8 +48,8 @@ from nextmv.cloud.application._version import ApplicationVersionMixin
48
48
  from nextmv.cloud.client import Client
49
49
  from nextmv.cloud.url import UploadURL
50
50
  from nextmv.logger import log
51
- from nextmv.manifest import Manifest
52
- from nextmv.model import Model, ModelConfiguration
51
+ from nextmv.manifest import Manifest, ModelConfiguration
52
+ from nextmv.model import Model
53
53
  from nextmv.safe import safe_id
54
54
 
55
55
 
@@ -12,8 +12,8 @@ import tempfile
12
12
  import rich
13
13
 
14
14
  from nextmv.logger import log
15
- from nextmv.manifest import MANIFEST_FILE_NAME, Manifest, ManifestBuild, ManifestType, find_files
16
- from nextmv.model import Model, ModelConfiguration, _cleanup_python_model
15
+ from nextmv.manifest import MANIFEST_FILE_NAME, Manifest, ManifestBuild, ManifestType, ModelConfiguration, find_files
16
+ from nextmv.model import Model, _cleanup_python_model
17
17
 
18
18
  _MANDATORY_FILES_PER_TYPE = {
19
19
  ManifestType.PYTHON: ["main.py"],
@@ -0,0 +1,122 @@
1
+ """
2
+ Module for handling content formats of an app's input and output.
3
+
4
+ Classes
5
+ -------
6
+ ContentFormat
7
+ Format of the content of an app's input and output. This is used to specify
8
+ how the app should read and write data.
9
+ """
10
+
11
+ from enum import Enum
12
+
13
+
14
+ class ContentFormat(str, Enum):
15
+ """
16
+ Format of the content of an app's input and output. This is used to specify
17
+ how the app should read and write data.
18
+
19
+ You can import the `ContentFormat` class directly from `nextmv`:
20
+
21
+ ```python
22
+ from nextmv import ContentFormat
23
+ ```
24
+
25
+ Attributes
26
+ ----------
27
+ JSON : str
28
+ JSON format, utf-8 encoded.
29
+ MULTI_FILE : str
30
+ Multi-file format, used for loading multiple files in a single input.
31
+ """
32
+
33
+ JSON = "json"
34
+ """
35
+ JSON format, utf-8 encoded. JSON is read from stdin and written to stdout.
36
+ """
37
+ MULTI_FILE = "multi-file"
38
+ """
39
+ Multi-file format. Read/write one or more files from/to disk (a directory).
40
+ """
41
+
42
+ @property
43
+ def description(self) -> str:
44
+ """
45
+ A human-friendly description of the content format.
46
+ """
47
+
48
+ descriptions = {
49
+ ContentFormat.JSON: "JSON format, utf-8 encoded. JSON is read from stdin and written to stdout.",
50
+ ContentFormat.MULTI_FILE: "Multi-file format. Read/write one or more files from/to disk (a directory).",
51
+ }
52
+
53
+ return descriptions[self]
54
+
55
+
56
+ class InputFormat(str, Enum):
57
+ """
58
+ !!! warning
59
+ `InputFormat` is deprecated, use `nextmv.ContentFormat` instead.
60
+
61
+ Format of an `Input`.
62
+
63
+ You can import the `InputFormat` class directly from `nextmv`:
64
+
65
+ ```python
66
+ from nextmv import InputFormat
67
+ ```
68
+
69
+ This enum specifies the supported formats for input data.
70
+
71
+ Attributes
72
+ ----------
73
+ JSON : str
74
+ !!! warning
75
+ `InputFormat.JSON` is deprecated, use `ContentFormat.JSON` instead.
76
+
77
+ JSON format, utf-8 encoded.
78
+ TEXT : str
79
+ !!! warning
80
+ `InputFormat.TEXT` is deprecated, use `ContentFormat.MULTI_FILE` instead.
81
+
82
+ Text format, utf-8 encoded.
83
+ CSV_ARCHIVE : str
84
+ !!! warning
85
+ `InputFormat.CSV_ARCHIVE` is deprecated, use `ContentFormat.MULTI_FILE` instead.
86
+
87
+ CSV archive format: multiple CSV files.
88
+ MULTI_FILE : str
89
+ !!! warning
90
+ `InputFormat.MULTI_FILE` is deprecated, use `ContentFormat.MULTI_FILE` instead.
91
+
92
+ Multi-file format, used for loading multiple files in a single input.
93
+ """
94
+
95
+ JSON = "json"
96
+ """
97
+ !!! warning
98
+ `InputFormat.JSON` is deprecated, use `ContentFormat.JSON` instead.
99
+
100
+ JSON format, utf-8 encoded.
101
+ """
102
+ TEXT = "text"
103
+ """
104
+ !!! warning
105
+ `InputFormat.TEXT` is deprecated, use `ContentFormat.MULTI_FILE` instead.
106
+
107
+ Text format, utf-8 encoded.
108
+ """
109
+ CSV_ARCHIVE = "csv-archive"
110
+ """
111
+ !!! warning
112
+ `InputFormat.CSV_ARCHIVE` is deprecated, use `ContentFormat.MULTI_FILE` instead.
113
+
114
+ CSV archive format: multiple CSV files.
115
+ """
116
+ MULTI_FILE = "multi-file"
117
+ """
118
+ !!! warning
119
+ `InputFormat.MULTI_FILE` is deprecated, use `ContentFormat.MULTI_FILE` instead.
120
+
121
+ Multi-file format, used for loading multiple files in a single input.
122
+ """