nextmv 1.8.0.dev0__tar.gz → 1.9.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 (418) hide show
  1. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/CONTRIBUTING.md +3 -0
  2. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/PKG-INFO +1 -1
  3. nextmv-1.9.0.dev0/nextmv/__about__.py +1 -0
  4. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/__init__.py +3 -0
  5. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cache.py +20 -9
  6. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cache/delete.py +2 -2
  7. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cache/get.py +2 -1
  8. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/acceptance/create.py +2 -1
  9. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/acceptance/delete.py +2 -1
  10. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/acceptance/get.py +2 -1
  11. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/acceptance/list.py +2 -1
  12. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/acceptance/update.py +2 -1
  13. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/account/create.py +2 -1
  14. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/account/delete.py +2 -1
  15. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/account/get.py +2 -1
  16. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/account/update.py +2 -1
  17. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/app/create.py +2 -1
  18. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/app/delete.py +2 -1
  19. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/app/exists.py +2 -1
  20. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/app/get.py +2 -1
  21. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/app/list.py +2 -1
  22. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/app/push.py +2 -1
  23. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/app/update.py +2 -1
  24. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/batch/create.py +2 -1
  25. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/batch/delete.py +2 -1
  26. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/batch/get.py +2 -1
  27. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/batch/list.py +2 -1
  28. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/batch/metadata.py +2 -1
  29. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/batch/update.py +2 -1
  30. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/data/upload.py +2 -1
  31. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/ensemble/create.py +2 -1
  32. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/ensemble/delete.py +2 -1
  33. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/ensemble/get.py +2 -1
  34. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/ensemble/list.py +2 -1
  35. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/ensemble/update.py +2 -1
  36. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/input_set/create.py +2 -1
  37. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/input_set/delete.py +2 -1
  38. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/input_set/get.py +2 -1
  39. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/input_set/list.py +2 -1
  40. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/input_set/update.py +2 -1
  41. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/instance/create.py +3 -2
  42. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/instance/delete.py +2 -1
  43. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/instance/exists.py +2 -1
  44. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/instance/get.py +2 -1
  45. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/instance/list.py +2 -1
  46. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/instance/update.py +3 -2
  47. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/managed_input/create.py +2 -1
  48. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/managed_input/delete.py +2 -1
  49. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/managed_input/get.py +2 -1
  50. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/managed_input/list.py +2 -1
  51. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/managed_input/update.py +2 -1
  52. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/marketplace/app/create.py +2 -1
  53. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/marketplace/app/get.py +2 -1
  54. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/marketplace/app/list.py +2 -1
  55. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/marketplace/app/update.py +2 -1
  56. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/marketplace/subscription/create.py +2 -1
  57. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/marketplace/subscription/delete.py +2 -1
  58. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/marketplace/subscription/get.py +2 -1
  59. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/marketplace/subscription/list.py +2 -1
  60. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/marketplace/version/create.py +2 -1
  61. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/marketplace/version/get.py +2 -0
  62. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/marketplace/version/list.py +2 -1
  63. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/marketplace/version/update.py +2 -0
  64. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/run/__init__.py +4 -0
  65. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/run/cancel.py +2 -1
  66. nextmv-1.9.0.dev0/nextmv/cli/cloud/run/clone.py +421 -0
  67. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/run/create.py +82 -4
  68. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/run/delete.py +2 -1
  69. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/run/get.py +4 -3
  70. nextmv-1.9.0.dev0/nextmv/cli/cloud/run/information.py +69 -0
  71. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/run/input.py +3 -2
  72. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/run/list.py +2 -1
  73. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/run/logs.py +2 -1
  74. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/run/metadata.py +12 -3
  75. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/run/track.py +2 -1
  76. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/scenario/create.py +2 -1
  77. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/scenario/delete.py +2 -1
  78. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/scenario/get.py +2 -1
  79. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/scenario/list.py +2 -1
  80. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/scenario/metadata.py +2 -1
  81. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/scenario/update.py +2 -1
  82. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/secrets/create.py +2 -1
  83. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/secrets/delete.py +2 -1
  84. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/secrets/get.py +2 -1
  85. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/secrets/list.py +2 -1
  86. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/secrets/update.py +2 -1
  87. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/shadow/create.py +2 -1
  88. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/shadow/delete.py +2 -1
  89. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/shadow/get.py +2 -1
  90. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/shadow/list.py +2 -1
  91. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/shadow/metadata.py +2 -1
  92. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/shadow/start.py +2 -1
  93. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/shadow/stop.py +2 -1
  94. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/shadow/update.py +2 -1
  95. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/sso/create.py +2 -1
  96. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/sso/delete.py +2 -1
  97. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/sso/disable.py +2 -1
  98. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/sso/domain/delete.py +2 -1
  99. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/sso/enable.py +2 -1
  100. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/sso/get.py +2 -1
  101. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/sso/update.py +2 -1
  102. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/switchback/create.py +2 -1
  103. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/switchback/delete.py +2 -1
  104. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/switchback/get.py +2 -1
  105. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/switchback/list.py +2 -1
  106. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/switchback/metadata.py +2 -1
  107. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/switchback/start.py +2 -1
  108. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/switchback/stop.py +2 -1
  109. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/switchback/update.py +2 -1
  110. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/upload/create.py +2 -1
  111. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/version/create.py +2 -1
  112. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/version/delete.py +2 -1
  113. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/version/exists.py +2 -1
  114. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/version/get.py +2 -1
  115. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/version/list.py +2 -1
  116. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/version/update.py +2 -1
  117. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/community/clone.py +2 -1
  118. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/community/list.py +2 -1
  119. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/configuration/create.py +2 -0
  120. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/configuration/delete.py +2 -1
  121. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/configuration/list.py +2 -1
  122. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/init.py +2 -1
  123. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/local/app/delete.py +2 -1
  124. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/local/app/get.py +2 -1
  125. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/local/app/list.py +2 -0
  126. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/local/app/register.py +2 -1
  127. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/local/app/registered.py +2 -1
  128. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/local/app/sync.py +2 -1
  129. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/local/app/update.py +2 -1
  130. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/local/run/__init__.py +4 -0
  131. nextmv-1.9.0.dev0/nextmv/cli/local/run/clone.py +266 -0
  132. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/local/run/create.py +9 -4
  133. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/local/run/get.py +4 -3
  134. nextmv-1.9.0.dev0/nextmv/cli/local/run/information.py +71 -0
  135. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/local/run/input.py +3 -3
  136. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/local/run/list.py +2 -1
  137. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/local/run/logs.py +2 -1
  138. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/local/run/metadata.py +12 -3
  139. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/local/run/visuals.py +2 -1
  140. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/main.py +67 -12
  141. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/manifest/init.py +2 -0
  142. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/manifest/validate.py +2 -0
  143. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/mcp/serve.py +3 -2
  144. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/mcp/tools/local.py +5 -8
  145. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/mcp/tools/run.py +6 -8
  146. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/message.py +10 -7
  147. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/options.py +13 -0
  148. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/version.py +2 -1
  149. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cloud/application/__init__.py +54 -54
  150. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cloud/application/_run.py +771 -95
  151. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cloud/client.py +9 -4
  152. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cloud/package.py +16 -15
  153. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/deprecated.py +6 -9
  154. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/input.py +1 -2
  155. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/local/application.py +605 -38
  156. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/local/executor.py +1 -0
  157. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/local/runner.py +55 -3
  158. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/manifest.py +26 -10
  159. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/run.py +179 -27
  160. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_json_class-assign/uv.lock +3 -3
  161. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_json_demand-alloc/allocation/uv.lock +3 -3
  162. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_json_demand-alloc/workflow/uv.lock +3 -3
  163. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_json_hello-world/uv.lock +3 -3
  164. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_multi-file_class-assign/uv.lock +3 -3
  165. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_multi-file_demand-alloc/allocation/uv.lock +3 -3
  166. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_multi-file_demand-alloc/workflow/uv.lock +3 -3
  167. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_multi-file_hello-world/uv.lock +3 -3
  168. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/integration/cloud/test_integration_cloud.py +88 -2
  169. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/local/test_application.py +10 -10
  170. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/test_cache.py +6 -5
  171. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/uv.lock +9 -21
  172. nextmv-1.8.0.dev0/nextmv/__about__.py +0 -1
  173. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/.gitignore +0 -0
  174. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/.python-version +0 -0
  175. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/LICENSE +0 -0
  176. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/README.md +0 -0
  177. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/__entrypoint__.py +0 -0
  178. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/_serialization.py +0 -0
  179. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/account.py +0 -0
  180. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/base_model.py +0 -0
  181. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/__init__.py +0 -0
  182. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cache/__init__.py +0 -0
  183. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/__init__.py +0 -0
  184. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/acceptance/__init__.py +0 -0
  185. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/account/__init__.py +0 -0
  186. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/app/__init__.py +0 -0
  187. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/batch/__init__.py +0 -0
  188. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/data/__init__.py +0 -0
  189. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/ensemble/__init__.py +0 -0
  190. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/input_set/__init__.py +0 -0
  191. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/instance/__init__.py +0 -0
  192. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/managed_input/__init__.py +0 -0
  193. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/marketplace/__init__.py +0 -0
  194. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/marketplace/app/__init__.py +0 -0
  195. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/marketplace/subscription/__init__.py +0 -0
  196. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/marketplace/version/__init__.py +0 -0
  197. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/scenario/__init__.py +0 -0
  198. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/secrets/__init__.py +0 -0
  199. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/shadow/__init__.py +0 -0
  200. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/sso/__init__.py +0 -0
  201. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/sso/domain/__init__.py +0 -0
  202. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/switchback/__init__.py +0 -0
  203. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/upload/__init__.py +0 -0
  204. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/cloud/version/__init__.py +0 -0
  205. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/community/__init__.py +0 -0
  206. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/configuration/__init__.py +0 -0
  207. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/configuration/config.py +0 -0
  208. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/local/__init__.py +0 -0
  209. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/local/app/__init__.py +0 -0
  210. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/manifest/__init__.py +0 -0
  211. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/mcp/__init__.py +0 -0
  212. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/mcp/server.py +0 -0
  213. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/mcp/tools/WORKFLOW.md +0 -0
  214. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/mcp/tools/__init__.py +0 -0
  215. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/mcp/tools/_helpers.py +0 -0
  216. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/mcp/tools/acceptance.py +0 -0
  217. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/mcp/tools/account.py +0 -0
  218. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/mcp/tools/app.py +0 -0
  219. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/mcp/tools/batch.py +0 -0
  220. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/mcp/tools/community.py +0 -0
  221. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/mcp/tools/ensemble.py +0 -0
  222. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/mcp/tools/guide.py +0 -0
  223. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/mcp/tools/input_set.py +0 -0
  224. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/mcp/tools/instance.py +0 -0
  225. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/mcp/tools/managed_input.py +0 -0
  226. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/mcp/tools/profile.py +0 -0
  227. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/mcp/tools/scenario.py +0 -0
  228. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/mcp/tools/secrets.py +0 -0
  229. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/mcp/tools/shadow.py +0 -0
  230. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/mcp/tools/sso.py +0 -0
  231. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/mcp/tools/switchback.py +0 -0
  232. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cli/mcp/tools/version.py +0 -0
  233. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cloud/__init__.py +0 -0
  234. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cloud/acceptance_test.py +0 -0
  235. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cloud/account.py +0 -0
  236. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cloud/application/_acceptance.py +0 -0
  237. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cloud/application/_batch_scenario.py +0 -0
  238. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cloud/application/_ensemble.py +0 -0
  239. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cloud/application/_input_set.py +0 -0
  240. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cloud/application/_instance.py +0 -0
  241. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cloud/application/_managed_input.py +0 -0
  242. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cloud/application/_secrets.py +0 -0
  243. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cloud/application/_shadow.py +0 -0
  244. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cloud/application/_switchback.py +0 -0
  245. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cloud/application/_utils.py +0 -0
  246. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cloud/application/_version.py +0 -0
  247. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cloud/assets.py +0 -0
  248. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cloud/batch_experiment.py +0 -0
  249. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cloud/community.py +0 -0
  250. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cloud/ensemble.py +0 -0
  251. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cloud/input_set.py +0 -0
  252. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cloud/instance.py +0 -0
  253. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cloud/integration.py +0 -0
  254. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cloud/marketplace.py +0 -0
  255. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cloud/scenario.py +0 -0
  256. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cloud/secrets.py +0 -0
  257. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cloud/shadow.py +0 -0
  258. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cloud/sso.py +0 -0
  259. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cloud/switchback.py +0 -0
  260. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cloud/url.py +0 -0
  261. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/cloud/version.py +0 -0
  262. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/content_format.py +0 -0
  263. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/local/__init__.py +0 -0
  264. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/local/geojson_handler.py +0 -0
  265. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/local/local.py +0 -0
  266. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/local/plotly_handler.py +0 -0
  267. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/local/registry.py +0 -0
  268. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/logger.py +0 -0
  269. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/model.py +0 -0
  270. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/options.py +0 -0
  271. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/output.py +0 -0
  272. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/polling.py +0 -0
  273. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/safe.py +0 -0
  274. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/status.py +0 -0
  275. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/binary_json.yaml +0 -0
  276. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/binary_json_opt.yaml +0 -0
  277. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/binary_multi-file.yaml +0 -0
  278. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/binary_multi-file_opt.yaml +0 -0
  279. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/go_json.yaml +0 -0
  280. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/go_json_hello-world/.gitignore +0 -0
  281. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/go_json_hello-world/README.md +0 -0
  282. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/go_json_hello-world/app.yaml +0 -0
  283. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/go_json_hello-world/go.mod +0 -0
  284. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/go_json_hello-world/input.json +0 -0
  285. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/go_json_hello-world/main.go +0 -0
  286. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/go_json_opt.yaml +0 -0
  287. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/go_multi-file.yaml +0 -0
  288. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/go_multi-file_hello-world/.gitignore +0 -0
  289. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/go_multi-file_hello-world/README.md +0 -0
  290. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/go_multi-file_hello-world/app.yaml +0 -0
  291. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/go_multi-file_hello-world/go.mod +0 -0
  292. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/go_multi-file_hello-world/inputs/input.json +0 -0
  293. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/go_multi-file_hello-world/main.go +0 -0
  294. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/go_multi-file_opt.yaml +0 -0
  295. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/java_json.yaml +0 -0
  296. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/java_json_hello-world/.gitignore +0 -0
  297. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/java_json_hello-world/Main.java +0 -0
  298. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/java_json_hello-world/README.md +0 -0
  299. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/java_json_hello-world/app.yaml +0 -0
  300. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/java_json_hello-world/input.json +0 -0
  301. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/java_json_hello-world/pom.xml +0 -0
  302. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/java_json_opt.yaml +0 -0
  303. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/java_multi-file.yaml +0 -0
  304. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/java_multi-file_hello-world/.gitignore +0 -0
  305. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/java_multi-file_hello-world/Main.java +0 -0
  306. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/java_multi-file_hello-world/README.md +0 -0
  307. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/java_multi-file_hello-world/app.yaml +0 -0
  308. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/java_multi-file_hello-world/inputs/input.json +0 -0
  309. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/java_multi-file_hello-world/pom.xml +0 -0
  310. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/java_multi-file_opt.yaml +0 -0
  311. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_json.yaml +0 -0
  312. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_json_class-assign/.gitignore +0 -0
  313. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_json_class-assign/README.md +0 -0
  314. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_json_class-assign/app.yaml +0 -0
  315. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_json_class-assign/input.json +0 -0
  316. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_json_class-assign/main.py +0 -0
  317. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_json_class-assign/pyproject.toml +0 -0
  318. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_json_class-assign/visualizations.py +0 -0
  319. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_json_demand-alloc/.gitignore +0 -0
  320. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_json_demand-alloc/README.md +0 -0
  321. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_json_demand-alloc/allocation/README.md +0 -0
  322. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_json_demand-alloc/allocation/app.yaml +0 -0
  323. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_json_demand-alloc/allocation/input.json +0 -0
  324. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_json_demand-alloc/allocation/main.py +0 -0
  325. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_json_demand-alloc/allocation/pyproject.toml +0 -0
  326. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_json_demand-alloc/allocation/visuals.py +0 -0
  327. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_json_demand-alloc/workflow/README.md +0 -0
  328. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_json_demand-alloc/workflow/app.yaml +0 -0
  329. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_json_demand-alloc/workflow/input.json +0 -0
  330. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_json_demand-alloc/workflow/main.py +0 -0
  331. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_json_demand-alloc/workflow/pyproject.toml +0 -0
  332. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_json_demand-alloc/workflow/visuals.py +0 -0
  333. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_json_hello-world/.gitignore +0 -0
  334. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_json_hello-world/README.md +0 -0
  335. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_json_hello-world/app.yaml +0 -0
  336. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_json_hello-world/input.json +0 -0
  337. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_json_hello-world/main.py +0 -0
  338. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_json_hello-world/pyproject.toml +0 -0
  339. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_json_opt.yaml +0 -0
  340. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_multi-file.yaml +0 -0
  341. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_multi-file_class-assign/.gitignore +0 -0
  342. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_multi-file_class-assign/README.md +0 -0
  343. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_multi-file_class-assign/app.yaml +0 -0
  344. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_multi-file_class-assign/inputs/input.json +0 -0
  345. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_multi-file_class-assign/main.py +0 -0
  346. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_multi-file_class-assign/pyproject.toml +0 -0
  347. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_multi-file_class-assign/visualizations.py +0 -0
  348. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_multi-file_demand-alloc/README.md +0 -0
  349. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_multi-file_demand-alloc/allocation/README.md +0 -0
  350. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_multi-file_demand-alloc/allocation/app.yaml +0 -0
  351. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_multi-file_demand-alloc/allocation/input.json +0 -0
  352. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_multi-file_demand-alloc/allocation/main.py +0 -0
  353. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_multi-file_demand-alloc/allocation/pyproject.toml +0 -0
  354. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_multi-file_demand-alloc/allocation/visuals.py +0 -0
  355. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_multi-file_demand-alloc/workflow/.gitignore +0 -0
  356. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_multi-file_demand-alloc/workflow/README.md +0 -0
  357. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_multi-file_demand-alloc/workflow/app.yaml +0 -0
  358. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_multi-file_demand-alloc/workflow/inputs/input.json +0 -0
  359. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_multi-file_demand-alloc/workflow/main.py +0 -0
  360. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_multi-file_demand-alloc/workflow/pyproject.toml +0 -0
  361. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_multi-file_demand-alloc/workflow/visuals.py +0 -0
  362. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_multi-file_hello-world/.gitignore +0 -0
  363. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_multi-file_hello-world/README.md +0 -0
  364. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_multi-file_hello-world/app.yaml +0 -0
  365. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_multi-file_hello-world/inputs/input.json +0 -0
  366. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_multi-file_hello-world/main.py +0 -0
  367. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_multi-file_hello-world/pyproject.toml +0 -0
  368. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/templates/python_multi-file_opt.yaml +0 -0
  369. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/nextmv/uv_handler.py +0 -0
  370. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/pyproject.toml +0 -0
  371. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/__init__.py +0 -0
  372. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/cli/__init__.py +0 -0
  373. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/cli/manifest/__init__.py +0 -0
  374. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/cli/manifest/test_init.py +0 -0
  375. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/cli/test_configuration.py +0 -0
  376. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/cli/test_init_cli_call.py +0 -0
  377. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/cli/test_main.py +0 -0
  378. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/cli/test_mcp.py +0 -0
  379. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/cli/test_version.py +0 -0
  380. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/cloud/__init__.py +0 -0
  381. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/cloud/app.yaml +0 -0
  382. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/cloud/test_client.py +0 -0
  383. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/cloud/test_instance.py +0 -0
  384. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/cloud/test_package.py +0 -0
  385. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/cloud/test_scenario.py +0 -0
  386. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/integration/__init__.py +0 -0
  387. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/integration/cloud/__init__.py +0 -0
  388. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/integration/cloud/test_integration_marketplace.py +0 -0
  389. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/local/__init__.py +0 -0
  390. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/local/test_executor.py +0 -0
  391. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/local/test_registry.py +0 -0
  392. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/local/test_runner.py +0 -0
  393. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/scripts/__init__.py +0 -0
  394. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/scripts/options1.py +0 -0
  395. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/scripts/options2.py +0 -0
  396. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/scripts/options3.py +0 -0
  397. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/scripts/options4.py +0 -0
  398. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/scripts/options5.py +0 -0
  399. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/scripts/options6.py +0 -0
  400. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/scripts/options7.py +0 -0
  401. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/test_base_model.py +0 -0
  402. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/test_entrypoint/__init__.py +0 -0
  403. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/test_entrypoint/test_entrypoint.py +0 -0
  404. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/test_input.py +0 -0
  405. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/test_inputs/test_data.csv +0 -0
  406. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/test_inputs/test_data.json +0 -0
  407. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/test_inputs/test_data.txt +0 -0
  408. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/test_logger.py +0 -0
  409. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/test_manifest.py +0 -0
  410. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/test_model.py +0 -0
  411. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/test_options.py +0 -0
  412. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/test_output.py +0 -0
  413. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/test_polling.py +0 -0
  414. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/test_run.py +0 -0
  415. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/test_safe.py +0 -0
  416. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/test_serialization.py +0 -0
  417. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/test_uv_handler.py +0 -0
  418. {nextmv-1.8.0.dev0 → nextmv-1.9.0.dev0}/tests/test_version.py +0 -0
