qwak-sdk 0.5.62__tar.gz → 0.5.64__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.

Potentially problematic release.


This version of qwak-sdk might be problematic. Click here for more details.

Files changed (333) hide show
  1. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/PKG-INFO +5 -3
  2. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/pyproject.toml +4 -2
  3. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/__init__.py +1 -1
  4. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/build/ui.py +5 -0
  5. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/deployments/deploy/_logic/deploy_config.py +1 -1
  6. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/deployments/deploy/_logic/deployment_message_helpers.py +1 -8
  7. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/deployments/deploy/_logic/deployment_size_mapper.py +41 -3
  8. qwak_sdk-0.5.64/qwak_sdk/commands/models/deployments/deploy/_logic/local_deployment.py +193 -0
  9. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/deployments/deploy/batch/_logic/deploy_executor.py +0 -1
  10. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/deployments/deploy/batch/ui.py +1 -1
  11. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/deployments/deploy/realtime/_logic/deploy_executor.py +0 -1
  12. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/deployments/deploy/realtime/_logic/serving_strategy_mapper.py +0 -35
  13. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/deployments/deploy/realtime/ui.py +25 -5
  14. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/deployments/deploy/streaming/_logic/deploy_executor.py +0 -1
  15. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/deployments/undeploy/_logic/request_undeploy.py +0 -27
  16. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/runtime/runtime_commands_group.py +0 -2
  17. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/setup.py +5 -6
  18. qwak_sdk-0.5.62/qwak_sdk/commands/models/_logic/variations.py +0 -55
  19. qwak_sdk-0.5.62/qwak_sdk/commands/models/deployments/deploy/_logic/variations.py +0 -81
  20. qwak_sdk-0.5.62/qwak_sdk/commands/models/deployments/undeploy/_logic/variations.py +0 -74
  21. qwak_sdk-0.5.62/qwak_sdk/commands/models/runtime/traffic_update/_logic/execute_runtime_update_traffic.py +0 -54
  22. qwak_sdk-0.5.62/qwak_sdk/commands/models/runtime/traffic_update/_logic/variations.py +0 -84
  23. qwak_sdk-0.5.62/qwak_sdk/commands/models/runtime/traffic_update/ui.py +0 -37
  24. qwak_sdk-0.5.62/qwak_sdk/inner/__init__.py +0 -0
  25. qwak_sdk-0.5.62/qwak_sdk/inner/tools/__init__.py +0 -0
  26. qwak_sdk-0.5.62/qwak_sdk/tools/__init__.py +0 -0
  27. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/README.md +0 -0
  28. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/cli.py +0 -0
  29. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/__init__.py +0 -0
  30. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/_logic/__init__.py +0 -0
  31. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/_logic/tools.py +0 -0
  32. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/admin/__init__.py +0 -0
  33. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/admin/admin_commands_group.py +0 -0
  34. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/admin/apikeys/__init__.py +0 -0
  35. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/admin/apikeys/api_keys_commands_group.py +0 -0
  36. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/admin/apikeys/generate/__init__.py +0 -0
  37. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/admin/apikeys/generate/_logic.py +0 -0
  38. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/admin/apikeys/generate/ui.py +0 -0
  39. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/admin/apikeys/revoke/__init__.py +0 -0
  40. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/admin/apikeys/revoke/_logic.py +0 -0
  41. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/admin/apikeys/revoke/ui.py +0 -0
  42. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/alerts/__init__.py +0 -0
  43. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/alerts/alerts_commnad_group.py +0 -0
  44. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/alerts/delete/__init__.py +0 -0
  45. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/alerts/delete/_logic.py +0 -0
  46. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/alerts/delete/ui.py +0 -0
  47. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/alerts/list/__init__.py +0 -0
  48. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/alerts/list/_logic.py +0 -0
  49. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/alerts/list/ui.py +0 -0
  50. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/alerts/register/__init__.py +0 -0
  51. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/alerts/register/_logic.py +0 -0
  52. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/alerts/register/ui.py +0 -0
  53. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/audience/__init__.py +0 -0
  54. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/audience/_logic/__init__.py +0 -0
  55. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/audience/_logic/config/__init__.py +0 -0
  56. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/audience/_logic/config/config_base.py +0 -0
  57. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/audience/_logic/config/parser.py +0 -0
  58. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/audience/_logic/config/v1/__init__.py +0 -0
  59. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/audience/_logic/config/v1/audience_config.py +0 -0
  60. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/audience/_logic/config/v1/conditions_config.py +0 -0
  61. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/audience/_logic/config/v1/config_v1.py +0 -0
  62. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/audience/_logic/config/v1/route_config.py +0 -0
  63. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/audience/_logic/config/v1/spec.py +0 -0
  64. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/audience/audience_api_dump.py +0 -0
  65. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/audience/audience_commands_group.py +0 -0
  66. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/audience/create/__init__.py +0 -0
  67. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/audience/create/logic.py +0 -0
  68. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/audience/create/ui.py +0 -0
  69. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/audience/delete/__init__.py +0 -0
  70. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/audience/delete/logic.py +0 -0
  71. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/audience/delete/ui.py +0 -0
  72. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/audience/get/__init__.py +0 -0
  73. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/audience/get/logic.py +0 -0
  74. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/audience/get/ui.py +0 -0
  75. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/audience/list/__init__.py +0 -0
  76. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/audience/list/logic.py +0 -0
  77. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/audience/list/ui.py +0 -0
  78. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/audience/update/__init__.py +0 -0
  79. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/audience/update/logic.py +0 -0
  80. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/audience/update/ui.py +0 -0
  81. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/auto_scalling/__init__.py +0 -0
  82. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/auto_scalling/_logic/__init__.py +0 -0
  83. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/auto_scalling/_logic/config/__init__.py +0 -0
  84. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/auto_scalling/_logic/config/config.py +0 -0
  85. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/auto_scalling/_logic/config/parser.py +0 -0
  86. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/auto_scalling/attach/__init__.py +0 -0
  87. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/auto_scalling/attach/_logic.py +0 -0
  88. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/auto_scalling/attach/ui.py +0 -0
  89. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/auto_scalling/autoscaling_commands_group.py +0 -0
  90. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/automations/__init__.py +0 -0
  91. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/automations/automations_commands_group.py +0 -0
  92. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/automations/delete/__init__.py +0 -0
  93. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/automations/delete/_logic.py +0 -0
  94. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/automations/delete/ui.py +0 -0
  95. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/automations/executions/__init__.py +0 -0
  96. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/automations/executions/executions_commands_group.py +0 -0
  97. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/automations/executions/list/__init__.py +0 -0
  98. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/automations/executions/list/_logic.py +0 -0
  99. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/automations/executions/list/ui.py +0 -0
  100. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/automations/list/__init__.py +0 -0
  101. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/automations/list/_logic.py +0 -0
  102. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/automations/list/ui.py +0 -0
  103. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/automations/register/__init__.py +0 -0
  104. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/automations/register/_logic.py +0 -0
  105. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/automations/register/ui.py +0 -0
  106. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/feature_store/__init__.py +0 -0
  107. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/feature_store/backfill/__init__.py +0 -0
  108. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/feature_store/backfill/_logic.py +0 -0
  109. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/feature_store/backfill/ui.py +0 -0
  110. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/feature_store/delete/__init__.py +0 -0
  111. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/feature_store/delete/_logic.py +0 -0
  112. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/feature_store/delete/ui.py +0 -0
  113. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/feature_store/execution/__init__.py +0 -0
  114. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/feature_store/execution/ui.py +0 -0
  115. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/feature_store/feature_store_command_group.py +0 -0
  116. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/feature_store/list/__init__.py +0 -0
  117. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/feature_store/list/ui.py +0 -0
  118. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/feature_store/pause/__init__.py +0 -0
  119. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/feature_store/pause/ui.py +0 -0
  120. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/feature_store/register/__init__.py +0 -0
  121. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/feature_store/register/_logic.py +0 -0
  122. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/feature_store/register/ui.py +0 -0
  123. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/feature_store/resume/__init__.py +0 -0
  124. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/feature_store/resume/ui.py +0 -0
  125. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/feature_store/trigger/__init__.py +0 -0
  126. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/feature_store/trigger/ui.py +0 -0
  127. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/__init__.py +0 -0
  128. {qwak_sdk-0.5.62/qwak_sdk/commands/models/_logic → qwak_sdk-0.5.64/qwak_sdk/commands/models/build}/__init__.py +0 -0
  129. {qwak_sdk-0.5.62/qwak_sdk/commands/models/build → qwak_sdk-0.5.64/qwak_sdk/commands/models/build/_logic}/__init__.py +0 -0
  130. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/build/_logic/build_steps.py +0 -0
  131. {qwak_sdk-0.5.62/qwak_sdk/commands/models/build/_logic → qwak_sdk-0.5.64/qwak_sdk/commands/models/build/_logic/client_logs}/__init__.py +0 -0
  132. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/build/_logic/client_logs/cli_phase_run_handler.py +0 -0
  133. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/build/_logic/client_logs/cli_trigger_build_logger.py +0 -0
  134. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/build/_logic/client_logs/logger.py +0 -0
  135. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/build/_logic/client_logs/messages.py +0 -0
  136. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/build/_logic/client_logs/spinner.py +0 -0
  137. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/build/_logic/client_logs/trigger_build_logger.py +0 -0
  138. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/build/_logic/client_logs/utils.py +0 -0
  139. {qwak_sdk-0.5.62/qwak_sdk/commands/models/build/_logic/client_logs → qwak_sdk-0.5.64/qwak_sdk/commands/models/build/_logic/phase}/__init__.py +0 -0
  140. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/build/_logic/phase/a_fetch_model_code/__init__.py +0 -0
  141. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/build/_logic/phase/a_fetch_model_code/get_sdk_version_step.py +0 -0
  142. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/build/_logic/phase/b_remote_register_qwak_build/__init__.py +0 -0
  143. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/build/_logic/phase/c_deploy/__init__.py +0 -0
  144. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/build/_logic/phase/c_deploy/build_polling_status.py +0 -0
  145. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/build/_logic/phase/c_deploy/deploy_build.py +0 -0
  146. {qwak_sdk-0.5.62/qwak_sdk/commands/models/build/_logic/phase → qwak_sdk-0.5.64/qwak_sdk/commands/models/build/_logic/util}/__init__.py +0 -0
  147. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/build/_logic/util/protobuf_factory.py +0 -0
  148. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/build/_logic/util/step_decorator.py +0 -0
  149. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/build/_logic/util/text.py +0 -0
  150. {qwak_sdk-0.5.62/qwak_sdk/commands/models/build/_logic/util → qwak_sdk-0.5.64/qwak_sdk/commands/models/builds}/__init__.py +0 -0
  151. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/builds/builds_commands_group.py +0 -0
  152. {qwak_sdk-0.5.62/qwak_sdk/commands/models/builds → qwak_sdk-0.5.64/qwak_sdk/commands/models/builds/cancel}/__init__.py +0 -0
  153. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/builds/cancel/_logic.py +0 -0
  154. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/builds/cancel/ui.py +0 -0
  155. {qwak_sdk-0.5.62/qwak_sdk/commands/models/builds/cancel → qwak_sdk-0.5.64/qwak_sdk/commands/models/builds/logs}/__init__.py +0 -0
  156. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/builds/logs/ui.py +0 -0
  157. {qwak_sdk-0.5.62/qwak_sdk/commands/models/builds/logs → qwak_sdk-0.5.64/qwak_sdk/commands/models/builds/status}/__init__.py +0 -0
  158. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/builds/status/_logic.py +0 -0
  159. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/builds/status/ui.py +0 -0
  160. {qwak_sdk-0.5.62/qwak_sdk/commands/models/builds/status → qwak_sdk-0.5.64/qwak_sdk/commands/models/create}/__init__.py +0 -0
  161. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/create/_logic.py +0 -0
  162. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/create/ui.py +0 -0
  163. {qwak_sdk-0.5.62/qwak_sdk/commands/models/create → qwak_sdk-0.5.64/qwak_sdk/commands/models/delete}/__init__.py +0 -0
  164. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/delete/_logic.py +0 -0
  165. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/delete/ui.py +0 -0
  166. {qwak_sdk-0.5.62/qwak_sdk/commands/models/delete → qwak_sdk-0.5.64/qwak_sdk/commands/models/deployments}/__init__.py +0 -0
  167. {qwak_sdk-0.5.62/qwak_sdk/commands/models/deployments → qwak_sdk-0.5.64/qwak_sdk/commands/models/deployments/deploy}/__init__.py +0 -0
  168. {qwak_sdk-0.5.62/qwak_sdk/commands/models/deployments/deploy → qwak_sdk-0.5.64/qwak_sdk/commands/models/deployments/deploy/_logic}/__init__.py +0 -0
  169. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/deployments/deploy/_logic/advance_deployment_options_handler.py +0 -0
  170. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/deployments/deploy/_logic/base_deploy_executor.py +0 -0
  171. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/deployments/deploy/_logic/deployment.py +0 -0
  172. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/deployments/deploy/_logic/deployment_response_handler.py +0 -0
  173. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/deployments/deploy/_logic/get_latest_successful_build.py +0 -0
  174. {qwak_sdk-0.5.62/qwak_sdk/commands/models/deployments/deploy/_logic → qwak_sdk-0.5.64/qwak_sdk/commands/models/deployments/deploy/batch}/__init__.py +0 -0
  175. {qwak_sdk-0.5.62/qwak_sdk/commands/models/deployments/deploy/batch → qwak_sdk-0.5.64/qwak_sdk/commands/models/deployments/deploy/batch/_logic}/__init__.py +0 -0
  176. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/deployments/deploy/batch/_logic/advanced_deployment_mapper.py +0 -0
  177. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/deployments/deploy/deploy_commands_group.py +0 -0
  178. {qwak_sdk-0.5.62/qwak_sdk/commands/models/deployments/deploy/batch/_logic → qwak_sdk-0.5.64/qwak_sdk/commands/models/deployments/deploy/realtime}/__init__.py +0 -0
  179. {qwak_sdk-0.5.62/qwak_sdk/commands/models/deployments/deploy/realtime → qwak_sdk-0.5.64/qwak_sdk/commands/models/deployments/deploy/realtime/_logic}/__init__.py +0 -0
  180. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/deployments/deploy/realtime/_logic/advanced_deployment_mapper.py +0 -0
  181. {qwak_sdk-0.5.62/qwak_sdk/commands/models/deployments/deploy/realtime/_logic → qwak_sdk-0.5.64/qwak_sdk/commands/models/deployments/deploy/streaming}/__init__.py +0 -0
  182. {qwak_sdk-0.5.62/qwak_sdk/commands/models/deployments/deploy/streaming → qwak_sdk-0.5.64/qwak_sdk/commands/models/deployments/deploy/streaming/_logic}/__init__.py +0 -0
  183. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/deployments/deploy/streaming/_logic/serving_strategy_mapper.py +0 -0
  184. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/deployments/deploy/streaming/ui.py +0 -0
  185. {qwak_sdk-0.5.62/qwak_sdk/commands/models/deployments/deploy/streaming/_logic → qwak_sdk-0.5.64/qwak_sdk/commands/models/deployments/undeploy}/__init__.py +0 -0
  186. {qwak_sdk-0.5.62/qwak_sdk/commands/models/deployments/undeploy → qwak_sdk-0.5.64/qwak_sdk/commands/models/deployments/undeploy/_logic}/__init__.py +0 -0
  187. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/deployments/undeploy/ui.py +0 -0
  188. {qwak_sdk-0.5.62/qwak_sdk/commands/models/deployments/undeploy/_logic → qwak_sdk-0.5.64/qwak_sdk/commands/models/describe}/__init__.py +0 -0
  189. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/describe/_logic.py +0 -0
  190. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/describe/ui.py +0 -0
  191. {qwak_sdk-0.5.62/qwak_sdk/commands/models/describe → qwak_sdk-0.5.64/qwak_sdk/commands/models/executions}/__init__.py +0 -0
  192. {qwak_sdk-0.5.62/qwak_sdk/commands/models/executions → qwak_sdk-0.5.64/qwak_sdk/commands/models/executions/cancel}/__init__.py +0 -0
  193. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/executions/cancel/_logic.py +0 -0
  194. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/executions/cancel/ui.py +0 -0
  195. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/executions/execution_commands_group.py +0 -0
  196. {qwak_sdk-0.5.62/qwak_sdk/commands/models/executions/cancel → qwak_sdk-0.5.64/qwak_sdk/commands/models/executions/report}/__init__.py +0 -0
  197. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/executions/report/_logic.py +0 -0
  198. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/executions/report/ui.py +0 -0
  199. {qwak_sdk-0.5.62/qwak_sdk/commands/models/executions/report → qwak_sdk-0.5.64/qwak_sdk/commands/models/executions/start}/__init__.py +0 -0
  200. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/executions/start/_logic.py +0 -0
  201. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/executions/start/ui.py +0 -0
  202. {qwak_sdk-0.5.62/qwak_sdk/commands/models/executions/start → qwak_sdk-0.5.64/qwak_sdk/commands/models/executions/status}/__init__.py +0 -0
  203. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/executions/status/_logic.py +0 -0
  204. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/executions/status/ui.py +0 -0
  205. {qwak_sdk-0.5.62/qwak_sdk/commands/models/executions/status → qwak_sdk-0.5.64/qwak_sdk/commands/models/init}/__init__.py +0 -0
  206. {qwak_sdk-0.5.62/qwak_sdk/commands/models/init → qwak_sdk-0.5.64/qwak_sdk/commands/models/init/_logic}/__init__.py +0 -0
  207. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/init/_logic/initialize_model_structure.py +0 -0
  208. {qwak_sdk-0.5.62/qwak_sdk/commands/models/init/_logic → qwak_sdk-0.5.64/qwak_sdk/commands/models/init/_logic/template}/__init__.py +0 -0
  209. {qwak_sdk-0.5.62/qwak_sdk/commands/models/init/_logic/template → qwak_sdk-0.5.64/qwak_sdk/commands/models/init/_logic/template/churn}/__init__.py +0 -0
  210. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/init/_logic/template/churn/cookiecutter.json +0 -0
  211. {qwak_sdk-0.5.62/qwak_sdk/commands/models/init/_logic/template/churn → qwak_sdk-0.5.64/qwak_sdk/commands/models/init/_logic/template/churn/{{cookiecutter.model_directory}}}/__init__.py +0 -0
  212. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/init/_logic/template/churn/{{cookiecutter.model_directory}}/main/__init__.py +0 -0
  213. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/init/_logic/template/churn/{{cookiecutter.model_directory}}/main/conda.yml +0 -0
  214. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/init/_logic/template/churn/{{cookiecutter.model_directory}}/main/data.csv +0 -0
  215. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/init/_logic/template/churn/{{cookiecutter.model_directory}}/main/model.py +0 -0
  216. {qwak_sdk-0.5.62/qwak_sdk/commands/models/init/_logic/template/churn/{{cookiecutter.model_directory}} → qwak_sdk-0.5.64/qwak_sdk/commands/models/init/_logic/template/churn/{{cookiecutter.model_directory}}/tests}/__init__.py +0 -0
  217. {qwak_sdk-0.5.62/qwak_sdk/commands/models/init/_logic/template/churn/{{cookiecutter.model_directory}}/tests → qwak_sdk-0.5.64/qwak_sdk/commands/models/init/_logic/template/churn/{{cookiecutter.model_directory}}/tests/it}/__init__.py +0 -0
  218. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/init/_logic/template/churn/{{cookiecutter.model_directory}}/tests/it/test_churn.py +0 -0
  219. {qwak_sdk-0.5.62/qwak_sdk/commands/models/init/_logic/template/churn/{{cookiecutter.model_directory}}/tests/it → qwak_sdk-0.5.64/qwak_sdk/commands/models/init/_logic/template/credit_risk}/__init__.py +0 -0
  220. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/init/_logic/template/credit_risk/cookiecutter.json +0 -0
  221. {qwak_sdk-0.5.62/qwak_sdk/commands/models/init/_logic/template/credit_risk → qwak_sdk-0.5.64/qwak_sdk/commands/models/init/_logic/template/credit_risk/{{cookiecutter.model_directory}}}/__init__.py +0 -0
  222. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/init/_logic/template/credit_risk/{{cookiecutter.model_directory}}/main/__init__.py +0 -0
  223. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/init/_logic/template/credit_risk/{{cookiecutter.model_directory}}/main/conda.yml +0 -0
  224. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/init/_logic/template/credit_risk/{{cookiecutter.model_directory}}/main/data.csv +0 -0
  225. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/init/_logic/template/credit_risk/{{cookiecutter.model_directory}}/main/model.py +0 -0
  226. {qwak_sdk-0.5.62/qwak_sdk/commands/models/init/_logic/template/credit_risk/{{cookiecutter.model_directory}} → qwak_sdk-0.5.64/qwak_sdk/commands/models/init/_logic/template/general}/__init__.py +0 -0
  227. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/init/_logic/template/general/cookiecutter.json +0 -0
  228. {qwak_sdk-0.5.62/qwak_sdk/commands/models/init/_logic/template/general → qwak_sdk-0.5.64/qwak_sdk/commands/models/init/_logic/template/general/{{cookiecutter.model_directory}}}/__init__.py +0 -0
  229. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/init/_logic/template/general/{{cookiecutter.model_directory}}/{{cookiecutter.main_directory}}/__init__.py +0 -0
  230. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/init/_logic/template/general/{{cookiecutter.model_directory}}/{{cookiecutter.main_directory}}/conda.yml +0 -0
  231. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/init/_logic/template/general/{{cookiecutter.model_directory}}/{{cookiecutter.main_directory}}/model.py +0 -0
  232. {qwak_sdk-0.5.62/qwak_sdk/commands/models/init/_logic/template/general/{{cookiecutter.model_directory}} → qwak_sdk-0.5.64/qwak_sdk/commands/models/init/_logic/template/general/{{cookiecutter.model_directory}}/{{cookiecutter.test_directory}}}/__init__.py +0 -0
  233. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/init/_logic/template/general/{{cookiecutter.model_directory}}/{{cookiecutter.test_directory}}/test_qwak_model.py +0 -0
  234. {qwak_sdk-0.5.62/qwak_sdk/commands/models/init/_logic/template/general/{{cookiecutter.model_directory}}/{{cookiecutter.test_directory}} → qwak_sdk-0.5.64/qwak_sdk/commands/models/init/_logic/template/titanic}/__init__.py +0 -0
  235. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/init/_logic/template/titanic/cookiecutter.json +0 -0
  236. {qwak_sdk-0.5.62/qwak_sdk/commands/models/init/_logic/template/titanic → qwak_sdk-0.5.64/qwak_sdk/commands/models/init/_logic/template/titanic/{{cookiecutter.model_directory}}}/__init__.py +0 -0
  237. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/init/_logic/template/titanic/{{cookiecutter.model_directory}}/main/__init__.py +0 -0
  238. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/init/_logic/template/titanic/{{cookiecutter.model_directory}}/main/conda.yml +0 -0
  239. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/init/_logic/template/titanic/{{cookiecutter.model_directory}}/main/model.py +0 -0
  240. {qwak_sdk-0.5.62/qwak_sdk/commands/models/init/_logic/template/titanic/{{cookiecutter.model_directory}} → qwak_sdk-0.5.64/qwak_sdk/commands/models/init/_logic/template/titanic/{{cookiecutter.model_directory}}/tests}/__init__.py +0 -0
  241. {qwak_sdk-0.5.62/qwak_sdk/commands/models/init/_logic/template/titanic/{{cookiecutter.model_directory}}/tests → qwak_sdk-0.5.64/qwak_sdk/commands/models/init/_logic/template/titanic/{{cookiecutter.model_directory}}/tests/it}/__init__.py +0 -0
  242. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/init/_logic/template/titanic/{{cookiecutter.model_directory}}/tests/it/test_titanic.py +0 -0
  243. {qwak_sdk-0.5.62/qwak_sdk/commands/models/init/_logic/template/titanic/{{cookiecutter.model_directory}}/tests/it → qwak_sdk-0.5.64/qwak_sdk/commands/models/init/_logic/template/titanic_poetry}/__init__.py +0 -0
  244. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/init/_logic/template/titanic_poetry/cookiecutter.json +0 -0
  245. {qwak_sdk-0.5.62/qwak_sdk/commands/models/init/_logic/template/titanic_poetry → qwak_sdk-0.5.64/qwak_sdk/commands/models/init/_logic/template/titanic_poetry/{{cookiecutter.model_directory}}}/__init__.py +0 -0
  246. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/init/_logic/template/titanic_poetry/{{cookiecutter.model_directory}}/main/__init__.py +0 -0
  247. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/init/_logic/template/titanic_poetry/{{cookiecutter.model_directory}}/main/model.py +0 -0
  248. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/init/_logic/template/titanic_poetry/{{cookiecutter.model_directory}}/main/pyproject.toml +0 -0
  249. {qwak_sdk-0.5.62/qwak_sdk/commands/models/init/_logic/template/titanic_poetry/{{cookiecutter.model_directory}} → qwak_sdk-0.5.64/qwak_sdk/commands/models/init/_logic/template/titanic_poetry/{{cookiecutter.model_directory}}/tests}/__init__.py +0 -0
  250. {qwak_sdk-0.5.62/qwak_sdk/commands/models/init/_logic/template/titanic_poetry/{{cookiecutter.model_directory}}/tests → qwak_sdk-0.5.64/qwak_sdk/commands/models/init/_logic/template/titanic_poetry/{{cookiecutter.model_directory}}/tests/it}/__init__.py +0 -0
  251. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/init/_logic/template/titanic_poetry/{{cookiecutter.model_directory}}/tests/it/test_titanic.py +0 -0
  252. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/init/ui.py +0 -0
  253. {qwak_sdk-0.5.62/qwak_sdk/commands/models/init/_logic/template/titanic_poetry/{{cookiecutter.model_directory}}/tests/it → qwak_sdk-0.5.64/qwak_sdk/commands/models/list}/__init__.py +0 -0
  254. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/list/_logic.py +0 -0
  255. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/list/ui.py +0 -0
  256. {qwak_sdk-0.5.62/qwak_sdk/commands/models/list → qwak_sdk-0.5.64/qwak_sdk/commands/models/list_models}/__init__.py +0 -0
  257. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/list_models/_logic.py +0 -0
  258. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/list_models/ui.py +0 -0
  259. {qwak_sdk-0.5.62/qwak_sdk/commands/models/list_models → qwak_sdk-0.5.64/qwak_sdk/commands/models/metadata}/__init__.py +0 -0
  260. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/metadata/_logic.py +0 -0
  261. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/metadata/ui.py +0 -0
  262. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/models_command_group.py +0 -0
  263. {qwak_sdk-0.5.62/qwak_sdk/commands/models/metadata → qwak_sdk-0.5.64/qwak_sdk/commands/models/runtime}/__init__.py +0 -0
  264. {qwak_sdk-0.5.62/qwak_sdk/commands/models/runtime → qwak_sdk-0.5.64/qwak_sdk/commands/models/runtime/logs}/__init__.py +0 -0
  265. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/runtime/logs/ui.py +0 -0
  266. {qwak_sdk-0.5.62/qwak_sdk/commands/models/runtime/logs → qwak_sdk-0.5.64/qwak_sdk/commands/models/runtime/update}/__init__.py +0 -0
  267. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/runtime/update/_logic.py +0 -0
  268. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/models/runtime/update/ui.py +0 -0
  269. {qwak_sdk-0.5.62/qwak_sdk/commands/models/runtime/traffic_update → qwak_sdk-0.5.64/qwak_sdk/commands/projects}/__init__.py +0 -0
  270. {qwak_sdk-0.5.62/qwak_sdk/commands/models/runtime/traffic_update/_logic → qwak_sdk-0.5.64/qwak_sdk/commands/projects/create}/__init__.py +0 -0
  271. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/projects/create/_logic.py +0 -0
  272. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/projects/create/ui.py +0 -0
  273. {qwak_sdk-0.5.62/qwak_sdk/commands/models/runtime/update → qwak_sdk-0.5.64/qwak_sdk/commands/projects/delete}/__init__.py +0 -0
  274. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/projects/delete/_logic.py +0 -0
  275. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/projects/delete/ui.py +0 -0
  276. {qwak_sdk-0.5.62/qwak_sdk/commands/projects → qwak_sdk-0.5.64/qwak_sdk/commands/projects/list}/__init__.py +0 -0
  277. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/projects/list/_logic.py +0 -0
  278. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/projects/list/ui.py +0 -0
  279. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/projects/projects_command_group.py +0 -0
  280. {qwak_sdk-0.5.62/qwak_sdk/commands/projects/create → qwak_sdk-0.5.64/qwak_sdk/commands/secrets}/__init__.py +0 -0
  281. {qwak_sdk-0.5.62/qwak_sdk/commands/projects → qwak_sdk-0.5.64/qwak_sdk/commands/secrets}/delete/__init__.py +0 -0
  282. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/secrets/delete/_logic.py +0 -0
  283. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/secrets/delete/ui.py +0 -0
  284. {qwak_sdk-0.5.62/qwak_sdk/commands/projects/list → qwak_sdk-0.5.64/qwak_sdk/commands/secrets/get}/__init__.py +0 -0
  285. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/secrets/get/_logic.py +0 -0
  286. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/secrets/get/ui.py +0 -0
  287. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/secrets/secrets_commands_group.py +0 -0
  288. {qwak_sdk-0.5.62/qwak_sdk/commands/secrets → qwak_sdk-0.5.64/qwak_sdk/commands/secrets/set}/__init__.py +0 -0
  289. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/secrets/set/_logic.py +0 -0
  290. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/secrets/set/ui.py +0 -0
  291. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/ui_tools.py +0 -0
  292. {qwak_sdk-0.5.62/qwak_sdk/commands/secrets/delete → qwak_sdk-0.5.64/qwak_sdk/commands/workspaces}/__init__.py +0 -0
  293. {qwak_sdk-0.5.62/qwak_sdk/commands/secrets/get → qwak_sdk-0.5.64/qwak_sdk/commands/workspaces/_logic}/__init__.py +0 -0
  294. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/workspaces/_logic/tools.py +0 -0
  295. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/workspaces/_logic/workspace_validations.py +0 -0
  296. {qwak_sdk-0.5.62/qwak_sdk/commands/secrets/set → qwak_sdk-0.5.64/qwak_sdk/commands/workspaces/config}/__init__.py +0 -0
  297. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/workspaces/config/workspace_config.py +0 -0
  298. {qwak_sdk-0.5.62/qwak_sdk/commands/workspaces → qwak_sdk-0.5.64/qwak_sdk/commands/workspaces/create}/__init__.py +0 -0
  299. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/workspaces/create/_logic.py +0 -0
  300. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/workspaces/create/ui.py +0 -0
  301. {qwak_sdk-0.5.62/qwak_sdk/commands/workspaces/_logic → qwak_sdk-0.5.64/qwak_sdk/commands/workspaces/delete}/__init__.py +0 -0
  302. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/workspaces/delete/_logic.py +0 -0
  303. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/workspaces/delete/ui.py +0 -0
  304. {qwak_sdk-0.5.62/qwak_sdk/commands/workspaces/config → qwak_sdk-0.5.64/qwak_sdk/commands/workspaces/start}/__init__.py +0 -0
  305. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/workspaces/start/_logic.py +0 -0
  306. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/workspaces/start/ui.py +0 -0
  307. {qwak_sdk-0.5.62/qwak_sdk/commands/workspaces/create → qwak_sdk-0.5.64/qwak_sdk/commands/workspaces/stop}/__init__.py +0 -0
  308. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/workspaces/stop/_logic.py +0 -0
  309. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/workspaces/stop/ui.py +0 -0
  310. {qwak_sdk-0.5.62/qwak_sdk/commands/workspaces/delete → qwak_sdk-0.5.64/qwak_sdk/commands/workspaces/update}/__init__.py +0 -0
  311. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/workspaces/update/_logic.py +0 -0
  312. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/workspaces/update/ui.py +0 -0
  313. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/commands/workspaces/workspaces_commands_group.py +0 -0
  314. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/exceptions/__init__.py +0 -0
  315. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/exceptions/qwak_command_exception.py +0 -0
  316. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/exceptions/qwak_deploy_new_build_failed.py +0 -0
  317. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/exceptions/qwak_resource_not_found.py +0 -0
  318. {qwak_sdk-0.5.62/qwak_sdk/commands/workspaces/start → qwak_sdk-0.5.64/qwak_sdk/inner}/__init__.py +0 -0
  319. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/inner/file_registry.py +0 -0
  320. {qwak_sdk-0.5.62/qwak_sdk/commands/workspaces/stop → qwak_sdk-0.5.64/qwak_sdk/inner/tools}/__init__.py +0 -0
  321. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/inner/tools/cli_tools.py +0 -0
  322. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/inner/tools/config_handler.py +0 -0
  323. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/inner/tools/dataclasses_utils.py +0 -0
  324. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/inner/tools/logger/__init__.py +0 -0
  325. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/inner/tools/logger/logger.py +0 -0
  326. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/inner/tools/logger/logging.yml +0 -0
  327. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/inner/tools/tracking.py +0 -0
  328. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/main.py +0 -0
  329. {qwak_sdk-0.5.62/qwak_sdk/commands/workspaces/update → qwak_sdk-0.5.64/qwak_sdk/tools}/__init__.py +0 -0
  330. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/tools/colors.py +0 -0
  331. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/tools/files.py +0 -0
  332. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/tools/log_handling.py +0 -0
  333. {qwak_sdk-0.5.62 → qwak_sdk-0.5.64}/qwak_sdk/tools/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: qwak-sdk
