qwak-core 0.1.37__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 (778) hide show
  1. _qwak_proto/jfml/hosting_gateway/v1/build_upload_url_pb2.py +29 -0
  2. _qwak_proto/jfml/hosting_gateway/v1/build_upload_url_pb2.pyi +70 -0
  3. _qwak_proto/jfml/hosting_gateway/v1/build_upload_url_pb2_grpc.py +4 -0
  4. _qwak_proto/jfml/hosting_gateway/v1/hosting_gateway_service_pb2.py +32 -0
  5. _qwak_proto/jfml/hosting_gateway/v1/hosting_gateway_service_pb2.pyi +48 -0
  6. _qwak_proto/jfml/hosting_gateway/v1/hosting_gateway_service_pb2_grpc.py +67 -0
  7. _qwak_proto/qwak/administration/account/v1/account_pb2.py +29 -60
  8. _qwak_proto/qwak/administration/account/v1/account_pb2.pyi +120 -2
  9. _qwak_proto/qwak/administration/account/v1/account_service_pb2.py +67 -0
  10. _qwak_proto/qwak/administration/account/v1/account_service_pb2.pyi +345 -0
  11. _qwak_proto/qwak/administration/account/v1/account_service_pb2_grpc.py +338 -0
  12. _qwak_proto/qwak/administration/account/v1/jfrog_tenant_details_pb2.py +49 -0
  13. _qwak_proto/qwak/administration/account/v1/jfrog_tenant_details_pb2.pyi +209 -0
  14. _qwak_proto/qwak/administration/account/v1/jfrog_tenant_details_pb2_grpc.py +4 -0
  15. _qwak_proto/qwak/administration/account/v1/personalization_pb2.py +8 -24
  16. _qwak_proto/qwak/administration/account/v1/preferences_pb2.py +6 -14
  17. _qwak_proto/qwak/administration/account/v1/terms_pb2.py +35 -0
  18. _qwak_proto/qwak/administration/account/v1/terms_pb2.pyi +94 -0
  19. _qwak_proto/qwak/administration/account/v1/terms_pb2_grpc.py +4 -0
  20. _qwak_proto/qwak/administration/authenticated_user/v1/authenticated_user_service_pb2.py +18 -67
  21. _qwak_proto/qwak/administration/authenticated_user/v1/credentials_pb2.py +8 -24
  22. _qwak_proto/qwak/administration/authenticated_user/v1/credentials_pb2.pyi +1 -1
  23. _qwak_proto/qwak/administration/authenticated_user/v1/details_pb2.py +14 -54
  24. _qwak_proto/qwak/administration/cluster/v2/cluster_pb2.py +62 -0
  25. _qwak_proto/qwak/administration/cluster/v2/cluster_pb2.pyi +354 -0
  26. _qwak_proto/qwak/administration/cluster/v2/cluster_pb2_grpc.py +4 -0
  27. _qwak_proto/qwak/administration/runtime_configuration/v0/container_registry_config_pb2.py +32 -0
  28. _qwak_proto/qwak/administration/runtime_configuration/v0/container_registry_config_pb2.pyi +65 -0
  29. _qwak_proto/qwak/administration/runtime_configuration/v0/container_registry_config_pb2_grpc.py +4 -0
  30. _qwak_proto/qwak/administration/runtime_configuration/v0/creds/auth_pb2.py +28 -0
  31. _qwak_proto/qwak/administration/runtime_configuration/v0/creds/auth_pb2.pyi +36 -0
  32. _qwak_proto/qwak/administration/runtime_configuration/v0/creds/auth_pb2_grpc.py +4 -0
  33. _qwak_proto/qwak/administration/runtime_configuration/v0/creds/secret_pb2.py +29 -0
  34. _qwak_proto/qwak/administration/runtime_configuration/v0/creds/secret_pb2.pyi +49 -0
  35. _qwak_proto/qwak/administration/runtime_configuration/v0/creds/secret_pb2_grpc.py +4 -0
  36. _qwak_proto/qwak/administration/runtime_configuration/v0/data_catalog_config_pb2.py +33 -0
  37. _qwak_proto/qwak/administration/runtime_configuration/v0/data_catalog_config_pb2.pyi +89 -0
  38. _qwak_proto/qwak/administration/runtime_configuration/v0/data_catalog_config_pb2_grpc.py +4 -0
  39. _qwak_proto/qwak/administration/runtime_configuration/v0/external/databricks/auth_pb2.py +34 -0
  40. _qwak_proto/qwak/administration/runtime_configuration/v0/external/databricks/auth_pb2.pyi +97 -0
  41. _qwak_proto/qwak/administration/runtime_configuration/v0/external/databricks/auth_pb2_grpc.py +4 -0
  42. _qwak_proto/qwak/administration/runtime_configuration/v0/external/elasticsearch_config_pb2.py +28 -0
  43. _qwak_proto/qwak/administration/runtime_configuration/v0/external/elasticsearch_config_pb2.pyi +39 -0
  44. _qwak_proto/qwak/administration/runtime_configuration/v0/external/elasticsearch_config_pb2_grpc.py +4 -0
  45. _qwak_proto/qwak/administration/runtime_configuration/v0/external/kafka_config_pb2.py +34 -0
  46. _qwak_proto/qwak/administration/runtime_configuration/v0/external/kafka_config_pb2.pyi +79 -0
  47. _qwak_proto/qwak/administration/runtime_configuration/v0/external/kafka_config_pb2_grpc.py +4 -0
  48. _qwak_proto/qwak/administration/runtime_configuration/v0/external/prometheus_config_pb2.py +29 -0
  49. _qwak_proto/qwak/administration/runtime_configuration/v0/external/prometheus_config_pb2.pyi +46 -0
  50. _qwak_proto/qwak/administration/runtime_configuration/v0/external/prometheus_config_pb2_grpc.py +4 -0
  51. _qwak_proto/qwak/administration/runtime_configuration/v0/external/redis_config_pb2.py +28 -0
  52. _qwak_proto/qwak/administration/runtime_configuration/v0/external/redis_config_pb2.pyi +39 -0
  53. _qwak_proto/qwak/administration/runtime_configuration/v0/external/redis_config_pb2_grpc.py +4 -0
  54. _qwak_proto/qwak/administration/runtime_configuration/v0/external/victoriametrics_config_pb2.py +28 -0
  55. _qwak_proto/qwak/administration/runtime_configuration/v0/external/victoriametrics_config_pb2.pyi +33 -0
  56. _qwak_proto/qwak/administration/runtime_configuration/v0/external/victoriametrics_config_pb2_grpc.py +4 -0
  57. _qwak_proto/qwak/administration/runtime_configuration/v0/feature_store_config_pb2.py +32 -0
  58. _qwak_proto/qwak/administration/runtime_configuration/v0/feature_store_config_pb2.pyi +66 -0
  59. _qwak_proto/qwak/administration/runtime_configuration/v0/feature_store_config_pb2_grpc.py +4 -0
  60. _qwak_proto/qwak/administration/runtime_configuration/v0/hosting/aws/auth_pb2.py +42 -0
  61. _qwak_proto/qwak/administration/runtime_configuration/v0/hosting/aws/auth_pb2.pyi +159 -0
  62. _qwak_proto/qwak/administration/runtime_configuration/v0/hosting/aws/auth_pb2_grpc.py +4 -0
  63. _qwak_proto/qwak/administration/runtime_configuration/v0/hosting/azure/auth_pb2.py +39 -0
  64. _qwak_proto/qwak/administration/runtime_configuration/v0/hosting/azure/auth_pb2.pyi +126 -0
  65. _qwak_proto/qwak/administration/runtime_configuration/v0/hosting/azure/auth_pb2_grpc.py +4 -0
  66. _qwak_proto/qwak/administration/runtime_configuration/v0/hosting_config_pb2.py +40 -0
  67. _qwak_proto/qwak/administration/runtime_configuration/v0/hosting_config_pb2.pyi +146 -0
  68. _qwak_proto/qwak/administration/runtime_configuration/v0/hosting_config_pb2_grpc.py +4 -0
  69. _qwak_proto/qwak/administration/runtime_configuration/v0/logs_storage_config_pb2.py +28 -0
  70. _qwak_proto/qwak/administration/runtime_configuration/v0/logs_storage_config_pb2.pyi +33 -0
  71. _qwak_proto/qwak/administration/runtime_configuration/v0/logs_storage_config_pb2_grpc.py +4 -0
  72. _qwak_proto/qwak/administration/runtime_configuration/v0/model_analytics_storage_config_pb2.py +28 -0
  73. _qwak_proto/qwak/administration/runtime_configuration/v0/model_analytics_storage_config_pb2.pyi +33 -0
  74. _qwak_proto/qwak/administration/runtime_configuration/v0/model_analytics_storage_config_pb2_grpc.py +4 -0
  75. _qwak_proto/qwak/administration/runtime_configuration/v0/network_config_pb2.py +36 -0
  76. _qwak_proto/qwak/administration/runtime_configuration/v0/network_config_pb2.pyi +107 -0
  77. _qwak_proto/qwak/administration/runtime_configuration/v0/network_config_pb2_grpc.py +4 -0
  78. _qwak_proto/qwak/administration/runtime_configuration/v0/object_storage_config_pb2.py +33 -0
  79. _qwak_proto/qwak/administration/runtime_configuration/v0/object_storage_config_pb2.pyi +93 -0
  80. _qwak_proto/qwak/administration/runtime_configuration/v0/object_storage_config_pb2_grpc.py +4 -0
  81. _qwak_proto/qwak/administration/runtime_configuration/v0/observability_config_pb2.py +33 -0
  82. _qwak_proto/qwak/administration/runtime_configuration/v0/observability_config_pb2.pyi +79 -0
  83. _qwak_proto/qwak/administration/runtime_configuration/v0/observability_config_pb2_grpc.py +4 -0
  84. _qwak_proto/qwak/administration/runtime_configuration/v0/runtime_config_pb2.py +36 -0
  85. _qwak_proto/qwak/administration/runtime_configuration/v0/runtime_config_pb2.pyi +72 -0
  86. _qwak_proto/qwak/administration/runtime_configuration/v0/runtime_config_pb2_grpc.py +4 -0
  87. _qwak_proto/qwak/administration/runtime_configuration/v0/sql_engine_config_pb2.py +33 -0
  88. _qwak_proto/qwak/administration/runtime_configuration/v0/sql_engine_config_pb2.pyi +83 -0
  89. _qwak_proto/qwak/administration/runtime_configuration/v0/sql_engine_config_pb2_grpc.py +4 -0
  90. _qwak_proto/qwak/administration/v0/authentication/authentication_service_pb2.py +14 -47
  91. _qwak_proto/qwak/administration/v0/environments/configuration_pb2.py +23 -55
  92. _qwak_proto/qwak/administration/v0/environments/configuration_pb2.pyi +103 -7
  93. _qwak_proto/qwak/administration/v0/environments/environment_pb2.py +15 -33
  94. _qwak_proto/qwak/administration/v0/environments/environment_pb2.pyi +50 -2
  95. _qwak_proto/qwak/administration/v0/environments/environment_service_pb2.py +36 -158
  96. _qwak_proto/qwak/administration/v0/environments/personalization_pb2.py +8 -24
  97. _qwak_proto/qwak/administration/v0/users/user_pb2.py +18 -71
  98. _qwak_proto/qwak/admiral/secret/v0/secret_pb2.py +53 -0
  99. _qwak_proto/qwak/admiral/secret/v0/secret_pb2.pyi +256 -0
  100. _qwak_proto/qwak/admiral/secret/v0/secret_pb2_grpc.py +4 -0
  101. _qwak_proto/qwak/admiral/secret/v0/secret_service_pb2.py +40 -0
  102. _qwak_proto/qwak/admiral/secret/v0/secret_service_pb2.pyi +93 -0
  103. _qwak_proto/qwak/admiral/secret/v0/secret_service_pb2_grpc.py +135 -0
  104. _qwak_proto/qwak/admiral/secret/v0/system_secret_service_pb2.py +40 -0
  105. _qwak_proto/qwak/admiral/secret/v0/system_secret_service_pb2.pyi +101 -0
  106. _qwak_proto/qwak/admiral/secret/v0/system_secret_service_pb2_grpc.py +135 -0
  107. _qwak_proto/qwak/admiral/user_application_instance/v0/user_application_instance_pb2.py +39 -105
  108. _qwak_proto/qwak/admiral/user_application_instance/v0/user_application_instance_pb2.pyi +131 -3
  109. _qwak_proto/qwak/admiral/user_application_instance/v0/user_application_instance_service_pb2.py +22 -87
  110. _qwak_proto/qwak/analytics/analytics_pb2.py +28 -123
  111. _qwak_proto/qwak/analytics/analytics_pb2.pyi +5 -1
  112. _qwak_proto/qwak/analytics/analytics_service_pb2.py +48 -149
  113. _qwak_proto/qwak/analytics/analytics_service_pb2.pyi +87 -0
  114. _qwak_proto/qwak/analytics/analytics_service_pb2_grpc.py +101 -0
  115. _qwak_proto/qwak/artifactory_settings/artifactory_settings_pb2.py +29 -0
  116. _qwak_proto/qwak/artifactory_settings/artifactory_settings_pb2.pyi +57 -0
  117. _qwak_proto/qwak/artifactory_settings/artifactory_settings_pb2_grpc.py +4 -0
  118. _qwak_proto/qwak/audience/v1/audience_api_pb2.py +30 -127
  119. _qwak_proto/qwak/audience/v1/audience_pb2.py +27 -114
  120. _qwak_proto/qwak/audience/v1/audience_pb2.pyi +5 -1
  121. _qwak_proto/qwak/auto_scaling/v1/auto_scaling_pb2.py +18 -79
  122. _qwak_proto/qwak/auto_scaling/v1/auto_scaling_service_pb2.py +10 -27
  123. _qwak_proto/qwak/automation/v1/action_pb2.py +42 -164
  124. _qwak_proto/qwak/automation/v1/action_pb2.pyi +82 -7
  125. _qwak_proto/qwak/automation/v1/auto_scaling_pb2.py +19 -77
  126. _qwak_proto/qwak/automation/v1/auto_scaling_pb2.pyi +6 -0
  127. _qwak_proto/qwak/automation/v1/automation_execution_pb2.py +12 -43
  128. _qwak_proto/qwak/automation/v1/automation_management_service_pb2.py +56 -258
  129. _qwak_proto/qwak/automation/v1/automation_pb2.py +11 -35
  130. _qwak_proto/qwak/automation/v1/automation_pb2.pyi +8 -1
  131. _qwak_proto/qwak/automation/v1/common_pb2.py +11 -33
  132. _qwak_proto/qwak/automation/v1/common_pb2.pyi +6 -0
  133. _qwak_proto/qwak/automation/v1/notification_pb2.py +16 -68
  134. _qwak_proto/qwak/automation/v1/trigger_pb2.py +14 -54
  135. _qwak_proto/qwak/batch_job/v1/batch_job_events_pb2.py +27 -116
  136. _qwak_proto/qwak/batch_job/v1/batch_job_events_pb2.pyi +6 -1
  137. _qwak_proto/qwak/batch_job/v1/batch_job_resources_pb2.py +9 -26
  138. _qwak_proto/qwak/batch_job/v1/batch_job_resources_pb2.pyi +2 -0
  139. _qwak_proto/qwak/batch_job/v1/batch_job_service_pb2.py +121 -502
  140. _qwak_proto/qwak/batch_job/v1/batch_job_service_pb2.pyi +111 -4
  141. _qwak_proto/qwak/batch_job/v1/batch_job_service_pb2_grpc.py +67 -0
  142. _qwak_proto/qwak/build/v1/build_api_pb2.py +98 -278
  143. _qwak_proto/qwak/build/v1/build_api_pb2.pyi +220 -0
  144. _qwak_proto/qwak/build/v1/build_api_pb2_grpc.py +198 -0
  145. _qwak_proto/qwak/build/v1/build_pb2.py +115 -417
  146. _qwak_proto/qwak/build/v1/build_pb2.pyi +294 -5
  147. _qwak_proto/qwak/build_settings/build_settings_api_pb2.py +40 -0
  148. _qwak_proto/qwak/build_settings/build_settings_api_pb2.pyi +106 -0
  149. _qwak_proto/qwak/build_settings/build_settings_api_pb2_grpc.py +132 -0
  150. _qwak_proto/qwak/build_settings/build_settings_pb2.py +39 -0
  151. _qwak_proto/qwak/build_settings/build_settings_pb2.pyi +148 -0
  152. _qwak_proto/qwak/build_settings/build_settings_pb2_grpc.py +4 -0
  153. _qwak_proto/qwak/builds/build_pb2.py +46 -200
  154. _qwak_proto/qwak/builds/build_pb2.pyi +111 -5
  155. _qwak_proto/qwak/builds/build_url_pb2.py +27 -54
  156. _qwak_proto/qwak/builds/build_url_pb2.pyi +131 -2
  157. _qwak_proto/qwak/builds/build_values_pb2.py +82 -0
  158. _qwak_proto/qwak/builds/build_values_pb2.pyi +559 -0
  159. _qwak_proto/qwak/builds/build_values_pb2_grpc.py +4 -0
  160. _qwak_proto/qwak/builds/builds_orchestrator_service_pb2.py +93 -168
  161. _qwak_proto/qwak/builds/builds_orchestrator_service_pb2.pyi +342 -3
  162. _qwak_proto/qwak/builds/builds_orchestrator_service_pb2_grpc.py +166 -0
  163. _qwak_proto/qwak/builds/builds_pb2.py +87 -528
  164. _qwak_proto/qwak/builds/builds_pb2.pyi +5 -192
  165. _qwak_proto/qwak/builds/builds_pb2_grpc.py +0 -233
  166. _qwak_proto/qwak/builds/internal_builds_orchestrator_service_pb2.py +12 -37
  167. _qwak_proto/qwak/data_versioning/data_versioning_pb2.py +9 -15
  168. _qwak_proto/qwak/data_versioning/data_versioning_pb2.pyi +21 -0
  169. _qwak_proto/qwak/data_versioning/data_versioning_service_pb2.py +15 -48
  170. _qwak_proto/qwak/data_versioning/data_versioning_service_pb2.pyi +12 -1
  171. _qwak_proto/qwak/deployment/alert_pb2.py +25 -108
  172. _qwak_proto/qwak/deployment/alert_pb2.pyi +2 -0
  173. _qwak_proto/qwak/deployment/alert_service_pb2.py +30 -127
  174. _qwak_proto/qwak/deployment/deployment_messages_pb2.py +6 -14
  175. _qwak_proto/qwak/deployment/deployment_pb2.py +127 -578
  176. _qwak_proto/qwak/deployment/deployment_pb2.pyi +51 -8
  177. _qwak_proto/qwak/deployment/deployment_service_pb2.py +91 -400
  178. _qwak_proto/qwak/deployment/deployment_service_pb2.pyi +30 -0
  179. _qwak_proto/qwak/deployment/deployment_service_pb2_grpc.py +34 -0
  180. _qwak_proto/qwak/ecosystem/jfrog/v0/token_pb2.py +72 -0
  181. _qwak_proto/qwak/ecosystem/jfrog/v0/token_pb2.pyi +489 -0
  182. _qwak_proto/qwak/ecosystem/jfrog/v0/token_pb2_grpc.py +4 -0
  183. _qwak_proto/qwak/ecosystem/jfrog/v0/token_service_pb2.py +44 -0
  184. _qwak_proto/qwak/ecosystem/jfrog/v0/token_service_pb2.pyi +144 -0
  185. _qwak_proto/qwak/ecosystem/jfrog/v0/token_service_pb2_grpc.py +169 -0
  186. _qwak_proto/qwak/ecosystem/v0/auth_pb2.py +28 -0
  187. _qwak_proto/qwak/ecosystem/v0/auth_pb2.pyi +37 -0
  188. _qwak_proto/qwak/ecosystem/v0/auth_pb2_grpc.py +4 -0
  189. _qwak_proto/qwak/ecosystem/v0/azure_credentials_pb2.py +37 -0
  190. _qwak_proto/qwak/ecosystem/v0/azure_credentials_pb2.pyi +117 -0
  191. _qwak_proto/qwak/ecosystem/v0/azure_credentials_pb2_grpc.py +4 -0
  192. _qwak_proto/qwak/ecosystem/v0/credentials_pb2.py +13 -26
  193. _qwak_proto/qwak/ecosystem/v0/credentials_pb2.pyi +33 -3
  194. _qwak_proto/qwak/ecosystem/v0/ecosystem_pb2.py +34 -140
  195. _qwak_proto/qwak/ecosystem/v0/ecosystem_pb2.pyi +45 -7
  196. _qwak_proto/qwak/ecosystem/v0/ecosystem_runtime_service_pb2.py +54 -229
  197. _qwak_proto/qwak/ecosystem/v0/ecosystem_runtime_service_pb2.pyi +22 -3
  198. _qwak_proto/qwak/execution/v1/backfill_pb2.py +18 -74
  199. _qwak_proto/qwak/execution/v1/batch_pb2.py +10 -34
  200. _qwak_proto/qwak/execution/v1/deletion_pb2.py +33 -0
  201. _qwak_proto/qwak/execution/v1/deletion_pb2.pyi +67 -0
  202. _qwak_proto/qwak/execution/v1/deletion_pb2_grpc.py +4 -0
  203. _qwak_proto/qwak/execution/v1/execution_pb2.py +20 -60
  204. _qwak_proto/qwak/execution/v1/execution_pb2.pyi +61 -4
  205. _qwak_proto/qwak/execution/v1/execution_service_pb2.py +70 -108
  206. _qwak_proto/qwak/execution/v1/execution_service_pb2.pyi +306 -0
  207. _qwak_proto/qwak/execution/v1/execution_service_pb2_grpc.py +304 -2
  208. _qwak_proto/qwak/execution/v1/internal/deployment/platform_details_pb2.py +27 -0
  209. _qwak_proto/qwak/execution/v1/internal/deployment/platform_details_pb2.pyi +29 -0
  210. _qwak_proto/qwak/execution/v1/internal/deployment/platform_details_pb2_grpc.py +4 -0
  211. _qwak_proto/qwak/execution/v1/jobs/job_pb2.py +19 -67
  212. _qwak_proto/qwak/execution/v1/jobs/job_pb2.pyi +33 -2
  213. _qwak_proto/qwak/execution/v1/jobs/job_service_pb2.py +56 -88
  214. _qwak_proto/qwak/execution/v1/jobs/job_service_pb2.pyi +311 -0
  215. _qwak_proto/qwak/execution/v1/jobs/job_service_pb2_grpc.py +231 -0
  216. _qwak_proto/qwak/execution/v1/jobs/reports/report_pb2.py +21 -75
  217. _qwak_proto/qwak/execution/v1/jobs/reports/report_pb2.pyi +29 -2
  218. _qwak_proto/qwak/execution/v1/state/execution_state_pb2.py +6 -14
  219. _qwak_proto/qwak/execution/v1/state/execution_state_service_pb2.py +31 -108
  220. _qwak_proto/qwak/execution/v1/state/execution_state_service_pb2.pyi +30 -0
  221. _qwak_proto/qwak/execution/v1/state/execution_state_service_pb2_grpc.py +34 -0
  222. _qwak_proto/qwak/execution/v1/state/featureset_state_pb2.py +6 -14
  223. _qwak_proto/qwak/execution/v1/state/spark_execution_state_pb2.py +14 -68
  224. _qwak_proto/qwak/execution/v1/streaming_aggregation_pb2.py +42 -0
  225. _qwak_proto/qwak/execution/v1/streaming_aggregation_pb2.pyi +165 -0
  226. _qwak_proto/qwak/execution/v1/streaming_aggregation_pb2_grpc.py +4 -0
  227. _qwak_proto/qwak/execution/v1/streaming_pb2.py +33 -0
  228. _qwak_proto/qwak/execution/v1/streaming_pb2.pyi +79 -0
  229. _qwak_proto/qwak/execution/v1/streaming_pb2_grpc.py +4 -0
  230. _qwak_proto/qwak/feature_store/entities/entity_pb2.py +16 -57
  231. _qwak_proto/qwak/feature_store/entities/entity_service_pb2.py +30 -127
  232. _qwak_proto/qwak/feature_store/features/aggregation_pb2.py +38 -175
  233. _qwak_proto/qwak/feature_store/features/deployment_pb2.py +36 -167
  234. _qwak_proto/qwak/feature_store/features/deployment_service_pb2.py +10 -27
  235. _qwak_proto/qwak/feature_store/features/execution_pb2.py +14 -56
  236. _qwak_proto/qwak/feature_store/features/feature_set_attribute_pb2.py +28 -0
  237. _qwak_proto/qwak/feature_store/features/feature_set_attribute_pb2.pyi +33 -0
  238. _qwak_proto/qwak/feature_store/features/feature_set_attribute_pb2_grpc.py +4 -0
  239. _qwak_proto/qwak/feature_store/features/feature_set_pb2.py +49 -106
  240. _qwak_proto/qwak/feature_store/features/feature_set_pb2.pyi +154 -8
  241. _qwak_proto/qwak/feature_store/features/feature_set_service_pb2.py +101 -349
  242. _qwak_proto/qwak/feature_store/features/feature_set_service_pb2.pyi +160 -0
  243. _qwak_proto/qwak/feature_store/features/feature_set_service_pb2_grpc.py +170 -0
  244. _qwak_proto/qwak/feature_store/features/feature_set_state_pb2.py +38 -181
  245. _qwak_proto/qwak/feature_store/features/feature_set_state_service_pb2.py +26 -107
  246. _qwak_proto/qwak/feature_store/features/feature_set_types_pb2.py +84 -298
  247. _qwak_proto/qwak/feature_store/features/feature_set_types_pb2.pyi +123 -7
  248. _qwak_proto/qwak/feature_store/features/monitoring_pb2.py +10 -34
  249. _qwak_proto/qwak/feature_store/features/real_time_feature_extractor_pb2.py +32 -143
  250. _qwak_proto/qwak/feature_store/jobs/job_pb2.py +12 -46
  251. _qwak_proto/qwak/feature_store/jobs/job_service_pb2.py +30 -127
  252. _qwak_proto/qwak/feature_store/jobs/v1/job_pb2.py +13 -36
  253. _qwak_proto/qwak/feature_store/jobs/v1/job_pb2.pyi +19 -0
  254. _qwak_proto/qwak/feature_store/jobs/v1/job_service_pb2.py +44 -148
  255. _qwak_proto/qwak/feature_store/jobs/v1/job_service_pb2.pyi +64 -0
  256. _qwak_proto/qwak/feature_store/jobs/v1/job_service_pb2_grpc.py +67 -0
  257. _qwak_proto/qwak/feature_store/platform/platform_details_pb2.py +30 -0
  258. _qwak_proto/qwak/feature_store/platform/platform_details_pb2.pyi +54 -0
  259. _qwak_proto/qwak/feature_store/platform/platform_details_pb2_grpc.py +4 -0
  260. _qwak_proto/qwak/feature_store/reports/report_pb2.py +14 -53
  261. _qwak_proto/qwak/feature_store/repository/common/platform_pb2.py +31 -0
  262. _qwak_proto/qwak/feature_store/repository/common/platform_pb2.pyi +70 -0
  263. _qwak_proto/qwak/feature_store/repository/common/platform_pb2_grpc.py +4 -0
  264. _qwak_proto/qwak/feature_store/serving/management_pb2.py +36 -0
  265. _qwak_proto/qwak/feature_store/serving/management_pb2.pyi +72 -0
  266. _qwak_proto/qwak/feature_store/serving/management_pb2_grpc.py +101 -0
  267. _qwak_proto/qwak/feature_store/serving/metadata_pb2.py +13 -35
  268. _qwak_proto/qwak/feature_store/serving/metadata_pb2.pyi +27 -0
  269. _qwak_proto/qwak/feature_store/serving/serving_pb2.py +50 -222
  270. _qwak_proto/qwak/feature_store/serving/v1/value_pb2.py +8 -24
  271. _qwak_proto/qwak/feature_store/sinks/sink_pb2.py +36 -0
  272. _qwak_proto/qwak/feature_store/sinks/sink_pb2.pyi +137 -0
  273. _qwak_proto/qwak/feature_store/sinks/sink_pb2_grpc.py +4 -0
  274. _qwak_proto/qwak/feature_store/sources/batch_pb2.py +80 -175
  275. _qwak_proto/qwak/feature_store/sources/batch_pb2.pyi +461 -13
  276. _qwak_proto/qwak/feature_store/sources/data_source_attribute_pb2.py +28 -0
  277. _qwak_proto/qwak/feature_store/sources/data_source_attribute_pb2.pyi +33 -0
  278. _qwak_proto/qwak/feature_store/sources/data_source_attribute_pb2_grpc.py +4 -0
  279. _qwak_proto/qwak/feature_store/sources/data_source_pb2.py +21 -55
  280. _qwak_proto/qwak/feature_store/sources/data_source_pb2.pyi +39 -4
  281. _qwak_proto/qwak/feature_store/sources/data_source_service_pb2.py +41 -148
  282. _qwak_proto/qwak/feature_store/sources/data_source_service_pb2.pyi +25 -0
  283. _qwak_proto/qwak/feature_store/sources/data_source_service_pb2_grpc.py +34 -0
  284. _qwak_proto/qwak/feature_store/sources/streaming_pb2.py +34 -146
  285. _qwak_proto/qwak/feature_store/v1/common/jfrog_artifact/jfrog_artifact_pb2.py +27 -0
  286. _qwak_proto/qwak/feature_store/v1/common/jfrog_artifact/jfrog_artifact_pb2.pyi +30 -0
  287. _qwak_proto/qwak/feature_store/v1/common/jfrog_artifact/jfrog_artifact_pb2_grpc.py +4 -0
  288. _qwak_proto/qwak/feature_store/v1/common/source_code/source_code_pb2.py +32 -0
  289. _qwak_proto/qwak/feature_store/v1/common/source_code/source_code_pb2.pyi +77 -0
  290. _qwak_proto/qwak/feature_store/v1/common/source_code/source_code_pb2_grpc.py +4 -0
  291. _qwak_proto/qwak/feature_store/v1/internal/data_source/data_source_service_pb2.py +39 -0
  292. _qwak_proto/qwak/feature_store/v1/internal/data_source/data_source_service_pb2.pyi +99 -0
  293. _qwak_proto/qwak/feature_store/v1/internal/data_source/data_source_service_pb2_grpc.py +99 -0
  294. _qwak_proto/qwak/feature_store/v1/internal/featureset/featureset_token_service_pb2.py +31 -0
  295. _qwak_proto/qwak/feature_store/v1/internal/featureset/featureset_token_service_pb2.pyi +46 -0
  296. _qwak_proto/qwak/feature_store/v1/internal/featureset/featureset_token_service_pb2_grpc.py +66 -0
  297. _qwak_proto/qwak/features_operator/v1/features_operator_pb2.py +14 -54
  298. _qwak_proto/qwak/features_operator/v1/features_operator_service_pb2.py +14 -47
  299. _qwak_proto/qwak/features_operator/v2/features_operator_pb2.py +16 -64
  300. _qwak_proto/qwak/features_operator/v2/features_operator_service_pb2.py +12 -37
  301. _qwak_proto/qwak/features_operator/v3/features_operator_async_service_pb2.py +26 -107
  302. _qwak_proto/qwak/features_operator/v3/features_operator_pb2.py +16 -64
  303. _qwak_proto/qwak/file_versioning/file_versioning_pb2.py +11 -24
  304. _qwak_proto/qwak/file_versioning/file_versioning_pb2.pyi +21 -0
  305. _qwak_proto/qwak/file_versioning/file_versioning_service_pb2.py +15 -48
  306. _qwak_proto/qwak/file_versioning/file_versioning_service_pb2.pyi +12 -1
  307. _qwak_proto/qwak/fitness_service/constructs_pb2.py +23 -93
  308. _qwak_proto/qwak/fitness_service/constructs_pb2.pyi +59 -1
  309. _qwak_proto/qwak/fitness_service/fitness_pb2.py +7 -34
  310. _qwak_proto/qwak/fitness_service/fitness_pb2.pyi +0 -77
  311. _qwak_proto/qwak/fitness_service/status_pb2.py +17 -107
  312. _qwak_proto/qwak/fitness_service/status_pb2.pyi +1 -117
  313. _qwak_proto/qwak/inference/feedback/feedback_pb2.py +28 -96
  314. _qwak_proto/qwak/instance_template/instance_template_pb2.py +13 -41
  315. _qwak_proto/qwak/instance_template/instance_template_pb2.pyi +13 -1
  316. _qwak_proto/qwak/instance_template/instance_template_service_pb2.py +14 -47
  317. _qwak_proto/qwak/integration/hugging_face_integration_pb2.py +37 -0
  318. _qwak_proto/qwak/integration/hugging_face_integration_pb2.pyi +106 -0
  319. _qwak_proto/qwak/integration/hugging_face_integration_pb2_grpc.py +4 -0
  320. _qwak_proto/qwak/integration/integration_pb2.py +55 -0
  321. _qwak_proto/qwak/integration/integration_pb2.pyi +357 -0
  322. _qwak_proto/qwak/integration/integration_pb2_grpc.py +4 -0
  323. _qwak_proto/qwak/integration/integration_service_pb2.py +56 -0
  324. _qwak_proto/qwak/integration/integration_service_pb2.pyi +234 -0
  325. _qwak_proto/qwak/integration/integration_service_pb2_grpc.py +271 -0
  326. _qwak_proto/qwak/integration/open_a_i_integration_pb2.py +37 -0
  327. _qwak_proto/qwak/integration/open_a_i_integration_pb2.pyi +109 -0
  328. _qwak_proto/qwak/integration/open_a_i_integration_pb2_grpc.py +4 -0
  329. _qwak_proto/qwak/integration/opsgenie_integration_pb2.py +43 -0
  330. _qwak_proto/qwak/integration/opsgenie_integration_pb2.pyi +168 -0
  331. _qwak_proto/qwak/integration/opsgenie_integration_pb2_grpc.py +4 -0
  332. _qwak_proto/qwak/integration/pagerduty_integration_pb2.py +47 -0
  333. _qwak_proto/qwak/integration/pagerduty_integration_pb2.pyi +195 -0
  334. _qwak_proto/qwak/integration/pagerduty_integration_pb2_grpc.py +4 -0
  335. _qwak_proto/qwak/integration/slack_app_integration_pb2.py +47 -0
  336. _qwak_proto/qwak/integration/slack_app_integration_pb2.pyi +198 -0
  337. _qwak_proto/qwak/integration/slack_app_integration_pb2_grpc.py +4 -0
  338. _qwak_proto/qwak/kube_deployment_captain/alert_pb2.py +22 -97
  339. _qwak_proto/qwak/kube_deployment_captain/alerting_pb2.py +12 -44
  340. _qwak_proto/qwak/kube_deployment_captain/batch_job_pb2.py +76 -249
  341. _qwak_proto/qwak/kube_deployment_captain/batch_job_pb2.pyi +283 -6
  342. _qwak_proto/qwak/kube_deployment_captain/deployment_pb2.py +45 -161
  343. _qwak_proto/qwak/kube_deployment_captain/deployment_pb2.pyi +52 -1
  344. _qwak_proto/qwak/kube_deployment_captain/feature_set_deployment_pb2.py +33 -145
  345. _qwak_proto/qwak/kube_deployment_captain/feature_set_deployment_pb2.pyi +6 -2
  346. _qwak_proto/qwak/kube_deployment_captain/kube_deployment_captain_service_pb2.py +111 -510
  347. _qwak_proto/qwak/kube_deployment_captain/kube_deployment_captain_service_pb2.pyi +24 -1
  348. _qwak_proto/qwak/kube_deployment_captain/kube_deployment_captain_service_pb2_grpc.py +34 -0
  349. _qwak_proto/qwak/kube_deployment_captain/traffic_mapping_pb2.py +8 -24
  350. _qwak_proto/qwak/logging/log_filter_pb2.py +12 -44
  351. _qwak_proto/qwak/logging/log_line_pb2.py +8 -25
  352. _qwak_proto/qwak/logging/log_reader_service_pb2.py +10 -27
  353. _qwak_proto/qwak/logging/log_source_pb2.py +30 -134
  354. _qwak_proto/qwak/model_descriptor/open_ai_descriptor_pb2.py +40 -0
  355. _qwak_proto/qwak/model_descriptor/open_ai_descriptor_pb2.pyi +215 -0
  356. _qwak_proto/qwak/model_descriptor/open_ai_descriptor_pb2_grpc.py +4 -0
  357. _qwak_proto/qwak/model_group/model_group_pb2.py +47 -0
  358. _qwak_proto/qwak/model_group/model_group_pb2.pyi +192 -0
  359. _qwak_proto/qwak/model_group/model_group_pb2_grpc.py +169 -0
  360. _qwak_proto/qwak/model_group/model_group_repository_details_pb2.py +43 -0
  361. _qwak_proto/qwak/model_group/model_group_repository_details_pb2.pyi +172 -0
  362. _qwak_proto/qwak/model_group/model_group_repository_details_pb2_grpc.py +4 -0
  363. _qwak_proto/qwak/models/models_pb2.py +101 -356
  364. _qwak_proto/qwak/models/models_pb2.pyi +221 -6
  365. _qwak_proto/qwak/models/models_pb2_grpc.py +68 -0
  366. _qwak_proto/qwak/models/models_query_pb2.py +37 -0
  367. _qwak_proto/qwak/models/models_query_pb2.pyi +157 -0
  368. _qwak_proto/qwak/models/models_query_pb2_grpc.py +4 -0
  369. _qwak_proto/qwak/monitoring/v0/alerting_channel_management_service_pb2.py +30 -127
  370. _qwak_proto/qwak/monitoring/v0/alerting_channel_pb2.py +34 -152
  371. _qwak_proto/qwak/monitoring/v0/alerting_channel_sync_service_pb2.py +14 -47
  372. _qwak_proto/qwak/offline/serving/v1/feature_values_pb2.py +27 -0
  373. _qwak_proto/qwak/offline/serving/v1/feature_values_pb2.pyi +37 -0
  374. _qwak_proto/qwak/offline/serving/v1/feature_values_pb2_grpc.py +4 -0
  375. _qwak_proto/qwak/offline/serving/v1/offline_serving_async_service_pb2.py +55 -0
  376. _qwak_proto/qwak/offline/serving/v1/offline_serving_async_service_pb2.pyi +279 -0
  377. _qwak_proto/qwak/offline/serving/v1/offline_serving_async_service_pb2_grpc.py +165 -0
  378. _qwak_proto/qwak/offline/serving/v1/options_pb2.py +27 -0
  379. _qwak_proto/qwak/offline/serving/v1/options_pb2.pyi +30 -0
  380. _qwak_proto/qwak/offline/serving/v1/options_pb2_grpc.py +4 -0
  381. _qwak_proto/qwak/offline/serving/v1/population_pb2.py +35 -0
  382. _qwak_proto/qwak/offline/serving/v1/population_pb2.pyi +99 -0
  383. _qwak_proto/qwak/offline/serving/v1/population_pb2_grpc.py +4 -0
  384. _qwak_proto/qwak/projects/jfrog_project_spec_pb2.py +27 -0
  385. _qwak_proto/qwak/projects/jfrog_project_spec_pb2.pyi +32 -0
  386. _qwak_proto/qwak/projects/jfrog_project_spec_pb2_grpc.py +4 -0
  387. _qwak_proto/qwak/projects/projects_pb2.py +51 -142
  388. _qwak_proto/qwak/projects/projects_pb2.pyi +149 -3
  389. _qwak_proto/qwak/prompt/v1/prompt/prompt_manager_service_pb2.py +77 -0
  390. _qwak_proto/qwak/prompt/v1/prompt/prompt_manager_service_pb2.pyi +417 -0
  391. _qwak_proto/qwak/prompt/v1/prompt/prompt_manager_service_pb2_grpc.py +441 -0
  392. _qwak_proto/qwak/prompt/v1/prompt/prompt_pb2.py +69 -0
  393. _qwak_proto/qwak/prompt/v1/prompt/prompt_pb2.pyi +415 -0
  394. _qwak_proto/qwak/prompt/v1/prompt/prompt_pb2_grpc.py +4 -0
  395. _qwak_proto/qwak/secret_service/secret_service_pb2.py +18 -67
  396. _qwak_proto/qwak/secret_service/secret_service_pb2.pyi +1 -1
  397. _qwak_proto/qwak/self_service/account/v0/account_membership_pb2.py +30 -65
  398. _qwak_proto/qwak/self_service/account/v0/account_membership_pb2.pyi +99 -2
  399. _qwak_proto/qwak/self_service/account/v0/account_membership_service_pb2.py +51 -208
  400. _qwak_proto/qwak/self_service/account/v0/account_membership_service_pb2.pyi +28 -0
  401. _qwak_proto/qwak/self_service/account/v0/account_membership_service_pb2_grpc.py +34 -0
  402. _qwak_proto/qwak/self_service/account/v0/account_status_pb2.py +44 -0
  403. _qwak_proto/qwak/self_service/account/v0/account_status_pb2.pyi +172 -0
  404. _qwak_proto/qwak/self_service/account/v0/account_status_pb2_grpc.py +4 -0
  405. _qwak_proto/qwak/self_service/account/v0/managing_account_pb2.py +60 -0
  406. _qwak_proto/qwak/self_service/account/v0/managing_account_pb2.pyi +317 -0
  407. _qwak_proto/qwak/self_service/account/v0/managing_account_pb2_grpc.py +4 -0
  408. _qwak_proto/qwak/self_service/account/v0/managing_account_service_pb2.py +45 -0
  409. _qwak_proto/qwak/self_service/account/v0/managing_account_service_pb2.pyi +136 -0
  410. _qwak_proto/qwak/self_service/account/v0/managing_account_service_pb2_grpc.py +169 -0
  411. _qwak_proto/qwak/self_service/user/v1/api_key_pb2.py +6 -14
  412. _qwak_proto/qwak/self_service/user/v1/user_pb2.py +6 -14
  413. _qwak_proto/qwak/self_service/user/v1/user_service_pb2.py +30 -121
  414. _qwak_proto/qwak/service_discovery/service_discovery_location_pb2.py +33 -0
  415. _qwak_proto/qwak/service_discovery/service_discovery_location_pb2.pyi +73 -0
  416. _qwak_proto/qwak/service_discovery/service_discovery_location_pb2_grpc.py +4 -0
  417. _qwak_proto/qwak/service_discovery/service_discovery_location_service_pb2.py +32 -0
  418. _qwak_proto/qwak/service_discovery/service_discovery_location_service_pb2.pyi +41 -0
  419. _qwak_proto/qwak/service_discovery/service_discovery_location_service_pb2_grpc.py +231 -0
  420. _qwak_proto/qwak/traffic/v1/traffic_api_pb2.py +23 -88
  421. _qwak_proto/qwak/traffic/v1/traffic_api_pb2.pyi +13 -2
  422. _qwak_proto/qwak/traffic/v1/traffic_pb2.py +27 -114
  423. _qwak_proto/qwak/traffic/v1/traffic_pb2.pyi +5 -1
  424. _qwak_proto/qwak/user_application/common/v0/resources_pb2.py +31 -132
  425. _qwak_proto/qwak/user_application/common/v0/resources_pb2.pyi +54 -0
  426. _qwak_proto/qwak/user_application/v0/user_application_pb2.py +15 -39
  427. _qwak_proto/qwak/user_application/v0/user_application_pb2.pyi +16 -0
  428. _qwak_proto/qwak/vectors/v1/collection/collection_pb2.py +25 -104
  429. _qwak_proto/qwak/vectors/v1/collection/collection_pb2.pyi +17 -1
  430. _qwak_proto/qwak/vectors/v1/collection/collection_service_pb2.py +38 -167
  431. _qwak_proto/qwak/vectors/v1/collection/event/collection_event_pb2.py +7 -15
  432. _qwak_proto/qwak/vectors/v1/collection/event/collection_event_pb2.pyi +5 -1
  433. _qwak_proto/qwak/vectors/v1/filters_pb2.py +30 -134
  434. _qwak_proto/qwak/vectors/v1/vector_pb2.py +17 -45
  435. _qwak_proto/qwak/vectors/v1/vector_pb2.pyi +25 -2
  436. _qwak_proto/qwak/vectors/v1/vector_service_pb2.py +31 -108
  437. _qwak_proto/qwak/vectors/v1/vector_service_pb2.pyi +30 -7
  438. _qwak_proto/qwak/workspace/workspace_pb2.py +23 -108
  439. _qwak_proto/qwak/workspace/workspace_pb2.pyi +10 -2
  440. _qwak_proto/qwak/workspace/workspace_service_pb2.py +63 -248
  441. _qwak_proto/qwak/workspace/workspace_service_pb2.pyi +56 -0
  442. _qwak_proto/qwak/workspace/workspace_service_pb2_grpc.py +66 -0
  443. qwak/__init__.py +2 -3
  444. qwak/automations/automation_executions.py +14 -10
  445. qwak/automations/automations.py +33 -23
  446. qwak/automations/build_and_deploy_action.py +147 -28
  447. qwak/automations/common.py +6 -0
  448. qwak/clients/administration/eco_system/client.py +2 -2
  449. qwak/clients/administration/eco_system/eco_system_utils.py +15 -0
  450. qwak/clients/administration/environment/client.py +16 -0
  451. qwak/clients/analytics/client.py +28 -3
  452. qwak/clients/batch_job_management/client.py +94 -3
  453. qwak/clients/batch_job_management/executions_config.py +18 -0
  454. qwak/clients/build_orchestrator/build_model_request_getter.py +3 -0
  455. qwak/clients/build_orchestrator/client.py +155 -12
  456. qwak/clients/data_versioning/client.py +19 -1
  457. qwak/clients/data_versioning/data_tag_filter.py +32 -0
  458. qwak/clients/deployment/client.py +14 -0
  459. qwak/clients/feature_store/execution_management_client.py +28 -0
  460. qwak/clients/feature_store/management_client.py +203 -146
  461. qwak/clients/feature_store/offline_serving_client.py +251 -0
  462. qwak/clients/feature_store/operator_client.py +21 -4
  463. qwak/clients/file_versioning/client.py +19 -1
  464. qwak/clients/file_versioning/file_tag_filter.py +32 -0
  465. qwak/clients/instance_template/client.py +11 -10
  466. qwak/clients/integration_management/integration_manager_client.py +34 -0
  467. qwak/clients/integration_management/integration_utils.py +27 -0
  468. qwak/clients/integration_management/openai/openai_system_secret.py +56 -0
  469. qwak/clients/kube_deployment_captain/client.py +3 -1
  470. qwak/clients/location_discovery/__init__.py +1 -0
  471. qwak/clients/location_discovery/client.py +73 -0
  472. qwak/clients/logging_client/client.py +13 -18
  473. qwak/clients/model_management/client.py +7 -2
  474. qwak/clients/project/client.py +7 -2
  475. qwak/clients/prompt_manager/__init__.py +0 -0
  476. qwak/clients/prompt_manager/model_descriptor_mapper.py +183 -0
  477. qwak/clients/prompt_manager/prompt_manager_client.py +167 -0
  478. qwak/clients/prompt_manager/prompt_proto_mapper.py +236 -0
  479. qwak/clients/secret_service/client.py +8 -3
  480. qwak/clients/system_secret/__init__.py +0 -0
  481. qwak/clients/system_secret/system_secret_client.py +30 -0
  482. qwak/clients/vector_store/management_client.py +2 -0
  483. qwak/clients/vector_store/serving_client.py +64 -18
  484. qwak/clients/workspace_manager/client.py +15 -0
  485. qwak/exceptions/__init__.py +7 -0
  486. qwak/exceptions/qwak_decode_exception.py +7 -0
  487. qwak/exceptions/qwak_exception.py +2 -1
  488. qwak/exceptions/qwak_external_exception.py +11 -0
  489. qwak/exceptions/qwak_general_build_exception.py +13 -0
  490. qwak/exceptions/qwak_grpc_address_exception.py +9 -0
  491. qwak/exceptions/qwak_load_configuration_exception.py +2 -0
  492. qwak/exceptions/qwak_remote_build_failed.py +5 -0
  493. qwak/exceptions/qwak_suggestion_exception.py +27 -0
  494. qwak/feature_store/_common/artifact_utils.py +59 -0
  495. qwak/feature_store/_common/feature_set_utils.py +142 -19
  496. qwak/feature_store/_common/functions.py +0 -43
  497. qwak/feature_store/_common/packaging.py +262 -0
  498. qwak/feature_store/_common/source_code_spec.py +108 -0
  499. qwak/feature_store/_common/source_code_spec_factory.py +104 -0
  500. qwak/feature_store/_common/value.py +10 -0
  501. qwak/feature_store/data_sources/__init__.py +53 -17
  502. qwak/feature_store/data_sources/attributes.py +23 -0
  503. qwak/feature_store/data_sources/base.py +125 -0
  504. qwak/feature_store/data_sources/batch/__init__.py +0 -0
  505. qwak/feature_store/data_sources/batch/_batch.py +9 -0
  506. qwak/feature_store/data_sources/{batch_sources → batch}/_jdbc.py +2 -1
  507. qwak/feature_store/data_sources/batch/athena.py +260 -0
  508. qwak/feature_store/data_sources/{batch_sources → batch}/big_query.py +5 -5
  509. qwak/feature_store/data_sources/batch/clickhouse.py +60 -0
  510. qwak/feature_store/data_sources/{batch_sources → batch}/csv.py +9 -5
  511. qwak/feature_store/data_sources/{batch_sources → batch}/elastic_search.py +5 -5
  512. qwak/feature_store/data_sources/batch/filesystem/__init__.py +0 -0
  513. qwak/feature_store/data_sources/{batch_sources/filesystem_config.py → batch/filesystem/aws.py} +30 -38
  514. qwak/feature_store/data_sources/batch/filesystem/base_config.py +13 -0
  515. qwak/feature_store/data_sources/batch/filesystem/gcp.py +50 -0
  516. qwak/feature_store/data_sources/batch/filesystem/utils.py +51 -0
  517. qwak/feature_store/data_sources/{batch_sources → batch}/mongodb.py +6 -5
  518. qwak/feature_store/data_sources/{batch_sources → batch}/mysql.py +5 -7
  519. qwak/feature_store/data_sources/{batch_sources → batch}/parquet.py +10 -7
  520. qwak/feature_store/data_sources/{batch_sources → batch}/postgres.py +5 -7
  521. qwak/feature_store/data_sources/{batch_sources → batch}/redshift.py +6 -7
  522. qwak/feature_store/data_sources/{batch_sources → batch}/snowflake.py +39 -13
  523. qwak/feature_store/data_sources/batch/unity_catalog.py +107 -0
  524. qwak/feature_store/data_sources/{batch_sources → batch}/vertica.py +6 -5
  525. qwak/feature_store/data_sources/source_authentication.py +33 -0
  526. qwak/feature_store/data_sources/streaming/__init__.py +0 -0
  527. qwak/feature_store/data_sources/streaming/_streaming.py +9 -0
  528. qwak/feature_store/data_sources/streaming/kafka/__init__.py +25 -0
  529. qwak/feature_store/data_sources/streaming/kafka/authentication.py +120 -0
  530. qwak/feature_store/data_sources/streaming/kafka/deserialization.py +109 -0
  531. qwak/feature_store/data_sources/streaming/kafka/kafka.py +120 -0
  532. qwak/feature_store/data_sources/time_partition_columns.py +166 -0
  533. qwak/feature_store/entities/entity.py +17 -4
  534. qwak/feature_store/execution/backfill.py +8 -2
  535. qwak/feature_store/execution/streaming_backfill.py +48 -0
  536. qwak/feature_store/feature_sets/_utils/_featureset_utils.py +45 -0
  537. qwak/feature_store/feature_sets/backfill.py +13 -0
  538. qwak/feature_store/feature_sets/base_feature_set.py +148 -0
  539. qwak/feature_store/feature_sets/batch.py +142 -151
  540. qwak/feature_store/feature_sets/execution_spec.py +6 -0
  541. qwak/feature_store/feature_sets/metadata.py +51 -1
  542. qwak/feature_store/feature_sets/streaming.py +655 -0
  543. qwak/feature_store/feature_sets/streaming_backfill.py +223 -0
  544. qwak/feature_store/feature_sets/transformations/__init__.py +33 -0
  545. qwak/feature_store/feature_sets/transformations/aggregations/__init__.py +0 -0
  546. qwak/feature_store/feature_sets/transformations/aggregations/aggregations.py +425 -0
  547. qwak/feature_store/feature_sets/transformations/aggregations/windows.py +70 -0
  548. qwak/feature_store/feature_sets/transformations/functions/__init__.py +10 -0
  549. qwak/feature_store/feature_sets/transformations/functions/qwak_pandas.py +64 -0
  550. qwak/feature_store/feature_sets/transformations/functions/schema.py +57 -0
  551. qwak/feature_store/feature_sets/transformations/transformations.py +451 -0
  552. qwak/feature_store/feature_sets/transformations/validations/validations_util.py +78 -0
  553. qwak/feature_store/offline/__init__.py +2 -2
  554. qwak/feature_store/offline/_offline_serving_validations.py +31 -0
  555. qwak/feature_store/offline/client_v2.py +327 -0
  556. qwak/feature_store/offline/feature_set_features.py +25 -0
  557. qwak/feature_store/online/client.py +152 -46
  558. qwak/feature_store/online/endpoint_utils.py +63 -0
  559. qwak/feature_store/sinks/__init__.py +0 -0
  560. qwak/feature_store/sinks/base.py +18 -0
  561. qwak/feature_store/sinks/kafka.py +59 -0
  562. qwak/feature_store/sinks/streaming/__init__.py +0 -0
  563. qwak/feature_store/sinks/streaming/attachment.py +30 -0
  564. qwak/feature_store/sinks/streaming/factory.py +60 -0
  565. qwak/feature_store/validations/__init__.py +0 -0
  566. qwak/feature_store/validations/validation_decorators.py +70 -0
  567. qwak/feature_store/validations/validation_options.py +77 -0
  568. qwak/feature_store/validations/validation_response.py +119 -0
  569. qwak/feature_store/validations/validator.py +114 -0
  570. qwak/inner/build_config/__init__.py +0 -0
  571. qwak/inner/build_config/build_config_v1.py +311 -0
  572. qwak/inner/build_logic/__init__.py +0 -0
  573. qwak/inner/build_logic/build_loggers/__init__.py +0 -0
  574. qwak/inner/build_logic/build_loggers/trigger_build_logger.py +51 -0
  575. qwak/inner/build_logic/constants/__init__.py +0 -0
  576. qwak/inner/build_logic/constants/dependencies.py +5 -0
  577. qwak/inner/build_logic/constants/host_resource.py +4 -0
  578. qwak/inner/build_logic/constants/messages.py +3 -0
  579. qwak/inner/build_logic/constants/temp_dir.py +1 -0
  580. qwak/inner/build_logic/constants/upload_tag.py +7 -0
  581. qwak/inner/build_logic/dependency_manager_type.py +8 -0
  582. qwak/inner/build_logic/execute_build_pipeline.py +62 -0
  583. qwak/inner/build_logic/interface/__init__.py +0 -0
  584. qwak/inner/build_logic/interface/build_logger_interface.py +28 -0
  585. qwak/inner/build_logic/interface/build_phase.py +24 -0
  586. qwak/inner/build_logic/interface/context_interface.py +66 -0
  587. qwak/inner/build_logic/interface/phase_run_handler.py +71 -0
  588. qwak/inner/build_logic/interface/step_inteface.py +26 -0
  589. qwak/inner/build_logic/interface/time_source.py +23 -0
  590. qwak/inner/build_logic/phases/__init__.py +0 -0
  591. qwak/inner/build_logic/phases/phase_010_fetch_model/__init__.py +0 -0
  592. qwak/inner/build_logic/phases/phase_010_fetch_model/fetch_model_step.py +43 -0
  593. qwak/inner/build_logic/phases/phase_010_fetch_model/fetch_strategy_manager/__init__.py +0 -0
  594. qwak/inner/build_logic/phases/phase_010_fetch_model/fetch_strategy_manager/common.py +32 -0
  595. qwak/inner/build_logic/phases/phase_010_fetch_model/fetch_strategy_manager/fetch_strategy_manager.py +62 -0
  596. qwak/inner/build_logic/phases/phase_010_fetch_model/fetch_strategy_manager/strategy/__init__.py +0 -0
  597. qwak/inner/build_logic/phases/phase_010_fetch_model/fetch_strategy_manager/strategy/folder/__init__.py +0 -0
  598. qwak/inner/build_logic/phases/phase_010_fetch_model/fetch_strategy_manager/strategy/folder/folder_strategy.py +131 -0
  599. qwak/inner/build_logic/phases/phase_010_fetch_model/fetch_strategy_manager/strategy/git/__init__.py +0 -0
  600. qwak/inner/build_logic/phases/phase_010_fetch_model/fetch_strategy_manager/strategy/git/git_strategy.py +186 -0
  601. qwak/inner/build_logic/phases/phase_010_fetch_model/fetch_strategy_manager/strategy/strategy.py +48 -0
  602. qwak/inner/build_logic/phases/phase_010_fetch_model/fetch_strategy_manager/strategy/zip/__init__.py +0 -0
  603. qwak/inner/build_logic/phases/phase_010_fetch_model/fetch_strategy_manager/strategy/zip/zip_strategy.py +64 -0
  604. qwak/inner/build_logic/phases/phase_010_fetch_model/post_fetch_validation_step.py +140 -0
  605. qwak/inner/build_logic/phases/phase_010_fetch_model/pre_fetch_validation_step.py +266 -0
  606. qwak/inner/build_logic/phases/phase_010_fetch_model/set_version_step.py +33 -0
  607. qwak/inner/build_logic/phases/phase_020_remote_register_qwak_build/__init__.py +0 -0
  608. qwak/inner/build_logic/phases/phase_020_remote_register_qwak_build/cleanup_step.py +20 -0
  609. qwak/inner/build_logic/phases/phase_020_remote_register_qwak_build/start_remote_build_step.py +43 -0
  610. qwak/inner/build_logic/phases/phase_020_remote_register_qwak_build/upload_step.py +258 -0
  611. qwak/inner/build_logic/phases/phases_pipeline.py +44 -0
  612. qwak/inner/build_logic/run_handlers/__init__.py +0 -0
  613. qwak/inner/build_logic/run_handlers/programmatic_phase_run_handler.py +99 -0
  614. qwak/inner/build_logic/tools/__init__.py +0 -0
  615. qwak/inner/build_logic/tools/dependencies_tools.py +68 -0
  616. qwak/inner/build_logic/tools/files.py +237 -0
  617. qwak/inner/build_logic/tools/ignore_files.py +20 -0
  618. qwak/inner/build_logic/tools/text.py +9 -0
  619. qwak/inner/build_logic/trigger_build_context.py +10 -0
  620. qwak/inner/const.py +2 -4
  621. qwak/inner/di_configuration/__init__.py +1 -63
  622. qwak/inner/di_configuration/account.py +32 -15
  623. qwak/inner/di_configuration/config.yml +2 -0
  624. qwak/inner/di_configuration/containers.py +10 -2
  625. qwak/inner/di_configuration/dependency_wiring.py +98 -0
  626. qwak/inner/di_configuration/session.py +5 -0
  627. qwak/inner/instance_template/__init__.py +0 -0
  628. qwak/inner/instance_template/verify_template_id.py +48 -0
  629. qwak/inner/model_loggers_utils.py +10 -7
  630. qwak/inner/provider.py +6 -0
  631. qwak/inner/tool/auth.py +42 -7
  632. qwak/inner/tool/grpc/grpc_auth.py +27 -8
  633. qwak/inner/tool/grpc/grpc_tools.py +124 -4
  634. qwak/inner/tool/grpc/grpc_try_wrapping.py +139 -4
  635. qwak/inner/tool/protobuf_factory.py +45 -0
  636. qwak/inner/tool/run_config/__init__.py +2 -0
  637. qwak/inner/tool/run_config/base.py +32 -7
  638. qwak/inner/tool/run_config/utils.py +66 -1
  639. qwak/llmops/__init__.py +0 -0
  640. qwak/llmops/generation/__init__.py +0 -0
  641. qwak/llmops/generation/_steaming.py +77 -0
  642. qwak/llmops/generation/base.py +5 -0
  643. qwak/llmops/generation/chat/__init__.py +0 -0
  644. qwak/llmops/generation/chat/openai/LICENSE.txt +201 -0
  645. qwak/llmops/generation/chat/openai/types/__init__.py +0 -0
  646. qwak/llmops/generation/chat/openai/types/chat/__init__.py +0 -0
  647. qwak/llmops/generation/chat/openai/types/chat/chat_completion.py +105 -0
  648. qwak/llmops/generation/chat/openai/types/chat/chat_completion_assistant_message_param.py +65 -0
  649. qwak/llmops/generation/chat/openai/types/chat/chat_completion_chunk.py +188 -0
  650. qwak/llmops/generation/chat/openai/types/chat/chat_completion_content_part_text_param.py +28 -0
  651. qwak/llmops/generation/chat/openai/types/chat/chat_completion_function_call_option_param.py +25 -0
  652. qwak/llmops/generation/chat/openai/types/chat/chat_completion_function_message_param.py +33 -0
  653. qwak/llmops/generation/chat/openai/types/chat/chat_completion_message.py +59 -0
  654. qwak/llmops/generation/chat/openai/types/chat/chat_completion_message_param.py +34 -0
  655. qwak/llmops/generation/chat/openai/types/chat/chat_completion_message_tool_call.py +46 -0
  656. qwak/llmops/generation/chat/openai/types/chat/chat_completion_message_tool_call_param.py +44 -0
  657. qwak/llmops/generation/chat/openai/types/chat/chat_completion_named_tool_choice_param.py +32 -0
  658. qwak/llmops/generation/chat/openai/types/chat/chat_completion_role.py +20 -0
  659. qwak/llmops/generation/chat/openai/types/chat/chat_completion_system_message_param.py +35 -0
  660. qwak/llmops/generation/chat/openai/types/chat/chat_completion_token_logprob.py +71 -0
  661. qwak/llmops/generation/chat/openai/types/chat/chat_completion_tool_choice_option_param.py +28 -0
  662. qwak/llmops/generation/chat/openai/types/chat/chat_completion_tool_message_param.py +31 -0
  663. qwak/llmops/generation/chat/openai/types/chat/chat_completion_tool_param.py +29 -0
  664. qwak/llmops/generation/chat/openai/types/chat/chat_completion_user_message_param.py +35 -0
  665. qwak/llmops/generation/chat/openai/types/chat/completion_create_params.py +279 -0
  666. qwak/llmops/generation/chat/openai/types/completion_choice.py +47 -0
  667. qwak/llmops/generation/chat/openai/types/completion_create_params.py +209 -0
  668. qwak/llmops/generation/chat/openai/types/completion_usage.py +30 -0
  669. qwak/llmops/generation/chat/openai/types/model.py +35 -0
  670. qwak/llmops/generation/chat/openai/types/shared/__init__.py +3 -0
  671. qwak/llmops/generation/chat/openai/types/shared/error_object.py +27 -0
  672. qwak/llmops/generation/chat/openai/types/shared/function_definition.py +49 -0
  673. qwak/llmops/generation/chat/openai/types/shared/function_parameters.py +20 -0
  674. qwak/llmops/generation/chat/openai/types/shared_params/__init__.py +2 -0
  675. qwak/llmops/generation/chat/openai/types/shared_params/function_definition.py +49 -0
  676. qwak/llmops/generation/chat/openai/types/shared_params/function_parameters.py +22 -0
  677. qwak/llmops/generation/streaming.py +26 -0
  678. qwak/llmops/model/__init__.py +0 -0
  679. qwak/llmops/model/descriptor.py +39 -0
  680. qwak/llmops/prompt/__init__.py +0 -0
  681. qwak/llmops/prompt/base.py +133 -0
  682. qwak/llmops/prompt/chat/__init__.py +0 -0
  683. qwak/llmops/prompt/chat/message.py +24 -0
  684. qwak/llmops/prompt/chat/template.py +113 -0
  685. qwak/llmops/prompt/chat/value.py +10 -0
  686. qwak/llmops/prompt/manager.py +134 -0
  687. qwak/llmops/prompt/template.py +24 -0
  688. qwak/llmops/prompt/value.py +14 -0
  689. qwak/llmops/provider/__init__.py +0 -0
  690. qwak/llmops/provider/chat.py +42 -0
  691. qwak/llmops/provider/openai/__init__.py +0 -0
  692. qwak/llmops/provider/openai/client.py +123 -0
  693. qwak/llmops/provider/openai/provider.py +89 -0
  694. qwak/model/_entity_extraction.py +40 -46
  695. qwak/model/adapters/input_adapters/multi_input_adapter.py +17 -1
  696. qwak/model/base.py +1 -1
  697. qwak/model/decorators/api.py +3 -1
  698. qwak/model/decorators/impl/api_implementation.py +1 -0
  699. qwak/model/fs_info_mapping_retriever.py +58 -0
  700. qwak/model/schema.py +1 -1
  701. qwak/model/schema_entities.py +1 -1
  702. qwak/model/tools/__init__.py +1 -1
  703. qwak/model/tools/adapters/input_adapters/dataframe_input.py +1 -1
  704. qwak/model/tools/adapters/output.py +1 -1
  705. qwak/model/tools/run_model_locally.py +15 -3
  706. qwak/model/utils/feature_utils.py +69 -0
  707. qwak/model_loggers/artifact_logger.py +46 -9
  708. qwak/model_loggers/data_logger.py +16 -2
  709. qwak/qwak_client/batch_jobs/execution.py +49 -0
  710. qwak/qwak_client/batch_jobs/task.py +43 -0
  711. qwak/qwak_client/build_api_helpers/__init__.py +0 -0
  712. qwak/qwak_client/build_api_helpers/build_api_steps.py +53 -0
  713. qwak/qwak_client/build_api_helpers/messages.py +6 -0
  714. qwak/qwak_client/build_api_helpers/trigger_build_api.py +65 -0
  715. qwak/qwak_client/client.py +276 -24
  716. qwak/qwak_client/data_versioning/__init__.py +0 -0
  717. qwak/qwak_client/data_versioning/data_tag.py +24 -0
  718. qwak/qwak_client/deployments/deployment.py +11 -9
  719. qwak/qwak_client/file_versioning/__init__.py +0 -0
  720. qwak/qwak_client/file_versioning/file_tag.py +24 -0
  721. qwak/qwak_client/projects/project.py +4 -2
  722. qwak/tools/logger/logger.py +1 -1
  723. qwak/utils/__init__.py +0 -0
  724. qwak/utils/datetime_utils.py +18 -0
  725. qwak/utils/dict_utils.py +12 -0
  726. qwak/vector_store/client.py +8 -0
  727. qwak/vector_store/collection.py +173 -73
  728. qwak/vector_store/inference_client.py +30 -2
  729. qwak/vector_store/rest_helpers.py +13 -21
  730. qwak/vector_store/utils/filter_utils.py +4 -17
  731. qwak/vector_store/utils/upsert_utils.py +217 -0
  732. {qwak_core-0.1.37.dist-info → qwak_core-0.5.19.dist-info}/METADATA +20 -15
  733. qwak_core-0.5.19.dist-info/RECORD +1100 -0
  734. {qwak_core-0.1.37.dist-info → qwak_core-0.5.19.dist-info}/WHEEL +1 -1
  735. qwak_services_mock/mocks/authentication_service.py +5 -4
  736. qwak_services_mock/mocks/batch_job_manager_service.py +53 -6
  737. qwak_services_mock/mocks/build_orchestrator_build_api.py +18 -1
  738. qwak_services_mock/mocks/build_orchestrator_build_settings_api.py +35 -0
  739. qwak_services_mock/mocks/build_orchestrator_service_api.py +4 -0
  740. qwak_services_mock/mocks/data_versioning_service.py +26 -2
  741. qwak_services_mock/mocks/deployment_management_service.py +46 -18
  742. qwak_services_mock/mocks/ecosystem_service_api.py +0 -1
  743. qwak_services_mock/mocks/execution_management_service.py +9 -1
  744. qwak_services_mock/mocks/feature_store_data_sources_manager_api.py +98 -2
  745. qwak_services_mock/mocks/feature_store_entities_manager_api.py +46 -3
  746. qwak_services_mock/mocks/feature_store_feature_set_manager_api.py +197 -21
  747. qwak_services_mock/mocks/features_online_serving_api.py +9 -0
  748. qwak_services_mock/mocks/features_operator_v3_service.py +20 -0
  749. qwak_services_mock/mocks/features_set_state_service_api.py +0 -1
  750. qwak_services_mock/mocks/file_versioning_service.py +29 -2
  751. qwak_services_mock/mocks/fs_offline_serving_service.py +53 -0
  752. qwak_services_mock/mocks/instance_template_management_service.py +35 -1
  753. qwak_services_mock/mocks/integration_management_service.py +72 -0
  754. qwak_services_mock/mocks/location_discovery_service_api.py +104 -0
  755. qwak_services_mock/mocks/model_management_service.py +11 -5
  756. qwak_services_mock/mocks/prompt_manager_service.py +244 -0
  757. qwak_services_mock/mocks/qwak_mocks.py +20 -2
  758. qwak_services_mock/mocks/system_secret_service.py +54 -0
  759. qwak_services_mock/mocks/vector_serving_api.py +44 -8
  760. qwak_services_mock/mocks/workspace_manager_service_mock.py +24 -8
  761. qwak_services_mock/services_mock.py +78 -12
  762. _qwak_proto/qwak/fitness_service/fitness_service_pb2.py +0 -110
  763. _qwak_proto/qwak/fitness_service/fitness_service_pb2.pyi +0 -121
  764. _qwak_proto/qwak/fitness_service/fitness_service_pb2_grpc.py +0 -169
  765. qwak/clients/build_management/__init__.py +0 -1
  766. qwak/clients/build_management/client.py +0 -114
  767. qwak/feature_store/_common/featureset_asterisk_handler.py +0 -115
  768. qwak/feature_store/data_sources/batch_sources/__init__.py +0 -6
  769. qwak/feature_store/data_sources/batch_sources/_batch.py +0 -86
  770. qwak/feature_store/feature_sets/transformations.py +0 -48
  771. qwak/feature_store/offline/_query_engine.py +0 -32
  772. qwak/feature_store/offline/athena/athena_query_engine.py +0 -153
  773. qwak/feature_store/offline/client.py +0 -699
  774. qwak/feature_store/validation_options.py +0 -69
  775. qwak_core-0.1.37.dist-info/RECORD +0 -682
  776. qwak_services_mock/mocks/build_management.py +0 -100
  777. {_qwak_proto → qwak/clients/integration_management}/__init__.py +0 -0
  778. /qwak/{feature_store/offline/athena → clients/integration_management/openai}/__init__.py +0 -0
