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.

Files changed (361) hide show
  1. _qwak_proto/jfml/hosting_gateway/v1/build_upload_url_pb2.py +8 -23
  2. _qwak_proto/jfml/hosting_gateway/v1/hosting_gateway_service_pb2.py +10 -27
  3. _qwak_proto/qwak/administration/account/v1/account_pb2.py +25 -88
  4. _qwak_proto/qwak/administration/account/v1/account_pb2.pyi +21 -2
  5. _qwak_proto/qwak/administration/account/v1/account_service_pb2.py +42 -187
  6. _qwak_proto/qwak/administration/account/v1/jfrog_tenant_details_pb2.py +26 -114
  7. _qwak_proto/qwak/administration/account/v1/personalization_pb2.py +8 -24
  8. _qwak_proto/qwak/administration/account/v1/preferences_pb2.py +6 -14
  9. _qwak_proto/qwak/administration/account/v1/terms_pb2.py +14 -54
  10. _qwak_proto/qwak/administration/authenticated_user/v1/authenticated_user_service_pb2.py +18 -67
  11. _qwak_proto/qwak/administration/authenticated_user/v1/credentials_pb2.py +8 -24
  12. _qwak_proto/qwak/administration/authenticated_user/v1/credentials_pb2.pyi +1 -1
  13. _qwak_proto/qwak/administration/authenticated_user/v1/details_pb2.py +14 -54
  14. _qwak_proto/qwak/administration/cluster/v2/cluster_pb2.py +38 -173
  15. _qwak_proto/qwak/administration/runtime_configuration/v0/container_registry_config_pb2.py +32 -0
  16. _qwak_proto/qwak/administration/runtime_configuration/v0/container_registry_config_pb2.pyi +65 -0
  17. _qwak_proto/qwak/administration/runtime_configuration/v0/container_registry_config_pb2_grpc.py +4 -0
  18. _qwak_proto/qwak/administration/runtime_configuration/v0/creds/auth_pb2.py +6 -14
  19. _qwak_proto/qwak/administration/runtime_configuration/v0/creds/secret_pb2.py +8 -24
  20. _qwak_proto/qwak/administration/runtime_configuration/v0/data_catalog_config_pb2.py +13 -35
  21. _qwak_proto/qwak/administration/runtime_configuration/v0/data_catalog_config_pb2.pyi +24 -3
  22. _qwak_proto/qwak/administration/runtime_configuration/v0/external/databricks/auth_pb2.py +34 -0
  23. _qwak_proto/qwak/administration/runtime_configuration/v0/external/databricks/auth_pb2.pyi +97 -0
  24. _qwak_proto/qwak/administration/runtime_configuration/v0/external/databricks/auth_pb2_grpc.py +4 -0
  25. _qwak_proto/qwak/administration/runtime_configuration/v0/external/elasticsearch_config_pb2.py +6 -14
  26. _qwak_proto/qwak/administration/runtime_configuration/v0/external/kafka_config_pb2.py +12 -44
  27. _qwak_proto/qwak/administration/runtime_configuration/v0/external/prometheus_config_pb2.py +9 -15
  28. _qwak_proto/qwak/administration/runtime_configuration/v0/external/prometheus_config_pb2.pyi +29 -0
  29. _qwak_proto/qwak/administration/runtime_configuration/v0/external/redis_config_pb2.py +6 -14
  30. _qwak_proto/qwak/administration/runtime_configuration/v0/external/victoriametrics_config_pb2.py +8 -15
  31. _qwak_proto/qwak/administration/runtime_configuration/v0/external/victoriametrics_config_pb2.pyi +16 -0
  32. _qwak_proto/qwak/administration/runtime_configuration/v0/feature_store_config_pb2.py +10 -34
  33. _qwak_proto/qwak/administration/runtime_configuration/v0/hosting/aws/auth_pb2.py +42 -0
  34. _qwak_proto/qwak/administration/runtime_configuration/v0/hosting/aws/auth_pb2.pyi +159 -0
  35. _qwak_proto/qwak/administration/runtime_configuration/v0/hosting/aws/auth_pb2_grpc.py +4 -0
  36. _qwak_proto/qwak/administration/runtime_configuration/v0/hosting/azure/auth_pb2.py +39 -0
  37. _qwak_proto/qwak/administration/runtime_configuration/v0/hosting/azure/auth_pb2.pyi +126 -0
  38. _qwak_proto/qwak/administration/runtime_configuration/v0/hosting/azure/auth_pb2_grpc.py +4 -0
  39. _qwak_proto/qwak/administration/runtime_configuration/v0/hosting_config_pb2.py +19 -55
  40. _qwak_proto/qwak/administration/runtime_configuration/v0/hosting_config_pb2.pyi +38 -6
  41. _qwak_proto/qwak/administration/runtime_configuration/v0/logs_storage_config_pb2.py +6 -14
  42. _qwak_proto/qwak/administration/runtime_configuration/v0/model_analytics_storage_config_pb2.py +6 -14
  43. _qwak_proto/qwak/administration/runtime_configuration/v0/network_config_pb2.py +14 -54
  44. _qwak_proto/qwak/administration/runtime_configuration/v0/object_storage_config_pb2.py +13 -35
  45. _qwak_proto/qwak/administration/runtime_configuration/v0/object_storage_config_pb2.pyi +26 -3
  46. _qwak_proto/qwak/administration/runtime_configuration/v0/observability_config_pb2.py +10 -34
  47. _qwak_proto/qwak/administration/runtime_configuration/v0/runtime_config_pb2.py +8 -15
  48. _qwak_proto/qwak/administration/runtime_configuration/v0/runtime_config_pb2.pyi +7 -2
  49. _qwak_proto/qwak/administration/runtime_configuration/v0/sql_engine_config_pb2.py +13 -35
  50. _qwak_proto/qwak/administration/runtime_configuration/v0/sql_engine_config_pb2.pyi +24 -3
  51. _qwak_proto/qwak/administration/v0/authentication/authentication_service_pb2.py +14 -47
  52. _qwak_proto/qwak/administration/v0/environments/configuration_pb2.py +20 -82
  53. _qwak_proto/qwak/administration/v0/environments/environment_pb2.py +12 -40
  54. _qwak_proto/qwak/administration/v0/environments/environment_service_pb2.py +36 -158
  55. _qwak_proto/qwak/administration/v0/environments/personalization_pb2.py +8 -24
  56. _qwak_proto/qwak/administration/v0/users/user_pb2.py +18 -71
  57. _qwak_proto/qwak/admiral/secret/v0/secret_pb2.py +29 -116
  58. _qwak_proto/qwak/admiral/secret/v0/secret_pb2.pyi +21 -2
  59. _qwak_proto/qwak/admiral/secret/v0/secret_service_pb2.py +18 -67
  60. _qwak_proto/qwak/admiral/secret/v0/system_secret_service_pb2.py +18 -67
  61. _qwak_proto/qwak/admiral/user_application_instance/v0/user_application_instance_pb2.py +38 -174
  62. _qwak_proto/qwak/admiral/user_application_instance/v0/user_application_instance_service_pb2.py +22 -87
  63. _qwak_proto/qwak/analytics/analytics_pb2.py +26 -121
  64. _qwak_proto/qwak/analytics/analytics_service_pb2.py +46 -207
  65. _qwak_proto/qwak/artifactory_settings/artifactory_settings_pb2.py +8 -24
  66. _qwak_proto/qwak/audience/v1/audience_api_pb2.py +30 -127
  67. _qwak_proto/qwak/audience/v1/audience_pb2.py +26 -113
  68. _qwak_proto/qwak/auto_scaling/v1/auto_scaling_pb2.py +18 -79
  69. _qwak_proto/qwak/auto_scaling/v1/auto_scaling_service_pb2.py +10 -27
  70. _qwak_proto/qwak/automation/v1/action_pb2.py +40 -180
  71. _qwak_proto/qwak/automation/v1/auto_scaling_pb2.py +18 -79
  72. _qwak_proto/qwak/automation/v1/automation_execution_pb2.py +12 -43
  73. _qwak_proto/qwak/automation/v1/automation_management_service_pb2.py +56 -258
  74. _qwak_proto/qwak/automation/v1/automation_pb2.py +11 -35
  75. _qwak_proto/qwak/automation/v1/automation_pb2.pyi +5 -1
  76. _qwak_proto/qwak/automation/v1/common_pb2.py +10 -35
  77. _qwak_proto/qwak/automation/v1/notification_pb2.py +16 -68
  78. _qwak_proto/qwak/automation/v1/trigger_pb2.py +14 -54
  79. _qwak_proto/qwak/batch_job/v1/batch_job_events_pb2.py +26 -116
  80. _qwak_proto/qwak/batch_job/v1/batch_job_resources_pb2.py +8 -26
  81. _qwak_proto/qwak/batch_job/v1/batch_job_service_pb2.py +119 -562
  82. _qwak_proto/qwak/batch_job/v1/batch_job_service_pb2.pyi +5 -1
  83. _qwak_proto/qwak/build/v1/build_api_pb2.py +86 -407
  84. _qwak_proto/qwak/build/v1/build_pb2.py +114 -549
  85. _qwak_proto/qwak/build_settings/build_settings_api_pb2.py +18 -67
  86. _qwak_proto/qwak/build_settings/build_settings_pb2.py +18 -74
  87. _qwak_proto/qwak/builds/build_pb2.py +46 -207
  88. _qwak_proto/qwak/builds/build_pb2.pyi +48 -3
  89. _qwak_proto/qwak/builds/build_url_pb2.py +26 -113
  90. _qwak_proto/qwak/builds/build_values_pb2.py +82 -0
  91. _qwak_proto/qwak/builds/build_values_pb2.pyi +559 -0
  92. _qwak_proto/qwak/builds/build_values_pb2_grpc.py +4 -0
  93. _qwak_proto/qwak/builds/builds_orchestrator_service_pb2.py +87 -270
  94. _qwak_proto/qwak/builds/builds_orchestrator_service_pb2.pyi +173 -0
  95. _qwak_proto/qwak/builds/builds_orchestrator_service_pb2_grpc.py +66 -0
  96. _qwak_proto/qwak/builds/builds_pb2.py +87 -528
  97. _qwak_proto/qwak/builds/builds_pb2.pyi +0 -191
  98. _qwak_proto/qwak/builds/builds_pb2_grpc.py +0 -233
  99. _qwak_proto/qwak/builds/internal_builds_orchestrator_service_pb2.py +12 -37
  100. _qwak_proto/qwak/data_versioning/data_versioning_pb2.py +8 -24
  101. _qwak_proto/qwak/data_versioning/data_versioning_service_pb2.py +14 -47
  102. _qwak_proto/qwak/deployment/alert_pb2.py +24 -108
  103. _qwak_proto/qwak/deployment/alert_service_pb2.py +30 -127
  104. _qwak_proto/qwak/deployment/deployment_messages_pb2.py +6 -14
  105. _qwak_proto/qwak/deployment/deployment_pb2.py +124 -588
  106. _qwak_proto/qwak/deployment/deployment_service_pb2.py +86 -419
  107. _qwak_proto/qwak/ecosystem/jfrog/v0/token_pb2.py +47 -165
  108. _qwak_proto/qwak/ecosystem/jfrog/v0/token_pb2.pyi +102 -3
  109. _qwak_proto/qwak/ecosystem/jfrog/v0/token_service_pb2.py +22 -87
  110. _qwak_proto/qwak/ecosystem/v0/auth_pb2.py +28 -0
  111. _qwak_proto/qwak/ecosystem/v0/auth_pb2.pyi +37 -0
  112. _qwak_proto/qwak/ecosystem/v0/auth_pb2_grpc.py +4 -0
  113. _qwak_proto/qwak/ecosystem/v0/azure_credentials_pb2.py +37 -0
  114. _qwak_proto/qwak/ecosystem/v0/azure_credentials_pb2.pyi +117 -0
  115. _qwak_proto/qwak/ecosystem/v0/azure_credentials_pb2_grpc.py +4 -0
  116. _qwak_proto/qwak/ecosystem/v0/credentials_pb2.py +12 -35
  117. _qwak_proto/qwak/ecosystem/v0/credentials_pb2.pyi +8 -3
  118. _qwak_proto/qwak/ecosystem/v0/ecosystem_pb2.py +30 -138
  119. _qwak_proto/qwak/ecosystem/v0/ecosystem_runtime_service_pb2.py +52 -237
  120. _qwak_proto/qwak/execution/v1/backfill_pb2.py +18 -74
  121. _qwak_proto/qwak/execution/v1/batch_pb2.py +10 -34
  122. _qwak_proto/qwak/execution/v1/deletion_pb2.py +12 -44
  123. _qwak_proto/qwak/execution/v1/execution_pb2.py +16 -69
  124. _qwak_proto/qwak/execution/v1/execution_service_pb2.py +64 -298
  125. _qwak_proto/qwak/execution/v1/internal/deployment/platform_details_pb2.py +6 -14
  126. _qwak_proto/qwak/execution/v1/jobs/job_pb2.py +18 -76
  127. _qwak_proto/qwak/execution/v1/jobs/job_service_pb2.py +54 -247
  128. _qwak_proto/qwak/execution/v1/jobs/reports/report_pb2.py +20 -84
  129. _qwak_proto/qwak/execution/v1/state/execution_state_pb2.py +6 -14
  130. _qwak_proto/qwak/execution/v1/state/execution_state_service_pb2.py +30 -127
  131. _qwak_proto/qwak/execution/v1/state/featureset_state_pb2.py +6 -14
  132. _qwak_proto/qwak/execution/v1/state/spark_execution_state_pb2.py +14 -68
  133. _qwak_proto/qwak/execution/v1/streaming_aggregation_pb2.py +22 -55
  134. _qwak_proto/qwak/execution/v1/streaming_aggregation_pb2.pyi +71 -1
  135. _qwak_proto/qwak/execution/v1/streaming_pb2.py +12 -44
  136. _qwak_proto/qwak/feature_store/entities/entity_pb2.py +16 -57
  137. _qwak_proto/qwak/feature_store/entities/entity_service_pb2.py +30 -127
  138. _qwak_proto/qwak/feature_store/features/aggregation_pb2.py +38 -175
  139. _qwak_proto/qwak/feature_store/features/deployment_pb2.py +36 -167
  140. _qwak_proto/qwak/feature_store/features/deployment_service_pb2.py +10 -27
  141. _qwak_proto/qwak/feature_store/features/execution_pb2.py +14 -56
  142. _qwak_proto/qwak/feature_store/features/feature_set_attribute_pb2.py +6 -14
  143. _qwak_proto/qwak/feature_store/features/feature_set_pb2.py +35 -156
  144. _qwak_proto/qwak/feature_store/features/feature_set_pb2.pyi +9 -1
  145. _qwak_proto/qwak/feature_store/features/feature_set_service_pb2.py +97 -440
  146. _qwak_proto/qwak/feature_store/features/feature_set_service_pb2.pyi +25 -0
  147. _qwak_proto/qwak/feature_store/features/feature_set_service_pb2_grpc.py +34 -0
  148. _qwak_proto/qwak/feature_store/features/feature_set_state_pb2.py +38 -181
  149. _qwak_proto/qwak/feature_store/features/feature_set_state_service_pb2.py +26 -107
  150. _qwak_proto/qwak/feature_store/features/feature_set_types_pb2.py +77 -347
  151. _qwak_proto/qwak/feature_store/features/feature_set_types_pb2.pyi +7 -2
  152. _qwak_proto/qwak/feature_store/features/monitoring_pb2.py +10 -34
  153. _qwak_proto/qwak/feature_store/features/real_time_feature_extractor_pb2.py +32 -143
  154. _qwak_proto/qwak/feature_store/jobs/job_pb2.py +12 -46
  155. _qwak_proto/qwak/feature_store/jobs/job_service_pb2.py +30 -127
  156. _qwak_proto/qwak/feature_store/jobs/v1/job_pb2.py +12 -45
  157. _qwak_proto/qwak/feature_store/jobs/v1/job_service_pb2.py +42 -187
  158. _qwak_proto/qwak/feature_store/platform/platform_details_pb2.py +8 -24
  159. _qwak_proto/qwak/feature_store/reports/report_pb2.py +14 -53
  160. _qwak_proto/qwak/feature_store/repository/common/platform_pb2.py +10 -34
  161. _qwak_proto/qwak/feature_store/serving/management_pb2.py +14 -47
  162. _qwak_proto/qwak/feature_store/serving/metadata_pb2.py +12 -44
  163. _qwak_proto/qwak/feature_store/serving/serving_pb2.py +50 -222
  164. _qwak_proto/qwak/feature_store/serving/v1/value_pb2.py +8 -24
  165. _qwak_proto/qwak/feature_store/sinks/sink_pb2.py +14 -54
  166. _qwak_proto/qwak/feature_store/sources/batch_pb2.py +79 -335
  167. _qwak_proto/qwak/feature_store/sources/batch_pb2.pyi +99 -7
  168. _qwak_proto/qwak/feature_store/sources/data_source_attribute_pb2.py +6 -14
  169. _qwak_proto/qwak/feature_store/sources/data_source_pb2.py +15 -55
  170. _qwak_proto/qwak/feature_store/sources/data_source_pb2.pyi +5 -1
  171. _qwak_proto/qwak/feature_store/sources/data_source_service_pb2.py +39 -148
  172. _qwak_proto/qwak/feature_store/sources/data_source_service_pb2.pyi +25 -0
  173. _qwak_proto/qwak/feature_store/sources/data_source_service_pb2_grpc.py +34 -0
  174. _qwak_proto/qwak/feature_store/sources/streaming_pb2.py +34 -146
  175. _qwak_proto/qwak/feature_store/v1/common/jfrog_artifact/jfrog_artifact_pb2.py +6 -14
  176. _qwak_proto/qwak/feature_store/v1/common/source_code/source_code_pb2.py +10 -34
  177. _qwak_proto/qwak/feature_store/v1/internal/data_source/data_source_service_pb2.py +16 -58
  178. _qwak_proto/qwak/feature_store/v1/internal/featureset/featureset_token_service_pb2.py +10 -27
  179. _qwak_proto/qwak/features_operator/v1/features_operator_pb2.py +14 -54
  180. _qwak_proto/qwak/features_operator/v1/features_operator_service_pb2.py +14 -47
  181. _qwak_proto/qwak/features_operator/v2/features_operator_pb2.py +16 -64
  182. _qwak_proto/qwak/features_operator/v2/features_operator_service_pb2.py +12 -37
  183. _qwak_proto/qwak/features_operator/v3/features_operator_async_service_pb2.py +26 -107
  184. _qwak_proto/qwak/features_operator/v3/features_operator_pb2.py +16 -64
  185. _qwak_proto/qwak/file_versioning/file_versioning_pb2.py +10 -33
  186. _qwak_proto/qwak/file_versioning/file_versioning_service_pb2.py +14 -47
  187. _qwak_proto/qwak/fitness_service/constructs_pb2.py +23 -100
  188. _qwak_proto/qwak/fitness_service/constructs_pb2.pyi +24 -0
  189. _qwak_proto/qwak/fitness_service/fitness_pb2.py +7 -34
  190. _qwak_proto/qwak/fitness_service/fitness_pb2.pyi +0 -93
  191. _qwak_proto/qwak/fitness_service/status_pb2.py +17 -108
  192. _qwak_proto/qwak/fitness_service/status_pb2.pyi +1 -121
  193. _qwak_proto/qwak/inference/feedback/feedback_pb2.py +28 -96
  194. _qwak_proto/qwak/instance_template/instance_template_pb2.py +13 -41
  195. _qwak_proto/qwak/instance_template/instance_template_pb2.pyi +4 -1
  196. _qwak_proto/qwak/instance_template/instance_template_service_pb2.py +14 -47
  197. _qwak_proto/qwak/integration/hugging_face_integration_pb2.py +16 -64
  198. _qwak_proto/qwak/integration/integration_pb2.py +28 -126
  199. _qwak_proto/qwak/integration/integration_service_pb2.py +34 -147
  200. _qwak_proto/qwak/integration/open_a_i_integration_pb2.py +16 -64
  201. _qwak_proto/qwak/integration/opsgenie_integration_pb2.py +20 -82
  202. _qwak_proto/qwak/integration/pagerduty_integration_pb2.py +24 -104
  203. _qwak_proto/qwak/integration/slack_app_integration_pb2.py +24 -104
  204. _qwak_proto/qwak/kube_deployment_captain/alert_pb2.py +22 -97
  205. _qwak_proto/qwak/kube_deployment_captain/alerting_pb2.py +12 -44
  206. _qwak_proto/qwak/kube_deployment_captain/batch_job_pb2.py +70 -323
  207. _qwak_proto/qwak/kube_deployment_captain/batch_job_pb2.pyi +20 -5
  208. _qwak_proto/qwak/kube_deployment_captain/deployment_pb2.py +44 -167
  209. _qwak_proto/qwak/kube_deployment_captain/feature_set_deployment_pb2.py +32 -144
  210. _qwak_proto/qwak/kube_deployment_captain/kube_deployment_captain_service_pb2.py +108 -519
  211. _qwak_proto/qwak/kube_deployment_captain/traffic_mapping_pb2.py +8 -24
  212. _qwak_proto/qwak/logging/log_filter_pb2.py +12 -44
  213. _qwak_proto/qwak/logging/log_line_pb2.py +8 -25
  214. _qwak_proto/qwak/logging/log_reader_service_pb2.py +10 -27
  215. _qwak_proto/qwak/logging/log_source_pb2.py +30 -134
  216. _qwak_proto/qwak/model_descriptor/open_ai_descriptor_pb2.py +18 -74
  217. _qwak_proto/qwak/model_group/model_group_pb2.py +25 -48
  218. _qwak_proto/qwak/model_group/model_group_pb2.pyi +88 -0
  219. _qwak_proto/qwak/model_group/model_group_pb2_grpc.py +70 -0
  220. _qwak_proto/qwak/model_group/model_group_repository_details_pb2.py +23 -75
  221. _qwak_proto/qwak/model_group/model_group_repository_details_pb2.pyi +44 -6
  222. _qwak_proto/qwak/models/models_pb2.py +99 -406
  223. _qwak_proto/qwak/models/models_pb2.pyi +86 -0
  224. _qwak_proto/qwak/models/models_pb2_grpc.py +34 -0
  225. _qwak_proto/qwak/models/models_query_pb2.py +16 -56
  226. _qwak_proto/qwak/models/models_query_pb2.pyi +4 -4
  227. _qwak_proto/qwak/monitoring/v0/alerting_channel_management_service_pb2.py +30 -127
  228. _qwak_proto/qwak/monitoring/v0/alerting_channel_pb2.py +34 -152
  229. _qwak_proto/qwak/monitoring/v0/alerting_channel_sync_service_pb2.py +14 -47
  230. _qwak_proto/qwak/offline/serving/v1/feature_values_pb2.py +6 -14
  231. _qwak_proto/qwak/offline/serving/v1/offline_serving_async_service_pb2.py +30 -123
  232. _qwak_proto/qwak/offline/serving/v1/options_pb2.py +6 -14
  233. _qwak_proto/qwak/offline/serving/v1/population_pb2.py +14 -54
  234. _qwak_proto/qwak/projects/jfrog_project_spec_pb2.py +6 -14
  235. _qwak_proto/qwak/projects/projects_pb2.py +50 -192
  236. _qwak_proto/qwak/projects/projects_pb2.pyi +35 -0
  237. _qwak_proto/qwak/prompt/v1/prompt/prompt_manager_service_pb2.py +54 -247
  238. _qwak_proto/qwak/prompt/v1/prompt/prompt_pb2.py +46 -214
  239. _qwak_proto/qwak/secret_service/secret_service_pb2.py +18 -67
  240. _qwak_proto/qwak/secret_service/secret_service_pb2.pyi +1 -1
  241. _qwak_proto/qwak/self_service/account/v0/account_membership_pb2.py +24 -106
  242. _qwak_proto/qwak/self_service/account/v0/account_membership_service_pb2.py +50 -227
  243. _qwak_proto/qwak/self_service/account/v0/account_status_pb2.py +16 -65
  244. _qwak_proto/qwak/self_service/account/v0/managing_account_pb2.py +37 -132
  245. _qwak_proto/qwak/self_service/account/v0/managing_account_pb2.pyi +40 -2
  246. _qwak_proto/qwak/self_service/account/v0/managing_account_service_pb2.py +22 -87
  247. _qwak_proto/qwak/self_service/user/v1/api_key_pb2.py +6 -14
  248. _qwak_proto/qwak/self_service/user/v1/user_pb2.py +6 -14
  249. _qwak_proto/qwak/self_service/user/v1/user_service_pb2.py +30 -121
  250. _qwak_proto/qwak/service_discovery/service_discovery_location_pb2.py +12 -44
  251. _qwak_proto/qwak/service_discovery/service_discovery_location_service_pb2.py +10 -27
  252. _qwak_proto/qwak/traffic/v1/traffic_api_pb2.py +22 -87
  253. _qwak_proto/qwak/traffic/v1/traffic_pb2.py +26 -113
  254. _qwak_proto/qwak/user_application/common/v0/resources_pb2.py +31 -139
  255. _qwak_proto/qwak/user_application/common/v0/resources_pb2.pyi +24 -0
  256. _qwak_proto/qwak/user_application/v0/user_application_pb2.py +11 -44
  257. _qwak_proto/qwak/user_application/v0/user_application_pb2.pyi +6 -0
  258. _qwak_proto/qwak/vectors/v1/collection/collection_pb2.py +24 -106
  259. _qwak_proto/qwak/vectors/v1/collection/collection_service_pb2.py +38 -167
  260. _qwak_proto/qwak/vectors/v1/collection/event/collection_event_pb2.py +6 -14
  261. _qwak_proto/qwak/vectors/v1/filters_pb2.py +30 -134
  262. _qwak_proto/qwak/vectors/v1/vector_pb2.py +14 -54
  263. _qwak_proto/qwak/vectors/v1/vector_service_pb2.py +26 -107
  264. _qwak_proto/qwak/workspace/workspace_pb2.py +22 -107
  265. _qwak_proto/qwak/workspace/workspace_service_pb2.py +62 -287
  266. qwak/__init__.py +1 -1
  267. qwak/automations/automations.py +3 -0
  268. qwak/clients/feature_store/execution_management_client.py +28 -0
  269. qwak/clients/feature_store/management_client.py +156 -206
  270. qwak/clients/feature_store/operator_client.py +19 -1
  271. qwak/clients/logging_client/client.py +13 -18
  272. qwak/clients/model_management/client.py +0 -5
  273. qwak/clients/project/client.py +0 -7
  274. qwak/exceptions/__init__.py +1 -0
  275. qwak/exceptions/qwak_grpc_address_exception.py +9 -0
  276. qwak/feature_store/_common/artifact_utils.py +10 -8
  277. qwak/feature_store/_common/packaging.py +39 -21
  278. qwak/feature_store/_common/source_code_spec.py +61 -11
  279. qwak/feature_store/_common/source_code_spec_factory.py +63 -10
  280. qwak/feature_store/data_sources/__init__.py +2 -0
  281. qwak/feature_store/data_sources/base.py +11 -7
  282. qwak/feature_store/data_sources/batch/snowflake.py +34 -8
  283. qwak/feature_store/data_sources/batch/unity_catalog.py +107 -0
  284. qwak/feature_store/execution/streaming_backfill.py +48 -0
  285. qwak/feature_store/feature_sets/base_feature_set.py +1 -0
  286. qwak/feature_store/feature_sets/streaming.py +84 -63
  287. qwak/feature_store/feature_sets/streaming_backfill.py +88 -124
  288. qwak/feature_store/online/client.py +20 -4
  289. qwak/feature_store/validations/validation_decorators.py +70 -0
  290. qwak/feature_store/validations/validation_response.py +3 -1
  291. qwak/feature_store/validations/validator.py +11 -3
  292. qwak/inner/build_logic/interface/context_interface.py +4 -0
  293. qwak/inner/build_logic/phases/phase_010_fetch_model/post_fetch_validation_step.py +1 -1
  294. qwak/inner/const.py +2 -6
  295. qwak/inner/di_configuration/__init__.py +1 -69
  296. qwak/inner/di_configuration/account.py +18 -63
  297. qwak/inner/di_configuration/containers.py +5 -1
  298. qwak/inner/di_configuration/dependency_wiring.py +98 -0
  299. qwak/inner/tool/auth.py +10 -80
  300. qwak/inner/tool/grpc/grpc_auth.py +0 -32
  301. qwak/inner/tool/grpc/grpc_tools.py +125 -11
  302. qwak/inner/tool/grpc/grpc_try_wrapping.py +140 -3
  303. qwak/llmops/generation/chat/openai/types/chat/chat_completion.py +24 -6
  304. qwak/llmops/generation/chat/openai/types/chat/chat_completion_chunk.py +44 -8
  305. qwak/llmops/generation/chat/openai/types/chat/chat_completion_message.py +6 -3
  306. qwak/qwak_client/client.py +2 -13
  307. qwak/vector_store/rest_helpers.py +4 -16
  308. qwak_core-0.5.19.dist-info/METADATA +48 -0
  309. {qwak_core-0.4.278.dist-info → qwak_core-0.5.19.dist-info}/RECORD +316 -334
  310. qwak_services_mock/mocks/execution_management_service.py +9 -1
  311. qwak_services_mock/mocks/feature_store_data_sources_manager_api.py +55 -13
  312. qwak_services_mock/mocks/feature_store_entities_manager_api.py +31 -29
  313. qwak_services_mock/mocks/features_operator_v3_service.py +20 -0
  314. qwak_services_mock/mocks/qwak_mocks.py +0 -2
  315. qwak_services_mock/services_mock.py +1 -11
  316. _qwak_proto/qwak/fitness_service/fitness_service_pb2.py +0 -110
  317. _qwak_proto/qwak/fitness_service/fitness_service_pb2.pyi +0 -121
  318. _qwak_proto/qwak/fitness_service/fitness_service_pb2_grpc.py +0 -169
  319. frogml_storage/__init__.py +0 -1
  320. frogml_storage/artifactory/__init__.py +0 -1
  321. frogml_storage/artifactory/_artifactory_api.py +0 -315
  322. frogml_storage/authentication/login/__init__.py +0 -1
  323. frogml_storage/authentication/login/_login_cli.py +0 -239
  324. frogml_storage/authentication/login/_login_command.py +0 -74
  325. frogml_storage/authentication/models/__init__.py +0 -3
  326. frogml_storage/authentication/models/_auth.py +0 -24
  327. frogml_storage/authentication/models/_auth_config.py +0 -70
  328. frogml_storage/authentication/models/_login.py +0 -22
  329. frogml_storage/authentication/utils/__init__.py +0 -17
  330. frogml_storage/authentication/utils/_authentication_utils.py +0 -281
  331. frogml_storage/authentication/utils/_login_checks_utils.py +0 -114
  332. frogml_storage/base_storage.py +0 -140
  333. frogml_storage/constants.py +0 -56
  334. frogml_storage/exceptions/checksum_verification_error.py +0 -3
  335. frogml_storage/exceptions/validation_error.py +0 -4
  336. frogml_storage/frog_ml.py +0 -668
  337. frogml_storage/http/__init__.py +0 -1
  338. frogml_storage/http/http_client.py +0 -83
  339. frogml_storage/logging/__init__.py +0 -1
  340. frogml_storage/logging/_log_config.py +0 -45
  341. frogml_storage/logging/log_utils.py +0 -21
  342. frogml_storage/models/__init__.py +0 -1
  343. frogml_storage/models/_download_context.py +0 -54
  344. frogml_storage/models/dataset_manifest.py +0 -13
  345. frogml_storage/models/entity_manifest.py +0 -93
  346. frogml_storage/models/frogml_dataset_version.py +0 -21
  347. frogml_storage/models/frogml_entity_type_info.py +0 -50
  348. frogml_storage/models/frogml_entity_version.py +0 -34
  349. frogml_storage/models/frogml_model_version.py +0 -21
  350. frogml_storage/models/model_manifest.py +0 -60
  351. frogml_storage/models/serialization_metadata.py +0 -15
  352. frogml_storage/utils/__init__.py +0 -12
  353. frogml_storage/utils/_environment.py +0 -21
  354. frogml_storage/utils/_input_checks_utility.py +0 -104
  355. frogml_storage/utils/_storage_utils.py +0 -15
  356. frogml_storage/utils/_url_utils.py +0 -27
  357. qwak/clients/build_management/__init__.py +0 -1
  358. qwak/clients/build_management/client.py +0 -114
  359. qwak_core-0.4.278.dist-info/METADATA +0 -415
  360. qwak_services_mock/mocks/build_management.py +0 -100
  361. {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
- def get_datasource_source_code_presign_url(self, ds_name: str) -> str:
94
- try:
95
- response: GetDataSourceSourceCodeUploadResponse = (
96
- self._internal_data_sources_service.GetDataSourceSourceCodeUploadURL(
97
- GetDataSourceSourceCodeUploadRequest(data_source_name=ds_name)
98
- )
99
- )
100
- return response.upload_url
101
- except RpcError as e:
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
- try:
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
- try:
139
- return self._features_service.DeleteFeatureSet(
140
- DeleteFeatureSetRequest(feature_set_id=feature_set_id)
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
- try:
153
- return self._entity_service.DeleteEntity(
154
- DeleteEntityRequest(entity_id=entity_id)
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
- try:
167
- return self._sources_service.DeleteDataSource(
168
- DeleteDataSourceRequest(data_source_id=data_source_id)
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
- try:
182
- return self._features_service.RunBatchFeatureSet(
183
- RunBatchFeatureSetRequest(feature_set_name=feature_set_name)
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
- try:
201
- self._features_service.RunParquetBatchFeatureSet(
202
- RunParquetBatchFeatureSetRequest(
203
- feature_set_name=feature_set_name,
204
- parquet_location=parquet_location,
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
- except RpcError as e:
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
- try:
222
- return self._entity_service.UpdateEntity(
223
- UpdateEntityRequest(entity_id=entity_id, entity_spec=proto_entity_spec)
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
- try:
236
- return self._entity_service.CreateEntity(
237
- CreateEntityRequest(entity_spec=proto_entity_spec)
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
- try:
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
- try:
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
- try:
292
- return self._sources_service.UpdateDataSource(
293
- UpdateDataSourceRequest(
294
- data_source_id=data_source_id,
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
- except RpcError as e:
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
- try:
311
- return self._sources_service.CreateDataSource(
312
- CreateDataSourceRequest(data_source_spec=proto_data_source)
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
- try:
346
- return self._features_service.UpdateFeatureSet(
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
- except RpcError as e:
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
- try:
365
- return self._features_service.RegisterFeatureSet(
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
- def get_data_source_presigned_url(
434
- self, data_source_name: str, object_name: str
435
- ) -> str:
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
- try:
469
- return self._sources_service.CreateDataSourceUploadURLV1(
470
- CreateDataSourceUploadURLRequest(
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
- try:
483
- return self._features_service.GetFeaturesetSchedulingState(
484
- GetFeaturesetSchedulingStateRequest(featureset_name=feature_set_name)
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
- try:
493
- self._features_service.PauseFeatureset(
494
- PauseFeaturesetRequest(featureset_name=feature_set_name)
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
- try:
503
- self._features_service.ResumeFeatureset(
504
- ResumeFeaturesetRequest(featureset_name=feature_set_name)
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
- try:
515
- return self._features_service.ListFeaturesetVersionsByName(
516
- ListFeaturesetVersionsByNameRequest(featureset_name=featureset_name)
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
- try:
525
- self._features_service.SetActiveFeaturesetVersion(
526
- SetActiveFeaturesetVersionRequest(
527
- featureset_name=featureset_name,
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
- except RpcError as e:
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
- try:
538
- self._features_service.DeleteFeaturesetVersion(
539
- DeleteFeaturesetVersionRequest(
540
- featureset_name=featureset_name,
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
- except RpcError as e:
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
- try:
551
- return self._features_service.GetEnvToFeatureSetsMapping(
552
- GetEnvToFeatureSetsMappingRequest()
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
- try:
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,
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