3
- Version: 0.5.62
3
+ Version: 0.5.64
4
4
  Summary: Qwak SDK and CLI for qwak models
5
5
  License: Apache-2.0
6
6
  Keywords: mlops,ml,deployment,serving,model
@@ -19,7 +19,8 @@ Classifier: Programming Language :: Python :: Implementation :: CPython
19
19
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
20
20
  Provides-Extra: batch
21
21
  Provides-Extra: feedback
22
- Requires-Dist: boto3 (>=1.24.116,<2.0.0) ; extra == "batch" or extra == "feedback"
22
+ Provides-Extra: local-deployment
23
+ Requires-Dist: boto3 (>=1.24.116,<2.0.0) ; extra == "batch" or extra == "feedback" or extra == "local-deployment"
23
24
  Requires-Dist: cookiecutter
24
25
  Requires-Dist: croniter (==1.4.1)
25
26
  Requires-Dist: gitpython (>=2.1.0)
@@ -28,8 +29,9 @@ Requires-Dist: pandas (<1.4) ; (python_full_version >= "3.7.1" and python_versio
28
29
  Requires-Dist: pandas (>=1.4.3,<2.0.0) ; (python_version >= "3.8" and python_version < "3.10") and (extra == "batch" or extra == "feedback")
29
30
  Requires-Dist: pyarrow (>=6.0.0,<11.0.0) ; extra == "batch"
30
31
  Requires-Dist: python-json-logger (>=2.0.2)
31
- Requires-Dist: qwak-core (==0.3.129)
32
+ Requires-Dist: qwak-core (==0.3.163)
32
33
  Requires-Dist: qwak-inference (>=0.1,<0.2)
34
+ Requires-Dist: rich (>=13.0.0)
33
35
  Requires-Dist: tabulate (>=0.8.0)
34
36
  Requires-Dist: yaspin (>=2.0.0)
35
37
  Project-URL: Home page, https://www.qwak.com/
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "qwak-sdk"
3
- version = "0.5.62"
3
+ version = "0.5.64"
4
4
  description = "Qwak SDK and CLI for qwak models"
5
5
  authors = ["Qwak <info@qwak.com>"]
6
6
  readme = "README.md"
@@ -27,12 +27,13 @@ qwak = "qwak_sdk.main:qwak_cli"
27
27
 
28
28
  [tool.poetry.dependencies]
29
29
  python = ">=3.7.1,<3.10"
30
- qwak-core = "==0.3.129"
30
+ qwak-core = "==0.3.163"
31
31
  qwak-inference = "~0.1"
32
32
  croniter = "==1.4.1"
33
33
  tabulate = ">=0.8.0"
34
34
  python-json-logger = ">=2.0.2"
35
35
  yaspin = ">=2.0.0"
36
+ rich = ">=13.0.0"
36
37
  cookiecutter = "*"
37
38
  gitpython = ">=2.1.0"
38
39
  boto3 = { version = "^1.24.116", optional = true } # Inference dependencies
@@ -62,6 +63,7 @@ mypy-protobuf = "^3.0.0"
62
63
  [tool.poetry.extras]
63
64
  batch = ["boto3", "pandas", "pyarrow", "joblib"]
64
65
  feedback = ["boto3", "pandas", "joblib"]
66
+ local-deployment = ["boto3"]
65
67
 
66
68
  [tool.black]
67
69
  extend-exclude = '''
@@ -1,6 +1,6 @@
1
1
  # fmt: off
2
2
  __author__ = '''Qwak.ai'''
3
- __version__ = '0.5.62'
3
+ __version__ = '0.5.64'
4
4
 
5
5
  from qwak.inner import wire_dependencies
6
6
 
@@ -110,6 +110,11 @@ from qwak_sdk.inner.tools.config_handler import config_handler
110
110
  type=str,
111
111
  help="[REMOTE BUILD] Custom IAM Role ARN.",
112
112
  )
113
+ @click.option(
114
+ "--service-account-key-secret-name",
115
+ type=str,
116
+ help="Custom service account for Gcp.",
117
+ )
113
118
  @click.option(
114
119
  "--cache/--no-cache",
115
120
  default=None,
@@ -246,7 +246,7 @@ class DeployConfig(YamlConfigMixin, QwakConfigBase):
246
246
  @dataclass
247
247
  class AdvancedOptions:
248
248
  iam_role_arn: str = field(default=None)
249
- purchase_option: str = field(default=PurchaseOption.SPOT.value)
249
+ purchase_option: str = field(default="")
250
250
  service_account_key_secret_name: str = field(default=None)
251
251
 
252
252
  model_id: str = field(default="")
@@ -11,7 +11,6 @@ from _qwak_proto.qwak.deployment.deployment_pb2 import (
11
11
  ServingStrategy,
12
12
  )
13
13
  from qwak.clients.administration.eco_system.client import EcosystemClient
14
- from qwak.clients.deployment.client import DeploymentManagementClient
15
14
  from qwak.clients.instance_template.client import InstanceTemplateManagementClient
16
15
  from qwak.exceptions import QwakException
17
16
 
@@ -40,12 +39,11 @@ UNKNOWN_SERVING_STRATEGY = (
40
39
  def get_env_to_deployment_message(
41
40
  deploy_config: DeployConfig,
42
41
  kube_deployment_type: KubeDeploymentType,
43
- deployment_client: DeploymentManagementClient,
44
42
  ecosystem_client: EcosystemClient,
45
43
  instance_template_client: InstanceTemplateManagementClient,
46
44
  ) -> Dict[str, EnvironmentDeploymentMessage]:
47
45
  deployment_size = deployment_size_from_deploy_config(
48
- deploy_config, instance_template_client
46
+ deploy_config, instance_template_client, ecosystem_client
49
47
  )
50
48
  advanced_deployment_options = get_advanced_deployment_options_from_deploy_config(
51
49
  deploy_config, kube_deployment_type
@@ -60,13 +58,8 @@ def get_env_to_deployment_message(
60
58
  )
61
59
 
62
60
  if kube_deployment_type == KubeDeploymentType.ONLINE:
63
- model_traffic = deployment_client.get_model_traffic_config(
64
- deploy_config.model_id
65
- )
66
-
67
61
  env_to_serving_strategy = create_realtime_serving_strategy_from_deploy_config(
68
62
  deploy_config,
69
- model_traffic,
70
63
  environment_name_to_config,
71
64
  )
72
65
  environment_variables = dictify_params(deploy_config.realtime.env_vars)
@@ -7,8 +7,11 @@ from _qwak_proto.qwak.user_application.common.v0.resources_pb2 import (
7
7
  GpuResources,
8
8
  PodComputeResourceTemplateSpec,
9
9
  )
10
+ from qwak.clients.administration.eco_system.client import EcosystemClient
10
11
  from qwak.clients.instance_template.client import InstanceTemplateManagementClient
12
+ from qwak.exceptions import QwakException
11
13
  from qwak.inner.instance_template.verify_template_id import verify_template_id
14
+ from qwak.inner.provider import Provider
12
15
 
13
16
  from qwak_sdk.commands.models.deployments.deploy._logic.deploy_config import (
14
17
  DeployConfig,
@@ -18,14 +21,37 @@ from qwak_sdk.commands.models.deployments.deploy._logic.deploy_config import (
18
21
  def deployment_size_from_deploy_config(
19
22
  deploy_config: DeployConfig,
20
23
  instance_template_client: InstanceTemplateManagementClient,
24
+ ecosystem_client: EcosystemClient,
21
25
  ) -> DeploymentSize:
22
26
  if deploy_config.resources.instance_size:
23
27
  deploy_config.resources.instance_size = (
24
28
  deploy_config.resources.instance_size.lower()
25
29
  )
26
- verify_template_id(
27
- deploy_config.resources.instance_size, instance_template_client
28
- )
30
+ account_details = ecosystem_client.get_account_details()
31
+ if deploy_config.environments:
32
+ environments_config = list(
33
+ ecosystem_client.get_environments_names_to_details(
34
+ deploy_config.environments
35
+ ).values()
36
+ )
37
+ else:
38
+ environments_config = [
39
+ account_details.environment_by_id[
40
+ account_details.default_environment_id
41
+ ]
42
+ ]
43
+ for environment_config in environments_config:
44
+ provider = __get_provider(environment_config)
45
+ try:
46
+ verify_template_id(
47
+ deploy_config.resources.instance_size,
48
+ instance_template_client,
49
+ provider=provider,
50
+ )
51
+ except QwakException as e:
52
+ raise QwakException(
53
+ f"Error with template {deploy_config.resources.instance_size} for environment {environment_config.name}: {e.message}"
54
+ )
29
55
 
30
56
  return DeploymentSize(
31
57
  number_of_pods=deploy_config.resources.pods,
@@ -56,3 +82,15 @@ def deployment_size_from_deploy_config(
56
82
  )
57
83
  ),
58
84
  )
85
+
86
+
87
+ def __get_provider(environment_config):
88
+ provider = None
89
+ cloud_type = environment_config.configuration.cloud_configuration.WhichOneof(
90
+ "configuration"
91
+ )
92
+ if cloud_type == "aws_cloud_configuration":
93
+ provider = Provider.AWS
94
+ elif cloud_type == "gcp_cloud_configuration":
95
+ provider = Provider.GCP
96
+ return provider
@@ -0,0 +1,193 @@
1
+ import base64
2
+
3
+ from _qwak_proto.qwak.ecosystem.v0.ecosystem_runtime_service_pb2 import (
4
+ GetCloudCredentialsParameters,
5
+ GetCloudCredentialsRequest,
6
+ PermissionSet,
7
+ PullModelsContainerRegistry,
8
+ )
9
+ from google.protobuf.duration_pb2 import Duration
10
+ from qwak.clients.administration.eco_system.client import EcosystemClient
11
+ from qwak.clients.build_orchestrator import BuildOrchestratorClient
12
+ from qwak.exceptions import QwakException
13
+ from rich.console import Console
14
+ from rich.layout import Layout
15
+ from rich.panel import Panel
16
+ from rich.progress import Progress
17
+
18
+ from qwak_sdk.commands.models.deployments.deploy._logic.deploy_config import (
19
+ DeployConfig,
20
+ )
21
+
22
+ tasks = {}
23
+
24
+
25
+ def local_deploy(config: DeployConfig):
26
+ try:
27
+ import docker
28
+ except ImportError:
29
+ raise QwakException(
30
+ "Error: 'docker' package is required to for local model deployment."
31
+ )
32
+
33
+ console = Console()
34
+ console.print(Panel(f"Deploying model {config.model_id} locally", style="green"))
35
+
36
+ client = docker.from_env()
37
+ build_image = _get_build_image(config)
38
+
39
+ if not client.images.list(name=build_image):
40
+ console.print(
41
+ "Pulling serving image from Qwak's remote repository. Might take a few minutes...",
42
+ style="yellow",
43
+ )
44
+ _docker_login(client)
45
+ _image_pull(client, build_image)
46
+
47
+ try:
48
+ container = start_local_qwak_container(build_image, client, config)
49
+ container.reload()
50
+ host_port = container.ports.get("5000/tcp")[0]["HostPort"]
51
+
52
+ layout = example_usage_layout(host_port)
53
+ console.print(layout)
54
+
55
+ for line in container.logs(stream=True):
56
+ console.print(str(line.strip().decode()), style="blue")
57
+
58
+ except KeyboardInterrupt:
59
+ console.print(Panel("Stopping container...", style="red"))
60
+ container.stop()
61
+ container.remove()
62
+
63
+
64
+ def example_usage_layout(host_port: str):
65
+ layout = Layout(size=6)
66
+ layout.split_row(
67
+ Layout(name="left"),
68
+ Layout(name="right"),
69
+ )
70
+ layout["left"].update(
71
+ Panel(
72
+ f"[bold]cURL usage:[bold]\n\n"
73
+ f"curl --location\n"
74
+ f"--request POST http://localhost:{host_port}/predict\n"
75
+ f"--header 'Content-Type: application/json'\n"
76
+ f"--data '...'",
77
+ style="green",
78
+ )
79
+ )
80
+ layout["right"].update(
81
+ Panel(
82
+ f"[bold]Python client usage:[bold]\n\n"
83
+ f"from qwak_inference import RealtimeClient\n\nfeature_vector=[...]\n"
84
+ f"client = RealTimeClient(model_api='http://localhost:{host_port}/predict')\n"
85
+ f"client.predict(feature_vector)",
86
+ style="green",
87
+ )
88
+ )
89
+ return layout
90
+
91
+
92
+ def start_local_qwak_container(build_image: str, docker_client, config: DeployConfig):
93
+ return docker_client.containers.run(
94
+ build_image,
95
+ command=["bentoml", "serve-gunicorn", "./"],
96
+ entrypoint="./docker-entrypoint.sh",
97
+ environment=[
98
+ "BENTOML_GUNICORN_WORKERS=2",
99
+ "QWAK_DEBUG_MODE=True",
100
+ f"QWAK_MODEL_ID={config.model_id}",
101
+ "BENTOML_DO_NOT_TRACK=True",
102
+ "PYTHONPATH=/qwak/model_dir:/qwak/model_dir/main:$PYTHONPATH",
103
+ f"QWAK_BUILD_ID={config.build_id}",
104
+ "BUNDLE_PATH=/home/bentoml/bundle",
105
+ "BENTOML_HOME=/home/bentoml/",
106
+ ],
107
+ stream=True,
108
+ detach=True,
109
+ publish_all_ports=True,
110
+ )
111
+
112
+
113
+ def _get_build_image(config: DeployConfig):
114
+ return (
115
+ BuildOrchestratorClient().get_build(config.build_id).build.build_destined_image
116
+ )
117
+
118
+
119
+ def _show_progress(line, progress):
120
+ if line["status"] == "Downloading":
121
+ idx = f'[red][Download {line["id"]}]'
122
+ elif line["status"] == "Extracting":
123
+ idx = f'[green][Extract {line["id"]}]'
124
+ else:
125
+ # skip other statuses
126
+ return
127
+
128
+ if idx not in tasks.keys():
129
+ tasks[idx] = progress.add_task(f"{idx}", total=line["progressDetail"]["total"])
130
+ else:
131
+ progress.update(tasks[idx], completed=line["progressDetail"]["current"])
132
+
133
+
134
+ def _image_pull(docker_client, image_name: str):
135
+ with Progress() as progress:
136
+ resp = docker_client.api.pull(image_name, stream=True, decode=True)
137
+ for line in resp:
138
+ _show_progress(line, progress)
139
+
140
+
141
+ def _docker_login(docker_client):
142
+ try:
143
+ import boto3
144
+ except ImportError:
145
+ raise QwakException(
146
+ "Error: The 'boto3' package is necessary for local model deployment. Install it directly or by running"
147
+ " 'pip install qwak[local-deployment]'"
148
+ )
149
+
150
+ # TODO: block if not an AWS based container registry
151
+ credentials = _get_aws_credentials()
152
+
153
+ aws_credentials = credentials.cloud_credentials.aws_temporary_credentials
154
+ ecr_client = boto3.Session(
155
+ aws_access_key_id=aws_credentials.access_key_id,
156
+ aws_secret_access_key=aws_credentials.secret_access_key,
157
+ aws_session_token=aws_credentials.session_token,
158
+ region_name=aws_credentials.region,
159
+ ).client("ecr")
160
+
161
+ ecr_credentials = ecr_client.get_authorization_token()["authorizationData"][0]
162
+
163
+ try:
164
+ docker_client.login(
165
+ username="AWS",
166
+ registry=ecr_credentials["proxyEndpoint"],
167
+ password=base64.b64decode(ecr_credentials["authorizationToken"])
168
+ .replace(b"AWS:", b"")
169
+ .decode("utf-8"),
170
+ )
171
+
172
+ except Exception as e:
173
+ raise QwakException(f"Failed to login to Qwak's container registry: {e}")
174
+
175
+
176
+ def _get_aws_credentials():
177
+ try:
178
+ eco_client = EcosystemClient()
179
+ credentials = eco_client.get_cloud_credentials(
180
+ request=GetCloudCredentialsRequest(
181
+ parameters=GetCloudCredentialsParameters(
182
+ duration=Duration(seconds=60 * 60, nanos=0), # 6 hours
183
+ permission_set=PermissionSet(
184
+ pull_models_container_registry=PullModelsContainerRegistry()
185
+ ),
186
+ )
187
+ )
188
+ )
189
+ return credentials
190
+ except Exception as e:
191
+ raise QwakException(
192
+ f"Failed to get credentials to pull image from Qwak's container registry: {e}."
193
+ )
@@ -14,7 +14,6 @@ class BatchDeployExecutor(BaseDeployExecutor):
14
14
  env_deployment_messages = get_env_to_deployment_message(
15
15
  self.config,
16
16
  KubeDeploymentType.BATCH,
17
- self.deploy_client,
18
17
  self.ecosystem_client,
19
18
  self.instance_template_client,
20
19
  )
@@ -64,7 +64,7 @@ from qwak_sdk.inner.tools.config_handler import config_handler
64
64
  @click.option(
65
65
  "--service-account-key-secret-name",
66
66
  type=str,
67
- help="Custom service accound for Gcp.",
67
+ help="Custom service account for Gcp.",
68
68
  )
69
69
  @click.option(
70
70
  "--sync",
@@ -14,7 +14,6 @@ class RealtimeDeployExecutor(BaseDeployExecutor):
14
14
  env_deployment_messages = get_env_to_deployment_message(
15
15
  self.config,
16
16
  KubeDeploymentType.ONLINE,
17
- self.deploy_client,
18
17
  self.ecosystem_client,
19
18
  self.instance_template_client,
20
19
  )
@@ -7,24 +7,14 @@ from _qwak_proto.qwak.deployment.deployment_pb2 import (
7
7
  RealTimeConfig,
8
8
  ServingStrategy,
9
9
  TrafficConfig,
10
- Variation,
11
- )
12
- from _qwak_proto.qwak.deployment.deployment_service_pb2 import (
13
- GetDeploymentStatusResponse,
14
10
  )
15
11
  from _qwak_proto.qwak.ecosystem.v0.ecosystem_pb2 import UserContextEnvironmentDetails
16
12
  from qwak.exceptions import QwakException
17
13
 
18
14
  from qwak_sdk.commands.audience._logic.config.v1.audience_config import AudienceConfig
19
- from qwak_sdk.commands.models._logic.variations import (
20
- create_variation_from_variation_config,
21
- )
22
15
  from qwak_sdk.commands.models.deployments.deploy._logic.deploy_config import (
23
16
  DeployConfig,
24
17
  )
25
- from qwak_sdk.commands.models.deployments.deploy._logic.variations import (
26
- get_variations_for_deploy,
27
- )
28
18
 
29
19
 
30
20
  def create_realtime_serving_strategy(
@@ -32,7 +22,6 @@ def create_realtime_serving_strategy(
32
22
  audiences: List[AudienceConfig],
33
23
  fallback_variation: str,
34
24
  variation_name: str,
35
- variations: List[Variation],
36
25
  variation_protected_state: bool = False,
37
26
  ) -> ServingStrategy:
38
27
  return ServingStrategy(
@@ -41,7 +30,6 @@ def create_realtime_serving_strategy(
41
30
  auto_scaling_config=auto_scaling,
42
31
  traffic_config=TrafficConfig(
43
32
  selected_variation_name=variation_name,
44
- variations=variations,
45
33
  audience_routes_entries=[
46
34
  audience.to_audience_route_entry(index)
47
35
  for index, audience in enumerate(audiences)
@@ -56,7 +44,6 @@ def create_realtime_serving_strategy(
56
44
 
57
45
  def create_realtime_serving_strategy_from_deploy_config(
58
46
  deploy_config: DeployConfig,
59
- model_traffic: GetDeploymentStatusResponse,
60
47
  environment_name_to_config: Dict[str, UserContextEnvironmentDetails],
61
48
  ) -> Dict[str, ServingStrategy]:
62
49
  serving_strategies = {}
@@ -70,34 +57,12 @@ def create_realtime_serving_strategy_from_deploy_config(
70
57
  else None
71
58
  )
72
59
  for env_name, env_config in environment_name_to_config.items():
73
- env_variations_response = model_traffic.environment_to_model_traffic.get(
74
- env_config.id
75
- )
76
- existing_variation = (
77
- env_variations_response.variations if env_variations_response else []
78
- )
79
60
  try:
80
- variations = []
81
- if not deploy_config.realtime.audiences:
82
- variations = get_variations_for_deploy(
83
- variation_name=variation_name,
84
- existing_variations=existing_variation,
85
- requested_variations=list(
86
- map(
87
- create_variation_from_variation_config,
88
- deploy_config.realtime.variations,
89
- )
90
- ),
91
- environment_name=env_name,
92
- variation_protected_state=variation_protected_state,
93
- )
94
-
95
61
  serving_strategies[env_config.id] = create_realtime_serving_strategy(
96
62
  auto_scaling,
97
63
  deploy_config.realtime.audiences,
98
64
  fallback_variation,
99
65
  variation_name,
100
- variations,
101
66
  variation_protected_state,
102
67
  )
103
68
 
@@ -14,6 +14,9 @@ from qwak_sdk.commands.models.deployments.deploy._logic.deploy_config import (
14
14
  from qwak_sdk.commands.models.deployments.deploy._logic.deployment_response_handler import (
15
15
  client_deployment,
16
16
  )
17
+ from qwak_sdk.commands.models.deployments.deploy._logic.local_deployment import (
18
+ local_deploy,
19
+ )
17
20
  from qwak_sdk.commands.models.deployments.deploy.realtime._logic.deploy_executor import (
18
21
  RealtimeDeployExecutor,
19
22
  )
@@ -87,7 +90,7 @@ logger = get_qwak_logger()
87
90
  @click.option(
88
91
  "--service-account-key-secret-name",
89
92
  type=str,
90
- help="Custom service accound for Gcp.",
93
+ help="Custom service account for Gcp.",
91
94
  )
92
95
  @click.option(
93
96
  "--max-batch-size",
@@ -113,6 +116,12 @@ logger = get_qwak_logger()
113
116
  default=False,
114
117
  help="Waiting for deployments to be ready",
115
118
  )
119
+ @click.option(
120
+ "--local",
121
+ is_flag=True,
122
+ default=False,
123
+ help="Deploy the model container locally, for development purposes only",
124
+ )
116
125
  @click.option(
117
126
  "-v",
118
127
  "--verbose",
@@ -170,13 +179,20 @@ logger = get_qwak_logger()
170
179
  help="Whether the deployment variation is protected. Default is false",
171
180
  )
172
181
  def realtime(
173
- verbose: bool, from_file: Optional[str], out_conf: bool, sync: bool, **kwargs
182
+ verbose: bool,
183
+ from_file: Optional[str],
184
+ out_conf: bool,
185
+ sync: bool,
186
+ local: bool,
187
+ **kwargs,
174
188
  ):
175
189
  set_qwak_logger_stdout_verbosity_level(verbose + 1)
176
- deploy_realtime(from_file, out_conf, sync, **kwargs)
190
+ deploy_realtime(from_file, out_conf, sync, local, **kwargs)
177
191
 
178
192
 
179
- def deploy_realtime(from_file: Optional[str], out_conf: bool, sync: bool, **kwargs):
193
+ def deploy_realtime(
194
+ from_file: Optional[str], out_conf: bool, sync: bool, local: bool, **kwargs
195
+ ):
180
196
  config: DeployConfig = config_handler(
181
197
  config=DeployConfig,
182
198
  from_file=from_file,
@@ -184,6 +200,10 @@ def deploy_realtime(from_file: Optional[str], out_conf: bool, sync: bool, **kwar
184
200
  sections=("realtime", "autoscaling"),
185
201
  **kwargs,
186
202
  )
187
- if not out_conf:
203
+
204
+ if local:
205
+ local_deploy(config)
206
+
207
+ elif not out_conf:
188
208
  deploy_executor = RealtimeDeployExecutor(config)
189
209
  client_deployment(deploy=deploy_executor, sync=sync)
@@ -14,7 +14,6 @@ class StreamDeployExecutor(BaseDeployExecutor):
14
14
  env_deployment_messages = get_env_to_deployment_message(
15
15
  self.config,
16
16
  KubeDeploymentType.STREAM,
17
- self.deploy_client,
18
17
  self.ecosystem_client,
19
18
  self.instance_template_client,
20
19
  )
@@ -8,7 +8,6 @@ from _qwak_proto.qwak.deployment.deployment_pb2 import (
8
8
  EnvironmentUndeploymentMessage,
9
9
  ModelDeploymentStatus,
10
10
  TrafficConfig,
11
- Variation,
12
11
  )
13
12
  from _qwak_proto.qwak.ecosystem.v0.ecosystem_pb2 import EnvironmentDetails
14
13
  from qwak.clients.administration.eco_system.client import EcosystemClient
@@ -16,15 +15,9 @@ from qwak.clients.deployment.client import DeploymentManagementClient
16
15
  from qwak.exceptions import QwakException
17
16
  from qwak.tools.logger.logger import get_qwak_logger
18
17
 
19
- from qwak_sdk.commands.models._logic.variations import (
20
- create_variation_from_variation_config,
21
- )
22
18
  from qwak_sdk.commands.models.deployments.deploy._logic.deploy_config import (
23
19
  DeployConfig,
24
20
  )
25
- from qwak_sdk.commands.models.deployments.undeploy._logic.variations import (
26
- validate_variations_for_undeploy,
27
- )
28
21
  from qwak_sdk.tools.utils import qwak_spinner
29
22
 
30
23
  NO_DEPLOYED_VARIATIONS_ERROR_MSG = (
@@ -45,12 +38,10 @@ def get_deployed_variation_name(existing_variations_names: Set[str]) -> str:
45
38
 
46
39
  def get_environment_undeploy_message(
47
40
  audiences: List[AudienceRoutesEntry],
48
- env_name: str,
49
41
  existing_variations_names: Set[str],
50
42
  fallback_variation: str,
51
43
  model_id: str,
52
44
  model_uuid: str,
53
- requested_variations: List[Variation],
54
45
  variation_name: str,
55
46
  ):
56
47
  if not variation_name and len(existing_variations_names) == 1:
@@ -58,20 +49,12 @@ def get_environment_undeploy_message(
58
49
  existing_variations_names=existing_variations_names
59
50
  )
60
51
 
61
- if not audiences:
62
- validate_variations_for_undeploy(
63
- variation_name,
64
- existing_variations_names,
65
- requested_variations,
66
- env_name,
67
- )
68
52
  return EnvironmentUndeploymentMessage(
69
53
  model_id=model_id,
70
54
  model_uuid=model_uuid,
71
55
  hosting_service_type=DeploymentHostingServiceType.KUBE_DEPLOYMENT,
72
56
  traffic_config=TrafficConfig(
73
57
  selected_variation_name=variation_name,
74
- variations=requested_variations,
75
58
  audience_routes_entries=audiences,
76
59
  fallback_variation=fallback_variation,
77
60
  ),
@@ -84,7 +67,6 @@ def get_env_to_undeploy_message(
84
67
  env_id_to_deployment_details: Dict[str, EnvironmentDeploymentDetailsMessage],
85
68
  env_name_to_env_details: Dict[str, EnvironmentDetails],
86
69
  model_id: str,
87
- requested_variations: List[Variation],
88
70
  variation_name: str,
89
71
  fallback_variation: str,
90
72
  ) -> Dict[str, EnvironmentUndeploymentMessage]:
@@ -111,12 +93,10 @@ def get_env_to_undeploy_message(
111
93
  env_details.id
112
94
  ] = get_environment_undeploy_message(
113
95
  audiences,
114
- env_name,
115
96
  existing_variations_names,
116
97
  fallback_variation,
117
98
  model_id,
118
99
  model_uuid,
119
- requested_variations,
120
100
  variation_name,
121
101
  )
122
102
  except QwakException as e:
@@ -138,12 +118,6 @@ def undeploy(
138
118
  audience.to_audience_route_entry(index)
139
119
  for index, audience in enumerate(config.realtime.audiences)
140
120
  ]
141
- requested_variations = list(
142
- map(
143
- create_variation_from_variation_config,
144
- config.realtime.variations if config.realtime else [],
145
- )
146
- )
147
121
 
148
122
  if not model_uuid:
149
123
  raise QwakException("missing argument model uuid")
@@ -164,7 +138,6 @@ def undeploy(
164
138
  env_id_to_deployment_details,
165
139
  env_name_to_env_details,
166
140
  model_id,
167
- requested_variations,
168
141
  config.realtime.variation_name,
169
142
  config.realtime.fallback_variation,
170
143
  )