qwak-sdk 0.5.30__tar.gz → 0.5.32__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.
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/PKG-INFO +3 -2
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/pyproject.toml +15 -14
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/__init__.py +1 -1
- qwak_sdk-0.5.32/qwak_sdk/commands/feature_store/backfill/_logic.py +140 -0
- qwak_sdk-0.5.32/qwak_sdk/commands/feature_store/backfill/ui.py +129 -0
- qwak_sdk-0.5.32/qwak_sdk/commands/feature_store/execution/ui.py +19 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/feature_store/feature_store_command_group.py +4 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/build/_logic/client_logs/logger.py +2 -1
- qwak_sdk-0.5.32/qwak_sdk/commands/models/builds/status/_logic.py +6 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/deployments/deploy/_logic/get_latest_successful_build.py +5 -8
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/deployments/undeploy/_logic/request_undeploy.py +103 -1
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/deployments/undeploy/ui.py +8 -5
- qwak_sdk-0.5.32/qwak_sdk/commands/models/describe/_logic.py +169 -0
- qwak_sdk-0.5.32/qwak_sdk/inner/tools/__init__.py +0 -0
- qwak_sdk-0.5.32/qwak_sdk/tools/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/tools/log_handling.py +8 -6
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/setup.py +5 -2
- qwak_sdk-0.5.30/qwak_sdk/commands/models/builds/status/_logic.py +0 -6
- qwak_sdk-0.5.30/qwak_sdk/commands/models/describe/_logic.py +0 -154
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/README.md +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/cli.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/_logic/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/_logic/instance_template.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/_logic/tools.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/admin/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/admin/admin_commands_group.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/admin/apikeys/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/admin/apikeys/api_keys_commands_group.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/admin/apikeys/generate/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/admin/apikeys/generate/_logic.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/admin/apikeys/generate/ui.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/admin/apikeys/revoke/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/admin/apikeys/revoke/_logic.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/admin/apikeys/revoke/ui.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/alerts/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/alerts/alerts_commnad_group.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/alerts/delete/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/alerts/delete/_logic.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/alerts/delete/ui.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/alerts/list/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/alerts/list/_logic.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/alerts/list/ui.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/alerts/register/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/alerts/register/_logic.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/alerts/register/ui.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/audience/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/audience/_logic/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/audience/_logic/config/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/audience/_logic/config/config_base.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/audience/_logic/config/parser.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/audience/_logic/config/v1/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/audience/_logic/config/v1/audience_config.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/audience/_logic/config/v1/conditions_config.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/audience/_logic/config/v1/config_v1.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/audience/_logic/config/v1/route_config.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/audience/_logic/config/v1/spec.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/audience/audience_api_dump.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/audience/audience_commands_group.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/audience/create/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/audience/create/logic.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/audience/create/ui.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/audience/delete/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/audience/delete/logic.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/audience/delete/ui.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/audience/get/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/audience/get/logic.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/audience/get/ui.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/audience/list/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/audience/list/logic.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/audience/list/ui.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/audience/update/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/audience/update/logic.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/audience/update/ui.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/auto_scalling/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/auto_scalling/_logic/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/auto_scalling/_logic/config/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/auto_scalling/_logic/config/config.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/auto_scalling/_logic/config/parser.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/auto_scalling/attach/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/auto_scalling/attach/_logic.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/auto_scalling/attach/ui.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/auto_scalling/autoscaling_commands_group.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/automations/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/automations/automations_commands_group.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/automations/delete/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/automations/delete/_logic.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/automations/delete/ui.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/automations/executions/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/automations/executions/executions_commands_group.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/automations/executions/list/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/automations/executions/list/_logic.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/automations/executions/list/ui.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/automations/list/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/automations/list/_logic.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/automations/list/ui.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/automations/register/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/automations/register/_logic.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/automations/register/ui.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/feature_store/__init__.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/feature_store/delete → qwak_sdk-0.5.32/qwak_sdk/commands/feature_store/backfill}/__init__.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/feature_store/list → qwak_sdk-0.5.32/qwak_sdk/commands/feature_store/delete}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/feature_store/delete/_logic.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/feature_store/delete/ui.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/feature_store/pause → qwak_sdk-0.5.32/qwak_sdk/commands/feature_store/execution}/__init__.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/feature_store/register → qwak_sdk-0.5.32/qwak_sdk/commands/feature_store/list}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/feature_store/list/ui.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/feature_store/resume → qwak_sdk-0.5.32/qwak_sdk/commands/feature_store/pause}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/feature_store/pause/ui.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/feature_store/trigger → qwak_sdk-0.5.32/qwak_sdk/commands/feature_store/register}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/feature_store/register/_logic.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/feature_store/register/ui.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models → qwak_sdk-0.5.32/qwak_sdk/commands/feature_store/resume}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/feature_store/resume/ui.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/_logic → qwak_sdk-0.5.32/qwak_sdk/commands/feature_store/trigger}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/feature_store/trigger/ui.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/build → qwak_sdk-0.5.32/qwak_sdk/commands/models}/__init__.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/build → qwak_sdk-0.5.32/qwak_sdk/commands/models}/_logic/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/_logic/variations.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/build/_logic/client_logs → qwak_sdk-0.5.32/qwak_sdk/commands/models/build}/__init__.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/build/_logic/interface → qwak_sdk-0.5.32/qwak_sdk/commands/models/build/_logic}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/build/_logic/build_steps.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/build/_logic/phase → qwak_sdk-0.5.32/qwak_sdk/commands/models/build/_logic/client_logs}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/build/_logic/client_logs/build_run_handlers.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/build/_logic/client_logs/cli_ui.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/build/_logic/client_logs/messages.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/build/_logic/client_logs/notifier_impl.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/build/_logic/client_logs/spinner.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/build/_logic/client_logs/time_source.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/build/_logic/client_logs/utils.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/build/_logic/config/config_v1.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/build/_logic/constant/host_resource.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/build/_logic/constant/step_description.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/build/_logic/constant/temp_dir.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/build/_logic/constant/upload_tag.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/build/_logic/context.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/build/_logic/phase/a_fetch_model_code/fetch_model_step → qwak_sdk-0.5.32/qwak_sdk/commands/models/build/_logic/interface}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/build/_logic/interface/notifier_interface.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/build/_logic/interface/step_inteface.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/build/_logic/phase/a_fetch_model_code/fetch_model_step/fetch_strategy_manager → qwak_sdk-0.5.32/qwak_sdk/commands/models/build/_logic/phase}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/build/_logic/phase/a_fetch_model_code/__init__.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/build/_logic/phase/a_fetch_model_code/fetch_model_step/fetch_strategy_manager/strategy → qwak_sdk-0.5.32/qwak_sdk/commands/models/build/_logic/phase/a_fetch_model_code/fetch_model_step}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/build/_logic/phase/a_fetch_model_code/fetch_model_step/fetch_model_step.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/build/_logic/phase/a_fetch_model_code/fetch_model_step/fetch_strategy_manager/strategy/folder → qwak_sdk-0.5.32/qwak_sdk/commands/models/build/_logic/phase/a_fetch_model_code/fetch_model_step/fetch_strategy_manager}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/build/_logic/phase/a_fetch_model_code/fetch_model_step/fetch_strategy_manager/common.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/build/_logic/phase/a_fetch_model_code/fetch_model_step/fetch_strategy_manager/fetch_strategy_manager.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/build/_logic/phase/a_fetch_model_code/fetch_model_step/fetch_strategy_manager/strategy/git → qwak_sdk-0.5.32/qwak_sdk/commands/models/build/_logic/phase/a_fetch_model_code/fetch_model_step/fetch_strategy_manager/strategy}/__init__.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/build/_logic/phase/a_fetch_model_code/fetch_model_step/fetch_strategy_manager/strategy/zip → qwak_sdk-0.5.32/qwak_sdk/commands/models/build/_logic/phase/a_fetch_model_code/fetch_model_step/fetch_strategy_manager/strategy/folder}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/build/_logic/phase/a_fetch_model_code/fetch_model_step/fetch_strategy_manager/strategy/folder/folder_strategy.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/build/_logic/util → qwak_sdk-0.5.32/qwak_sdk/commands/models/build/_logic/phase/a_fetch_model_code/fetch_model_step/fetch_strategy_manager/strategy/git}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/build/_logic/phase/a_fetch_model_code/fetch_model_step/fetch_strategy_manager/strategy/git/git_strategy.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/build/_logic/phase/a_fetch_model_code/fetch_model_step/fetch_strategy_manager/strategy/strategy.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/builds → qwak_sdk-0.5.32/qwak_sdk/commands/models/build/_logic/phase/a_fetch_model_code/fetch_model_step/fetch_strategy_manager/strategy/zip}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/build/_logic/phase/a_fetch_model_code/fetch_model_step/fetch_strategy_manager/strategy/zip/zip_strategy.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/build/_logic/phase/a_fetch_model_code/post_fetch_validation_step.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/build/_logic/phase/a_fetch_model_code/pre_fetch_validation_step.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/build/_logic/phase/b_remote_register_qwak_build/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/build/_logic/phase/b_remote_register_qwak_build/cleanup_step.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/build/_logic/phase/b_remote_register_qwak_build/start_remote_build_step.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/build/_logic/phase/b_remote_register_qwak_build/upload_step.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/build/_logic/phase/c_deploy/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/build/_logic/phase/c_deploy/build_polling_status.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/build/_logic/phase/c_deploy/deploy_build.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/builds/cancel → qwak_sdk-0.5.32/qwak_sdk/commands/models/build/_logic/util}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/build/_logic/util/protobuf_factory.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/build/_logic/util/step_decorator.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/build/_logic/util/text.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/build/ui.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/builds/logs → qwak_sdk-0.5.32/qwak_sdk/commands/models/builds}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/builds/builds_commands_group.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/builds/status → qwak_sdk-0.5.32/qwak_sdk/commands/models/builds/cancel}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/builds/cancel/_logic.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/builds/cancel/ui.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/create → qwak_sdk-0.5.32/qwak_sdk/commands/models/builds/logs}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/builds/logs/ui.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/delete → qwak_sdk-0.5.32/qwak_sdk/commands/models/builds/status}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/builds/status/ui.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/deployments → qwak_sdk-0.5.32/qwak_sdk/commands/models/create}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/create/_logic.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/create/ui.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/deployments/deploy → qwak_sdk-0.5.32/qwak_sdk/commands/models/delete}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/delete/_logic.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/delete/ui.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/deployments/deploy/_logic → qwak_sdk-0.5.32/qwak_sdk/commands/models/deployments}/__init__.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/deployments/deploy/batch → qwak_sdk-0.5.32/qwak_sdk/commands/models/deployments/deploy}/__init__.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/deployments/deploy/batch → qwak_sdk-0.5.32/qwak_sdk/commands/models/deployments/deploy}/_logic/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/deployments/deploy/_logic/advance_deployment_options_handler.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/deployments/deploy/_logic/base_deploy_executor.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/deployments/deploy/_logic/deploy_config.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/deployments/deploy/_logic/deployment.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/deployments/deploy/_logic/deployment_message_helpers.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/deployments/deploy/_logic/deployment_response_handler.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/deployments/deploy/_logic/deployment_size_mapper.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/deployments/deploy/_logic/variations.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/deployments/deploy/realtime → qwak_sdk-0.5.32/qwak_sdk/commands/models/deployments/deploy/batch}/__init__.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/deployments/deploy/realtime → qwak_sdk-0.5.32/qwak_sdk/commands/models/deployments/deploy/batch}/_logic/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/deployments/deploy/batch/_logic/advanced_deployment_mapper.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/deployments/deploy/batch/_logic/deploy_executor.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/deployments/deploy/batch/ui.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/deployments/deploy/deploy_commands_group.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/deployments/deploy/streaming → qwak_sdk-0.5.32/qwak_sdk/commands/models/deployments/deploy/realtime}/__init__.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/deployments/deploy/streaming → qwak_sdk-0.5.32/qwak_sdk/commands/models/deployments/deploy/realtime}/_logic/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/deployments/deploy/realtime/_logic/advanced_deployment_mapper.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/deployments/deploy/realtime/_logic/deploy_executor.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/deployments/deploy/realtime/_logic/serving_strategy_mapper.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/deployments/deploy/realtime/ui.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/deployments/undeploy → qwak_sdk-0.5.32/qwak_sdk/commands/models/deployments/deploy/streaming}/__init__.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/deployments/undeploy → qwak_sdk-0.5.32/qwak_sdk/commands/models/deployments/deploy/streaming}/_logic/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/deployments/deploy/streaming/_logic/deploy_executor.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/deployments/deploy/streaming/_logic/serving_strategy_mapper.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/deployments/deploy/streaming/ui.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/describe → qwak_sdk-0.5.32/qwak_sdk/commands/models/deployments/undeploy}/__init__.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/executions → qwak_sdk-0.5.32/qwak_sdk/commands/models/deployments/undeploy/_logic}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/deployments/undeploy/_logic/variations.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/executions/cancel → qwak_sdk-0.5.32/qwak_sdk/commands/models/describe}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/describe/ui.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/executions/report → qwak_sdk-0.5.32/qwak_sdk/commands/models/executions}/__init__.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/executions/start → qwak_sdk-0.5.32/qwak_sdk/commands/models/executions/cancel}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/executions/cancel/_logic.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/executions/cancel/ui.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/executions/execution_commands_group.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/executions/status → qwak_sdk-0.5.32/qwak_sdk/commands/models/executions/report}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/executions/report/_logic.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/executions/report/ui.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/init → qwak_sdk-0.5.32/qwak_sdk/commands/models/executions/start}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/executions/start/_logic.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/executions/start/ui.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/init/_logic → qwak_sdk-0.5.32/qwak_sdk/commands/models/executions/status}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/executions/status/_logic.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/executions/status/ui.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/init/_logic/template → qwak_sdk-0.5.32/qwak_sdk/commands/models/init}/__init__.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/init/_logic/template/churn → qwak_sdk-0.5.32/qwak_sdk/commands/models/init/_logic}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/init/_logic/initialize_model_structure.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/init/_logic/template/churn/{{cookiecutter.model_directory}} → qwak_sdk-0.5.32/qwak_sdk/commands/models/init/_logic/template}/__init__.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/init/_logic/template/churn/{{cookiecutter.model_directory}}/tests → qwak_sdk-0.5.32/qwak_sdk/commands/models/init/_logic/template/churn}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/init/_logic/template/churn/cookiecutter.json +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/init/_logic/template/churn/{{cookiecutter.model_directory}}/tests/it → qwak_sdk-0.5.32/qwak_sdk/commands/models/init/_logic/template/churn/{{cookiecutter.model_directory}}}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/init/_logic/template/churn/{{cookiecutter.model_directory}}/main/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/init/_logic/template/churn/{{cookiecutter.model_directory}}/main/conda.yml +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/init/_logic/template/churn/{{cookiecutter.model_directory}}/main/data.csv +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/init/_logic/template/churn/{{cookiecutter.model_directory}}/main/model.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/init/_logic/template/credit_risk → qwak_sdk-0.5.32/qwak_sdk/commands/models/init/_logic/template/churn/{{cookiecutter.model_directory}}/tests}/__init__.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/init/_logic/template/credit_risk/{{cookiecutter.model_directory}} → qwak_sdk-0.5.32/qwak_sdk/commands/models/init/_logic/template/churn/{{cookiecutter.model_directory}}/tests/it}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/init/_logic/template/churn/{{cookiecutter.model_directory}}/tests/it/test_churn.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/init/_logic/template/general → qwak_sdk-0.5.32/qwak_sdk/commands/models/init/_logic/template/credit_risk}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/init/_logic/template/credit_risk/cookiecutter.json +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/init/_logic/template/general → qwak_sdk-0.5.32/qwak_sdk/commands/models/init/_logic/template/credit_risk}/{{cookiecutter.model_directory}}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/init/_logic/template/credit_risk/{{cookiecutter.model_directory}}/main/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/init/_logic/template/credit_risk/{{cookiecutter.model_directory}}/main/conda.yml +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/init/_logic/template/credit_risk/{{cookiecutter.model_directory}}/main/data.csv +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/init/_logic/template/credit_risk/{{cookiecutter.model_directory}}/main/model.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/init/_logic/template/general/{{cookiecutter.model_directory}}/{{cookiecutter.test_directory}} → qwak_sdk-0.5.32/qwak_sdk/commands/models/init/_logic/template/general}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/init/_logic/template/general/cookiecutter.json +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/init/_logic/template/titanic → qwak_sdk-0.5.32/qwak_sdk/commands/models/init/_logic/template/general/{{cookiecutter.model_directory}}}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/init/_logic/template/general/{{cookiecutter.model_directory}}/{{cookiecutter.main_directory}}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/init/_logic/template/general/{{cookiecutter.model_directory}}/{{cookiecutter.main_directory}}/conda.yml +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/init/_logic/template/general/{{cookiecutter.model_directory}}/{{cookiecutter.main_directory}}/model.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/init/_logic/template/titanic/{{cookiecutter.model_directory}} → qwak_sdk-0.5.32/qwak_sdk/commands/models/init/_logic/template/general/{{cookiecutter.model_directory}}/{{cookiecutter.test_directory}}}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/init/_logic/template/general/{{cookiecutter.model_directory}}/{{cookiecutter.test_directory}}/test_qwak_model.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/init/_logic/template/titanic/{{cookiecutter.model_directory}}/tests → qwak_sdk-0.5.32/qwak_sdk/commands/models/init/_logic/template/titanic}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/init/_logic/template/titanic/cookiecutter.json +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/init/_logic/template/titanic/{{cookiecutter.model_directory}}/tests/it → qwak_sdk-0.5.32/qwak_sdk/commands/models/init/_logic/template/titanic/{{cookiecutter.model_directory}}}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/init/_logic/template/titanic/{{cookiecutter.model_directory}}/main/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/init/_logic/template/titanic/{{cookiecutter.model_directory}}/main/conda.yml +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/init/_logic/template/titanic/{{cookiecutter.model_directory}}/main/model.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/init/_logic/template/titanic_poetry → qwak_sdk-0.5.32/qwak_sdk/commands/models/init/_logic/template/titanic/{{cookiecutter.model_directory}}/tests}/__init__.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/init/_logic/template/titanic_poetry/{{cookiecutter.model_directory}} → qwak_sdk-0.5.32/qwak_sdk/commands/models/init/_logic/template/titanic/{{cookiecutter.model_directory}}/tests/it}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/init/_logic/template/titanic/{{cookiecutter.model_directory}}/tests/it/test_titanic.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/init/_logic/template/titanic_poetry/{{cookiecutter.model_directory}}/tests → qwak_sdk-0.5.32/qwak_sdk/commands/models/init/_logic/template/titanic_poetry}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/init/_logic/template/titanic_poetry/cookiecutter.json +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/init/_logic/template/titanic_poetry/{{cookiecutter.model_directory}}/tests/it → qwak_sdk-0.5.32/qwak_sdk/commands/models/init/_logic/template/titanic_poetry/{{cookiecutter.model_directory}}}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/init/_logic/template/titanic_poetry/{{cookiecutter.model_directory}}/main/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/init/_logic/template/titanic_poetry/{{cookiecutter.model_directory}}/main/model.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/init/_logic/template/titanic_poetry/{{cookiecutter.model_directory}}/main/pyproject.toml +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/list → qwak_sdk-0.5.32/qwak_sdk/commands/models/init/_logic/template/titanic_poetry/{{cookiecutter.model_directory}}/tests}/__init__.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/list_models → qwak_sdk-0.5.32/qwak_sdk/commands/models/init/_logic/template/titanic_poetry/{{cookiecutter.model_directory}}/tests/it}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/init/_logic/template/titanic_poetry/{{cookiecutter.model_directory}}/tests/it/test_titanic.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/init/ui.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/metadata → qwak_sdk-0.5.32/qwak_sdk/commands/models/list}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/list/_logic.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/list/ui.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/runtime → qwak_sdk-0.5.32/qwak_sdk/commands/models/list_models}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/list_models/_logic.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/list_models/ui.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/runtime/logs → qwak_sdk-0.5.32/qwak_sdk/commands/models/metadata}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/metadata/_logic.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/metadata/ui.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/models_command_group.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/runtime/traffic_update → qwak_sdk-0.5.32/qwak_sdk/commands/models/runtime}/__init__.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/runtime/traffic_update/_logic → qwak_sdk-0.5.32/qwak_sdk/commands/models/runtime/logs}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/runtime/logs/ui.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/runtime/runtime_commands_group.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/models/runtime/update → qwak_sdk-0.5.32/qwak_sdk/commands/models/runtime/traffic_update}/__init__.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/projects → qwak_sdk-0.5.32/qwak_sdk/commands/models/runtime/traffic_update/_logic}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/runtime/traffic_update/_logic/execute_runtime_update_traffic.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/runtime/traffic_update/_logic/variations.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/runtime/traffic_update/ui.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/projects/create → qwak_sdk-0.5.32/qwak_sdk/commands/models/runtime/update}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/runtime/update/_logic.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/runtime/update/ui.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/projects/delete → qwak_sdk-0.5.32/qwak_sdk/commands/projects}/__init__.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/projects/list → qwak_sdk-0.5.32/qwak_sdk/commands/projects/create}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/projects/create/_logic.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/projects/create/ui.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/secrets → qwak_sdk-0.5.32/qwak_sdk/commands/projects/delete}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/projects/delete/_logic.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/projects/delete/ui.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/secrets/delete → qwak_sdk-0.5.32/qwak_sdk/commands/projects/list}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/projects/list/_logic.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/projects/list/ui.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/projects/projects_command_group.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/secrets/get → qwak_sdk-0.5.32/qwak_sdk/commands/secrets}/__init__.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/secrets/set → qwak_sdk-0.5.32/qwak_sdk/commands/secrets/delete}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/secrets/delete/_logic.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/secrets/delete/ui.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/workspaces → qwak_sdk-0.5.32/qwak_sdk/commands/secrets/get}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/secrets/get/_logic.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/secrets/get/ui.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/secrets/secrets_commands_group.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/workspaces/_logic → qwak_sdk-0.5.32/qwak_sdk/commands/secrets/set}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/secrets/set/_logic.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/secrets/set/ui.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/ui_tools.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/workspaces/config → qwak_sdk-0.5.32/qwak_sdk/commands/workspaces}/__init__.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/workspaces/create → qwak_sdk-0.5.32/qwak_sdk/commands/workspaces/_logic}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/workspaces/_logic/tools.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/workspaces/_logic/workspace_validations.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/workspaces/delete → qwak_sdk-0.5.32/qwak_sdk/commands/workspaces/config}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/workspaces/config/workspace_config.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/workspaces/start → qwak_sdk-0.5.32/qwak_sdk/commands/workspaces/create}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/workspaces/create/_logic.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/workspaces/create/ui.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/workspaces/stop → qwak_sdk-0.5.32/qwak_sdk/commands/workspaces/delete}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/workspaces/delete/_logic.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/workspaces/delete/ui.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/commands/workspaces/update → qwak_sdk-0.5.32/qwak_sdk/commands/workspaces/start}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/workspaces/start/_logic.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/workspaces/start/ui.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/common → qwak_sdk-0.5.32/qwak_sdk/commands/workspaces/stop}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/workspaces/stop/_logic.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/workspaces/stop/ui.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/inner → qwak_sdk-0.5.32/qwak_sdk/commands/workspaces/update}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/workspaces/update/_logic.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/workspaces/update/ui.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/workspaces/workspaces_commands_group.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/inner/tools → qwak_sdk-0.5.32/qwak_sdk/common}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/common/run_config/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/common/run_config/base.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/common/run_config/utils.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/exceptions/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/exceptions/qwak_command_exception.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/exceptions/qwak_deploy_new_build_failed.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/exceptions/qwak_general_build_exception.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/exceptions/qwak_remote_build_failed.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/exceptions/qwak_resource_not_found.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/exceptions/qwak_suggestion_exception.py +0 -0
- {qwak_sdk-0.5.30/qwak_sdk/tools → qwak_sdk-0.5.32/qwak_sdk/inner}/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/inner/file_registry.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/inner/tools/cli_tools.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/inner/tools/config_handler.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/inner/tools/dataclasses_utils.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/inner/tools/logger/__init__.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/inner/tools/logger/logger.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/inner/tools/logger/logging.yml +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/inner/tools/tracking.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/main.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/tools/colors.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/tools/files.py +0 -0
- {qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/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.
|
|
3
|
+
Version: 0.5.32
|
|
4
4
|
Summary: Qwak SDK and CLI for qwak models
|
|
5
5
|
License: Apache-2.0
|
|
6
6
|
Keywords: mlops,ml,deployment,serving,model
|
|
@@ -21,13 +21,14 @@ Provides-Extra: batch
|
|
|
21
21
|
Provides-Extra: feedback
|
|
22
22
|
Requires-Dist: boto3 (>=1.24.116,<2.0.0) ; extra == "batch" or extra == "feedback"
|
|
23
23
|
Requires-Dist: cookiecutter
|
|
24
|
+
Requires-Dist: croniter (==1.4.1)
|
|
24
25
|
Requires-Dist: gitpython (>=2.1.0)
|
|
25
26
|
Requires-Dist: joblib (>=1.1.0,<2.0.0) ; extra == "batch" or extra == "feedback"
|
|
26
27
|
Requires-Dist: pandas (<1.4) ; (python_full_version >= "3.7.1" and python_version < "3.8") and (extra == "batch" or extra == "feedback")
|
|
27
28
|
Requires-Dist: pandas (>=1.4.3,<2.0.0) ; (python_version >= "3.8" and python_version < "3.10") and (extra == "batch" or extra == "feedback")
|
|
28
29
|
Requires-Dist: pyarrow (>=6.0.0,<11.0.0) ; extra == "batch"
|
|
29
30
|
Requires-Dist: python-json-logger (>=2.0.2)
|
|
30
|
-
Requires-Dist: qwak-core (==0.1.
|
|
31
|
+
Requires-Dist: qwak-core (==0.1.36)
|
|
31
32
|
Requires-Dist: qwak-inference (==0.1.8)
|
|
32
33
|
Requires-Dist: tabulate (>=0.8.0)
|
|
33
34
|
Requires-Dist: yaspin (>=2.0.0)
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "qwak-sdk"
|
|
3
|
-
version = "0.5.
|
|
3
|
+
version = "0.5.32"
|
|
4
4
|
description = "Qwak SDK and CLI for qwak models"
|
|
5
5
|
authors = ["Qwak <info@qwak.com>"]
|
|
6
6
|
readme = "README.md"
|
|
7
7
|
keywords = ["mlops", "ml", "deployment", "serving", "model"]
|
|
8
8
|
packages = [
|
|
9
|
-
{include = "qwak_sdk"},
|
|
9
|
+
{ include = "qwak_sdk" },
|
|
10
10
|
]
|
|
11
11
|
include = ["./qwak_sdk/**/*"]
|
|
12
12
|
classifiers = [
|
|
@@ -27,20 +27,21 @@ 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.1.
|
|
30
|
+
qwak-core = "==0.1.36"
|
|
31
31
|
qwak-inference = "==0.1.8"
|
|
32
|
+
croniter = "==1.4.1"
|
|
32
33
|
tabulate = ">=0.8.0"
|
|
33
34
|
python-json-logger = ">=2.0.2"
|
|
34
35
|
yaspin = ">=2.0.0"
|
|
35
36
|
cookiecutter = "*"
|
|
36
37
|
gitpython = ">=2.1.0"
|
|
37
|
-
boto3 = { version="^1.24.116", optional=true } # Inference dependencies
|
|
38
|
-
pandas = [
|
|
39
|
-
{version="<1.4", python=">=3.7.1,<3.8", optional=true},
|
|
40
|
-
{version=">=1.4.3,<2.0.0", python=">=3.8,<3.10", optional=true}
|
|
38
|
+
boto3 = { version = "^1.24.116", optional = true } # Inference dependencies
|
|
39
|
+
pandas = [# Inference dependencies
|
|
40
|
+
{ version = "<1.4", python = ">=3.7.1,<3.8", optional = true },
|
|
41
|
+
{ version = ">=1.4.3,<2.0.0", python = ">=3.8,<3.10", optional = true }
|
|
41
42
|
]
|
|
42
|
-
joblib = { version="^1.1.0", optional=true } # Inference dependencies
|
|
43
|
-
pyarrow = { version=">=6.0.0, <11.0.0", optional=true } # Inference dependencies
|
|
43
|
+
joblib = { version = "^1.1.0", optional = true } # Inference dependencies
|
|
44
|
+
pyarrow = { version = ">=6.0.0, <11.0.0", optional = true } # Inference dependencies
|
|
44
45
|
|
|
45
46
|
[tool.poetry.group.dev.dependencies]
|
|
46
47
|
pytest = "7.2.1"
|
|
@@ -48,9 +49,9 @@ pytest-lazy-fixture = "^0.6.3"
|
|
|
48
49
|
assertpy = "^1.1"
|
|
49
50
|
black = "23.1.0"
|
|
50
51
|
flake8 = "5.0.0"
|
|
51
|
-
bandit = {version = "^1.7.4", extras=["toml"]}
|
|
52
|
+
bandit = { version = "^1.7.4", extras = ["toml"] }
|
|
52
53
|
coverage = "7.2.1"
|
|
53
|
-
typing_extensions ="4.4.0"
|
|
54
|
+
typing_extensions = "4.4.0"
|
|
54
55
|
bump2version = "1.0.1"
|
|
55
56
|
typeguard = "^2"
|
|
56
57
|
isort = "^5"
|
|
@@ -86,10 +87,10 @@ profile = "black"
|
|
|
86
87
|
src_paths = ["qwak_sdk", "tests"]
|
|
87
88
|
|
|
88
89
|
[tool.poe.tasks]
|
|
89
|
-
clean = { cmd="rm -rf dist ./**/__pycache__", help="Clean build artifacts" }
|
|
90
|
+
clean = { cmd = "rm -rf dist ./**/__pycache__", help = "Clean build artifacts" }
|
|
90
91
|
install = "poetry install"
|
|
91
|
-
validate = { cmd="pre-commit run --all-files", help="Check lint on all files" }
|
|
92
|
-
test = { cmd="pytest --disable-warnings tests", help="Run tests" }
|
|
92
|
+
validate = { cmd = "pre-commit run --all-files", help = "Check lint on all files" }
|
|
93
|
+
test = { cmd = "pytest --disable-warnings tests", help = "Run tests" }
|
|
93
94
|
|
|
94
95
|
[build-system]
|
|
95
96
|
requires = ["poetry-core>=1.0.0"]
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
from datetime import datetime, timezone
|
|
2
|
+
from typing import Optional
|
|
3
|
+
|
|
4
|
+
from _qwak_proto.qwak.feature_store.features.feature_set_pb2 import FeatureSet
|
|
5
|
+
from _qwak_proto.qwak.feature_store.features.feature_set_service_pb2 import (
|
|
6
|
+
GetFeatureSetByNameResponse,
|
|
7
|
+
)
|
|
8
|
+
from croniter import croniter
|
|
9
|
+
from qwak.clients.feature_store import FeatureRegistryClient
|
|
10
|
+
from qwak.feature_store.execution.backfill import Backfill
|
|
11
|
+
from qwak.feature_store.feature_sets.batch import BatchFeatureSetV1
|
|
12
|
+
|
|
13
|
+
from qwak_sdk.inner.tools.cli_tools import ask_yesno
|
|
14
|
+
from qwak_sdk.tools.colors import Color
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class _BackfillLogic:
|
|
18
|
+
featureset: FeatureSet
|
|
19
|
+
batch_featureset: BatchFeatureSetV1
|
|
20
|
+
|
|
21
|
+
def configure_window_backfill(
|
|
22
|
+
self,
|
|
23
|
+
featureset_name: str,
|
|
24
|
+
start_time: Optional[datetime] = None,
|
|
25
|
+
stop_time: Optional[datetime] = None,
|
|
26
|
+
comment: str = None,
|
|
27
|
+
cluster_template: str = None,
|
|
28
|
+
) -> Optional[Backfill]:
|
|
29
|
+
"""
|
|
30
|
+
Configures a window back-fill object. This type of backfill will not reset the entire featureset, but will be
|
|
31
|
+
performed from the requested start time to the requested stop time in ticks calculated according to the
|
|
32
|
+
feature sets scheduling policy.
|
|
33
|
+
@param featureset_name: feature set name to perform the backfill job for
|
|
34
|
+
@type featureset_name: str
|
|
35
|
+
@param start_time: backfill requested start date
|
|
36
|
+
@type start_time: optional[datetime]
|
|
37
|
+
@param stop_time:
|
|
38
|
+
@type stop_time: optional[datetime]
|
|
39
|
+
@param comment:
|
|
40
|
+
@type comment: str
|
|
41
|
+
@param cluster_template:
|
|
42
|
+
@type cluster_template: str
|
|
43
|
+
@return:
|
|
44
|
+
@rtype:
|
|
45
|
+
"""
|
|
46
|
+
print(
|
|
47
|
+
f"{Color.BLUE} Backfilling from {start_time} to {stop_time}, "
|
|
48
|
+
f"the following ticks are going to be performed {Color.END}"
|
|
49
|
+
)
|
|
50
|
+
zipped_tick_strs = Backfill.generate_expected_ticks_repr(
|
|
51
|
+
scheduling_policy=self.batch_featureset.scheduling_policy,
|
|
52
|
+
start_time=start_time,
|
|
53
|
+
stop_time=stop_time,
|
|
54
|
+
)
|
|
55
|
+
print("\n".join(zipped_tick_strs))
|
|
56
|
+
if ask_yesno("", force=False):
|
|
57
|
+
backfill_execution = Backfill(
|
|
58
|
+
featureset_name=featureset_name,
|
|
59
|
+
comment=comment,
|
|
60
|
+
cluster_template=cluster_template,
|
|
61
|
+
start_time=start_time,
|
|
62
|
+
stop_time=stop_time,
|
|
63
|
+
)
|
|
64
|
+
return backfill_execution
|
|
65
|
+
return None
|
|
66
|
+
|
|
67
|
+
@staticmethod
|
|
68
|
+
def _get_featureset_by_name(featureset_name: str) -> GetFeatureSetByNameResponse:
|
|
69
|
+
registry_client = FeatureRegistryClient()
|
|
70
|
+
|
|
71
|
+
return registry_client.get_feature_set_by_name(feature_set_name=featureset_name)
|
|
72
|
+
|
|
73
|
+
def get_start_stop_times(
|
|
74
|
+
self,
|
|
75
|
+
requested_start_time: Optional[datetime] = None,
|
|
76
|
+
requested_stop_time: Optional[datetime] = None,
|
|
77
|
+
) -> tuple:
|
|
78
|
+
start_time: datetime = (
|
|
79
|
+
requested_start_time or self.batch_featureset.backfill.start_date
|
|
80
|
+
).replace(tzinfo=timezone.utc)
|
|
81
|
+
stop_time: datetime
|
|
82
|
+
|
|
83
|
+
if start_time and start_time > datetime.now().replace(tzinfo=timezone.utc):
|
|
84
|
+
stop_time = datetime.utcnow().replace(tzinfo=timezone.utc)
|
|
85
|
+
else:
|
|
86
|
+
stop_time = (
|
|
87
|
+
requested_stop_time or datetime.utcnow().replace(tzinfo=timezone.utc)
|
|
88
|
+
).replace(tzinfo=timezone.utc)
|
|
89
|
+
|
|
90
|
+
return start_time, stop_time
|
|
91
|
+
|
|
92
|
+
def is_valid_input(
|
|
93
|
+
self,
|
|
94
|
+
reset_backfill: bool,
|
|
95
|
+
start_time: Optional[datetime],
|
|
96
|
+
stop_time: Optional[datetime],
|
|
97
|
+
featureset_name: str,
|
|
98
|
+
) -> bool:
|
|
99
|
+
# Validate reset_backfill or start and stop times
|
|
100
|
+
if (not reset_backfill and not start_time and not stop_time) or (
|
|
101
|
+
reset_backfill and (start_time or stop_time)
|
|
102
|
+
):
|
|
103
|
+
print(
|
|
104
|
+
f"{Color.RED} please specify either --reset-backfill or one or more of --start-time/--stop-time"
|
|
105
|
+
)
|
|
106
|
+
return False
|
|
107
|
+
|
|
108
|
+
# Validate featureset exists
|
|
109
|
+
get_featureset_resp = self._get_featureset_by_name(
|
|
110
|
+
featureset_name=featureset_name
|
|
111
|
+
)
|
|
112
|
+
if not get_featureset_resp or not get_featureset_resp.feature_set:
|
|
113
|
+
print(f"{Color.RED} Failed to retrieve featureset {featureset_name}")
|
|
114
|
+
return False
|
|
115
|
+
|
|
116
|
+
self.featureset = get_featureset_resp.feature_set
|
|
117
|
+
fs_type_attr: str = self.featureset.feature_set_definition.feature_set_spec.feature_set_type.WhichOneof(
|
|
118
|
+
"set_type"
|
|
119
|
+
)
|
|
120
|
+
# Validate featureset is batch v1
|
|
121
|
+
if fs_type_attr != "batch_feature_set_v1":
|
|
122
|
+
print(
|
|
123
|
+
f"{Color.RED} Feature set {featureset_name} is of type {fs_type_attr}. Only BatchV1 is supported."
|
|
124
|
+
)
|
|
125
|
+
return False
|
|
126
|
+
|
|
127
|
+
self.batch_featureset = BatchFeatureSetV1.from_proto(
|
|
128
|
+
self.featureset.feature_set_definition.feature_set_spec
|
|
129
|
+
)
|
|
130
|
+
|
|
131
|
+
# Validate scheduling policy
|
|
132
|
+
if not self.batch_featureset.scheduling_policy or not croniter.is_valid(
|
|
133
|
+
self.batch_featureset.scheduling_policy
|
|
134
|
+
):
|
|
135
|
+
print(
|
|
136
|
+
f"{Color.RED} Feature set {featureset_name} has an invalid scheduling policy {self.batch_featureset.scheduling_policy}."
|
|
137
|
+
)
|
|
138
|
+
return False
|
|
139
|
+
|
|
140
|
+
return True
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
from datetime import datetime
|
|
2
|
+
from typing import Optional
|
|
3
|
+
|
|
4
|
+
import click
|
|
5
|
+
from qwak.feature_store.execution.backfill import Backfill
|
|
6
|
+
|
|
7
|
+
from qwak_sdk.commands.feature_store.backfill._logic import _BackfillLogic
|
|
8
|
+
from qwak_sdk.inner.tools.cli_tools import QwakCommand, ask_yesno
|
|
9
|
+
from qwak_sdk.tools.colors import Color
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@click.command(
|
|
13
|
+
"backfill", cls=QwakCommand, help="Trigger a backfill process for a Feature Set"
|
|
14
|
+
)
|
|
15
|
+
@click.option(
|
|
16
|
+
"--feature-set",
|
|
17
|
+
"--name",
|
|
18
|
+
help="Feature Set name to perform the backfill process for",
|
|
19
|
+
required=True,
|
|
20
|
+
type=click.STRING,
|
|
21
|
+
)
|
|
22
|
+
@click.option(
|
|
23
|
+
"--reset-backfill",
|
|
24
|
+
"--reset",
|
|
25
|
+
is_flag=True,
|
|
26
|
+
metavar="FLAG",
|
|
27
|
+
default=False,
|
|
28
|
+
help="Perform a complete reset of the featuresets data. "
|
|
29
|
+
"This will result in the deletion of the current existing data.",
|
|
30
|
+
)
|
|
31
|
+
@click.option(
|
|
32
|
+
"--start-time",
|
|
33
|
+
type=click.DateTime(),
|
|
34
|
+
default=None,
|
|
35
|
+
required=False,
|
|
36
|
+
help="The time from which the featuresets data should be backfilled in UTC. "
|
|
37
|
+
"Defaults to the featuresets configured backfill start time.",
|
|
38
|
+
)
|
|
39
|
+
@click.option(
|
|
40
|
+
"--stop-time",
|
|
41
|
+
type=click.DateTime(),
|
|
42
|
+
default=None,
|
|
43
|
+
required=False,
|
|
44
|
+
help="The time up until the featuresets data should be backfilled in UTC. Defaults to the current timestamp. "
|
|
45
|
+
"If the time provided is in the future, stop time will be rounded down to the current time. ",
|
|
46
|
+
)
|
|
47
|
+
@click.option(
|
|
48
|
+
"--cluster-template",
|
|
49
|
+
type=str,
|
|
50
|
+
default=None,
|
|
51
|
+
required=False,
|
|
52
|
+
help="Backfill resource configuration, expects a ClusterType size. "
|
|
53
|
+
"Defaults to the featureset resource configuration",
|
|
54
|
+
)
|
|
55
|
+
@click.option(
|
|
56
|
+
"--comment",
|
|
57
|
+
type=str,
|
|
58
|
+
default=None,
|
|
59
|
+
required=False,
|
|
60
|
+
help="Backfill job optional comment tag line",
|
|
61
|
+
)
|
|
62
|
+
def backfill(
|
|
63
|
+
feature_set: str,
|
|
64
|
+
reset_backfill: bool,
|
|
65
|
+
start_time: Optional[datetime],
|
|
66
|
+
stop_time: Optional[datetime],
|
|
67
|
+
cluster_template: Optional[str],
|
|
68
|
+
comment: Optional[str],
|
|
69
|
+
**kwargs,
|
|
70
|
+
):
|
|
71
|
+
backill_logic = _BackfillLogic()
|
|
72
|
+
if not backill_logic.is_valid_input(
|
|
73
|
+
reset_backfill=reset_backfill,
|
|
74
|
+
start_time=start_time,
|
|
75
|
+
stop_time=stop_time,
|
|
76
|
+
featureset_name=feature_set,
|
|
77
|
+
):
|
|
78
|
+
return
|
|
79
|
+
|
|
80
|
+
if reset_backfill:
|
|
81
|
+
backfill_execution = _configure_backfill_triggered(
|
|
82
|
+
featureset_name=feature_set,
|
|
83
|
+
comment=comment,
|
|
84
|
+
cluster_template=cluster_template,
|
|
85
|
+
)
|
|
86
|
+
else:
|
|
87
|
+
start, stop = backill_logic.get_start_stop_times(
|
|
88
|
+
requested_start_time=start_time, requested_stop_time=stop_time
|
|
89
|
+
)
|
|
90
|
+
if start >= stop:
|
|
91
|
+
print(
|
|
92
|
+
f"{Color.RED} Stop time {stop.isoformat()} must be after start time {start.isoformat()}"
|
|
93
|
+
)
|
|
94
|
+
return
|
|
95
|
+
|
|
96
|
+
backfill_execution = backill_logic.configure_window_backfill(
|
|
97
|
+
featureset_name=feature_set,
|
|
98
|
+
start_time=start,
|
|
99
|
+
stop_time=stop,
|
|
100
|
+
comment=comment,
|
|
101
|
+
cluster_template=cluster_template,
|
|
102
|
+
)
|
|
103
|
+
|
|
104
|
+
if backfill_execution:
|
|
105
|
+
execution_id: str = backfill_execution.trigger_batch_backfill()
|
|
106
|
+
print(
|
|
107
|
+
f"{Color.BLUE}✅ Triggered backfill execution for featureset {feature_set}, "
|
|
108
|
+
f"execution id for follow up on is {execution_id}."
|
|
109
|
+
)
|
|
110
|
+
print(
|
|
111
|
+
f"To inquire the status of the execution run "
|
|
112
|
+
f"'qwak features execution-status --execution-id {execution_id}'"
|
|
113
|
+
)
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
def _configure_backfill_triggered(
|
|
117
|
+
featureset_name: str, comment: str, cluster_template: str
|
|
118
|
+
) -> Optional[Backfill]:
|
|
119
|
+
if ask_yesno(
|
|
120
|
+
f"You are about to remove and re-populate all data in {featureset_name}",
|
|
121
|
+
force=False,
|
|
122
|
+
):
|
|
123
|
+
print(f"{Color.RED} - A backfill reset was triggered")
|
|
124
|
+
return Backfill(
|
|
125
|
+
featureset_name=featureset_name,
|
|
126
|
+
comment=comment,
|
|
127
|
+
cluster_template=cluster_template,
|
|
128
|
+
)
|
|
129
|
+
return None
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import click
|
|
2
|
+
from qwak.feature_store.execution.execution_query import ExecutionQuery
|
|
3
|
+
|
|
4
|
+
from qwak_sdk.inner.tools.cli_tools import QwakCommand
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
@click.command(
|
|
8
|
+
"execution-status",
|
|
9
|
+
cls=QwakCommand,
|
|
10
|
+
help="Retrieve the current status of an execution (backfill/batch job ingestion)",
|
|
11
|
+
)
|
|
12
|
+
@click.option(
|
|
13
|
+
"--execution-id",
|
|
14
|
+
type=str,
|
|
15
|
+
required=True,
|
|
16
|
+
help="The id of the execution to retrieve the status for.",
|
|
17
|
+
)
|
|
18
|
+
def execution_status(execution_id: str, **kwargs):
|
|
19
|
+
print(ExecutionQuery.get_execution_status_message(execution_id=execution_id))
|
{qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/feature_store/feature_store_command_group.py
RENAMED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import click
|
|
2
2
|
|
|
3
|
+
from qwak_sdk.commands.feature_store.backfill.ui import backfill
|
|
3
4
|
from qwak_sdk.commands.feature_store.delete.ui import delete_fs_object
|
|
5
|
+
from qwak_sdk.commands.feature_store.execution.ui import execution_status
|
|
4
6
|
from qwak_sdk.commands.feature_store.list.ui import list_feature_sets
|
|
5
7
|
from qwak_sdk.commands.feature_store.pause.ui import pause_feature_set
|
|
6
8
|
from qwak_sdk.commands.feature_store.register.ui import register_fs_objects
|
|
@@ -23,3 +25,5 @@ feature_store_commands_group.add_command(pause_feature_set)
|
|
|
23
25
|
feature_store_commands_group.add_command(resume_feature_set)
|
|
24
26
|
feature_store_commands_group.add_command(trigger_feature_set)
|
|
25
27
|
feature_store_commands_group.add_command(register_fs_objects)
|
|
28
|
+
feature_store_commands_group.add_command(backfill)
|
|
29
|
+
feature_store_commands_group.add_command(execution_status)
|
{qwak_sdk-0.5.30 → qwak_sdk-0.5.32}/qwak_sdk/commands/models/build/_logic/client_logs/logger.py
RENAMED
|
@@ -29,6 +29,7 @@ from qwak_sdk.inner.tools.logger.logger import (
|
|
|
29
29
|
BUILDS_LOGS = HOST_QWAK_HIDDEN_FOLDER / "logs" / "build"
|
|
30
30
|
BUILD_LOG_NAME = "build.log"
|
|
31
31
|
MAX_LOGS_NUMBER = 15
|
|
32
|
+
DEBUG_LEVEL = 2
|
|
32
33
|
|
|
33
34
|
|
|
34
35
|
@contextlib.contextmanager
|
|
@@ -76,7 +77,7 @@ def setup_logger(
|
|
|
76
77
|
set_handler_verbosity(
|
|
77
78
|
logger,
|
|
78
79
|
REMOTE_CONSOLE_HANDLER_NAME,
|
|
79
|
-
VERBOSITY_LEVEL_MAPPING[
|
|
80
|
+
VERBOSITY_LEVEL_MAPPING[DEBUG_LEVEL],
|
|
80
81
|
)
|
|
81
82
|
|
|
82
83
|
return logger
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
from copy import deepcopy
|
|
2
|
-
|
|
3
1
|
from _qwak_proto.qwak.builds.builds_pb2 import SUCCESSFUL
|
|
4
|
-
from qwak.clients.
|
|
2
|
+
from qwak.clients.build_orchestrator import BuildOrchestratorClient
|
|
5
3
|
from qwak.clients.model_management.client import ModelsManagementClient
|
|
6
4
|
from qwak.exceptions import QwakException
|
|
7
5
|
|
|
@@ -20,12 +18,11 @@ def get_latest_successful_build_from_model(model_id: str) -> str:
|
|
|
20
18
|
"""
|
|
21
19
|
model = ModelsManagementClient().get_model(model_id)
|
|
22
20
|
model_uuid = model.uuid
|
|
23
|
-
|
|
24
|
-
builds =
|
|
25
|
-
builds
|
|
26
|
-
builds.sort(key=lambda r: r.created_at.seconds)
|
|
21
|
+
all_builds = BuildOrchestratorClient().list_builds(model_uuid).build
|
|
22
|
+
builds = [build for build in all_builds if build.build_status == SUCCESSFUL]
|
|
23
|
+
builds.sort(key=lambda r: r.audit.created_at.seconds)
|
|
27
24
|
|
|
28
25
|
if not builds:
|
|
29
26
|
raise QwakException(f"Unable to find successful build for model {model_id}")
|
|
30
27
|
|
|
31
|
-
return builds[-1].
|
|
28
|
+
return builds[-1].buildId
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
from time import sleep
|
|
1
2
|
from typing import Dict, List, Set
|
|
2
3
|
|
|
3
4
|
from _qwak_proto.qwak.audience.v1.audience_pb2 import AudienceRoutesEntry
|
|
@@ -24,13 +25,19 @@ from qwak_sdk.commands.models.deployments.deploy._logic.deploy_config import (
|
|
|
24
25
|
from qwak_sdk.commands.models.deployments.undeploy._logic.variations import (
|
|
25
26
|
validate_variations_for_undeploy,
|
|
26
27
|
)
|
|
28
|
+
from qwak_sdk.tools.utils import qwak_spinner
|
|
27
29
|
|
|
28
30
|
NO_DEPLOYED_VARIATIONS_ERROR_MSG = (
|
|
29
31
|
"There are currently no deployed variations for model {model_id} in {env_name}"
|
|
30
32
|
)
|
|
31
|
-
|
|
33
|
+
UNDEPLOY_ERROR_MSG = "Environment {environment_id} failed with status: {status}"
|
|
32
34
|
logger = get_qwak_logger()
|
|
33
35
|
|
|
36
|
+
FAILED_UNDEPLOYMENT_STATUS = ["FAILED_UNDEPLOYMENT"]
|
|
37
|
+
SUCCESSFUL_UNDEPLOYMENT_STATUS = ["SUCCESSFUL_UNDEPLOYMENT"]
|
|
38
|
+
END_UNDEPLOYMENT_STATUSES = SUCCESSFUL_UNDEPLOYMENT_STATUS + FAILED_UNDEPLOYMENT_STATUS
|
|
39
|
+
TIME_TO_WAIT_FOR_UNDEPLOYMENT_POLLING = 5
|
|
40
|
+
|
|
34
41
|
|
|
35
42
|
def get_deployed_variation_name(existing_variations_names: Set[str]) -> str:
|
|
36
43
|
return list(existing_variations_names)[0]
|
|
@@ -123,6 +130,7 @@ def undeploy(
|
|
|
123
130
|
model_id: str,
|
|
124
131
|
config: DeployConfig,
|
|
125
132
|
model_uuid: str = "",
|
|
133
|
+
sync: bool = False,
|
|
126
134
|
):
|
|
127
135
|
deployment_client = DeploymentManagementClient()
|
|
128
136
|
ecosystem_client = EcosystemClient()
|
|
@@ -161,14 +169,108 @@ def undeploy(
|
|
|
161
169
|
config.realtime.fallback_variation,
|
|
162
170
|
)
|
|
163
171
|
|
|
172
|
+
environment_to_deployment_id = {}
|
|
173
|
+
if sync:
|
|
174
|
+
environment_to_deployment_id = __get_environment_to_deployment_id(
|
|
175
|
+
deployment_client, model_id, model_uuid, env_undeployment_requests
|
|
176
|
+
)
|
|
177
|
+
|
|
164
178
|
undeployment_response = deployment_client.undeploy_model(
|
|
165
179
|
model_id=model_id,
|
|
166
180
|
model_uuid=model_uuid,
|
|
167
181
|
env_undeployment_requests=env_undeployment_requests,
|
|
168
182
|
)
|
|
169
183
|
|
|
184
|
+
if sync:
|
|
185
|
+
__sync_undeploy(
|
|
186
|
+
environment_to_deployment_id=environment_to_deployment_id,
|
|
187
|
+
model_id=model_id,
|
|
188
|
+
deployment_client=deployment_client,
|
|
189
|
+
)
|
|
170
190
|
logger.info(
|
|
171
191
|
f"Current status is {ModelDeploymentStatus.Name(undeployment_response.status)}."
|
|
172
192
|
)
|
|
173
193
|
|
|
174
194
|
return undeployment_response
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
def __get_environment_to_deployment_id(
|
|
198
|
+
deployment_client: DeploymentManagementClient,
|
|
199
|
+
model_id: str,
|
|
200
|
+
model_uuid: str,
|
|
201
|
+
env_undeployment_requests: Dict,
|
|
202
|
+
) -> Dict:
|
|
203
|
+
deployment_details = deployment_client.get_deployment_details(
|
|
204
|
+
model_id, model_uuid
|
|
205
|
+
).environment_to_deployment_details
|
|
206
|
+
result = {}
|
|
207
|
+
for env_id, env_deployment_details in env_undeployment_requests.items():
|
|
208
|
+
deployment_detail_by_env = deployment_details.get(env_id)
|
|
209
|
+
if deployment_detail_by_env:
|
|
210
|
+
for deployment_detail in deployment_detail_by_env.deployments_details:
|
|
211
|
+
if (
|
|
212
|
+
env_id == deployment_detail.environment_id
|
|
213
|
+
and deployment_detail.variation.name
|
|
214
|
+
== env_deployment_details.traffic_config.selected_variation_name
|
|
215
|
+
):
|
|
216
|
+
result[env_id] = deployment_detail.deployment_id
|
|
217
|
+
return result
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
def __sync_undeploy(
|
|
221
|
+
environment_to_deployment_id: Dict,
|
|
222
|
+
model_id: str,
|
|
223
|
+
deployment_client: DeploymentManagementClient,
|
|
224
|
+
):
|
|
225
|
+
with qwak_spinner(
|
|
226
|
+
begin_text=f"Undeploy - model: {model_id}",
|
|
227
|
+
end_text="Successful undeployment",
|
|
228
|
+
print_callback=print,
|
|
229
|
+
):
|
|
230
|
+
for environment_id, deployment_id in environment_to_deployment_id.items():
|
|
231
|
+
status_result = _poll_undeployment_status(
|
|
232
|
+
deployment_id=deployment_id,
|
|
233
|
+
deployment_client=deployment_client,
|
|
234
|
+
check_every_n_seconds=TIME_TO_WAIT_FOR_UNDEPLOYMENT_POLLING,
|
|
235
|
+
)
|
|
236
|
+
failed_to_undeployment = []
|
|
237
|
+
for _, status in status_result.items():
|
|
238
|
+
if status in FAILED_UNDEPLOYMENT_STATUS:
|
|
239
|
+
failed_to_undeployment.append(
|
|
240
|
+
UNDEPLOY_ERROR_MSG.format(
|
|
241
|
+
environment_id=environment_id, status=status
|
|
242
|
+
)
|
|
243
|
+
)
|
|
244
|
+
if failed_to_undeployment:
|
|
245
|
+
raise QwakException("\n".join(failed_to_undeployment))
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
def _poll_undeployment_status(
|
|
249
|
+
deployment_id: str,
|
|
250
|
+
deployment_client: DeploymentManagementClient,
|
|
251
|
+
check_every_n_seconds: int,
|
|
252
|
+
) -> Dict:
|
|
253
|
+
deployment_status = ""
|
|
254
|
+
|
|
255
|
+
while deployment_status not in END_UNDEPLOYMENT_STATUSES:
|
|
256
|
+
sleep(check_every_n_seconds)
|
|
257
|
+
deployment_status = __get_deployment_status(
|
|
258
|
+
deployment_id=deployment_id, deployment_client=deployment_client
|
|
259
|
+
)
|
|
260
|
+
return {deployment_id: deployment_status}
|
|
261
|
+
|
|
262
|
+
|
|
263
|
+
def __get_deployment_status(
|
|
264
|
+
deployment_id: str, deployment_client: DeploymentManagementClient
|
|
265
|
+
):
|
|
266
|
+
try:
|
|
267
|
+
return ModelDeploymentStatus.Name(
|
|
268
|
+
deployment_client.get_deployment_status(
|
|
269
|
+
deployment_named_id=deployment_id,
|
|
270
|
+
).status
|
|
271
|
+
)
|
|
272
|
+
except QwakException as e:
|
|
273
|
+
logger.error(
|
|
274
|
+
f"Got error while trying to get deployment id: {deployment_id} status. Error is: {e.message}"
|
|
275
|
+
)
|
|
276
|
+
return ""
|
|
@@ -42,11 +42,18 @@ logger = get_qwak_logger()
|
|
|
42
42
|
required=False,
|
|
43
43
|
type=click.Path(exists=True, resolve_path=True, dir_okay=False),
|
|
44
44
|
)
|
|
45
|
+
@click.option(
|
|
46
|
+
"--sync",
|
|
47
|
+
is_flag=True,
|
|
48
|
+
default=False,
|
|
49
|
+
help="Waiting for deployments to be undeploy",
|
|
50
|
+
)
|
|
45
51
|
def models_undeploy(
|
|
46
52
|
model_id: str,
|
|
47
53
|
variation_name: str,
|
|
48
54
|
environment_name: List[str],
|
|
49
55
|
from_file: str = None,
|
|
56
|
+
sync: bool = False,
|
|
50
57
|
**kwargs,
|
|
51
58
|
):
|
|
52
59
|
logger.info(f"Initiating undeployment for model '{model_id}'")
|
|
@@ -62,8 +69,4 @@ def models_undeploy(
|
|
|
62
69
|
)
|
|
63
70
|
model_uuid = models_management.get_model_uuid(model_id)
|
|
64
71
|
|
|
65
|
-
undeploy(
|
|
66
|
-
model_id=model_id,
|
|
67
|
-
config=config,
|
|
68
|
-
model_uuid=model_uuid,
|
|
69
|
-
)
|
|
72
|
+
undeploy(model_id=model_id, config=config, model_uuid=model_uuid, sync=sync)
|