@@ -346,6 +346,9 @@ guidelines:
346
346
  ] = None,
347
347
  ```
348
348
 
349
+ - When indenting, prefer to use four spaces as opposed to a tab (`\t`) or
350
+ less/more spacing.
351
+
349
352
  #### CLI - User prompts
350
353
 
351
354
  The `message.py` file provides three interactive prompt functions: `confirmation`,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nextmv
3
- Version: 1.8.0.dev0
3
+ Version: 1.9.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/
@@ -0,0 +1 @@
1
+ __version__ = "v1.9.0.dev0"
@@ -66,12 +66,15 @@ from .run import FormatOutput as FormatOutput
66
66
  from .run import Metadata as Metadata
67
67
  from .run import MetricsIndicator as MetricsIndicator
68
68
  from .run import OptionsSummaryItem as OptionsSummaryItem
69
+ from .run import OptionSummary as OptionSummary
69
70
  from .run import Run as Run
70
71
  from .run import RunConfiguration as RunConfiguration
71
72
  from .run import RunInfoMetrics as RunInfoMetrics
72
73
  from .run import RunInformation as RunInformation
73
74
  from .run import RunInfoStatistics as RunInfoStatistics
75
+ from .run import RunIntegration as RunIntegration
74
76
  from .run import RunLog as RunLog
77
+ from .run import RunOptions as RunOptions
75
78
  from .run import RunQueuing as RunQueuing
76
79
  from .run import RunResult as RunResult
77
80
  from .run import RunTrackingMetadata as RunTrackingMetadata
@@ -33,6 +33,8 @@ _DEPS_CACHE_DIR = _CACHE_DIR / "deps"
33
33
  """Directory storing per-package dependency tarballs."""
34
34
  _CACHE_INFO_FILE = "cache_info.json"
35
35
  """Name of the metadata file stored alongside each cached entry."""
36
+ _DEP_TARBALL_NAME = "installed.tar.gz"
37
+ """Name of the per-package tarball containing installed files for a single package."""
36
38
  _MAX_DEPS = 2000
37
39
  """Maximum number of individual package tarballs to keep in the cache."""
38
40
  _MAX_DEP_BYTES = 5 * 1024**3
@@ -63,6 +65,12 @@ def get_cache() -> dict[str, Any]:
63
65
  with open(info_file) as f:
64
66
  info = json.load(f)
65
67
 
68
+ tarball = entry_dir / _DEP_TARBALL_NAME
69
+ try:
70
+ tarball_size = format_bytes(tarball.stat().st_size)
71
+ except OSError:
72
+ tarball_size = ""
73
+
66
74
  dependencies.append(
67
75
  {
68
76
  "key": entry_dir.name,
@@ -71,13 +79,14 @@ def get_cache() -> dict[str, Any]:
71
79
  "last_used_at": info.get("last_used_at", ""),
72
80
  "python_version": info.get("python_version", ""),
73
81
  "platform": info.get("platform", ""),
82
+ "size": tarball_size,
74
83
  }
75
84
  )
76
85
  except Exception:
77
86
  pass
78
87
 
79
88
  if dependencies:
80
- dependencies.sort(key=lambda d: (d["last_used_at"], d["name"], d["version"]))
89
+ dependencies.sort(key=lambda d: (d["last_used_at"], d["name"], d["version"]), reverse=True)
81
90
 
82
91
  return {
83
92
  "num_dependencies": num_deps,
@@ -100,10 +109,7 @@ def clear_cache() -> tuple[int, int]:
100
109
  return 0, 0
101
110
 
102
111
  num_deps, total_bytes = _cache_stats()
103
-
104
- if _CACHE_DIR.exists():
105
- shutil.rmtree(str(_CACHE_DIR))
106
-
112
+ shutil.rmtree(str(_CACHE_DIR))
107
113
  _create_cache()
108
114
 
109
115
  return num_deps, total_bytes
@@ -165,7 +171,7 @@ def get_cached_dep(pkg_key: str) -> Path | None:
165
171
 
166
172
  entry_dir = _DEPS_CACHE_DIR / pkg_key
167
173
  info_file = entry_dir / _CACHE_INFO_FILE
168
- installed_tar = entry_dir / "installed.tar.gz"
174
+ installed_tar = entry_dir / _DEP_TARBALL_NAME
169
175
 
170
176
  if not installed_tar.is_file() or not info_file.is_file():
171
177
  return None
@@ -225,7 +231,7 @@ def store_dep(
225
231
 
226
232
  with tempfile.TemporaryDirectory(dir=_DEPS_CACHE_DIR, prefix=f"{pkg_key}-tmp-", ignore_cleanup_errors=True) as _tmp:
227
233
  tmp_entry = Path(_tmp)
228
- shutil.copy2(str(tar_path), tmp_entry / "installed.tar.gz")
234
+ shutil.copy2(str(tar_path), tmp_entry / _DEP_TARBALL_NAME)
229
235
  now = _now_iso()
230
236
  info = {
231
237
  "created_at": now,
@@ -300,6 +306,11 @@ def _create_cache() -> None:
300
306
 
301
307
  _DEPS_CACHE_DIR.mkdir(parents=True, exist_ok=True)
302
308
 
309
+ # Remove leftover staging dirs from previous crashed/killed runs.
310
+ for entry in _DEPS_CACHE_DIR.iterdir():
311
+ if entry.is_dir() and "-tmp-" in entry.name:
312
+ shutil.rmtree(str(entry), ignore_errors=True)
313
+
303
314
 
304
315
  def _evict_lru(max_entries: int = _MAX_DEPS, max_bytes: int = _MAX_DEP_BYTES) -> int:
305
316
  """
@@ -324,7 +335,7 @@ def _evict_lru(max_entries: int = _MAX_DEPS, max_bytes: int = _MAX_DEP_BYTES) ->
324
335
 
325
336
  entries = []
326
337
  for entry_dir in _DEPS_CACHE_DIR.iterdir():
327
- if not entry_dir.is_dir():
338
+ if not entry_dir.is_dir() or "-tmp-" in entry_dir.name:
328
339
  continue
329
340
 
330
341
  info_file = entry_dir / _CACHE_INFO_FILE
@@ -414,7 +425,7 @@ def _write_json_atomic(path: Path, data: dict) -> None:
414
425
  tmp = Path(f.name)
415
426
 
416
427
  try:
417
- tmp.rename(path)
428
+ os.replace(tmp, path)
418
429
  except Exception as e:
419
430
  tmp.unlink(missing_ok=True)
420
431
  raise e
@@ -6,14 +6,14 @@ import typer
6
6
 
7
7
  from nextmv.cache import clear_cache, format_bytes
8
8
  from nextmv.cli.message import confirmation, info, success
9
- from nextmv.cli.options import YesOption
9
+ from nextmv.cli.options import DebugOption, YesOption
10
10
 
11
11
  # Set up subcommand application.
12
12
  app = typer.Typer()
13
13
 
14
14
 
15
15
  @app.command()
16
- def delete(yes: YesOption = False) -> None:
16
+ def delete(yes: YesOption = False, _: DebugOption = False) -> None:
17
17
  """
18
18
  Deletes the Nextmv cache and resets it to an empty state.
19
19
 
@@ -6,13 +6,14 @@ import typer
6
6
 
7
7
  from nextmv.cache import get_cache
8
8
  from nextmv.cli.message import print_json, success
9
+ from nextmv.cli.options import DebugOption
9
10
 
10
11
  # Set up subcommand application.
11
12
  app = typer.Typer()
12
13
 
13
14
 
14
15
  @app.command()
15
- def get() -> None:
16
+ def get(_: DebugOption = False) -> None:
16
17
  """
17
18
  Gets general information about the Nextmv cache.
18
19
 
@@ -9,7 +9,7 @@ import typer
9
9
 
10
10
  from nextmv.cli.configuration.config import build_cloud_app
11
11
  from nextmv.cli.message import enum_values, error, in_progress, print_json, success
12
- from nextmv.cli.options import AppIDOption, ProfileOption
12
+ from nextmv.cli.options import AppIDOption, DebugOption, ProfileOption
13
13
  from nextmv.cloud.acceptance_test import Comparison, Metric, MetricToleranceType, MetricType, StatisticType
14
14
  from nextmv.polling import default_polling_options
15
15
 
@@ -267,6 +267,7 @@ def create(
267
267
  rich_help_panel="Output control",
268
268
  ),
269
269
  ] = False,
270
+ _: DebugOption = False,
270
271
  profile: ProfileOption = None,
271
272
  ) -> None:
272
273
  cloud_app, _ = build_cloud_app(app_id=app_id, profile=profile)
@@ -6,7 +6,7 @@ import typer
6
6
 
7
7
  from nextmv.cli.configuration.config import build_cloud_app
8
8
  from nextmv.cli.message import confirmation, info, success
9
- from nextmv.cli.options import AcceptanceTestIDOption, AppIDOption, ProfileOption, YesOption
9
+ from nextmv.cli.options import AcceptanceTestIDOption, AppIDOption, DebugOption, ProfileOption, YesOption
10
10
 
11
11
  # Set up subcommand application.
12
12
  app = typer.Typer()
@@ -17,6 +17,7 @@ def delete(
17
17
  app_id: AppIDOption,
18
18
  acceptance_test_id: AcceptanceTestIDOption,
19
19
  yes: YesOption = False,
20
+ _: DebugOption = False,
20
21
  profile: ProfileOption = None,
21
22
  ) -> None:
22
23
  """
@@ -9,7 +9,7 @@ import typer
9
9
 
10
10
  from nextmv.cli.configuration.config import build_cloud_app
11
11
  from nextmv.cli.message import in_progress, print_json, success
12
- from nextmv.cli.options import AcceptanceTestIDOption, AppIDOption, ProfileOption
12
+ from nextmv.cli.options import AcceptanceTestIDOption, AppIDOption, DebugOption, ProfileOption
13
13
  from nextmv.polling import default_polling_options
14
14
 
15
15
  # Set up subcommand application.
@@ -45,6 +45,7 @@ def get(
45
45
  "Specify output location with --output.",
46
46
  ),
47
47
  ] = False,
48
+ _: DebugOption = False,
48
49
  profile: ProfileOption = None,
49
50
  ) -> None:
50
51
  """
@@ -9,7 +9,7 @@ import typer
9
9
 
10
10
  from nextmv.cli.configuration.config import build_cloud_app
11
11
  from nextmv.cli.message import in_progress, print_json, success
12
- from nextmv.cli.options import AppIDOption, ProfileOption
12
+ from nextmv.cli.options import AppIDOption, DebugOption, ProfileOption
13
13
 
14
14
  # Set up subcommand application.
15
15
  app = typer.Typer()
@@ -27,6 +27,7 @@ def list(
27
27
  metavar="OUTPUT_PATH",
28
28
  ),
29
29
  ] = None,
30
+ _: DebugOption = False,
30
31
  profile: ProfileOption = None,
31
32
  ) -> None:
32
33
  """
@@ -9,7 +9,7 @@ import typer
9
9
 
10
10
  from nextmv.cli.configuration.config import build_cloud_app
11
11
  from nextmv.cli.message import in_progress, print_json, success
12
- from nextmv.cli.options import AcceptanceTestIDOption, AppIDOption, ProfileOption
12
+ from nextmv.cli.options import AcceptanceTestIDOption, AppIDOption, DebugOption, ProfileOption
13
13
 
14
14
  # Set up subcommand application.
15
15
  app = typer.Typer()
@@ -46,6 +46,7 @@ def update(
46
46
  metavar="OUTPUT_PATH",
47
47
  ),
48
48
  ] = None,
49
+ _: DebugOption = False,
49
50
  profile: ProfileOption = None,
50
51
  ) -> None:
51
52
  """
@@ -7,7 +7,7 @@ from typing import Annotated
7
7
  import typer
8
8
 
9
9
  from nextmv.cli.message import in_progress, print_json
10
- from nextmv.cli.options import ProfileOption
10
+ from nextmv.cli.options import DebugOption, ProfileOption
11
11
  from nextmv.cloud.account import Account
12
12
  from nextmv.cloud.client import Client
13
13
 
@@ -36,6 +36,7 @@ def create(
36
36
  metavar="NAME",
37
37
  ),
38
38
  ],
39
+ _: DebugOption = False,
39
40
  profile: ProfileOption = None,
40
41
  ) -> None:
41
42
  """
@@ -6,7 +6,7 @@ import typer
6
6
 
7
7
  from nextmv.cli.configuration.config import build_account
8
8
  from nextmv.cli.message import confirmation, info, success
9
- from nextmv.cli.options import AccountIDOption, ProfileOption, YesOption
9
+ from nextmv.cli.options import AccountIDOption, DebugOption, ProfileOption, YesOption
10
10
 
11
11
  # Set up subcommand application.
12
12
  app = typer.Typer()
@@ -16,6 +16,7 @@ app = typer.Typer()
16
16
  def delete(
17
17
  account_id: AccountIDOption,
18
18
  yes: YesOption = False,
19
+ _: DebugOption = False,
19
20
  profile: ProfileOption = None,
20
21
  ) -> None:
21
22
  """
@@ -8,7 +8,7 @@ from typing import Annotated
8
8
  import typer
9
9
 
10
10
  from nextmv.cli.message import in_progress, print_json, success
11
- from nextmv.cli.options import AccountIDOption, ProfileOption
11
+ from nextmv.cli.options import AccountIDOption, DebugOption, ProfileOption
12
12
  from nextmv.cloud.account import Account
13
13
  from nextmv.cloud.client import Client
14
14
 
@@ -28,6 +28,7 @@ def get(
28
28
  metavar="OUTPUT_PATH",
29
29
  ),
30
30
  ] = None,
31
+ _: DebugOption = False,
31
32
  profile: ProfileOption = None,
32
33
  ) -> None:
33
34
  """
@@ -9,7 +9,7 @@ import typer
9
9
 
10
10
  from nextmv.cli.configuration.config import build_account
11
11
  from nextmv.cli.message import in_progress, print_json, success
12
- from nextmv.cli.options import AccountIDOption, ProfileOption
12
+ from nextmv.cli.options import AccountIDOption, DebugOption, ProfileOption
13
13
 
14
14
  # Set up subcommand application.
15
15
  app = typer.Typer()
@@ -36,6 +36,7 @@ def update(
36
36
  metavar="OUTPUT_PATH",
37
37
  ),
38
38
  ] = None,
39
+ _: DebugOption = False,
39
40
  profile: ProfileOption = None,
40
41
  ) -> None:
41
42
  """
@@ -7,7 +7,7 @@ from typing import Annotated
7
7
  import typer
8
8
 
9
9
  from nextmv.cli.message import in_progress, print_json
10
- from nextmv.cli.options import ProfileOption
10
+ from nextmv.cli.options import DebugOption, ProfileOption
11
11
  from nextmv.cloud.application import Application
12
12
  from nextmv.cloud.client import Client
13
13
 
@@ -79,6 +79,7 @@ def create(
79
79
  metavar="NAME",
80
80
  ),
81
81
  ] = None,
82
+ _: DebugOption = False,
82
83
  profile: ProfileOption = None,
83
84
  ) -> None:
84
85
  """
@@ -6,7 +6,7 @@ import typer
6
6
 
7
7
  from nextmv.cli.configuration.config import build_cloud_app
8
8
  from nextmv.cli.message import confirmation, info, success
9
- from nextmv.cli.options import AppIDOption, ProfileOption, YesOption
9
+ from nextmv.cli.options import AppIDOption, DebugOption, ProfileOption, YesOption
10
10
 
11
11
  # Set up subcommand application.
12
12
  app = typer.Typer()
@@ -16,6 +16,7 @@ app = typer.Typer()
16
16
  def delete(
17
17
  app_id: AppIDOption,
18
18
  yes: YesOption = False,
19
+ _: DebugOption = False,
19
20
  profile: ProfileOption = None,
20
21
  ) -> None:
21
22
  """
@@ -5,7 +5,7 @@ This module defines the cloud app exists command for the Nextmv CLI.
5
5
  import typer
6
6
 
7
7
  from nextmv.cli.message import in_progress, print_json
8
- from nextmv.cli.options import AppIDOption, ProfileOption
8
+ from nextmv.cli.options import AppIDOption, DebugOption, ProfileOption
9
9
  from nextmv.cloud.application import Application
10
10
  from nextmv.cloud.client import Client
11
11
 
@@ -16,6 +16,7 @@ app = typer.Typer()
16
16
  @app.command()
17
17
  def exists(
18
18
  app_id: AppIDOption,
19
+ _: DebugOption = False,
19
20
  profile: ProfileOption = None,
20
21
  ) -> None:
21
22
  """
@@ -8,7 +8,7 @@ from typing import Annotated
8
8
  import typer
9
9
 
10
10
  from nextmv.cli.message import in_progress, print_json, success
11
- from nextmv.cli.options import AppIDOption, ProfileOption
11
+ from nextmv.cli.options import AppIDOption, DebugOption, ProfileOption
12
12
  from nextmv.cloud.application import Application
13
13
  from nextmv.cloud.client import Client
14
14
 
@@ -28,6 +28,7 @@ def get(
28
28
  metavar="OUTPUT_PATH",
29
29
  ),
30
30
  ] = None,
31
+ _: DebugOption = False,
31
32
  profile: ProfileOption = None,
32
33
  ) -> None:
33
34
  """
@@ -8,7 +8,7 @@ from typing import Annotated
8
8
  import typer
9
9
 
10
10
  from nextmv.cli.message import in_progress, print_json, success
11
- from nextmv.cli.options import ProfileOption
11
+ from nextmv.cli.options import DebugOption, ProfileOption
12
12
  from nextmv.cloud.application import list_applications
13
13
  from nextmv.cloud.client import Client
14
14
 
@@ -27,6 +27,7 @@ def list(
27
27
  metavar="OUTPUT_PATH",
28
28
  ),
29
29
  ] = None,
30
+ _: DebugOption = False,
30
31
  profile: ProfileOption = None,
31
32
  ) -> None:
32
33
  """
@@ -11,7 +11,7 @@ from rich.prompt import Prompt
11
11
 
12
12
  from nextmv.cli.configuration.config import build_cloud_app
13
13
  from nextmv.cli.message import confirmation, error, in_progress, info, success
14
- from nextmv.cli.options import AppIDOption, ProfileOption
14
+ from nextmv.cli.options import AppIDOption, DebugOption, ProfileOption
15
15
  from nextmv.cloud.application import Application
16
16
  from nextmv.manifest import Manifest
17
17
 
@@ -100,6 +100,7 @@ def push(
100
100
  rich_help_panel="Instance control",
101
101
  ),
102
102
  ] = None,
103
+ _: DebugOption = False,
103
104
  profile: ProfileOption = None,
104
105
  ) -> None:
105
106
  """
@@ -9,7 +9,7 @@ import typer
9
9
 
10
10
  from nextmv.cli.configuration.config import build_cloud_app
11
11
  from nextmv.cli.message import error, in_progress, print_json, success
12
- from nextmv.cli.options import AppIDOption, ProfileOption
12
+ from nextmv.cli.options import AppIDOption, DebugOption, ProfileOption
13
13
 
14
14
  # Set up subcommand application.
15
15
  app = typer.Typer()
@@ -63,6 +63,7 @@ def update(
63
63
  metavar="OUTPUT_PATH",
64
64
  ),
65
65
  ] = None,
66
+ _: DebugOption = False,
66
67
  profile: ProfileOption = None,
67
68
  ) -> None:
68
69
  """
@@ -9,7 +9,7 @@ import typer
9
9
 
10
10
  from nextmv.cli.configuration.config import build_cloud_app
11
11
  from nextmv.cli.message import error, in_progress, print_json, success
12
- from nextmv.cli.options import AppIDOption, ProfileOption
12
+ from nextmv.cli.options import AppIDOption, DebugOption, ProfileOption
13
13
  from nextmv.cloud.batch_experiment import BatchExperimentRun
14
14
  from nextmv.polling import default_polling_options
15
15
 
@@ -113,6 +113,7 @@ def create(
113
113
  rich_help_panel="Output control",
114
114
  ),
115
115
  ] = False,
116
+ _: DebugOption = False,
116
117
  profile: ProfileOption = None,
117
118
  ) -> None:
118
119
  """
@@ -6,7 +6,7 @@ import typer
6
6
 
7
7
  from nextmv.cli.configuration.config import build_cloud_app
8
8
  from nextmv.cli.message import confirmation, info, success
9
- from nextmv.cli.options import AppIDOption, BatchExperimentIDOption, ProfileOption, YesOption
9
+ from nextmv.cli.options import AppIDOption, BatchExperimentIDOption, DebugOption, ProfileOption, YesOption
10
10
 
11
11
  # Set up subcommand application.
12
12
  app = typer.Typer()
@@ -17,6 +17,7 @@ def delete(
17
17
  app_id: AppIDOption,
18
18
  batch_experiment_id: BatchExperimentIDOption,
19
19
  yes: YesOption = False,
20
+ _: DebugOption = False,
20
21
  profile: ProfileOption = None,
21
22
  ) -> None:
22
23
  """
@@ -9,7 +9,7 @@ import typer
9
9
 
10
10
  from nextmv.cli.configuration.config import build_cloud_app
11
11
  from nextmv.cli.message import in_progress, print_json, success
12
- from nextmv.cli.options import AppIDOption, BatchExperimentIDOption, ProfileOption
12
+ from nextmv.cli.options import AppIDOption, BatchExperimentIDOption, DebugOption, ProfileOption
13
13
  from nextmv.polling import default_polling_options
14
14
 
15
15
  # Set up subcommand application.
@@ -45,6 +45,7 @@ def get(
45
45
  "Specify output location with --output.",
46
46
  ),
47
47
  ] = False,
48
+ _: DebugOption = False,
48
49
  profile: ProfileOption = None,
49
50
  ) -> None:
50
51
  """
@@ -9,7 +9,7 @@ import typer
9
9
 
10
10
  from nextmv.cli.configuration.config import build_cloud_app
11
11
  from nextmv.cli.message import in_progress, print_json, success
12
- from nextmv.cli.options import AppIDOption, ProfileOption
12
+ from nextmv.cli.options import AppIDOption, DebugOption, ProfileOption
13
13
 
14
14
  # Set up subcommand application.
15
15
  app = typer.Typer()
@@ -27,6 +27,7 @@ def list(
27
27
  metavar="OUTPUT_PATH",
28
28
  ),
29
29
  ] = None,
30
+ _: DebugOption = False,
30
31
  profile: ProfileOption = None,
31
32
  ) -> None:
32
33
  """
@@ -9,7 +9,7 @@ import typer
9
9
 
10
10
  from nextmv.cli.configuration.config import build_cloud_app
11
11
  from nextmv.cli.message import in_progress, print_json, success
12
- from nextmv.cli.options import AppIDOption, BatchExperimentIDOption, ProfileOption
12
+ from nextmv.cli.options import AppIDOption, BatchExperimentIDOption, DebugOption, ProfileOption
13
13
 
14
14
  # Set up subcommand application.
15
15
  app = typer.Typer()
@@ -28,6 +28,7 @@ def metadata(
28
28
  metavar="OUTPUT_PATH",
29
29
  ),
30
30
  ] = None,
31
+ _: DebugOption = False,
31
32
  profile: ProfileOption = None,
32
33
  ) -> None:
33
34
  """
@@ -9,7 +9,7 @@ import typer
9
9
 
10
10
  from nextmv.cli.configuration.config import build_cloud_app
11
11
  from nextmv.cli.message import in_progress, print_json, success
12
- from nextmv.cli.options import AppIDOption, BatchExperimentIDOption, ProfileOption
12
+ from nextmv.cli.options import AppIDOption, BatchExperimentIDOption, DebugOption, ProfileOption
13
13
 
14
14
  # Set up subcommand application.
15
15
  app = typer.Typer()
@@ -46,6 +46,7 @@ def update(
46
46
  metavar="OUTPUT_PATH",
47
47
  ),
48
48
  ] = None,
49
+ _: DebugOption = False,
49
50
  profile: ProfileOption = None,
50
51
  ) -> None:
51
52
  """
@@ -12,7 +12,7 @@ import typer
12
12
 
13
13
  from nextmv.cli.configuration.config import build_cloud_app
14
14
  from nextmv.cli.message import error, in_progress, success
15
- from nextmv.cli.options import AppIDOption, ProfileOption
15
+ from nextmv.cli.options import AppIDOption, DebugOption, ProfileOption
16
16
  from nextmv.cloud.application import Application
17
17
 
18
18
  # Set up subcommand application.
@@ -42,6 +42,7 @@ def upload(
42
42
  metavar="INPUT_PATH",
43
43
  ),
44
44
  ] = None,
45
+ _: DebugOption = False,
45
46
  profile: ProfileOption = None,
46
47
  ) -> None:
47
48
  """
@@ -8,7 +8,7 @@ import typer
8
8
 
9
9
  from nextmv.cli.configuration.config import build_cloud_app
10
10
  from nextmv.cli.message import enum_values, error, in_progress, print_json
11
- from nextmv.cli.options import AppIDOption, ProfileOption
11
+ from nextmv.cli.options import AppIDOption, DebugOption, ProfileOption
12
12
  from nextmv.cloud.ensemble import EvaluationRule, RuleObjective, RuleTolerance, RuleToleranceType, RunGroup
13
13
 
14
14
  # Set up subcommand application.
@@ -217,6 +217,7 @@ def create(
217
217
  metavar="ENSEMBLE_DEFINITION_ID",
218
218
  ),
219
219
  ] = None,
220
+ _: DebugOption = False,
220
221
  profile: ProfileOption = None,
221
222
  ) -> None:
222
223
  cloud_app, _ = build_cloud_app(app_id=app_id, profile=profile)
@@ -6,7 +6,7 @@ import typer
6
6
 
7
7
  from nextmv.cli.configuration.config import build_cloud_app
8
8
  from nextmv.cli.message import confirmation, info, success
9
- from nextmv.cli.options import AppIDOption, EnsembleDefinitionIDOption, ProfileOption, YesOption
9
+ from nextmv.cli.options import AppIDOption, DebugOption, EnsembleDefinitionIDOption, ProfileOption, YesOption
10
10
 
11
11
  # Set up subcommand application.
12
12
  app = typer.Typer()
@@ -17,6 +17,7 @@ def delete(
17
17
  app_id: AppIDOption,
18
18
  ensemble_definition_id: EnsembleDefinitionIDOption,
19
19
  yes: YesOption = False,
20
+ _: DebugOption = False,
20
21
  profile: ProfileOption = None,
21
22
  ) -> None:
22
23
  """
@@ -9,7 +9,7 @@ import typer
9
9
 
10
10
  from nextmv.cli.configuration.config import build_cloud_app
11
11
  from nextmv.cli.message import in_progress, print_json, success
12
- from nextmv.cli.options import AppIDOption, EnsembleDefinitionIDOption, ProfileOption
12
+ from nextmv.cli.options import AppIDOption, DebugOption, EnsembleDefinitionIDOption, ProfileOption
13
13
 
14
14
  # Set up subcommand application.
15
15
  app = typer.Typer()
@@ -28,6 +28,7 @@ def get(
28
28
  metavar="OUTPUT_PATH",
29
29
  ),
30
30
  ] = None,
31
+ _: DebugOption = False,
31
32
  profile: ProfileOption = None,
32
33
  ) -> None:
33
34
  """
@@ -9,7 +9,7 @@ import typer
9
9
 
10
10
  from nextmv.cli.configuration.config import build_cloud_app
11
11
  from nextmv.cli.message import in_progress, print_json, success
12
- from nextmv.cli.options import AppIDOption, ProfileOption
12
+ from nextmv.cli.options import AppIDOption, DebugOption, ProfileOption
13
13
 
14
14
  # Set up subcommand application.
15
15
  app = typer.Typer()
@@ -27,6 +27,7 @@ def list(
27
27
  metavar="OUTPUT_PATH",
28
28
  ),
29
29
  ] = None,
30
+ _: DebugOption = False,
30
31
  profile: ProfileOption = None,
31
32
  ) -> None:
32
33
  """
@@ -9,7 +9,7 @@ import typer
9
9
 
10
10
  from nextmv.cli.configuration.config import build_cloud_app
11
11
  from nextmv.cli.message import error, in_progress, print_json, success
12
- from nextmv.cli.options import AppIDOption, EnsembleDefinitionIDOption, ProfileOption
12
+ from nextmv.cli.options import AppIDOption, DebugOption, EnsembleDefinitionIDOption, ProfileOption
13
13
 
14
14
  # Set up subcommand application.
15
15
  app = typer.Typer()
@@ -46,6 +46,7 @@ def update(
46
46
  metavar="OUTPUT_PATH",
47
47
  ),
48
48
  ] = None,
49
+ _: DebugOption = False,
49
50
  profile: ProfileOption = None,
50
51
  ) -> None:
51
52
  """