qwak-core 0.4.278__py3-none-any.whl → 0.5.19__py3-none-any.whl
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-core might be problematic. Click here for more details.
- _qwak_proto/jfml/hosting_gateway/v1/build_upload_url_pb2.py +8 -23
- _qwak_proto/jfml/hosting_gateway/v1/hosting_gateway_service_pb2.py +10 -27
- _qwak_proto/qwak/administration/account/v1/account_pb2.py +25 -88
- _qwak_proto/qwak/administration/account/v1/account_pb2.pyi +21 -2
- _qwak_proto/qwak/administration/account/v1/account_service_pb2.py +42 -187
- _qwak_proto/qwak/administration/account/v1/jfrog_tenant_details_pb2.py +26 -114
- _qwak_proto/qwak/administration/account/v1/personalization_pb2.py +8 -24
- _qwak_proto/qwak/administration/account/v1/preferences_pb2.py +6 -14
- _qwak_proto/qwak/administration/account/v1/terms_pb2.py +14 -54
- _qwak_proto/qwak/administration/authenticated_user/v1/authenticated_user_service_pb2.py +18 -67
- _qwak_proto/qwak/administration/authenticated_user/v1/credentials_pb2.py +8 -24
- _qwak_proto/qwak/administration/authenticated_user/v1/credentials_pb2.pyi +1 -1
- _qwak_proto/qwak/administration/authenticated_user/v1/details_pb2.py +14 -54
- _qwak_proto/qwak/administration/cluster/v2/cluster_pb2.py +38 -173
- _qwak_proto/qwak/administration/runtime_configuration/v0/container_registry_config_pb2.py +32 -0
- _qwak_proto/qwak/administration/runtime_configuration/v0/container_registry_config_pb2.pyi +65 -0
- _qwak_proto/qwak/administration/runtime_configuration/v0/container_registry_config_pb2_grpc.py +4 -0
- _qwak_proto/qwak/administration/runtime_configuration/v0/creds/auth_pb2.py +6 -14
- _qwak_proto/qwak/administration/runtime_configuration/v0/creds/secret_pb2.py +8 -24
- _qwak_proto/qwak/administration/runtime_configuration/v0/data_catalog_config_pb2.py +13 -35
- _qwak_proto/qwak/administration/runtime_configuration/v0/data_catalog_config_pb2.pyi +24 -3
- _qwak_proto/qwak/administration/runtime_configuration/v0/external/databricks/auth_pb2.py +34 -0
- _qwak_proto/qwak/administration/runtime_configuration/v0/external/databricks/auth_pb2.pyi +97 -0
- _qwak_proto/qwak/administration/runtime_configuration/v0/external/databricks/auth_pb2_grpc.py +4 -0
- _qwak_proto/qwak/administration/runtime_configuration/v0/external/elasticsearch_config_pb2.py +6 -14
- _qwak_proto/qwak/administration/runtime_configuration/v0/external/kafka_config_pb2.py +12 -44
- _qwak_proto/qwak/administration/runtime_configuration/v0/external/prometheus_config_pb2.py +9 -15
- _qwak_proto/qwak/administration/runtime_configuration/v0/external/prometheus_config_pb2.pyi +29 -0
- _qwak_proto/qwak/administration/runtime_configuration/v0/external/redis_config_pb2.py +6 -14
- _qwak_proto/qwak/administration/runtime_configuration/v0/external/victoriametrics_config_pb2.py +8 -15
- _qwak_proto/qwak/administration/runtime_configuration/v0/external/victoriametrics_config_pb2.pyi +16 -0
- _qwak_proto/qwak/administration/runtime_configuration/v0/feature_store_config_pb2.py +10 -34
- _qwak_proto/qwak/administration/runtime_configuration/v0/hosting/aws/auth_pb2.py +42 -0
- _qwak_proto/qwak/administration/runtime_configuration/v0/hosting/aws/auth_pb2.pyi +159 -0
- _qwak_proto/qwak/administration/runtime_configuration/v0/hosting/aws/auth_pb2_grpc.py +4 -0
- _qwak_proto/qwak/administration/runtime_configuration/v0/hosting/azure/auth_pb2.py +39 -0
- _qwak_proto/qwak/administration/runtime_configuration/v0/hosting/azure/auth_pb2.pyi +126 -0
- _qwak_proto/qwak/administration/runtime_configuration/v0/hosting/azure/auth_pb2_grpc.py +4 -0
- _qwak_proto/qwak/administration/runtime_configuration/v0/hosting_config_pb2.py +19 -55
- _qwak_proto/qwak/administration/runtime_configuration/v0/hosting_config_pb2.pyi +38 -6
- _qwak_proto/qwak/administration/runtime_configuration/v0/logs_storage_config_pb2.py +6 -14
- _qwak_proto/qwak/administration/runtime_configuration/v0/model_analytics_storage_config_pb2.py +6 -14
- _qwak_proto/qwak/administration/runtime_configuration/v0/network_config_pb2.py +14 -54
- _qwak_proto/qwak/administration/runtime_configuration/v0/object_storage_config_pb2.py +13 -35
- _qwak_proto/qwak/administration/runtime_configuration/v0/object_storage_config_pb2.pyi +26 -3
- _qwak_proto/qwak/administration/runtime_configuration/v0/observability_config_pb2.py +10 -34
- _qwak_proto/qwak/administration/runtime_configuration/v0/runtime_config_pb2.py +8 -15
- _qwak_proto/qwak/administration/runtime_configuration/v0/runtime_config_pb2.pyi +7 -2
- _qwak_proto/qwak/administration/runtime_configuration/v0/sql_engine_config_pb2.py +13 -35
- _qwak_proto/qwak/administration/runtime_configuration/v0/sql_engine_config_pb2.pyi +24 -3
- _qwak_proto/qwak/administration/v0/authentication/authentication_service_pb2.py +14 -47
- _qwak_proto/qwak/administration/v0/environments/configuration_pb2.py +20 -82
- _qwak_proto/qwak/administration/v0/environments/environment_pb2.py +12 -40
- _qwak_proto/qwak/administration/v0/environments/environment_service_pb2.py +36 -158
- _qwak_proto/qwak/administration/v0/environments/personalization_pb2.py +8 -24
- _qwak_proto/qwak/administration/v0/users/user_pb2.py +18 -71
- _qwak_proto/qwak/admiral/secret/v0/secret_pb2.py +29 -116
- _qwak_proto/qwak/admiral/secret/v0/secret_pb2.pyi +21 -2
- _qwak_proto/qwak/admiral/secret/v0/secret_service_pb2.py +18 -67
- _qwak_proto/qwak/admiral/secret/v0/system_secret_service_pb2.py +18 -67
- _qwak_proto/qwak/admiral/user_application_instance/v0/user_application_instance_pb2.py +38 -174
- _qwak_proto/qwak/admiral/user_application_instance/v0/user_application_instance_service_pb2.py +22 -87
- _qwak_proto/qwak/analytics/analytics_pb2.py +26 -121
- _qwak_proto/qwak/analytics/analytics_service_pb2.py +46 -207
- _qwak_proto/qwak/artifactory_settings/artifactory_settings_pb2.py +8 -24
- _qwak_proto/qwak/audience/v1/audience_api_pb2.py +30 -127
- _qwak_proto/qwak/audience/v1/audience_pb2.py +26 -113
- _qwak_proto/qwak/auto_scaling/v1/auto_scaling_pb2.py +18 -79
- _qwak_proto/qwak/auto_scaling/v1/auto_scaling_service_pb2.py +10 -27
- _qwak_proto/qwak/automation/v1/action_pb2.py +40 -180
- _qwak_proto/qwak/automation/v1/auto_scaling_pb2.py +18 -79
- _qwak_proto/qwak/automation/v1/automation_execution_pb2.py +12 -43
- _qwak_proto/qwak/automation/v1/automation_management_service_pb2.py +56 -258
- _qwak_proto/qwak/automation/v1/automation_pb2.py +11 -35
- _qwak_proto/qwak/automation/v1/automation_pb2.pyi +5 -1
- _qwak_proto/qwak/automation/v1/common_pb2.py +10 -35
- _qwak_proto/qwak/automation/v1/notification_pb2.py +16 -68
- _qwak_proto/qwak/automation/v1/trigger_pb2.py +14 -54
- _qwak_proto/qwak/batch_job/v1/batch_job_events_pb2.py +26 -116
- _qwak_proto/qwak/batch_job/v1/batch_job_resources_pb2.py +8 -26
- _qwak_proto/qwak/batch_job/v1/batch_job_service_pb2.py +119 -562
- _qwak_proto/qwak/batch_job/v1/batch_job_service_pb2.pyi +5 -1
- _qwak_proto/qwak/build/v1/build_api_pb2.py +86 -407
- _qwak_proto/qwak/build/v1/build_pb2.py +114 -549
- _qwak_proto/qwak/build_settings/build_settings_api_pb2.py +18 -67
- _qwak_proto/qwak/build_settings/build_settings_pb2.py +18 -74
- _qwak_proto/qwak/builds/build_pb2.py +46 -207
- _qwak_proto/qwak/builds/build_pb2.pyi +48 -3
- _qwak_proto/qwak/builds/build_url_pb2.py +26 -113
- _qwak_proto/qwak/builds/build_values_pb2.py +82 -0
- _qwak_proto/qwak/builds/build_values_pb2.pyi +559 -0
- _qwak_proto/qwak/builds/build_values_pb2_grpc.py +4 -0
- _qwak_proto/qwak/builds/builds_orchestrator_service_pb2.py +87 -270
- _qwak_proto/qwak/builds/builds_orchestrator_service_pb2.pyi +173 -0
- _qwak_proto/qwak/builds/builds_orchestrator_service_pb2_grpc.py +66 -0
- _qwak_proto/qwak/builds/builds_pb2.py +87 -528
- _qwak_proto/qwak/builds/builds_pb2.pyi +0 -191
- _qwak_proto/qwak/builds/builds_pb2_grpc.py +0 -233
- _qwak_proto/qwak/builds/internal_builds_orchestrator_service_pb2.py +12 -37
- _qwak_proto/qwak/data_versioning/data_versioning_pb2.py +8 -24
- _qwak_proto/qwak/data_versioning/data_versioning_service_pb2.py +14 -47
- _qwak_proto/qwak/deployment/alert_pb2.py +24 -108
- _qwak_proto/qwak/deployment/alert_service_pb2.py +30 -127
- _qwak_proto/qwak/deployment/deployment_messages_pb2.py +6 -14
- _qwak_proto/qwak/deployment/deployment_pb2.py +124 -588
- _qwak_proto/qwak/deployment/deployment_service_pb2.py +86 -419
- _qwak_proto/qwak/ecosystem/jfrog/v0/token_pb2.py +47 -165
- _qwak_proto/qwak/ecosystem/jfrog/v0/token_pb2.pyi +102 -3
- _qwak_proto/qwak/ecosystem/jfrog/v0/token_service_pb2.py +22 -87
- _qwak_proto/qwak/ecosystem/v0/auth_pb2.py +28 -0
- _qwak_proto/qwak/ecosystem/v0/auth_pb2.pyi +37 -0
- _qwak_proto/qwak/ecosystem/v0/auth_pb2_grpc.py +4 -0
- _qwak_proto/qwak/ecosystem/v0/azure_credentials_pb2.py +37 -0
- _qwak_proto/qwak/ecosystem/v0/azure_credentials_pb2.pyi +117 -0
- _qwak_proto/qwak/ecosystem/v0/azure_credentials_pb2_grpc.py +4 -0
- _qwak_proto/qwak/ecosystem/v0/credentials_pb2.py +12 -35
- _qwak_proto/qwak/ecosystem/v0/credentials_pb2.pyi +8 -3
- _qwak_proto/qwak/ecosystem/v0/ecosystem_pb2.py +30 -138
- _qwak_proto/qwak/ecosystem/v0/ecosystem_runtime_service_pb2.py +52 -237
- _qwak_proto/qwak/execution/v1/backfill_pb2.py +18 -74
- _qwak_proto/qwak/execution/v1/batch_pb2.py +10 -34
- _qwak_proto/qwak/execution/v1/deletion_pb2.py +12 -44
- _qwak_proto/qwak/execution/v1/execution_pb2.py +16 -69
- _qwak_proto/qwak/execution/v1/execution_service_pb2.py +64 -298
- _qwak_proto/qwak/execution/v1/internal/deployment/platform_details_pb2.py +6 -14
- _qwak_proto/qwak/execution/v1/jobs/job_pb2.py +18 -76
- _qwak_proto/qwak/execution/v1/jobs/job_service_pb2.py +54 -247
- _qwak_proto/qwak/execution/v1/jobs/reports/report_pb2.py +20 -84
- _qwak_proto/qwak/execution/v1/state/execution_state_pb2.py +6 -14
- _qwak_proto/qwak/execution/v1/state/execution_state_service_pb2.py +30 -127
- _qwak_proto/qwak/execution/v1/state/featureset_state_pb2.py +6 -14
- _qwak_proto/qwak/execution/v1/state/spark_execution_state_pb2.py +14 -68
- _qwak_proto/qwak/execution/v1/streaming_aggregation_pb2.py +22 -55
- _qwak_proto/qwak/execution/v1/streaming_aggregation_pb2.pyi +71 -1
- _qwak_proto/qwak/execution/v1/streaming_pb2.py +12 -44
- _qwak_proto/qwak/feature_store/entities/entity_pb2.py +16 -57
- _qwak_proto/qwak/feature_store/entities/entity_service_pb2.py +30 -127
- _qwak_proto/qwak/feature_store/features/aggregation_pb2.py +38 -175
- _qwak_proto/qwak/feature_store/features/deployment_pb2.py +36 -167
- _qwak_proto/qwak/feature_store/features/deployment_service_pb2.py +10 -27
- _qwak_proto/qwak/feature_store/features/execution_pb2.py +14 -56
- _qwak_proto/qwak/feature_store/features/feature_set_attribute_pb2.py +6 -14
- _qwak_proto/qwak/feature_store/features/feature_set_pb2.py +35 -156
- _qwak_proto/qwak/feature_store/features/feature_set_pb2.pyi +9 -1
- _qwak_proto/qwak/feature_store/features/feature_set_service_pb2.py +97 -440
- _qwak_proto/qwak/feature_store/features/feature_set_service_pb2.pyi +25 -0
- _qwak_proto/qwak/feature_store/features/feature_set_service_pb2_grpc.py +34 -0
- _qwak_proto/qwak/feature_store/features/feature_set_state_pb2.py +38 -181
- _qwak_proto/qwak/feature_store/features/feature_set_state_service_pb2.py +26 -107
- _qwak_proto/qwak/feature_store/features/feature_set_types_pb2.py +77 -347
- _qwak_proto/qwak/feature_store/features/feature_set_types_pb2.pyi +7 -2
- _qwak_proto/qwak/feature_store/features/monitoring_pb2.py +10 -34
- _qwak_proto/qwak/feature_store/features/real_time_feature_extractor_pb2.py +32 -143
- _qwak_proto/qwak/feature_store/jobs/job_pb2.py +12 -46
- _qwak_proto/qwak/feature_store/jobs/job_service_pb2.py +30 -127
- _qwak_proto/qwak/feature_store/jobs/v1/job_pb2.py +12 -45
- _qwak_proto/qwak/feature_store/jobs/v1/job_service_pb2.py +42 -187
- _qwak_proto/qwak/feature_store/platform/platform_details_pb2.py +8 -24
- _qwak_proto/qwak/feature_store/reports/report_pb2.py +14 -53
- _qwak_proto/qwak/feature_store/repository/common/platform_pb2.py +10 -34
- _qwak_proto/qwak/feature_store/serving/management_pb2.py +14 -47
- _qwak_proto/qwak/feature_store/serving/metadata_pb2.py +12 -44
- _qwak_proto/qwak/feature_store/serving/serving_pb2.py +50 -222
- _qwak_proto/qwak/feature_store/serving/v1/value_pb2.py +8 -24
- _qwak_proto/qwak/feature_store/sinks/sink_pb2.py +14 -54
- _qwak_proto/qwak/feature_store/sources/batch_pb2.py +79 -335
- _qwak_proto/qwak/feature_store/sources/batch_pb2.pyi +99 -7
- _qwak_proto/qwak/feature_store/sources/data_source_attribute_pb2.py +6 -14
- _qwak_proto/qwak/feature_store/sources/data_source_pb2.py +15 -55
- _qwak_proto/qwak/feature_store/sources/data_source_pb2.pyi +5 -1
- _qwak_proto/qwak/feature_store/sources/data_source_service_pb2.py +39 -148
- _qwak_proto/qwak/feature_store/sources/data_source_service_pb2.pyi +25 -0
- _qwak_proto/qwak/feature_store/sources/data_source_service_pb2_grpc.py +34 -0
- _qwak_proto/qwak/feature_store/sources/streaming_pb2.py +34 -146
- _qwak_proto/qwak/feature_store/v1/common/jfrog_artifact/jfrog_artifact_pb2.py +6 -14
- _qwak_proto/qwak/feature_store/v1/common/source_code/source_code_pb2.py +10 -34
- _qwak_proto/qwak/feature_store/v1/internal/data_source/data_source_service_pb2.py +16 -58
- _qwak_proto/qwak/feature_store/v1/internal/featureset/featureset_token_service_pb2.py +10 -27
- _qwak_proto/qwak/features_operator/v1/features_operator_pb2.py +14 -54
- _qwak_proto/qwak/features_operator/v1/features_operator_service_pb2.py +14 -47
- _qwak_proto/qwak/features_operator/v2/features_operator_pb2.py +16 -64
- _qwak_proto/qwak/features_operator/v2/features_operator_service_pb2.py +12 -37
- _qwak_proto/qwak/features_operator/v3/features_operator_async_service_pb2.py +26 -107
- _qwak_proto/qwak/features_operator/v3/features_operator_pb2.py +16 -64
- _qwak_proto/qwak/file_versioning/file_versioning_pb2.py +10 -33
- _qwak_proto/qwak/file_versioning/file_versioning_service_pb2.py +14 -47
- _qwak_proto/qwak/fitness_service/constructs_pb2.py +23 -100
- _qwak_proto/qwak/fitness_service/constructs_pb2.pyi +24 -0
- _qwak_proto/qwak/fitness_service/fitness_pb2.py +7 -34
- _qwak_proto/qwak/fitness_service/fitness_pb2.pyi +0 -93
- _qwak_proto/qwak/fitness_service/status_pb2.py +17 -108
- _qwak_proto/qwak/fitness_service/status_pb2.pyi +1 -121
- _qwak_proto/qwak/inference/feedback/feedback_pb2.py +28 -96
- _qwak_proto/qwak/instance_template/instance_template_pb2.py +13 -41
- _qwak_proto/qwak/instance_template/instance_template_pb2.pyi +4 -1
- _qwak_proto/qwak/instance_template/instance_template_service_pb2.py +14 -47
- _qwak_proto/qwak/integration/hugging_face_integration_pb2.py +16 -64
- _qwak_proto/qwak/integration/integration_pb2.py +28 -126
- _qwak_proto/qwak/integration/integration_service_pb2.py +34 -147
- _qwak_proto/qwak/integration/open_a_i_integration_pb2.py +16 -64
- _qwak_proto/qwak/integration/opsgenie_integration_pb2.py +20 -82
- _qwak_proto/qwak/integration/pagerduty_integration_pb2.py +24 -104
- _qwak_proto/qwak/integration/slack_app_integration_pb2.py +24 -104
- _qwak_proto/qwak/kube_deployment_captain/alert_pb2.py +22 -97
- _qwak_proto/qwak/kube_deployment_captain/alerting_pb2.py +12 -44
- _qwak_proto/qwak/kube_deployment_captain/batch_job_pb2.py +70 -323
- _qwak_proto/qwak/kube_deployment_captain/batch_job_pb2.pyi +20 -5
- _qwak_proto/qwak/kube_deployment_captain/deployment_pb2.py +44 -167
- _qwak_proto/qwak/kube_deployment_captain/feature_set_deployment_pb2.py +32 -144
- _qwak_proto/qwak/kube_deployment_captain/kube_deployment_captain_service_pb2.py +108 -519
- _qwak_proto/qwak/kube_deployment_captain/traffic_mapping_pb2.py +8 -24
- _qwak_proto/qwak/logging/log_filter_pb2.py +12 -44
- _qwak_proto/qwak/logging/log_line_pb2.py +8 -25
- _qwak_proto/qwak/logging/log_reader_service_pb2.py +10 -27
- _qwak_proto/qwak/logging/log_source_pb2.py +30 -134
- _qwak_proto/qwak/model_descriptor/open_ai_descriptor_pb2.py +18 -74
- _qwak_proto/qwak/model_group/model_group_pb2.py +25 -48
- _qwak_proto/qwak/model_group/model_group_pb2.pyi +88 -0
- _qwak_proto/qwak/model_group/model_group_pb2_grpc.py +70 -0
- _qwak_proto/qwak/model_group/model_group_repository_details_pb2.py +23 -75
- _qwak_proto/qwak/model_group/model_group_repository_details_pb2.pyi +44 -6
- _qwak_proto/qwak/models/models_pb2.py +99 -406
- _qwak_proto/qwak/models/models_pb2.pyi +86 -0
- _qwak_proto/qwak/models/models_pb2_grpc.py +34 -0
- _qwak_proto/qwak/models/models_query_pb2.py +16 -56
- _qwak_proto/qwak/models/models_query_pb2.pyi +4 -4
- _qwak_proto/qwak/monitoring/v0/alerting_channel_management_service_pb2.py +30 -127
- _qwak_proto/qwak/monitoring/v0/alerting_channel_pb2.py +34 -152
- _qwak_proto/qwak/monitoring/v0/alerting_channel_sync_service_pb2.py +14 -47
- _qwak_proto/qwak/offline/serving/v1/feature_values_pb2.py +6 -14
- _qwak_proto/qwak/offline/serving/v1/offline_serving_async_service_pb2.py +30 -123
- _qwak_proto/qwak/offline/serving/v1/options_pb2.py +6 -14
- _qwak_proto/qwak/offline/serving/v1/population_pb2.py +14 -54
- _qwak_proto/qwak/projects/jfrog_project_spec_pb2.py +6 -14
- _qwak_proto/qwak/projects/projects_pb2.py +50 -192
- _qwak_proto/qwak/projects/projects_pb2.pyi +35 -0
- _qwak_proto/qwak/prompt/v1/prompt/prompt_manager_service_pb2.py +54 -247
- _qwak_proto/qwak/prompt/v1/prompt/prompt_pb2.py +46 -214
- _qwak_proto/qwak/secret_service/secret_service_pb2.py +18 -67
- _qwak_proto/qwak/secret_service/secret_service_pb2.pyi +1 -1
- _qwak_proto/qwak/self_service/account/v0/account_membership_pb2.py +24 -106
- _qwak_proto/qwak/self_service/account/v0/account_membership_service_pb2.py +50 -227
- _qwak_proto/qwak/self_service/account/v0/account_status_pb2.py +16 -65
- _qwak_proto/qwak/self_service/account/v0/managing_account_pb2.py +37 -132
- _qwak_proto/qwak/self_service/account/v0/managing_account_pb2.pyi +40 -2
- _qwak_proto/qwak/self_service/account/v0/managing_account_service_pb2.py +22 -87
- _qwak_proto/qwak/self_service/user/v1/api_key_pb2.py +6 -14
- _qwak_proto/qwak/self_service/user/v1/user_pb2.py +6 -14
- _qwak_proto/qwak/self_service/user/v1/user_service_pb2.py +30 -121
- _qwak_proto/qwak/service_discovery/service_discovery_location_pb2.py +12 -44
- _qwak_proto/qwak/service_discovery/service_discovery_location_service_pb2.py +10 -27
- _qwak_proto/qwak/traffic/v1/traffic_api_pb2.py +22 -87
- _qwak_proto/qwak/traffic/v1/traffic_pb2.py +26 -113
- _qwak_proto/qwak/user_application/common/v0/resources_pb2.py +31 -139
- _qwak_proto/qwak/user_application/common/v0/resources_pb2.pyi +24 -0
- _qwak_proto/qwak/user_application/v0/user_application_pb2.py +11 -44
- _qwak_proto/qwak/user_application/v0/user_application_pb2.pyi +6 -0
- _qwak_proto/qwak/vectors/v1/collection/collection_pb2.py +24 -106
- _qwak_proto/qwak/vectors/v1/collection/collection_service_pb2.py +38 -167
- _qwak_proto/qwak/vectors/v1/collection/event/collection_event_pb2.py +6 -14
- _qwak_proto/qwak/vectors/v1/filters_pb2.py +30 -134
- _qwak_proto/qwak/vectors/v1/vector_pb2.py +14 -54
- _qwak_proto/qwak/vectors/v1/vector_service_pb2.py +26 -107
- _qwak_proto/qwak/workspace/workspace_pb2.py +22 -107
- _qwak_proto/qwak/workspace/workspace_service_pb2.py +62 -287
- qwak/__init__.py +1 -1
- qwak/automations/automations.py +3 -0
- qwak/clients/feature_store/execution_management_client.py +28 -0
- qwak/clients/feature_store/management_client.py +156 -206
- qwak/clients/feature_store/operator_client.py +19 -1
- qwak/clients/logging_client/client.py +13 -18
- qwak/clients/model_management/client.py +0 -5
- qwak/clients/project/client.py +0 -7
- qwak/exceptions/__init__.py +1 -0
- qwak/exceptions/qwak_grpc_address_exception.py +9 -0
- qwak/feature_store/_common/artifact_utils.py +10 -8
- qwak/feature_store/_common/packaging.py +39 -21
- qwak/feature_store/_common/source_code_spec.py +61 -11
- qwak/feature_store/_common/source_code_spec_factory.py +63 -10
- qwak/feature_store/data_sources/__init__.py +2 -0
- qwak/feature_store/data_sources/base.py +11 -7
- qwak/feature_store/data_sources/batch/snowflake.py +34 -8
- qwak/feature_store/data_sources/batch/unity_catalog.py +107 -0
- qwak/feature_store/execution/streaming_backfill.py +48 -0
- qwak/feature_store/feature_sets/base_feature_set.py +1 -0
- qwak/feature_store/feature_sets/streaming.py +84 -63
- qwak/feature_store/feature_sets/streaming_backfill.py +88 -124
- qwak/feature_store/online/client.py +20 -4
- qwak/feature_store/validations/validation_decorators.py +70 -0
- qwak/feature_store/validations/validation_response.py +3 -1
- qwak/feature_store/validations/validator.py +11 -3
- qwak/inner/build_logic/interface/context_interface.py +4 -0
- qwak/inner/build_logic/phases/phase_010_fetch_model/post_fetch_validation_step.py +1 -1
- qwak/inner/const.py +2 -6
- qwak/inner/di_configuration/__init__.py +1 -69
- qwak/inner/di_configuration/account.py +18 -63
- qwak/inner/di_configuration/containers.py +5 -1
- qwak/inner/di_configuration/dependency_wiring.py +98 -0
- qwak/inner/tool/auth.py +10 -80
- qwak/inner/tool/grpc/grpc_auth.py +0 -32
- qwak/inner/tool/grpc/grpc_tools.py +125 -11
- qwak/inner/tool/grpc/grpc_try_wrapping.py +140 -3
- qwak/llmops/generation/chat/openai/types/chat/chat_completion.py +24 -6
- qwak/llmops/generation/chat/openai/types/chat/chat_completion_chunk.py +44 -8
- qwak/llmops/generation/chat/openai/types/chat/chat_completion_message.py +6 -3
- qwak/qwak_client/client.py +2 -13
- qwak/vector_store/rest_helpers.py +4 -16
- qwak_core-0.5.19.dist-info/METADATA +48 -0
- {qwak_core-0.4.278.dist-info → qwak_core-0.5.19.dist-info}/RECORD +316 -334
- qwak_services_mock/mocks/execution_management_service.py +9 -1
- qwak_services_mock/mocks/feature_store_data_sources_manager_api.py +55 -13
- qwak_services_mock/mocks/feature_store_entities_manager_api.py +31 -29
- qwak_services_mock/mocks/features_operator_v3_service.py +20 -0
- qwak_services_mock/mocks/qwak_mocks.py +0 -2
- qwak_services_mock/services_mock.py +1 -11
- _qwak_proto/qwak/fitness_service/fitness_service_pb2.py +0 -110
- _qwak_proto/qwak/fitness_service/fitness_service_pb2.pyi +0 -121
- _qwak_proto/qwak/fitness_service/fitness_service_pb2_grpc.py +0 -169
- frogml_storage/__init__.py +0 -1
- frogml_storage/artifactory/__init__.py +0 -1
- frogml_storage/artifactory/_artifactory_api.py +0 -315
- frogml_storage/authentication/login/__init__.py +0 -1
- frogml_storage/authentication/login/_login_cli.py +0 -239
- frogml_storage/authentication/login/_login_command.py +0 -74
- frogml_storage/authentication/models/__init__.py +0 -3
- frogml_storage/authentication/models/_auth.py +0 -24
- frogml_storage/authentication/models/_auth_config.py +0 -70
- frogml_storage/authentication/models/_login.py +0 -22
- frogml_storage/authentication/utils/__init__.py +0 -17
- frogml_storage/authentication/utils/_authentication_utils.py +0 -281
- frogml_storage/authentication/utils/_login_checks_utils.py +0 -114
- frogml_storage/base_storage.py +0 -140
- frogml_storage/constants.py +0 -56
- frogml_storage/exceptions/checksum_verification_error.py +0 -3
- frogml_storage/exceptions/validation_error.py +0 -4
- frogml_storage/frog_ml.py +0 -668
- frogml_storage/http/__init__.py +0 -1
- frogml_storage/http/http_client.py +0 -83
- frogml_storage/logging/__init__.py +0 -1
- frogml_storage/logging/_log_config.py +0 -45
- frogml_storage/logging/log_utils.py +0 -21
- frogml_storage/models/__init__.py +0 -1
- frogml_storage/models/_download_context.py +0 -54
- frogml_storage/models/dataset_manifest.py +0 -13
- frogml_storage/models/entity_manifest.py +0 -93
- frogml_storage/models/frogml_dataset_version.py +0 -21
- frogml_storage/models/frogml_entity_type_info.py +0 -50
- frogml_storage/models/frogml_entity_version.py +0 -34
- frogml_storage/models/frogml_model_version.py +0 -21
- frogml_storage/models/model_manifest.py +0 -60
- frogml_storage/models/serialization_metadata.py +0 -15
- frogml_storage/utils/__init__.py +0 -12
- frogml_storage/utils/_environment.py +0 -21
- frogml_storage/utils/_input_checks_utility.py +0 -104
- frogml_storage/utils/_storage_utils.py +0 -15
- frogml_storage/utils/_url_utils.py +0 -27
- qwak/clients/build_management/__init__.py +0 -1
- qwak/clients/build_management/client.py +0 -114
- qwak_core-0.4.278.dist-info/METADATA +0 -415
- qwak_services_mock/mocks/build_management.py +0 -100
- {qwak_core-0.4.278.dist-info → qwak_core-0.5.19.dist-info}/WHEEL +0 -0
|
@@ -16,7 +16,6 @@ from _qwak_proto.qwak.feature_store.entities.entity_service_pb2_grpc import (
|
|
|
16
16
|
)
|
|
17
17
|
from _qwak_proto.qwak.feature_store.features.feature_set_pb2 import FeatureSetSpec
|
|
18
18
|
from _qwak_proto.qwak.feature_store.features.feature_set_service_pb2 import (
|
|
19
|
-
CreateUploadURLRequest,
|
|
20
19
|
CreateUploadURLRequestV1,
|
|
21
20
|
DeleteFeatureSetRequest,
|
|
22
21
|
DeleteFeatureSetResponse,
|
|
@@ -75,6 +74,7 @@ from dependency_injector.wiring import Provide
|
|
|
75
74
|
from grpc import RpcError, StatusCode
|
|
76
75
|
from qwak.exceptions import QwakException
|
|
77
76
|
from qwak.inner.di_configuration import QwakContainer
|
|
77
|
+
from qwak.inner.tool.grpc.grpc_try_wrapping import grpc_try_catch_wrapper
|
|
78
78
|
|
|
79
79
|
|
|
80
80
|
class FeatureRegistryClient:
|
|
@@ -90,28 +90,27 @@ class FeatureRegistryClient:
|
|
|
90
90
|
grpc_channel
|
|
91
91
|
)
|
|
92
92
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
raise QwakException(
|
|
103
|
-
f"Failed to get a presigned url, error is {e.details()}"
|
|
93
|
+
@grpc_try_catch_wrapper(
|
|
94
|
+
"Failed to get a presigned url", reraise_non_grpc_error_original_exception=True
|
|
95
|
+
)
|
|
96
|
+
def get_datasource_source_code_presign_url(
|
|
97
|
+
self, ds_name: str, repository_name: str
|
|
98
|
+
) -> GetDataSourceSourceCodeUploadResponse:
|
|
99
|
+
return self._internal_data_sources_service.GetDataSourceSourceCodeUploadURL(
|
|
100
|
+
GetDataSourceSourceCodeUploadRequest(
|
|
101
|
+
data_source_name=ds_name, repository_name=repository_name
|
|
104
102
|
)
|
|
103
|
+
)
|
|
105
104
|
|
|
105
|
+
@grpc_try_catch_wrapper(
|
|
106
|
+
"Failed to list features", reraise_non_grpc_error_original_exception=True
|
|
107
|
+
)
|
|
106
108
|
def list_feature_sets(self) -> ListFeatureSetsResponse:
|
|
107
109
|
"""
|
|
108
110
|
Returns:
|
|
109
111
|
ListFeatureSetsResponse
|
|
110
112
|
"""
|
|
111
|
-
|
|
112
|
-
return self._features_service.ListFeatureSets(ListFeatureSetsRequest())
|
|
113
|
-
except RpcError as e:
|
|
114
|
-
raise QwakException(f"Failed to list features, error is {e.details()}")
|
|
113
|
+
return self._features_service.ListFeatureSets(ListFeatureSetsRequest())
|
|
115
114
|
|
|
116
115
|
def get_entity_by_name(self, entity_name: str) -> GetEntityByNameResponse:
|
|
117
116
|
"""
|
|
@@ -128,6 +127,9 @@ class FeatureRegistryClient:
|
|
|
128
127
|
"entity",
|
|
129
128
|
)
|
|
130
129
|
|
|
130
|
+
@grpc_try_catch_wrapper(
|
|
131
|
+
"Failed to delete feature", reraise_non_grpc_error_original_exception=True
|
|
132
|
+
)
|
|
131
133
|
def delete_feature_set(self, feature_set_id: str) -> DeleteFeatureSetResponse:
|
|
132
134
|
"""
|
|
133
135
|
Args:
|
|
@@ -135,13 +137,13 @@ class FeatureRegistryClient:
|
|
|
135
137
|
Returns:
|
|
136
138
|
DeleteFeatureSetResponse
|
|
137
139
|
"""
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
)
|
|
142
|
-
except RpcError as e:
|
|
143
|
-
raise QwakException(f"Failed to delete feature, error is {e.details()}")
|
|
140
|
+
return self._features_service.DeleteFeatureSet(
|
|
141
|
+
DeleteFeatureSetRequest(feature_set_id=feature_set_id)
|
|
142
|
+
)
|
|
144
143
|
|
|
144
|
+
@grpc_try_catch_wrapper(
|
|
145
|
+
"Failed to delete entity", reraise_non_grpc_error_original_exception=True
|
|
146
|
+
)
|
|
145
147
|
def delete_entity(self, entity_id: str) -> DeleteEntityResponse:
|
|
146
148
|
"""
|
|
147
149
|
Args:
|
|
@@ -149,13 +151,13 @@ class FeatureRegistryClient:
|
|
|
149
151
|
Returns:
|
|
150
152
|
DeleteEntityResponse
|
|
151
153
|
"""
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
)
|
|
156
|
-
except RpcError as e:
|
|
157
|
-
raise QwakException(f"Failed to delete entity, error is {e.details()}")
|
|
154
|
+
return self._entity_service.DeleteEntity(
|
|
155
|
+
DeleteEntityRequest(entity_id=entity_id)
|
|
156
|
+
)
|
|
158
157
|
|
|
158
|
+
@grpc_try_catch_wrapper(
|
|
159
|
+
"Failed to delete data source", reraise_non_grpc_error_original_exception=True
|
|
160
|
+
)
|
|
159
161
|
def delete_data_source(self, data_source_id: str) -> DeleteDataSourceResponse:
|
|
160
162
|
"""
|
|
161
163
|
Args:
|
|
@@ -163,13 +165,13 @@ class FeatureRegistryClient:
|
|
|
163
165
|
Returns:
|
|
164
166
|
DeleteDataSourceResponse
|
|
165
167
|
"""
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
)
|
|
170
|
-
except RpcError as e:
|
|
171
|
-
raise QwakException(f"Failed to delete data source, error is {e.details()}")
|
|
168
|
+
return self._sources_service.DeleteDataSource(
|
|
169
|
+
DeleteDataSourceRequest(data_source_id=data_source_id)
|
|
170
|
+
)
|
|
172
171
|
|
|
172
|
+
@grpc_try_catch_wrapper(
|
|
173
|
+
"Failed to run feature", reraise_non_grpc_error_original_exception=True
|
|
174
|
+
)
|
|
173
175
|
def run_feature_set(self, feature_set_name: str) -> RunBatchFeatureSetResponse:
|
|
174
176
|
"""
|
|
175
177
|
Trigger a single ETL run for that feature set name
|
|
@@ -178,13 +180,13 @@ class FeatureRegistryClient:
|
|
|
178
180
|
Returns:
|
|
179
181
|
:return RunBatchFeatureSetResponse with the execution id
|
|
180
182
|
"""
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
)
|
|
185
|
-
except RpcError as e:
|
|
186
|
-
raise QwakException(f"Failed to run feature, error is {e.details()}")
|
|
183
|
+
return self._features_service.RunBatchFeatureSet(
|
|
184
|
+
RunBatchFeatureSetRequest(feature_set_name=feature_set_name)
|
|
185
|
+
)
|
|
187
186
|
|
|
187
|
+
@grpc_try_catch_wrapper(
|
|
188
|
+
"Failed to run feature", reraise_non_grpc_error_original_exception=True
|
|
189
|
+
)
|
|
188
190
|
def run_parquet_batch_feature_set(
|
|
189
191
|
self, feature_set_name: str, parquet_location: str, timestamp_column: str
|
|
190
192
|
):
|
|
@@ -197,17 +199,17 @@ class FeatureRegistryClient:
|
|
|
197
199
|
Returns:
|
|
198
200
|
None
|
|
199
201
|
"""
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
timestamp_column=timestamp_column,
|
|
206
|
-
)
|
|
202
|
+
self._features_service.RunParquetBatchFeatureSet(
|
|
203
|
+
RunParquetBatchFeatureSetRequest(
|
|
204
|
+
feature_set_name=feature_set_name,
|
|
205
|
+
parquet_location=parquet_location,
|
|
206
|
+
timestamp_column=timestamp_column,
|
|
207
207
|
)
|
|
208
|
-
|
|
209
|
-
raise QwakException(f"Failed to run feature, error is {e.details()}")
|
|
208
|
+
)
|
|
210
209
|
|
|
210
|
+
@grpc_try_catch_wrapper(
|
|
211
|
+
"Failed to update entity", reraise_non_grpc_error_original_exception=True
|
|
212
|
+
)
|
|
211
213
|
def update_entity(
|
|
212
214
|
self, entity_id: str, proto_entity_spec: EntitySpec
|
|
213
215
|
) -> UpdateEntityResponse:
|
|
@@ -218,13 +220,13 @@ class FeatureRegistryClient:
|
|
|
218
220
|
Returns:
|
|
219
221
|
UpdateEntityResponse
|
|
220
222
|
"""
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
)
|
|
225
|
-
except RpcError as e:
|
|
226
|
-
raise QwakException(f"Failed to update entity, error is {e.details()}")
|
|
223
|
+
return self._entity_service.UpdateEntity(
|
|
224
|
+
UpdateEntityRequest(entity_id=entity_id, entity_spec=proto_entity_spec)
|
|
225
|
+
)
|
|
227
226
|
|
|
227
|
+
@grpc_try_catch_wrapper(
|
|
228
|
+
"Failed to create entity", reraise_non_grpc_error_original_exception=True
|
|
229
|
+
)
|
|
228
230
|
def create_entity(self, proto_entity_spec: EntitySpec) -> CreateEntityResponse:
|
|
229
231
|
"""
|
|
230
232
|
Args:
|
|
@@ -232,32 +234,29 @@ class FeatureRegistryClient:
|
|
|
232
234
|
Returns:
|
|
233
235
|
CreateEntityResponse
|
|
234
236
|
"""
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
)
|
|
239
|
-
except RpcError as e:
|
|
240
|
-
raise QwakException(f"Failed to create entity, error is {e.details()}")
|
|
237
|
+
return self._entity_service.CreateEntity(
|
|
238
|
+
CreateEntityRequest(entity_spec=proto_entity_spec)
|
|
239
|
+
)
|
|
241
240
|
|
|
241
|
+
@grpc_try_catch_wrapper(
|
|
242
|
+
"Failed to list entities", reraise_non_grpc_error_original_exception=True
|
|
243
|
+
)
|
|
242
244
|
def list_entities(self) -> ListEntitiesResponse:
|
|
243
245
|
"""
|
|
244
246
|
Returns:
|
|
245
247
|
ListEntitiesResponse
|
|
246
248
|
"""
|
|
247
|
-
|
|
248
|
-
return self._entity_service.ListEntities(ListEntitiesRequest())
|
|
249
|
-
except RpcError as e:
|
|
250
|
-
raise QwakException(f"Failed to list entities, error is {e.details()}")
|
|
249
|
+
return self._entity_service.ListEntities(ListEntitiesRequest())
|
|
251
250
|
|
|
251
|
+
@grpc_try_catch_wrapper(
|
|
252
|
+
"Failed to list data sources", reraise_non_grpc_error_original_exception=True
|
|
253
|
+
)
|
|
252
254
|
def list_data_sources(self) -> ListDataSourcesResponse:
|
|
253
255
|
"""
|
|
254
256
|
Returns:
|
|
255
257
|
ListDataSourcesResponse
|
|
256
258
|
"""
|
|
257
|
-
|
|
258
|
-
return self._sources_service.ListDataSources(ListDataSourcesRequest())
|
|
259
|
-
except RpcError as e:
|
|
260
|
-
raise QwakException(f"Failed to list data sources, error is {e.details()}")
|
|
259
|
+
return self._sources_service.ListDataSources(ListDataSourcesRequest())
|
|
261
260
|
|
|
262
261
|
def get_data_source_by_name(
|
|
263
262
|
self, data_source_name: str
|
|
@@ -276,6 +275,9 @@ class FeatureRegistryClient:
|
|
|
276
275
|
"data source",
|
|
277
276
|
)
|
|
278
277
|
|
|
278
|
+
@grpc_try_catch_wrapper(
|
|
279
|
+
"Failed to update data source", reraise_non_grpc_error_original_exception=True
|
|
280
|
+
)
|
|
279
281
|
def update_data_source(
|
|
280
282
|
self,
|
|
281
283
|
data_source_id,
|
|
@@ -288,16 +290,16 @@ class FeatureRegistryClient:
|
|
|
288
290
|
Returns:
|
|
289
291
|
UpdateDataSourceResponse
|
|
290
292
|
"""
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
data_source_spec=proto_data_source,
|
|
296
|
-
)
|
|
293
|
+
return self._sources_service.UpdateDataSource(
|
|
294
|
+
UpdateDataSourceRequest(
|
|
295
|
+
data_source_id=data_source_id,
|
|
296
|
+
data_source_spec=proto_data_source,
|
|
297
297
|
)
|
|
298
|
-
|
|
299
|
-
raise QwakException(f"Failed to update data source, error is {e.details()}")
|
|
298
|
+
)
|
|
300
299
|
|
|
300
|
+
@grpc_try_catch_wrapper(
|
|
301
|
+
"Failed to create data source", reraise_non_grpc_error_original_exception=True
|
|
302
|
+
)
|
|
301
303
|
def create_data_source(
|
|
302
304
|
self, proto_data_source: FeatureSetSpec
|
|
303
305
|
) -> CreateDataSourceResponse:
|
|
@@ -307,12 +309,9 @@ class FeatureRegistryClient:
|
|
|
307
309
|
Returns:
|
|
308
310
|
CreateDataSourceResponse
|
|
309
311
|
"""
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
)
|
|
314
|
-
except RpcError as e:
|
|
315
|
-
raise QwakException(f"Failed to create data source, error is {e.details()}")
|
|
312
|
+
return self._sources_service.CreateDataSource(
|
|
313
|
+
CreateDataSourceRequest(data_source_spec=proto_data_source)
|
|
314
|
+
)
|
|
316
315
|
|
|
317
316
|
def get_feature_set_by_name(self, feature_set_name) -> GetFeatureSetByNameResponse:
|
|
318
317
|
"""
|
|
@@ -329,6 +328,9 @@ class FeatureRegistryClient:
|
|
|
329
328
|
"feature set",
|
|
330
329
|
)
|
|
331
330
|
|
|
331
|
+
@grpc_try_catch_wrapper(
|
|
332
|
+
"Failed to update feature set", reraise_non_grpc_error_original_exception=True
|
|
333
|
+
)
|
|
332
334
|
def update_feature_set(
|
|
333
335
|
self,
|
|
334
336
|
feature_set_id: str,
|
|
@@ -341,16 +343,15 @@ class FeatureRegistryClient:
|
|
|
341
343
|
Returns:
|
|
342
344
|
UpdateFeatureSetResponse
|
|
343
345
|
"""
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
UpdateFeatureSetRequest(
|
|
348
|
-
feature_set_id=feature_set_id, feature_set_spec=proto_feature_set
|
|
349
|
-
)
|
|
346
|
+
return self._features_service.UpdateFeatureSet(
|
|
347
|
+
UpdateFeatureSetRequest(
|
|
348
|
+
feature_set_id=feature_set_id, feature_set_spec=proto_feature_set
|
|
350
349
|
)
|
|
351
|
-
|
|
352
|
-
raise QwakException(f"Failed to update feature set, error is {e.details()}")
|
|
350
|
+
)
|
|
353
351
|
|
|
352
|
+
@grpc_try_catch_wrapper(
|
|
353
|
+
"Failed to create feature set", reraise_non_grpc_error_original_exception=True
|
|
354
|
+
)
|
|
354
355
|
def create_feature_set(
|
|
355
356
|
self, proto_feature_set: FeatureSetSpec
|
|
356
357
|
) -> RegisterFeatureSetResponse:
|
|
@@ -360,13 +361,9 @@ class FeatureRegistryClient:
|
|
|
360
361
|
Returns:
|
|
361
362
|
RegisterFeatureSetResponse
|
|
362
363
|
"""
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
RegisterFeatureSetRequest(feature_set_spec=proto_feature_set)
|
|
367
|
-
)
|
|
368
|
-
except RpcError as e:
|
|
369
|
-
raise QwakException(f"Failed to create feature set, error is {e.details()}")
|
|
364
|
+
return self._features_service.RegisterFeatureSet(
|
|
365
|
+
RegisterFeatureSetRequest(feature_set_spec=proto_feature_set)
|
|
366
|
+
)
|
|
370
367
|
|
|
371
368
|
@staticmethod
|
|
372
369
|
def _fetch_by_name(extract_function, name, fs_object_type):
|
|
@@ -388,23 +385,6 @@ class FeatureRegistryClient:
|
|
|
388
385
|
f"Failed to fetch {fs_object_type} by name [{name}], error code: [{e.details()}]"
|
|
389
386
|
)
|
|
390
387
|
|
|
391
|
-
def get_presigned_url(self, feature_set_name: str):
|
|
392
|
-
"""
|
|
393
|
-
get presigned url according feature set name
|
|
394
|
-
Args:
|
|
395
|
-
feature_set_name: name of the feature set
|
|
396
|
-
Returns:
|
|
397
|
-
presigned url
|
|
398
|
-
"""
|
|
399
|
-
try:
|
|
400
|
-
return self._features_service.CreateUploadURL(
|
|
401
|
-
CreateUploadURLRequest(feature_set_name=feature_set_name)
|
|
402
|
-
).upload_url
|
|
403
|
-
except RpcError as e:
|
|
404
|
-
raise QwakException(
|
|
405
|
-
f"Failed to get presigned url for feature name: {feature_set_name} , error code: [{e.details()}]"
|
|
406
|
-
)
|
|
407
|
-
|
|
408
388
|
def get_presigned_url_v1(
|
|
409
389
|
self, feature_set_name: str, transformation: ProtoTransformation
|
|
410
390
|
) -> str:
|
|
@@ -430,28 +410,10 @@ class FeatureRegistryClient:
|
|
|
430
410
|
f"{type(transformation)}, error code: [{e.details()}]"
|
|
431
411
|
)
|
|
432
412
|
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
create a pre-sign url for data source according to qwak path convention
|
|
438
|
-
Args:
|
|
439
|
-
data_source_name: str: data source name
|
|
440
|
-
object_name: str object name
|
|
441
|
-
Returns:
|
|
442
|
-
presigned url: str
|
|
443
|
-
"""
|
|
444
|
-
try:
|
|
445
|
-
return self._sources_service.CreateDataSourceUploadURL(
|
|
446
|
-
CreateDataSourceUploadURLRequest(
|
|
447
|
-
data_source_name=data_source_name, object_name=object_name
|
|
448
|
-
)
|
|
449
|
-
).upload_url
|
|
450
|
-
except RpcError as e:
|
|
451
|
-
raise QwakException(
|
|
452
|
-
f"Failed to get presigned url for data source: {data_source_name}, object name: {object_name} , error code: [{e.details()}]"
|
|
453
|
-
) from e
|
|
454
|
-
|
|
413
|
+
@grpc_try_catch_wrapper(
|
|
414
|
+
"Failed to get presigned url for data source: {data_source_name}, object name: {object_name}",
|
|
415
|
+
reraise_non_grpc_error_original_exception=True,
|
|
416
|
+
)
|
|
455
417
|
def get_data_source_presigned_url_v1(
|
|
456
418
|
self, data_source_name: str, object_name: str
|
|
457
419
|
) -> str:
|
|
@@ -465,93 +427,81 @@ class FeatureRegistryClient:
|
|
|
465
427
|
Returns:
|
|
466
428
|
presigned url: str
|
|
467
429
|
"""
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
data_source_name=data_source_name, object_name=object_name
|
|
472
|
-
)
|
|
473
|
-
).upload_url
|
|
474
|
-
except RpcError as e:
|
|
475
|
-
raise QwakException(
|
|
476
|
-
f"Failed to get presigned url for data source: {data_source_name}, object name: {object_name} , error code: [{e.details()}]"
|
|
430
|
+
return self._sources_service.CreateDataSourceUploadURLV1(
|
|
431
|
+
CreateDataSourceUploadURLRequest(
|
|
432
|
+
data_source_name=data_source_name, object_name=object_name
|
|
477
433
|
)
|
|
434
|
+
).upload_url
|
|
478
435
|
|
|
436
|
+
@grpc_try_catch_wrapper(
|
|
437
|
+
"Failed to query scheduling state for Featureset {feature_set_name}",
|
|
438
|
+
reraise_non_grpc_error_original_exception=True,
|
|
439
|
+
)
|
|
479
440
|
def get_feature_set_scheduling_state(
|
|
480
441
|
self, feature_set_name: str
|
|
481
442
|
) -> GetFeaturesetSchedulingStateResponse:
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
)
|
|
486
|
-
except RpcError as e:
|
|
487
|
-
raise QwakException(
|
|
488
|
-
f"Failed to query scheduling state for Featureset {feature_set_name}, nested exception: [{e.details()}]"
|
|
489
|
-
) from e
|
|
443
|
+
return self._features_service.GetFeaturesetSchedulingState(
|
|
444
|
+
GetFeaturesetSchedulingStateRequest(featureset_name=feature_set_name)
|
|
445
|
+
)
|
|
490
446
|
|
|
447
|
+
@grpc_try_catch_wrapper(
|
|
448
|
+
"Failed to pause Featureset {feature_set_name}",
|
|
449
|
+
reraise_non_grpc_error_original_exception=True,
|
|
450
|
+
)
|
|
491
451
|
def pause_feature_set(self, feature_set_name: str):
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
)
|
|
496
|
-
except RpcError as e:
|
|
497
|
-
raise QwakException(
|
|
498
|
-
f"Failed to pause Featureset {feature_set_name}, nested exception: [{e.details()}]"
|
|
499
|
-
) from e
|
|
452
|
+
self._features_service.PauseFeatureset(
|
|
453
|
+
PauseFeaturesetRequest(featureset_name=feature_set_name)
|
|
454
|
+
)
|
|
500
455
|
|
|
456
|
+
@grpc_try_catch_wrapper(
|
|
457
|
+
"Failed to resume Featureset {feature_set_name}",
|
|
458
|
+
reraise_non_grpc_error_original_exception=True,
|
|
459
|
+
)
|
|
501
460
|
def resume_feature_set(self, feature_set_name: str):
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
)
|
|
506
|
-
except RpcError as e:
|
|
507
|
-
raise QwakException(
|
|
508
|
-
f"Failed to resume Featureset {feature_set_name}, nested exception: [{e.details()}]"
|
|
509
|
-
) from e
|
|
461
|
+
self._features_service.ResumeFeatureset(
|
|
462
|
+
ResumeFeaturesetRequest(featureset_name=feature_set_name)
|
|
463
|
+
)
|
|
510
464
|
|
|
465
|
+
@grpc_try_catch_wrapper(
|
|
466
|
+
"Failed list Featureset versions for Featureset: {featureset_name}",
|
|
467
|
+
reraise_non_grpc_error_original_exception=True,
|
|
468
|
+
)
|
|
511
469
|
def list_featureset_versions(
|
|
512
470
|
self, featureset_name: str
|
|
513
471
|
) -> ListFeaturesetVersionsByNameResponse:
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
)
|
|
518
|
-
except RpcError as e:
|
|
519
|
-
raise QwakException(
|
|
520
|
-
f"Failed list Featureset versions for Featureset: {featureset_name}, nested exception: [{e.details()}]"
|
|
521
|
-
) from e
|
|
472
|
+
return self._features_service.ListFeaturesetVersionsByName(
|
|
473
|
+
ListFeaturesetVersionsByNameRequest(featureset_name=featureset_name)
|
|
474
|
+
)
|
|
522
475
|
|
|
476
|
+
@grpc_try_catch_wrapper(
|
|
477
|
+
"Failed to set active version: {version_number} for Featureset: {featureset_name}",
|
|
478
|
+
reraise_non_grpc_error_original_exception=True,
|
|
479
|
+
)
|
|
523
480
|
def set_active_featureset_version(self, featureset_name: str, version_number: int):
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
featureset_version_number=version_number,
|
|
529
|
-
)
|
|
481
|
+
self._features_service.SetActiveFeaturesetVersion(
|
|
482
|
+
SetActiveFeaturesetVersionRequest(
|
|
483
|
+
featureset_name=featureset_name,
|
|
484
|
+
featureset_version_number=version_number,
|
|
530
485
|
)
|
|
531
|
-
|
|
532
|
-
raise QwakException(
|
|
533
|
-
f"Failed to set active version: {version_number} for Featureset: {featureset_name}, nested exception: [{e.details()}]"
|
|
534
|
-
) from e
|
|
486
|
+
)
|
|
535
487
|
|
|
488
|
+
@grpc_try_catch_wrapper(
|
|
489
|
+
"Failed to delete version: {version_number} for Featureset: {featureset_name}",
|
|
490
|
+
reraise_non_grpc_error_original_exception=True,
|
|
491
|
+
)
|
|
536
492
|
def delete_featureset_version(self, featureset_name: str, version_number: int):
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
featureset_version_number=version_number,
|
|
542
|
-
)
|
|
493
|
+
self._features_service.DeleteFeaturesetVersion(
|
|
494
|
+
DeleteFeaturesetVersionRequest(
|
|
495
|
+
featureset_name=featureset_name,
|
|
496
|
+
featureset_version_number=version_number,
|
|
543
497
|
)
|
|
544
|
-
|
|
545
|
-
raise QwakException(
|
|
546
|
-
f"Failed to delete version: {version_number} for Featureset: {featureset_name}, nested exception: [{e.details()}]"
|
|
547
|
-
) from e
|
|
498
|
+
)
|
|
548
499
|
|
|
500
|
+
@grpc_try_catch_wrapper(
|
|
501
|
+
"Failed to get env to featuresets mapping",
|
|
502
|
+
reraise_non_grpc_error_original_exception=True,
|
|
503
|
+
)
|
|
549
504
|
def get_env_to_featuresets_mapping(self) -> GetEnvToFeatureSetsMappingResponse:
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
)
|
|
554
|
-
except RpcError as e:
|
|
555
|
-
raise QwakException(
|
|
556
|
-
f"Failed to get env to featuresets mapping, nested exception: [{e.details()}]"
|
|
557
|
-
) from e
|
|
505
|
+
return self._features_service.GetEnvToFeatureSetsMapping(
|
|
506
|
+
GetEnvToFeatureSetsMappingRequest()
|
|
507
|
+
)
|
|
@@ -19,6 +19,7 @@ from _qwak_proto.qwak.features_operator.v3.features_operator_pb2 import (
|
|
|
19
19
|
)
|
|
20
20
|
from dependency_injector.wiring import Provide
|
|
21
21
|
from qwak.inner.di_configuration import QwakContainer
|
|
22
|
+
from qwak.inner.tool.grpc.grpc_try_wrapping import grpc_try_catch_wrapper
|
|
22
23
|
from qwak.inner.tool.retry_utils import retry
|
|
23
24
|
|
|
24
25
|
|
|
@@ -38,6 +39,9 @@ class FeaturesOperatorClient:
|
|
|
38
39
|
def __init__(self, grpc_channel=Provide[QwakContainer.core_grpc_channel]):
|
|
39
40
|
self._v3_client = FeaturesOperatorAsyncServiceStub(grpc_channel)
|
|
40
41
|
|
|
42
|
+
@grpc_try_catch_wrapper(
|
|
43
|
+
"Failed to validate DataSource", reraise_non_grpc_error_original_exception=True
|
|
44
|
+
)
|
|
41
45
|
def validate_data_source(
|
|
42
46
|
self,
|
|
43
47
|
data_source_spec: DataSourceSpec,
|
|
@@ -56,6 +60,9 @@ class FeaturesOperatorClient:
|
|
|
56
60
|
response: ValidationResponse = self._v3_client.ValidateDataSource(request)
|
|
57
61
|
return response.request_id
|
|
58
62
|
|
|
63
|
+
@grpc_try_catch_wrapper(
|
|
64
|
+
"Failed to validate FeatureSet", reraise_non_grpc_error_original_exception=True
|
|
65
|
+
)
|
|
59
66
|
def validate_featureset(
|
|
60
67
|
self,
|
|
61
68
|
featureset_spec: FeatureSetSpec,
|
|
@@ -67,7 +74,6 @@ class FeaturesOperatorClient:
|
|
|
67
74
|
Validates and fetches a sample from the featureset
|
|
68
75
|
:return: Request handle id to poll for result with
|
|
69
76
|
"""
|
|
70
|
-
resource_path = str(resource_path) if resource_path is not None else None
|
|
71
77
|
request: ValidateFeatureSetRequest = ValidateFeatureSetRequest(
|
|
72
78
|
feature_set_spec=featureset_spec,
|
|
73
79
|
num_samples=num_samples,
|
|
@@ -78,7 +84,15 @@ class FeaturesOperatorClient:
|
|
|
78
84
|
response: ValidationResponse = self._v3_client.ValidateFeatureSet(request)
|
|
79
85
|
return response.request_id
|
|
80
86
|
|
|
87
|
+
@grpc_try_catch_wrapper(
|
|
88
|
+
"Failed to fetch validation result",
|
|
89
|
+
reraise_non_grpc_error_original_exception=True,
|
|
90
|
+
)
|
|
81
91
|
def get_result(self, request_handle: str) -> GetValidationResultResponse:
|
|
92
|
+
"""
|
|
93
|
+
Try to fetch the validation result using the given request handle.
|
|
94
|
+
:return: the validation result
|
|
95
|
+
"""
|
|
82
96
|
request: GetValidationResultRequest = GetValidationResultRequest(
|
|
83
97
|
request_id=request_handle
|
|
84
98
|
)
|
|
@@ -105,6 +119,10 @@ class FeaturesOperatorClient:
|
|
|
105
119
|
timeout_seconds: int = 5 * 60,
|
|
106
120
|
poll_interval_seconds: int = 3,
|
|
107
121
|
) -> GetValidationResultResponse:
|
|
122
|
+
"""
|
|
123
|
+
Retry wrapper on 'get_result' method that polls for the validation result
|
|
124
|
+
:return: the validation result
|
|
125
|
+
"""
|
|
108
126
|
try:
|
|
109
127
|
result = retry(
|
|
110
128
|
f=self._inner_poll,
|
|
@@ -12,10 +12,10 @@ from _qwak_proto.qwak.logging.log_source_pb2 import (
|
|
|
12
12
|
ModelRuntimeSource,
|
|
13
13
|
RemoteBuildSource,
|
|
14
14
|
)
|
|
15
|
-
from grpc import RpcError
|
|
16
15
|
from qwak.clients.administration.eco_system.client import EcosystemClient
|
|
17
16
|
from qwak.exceptions import QwakException
|
|
18
17
|
from qwak.inner.tool.grpc.grpc_tools import create_grpc_channel
|
|
18
|
+
from qwak.inner.tool.grpc.grpc_try_wrapping import grpc_try_catch_wrapper
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
class LoggingClient:
|
|
@@ -119,6 +119,7 @@ class LoggingClient:
|
|
|
119
119
|
except QwakException as e:
|
|
120
120
|
raise QwakException(f"Failed to fetch execution logs, error is [{e}]")
|
|
121
121
|
|
|
122
|
+
@grpc_try_catch_wrapper("Failed to read logs request")
|
|
122
123
|
def read_logs(
|
|
123
124
|
self,
|
|
124
125
|
source,
|
|
@@ -127,21 +128,15 @@ class LoggingClient:
|
|
|
127
128
|
max_number_of_results,
|
|
128
129
|
log_text_filter,
|
|
129
130
|
):
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
max_number_of_results=max_number_of_results,
|
|
140
|
-
)
|
|
141
|
-
)
|
|
142
|
-
return response
|
|
143
|
-
except RpcError as e:
|
|
144
|
-
raise QwakException(
|
|
145
|
-
f"Failed grpc read logs request, grpc error is "
|
|
146
|
-
f"[{e.details() if e.details() else e.code()}]"
|
|
131
|
+
response = self._logging_service.ReadLogs(
|
|
132
|
+
ReadLogsRequest(
|
|
133
|
+
source=source,
|
|
134
|
+
before_offset=before_offset,
|
|
135
|
+
after_offset=after_offset,
|
|
136
|
+
search_filter=SearchFilter(
|
|
137
|
+
log_text_filter=LogText(contains=log_text_filter)
|
|
138
|
+
),
|
|
139
|
+
max_number_of_results=max_number_of_results,
|
|
147
140
|
)
|
|
141
|
+
)
|
|
142
|
+
return response
|
|
@@ -12,7 +12,6 @@ from _qwak_proto.qwak.models.models_pb2 import (
|
|
|
12
12
|
ModelSpec,
|
|
13
13
|
)
|
|
14
14
|
from _qwak_proto.qwak.models.models_pb2_grpc import ModelsManagementServiceStub
|
|
15
|
-
from _qwak_proto.qwak.projects.jfrog_project_spec_pb2 import ModelRepositoryJFrogSpec
|
|
16
15
|
from dependency_injector.wiring import Provide
|
|
17
16
|
from qwak.exceptions import QwakException
|
|
18
17
|
from qwak.inner.di_configuration import QwakContainer
|
|
@@ -59,7 +58,6 @@ class ModelsManagementClient:
|
|
|
59
58
|
project_id,
|
|
60
59
|
model_name,
|
|
61
60
|
model_description,
|
|
62
|
-
jfrog_project_key: Optional[str] = None,
|
|
63
61
|
):
|
|
64
62
|
try:
|
|
65
63
|
return self._models_management_service.CreateModel(
|
|
@@ -70,9 +68,6 @@ class ModelsManagementClient:
|
|
|
70
68
|
project_id=project_id,
|
|
71
69
|
model_description=model_description,
|
|
72
70
|
),
|
|
73
|
-
jfrog_project_spec=ModelRepositoryJFrogSpec(
|
|
74
|
-
jfrog_project_key=jfrog_project_key,
|
|
75
|
-
),
|
|
76
71
|
)
|
|
77
72
|
)
|
|
78
73
|
|