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,16 +1,17 @@
1
- import ast
2
1
  import functools
3
2
  import inspect
4
3
  from dataclasses import dataclass
5
4
  from datetime import datetime
6
5
  from inspect import Signature
7
- from typing import TYPE_CHECKING, Dict, List, Optional, Union
8
-
9
- from _qwak_proto.qwak.features_operator.v3.features_operator_async_service_pb2 import (
10
- FeatureSetValidationOptions as ProtoFeatureSetValidationOptions,
6
+ from typing import TYPE_CHECKING, Dict, List, Optional, Tuple, Union
7
+
8
+ from qwak.feature_store._common.artifact_utils import ArtifactSpec, ArtifactsUploader
9
+ from qwak.feature_store._common.feature_set_utils import get_batch_source_for_featureset
10
+ from qwak.feature_store.feature_sets._utils._featureset_utils import FeaturesetUtils
11
+ from qwak.feature_store.feature_sets.base_feature_set import BaseFeatureSet
12
+ from qwak.feature_store.validations.validation_options import (
13
+ FeatureSetValidationOptions,
11
14
  )
12
- from qwak.feature_store._common.functions import print_validation_outputs
13
- from qwak.feature_store.validation_options import FeatureSetValidationOptions
14
15
 
15
16
  if TYPE_CHECKING:
16
17
  try:
@@ -27,26 +28,23 @@ from _qwak_proto.qwak.feature_store.features.feature_set_types_pb2 import (
27
28
  FeatureSetBatchSource as ProtoFeatureSetBatchSource,
28
29
  FeatureSetType as ProtoFeatureSetType,
29
30
  )
30
- from _qwak_proto.qwak.features_operator.v3.features_operator_pb2 import (
31
- ValidationSuccessResponse,
32
- )
33
- from qwak.clients.feature_store import FeatureRegistryClient
34
- from qwak.clients.feature_store.operator_client import FeaturesOperatorClient
35
- from qwak.exceptions import QwakException
36
31
  from qwak.feature_store.entities.entity import Entity
37
32
  from qwak.feature_store.feature_sets.backfill import Backfill
38
33
  from qwak.feature_store.feature_sets.context import Context
39
34
  from qwak.feature_store.feature_sets.execution_spec import ClusterTemplate
40
- from qwak.feature_store.feature_sets.metadata import Metadata
35
+ from qwak.feature_store.feature_sets.metadata import (
36
+ Metadata,
37
+ get_metadata_from_function,
38
+ set_metadata_on_function,
39
+ )
41
40
  from qwak.feature_store.feature_sets.read_policies import ReadPolicy, ReadPolicyABC
42
- from qwak.feature_store.feature_sets.transformations import BatchTransformation
41
+ from qwak.feature_store.feature_sets.transformations import BaseTransformation
43
42
  from typeguard import typechecked
44
43
 
45
44
  # decorator attributes
46
45
  _BACKFILL_POLICY_ATTRIBUTE = "_qwak_backfill_policy"
47
46
  _EXECUTION_SPECIFICATION_ATTRIBUTE = "_qwak_execution_specification"
48
47
  _SCHEDULING_POLICY_ATTRIBUTE = "_qwak_scheduling_policy"
49
- _METADATA_ATTRIBUTE = "_qwak_metadata"
50
48
 
51
49
  # Default timestamp column name for TimeFrame
52
50
  _DEFAULT_TIMEFRAME_TS_COL_NAME = "qwak_window_end_ts"
@@ -54,16 +52,20 @@ _DEFAULT_TIMEFRAME_TS_COL_NAME = "qwak_window_end_ts"
54
52
 
55
53
  def feature_set(
56
54
  *,
57
- entity: str,
58
55
  data_sources: Union[Dict[str, ReadPolicyABC], List[str]],
59
56
  timestamp_column_name: str = None,
60
57
  name: str = None,
58
+ entity: Optional[str] = None,
59
+ key: Optional[str] = None,
60
+ repository: Optional[str] = None,
61
61
  ):
62
62
  """
63
63
  Define a batch scheduled feature set. Default scheduling policy is every 4 hours.
64
64
 
65
65
  :param name: The name of the feature set. If not defined, taken from the function name
66
- :type entity: a string reference to a Qwak entity, or the entity definition itself
66
+ :param entity: a string reference to a Qwak entity, or the entity definition itself.
67
+ Only one of, entity or key, can be provided.
68
+ :param key: a column name in the feature set which is the key. Only one of, entity or key, can be provided.
67
69
  :param data_sources: a string reference to a Qwak data source, or the data source definition itself
68
70
  :param timestamp_column_name: Timestamp column the feature set should consider when ingesting records.
69
71
  If more than one data source is specified - the field is mandatory. If only one data source is specified - the
@@ -71,11 +73,17 @@ def feature_set(
71
73
 
72
74
  Example:
73
75
 
74
- .. code-block:: python
76
+ ... code-block:: python
75
77
  @batch.feature_set(entity="users", data_sources=["snowflake_users_table"])
76
78
  def user_features():
77
79
  return SparkSqlTransformation("SELECT user_id, age FROM data_source")
78
80
 
81
+ Example with key:
82
+
83
+ ... code-block:: python
84
+ @batch.feature_set(key="user_id", data_sources=["snowflake_users_table"])
85
+ def user_features():
86
+ return SparkSqlTransformation("SELECT user_id, age FROM data_source")
79
87
  """
80
88
 
81
89
  def decorator(function):
@@ -84,28 +92,25 @@ def feature_set(
84
92
  user_transformation = function(context=Context())
85
93
  else:
86
94
  user_transformation = function()
87
- if not isinstance(user_transformation, BatchTransformation):
88
- raise ValueError(
89
- "Function must return a valid batch transformation function"
90
- )
95
+
96
+ FeaturesetUtils.validate_base_featureset_decorator(
97
+ user_transformation=user_transformation, entity=entity, key=key
98
+ )
91
99
 
92
100
  fs_name = name or function.__name__
93
- batch_feature_set = BatchFeatureSetV1(
101
+ batch_feature_set = BatchFeatureSet(
94
102
  name=fs_name,
95
- entity=entity,
103
+ entity=entity if entity else None,
104
+ key=key if key else None,
105
+ repository=repository if repository else None,
96
106
  data_sources=data_sources,
97
107
  timestamp_column_name=timestamp_column_name,
98
108
  transformation=user_transformation,
99
109
  scheduling_policy=getattr(
100
110
  function, _SCHEDULING_POLICY_ATTRIBUTE, "0 */4 * * *"
101
111
  ),
102
- metadata=getattr(
103
- function,
104
- _METADATA_ATTRIBUTE,
105
- Metadata(
106
- description=fs_name,
107
- display_name=fs_name,
108
- ),
112
+ metadata=get_metadata_from_function(
113
+ function, description=fs_name, display_name=fs_name
109
114
  ),
110
115
  cluster_template=getattr(
111
116
  function,
@@ -147,7 +152,7 @@ def scheduling(*, cron_expression: Optional[str]):
147
152
 
148
153
  Example:
149
154
 
150
- .. code-block:: python
155
+ ... code-block:: python
151
156
 
152
157
  @batch.feature_set(entity="users", data_sources=["snowflake_users_table"])
153
158
  @batch.scheduling(cron_expression="0 8 * * *")
@@ -167,17 +172,23 @@ def scheduling(*, cron_expression: Optional[str]):
167
172
 
168
173
 
169
174
  @typechecked
170
- def metadata(*, owner: str, description: str, display_name: str):
175
+ def metadata(
176
+ *,
177
+ owner: Optional[str] = None,
178
+ description: Optional[str] = None,
179
+ display_name: Optional[str] = None,
180
+ version_comment: Optional[str] = None,
181
+ ):
171
182
  """
172
183
  Sets additional user provided metadata
173
184
 
174
185
  :param owner: feature set owner
175
186
  :param description: General description of the feature set
176
187
  :param display_name: Human readable name of the feature set
177
-
188
+ :param version_comment: Comment which describes the version
178
189
  Example:
179
190
 
180
- .. code-block:: python
191
+ ... code-block:: python
181
192
 
182
193
  @batch.feature_set(entity="users", data_sources=["snowflake_users_table"])
183
194
  @batch.metadata(
@@ -192,10 +203,12 @@ def metadata(*, owner: str, description: str, display_name: str):
192
203
 
193
204
  def decorator(user_transformation):
194
205
  _validate_decorator_ordering(user_transformation)
195
- setattr(
196
- user_transformation,
197
- _METADATA_ATTRIBUTE,
198
- Metadata(owner=owner, description=description, display_name=display_name),
206
+ set_metadata_on_function(
207
+ function=user_transformation,
208
+ owner=owner,
209
+ description=description,
210
+ display_name=display_name,
211
+ version_comment=version_comment,
199
212
  )
200
213
 
201
214
  return user_transformation
@@ -216,7 +229,7 @@ def backfill(
216
229
 
217
230
  Example:
218
231
 
219
- .. code-block:: python
232
+ ... code-block:: python
220
233
  @batch.feature_set(entity="users", data_sources=["snowflake_users_table"])
221
234
  @batch.backfill(start_date=datetime(2022, 1, 1))
222
235
  def user_features():
@@ -240,7 +253,7 @@ def backfill(
240
253
  @typechecked
241
254
  def execution_specification(
242
255
  *,
243
- cluster_template: ClusterTemplate = None,
256
+ cluster_template: ClusterTemplate,
244
257
  ):
245
258
  """
246
259
  Set the execution specification of the cluster running the feature set
@@ -249,7 +262,7 @@ def execution_specification(
249
262
 
250
263
  Cluster template example:
251
264
 
252
- .. code-block:: python
265
+ ... code-block:: python
253
266
  @batch.feature_set(entity="users", data_sources=["snowflake_users_table"])
254
267
  @batch.execution_specification(cluster_template=ClusterTemplate.MEDIUM)
255
268
  def user_features():
@@ -269,50 +282,26 @@ def execution_specification(
269
282
 
270
283
 
271
284
  def _validate_decorator_ordering(user_transformation):
272
- if isinstance(user_transformation, BatchFeatureSetV1):
285
+ if isinstance(user_transformation, BatchFeatureSet):
273
286
  raise ValueError(
274
- "Wrong decorator ordering - @batch.feature_set should be to top most decorator"
287
+ "Wrong decorator ordering - @batch.feature_set should be the top most decorator"
275
288
  )
276
289
 
277
290
 
278
291
  @dataclass
279
- class BatchFeatureSetV1:
280
- name: str
281
- entity: str
282
- data_sources: List[str]
283
- timestamp_column_name: str = None
284
- scheduling_policy: str = None
285
- transformation: BatchTransformation = None
286
- metadata: Metadata = None
292
+ class BatchFeatureSet(BaseFeatureSet):
293
+ timestamp_column_name: str = str()
294
+ scheduling_policy: str = str()
295
+ transformation: Optional[BaseTransformation] = None
296
+ metadata: Optional[Metadata] = None
287
297
  cluster_template: Optional[ClusterTemplate] = None
288
298
  backfill: Optional[Backfill] = None
289
- __instance_module_path__: Optional[str] = None
290
-
291
- def _get_entity_definition(self, feature_registry):
292
- feature_set_entity = feature_registry.get_entity_by_name(self.entity)
293
- if not feature_set_entity:
294
- raise QwakException(
295
- f"Trying to register a feature set with a non existing entity -: {self.entity}"
296
- )
297
- return feature_set_entity.entity.entity_definition
298
299
 
299
- def _get_batch_source(self, batch_ds_name, feature_registry):
300
- batch_ds = feature_registry.get_data_source_by_name(batch_ds_name)
301
- if not batch_ds:
302
- raise QwakException(
303
- f"Trying to register a feature set with a non registered data source -: {batch_ds_name}"
304
- )
305
-
306
- ds_spec = batch_ds.data_source.data_source_definition.data_source_spec
307
- if ds_spec.WhichOneof("type") != "batch_source":
308
- raise ValueError(
309
- f"Can only register batch feature sets with batch sources. Source {batch_ds_name} is of type {ds_spec.WhichOneof('type')}"
310
- )
311
-
312
- return ds_spec.batch_source
300
+ def __post_init__(self):
301
+ self._validate()
313
302
 
314
303
  @classmethod
315
- def from_proto(cls, proto: FeatureSetSpec):
304
+ def _from_proto(cls, proto: FeatureSetSpec):
316
305
  batch_v1_def = proto.feature_set_type.batch_feature_set_v1
317
306
 
318
307
  return cls(
@@ -321,16 +310,18 @@ class BatchFeatureSetV1:
321
310
  data_sources=[
322
311
  ds.data_source.name for ds in batch_v1_def.feature_set_batch_sources
323
312
  ],
313
+ repository=proto.featureset_repository_name,
324
314
  timestamp_column_name=batch_v1_def.timestamp_column_name,
325
315
  scheduling_policy=batch_v1_def.scheduling_policy,
326
- transformation=BatchTransformation._from_proto(batch_v1_def.transformation),
316
+ transformation=BaseTransformation._from_proto(batch_v1_def.transformation),
327
317
  metadata=Metadata.from_proto(proto.metadata),
328
- cluster_template=ClusterTemplate.from_proto(batch_v1_def.execution_spec),
318
+ cluster_template=ClusterTemplate.from_cluster_template_number(
319
+ batch_v1_def.execution_spec.cluster_template
320
+ ),
329
321
  backfill=Backfill.from_proto(batch_v1_def.backfill),
330
322
  )
331
323
 
332
324
  def _get_data_sources(self, feature_registry) -> List[ProtoFeatureSetBatchSource]:
333
- actual_data_sources = {}
334
325
  if isinstance(self.data_sources, list):
335
326
  actual_data_sources = {
336
327
  ds_name: ReadPolicy.NewOnly for ds_name in self.data_sources
@@ -340,10 +331,12 @@ class BatchFeatureSetV1:
340
331
 
341
332
  return [
342
333
  ProtoFeatureSetBatchSource(
343
- data_source=self._get_batch_source(ds, feature_registry),
344
- read_policy=read_policy().to_proto()
345
- if inspect.isclass(read_policy)
346
- else read_policy.to_proto(),
334
+ data_source=get_batch_source_for_featureset(ds, feature_registry),
335
+ read_policy=(
336
+ read_policy().to_proto()
337
+ if inspect.isclass(read_policy)
338
+ else read_policy.to_proto()
339
+ ),
347
340
  )
348
341
  for ds, read_policy in actual_data_sources.items()
349
342
  ]
@@ -370,38 +363,60 @@ class BatchFeatureSetV1:
370
363
  # if we got here - only one data source is defined
371
364
  return data_sources[0].data_source.date_created_column
372
365
 
366
+ def _validate(self):
367
+ super()._validate()
368
+
373
369
  def _to_proto(
374
370
  self,
375
371
  git_commit,
376
372
  features,
377
373
  feature_registry,
378
- ) -> FeatureSetSpec:
374
+ artifact_url: Optional[str] = str(),
375
+ **kwargs,
376
+ ) -> Tuple[FeatureSetSpec, Optional[str]]:
377
+ self._validate()
378
+
379
379
  data_sources = self._get_data_sources(feature_registry)
380
380
 
381
- return FeatureSetSpec(
382
- name=self.name,
383
- metadata=self.metadata.to_proto(),
384
- git_commit=git_commit,
385
- features=features,
386
- entity=self._get_entity_definition(feature_registry),
387
- feature_set_type=ProtoFeatureSetType(
388
- batch_feature_set_v1=ProtoBatchFeatureSetV1(
389
- online_sink=True,
390
- offline_sink=True,
391
- timestamp_column_name=self._get_timestamp_column(data_sources),
392
- scheduling_policy=self.scheduling_policy,
393
- feature_set_batch_sources=data_sources,
394
- execution_spec=ProtoExecutionSpec(
395
- cluster_template=ClusterTemplate.to_proto(self.cluster_template)
396
- if self.cluster_template
397
- else None
398
- ),
399
- transformation=self.transformation._to_proto()
400
- if self.transformation
401
- else None,
402
- backfill=self.backfill.to_proto() if self.backfill else None,
403
- )
381
+ if not artifact_url:
382
+ artifact: Optional[ArtifactSpec] = ArtifactsUploader.get_artifact_spec(
383
+ self.transformation, self.name, self.__instance_module_path__
384
+ )
385
+ if artifact:
386
+ artifact_url = ArtifactsUploader.upload(artifact)
387
+
388
+ return (
389
+ FeatureSetSpec(
390
+ name=self.name,
391
+ metadata=self.metadata.to_proto(),
392
+ git_commit=git_commit,
393
+ features=features,
394
+ entity=self._get_entity_definition(feature_registry),
395
+ featureset_repository_name=self.repository,
396
+ feature_set_type=ProtoFeatureSetType(
397
+ batch_feature_set_v1=ProtoBatchFeatureSetV1(
398
+ online_sink=True,
399
+ offline_sink=True,
400
+ timestamp_column_name=self._get_timestamp_column(data_sources),
401
+ scheduling_policy=self.scheduling_policy,
402
+ feature_set_batch_sources=data_sources,
403
+ execution_spec=ProtoExecutionSpec(
404
+ cluster_template=(
405
+ ClusterTemplate.to_proto(self.cluster_template)
406
+ if self.cluster_template
407
+ else None
408
+ )
409
+ ),
410
+ transformation=(
411
+ self.transformation._to_proto(artifact_path=artifact_url)
412
+ if self.transformation
413
+ else None
414
+ ),
415
+ backfill=self.backfill.to_proto() if self.backfill else None,
416
+ )
417
+ ),
404
418
  ),
419
+ artifact_url,
405
420
  )
406
421
 
407
422
  def get_sample(
@@ -414,12 +429,12 @@ class BatchFeatureSetV1:
414
429
  and executing the transformation on that data.
415
430
 
416
431
  :param number_of_rows: number of rows requests
417
- :param validation_options: vlidation options
432
+ :param validation_options: validation options
418
433
  :returns Sample Pandas Dataframe
419
434
 
420
- Example:
435
+ Example with entity:
421
436
 
422
- .. code-block:: python
437
+ ... code-block:: python
423
438
  @batch.feature_set(entity="users", data_sources=["snowflake_users_table"])
424
439
  @batch.backfill(start_date=datetime(2022, 1, 1))
425
440
  def user_features():
@@ -432,47 +447,23 @@ class BatchFeatureSetV1:
432
447
  # 1 1 2021-01-01 12:00:00 51
433
448
  # 2 2 2021-01-02 12:00:00 66
434
449
  # 3 2 2021-01-01 18:00:00 34
435
- """
436
-
437
- """
438
- Fetches a sample of the Featureset transformation by loading requested sample of data from the data source
439
- and executing the transformation on that data.
440
- """
441
-
442
- try:
443
- import pandas as pd
444
- except ImportError:
445
- raise QwakException("Missing Pandas dependency required for getting sample")
446
450
 
447
- if 0 >= number_of_rows > 1000:
448
- raise ValueError(
449
- f"`number_rows` must be under 1000 and positive, got: {number_of_rows}"
450
- )
451
+ Example with key:
451
452
 
452
- operator_client = FeaturesOperatorClient()
453
- registry_client = FeatureRegistryClient()
454
-
455
- featureset_spec = self._to_proto(
456
- git_commit=None, features=None, feature_registry=registry_client
457
- )
458
- validation_options_proto: Optional[ProtoFeatureSetValidationOptions] = (
459
- validation_options.to_proto() if validation_options else None
460
- )
453
+ ... code-block:: python
454
+ @batch.feature_set(key="user_id", data_sources=["snowflake_users_table"])
455
+ @batch.backfill(start_date=datetime(2022, 1, 1))
456
+ def user_features():
457
+ return SparkSqlTransformation("SELECT user_id, age FROM data_source")
461
458
 
462
- result = operator_client.validate_featureset_blocking(
463
- featureset_spec=featureset_spec,
464
- resource_path=None,
465
- num_samples=number_of_rows,
466
- validation_options=validation_options_proto,
459
+ sample_features = user_features.get_sample()
460
+ print(sample_feature)
461
+ # user_id timestamp user_features.age
462
+ # 0 1 2021-01-02 17:00:00 23
463
+ # 1 1 2021-01-01 12:00:00 51
464
+ # 2 2 2021-01-02 12:00:00 66
465
+ # 3 2 2021-01-01 18:00:00 34
466
+ """
467
+ return super().get_sample(
468
+ number_of_rows=number_of_rows, validation_options=validation_options
467
469
  )
468
-
469
- response = getattr(result, result.WhichOneof("type"))
470
- if isinstance(response, ValidationSuccessResponse):
471
- print_validation_outputs(response)
472
-
473
- return pd.read_json(
474
- path_or_buf=ast.literal_eval(response.sample),
475
- dtype=response.spark_column_description,
476
- )
477
- else:
478
- raise QwakException(f"Sampling failed:\n{response}")
@@ -44,6 +44,12 @@ class ClusterTemplate(AutoName):
44
44
  ClusterTemplate._proto_to_cluster_template.value[proto.cluster_template]
45
45
  )
46
46
 
47
+ @classmethod
48
+ def from_cluster_template_number(cls, cluster_template_number: int):
49
+ return cls(
50
+ ClusterTemplate._proto_to_cluster_template.value[cluster_template_number]
51
+ )
52
+
47
53
  @staticmethod
48
54
  def to_proto(template):
49
55
  if not template:
@@ -2,22 +2,72 @@ from dataclasses import dataclass
2
2
 
3
3
  from _qwak_proto.qwak.feature_store.features.feature_set_pb2 import (
4
4
  FeatureSetUserMetadata as ProtoMetadata,
5
+ FeaturesetVersionUserMetadata as ProtoFeaturesetVersionUserMetadata,
5
6
  )
6
7
 
8
+ _METADATA_ATTRIBUTE = "_qwak_metadata"
9
+
10
+
11
+ def set_metadata_on_function(
12
+ function,
13
+ owner: str = "",
14
+ description: str = "",
15
+ display_name: str = "",
16
+ version_comment="",
17
+ ):
18
+ setattr(
19
+ function,
20
+ _METADATA_ATTRIBUTE,
21
+ Metadata(
22
+ owner=owner,
23
+ description=description,
24
+ display_name=display_name,
25
+ version_comment=version_comment,
26
+ ),
27
+ )
28
+
29
+
30
+ def get_metadata_from_function(
31
+ function,
32
+ owner: str = "",
33
+ description: str = "",
34
+ display_name: str = "",
35
+ version_comment="",
36
+ ):
37
+ return getattr(
38
+ function,
39
+ _METADATA_ATTRIBUTE,
40
+ Metadata(
41
+ owner=owner,
42
+ description=description,
43
+ display_name=display_name,
44
+ version_comment=version_comment,
45
+ ),
46
+ )
47
+
7
48
 
8
49
  @dataclass
9
50
  class Metadata:
10
51
  owner: str = ""
11
52
  description: str = ""
12
53
  display_name: str = ""
54
+ version_comment: str = ""
13
55
 
14
56
  @staticmethod
15
57
  def from_proto(metadata: ProtoMetadata):
16
- return Metadata(metadata.owner, metadata.description, metadata.display_name)
58
+ return Metadata(
59
+ owner=metadata.owner,
60
+ description=metadata.description,
61
+ display_name=metadata.display_name,
62
+ version_comment=metadata.featureset_version_user_metadata.comment,
63
+ )
17
64
 
18
65
  def to_proto(self):
19
66
  return ProtoMetadata(
20
67
  owner=self.owner,
21
68
  description=self.description,
22
69
  display_name=self.display_name,
70
+ featureset_version_user_metadata=ProtoFeaturesetVersionUserMetadata(
71
+ comment=self.version_comment
72
+ ),
23
73
  )