@@ -1,6 +1,8 @@
1
1
  from datetime import timedelta
2
2
  from time import sleep, time
3
+ from typing import Optional
3
4
 
5
+ import grpc
4
6
  from _qwak_proto.qwak.analytics.analytics_pb2 import (
5
7
  QueryResultDownloadURLParams,
6
8
  QueryStatus,
@@ -14,8 +16,9 @@ from _qwak_proto.qwak.analytics.analytics_service_pb2 import (
14
16
  from _qwak_proto.qwak.analytics.analytics_service_pb2_grpc import (
15
17
  AnalyticsQueryServiceStub,
16
18
  )
17
- from dependency_injector.wiring import Provide
19
+ from qwak.clients.location_discovery import LocationDiscoveryClient
18
20
  from qwak.inner.di_configuration import QwakContainer
21
+ from qwak.inner.tool.grpc.grpc_tools import create_grpc_channel
19
22
 
20
23
 
21
24
  class AnalyticsEngineError(RuntimeError):
@@ -26,8 +29,8 @@ class AnalyticsEngineError(RuntimeError):
26
29
 
27
30
 
28
31
  class AnalyticsEngineClient:
29
- def __init__(self, grpc_channel=Provide[QwakContainer.core_grpc_channel]):
30
- self.grpc_client = AnalyticsQueryServiceStub(grpc_channel)
32
+ def __init__(self, grpc_channel: Optional[QwakContainer.core_grpc_channel] = None):
33
+ self.grpc_client = self._create_grpc_client(grpc_channel)
31
34
 
32
35
  def get_analytics_data(self, query: str, timeout: timedelta = None) -> str:
33
36
  """
@@ -79,3 +82,25 @@ class AnalyticsEngineClient:
79
82
  request = GetQueryResultDownloadURLRequest(params=request_params)
80
83
  response = self.grpc_client.GetQueryResultDownloadURL(request)
81
84
  return response.download_url
85
+
86
+ def _create_grpc_client(
87
+ self, grpc_channel: Optional[grpc.Channel] = None
88
+ ) -> AnalyticsQueryServiceStub:
89
+ if grpc_channel:
90
+ return AnalyticsQueryServiceStub(grpc_channel)
91
+
92
+ channel = create_grpc_channel(
93
+ url=self._get_analytics_engine_url(),
94
+ status_for_retry=(
95
+ grpc.StatusCode.UNAVAILABLE,
96
+ grpc.StatusCode.CANCELLED,
97
+ ),
98
+ )
99
+ return AnalyticsQueryServiceStub(channel)
100
+
101
+ @staticmethod
102
+ def _get_analytics_engine_url() -> str:
103
+ """
104
+ Fetches the analytics engine service URL from the LocationDiscoveryService.
105
+ """
106
+ return LocationDiscoveryClient().get_analytics_engine().service_url
@@ -14,6 +14,8 @@ from _qwak_proto.qwak.batch_job.v1.batch_job_service_pb2 import (
14
14
  CancelBatchJobResponse,
15
15
  CancelWarmupJobRequest,
16
16
  CancelWarmupJobResponse,
17
+ GetBatchJobDetailsRequest,
18
+ GetBatchJobDetailsResponse,
17
19
  GetBatchJobDownloadDetailsRequest,
18
20
  GetBatchJobDownloadDetailsResponse,
19
21
  GetBatchJobPreSignedDownloadUrlRequest,
@@ -26,10 +28,16 @@ from _qwak_proto.qwak.batch_job.v1.batch_job_service_pb2 import (
26
28
  GetBatchJobStatusResponse,
27
29
  GetBatchJobUploadDetailsRequest,
28
30
  GetBatchJobUploadDetailsResponse,
31
+ ListBatchJobsRequest,
32
+ ListBatchJobsResponse,
29
33
  StartBatchJobRequest,
30
34
  StartBatchJobResponse,
31
35
  StartWarmupJobRequest,
32
36
  StartWarmupJobResponse,
37
+ UpdateTasksDetailsResponse,
38
+ UpdateTasksDetailsRequest,
39
+ BatchTaskDetails,
40
+ InputFileDetails,
33
41
  )
34
42
  from _qwak_proto.qwak.batch_job.v1.batch_job_service_pb2_grpc import (
35
43
  BatchJobManagementServiceStub,
@@ -52,6 +60,7 @@ from .executions_config import (
52
60
  INPUT_FORMATTERS_MAP,
53
61
  OUTPUT_FORMATTERS_MAP,
54
62
  ExecutionConfig,
63
+ PURCHASE_OPTION_SET,
55
64
  )
56
65
  from .results import (
57
66
  CancelExecutionResult,
@@ -62,6 +71,8 @@ from .results import (
62
71
  StartExecutionResult,
63
72
  )
64
73
 
74
+ from typing import List
75
+
65
76
  CLIENT_TIMEOUT = 180 # Seconds
66
77
 
67
78
 
@@ -100,9 +111,18 @@ class BatchJobManagerClient:
100
111
 
101
112
  if user_raw_output_format not in OUTPUT_FORMATTERS_MAP:
102
113
  raise ValueError(
103
- f"Invalid output format - please choose one of {list(OUTPUT_FORMATTERS_MAP.keys())}"
114
+ f"Invalid input format - please choose one of {list(OUTPUT_FORMATTERS_MAP.keys())}"
104
115
  )
105
116
 
117
+ user_purchase_option = execution_config.advanced_options.purchase_option
118
+ if user_purchase_option is not None:
119
+ if user_purchase_option not in PURCHASE_OPTION_SET:
120
+ raise ValueError(
121
+ f"Invalid purchase option - please choose one of {list(PURCHASE_OPTION_SET)}"
122
+ )
123
+ else:
124
+ user_purchase_option = user_purchase_option.replace("-", "")
125
+
106
126
  start_job_result: StartBatchJobResponse = self._start_batch_job(
107
127
  batch_job_request=BatchJobRequest(
108
128
  model_details=BatchJobModelDetails(
@@ -126,13 +146,16 @@ class BatchJobManagerClient:
126
146
  ),
127
147
  token_secret=execution_config.execution.access_token_name,
128
148
  secret_secret=execution_config.execution.access_secret_name,
149
+ service_account_json_key_secret=execution_config.execution.service_account_key_secret_name,
129
150
  ),
130
151
  execution_details=BatchJobExecutionDetails(
131
152
  job_timeout=execution_config.execution.job_timeout,
132
153
  task_timeout=execution_config.execution.file_timeout,
133
154
  batch_job_deployment_size=job_size,
134
155
  advanced_deployment_options=AdvancedDeploymentOptions(
135
- custom_iam_role_arn=execution_config.advanced_options.custom_iam_role_arn
156
+ custom_iam_role_arn=execution_config.advanced_options.custom_iam_role_arn,
157
+ purchase_option=user_purchase_option,
158
+ service_account_key_secret_name=execution_config.advanced_options.service_account_key_secret_name,
136
159
  ),
137
160
  parameters=BatchJobManagerClient._batch_job_parameters_as_list(
138
161
  execution_config.execution.parameters
@@ -488,4 +511,72 @@ class BatchJobManagerClient:
488
511
  )
489
512
 
490
513
  except grpc.RpcError as e:
491
- raise QwakException(f"Failed to get download details error is: {e}")
514
+ raise QwakException(f"Failed to get download details, error is: {e}")
515
+
516
+ def list_batch_jobs(self, model_id: str, build_id: str) -> ListBatchJobsResponse:
517
+ """
518
+ List batch jobs by its model ID
519
+ Args:
520
+ model_id (str): The model ID
521
+ build_id (str): The build ID - optional.
522
+
523
+ Returns: ListBatchJobsResponse which contains list of batch jobs details
524
+ """
525
+ try:
526
+ return self.batch_job_management.ListBatchJobs(
527
+ ListBatchJobsRequest(model_id=model_id, build_id=build_id),
528
+ timeout=CLIENT_TIMEOUT,
529
+ )
530
+
531
+ except grpc.RpcError as e:
532
+ raise QwakException(f"Failed to list batch jobs, error is: {e}")
533
+
534
+ def get_batch_job_details(self, job_id: str) -> GetBatchJobDetailsResponse:
535
+ """
536
+ Get batch jos by its job ID
537
+ Args:
538
+ job_id: The job ID
539
+
540
+ Returns: GetBatchJobDetailsResponse which contains list of task execution details
541
+ """
542
+ try:
543
+ return self.batch_job_management.GetBatchJobDetails(
544
+ GetBatchJobDetailsRequest(job_id=job_id),
545
+ timeout=CLIENT_TIMEOUT,
546
+ )
547
+
548
+ except grpc.RpcError as e:
549
+ raise QwakException(f"Failed to get batch job details, error is: {e}")
550
+
551
+ def update_task_details(self, task_id: str, input_file_paths: List[str]):
552
+ """
553
+ Update task details for a specific task using the provided list of input file paths.
554
+
555
+ :param task_id: The ID of the task to update.
556
+ :param input_file_paths: A list of paths for the input files associated with the task.
557
+ """
558
+ # Create InputFileDetails messages for each input file path
559
+ input_files_details = [
560
+ InputFileDetails(path=file_path) for file_path in input_file_paths
561
+ ]
562
+
563
+ # Create BatchTaskDetails message for the single task
564
+ batch_task_details = BatchTaskDetails(
565
+ task_id=task_id, input_files_details=input_files_details
566
+ )
567
+
568
+ update_request = UpdateTasksDetailsRequest(
569
+ tasks_details=[batch_task_details] # Wrap in a list
570
+ )
571
+
572
+ try:
573
+ response: UpdateTasksDetailsResponse = (
574
+ self.batch_job_management.UpdateTasksDetails(
575
+ update_request, timeout=CLIENT_TIMEOUT
576
+ )
577
+ )
578
+ return response
579
+ except grpc.RpcError as e:
580
+ raise QwakException(
581
+ f"Failed to update task details for task '{task_id}', error is: {e}"
582
+ )
@@ -50,6 +50,12 @@ GPU_TYPE_MAP = {
50
50
  "NVIDIA_A10G": NVIDIA_A10G,
51
51
  }
52
52
 
53
+ PURCHASE_OPTION_SET = (
54
+ "on-demand",
55
+ "spot",
56
+ )
57
+
58
+
53
59
  CONFIG_MAPPING: List[ConfigCliMap] = [
54
60
  ConfigCliMap("model_id", "execution.model_id", validate_string, True),
55
61
  ConfigCliMap("build_id", "execution.build_id", validate_string, False),
@@ -84,12 +90,21 @@ CONFIG_MAPPING: List[ConfigCliMap] = [
84
90
  ConfigCliMap(
85
91
  "access_secret_name", "execution.access_secret_name", validate_string, False
86
92
  ),
93
+ ConfigCliMap(
94
+ "service_account_key_secret_name",
95
+ "execution.service_account_key_secret_name",
96
+ validate_string,
97
+ False,
98
+ ),
87
99
  ConfigCliMap("pods", "resources.pods", validate_int, False),
88
100
  ConfigCliMap("cpus", "resources.cpus", validate_float, False),
89
101
  ConfigCliMap("memory", "resources.memory", validate_int, False),
90
102
  ConfigCliMap("gpu_type", "resources.gpu_type", validate_string, False),
91
103
  ConfigCliMap("gpu_amount", "resources.gpu_amount", validate_int, False),
92
104
  ConfigCliMap("instance", "resources.instance_size", validate_string, False),
105
+ ConfigCliMap(
106
+ "purchase_option", "advanced_options.purchase_option", validate_string, False
107
+ ),
93
108
  ]
94
109
 
95
110
 
@@ -139,6 +154,7 @@ class ExecutionConfig(YamlConfigMixin, QwakConfigBase):
139
154
  job_timeout: int = field(default=0)
140
155
  file_timeout: int = field(default=0)
141
156
  parameters: dict = field(default_factory=lambda: defaultdict(str))
157
+ service_account_key_secret_name: str = field(default="")
142
158
 
143
159
  @dataclass
144
160
  class Warmup:
@@ -158,6 +174,8 @@ class ExecutionConfig(YamlConfigMixin, QwakConfigBase):
158
174
  @dataclass
159
175
  class AdvancedOptions:
160
176
  custom_iam_role_arn: str = field(default=None)
177
+ purchase_option: str = field(default=None)
178
+ service_account_key_secret_name: str = field(default=None)
161
179
 
162
180
  warmup: Warmup = field(default_factory=Warmup)
163
181
  execution: Execution = field(default_factory=Execution)
@@ -39,6 +39,7 @@ def _get_build_model_spec(
39
39
  build_spec = RemoteBuildSpec(
40
40
  build_properties=BuildProperties(
41
41
  build_id=build_conf.build_properties.build_id,
42
+ build_name=build_conf.build_properties.build_name,
42
43
  model_id=build_conf.build_properties.model_id,
43
44
  branch=build_conf.build_properties.branch,
44
45
  tags=build_conf.build_properties.tags,
@@ -56,6 +57,7 @@ def _get_build_model_spec(
56
57
  docker_env=DockerEnv(
57
58
  base_image=build_conf.build_env.docker.base_image,
58
59
  assumed_iam_role_arn=build_conf.build_env.docker.assumed_iam_role_arn,
60
+ service_account_key_secret_name=build_conf.build_env.docker.service_account_key_secret_name,
59
61
  no_cache=not build_conf.build_env.docker.cache,
60
62
  env_vars=build_conf.build_env.docker.env_vars,
61
63
  ),
@@ -78,6 +80,7 @@ def _get_build_model_spec(
78
80
  build_v1_flag=build_v1_flag,
79
81
  build_steps=build_steps,
80
82
  purchase_option=_purchase_option_to_enum(build_conf.purchase_option),
83
+ provision_instance_timeout=build_conf.provision_instance_timeout,
81
84
  )
82
85
 
83
86
  if build_conf.build_env.remote.resources.instance:
@@ -1,3 +1,4 @@
1
+ from dataclasses import dataclass
1
2
  from typing import Dict, List, Optional
2
3
 
3
4
  import grpc
@@ -16,11 +17,30 @@ from _qwak_proto.qwak.build.v1.build_api_pb2 import (
16
17
  RegisterTagsResponse,
17
18
  UpdateBuildStatusRequest,
18
19
  UpdateBuildStatusResponse,
20
+ SaveFrameworkModelsRequest,
21
+ SaveFrameworkModelsResponse,
19
22
  )
20
23
  from _qwak_proto.qwak.build.v1.build_api_pb2_grpc import BuildAPIStub
21
- from _qwak_proto.qwak.build.v1.build_pb2 import BuildFilter, BuildStatus, ModelSchema
24
+ from _qwak_proto.qwak.build.v1.build_pb2 import (
25
+ BuildFilter,
26
+ BuildStatus,
27
+ ModelSchema,
28
+ FrameworkModelsSpec,
29
+ HuggingFaceModelSpec,
30
+ FrameworkModel,
31
+ )
32
+ from _qwak_proto.qwak.build_settings.build_settings_api_pb2 import (
33
+ GetBuildSettingsResponse,
34
+ GetBuildSettingsRequest,
35
+ )
36
+ from _qwak_proto.qwak.build_settings.build_settings_api_pb2_grpc import (
37
+ BuildSettingsApiStub,
38
+ )
22
39
  from _qwak_proto.qwak.builds.build_pb2 import BaseDockerImageType, DataTableDefinition
23
- from _qwak_proto.qwak.builds.build_url_pb2 import BuildVersioningUrlParams
40
+ from _qwak_proto.qwak.builds.build_url_pb2 import (
41
+ BuildVersioningUrlParams,
42
+ BuildVersioningTagsType,
43
+ )
24
44
  from _qwak_proto.qwak.builds.builds_orchestrator_service_pb2 import (
25
45
  BuildModelRequest,
26
46
  CancelBuildModelRequest,
@@ -45,10 +65,30 @@ from qwak.inner.di_configuration import QwakContainer
45
65
  from qwak.inner.tool.grpc.grpc_try_wrapping import grpc_try_catch_wrapper
46
66
 
47
67
 
68
+ @dataclass
69
+ class FrameworkModelDataClass:
70
+ pass
71
+
72
+
73
+ @dataclass
74
+ class HuggingModelDataClass(FrameworkModelDataClass):
75
+ models_name_to_versions: Dict[str, List[str]]
76
+ repository: Optional[str] = None
77
+
78
+
79
+ @dataclass
80
+ class HuggingFaceModel(FrameworkModelDataClass):
81
+ model_name: str
82
+ version: str
83
+ repository: str
84
+ sha1: str
85
+
86
+
48
87
  class BuildOrchestratorClient:
49
88
  def __init__(self, grpc_channel=Provide[QwakContainer.core_grpc_channel]):
50
89
  self._builds_orchestrator_stub_build_api = BuildAPIStub(grpc_channel)
51
90
  self._builds_orchestrator_stub = BuildsOrchestratorServiceStub(grpc_channel)
91
+ self._build_settings_stub = BuildSettingsApiStub(grpc_channel)
52
92
 
53
93
  @grpc_try_catch_wrapper("Failed to update build status")
54
94
  def update_build_status(
@@ -86,6 +126,61 @@ class BuildOrchestratorClient:
86
126
  request
87
127
  )
88
128
 
129
+ @grpc_try_catch_wrapper("Failed to save framework models")
130
+ def save_framework_models(
131
+ self, build_id: str, frameworks_model_data_class: List[FrameworkModelDataClass]
132
+ ) -> SaveFrameworkModelsResponse:
133
+ framework_models = []
134
+ for framework_model_data_class in frameworks_model_data_class:
135
+ if isinstance(framework_model_data_class, HuggingModelDataClass):
136
+ for (
137
+ huggingface_model_name,
138
+ versions,
139
+ ) in framework_model_data_class.models_name_to_versions.items():
140
+ for version in versions:
141
+ framework_models.append(
142
+ FrameworkModel(
143
+ huggingface_model_spec=HuggingFaceModelSpec(
144
+ version=version,
145
+ model_name=huggingface_model_name,
146
+ repository=framework_model_data_class.repository,
147
+ )
148
+ )
149
+ )
150
+
151
+ request = SaveFrameworkModelsRequest(
152
+ spec=FrameworkModelsSpec(
153
+ build_id=build_id, framework_models=framework_models
154
+ )
155
+ )
156
+
157
+ return self._builds_orchestrator_stub_build_api.SaveFrameworkModels(request)
158
+
159
+ @grpc_try_catch_wrapper("Failed to save framework models")
160
+ def save_used_framework_models(
161
+ self, build_id: str, models: List[HuggingFaceModel]
162
+ ) -> SaveFrameworkModelsResponse:
163
+ framework_models = []
164
+ for model in models:
165
+ if isinstance(model, HuggingFaceModel):
166
+ framework_models.append(
167
+ FrameworkModel(
168
+ huggingface_model_spec=HuggingFaceModelSpec(
169
+ version=model.version,
170
+ model_name=model.model_name,
171
+ sha1=model.sha1,
172
+ repository=model.repository,
173
+ )
174
+ )
175
+ )
176
+ request = SaveFrameworkModelsRequest(
177
+ spec=FrameworkModelsSpec(
178
+ build_id=build_id, framework_models=framework_models
179
+ )
180
+ )
181
+
182
+ return self._builds_orchestrator_stub_build_api.SaveFrameworkModels(request)
183
+
89
184
  @grpc_try_catch_wrapper("Failed to register tags")
90
185
  def register_tags(
91
186
  self,
@@ -126,7 +221,11 @@ class BuildOrchestratorClient:
126
221
 
127
222
  @grpc_try_catch_wrapper("Failed to get build versioning upload url")
128
223
  def get_build_versioning_upload_url(
129
- self, build_id: str, model_id: str, tag: str
224
+ self,
225
+ build_id: str,
226
+ model_id: str,
227
+ tag: str,
228
+ tag_type: BuildVersioningTagsType = BuildVersioningTagsType.INVALID_TAG_TYPE,
130
229
  ) -> GetBuildVersioningUploadURLResponse:
131
230
  """Get Upload pre signed url
132
231
 
@@ -134,37 +233,81 @@ class BuildOrchestratorClient:
134
233
  model_id: Model ID
135
234
  build_id: Build ID
136
235
  tag: the tag to save the artifact by
236
+ tag_type: the type of the file to upload
137
237
 
138
238
  Returns:
139
- the pre signed upload url
239
+ the upload url
140
240
  """
141
241
  return self._builds_orchestrator_stub.GetBuildVersioningUploadURL(
142
242
  GetBuildVersioningUploadURLRequest(
143
243
  params=BuildVersioningUrlParams(
144
- build_id=build_id, model_id=model_id, tag=tag
244
+ build_id=build_id,
245
+ model_id=model_id,
246
+ tag=tag,
247
+ tag_type=tag_type,
145
248
  )
146
249
  )
147
250
  )
148
251
 
149
- @grpc_try_catch_wrapper("Failed to create download url")
150
252
  def get_build_versioning_download_url(
151
- self, build_id: str, model_id: str, tag: str
253
+ self,
254
+ build_id: str,
255
+ model_id: str,
256
+ tag: str,
257
+ tag_type: BuildVersioningTagsType = BuildVersioningTagsType.INVALID_TAG_TYPE,
152
258
  ) -> GetBuildVersioningDownloadURLResponse:
153
- """Get Download pre signed url
259
+ """Get Download url
154
260
 
155
261
  Args:
156
262
  model_id: Model ID
157
263
  build_id: Build ID
158
264
  tag: the tag to save the artifact by
265
+ tag_type: the type of the file to download
159
266
 
160
267
  Returns:
161
268
  the pre signed download url
162
269
  """
163
- return self._builds_orchestrator_stub.GetBuildVersioningDownloadURL(
164
- GetBuildVersioningDownloadURLRequest(
165
- params=BuildVersioningUrlParams(
166
- build_id=build_id, model_id=model_id, tag=tag
270
+ try:
271
+ return self._builds_orchestrator_stub.GetBuildVersioningDownloadURL(
272
+ GetBuildVersioningDownloadURLRequest(
273
+ params=BuildVersioningUrlParams(
274
+ build_id=build_id, model_id=model_id, tag=tag, tag_type=tag_type
275
+ )
276
+ )
277
+ )
278
+ except grpc.RpcError as e:
279
+ if e.code() == grpc.StatusCode.NOT_FOUND:
280
+ print(
281
+ "The specified file cannot be found. Please verify the file name before trying again"
282
+ )
283
+ raise QwakException(
284
+ "The specified file cannot be found. Please verify the file name before trying again"
285
+ )
286
+ else:
287
+ print(f"Failed to get build versioning download url. Error is {e}")
288
+ raise QwakException(
289
+ f"The specified file cannot be loaded. Error is {e}"
167
290
  )
291
+
292
+ except Exception as e:
293
+ print(f"Failed to get build versioning download url. Error is {e}")
294
+ raise QwakException(
295
+ f"Failed to get build versioning download url. Error is {e}"
296
+ )
297
+
298
+ @grpc_try_catch_wrapper("Failed to get build settings")
299
+ def get_build_settings(self, environment_id: str) -> GetBuildSettingsResponse:
300
+ """Get BuildSettings
301
+
302
+ Args:
303
+ environment_id: Environment ID
304
+
305
+ Returns:
306
+ the build settings by the environment ID
307
+ """
308
+ return self._build_settings_stub.GetBuildSettings(
309
+ GetBuildSettingsRequest(
310
+ environment_id=environment_id,
168
311
  )
169
312
  )
170
313
 
@@ -1,8 +1,12 @@
1
1
  from typing import Optional
2
2
 
3
3
  import grpc
4
- from _qwak_proto.qwak.data_versioning.data_versioning_pb2 import DataTagSpec
4
+ from _qwak_proto.qwak.data_versioning.data_versioning_pb2 import (
5
+ DataTagFilter,
6
+ DataTagSpec,
7
+ )
5
8
  from _qwak_proto.qwak.data_versioning.data_versioning_service_pb2 import (
9
+ GetModelDataTagsRequest,
6
10
  RegisterDataTagRequest,
7
11
  )
8
12
  from _qwak_proto.qwak.data_versioning.data_versioning_service_pb2_grpc import (
@@ -55,3 +59,17 @@ class DataVersioningManagementClient:
55
59
  raise QwakException(
56
60
  f"Failed to register data tag, error is {e.details()}"
57
61
  )
62
+
63
+ def get_model_data_tags(
64
+ self, model_id: str, build_id: str, data_tag_filter: DataTagFilter = None
65
+ ):
66
+ try:
67
+ return self._data_management_service.GetModelDataTags(
68
+ GetModelDataTagsRequest(
69
+ model_id=model_id, build_id=build_id, filter=data_tag_filter
70
+ )
71
+ )
72
+ except grpc.RpcError as e:
73
+ raise QwakException(
74
+ f"Failed to list model data tags, error is {e.details()}"
75
+ )
@@ -0,0 +1,32 @@
1
+ from dataclasses import dataclass, field
2
+ from enum import Enum
3
+
4
+ from _qwak_proto.qwak.data_versioning.data_versioning_pb2 import (
5
+ DataTagFilter as DataTagFilterProto,
6
+ )
7
+
8
+
9
+ class DataTagFilerType(Enum):
10
+ DATA_TAG_FILTER_TYPE_INVALID = 0
11
+ DATA_TAG_FILTER_TYPE_CONTAINS = 1
12
+ DATA_TAG_FILTER_TYPE_PREFIX = 2
13
+
14
+
15
+ @dataclass
16
+ class DataTagFilter:
17
+ value: str = field(default=None)
18
+ type: DataTagFilerType = field(
19
+ default=DataTagFilerType.DATA_TAG_FILTER_TYPE_INVALID
20
+ )
21
+
22
+ def to_proto(self):
23
+ if self.type is DataTagFilerType.DATA_TAG_FILTER_TYPE_CONTAINS:
24
+ return DataTagFilterProto(
25
+ tag_contains=self.value,
26
+ )
27
+ elif self.type is DataTagFilerType.DATA_TAG_FILTER_TYPE_PREFIX:
28
+ return DataTagFilterProto(
29
+ tag_prefix=self.value,
30
+ )
31
+ else:
32
+ return None
@@ -22,6 +22,8 @@ from _qwak_proto.qwak.deployment.deployment_service_pb2 import (
22
22
  UndeployModelRequest,
23
23
  UpdateDeploymentRuntimeSettingsRequest,
24
24
  UpdateDeploymentRuntimeSettingsResponse,
25
+ GetDeploymentHistoryRequest,
26
+ GetDeploymentHistoryResponse,
25
27
  )
26
28
  from _qwak_proto.qwak.deployment.deployment_service_pb2_grpc import (
27
29
  DeploymentManagementServiceStub,
@@ -172,3 +174,15 @@ class DeploymentManagementClient:
172
174
  raise QwakException(
173
175
  f"Failed to apply model traffic, error is {e.details()}"
174
176
  )
177
+
178
+ def get_deployment_history(
179
+ self, model_uuid: str = None, build_id: str = None
180
+ ) -> GetDeploymentHistoryResponse:
181
+ try:
182
+ return self.deployment_management.GetDeploymentHistory(
183
+ GetDeploymentHistoryRequest(model_uuid=model_uuid, build_id=build_id)
184
+ )
185
+ except grpc.RpcError as e:
186
+ raise QwakException(
187
+ f"Failed to get deployment history, error is {e.details()}"
188
+ )
@@ -1,4 +1,7 @@
1
1
  from _qwak_proto.qwak.execution.v1.backfill_pb2 import BackfillSpec
2
+ from _qwak_proto.qwak.execution.v1.streaming_aggregation_pb2 import (
3
+ StreamingAggregationBackfillIngestion,
4
+ )
2
5
  from _qwak_proto.qwak.execution.v1.batch_pb2 import BatchIngestion
3
6
  from _qwak_proto.qwak.execution.v1.execution_service_pb2 import (
4
7
  GetExecutionEntryRequest,
@@ -9,6 +12,8 @@ from _qwak_proto.qwak.execution.v1.execution_service_pb2 import (
9
12
  TriggerBackfillResponse,
10
13
  TriggerBatchFeaturesetRequest,
11
14
  TriggerBatchFeaturesetResponse,
15
+ TriggerStreamingAggregationBackfillRequest,
16
+ TriggerStreamingAggregationBackfillResponse,
12
17
  )
13
18
  from _qwak_proto.qwak.execution.v1.execution_service_pb2_grpc import (
14
19
  FeatureStoreExecutionServiceStub,
@@ -29,6 +34,29 @@ class ExecutionManagementClient:
29
34
  grpc_channel
30
35
  )
31
36
 
37
+ def trigger_streaming_aggregation_backfill(
38
+ self, backfill_ingestion: StreamingAggregationBackfillIngestion
39
+ ) -> TriggerStreamingAggregationBackfillResponse:
40
+ """
41
+ Receives a configured streaming aggregation backfill proto and triggers a streaming aggregation
42
+ backfill against the execution manager
43
+
44
+ Args:
45
+ backfill_ingestion (StreamingAggregationBackfillIngestion): A protobuf message
46
+ containing the backfill specification details
47
+
48
+ Returns:
49
+ TriggerStreamingAggregationBackfillResponse: response object from the execution manager
50
+ """
51
+ try:
52
+ return self._feature_store_execution_service.TriggerStreamingAggregationBackfill(
53
+ TriggerStreamingAggregationBackfillRequest(backfill=backfill_ingestion)
54
+ )
55
+ except RpcError as e:
56
+ raise QwakException(
57
+ f"Failed to trigger streaming aggregation backfill job, error encountered {e}"
58
+ )
59
+
32
60
  def trigger_batch_backfill(
33
61
  self, batch_backfill_spec: BackfillSpec
34
62
  ) -> TriggerBackfillResponse: