nextmv 1.1.2.dev0__tar.gz → 1.1.3.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 (277) hide show
  1. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/PKG-INFO +1 -1
  2. nextmv-1.1.3.dev0/nextmv/__about__.py +1 -0
  3. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cloud/sso.py +35 -35
  4. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/default_app/app.yaml +9 -0
  5. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/default_app/main.py +3 -3
  6. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/tests/local/test_application.py +85 -0
  7. nextmv-1.1.2.dev0/nextmv/__about__.py +0 -1
  8. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/.gitignore +0 -0
  9. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/.python-version +0 -0
  10. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/LICENSE +0 -0
  11. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/README.md +0 -0
  12. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/__entrypoint__.py +0 -0
  13. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/__init__.py +0 -0
  14. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/_serialization.py +0 -0
  15. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/base_model.py +0 -0
  16. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/CONTRIBUTING.md +0 -0
  17. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/__init__.py +0 -0
  18. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/__init__.py +0 -0
  19. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/acceptance/__init__.py +0 -0
  20. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/acceptance/create.py +0 -0
  21. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/acceptance/delete.py +0 -0
  22. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/acceptance/get.py +0 -0
  23. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/acceptance/list.py +0 -0
  24. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/acceptance/update.py +0 -0
  25. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/account/__init__.py +0 -0
  26. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/account/create.py +0 -0
  27. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/account/delete.py +0 -0
  28. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/account/get.py +0 -0
  29. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/account/update.py +0 -0
  30. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/app/__init__.py +0 -0
  31. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/app/create.py +0 -0
  32. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/app/delete.py +0 -0
  33. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/app/exists.py +0 -0
  34. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/app/get.py +0 -0
  35. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/app/list.py +0 -0
  36. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/app/push.py +0 -0
  37. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/app/update.py +0 -0
  38. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/batch/__init__.py +0 -0
  39. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/batch/create.py +0 -0
  40. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/batch/delete.py +0 -0
  41. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/batch/get.py +0 -0
  42. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/batch/list.py +0 -0
  43. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/batch/metadata.py +0 -0
  44. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/batch/update.py +0 -0
  45. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/data/__init__.py +0 -0
  46. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/data/upload.py +0 -0
  47. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/ensemble/__init__.py +0 -0
  48. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/ensemble/create.py +0 -0
  49. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/ensemble/delete.py +0 -0
  50. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/ensemble/get.py +0 -0
  51. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/ensemble/list.py +0 -0
  52. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/ensemble/update.py +0 -0
  53. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/input_set/__init__.py +0 -0
  54. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/input_set/create.py +0 -0
  55. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/input_set/delete.py +0 -0
  56. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/input_set/get.py +0 -0
  57. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/input_set/list.py +0 -0
  58. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/input_set/update.py +0 -0
  59. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/instance/__init__.py +0 -0
  60. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/instance/create.py +0 -0
  61. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/instance/delete.py +0 -0
  62. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/instance/exists.py +0 -0
  63. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/instance/get.py +0 -0
  64. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/instance/list.py +0 -0
  65. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/instance/update.py +0 -0
  66. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/managed_input/__init__.py +0 -0
  67. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/managed_input/create.py +0 -0
  68. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/managed_input/delete.py +0 -0
  69. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/managed_input/get.py +0 -0
  70. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/managed_input/list.py +0 -0
  71. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/managed_input/update.py +0 -0
  72. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/marketplace/__init__.py +0 -0
  73. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/marketplace/app/__init__.py +0 -0
  74. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/marketplace/app/create.py +0 -0
  75. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/marketplace/app/get.py +0 -0
  76. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/marketplace/app/list.py +0 -0
  77. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/marketplace/app/update.py +0 -0
  78. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/marketplace/subscription/__init__.py +0 -0
  79. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/marketplace/subscription/create.py +0 -0
  80. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/marketplace/subscription/delete.py +0 -0
  81. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/marketplace/subscription/get.py +0 -0
  82. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/marketplace/subscription/list.py +0 -0
  83. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/marketplace/version/__init__.py +0 -0
  84. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/marketplace/version/create.py +0 -0
  85. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/marketplace/version/get.py +0 -0
  86. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/marketplace/version/list.py +0 -0
  87. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/marketplace/version/update.py +0 -0
  88. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/run/__init__.py +0 -0
  89. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/run/cancel.py +0 -0
  90. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/run/create.py +0 -0
  91. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/run/get.py +0 -0
  92. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/run/input.py +0 -0
  93. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/run/list.py +0 -0
  94. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/run/logs.py +0 -0
  95. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/run/metadata.py +0 -0
  96. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/run/track.py +0 -0
  97. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/scenario/__init__.py +0 -0
  98. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/scenario/create.py +0 -0
  99. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/scenario/delete.py +0 -0
  100. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/scenario/get.py +0 -0
  101. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/scenario/list.py +0 -0
  102. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/scenario/metadata.py +0 -0
  103. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/scenario/update.py +0 -0
  104. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/secrets/__init__.py +0 -0
  105. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/secrets/create.py +0 -0
  106. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/secrets/delete.py +0 -0
  107. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/secrets/get.py +0 -0
  108. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/secrets/list.py +0 -0
  109. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/secrets/update.py +0 -0
  110. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/shadow/__init__.py +0 -0
  111. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/shadow/create.py +0 -0
  112. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/shadow/delete.py +0 -0
  113. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/shadow/get.py +0 -0
  114. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/shadow/list.py +0 -0
  115. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/shadow/metadata.py +0 -0
  116. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/shadow/start.py +0 -0
  117. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/shadow/stop.py +0 -0
  118. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/shadow/update.py +0 -0
  119. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/sso/__init__.py +0 -0
  120. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/sso/create.py +0 -0
  121. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/sso/delete.py +0 -0
  122. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/sso/disable.py +0 -0
  123. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/sso/enable.py +0 -0
  124. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/sso/get.py +0 -0
  125. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/sso/update.py +0 -0
  126. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/switchback/__init__.py +0 -0
  127. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/switchback/create.py +0 -0
  128. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/switchback/delete.py +0 -0
  129. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/switchback/get.py +0 -0
  130. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/switchback/list.py +0 -0
  131. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/switchback/metadata.py +0 -0
  132. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/switchback/start.py +0 -0
  133. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/switchback/stop.py +0 -0
  134. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/switchback/update.py +0 -0
  135. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/upload/__init__.py +0 -0
  136. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/upload/create.py +0 -0
  137. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/version/__init__.py +0 -0
  138. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/version/create.py +0 -0
  139. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/version/delete.py +0 -0
  140. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/version/exists.py +0 -0
  141. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/version/get.py +0 -0
  142. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/version/list.py +0 -0
  143. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/cloud/version/update.py +0 -0
  144. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/community/__init__.py +0 -0
  145. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/community/clone.py +0 -0
  146. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/community/list.py +0 -0
  147. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/configuration/__init__.py +0 -0
  148. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/configuration/config.py +0 -0
  149. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/configuration/create.py +0 -0
  150. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/configuration/delete.py +0 -0
  151. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/configuration/list.py +0 -0
  152. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/confirm.py +0 -0
  153. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/local/__init__.py +0 -0
  154. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/local/app/__init__.py +0 -0
  155. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/local/app/delete.py +0 -0
  156. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/local/app/get.py +0 -0
  157. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/local/app/list.py +0 -0
  158. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/local/app/register.py +0 -0
  159. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/local/app/registered.py +0 -0
  160. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/local/app/sync.py +0 -0
  161. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/local/app/update.py +0 -0
  162. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/local/run/__init__.py +0 -0
  163. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/local/run/create.py +0 -0
  164. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/local/run/get.py +0 -0
  165. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/local/run/input.py +0 -0
  166. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/local/run/list.py +0 -0
  167. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/local/run/logs.py +0 -0
  168. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/local/run/metadata.py +0 -0
  169. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/local/run/visuals.py +0 -0
  170. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/main.py +0 -0
  171. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/message.py +0 -0
  172. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/options.py +0 -0
  173. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cli/version.py +0 -0
  174. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cloud/__init__.py +0 -0
  175. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cloud/acceptance_test.py +0 -0
  176. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cloud/account.py +0 -0
  177. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cloud/application/__init__.py +0 -0
  178. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cloud/application/_acceptance.py +0 -0
  179. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cloud/application/_batch_scenario.py +0 -0
  180. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cloud/application/_ensemble.py +0 -0
  181. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cloud/application/_input_set.py +0 -0
  182. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cloud/application/_instance.py +0 -0
  183. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cloud/application/_managed_input.py +0 -0
  184. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cloud/application/_run.py +0 -0
  185. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cloud/application/_secrets.py +0 -0
  186. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cloud/application/_shadow.py +0 -0
  187. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cloud/application/_switchback.py +0 -0
  188. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cloud/application/_utils.py +0 -0
  189. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cloud/application/_version.py +0 -0
  190. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cloud/assets.py +0 -0
  191. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cloud/batch_experiment.py +0 -0
  192. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cloud/client.py +0 -0
  193. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cloud/community.py +0 -0
  194. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cloud/ensemble.py +0 -0
  195. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cloud/input_set.py +0 -0
  196. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cloud/instance.py +0 -0
  197. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cloud/integration.py +0 -0
  198. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cloud/marketplace.py +0 -0
  199. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cloud/package.py +0 -0
  200. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cloud/scenario.py +0 -0
  201. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cloud/secrets.py +0 -0
  202. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cloud/shadow.py +0 -0
  203. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cloud/switchback.py +0 -0
  204. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cloud/url.py +0 -0
  205. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/cloud/version.py +0 -0
  206. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/default_app/.gitignore +0 -0
  207. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/default_app/README.md +0 -0
  208. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/default_app/input.json +0 -0
  209. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/default_app/requirements.txt +0 -0
  210. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/default_app/src/__init__.py +0 -0
  211. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/default_app/src/visuals.py +0 -0
  212. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/deprecated.py +0 -0
  213. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/input.py +0 -0
  214. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/local/__init__.py +0 -0
  215. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/local/application.py +0 -0
  216. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/local/executor.py +0 -0
  217. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/local/geojson_handler.py +0 -0
  218. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/local/local.py +0 -0
  219. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/local/plotly_handler.py +0 -0
  220. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/local/registry.py +0 -0
  221. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/local/runner.py +0 -0
  222. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/logger.py +0 -0
  223. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/manifest.py +0 -0
  224. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/model.py +0 -0
  225. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/options.py +0 -0
  226. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/output.py +0 -0
  227. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/polling.py +0 -0
  228. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/run.py +0 -0
  229. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/safe.py +0 -0
  230. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/nextmv/status.py +0 -0
  231. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/pyproject.toml +0 -0
  232. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/tests/README.md +0 -0
  233. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/tests/__init__.py +0 -0
  234. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/tests/cli/__init__.py +0 -0
  235. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/tests/cli/test_configuration.py +0 -0
  236. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/tests/cli/test_main.py +0 -0
  237. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/tests/cli/test_version.py +0 -0
  238. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/tests/cloud/__init__.py +0 -0
  239. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/tests/cloud/app.yaml +0 -0
  240. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/tests/cloud/test_client.py +0 -0
  241. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/tests/cloud/test_instance.py +0 -0
  242. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/tests/cloud/test_package.py +0 -0
  243. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/tests/cloud/test_scenario.py +0 -0
  244. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/tests/integration/__init__.py +0 -0
  245. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/tests/integration/cloud/__init__.py +0 -0
  246. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/tests/integration/cloud/test_integration_cloud.py +0 -0
  247. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/tests/integration/cloud/test_integration_marketplace.py +0 -0
  248. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/tests/local/__init__.py +0 -0
  249. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/tests/local/test_executor.py +0 -0
  250. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/tests/local/test_registry.py +0 -0
  251. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/tests/local/test_runner.py +0 -0
  252. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/tests/scripts/__init__.py +0 -0
  253. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/tests/scripts/options1.py +0 -0
  254. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/tests/scripts/options2.py +0 -0
  255. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/tests/scripts/options3.py +0 -0
  256. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/tests/scripts/options4.py +0 -0
  257. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/tests/scripts/options5.py +0 -0
  258. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/tests/scripts/options6.py +0 -0
  259. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/tests/scripts/options7.py +0 -0
  260. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/tests/test_base_model.py +0 -0
  261. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/tests/test_entrypoint/__init__.py +0 -0
  262. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/tests/test_entrypoint/test_entrypoint.py +0 -0
  263. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/tests/test_input.py +0 -0
  264. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/tests/test_inputs/test_data.csv +0 -0
  265. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/tests/test_inputs/test_data.json +0 -0
  266. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/tests/test_inputs/test_data.txt +0 -0
  267. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/tests/test_logger.py +0 -0
  268. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/tests/test_manifest.py +0 -0
  269. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/tests/test_model.py +0 -0
  270. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/tests/test_options.py +0 -0
  271. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/tests/test_output.py +0 -0
  272. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/tests/test_polling.py +0 -0
  273. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/tests/test_run.py +0 -0
  274. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/tests/test_safe.py +0 -0
  275. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/tests/test_serialization.py +0 -0
  276. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/tests/test_version.py +0 -0
  277. {nextmv-1.1.2.dev0 → nextmv-1.1.3.dev0}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nextmv
3
- Version: 1.1.2.dev0
3
+ Version: 1.1.3.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.1.3.dev0"
@@ -20,6 +20,39 @@ from nextmv.base_model import BaseModel
20
20
  from nextmv.cloud.client import Client
21
21
 
22
22
 
23
+ def _resolve_metadata_document(metadata_document: str | None = None) -> str | None:
24
+ """
25
+ Resolve the SSO metadata document from a string or a file path.
26
+
27
+ Parameters
28
+ ----------
29
+ metadata_document : str, optional
30
+ The SSO metadata document as a string or a path to a file containing
31
+ the document.
32
+
33
+ Returns
34
+ -------
35
+ str, optional
36
+ The SSO metadata document as a string, or `None` if not provided.
37
+
38
+ Raises
39
+ ------
40
+ RuntimeError
41
+ If the metadata document is a file path and the file cannot be read.
42
+ """
43
+ if metadata_document is None or metadata_document == "":
44
+ return None
45
+
46
+ meta_path = Path(metadata_document)
47
+ if meta_path.is_file():
48
+ try:
49
+ return meta_path.read_text()
50
+ except (OSError, UnicodeDecodeError) as e:
51
+ raise RuntimeError(f"Failed to read metadata document from file {meta_path}: {e}") from e
52
+
53
+ return metadata_document
54
+
55
+
23
56
  class SSOConfiguration(BaseModel):
