nextmv 1.8.0.dev0__tar.gz → 1.8.0.dev1__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 (414) hide show
  1. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/PKG-INFO +1 -1
  2. nextmv-1.8.0.dev1/nextmv/__about__.py +1 -0
  3. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cache.py +20 -9
  4. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cloud/package.py +7 -7
  5. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/test_cache.py +6 -5
  6. nextmv-1.8.0.dev0/nextmv/__about__.py +0 -1
  7. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/.gitignore +0 -0
  8. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/.python-version +0 -0
  9. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/CONTRIBUTING.md +0 -0
  10. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/LICENSE +0 -0
  11. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/README.md +0 -0
  12. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/__entrypoint__.py +0 -0
  13. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/__init__.py +0 -0
  14. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/_serialization.py +0 -0
  15. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/account.py +0 -0
  16. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/base_model.py +0 -0
  17. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/__init__.py +0 -0
  18. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cache/__init__.py +0 -0
  19. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cache/delete.py +0 -0
  20. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cache/get.py +0 -0
  21. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/__init__.py +0 -0
  22. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/acceptance/__init__.py +0 -0
  23. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/acceptance/create.py +0 -0
  24. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/acceptance/delete.py +0 -0
  25. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/acceptance/get.py +0 -0
  26. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/acceptance/list.py +0 -0
  27. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/acceptance/update.py +0 -0
  28. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/account/__init__.py +0 -0
  29. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/account/create.py +0 -0
  30. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/account/delete.py +0 -0
  31. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/account/get.py +0 -0
  32. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/account/update.py +0 -0
  33. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/app/__init__.py +0 -0
  34. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/app/create.py +0 -0
  35. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/app/delete.py +0 -0
  36. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/app/exists.py +0 -0
  37. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/app/get.py +0 -0
  38. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/app/list.py +0 -0
  39. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/app/push.py +0 -0
  40. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/app/update.py +0 -0
  41. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/batch/__init__.py +0 -0
  42. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/batch/create.py +0 -0
  43. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/batch/delete.py +0 -0
  44. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/batch/get.py +0 -0
  45. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/batch/list.py +0 -0
  46. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/batch/metadata.py +0 -0
  47. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/batch/update.py +0 -0
  48. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/data/__init__.py +0 -0
  49. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/data/upload.py +0 -0
  50. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/ensemble/__init__.py +0 -0
  51. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/ensemble/create.py +0 -0
  52. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/ensemble/delete.py +0 -0
  53. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/ensemble/get.py +0 -0
  54. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/ensemble/list.py +0 -0
  55. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/ensemble/update.py +0 -0
  56. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/input_set/__init__.py +0 -0
  57. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/input_set/create.py +0 -0
  58. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/input_set/delete.py +0 -0
  59. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/input_set/get.py +0 -0
  60. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/input_set/list.py +0 -0
  61. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/input_set/update.py +0 -0
  62. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/instance/__init__.py +0 -0
  63. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/instance/create.py +0 -0
  64. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/instance/delete.py +0 -0
  65. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/instance/exists.py +0 -0
  66. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/instance/get.py +0 -0
  67. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/instance/list.py +0 -0
  68. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/instance/update.py +0 -0
  69. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/managed_input/__init__.py +0 -0
  70. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/managed_input/create.py +0 -0
  71. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/managed_input/delete.py +0 -0
  72. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/managed_input/get.py +0 -0
  73. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/managed_input/list.py +0 -0
  74. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/managed_input/update.py +0 -0
  75. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/marketplace/__init__.py +0 -0
  76. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/marketplace/app/__init__.py +0 -0
  77. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/marketplace/app/create.py +0 -0
  78. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/marketplace/app/get.py +0 -0
  79. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/marketplace/app/list.py +0 -0
  80. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/marketplace/app/update.py +0 -0
  81. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/marketplace/subscription/__init__.py +0 -0
  82. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/marketplace/subscription/create.py +0 -0
  83. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/marketplace/subscription/delete.py +0 -0
  84. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/marketplace/subscription/get.py +0 -0
  85. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/marketplace/subscription/list.py +0 -0
  86. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/marketplace/version/__init__.py +0 -0
  87. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/marketplace/version/create.py +0 -0
  88. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/marketplace/version/get.py +0 -0
  89. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/marketplace/version/list.py +0 -0
  90. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/marketplace/version/update.py +0 -0
  91. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/run/__init__.py +0 -0
  92. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/run/cancel.py +0 -0
  93. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/run/create.py +0 -0
  94. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/run/delete.py +0 -0
  95. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/run/get.py +0 -0
  96. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/run/input.py +0 -0
  97. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/run/list.py +0 -0
  98. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/run/logs.py +0 -0
  99. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/run/metadata.py +0 -0
  100. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/run/track.py +0 -0
  101. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/scenario/__init__.py +0 -0
  102. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/scenario/create.py +0 -0
  103. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/scenario/delete.py +0 -0
  104. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/scenario/get.py +0 -0
  105. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/scenario/list.py +0 -0
  106. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/scenario/metadata.py +0 -0
  107. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/scenario/update.py +0 -0
  108. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/secrets/__init__.py +0 -0
  109. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/secrets/create.py +0 -0
  110. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/secrets/delete.py +0 -0
  111. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/secrets/get.py +0 -0
  112. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/secrets/list.py +0 -0
  113. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/secrets/update.py +0 -0
  114. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/shadow/__init__.py +0 -0
  115. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/shadow/create.py +0 -0
  116. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/shadow/delete.py +0 -0
  117. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/shadow/get.py +0 -0
  118. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/shadow/list.py +0 -0
  119. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/shadow/metadata.py +0 -0
  120. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/shadow/start.py +0 -0
  121. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/shadow/stop.py +0 -0
  122. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/shadow/update.py +0 -0
  123. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/sso/__init__.py +0 -0
  124. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/sso/create.py +0 -0
  125. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/sso/delete.py +0 -0
  126. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/sso/disable.py +0 -0
  127. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/sso/domain/__init__.py +0 -0
  128. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/sso/domain/delete.py +0 -0
  129. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/sso/enable.py +0 -0
  130. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/sso/get.py +0 -0
  131. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/sso/update.py +0 -0
  132. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/switchback/__init__.py +0 -0
  133. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/switchback/create.py +0 -0
  134. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/switchback/delete.py +0 -0
  135. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/switchback/get.py +0 -0
  136. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/switchback/list.py +0 -0
  137. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/switchback/metadata.py +0 -0
  138. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/switchback/start.py +0 -0
  139. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/switchback/stop.py +0 -0
  140. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/switchback/update.py +0 -0
  141. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/upload/__init__.py +0 -0
  142. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/upload/create.py +0 -0
  143. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/version/__init__.py +0 -0
  144. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/version/create.py +0 -0
  145. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/version/delete.py +0 -0
  146. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/version/exists.py +0 -0
  147. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/version/get.py +0 -0
  148. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/version/list.py +0 -0
  149. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/cloud/version/update.py +0 -0
  150. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/community/__init__.py +0 -0
  151. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/community/clone.py +0 -0
  152. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/community/list.py +0 -0
  153. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/configuration/__init__.py +0 -0
  154. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/configuration/config.py +0 -0
  155. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/configuration/create.py +0 -0
  156. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/configuration/delete.py +0 -0
  157. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/configuration/list.py +0 -0
  158. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/init.py +0 -0
  159. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/local/__init__.py +0 -0
  160. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/local/app/__init__.py +0 -0
  161. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/local/app/delete.py +0 -0
  162. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/local/app/get.py +0 -0
  163. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/local/app/list.py +0 -0
  164. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/local/app/register.py +0 -0
  165. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/local/app/registered.py +0 -0
  166. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/local/app/sync.py +0 -0
  167. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/local/app/update.py +0 -0
  168. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/local/run/__init__.py +0 -0
  169. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/local/run/create.py +0 -0
  170. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/local/run/get.py +0 -0
  171. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/local/run/input.py +0 -0
  172. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/local/run/list.py +0 -0
  173. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/local/run/logs.py +0 -0
  174. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/local/run/metadata.py +0 -0
  175. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/local/run/visuals.py +0 -0
  176. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/main.py +0 -0
  177. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/manifest/__init__.py +0 -0
  178. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/manifest/init.py +0 -0
  179. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/manifest/validate.py +0 -0
  180. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/mcp/__init__.py +0 -0
  181. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/mcp/serve.py +0 -0
  182. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/mcp/server.py +0 -0
  183. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/mcp/tools/WORKFLOW.md +0 -0
  184. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/mcp/tools/__init__.py +0 -0
  185. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/mcp/tools/_helpers.py +0 -0
  186. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/mcp/tools/acceptance.py +0 -0
  187. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/mcp/tools/account.py +0 -0
  188. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/mcp/tools/app.py +0 -0
  189. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/mcp/tools/batch.py +0 -0
  190. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/mcp/tools/community.py +0 -0
  191. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/mcp/tools/ensemble.py +0 -0
  192. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/mcp/tools/guide.py +0 -0
  193. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/mcp/tools/input_set.py +0 -0
  194. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/mcp/tools/instance.py +0 -0
  195. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/mcp/tools/local.py +0 -0
  196. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/mcp/tools/managed_input.py +0 -0
  197. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/mcp/tools/profile.py +0 -0
  198. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/mcp/tools/run.py +0 -0
  199. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/mcp/tools/scenario.py +0 -0
  200. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/mcp/tools/secrets.py +0 -0
  201. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/mcp/tools/shadow.py +0 -0
  202. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/mcp/tools/sso.py +0 -0
  203. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/mcp/tools/switchback.py +0 -0
  204. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/mcp/tools/version.py +0 -0
  205. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/message.py +0 -0
  206. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/options.py +0 -0
  207. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cli/version.py +0 -0
  208. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cloud/__init__.py +0 -0
  209. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cloud/acceptance_test.py +0 -0
  210. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cloud/account.py +0 -0
  211. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cloud/application/__init__.py +0 -0
  212. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cloud/application/_acceptance.py +0 -0
  213. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cloud/application/_batch_scenario.py +0 -0
  214. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cloud/application/_ensemble.py +0 -0
  215. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cloud/application/_input_set.py +0 -0
  216. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cloud/application/_instance.py +0 -0
  217. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cloud/application/_managed_input.py +0 -0
  218. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cloud/application/_run.py +0 -0
  219. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cloud/application/_secrets.py +0 -0
  220. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cloud/application/_shadow.py +0 -0
  221. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cloud/application/_switchback.py +0 -0
  222. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cloud/application/_utils.py +0 -0
  223. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cloud/application/_version.py +0 -0
  224. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cloud/assets.py +0 -0
  225. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cloud/batch_experiment.py +0 -0
  226. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cloud/client.py +0 -0
  227. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cloud/community.py +0 -0
  228. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cloud/ensemble.py +0 -0
  229. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cloud/input_set.py +0 -0
  230. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cloud/instance.py +0 -0
  231. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cloud/integration.py +0 -0
  232. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cloud/marketplace.py +0 -0
  233. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cloud/scenario.py +0 -0
  234. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cloud/secrets.py +0 -0
  235. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cloud/shadow.py +0 -0
  236. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cloud/sso.py +0 -0
  237. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cloud/switchback.py +0 -0
  238. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cloud/url.py +0 -0
  239. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/cloud/version.py +0 -0
  240. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/content_format.py +0 -0
  241. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/deprecated.py +0 -0
  242. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/input.py +0 -0
  243. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/local/__init__.py +0 -0
  244. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/local/application.py +0 -0
  245. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/local/executor.py +0 -0
  246. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/local/geojson_handler.py +0 -0
  247. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/local/local.py +0 -0
  248. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/local/plotly_handler.py +0 -0
  249. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/local/registry.py +0 -0
  250. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/local/runner.py +0 -0
  251. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/logger.py +0 -0
  252. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/manifest.py +0 -0
  253. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/model.py +0 -0
  254. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/options.py +0 -0
  255. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/output.py +0 -0
  256. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/polling.py +0 -0
  257. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/run.py +0 -0
  258. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/safe.py +0 -0
  259. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/status.py +0 -0
  260. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/binary_json.yaml +0 -0
  261. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/binary_json_opt.yaml +0 -0
  262. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/binary_multi-file.yaml +0 -0
  263. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/binary_multi-file_opt.yaml +0 -0
  264. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/go_json.yaml +0 -0
  265. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/go_json_hello-world/.gitignore +0 -0
  266. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/go_json_hello-world/README.md +0 -0
  267. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/go_json_hello-world/app.yaml +0 -0
  268. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/go_json_hello-world/go.mod +0 -0
  269. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/go_json_hello-world/input.json +0 -0
  270. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/go_json_hello-world/main.go +0 -0
  271. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/go_json_opt.yaml +0 -0
  272. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/go_multi-file.yaml +0 -0
  273. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/go_multi-file_hello-world/.gitignore +0 -0
  274. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/go_multi-file_hello-world/README.md +0 -0
  275. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/go_multi-file_hello-world/app.yaml +0 -0
  276. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/go_multi-file_hello-world/go.mod +0 -0
  277. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/go_multi-file_hello-world/inputs/input.json +0 -0
  278. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/go_multi-file_hello-world/main.go +0 -0
  279. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/go_multi-file_opt.yaml +0 -0
  280. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/java_json.yaml +0 -0
  281. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/java_json_hello-world/.gitignore +0 -0
  282. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/java_json_hello-world/Main.java +0 -0
  283. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/java_json_hello-world/README.md +0 -0
  284. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/java_json_hello-world/app.yaml +0 -0
  285. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/java_json_hello-world/input.json +0 -0
  286. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/java_json_hello-world/pom.xml +0 -0
  287. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/java_json_opt.yaml +0 -0
  288. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/java_multi-file.yaml +0 -0
  289. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/java_multi-file_hello-world/.gitignore +0 -0
  290. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/java_multi-file_hello-world/Main.java +0 -0
  291. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/java_multi-file_hello-world/README.md +0 -0
  292. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/java_multi-file_hello-world/app.yaml +0 -0
  293. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/java_multi-file_hello-world/inputs/input.json +0 -0
  294. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/java_multi-file_hello-world/pom.xml +0 -0
  295. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/java_multi-file_opt.yaml +0 -0
  296. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_json.yaml +0 -0
  297. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_json_class-assign/.gitignore +0 -0
  298. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_json_class-assign/README.md +0 -0
  299. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_json_class-assign/app.yaml +0 -0
  300. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_json_class-assign/input.json +0 -0
  301. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_json_class-assign/main.py +0 -0
  302. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_json_class-assign/pyproject.toml +0 -0
  303. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_json_class-assign/uv.lock +0 -0
  304. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_json_class-assign/visualizations.py +0 -0
  305. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_json_demand-alloc/.gitignore +0 -0
  306. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_json_demand-alloc/README.md +0 -0
  307. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_json_demand-alloc/allocation/README.md +0 -0
  308. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_json_demand-alloc/allocation/app.yaml +0 -0
  309. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_json_demand-alloc/allocation/input.json +0 -0
  310. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_json_demand-alloc/allocation/main.py +0 -0
  311. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_json_demand-alloc/allocation/pyproject.toml +0 -0
  312. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_json_demand-alloc/allocation/uv.lock +0 -0
  313. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_json_demand-alloc/allocation/visuals.py +0 -0
  314. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_json_demand-alloc/workflow/README.md +0 -0
  315. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_json_demand-alloc/workflow/app.yaml +0 -0
  316. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_json_demand-alloc/workflow/input.json +0 -0
  317. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_json_demand-alloc/workflow/main.py +0 -0
  318. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_json_demand-alloc/workflow/pyproject.toml +0 -0
  319. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_json_demand-alloc/workflow/uv.lock +0 -0
  320. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_json_demand-alloc/workflow/visuals.py +0 -0
  321. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_json_hello-world/.gitignore +0 -0
  322. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_json_hello-world/README.md +0 -0
  323. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_json_hello-world/app.yaml +0 -0
  324. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_json_hello-world/input.json +0 -0
  325. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_json_hello-world/main.py +0 -0
  326. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_json_hello-world/pyproject.toml +0 -0
  327. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_json_hello-world/uv.lock +0 -0
  328. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_json_opt.yaml +0 -0
  329. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_multi-file.yaml +0 -0
  330. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_multi-file_class-assign/.gitignore +0 -0
  331. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_multi-file_class-assign/README.md +0 -0
  332. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_multi-file_class-assign/app.yaml +0 -0
  333. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_multi-file_class-assign/inputs/input.json +0 -0
  334. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_multi-file_class-assign/main.py +0 -0
  335. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_multi-file_class-assign/pyproject.toml +0 -0
  336. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_multi-file_class-assign/uv.lock +0 -0
  337. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_multi-file_class-assign/visualizations.py +0 -0
  338. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_multi-file_demand-alloc/README.md +0 -0
  339. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_multi-file_demand-alloc/allocation/README.md +0 -0
  340. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_multi-file_demand-alloc/allocation/app.yaml +0 -0
  341. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_multi-file_demand-alloc/allocation/input.json +0 -0
  342. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_multi-file_demand-alloc/allocation/main.py +0 -0
  343. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_multi-file_demand-alloc/allocation/pyproject.toml +0 -0
  344. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_multi-file_demand-alloc/allocation/uv.lock +0 -0
  345. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_multi-file_demand-alloc/allocation/visuals.py +0 -0
  346. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_multi-file_demand-alloc/workflow/.gitignore +0 -0
  347. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_multi-file_demand-alloc/workflow/README.md +0 -0
  348. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_multi-file_demand-alloc/workflow/app.yaml +0 -0
  349. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_multi-file_demand-alloc/workflow/inputs/input.json +0 -0
  350. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_multi-file_demand-alloc/workflow/main.py +0 -0
  351. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_multi-file_demand-alloc/workflow/pyproject.toml +0 -0
  352. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_multi-file_demand-alloc/workflow/uv.lock +0 -0
  353. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_multi-file_demand-alloc/workflow/visuals.py +0 -0
  354. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_multi-file_hello-world/.gitignore +0 -0
  355. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_multi-file_hello-world/README.md +0 -0
  356. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_multi-file_hello-world/app.yaml +0 -0
  357. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_multi-file_hello-world/inputs/input.json +0 -0
  358. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_multi-file_hello-world/main.py +0 -0
  359. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_multi-file_hello-world/pyproject.toml +0 -0
  360. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_multi-file_hello-world/uv.lock +0 -0
  361. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/templates/python_multi-file_opt.yaml +0 -0
  362. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/nextmv/uv_handler.py +0 -0
  363. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/pyproject.toml +0 -0
  364. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/__init__.py +0 -0
  365. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/cli/__init__.py +0 -0
  366. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/cli/manifest/__init__.py +0 -0
  367. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/cli/manifest/test_init.py +0 -0
  368. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/cli/test_configuration.py +0 -0
  369. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/cli/test_init_cli_call.py +0 -0
  370. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/cli/test_main.py +0 -0
  371. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/cli/test_mcp.py +0 -0
  372. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/cli/test_version.py +0 -0
  373. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/cloud/__init__.py +0 -0
  374. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/cloud/app.yaml +0 -0
  375. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/cloud/test_client.py +0 -0
  376. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/cloud/test_instance.py +0 -0
  377. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/cloud/test_package.py +0 -0
  378. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/cloud/test_scenario.py +0 -0
  379. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/integration/__init__.py +0 -0
  380. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/integration/cloud/__init__.py +0 -0
  381. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/integration/cloud/test_integration_cloud.py +0 -0
  382. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/integration/cloud/test_integration_marketplace.py +0 -0
  383. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/local/__init__.py +0 -0
  384. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/local/test_application.py +0 -0
  385. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/local/test_executor.py +0 -0
  386. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/local/test_registry.py +0 -0
  387. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/local/test_runner.py +0 -0
  388. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/scripts/__init__.py +0 -0
  389. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/scripts/options1.py +0 -0
  390. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/scripts/options2.py +0 -0
  391. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/scripts/options3.py +0 -0
  392. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/scripts/options4.py +0 -0
  393. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/scripts/options5.py +0 -0
  394. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/scripts/options6.py +0 -0
  395. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/scripts/options7.py +0 -0
  396. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/test_base_model.py +0 -0
  397. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/test_entrypoint/__init__.py +0 -0
  398. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/test_entrypoint/test_entrypoint.py +0 -0
  399. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/test_input.py +0 -0
  400. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/test_inputs/test_data.csv +0 -0
  401. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/test_inputs/test_data.json +0 -0
  402. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/test_inputs/test_data.txt +0 -0
  403. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/test_logger.py +0 -0
  404. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/test_manifest.py +0 -0
  405. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/test_model.py +0 -0
  406. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/test_options.py +0 -0
  407. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/test_output.py +0 -0
  408. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/test_polling.py +0 -0
  409. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/test_run.py +0 -0
  410. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/test_safe.py +0 -0
  411. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/test_serialization.py +0 -0
  412. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/test_uv_handler.py +0 -0
  413. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/tests/test_version.py +0 -0
  414. {nextmv-1.8.0.dev0 → nextmv-1.8.0.dev1}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nextmv
3
- Version: 1.8.0.dev0
3
+ Version: 1.8.0.dev1
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.8.0.dev1"
@@ -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
@@ -271,7 +271,7 @@ def _copy_manifest_files(
271
271
 
272
272
  try:
273
273
  shutil.copy2(file["absolute_path"], os.path.join(temp_dir, target_dir))
274
- except subprocess.CalledProcessError as e:
274
+ except OSError as e:
275
275
  raise Exception(f"error copying asset files {file['absolute_path']}: {e}") from e
276
276
 
277
277
 
@@ -847,13 +847,13 @@ def _install_and_compress_package(
847
847
  # the entries (no EOF block). Omitting the EOF block lets these
848
848
  # per-package gzip streams be raw-concatenated without causing tar
849
849
  # to stop at the first end-of-archive marker.
850
- with tempfile.NamedTemporaryFile(suffix=".tar", delete=False, dir=install_tmp) as _tmp_f:
851
- tmp_tar_path = _tmp_f.name
850
+ tmp_tar_path = os.path.join(install_tmp, "pkg.tar")
852
851
 
853
- tar_obj = tarfile.open(tmp_tar_path, mode="w")
854
- tar_obj.add(install_dir, arcname=dep_arcname)
855
- entry_end = tar_obj.offset # byte offset where EOF marker begins
856
- tar_obj.close()
852
+ with tarfile.open(tmp_tar_path, mode="w") as tar_obj:
853
+ tar_obj.add(install_dir, arcname=dep_arcname)
854
+ # Byte offset where EOF marker begins; captured before close()
855
+ # appends EOF blocks.
856
+ entry_end = tar_obj.offset
857
857
 
858
858
  with open(tmp_tar_path, "rb") as raw_f:
859
859
  with gzip.open(str(tar_path), "wb") as gz:
@@ -12,6 +12,7 @@ from unittest.mock import patch
12
12
 
13
13
  from nextmv.cache import (
14
14
  _CACHE_INFO_FILE,
15
+ _DEP_TARBALL_NAME,
15
16
  _MAX_DEP_BYTES,
16
17
  _MAX_DEPS,
17
18
  _evict_lru,
@@ -121,7 +122,7 @@ class TestGetCachedPackageTar(unittest.TestCase):
121
122
  def _make_pkg_tar_entry(self, key: str) -> Path:
122
123
  entry_dir = self._tmpdir / key
123
124
  entry_dir.mkdir(parents=True, exist_ok=True)
124
- installed_tar = entry_dir / "installed.tar.gz"
125
+ installed_tar = entry_dir / _DEP_TARBALL_NAME
125
126
  with tarfile.open(str(installed_tar), "w:gz"):
126
127
  pass # empty tar
127
128
  now = datetime.now(tz=timezone.utc).isoformat()
@@ -152,7 +153,7 @@ class TestGetCachedPackageTar(unittest.TestCase):
152
153
  result = get_cached_dep(key)
153
154
 
154
155
  self.assertIsNotNone(result)
155
- self.assertTrue(str(result).endswith("installed.tar.gz"))
156
+ self.assertTrue(str(result).endswith(_DEP_TARBALL_NAME))
156
157
 
157
158
  def test_hit_updates_last_used_at(self):
158
159
  from nextmv import cache as cache_mod
@@ -182,7 +183,7 @@ class TestGetCachedPackageTar(unittest.TestCase):
182
183
  key = "noinfo"
183
184
  entry_dir = self._tmpdir / key
184
185
  entry_dir.mkdir(parents=True)
185
- with tarfile.open(str(entry_dir / "installed.tar.gz"), "w:gz"):
186
+ with tarfile.open(str(entry_dir / _DEP_TARBALL_NAME), "w:gz"):
186
187
  pass # no cache_info.json written
187
188
 
188
189
  with patch.object(cache_mod, "_DEPS_CACHE_DIR", self._tmpdir):
@@ -252,7 +253,7 @@ class TestStorePackageTar(unittest.TestCase):
252
253
 
253
254
  entry_dir = self._pkg_tars_dir / key
254
255
  self.assertTrue(entry_dir.is_dir())
255
- self.assertTrue((entry_dir / "installed.tar.gz").is_file())
256
+ self.assertTrue((entry_dir / _DEP_TARBALL_NAME).is_file())
256
257
 
257
258
  def test_info_file_has_required_fields(self):
258
259
  from nextmv import cache as cache_mod
@@ -335,7 +336,7 @@ class TestEvictLruPackages(unittest.TestCase):
335
336
  def _add_entry(self, key: str, last_used: str, size_bytes: int = 0):
336
337
  entry_dir = self._pkg_tars_dir / key
337
338
  entry_dir.mkdir(parents=True, exist_ok=True)
338
- installed_tar = entry_dir / "installed.tar.gz"
339
+ installed_tar = entry_dir / _DEP_TARBALL_NAME
339
340
  if size_bytes > 0:
340
341
  data = os.urandom(size_bytes)
341
342
  with tarfile.open(str(installed_tar), "w:gz") as tar:
@@ -1 +0,0 @@
1
- __version__ = "v1.8.0.dev0"
File without changes
File without changes
File without changes
File without changes
File without changes