24
57
  """
25
58
  Configuration for Single Sign-On (SSO) in Nextmv Cloud.
@@ -139,7 +172,7 @@ class SSOConfiguration(BaseModel):
139
172
  If the response status code is not 2xx.
140
173
  """
141
174
 
142
- metadata_document = __resolve_metadata_document(metadata_document)
175
+ metadata_document = _resolve_metadata_document(metadata_document)
143
176
 
144
177
  payload = {
145
178
  "allow_non_domain_users": allow_non_domain_users,
@@ -234,7 +267,7 @@ class SSOConfiguration(BaseModel):
234
267
  if metadata_url is not None and metadata_url != "":
235
268
  payload["metadata_url"] = metadata_url
236
269
  if metadata_document is not None and metadata_document != "":
237
- metadata_document = __resolve_metadata_document(metadata_document)
270
+ metadata_document = _resolve_metadata_document(metadata_document)
238
271
  payload["metadata_document"] = metadata_document
239
272
 
240
273
  self.client.request(
@@ -242,36 +275,3 @@ class SSOConfiguration(BaseModel):
242
275
  endpoint=self.sso_endpoint,
243
276
  payload=payload,
244
277
  )
245
-
246
-
247
- def __resolve_metadata_document(metadata_document: str | None = None) -> str | None:
248
- """
249
- Resolve the SSO metadata document from a string or a file path.
250
-
251
- Parameters
252
- ----------
253
- metadata_document : str, optional
254
- The SSO metadata document as a string or a path to a file containing
255
- the document.
256
-
257
- Returns
258
- -------
259
- str, optional
260
- The SSO metadata document as a string, or `None` if not provided.
261
-
262
- Raises
263
- ------
264
- RuntimeError
265
- If the metadata document is a file path and the file cannot be read.
266
- """
267
- if metadata_document is None or metadata_document == "":
268
- return None
269
-
270
- meta_path = Path(metadata_document)
271
- if meta_path.is_file():
272
- try:
273
- return meta_path.read_text()
274
- except (OSError, UnicodeDecodeError) as e:
275
- raise RuntimeError(f"Failed to read metadata document from file {meta_path}: {e}") from e
276
-
277
- return metadata_document
@@ -10,3 +10,12 @@ python:
10
10
  files:
11
11
  - src/
12
12
  - main.py
13
+
14
+ configuration:
15
+ options:
16
+ items:
17
+ - name: details
18
+ option_type: bool
19
+ default: true
20
+ description: Print details to logs. Default true.
21
+ required: false
@@ -6,9 +6,9 @@ import nextmv
6
6
  input = nextmv.load()
7
7
  name = input.data["name"]
8
8
 
9
- options = nextmv.Options(
10
- nextmv.Option("details", bool, True, "Print details to logs. Default true.", False),
11
- )
9
+ # Extract options from the manifest.
10
+ manifest = nextmv.Manifest.from_yaml(".")
11
+ options = manifest.extract_options()
12
12
 
13
13
  ##### Insert model here
14
14
 
@@ -782,3 +782,88 @@ class TestApplicationLocalRunMethods(unittest.TestCase):
782
782
  )
783
783
 
784
784
  self.assertEqual(result, mock_result)
785
+
786
+
787
+ class TestDefaultApp(unittest.TestCase):
788
+ """Test the default app runs correctly with manifest-based options."""
789
+
790
+ def test_default_app_runs_with_manifest_options(self):
791
+ """Test that the default app runs successfully with options extracted from manifest."""
792
+ with tempfile.TemporaryDirectory() as temp_dir:
793
+ # Initialize a new app (copies default_app structure)
794
+ app_name = "test-default-app"
795
+ app = Application.initialize(
796
+ src=app_name,
797
+ description="Test default application",
798
+ destination=temp_dir,
799
+ )
800
+
801
+ # Verify the manifest has the options defined
802
+ manifest = app.manifest
803
+ self.assertIsNotNone(manifest.configuration)
804
+ self.assertIsNotNone(manifest.configuration.options)
805
+ self.assertIsNotNone(manifest.configuration.options.items)
806
+ self.assertEqual(len(manifest.configuration.options.items), 1)
807
+ self.assertEqual(manifest.configuration.options.items[0].name, "details")
808
+ self.assertEqual(manifest.configuration.options.items[0].option_type, "bool")
809
+ self.assertEqual(manifest.configuration.options.items[0].default, True)
810
+
811
+ # Prepare input data for the run
812
+ input_data = {
813
+ "name": "Earth",
814
+ "radius": 6371,
815
+ "distance": 149.6,
816
+ }
817
+
818
+ # Run the application
819
+ run_id = app.new_run(input=input_data)
820
+ self.assertIsNotNone(run_id)
821
+
822
+ # Wait for run to complete and check results
823
+ result = app.run_result_with_polling(
824
+ run_id=run_id,
825
+ polling_options=PollingOptions(max_duration=30.0, delay=0.1),
826
+ )
827
+
828
+ # Verify the run succeeded
829
+ self.assertIsNotNone(result)
830
+ self.assertEqual(result.metadata.status_v2, StatusV2.succeeded)
831
+
832
+ # Verify the solution contains the expected message
833
+ self.assertIsNotNone(result.output)
834
+ self.assertIn("solution", result.output)
835
+ self.assertIn("message", result.output["solution"])
836
+ self.assertEqual(result.output["solution"]["message"], "Hello, Earth")
837
+
838
+ # Verify metrics were generated
839
+ self.assertIn("metrics", result.output)
840
+ self.assertIn("value", result.output["metrics"])
841
+ self.assertEqual(result.output["metrics"]["value"], 1.23)
842
+ self.assertIn("message", result.output["metrics"])
843
+ self.assertEqual(result.output["metrics"]["message"], "Hello, Earth")
844
+
845
+ def test_default_app_options_extraction(self):
846
+ """Test that options can be extracted from the default app manifest."""
847
+ with tempfile.TemporaryDirectory() as temp_dir:
848
+ # Initialize a new app
849
+ app_name = "test-options-extraction"
850
+ app = Application.initialize(
851
+ src=app_name,
852
+ description="Test options extraction",
853
+ destination=temp_dir,
854
+ )
855
+
856
+ # Get the manifest and extract options
857
+ manifest = app.manifest
858
+ options = manifest.extract_options(should_parse=False)
859
+
860
+ # Verify options were extracted correctly
861
+ self.assertIsNotNone(options)
862
+ self.assertEqual(len(options.options), 1)
863
+
864
+ details_option = options.options[0]
865
+ self.assertEqual(details_option.name, "details")
866
+ self.assertEqual(details_option.option_type, bool)
867
+ self.assertEqual(details_option.default, True)
868
+ self.assertEqual(details_option.description, "Print details to logs. Default true.")
869
+ self.assertEqual(details_option.required, False)
@@ -1 +0,0 @@
1
- __version__ = "v1.1.2.dev0"
File without changes
File without changes
File without changes
File without changes