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
@@ -0,0 +1,125 @@
1
+ from abc import ABC, abstractmethod
2
+ from dataclasses import dataclass, field
3
+ from pathlib import Path
4
+ from typing import TYPE_CHECKING, Optional, Tuple
5
+
6
+ from _qwak_proto.qwak.feature_store.sources.data_source_pb2 import (
7
+ DataSourceSpec as ProtoDataSourceSpec,
8
+ )
9
+ from _qwak_proto.qwak.feature_store.v1.internal.data_source.data_source_service_pb2 import (
10
+ GetDataSourceSourceCodeUploadResponse,
11
+ )
12
+ from qwak.clients.feature_store import FeatureRegistryClient
13
+ from qwak.exceptions import QwakException
14
+ from qwak.feature_store._common.artifact_utils import ArtifactSpec, ArtifactsUploader
15
+ from qwak.feature_store._common.source_code_spec import SourceCodeSpec
16
+ from qwak.feature_store._common.source_code_spec_factory import SourceCodeSpecFactory
17
+ from qwak.feature_store.data_sources.attributes import DataSourceAttributes
18
+ from qwak.feature_store.validations.validation_options import (
19
+ DataSourceValidationOptions,
20
+ )
21
+ from qwak.feature_store.validations.validation_response import SuccessValidationResponse
22
+
23
+ if TYPE_CHECKING:
24
+ try:
25
+ import pandas as pd
26
+ except ImportError:
27
+ pass
28
+
29
+
30
+ @dataclass
31
+ class BaseSource(ABC):
32
+ name: str
33
+ description: str
34
+ attributes: DataSourceAttributes = field(
35
+ init=False, default_factory=lambda: DataSourceAttributes()
36
+ )
37
+
38
+ @abstractmethod
39
+ def _to_proto(self, artifact_url: Optional[str] = None) -> ProtoDataSourceSpec:
40
+ """
41
+ Internal qwak function, converts this BaseSource instance to its protobuf representation.
42
+ Args:
43
+ artifact_url: provided if this base source artifact has already been uploaded
44
+ data_source_definition_path: path to the module instantiating this base source
45
+ """
46
+ pass
47
+
48
+ def _get_artifacts(self) -> Optional["ArtifactSpec"]:
49
+ return None
50
+
51
+ def _upload_artifact(self) -> Optional[str]:
52
+ artifact: Optional["ArtifactSpec"] = self._get_artifacts()
53
+ if artifact:
54
+ return ArtifactsUploader.upload(artifact)
55
+
56
+ def _prepare_and_get(
57
+ self,
58
+ artifact_url: Optional[str] = None,
59
+ source_definition_path: Optional[Path] = None,
60
+ ) -> Tuple[ProtoDataSourceSpec, Optional[str]]:
61
+ uploaded_artifact_url: Optional[str] = artifact_url
62
+
63
+ if not artifact_url:
64
+ uploaded_artifact_url = self._upload_artifact()
65
+
66
+ if source_definition_path:
67
+ code_upload_args: (
68
+ GetDataSourceSourceCodeUploadResponse
69
+ ) = FeatureRegistryClient().get_datasource_source_code_presign_url(
70
+ ds_name=self.name, repository_name=getattr(self, "repository")
71
+ )
72
+ source_code_spec: SourceCodeSpec = (
73
+ SourceCodeSpecFactory.get_zip_source_code_spec(
74
+ main_entity_path=source_definition_path,
75
+ url=code_upload_args.upload_url,
76
+ extra_headers=code_upload_args.extra_headers,
77
+ )
78
+ )
79
+
80
+ self.attributes = DataSourceAttributes(source_code_spec=source_code_spec)
81
+
82
+ proto_spec: ProtoDataSourceSpec = self._to_proto(
83
+ artifact_url=uploaded_artifact_url
84
+ )
85
+
86
+ proto_spec.MergeFrom(
87
+ ProtoDataSourceSpec(data_source_attributes=self.attributes._to_proto())
88
+ )
89
+
90
+ return proto_spec, uploaded_artifact_url
91
+
92
+ @classmethod
93
+ @abstractmethod
94
+ def _from_proto(cls, proto):
95
+ pass
96
+
97
+ def get_sample(
98
+ self,
99
+ number_of_rows: int = 10,
100
+ validation_options: Optional[DataSourceValidationOptions] = None,
101
+ ) -> "pd.DataFrame":
102
+ """
103
+ Tries to get a sample of length `number_rows` from the data source.
104
+ Args:
105
+ number_of_rows: number of rows to get from data source
106
+ validation_options: validation options
107
+ Returns:
108
+ A tuple containing the resulting dataframe and a tuple of the columns names and types.
109
+ (the types are pyspark dataframe types)
110
+ """
111
+ from qwak.feature_store.validations.validator import FeaturesOperatorValidator
112
+
113
+ v = FeaturesOperatorValidator()
114
+
115
+ response, _ = v.validate_data_source(
116
+ data_source=self,
117
+ sample_size=number_of_rows,
118
+ validation_options=validation_options,
119
+ silence_specific_exceptions=False,
120
+ )
121
+
122
+ if isinstance(response, SuccessValidationResponse):
123
+ return response.sample
124
+ else:
125
+ raise QwakException(f"Sampling failed: \n{response}")
File without changes
@@ -0,0 +1,9 @@
1
+ from abc import ABC
2
+ from dataclasses import dataclass
3
+
4
+ from qwak.feature_store.data_sources.base import BaseSource
5
+
6
+
7
+ @dataclass
8
+ class BaseBatchSource(BaseSource, ABC):
9
+ date_created_column: str
@@ -3,7 +3,7 @@ from dataclasses import dataclass
3
3
  from typing import Optional
4
4
 
5
5
  from qwak.exceptions import QwakException
6
- from qwak.feature_store.data_sources.batch_sources._batch import BaseBatchSource
6
+ from qwak.feature_store.data_sources.batch._batch import BaseBatchSource
7
7
 
8
8
 
9
9
  @dataclass
@@ -13,6 +13,7 @@ class JdbcSource(BaseBatchSource, ABC):
13
13
  url: Optional[str] = None
14
14
  db_table: Optional[str] = None
15
15
  query: Optional[str] = None
16
+ repository: Optional[str] = None
16
17
 
17
18
  def __post_init__(self):
18
19
  self._validate()
@@ -0,0 +1,260 @@
1
+ from dataclasses import dataclass
2
+ from typing import Optional
3
+
4
+ from _qwak_proto.qwak.feature_store.sources.batch_pb2 import (
5
+ AthenaSourceV1 as ProtoAthenaSourceV1,
6
+ AwsAssumeRoleAuthentication as ProtoAwsAssumeRoleAuthentication,
7
+ AwsAuthentication as ProtoAwsAuthentication,
8
+ AwsCredentialsAuthentication as ProtoAwsCredentialsAuthentication,
9
+ BatchSource as ProtoBatchSource,
10
+ DatePartitionColumns as ProtoDatePartitionColumns,
11
+ JdbcSource as ProtoJdbcSource,
12
+ TimeFragmentedPartitionColumns as ProtoTimeFragmentedPartitionColumns,
13
+ )
14
+ from _qwak_proto.qwak.feature_store.sources.data_source_pb2 import (
15
+ DataSourceSpec as ProtoDataSourceSpec,
16
+ )
17
+ from qwak.feature_store.data_sources.batch._jdbc import JdbcSource
18
+ from qwak.feature_store.data_sources.source_authentication import (
19
+ AwsAssumeRoleAuthentication,
20
+ AwsAuthentication,
21
+ AwsCredentialsAuthentication,
22
+ )
23
+ from qwak.feature_store.data_sources.time_partition_columns import (
24
+ ColumnRepresentation,
25
+ DatePartitionColumns,
26
+ DayFragmentColumn,
27
+ MonthFragmentColumn,
28
+ TimeFragmentedPartitionColumns,
29
+ TimePartitionColumns,
30
+ YearFragmentColumn,
31
+ )
32
+
33
+
34
+ @dataclass
35
+ class AthenaSource(JdbcSource):
36
+ aws_region: str = str()
37
+ s3_output_location: str = str()
38
+ aws_authentication: Optional[AwsAuthentication] = None
39
+ time_partition_columns: Optional[TimePartitionColumns] = None
40
+ workgroup: Optional[str] = None
41
+ repository: Optional[str] = None
42
+
43
+ def _validate(self):
44
+ super()._validate()
45
+
46
+ if self.aws_authentication is None:
47
+ raise AttributeError("`aws_authentication` must be set")
48
+
49
+ if not self.aws_region:
50
+ raise AttributeError("`aws_region` must be set")
51
+
52
+ if not self.s3_output_location and not self.workgroup:
53
+ raise AttributeError(
54
+ "At least one of: `s3_output_location`, `workgroup` must be set"
55
+ )
56
+
57
+ def _to_proto(self, artifact_url: Optional[str] = None):
58
+ proto_date_partition_columns = None
59
+ proto_time_fragment_partition_columns = None
60
+
61
+ if self.time_partition_columns:
62
+ proto_partition = self.time_partition_columns._to_proto()
63
+ if isinstance(proto_partition, ProtoDatePartitionColumns):
64
+ proto_date_partition_columns = proto_partition
65
+ elif isinstance(proto_partition, ProtoTimeFragmentedPartitionColumns):
66
+ proto_time_fragment_partition_columns = proto_partition
67
+ else:
68
+ raise ValueError(
69
+ f"Got an unsupported time partition column: {proto_partition}"
70
+ )
71
+
72
+ proto_aws_assume_role_authentication = None
73
+ proto_aws_static_credentials_authentication = None
74
+
75
+ proto_aws_authentication = self.aws_authentication._to_proto()
76
+ if isinstance(proto_aws_authentication, ProtoAwsAssumeRoleAuthentication):
77
+ proto_aws_assume_role_authentication = proto_aws_authentication
78
+ elif isinstance(proto_aws_authentication, ProtoAwsCredentialsAuthentication):
79
+ proto_aws_static_credentials_authentication = proto_aws_authentication
80
+
81
+ proto_auth: AwsAuthentication = ProtoAwsAuthentication(
82
+ aws_assume_role_authentication=proto_aws_assume_role_authentication,
83
+ aws_static_credentials_authentication=proto_aws_static_credentials_authentication,
84
+ )
85
+
86
+ return ProtoDataSourceSpec(
87
+ data_source_repository_name=self.repository,
88
+ batch_source=ProtoBatchSource(
89
+ name=self.name,
90
+ description=self.description,
91
+ date_created_column=self.date_created_column,
92
+ jdbcSource=ProtoJdbcSource(
93
+ url=self.url,
94
+ username_secret_name=self.username_secret_name,
95
+ password_secret_name=self.password_secret_name,
96
+ db_table=self.db_table,
97
+ query=self.query,
98
+ athenaSource=ProtoAthenaSourceV1(
99
+ aws_authentication=proto_auth,
100
+ date_partition_columns=proto_date_partition_columns,
101
+ time_fragmented_partition_columns=proto_time_fragment_partition_columns,
102
+ s3_output_location=self.s3_output_location,
103
+ aws_region=self.aws_region,
104
+ workgroup=self.workgroup,
105
+ ),
106
+ ),
107
+ ),
108
+ )
109
+
110
+ @classmethod
111
+ def _from_proto(cls, proto: ProtoBatchSource):
112
+ proto_jdbc_source: ProtoJdbcSource = proto.jdbcSource
113
+ proto_athena_source: ProtoAthenaSourceV1 = proto_jdbc_source.athenaSource
114
+
115
+ aws_authentication: AwsAuthentication = (
116
+ AthenaSource._extract_and_configure_aws_authentication(
117
+ proto_athena_source.aws_authentication
118
+ )
119
+ )
120
+
121
+ time_partition_columns: Optional[TimePartitionColumns] = (
122
+ AthenaSource._extract_partition_column(proto_athena_source)
123
+ )
124
+ workgroup: Optional[str] = (
125
+ proto_athena_source.workgroup
126
+ if proto_athena_source.HasField("workgroup")
127
+ else None
128
+ )
129
+
130
+ return cls(
131
+ name=proto.name,
132
+ date_created_column=proto.date_created_column,
133
+ description=proto.description,
134
+ password_secret_name=proto_jdbc_source.password_secret_name,
135
+ username_secret_name=proto_jdbc_source.username_secret_name,
136
+ db_table=proto_jdbc_source.db_table,
137
+ query=proto_jdbc_source.query,
138
+ aws_authentication=aws_authentication,
139
+ time_partition_columns=time_partition_columns,
140
+ aws_region=proto_athena_source.aws_region,
141
+ s3_output_location=proto_athena_source.s3_output_location,
142
+ workgroup=workgroup,
143
+ )
144
+
145
+ @staticmethod
146
+ def _extract_and_configure_aws_authentication(
147
+ proto_aws_authentication: ProtoAwsAuthentication,
148
+ ) -> AwsAuthentication:
149
+ auth_type = proto_aws_authentication.WhichOneof("type")
150
+
151
+ if auth_type == "aws_static_credentials_authentication":
152
+ proto_aws_authentication = (
153
+ AthenaSource._extract_and_configure_aws_credentials_auth(
154
+ proto_aws_authentication.aws_static_credentials_authentication
155
+ )
156
+ )
157
+ elif auth_type == "aws_assume_role_authentication":
158
+ proto_aws_authentication = AthenaSource._extract_aws_assume_role_auth(
159
+ proto_aws_authentication.aws_assume_role_authentication
160
+ )
161
+ else:
162
+ raise ValueError(
163
+ f"Got an unsupported aws authentication method: {proto_aws_authentication}"
164
+ )
165
+
166
+ return proto_aws_authentication
167
+
168
+ @staticmethod
169
+ def _extract_and_configure_aws_credentials_auth(
170
+ proto_aws_creds: ProtoAwsCredentialsAuthentication,
171
+ ) -> AwsCredentialsAuthentication:
172
+ return AwsCredentialsAuthentication(
173
+ access_key_secret_name=proto_aws_creds.access_key_secret_name,
174
+ secret_key_secret_name=proto_aws_creds.secret_key_secret_name,
175
+ )
176
+
177
+ @staticmethod
178
+ def _extract_aws_assume_role_auth(
179
+ proto_aws_assume_role: ProtoAwsAssumeRoleAuthentication,
180
+ ) -> AwsAssumeRoleAuthentication:
181
+ return AwsAssumeRoleAuthentication(
182
+ role_arn=proto_aws_assume_role.role_arn,
183
+ )
184
+
185
+ @staticmethod
186
+ def _extract_partition_column(
187
+ proto_athena_source: ProtoAthenaSourceV1,
188
+ ) -> Optional[TimePartitionColumns]:
189
+ if proto_athena_source.HasField("time_partition_columns"):
190
+ partition_cols_type = proto_athena_source.WhichOneof(
191
+ "time_partition_columns"
192
+ )
193
+
194
+ if partition_cols_type == "date_partition_columns":
195
+ res = DatePartitionColumns(
196
+ date_column_name=proto_athena_source.date_partition_columns.date_column_name,
197
+ date_format=proto_athena_source.date_partition_columns.date_format,
198
+ )
199
+ elif partition_cols_type == "time_fragmented_partition_columns":
200
+ year_rep = AthenaSource._extract_column_representation(
201
+ proto_athena_source.time_fragmented_partition_columns.year_partition_column
202
+ )
203
+
204
+ year_fragment_col = YearFragmentColumn(
205
+ column_name=proto_athena_source.time_fragmented_partition_columns.year_partition_column.column_name,
206
+ representation=year_rep,
207
+ )
208
+
209
+ month_fragment_col = None
210
+ if proto_athena_source.time_fragmented_partition_columns.HasField(
211
+ "month_partition_column"
212
+ ):
213
+ month_rep = AthenaSource._extract_column_representation(
214
+ proto_athena_source.time_fragmented_partition_columns.month_partition_column
215
+ )
216
+
217
+ month_fragment_col = MonthFragmentColumn(
218
+ column_name=proto_athena_source.time_fragmented_partition_columns.month_partition_column.column_name,
219
+ representation=month_rep,
220
+ )
221
+
222
+ day_fragment_col = None
223
+ if proto_athena_source.time_fragmented_partition_columns.HasField(
224
+ "day_partition_column"
225
+ ):
226
+ day_rep = AthenaSource._extract_column_representation(
227
+ proto_athena_source.time_fragmented_partition_columns.day_partition_column
228
+ )
229
+
230
+ day_fragment_col = DayFragmentColumn(
231
+ column_name=proto_athena_source.time_fragmented_partition_columns.day_partition_column.column_name,
232
+ representation=day_rep,
233
+ )
234
+
235
+ res = TimeFragmentedPartitionColumns(
236
+ year_partition_column=year_fragment_col,
237
+ month_partition_column=month_fragment_col,
238
+ day_partition_column=day_fragment_col,
239
+ )
240
+ else:
241
+ raise ValueError(
242
+ f"Got an unsupported time partition column: {proto_athena_source}"
243
+ )
244
+ else:
245
+ res = None
246
+
247
+ return res
248
+
249
+ @staticmethod
250
+ def _extract_column_representation(proto_fragment_column):
251
+ column_rep = proto_fragment_column.WhichOneof("column_representation")
252
+
253
+ if column_rep == "numeric_column_representation":
254
+ res = ColumnRepresentation.NumericColumnRepresentation
255
+ elif column_rep == "textual_column_representation":
256
+ res = ColumnRepresentation.TextualColumnRepresentation
257
+ else:
258
+ raise ValueError(f"Unsupported ColumnRepresentation: {column_rep}")
259
+
260
+ return res
@@ -3,15 +3,13 @@ from typing import Optional
3
3
 
4
4
  from _qwak_proto.qwak.feature_store.sources.batch_pb2 import (
5
5
  BatchSource as ProtoBatchSource,
6
- )
7
- from _qwak_proto.qwak.feature_store.sources.batch_pb2 import (
8
6
  BigquerySource as ProtoBigquerySource,
9
7
  )
10
8
  from _qwak_proto.qwak.feature_store.sources.data_source_pb2 import (
11
9
  DataSourceSpec as ProtoDataSourceSpec,
12
10
  )
13
11
  from qwak.exceptions import QwakException
14
- from qwak.feature_store.data_sources.batch_sources._batch import BaseBatchSource
12
+ from qwak.feature_store.data_sources.batch._batch import BaseBatchSource
15
13
 
16
14
 
17
15
  @dataclass
@@ -25,6 +23,7 @@ class BigQuerySource(BaseBatchSource):
25
23
  views_enabled: Optional[bool] = False
26
24
  materialization_dataset: Optional[str] = None
27
25
  materialization_project: Optional[str] = None
26
+ repository: Optional[str] = None
28
27
 
29
28
  def __post_init__(self):
30
29
  if not (self.sql or (self.table and self.dataset)):
@@ -59,8 +58,9 @@ class BigQuerySource(BaseBatchSource):
59
58
  materialization_dataset=bigquery.materialization_dataset,
60
59
  )
61
60
 
62
- def _to_proto(self):
61
+ def _to_proto(self, artifact_url: Optional[str] = None):
63
62
  return ProtoDataSourceSpec(
63
+ data_source_repository_name=self.repository,
64
64
  batch_source=ProtoBatchSource(
65
65
  name=self.name,
66
66
  description=self.description,
@@ -76,5 +76,5 @@ class BigQuerySource(BaseBatchSource):
76
76
  materialization_dataset=self.materialization_dataset,
77
77
  materialization_project=self.materialization_project,
78
78
  ),
79
- )
79
+ ),
80
80
  )
@@ -0,0 +1,60 @@
1
+ from dataclasses import dataclass
2
+ from typing import Optional
3
+
4
+ from _qwak_proto.qwak.feature_store.sources.batch_pb2 import (
5
+ BatchSource as ProtoBatchSource,
6
+ ClickhouseSource as ProtoClickhouseSource,
7
+ )
8
+ from _qwak_proto.qwak.feature_store.sources.data_source_pb2 import (
9
+ DataSourceSpec as ProtoDataSourceSpec,
10
+ )
11
+ from qwak.exceptions import QwakException
12
+ from qwak.feature_store.data_sources.batch._batch import BaseBatchSource
13
+
14
+
15
+ @dataclass
16
+ class ClickhouseSource(BaseBatchSource):
17
+ username_secret_name: Optional[str] = None
18
+ password_secret_name: Optional[str] = None
19
+ url: Optional[str] = None
20
+ db_table: Optional[str] = None
21
+ query: Optional[str] = None
22
+ repository: Optional[str] = None
23
+
24
+ def __post_init__(self):
25
+ self._validate()
26
+
27
+ def _validate(self):
28
+ if not (bool(self.db_table) ^ bool(self.query)):
29
+ raise QwakException("Only one of query and db_table must be set")
30
+
31
+ def _to_proto(self, artifact_url: Optional[str] = None):
32
+ return ProtoDataSourceSpec(
33
+ data_source_repository_name=self.repository,
34
+ batch_source=ProtoBatchSource(
35
+ name=self.name,
36
+ description=self.description,
37
+ date_created_column=self.date_created_column,
38
+ clickhouseSource=ProtoClickhouseSource(
39
+ url=self.url,
40
+ username_secret_name=self.username_secret_name,
41
+ password_secret_name=self.password_secret_name,
42
+ table=self.db_table,
43
+ sql=self.query,
44
+ ),
45
+ ),
46
+ )
47
+
48
+ @classmethod
49
+ def _from_proto(cls, proto: ProtoBatchSource):
50
+ clickhouse: ProtoClickhouseSource = proto.clickhouseSource
51
+ return cls(
52
+ name=proto.name,
53
+ date_created_column=proto.date_created_column,
54
+ description=proto.description,
55
+ url=clickhouse.url,
56
+ username_secret_name=clickhouse.username_secret_name,
57
+ password_secret_name=clickhouse.password_secret_name,
58
+ db_table=clickhouse.table,
59
+ query=clickhouse.sql,
60
+ )
@@ -3,14 +3,16 @@ from typing import Optional
3
3
 
4
4
  from _qwak_proto.qwak.feature_store.sources.batch_pb2 import (
5
5
  BatchSource as ProtoBatchSource,
6
+ CsvSource as ProtoCsvSource,
6
7
  )
7
- from _qwak_proto.qwak.feature_store.sources.batch_pb2 import CsvSource as ProtoCsvSource
8
8
  from _qwak_proto.qwak.feature_store.sources.data_source_pb2 import (
9
9
  DataSourceSpec as ProtoDataSourceSpec,
10
10
  )
11
- from qwak.feature_store.data_sources.batch_sources._batch import BaseBatchSource
12
- from qwak.feature_store.data_sources.batch_sources.filesystem_config import (
11
+ from qwak.feature_store.data_sources.batch._batch import BaseBatchSource
12
+ from qwak.feature_store.data_sources.batch.filesystem.base_config import (
13
13
  FileSystemConfiguration,
14
+ )
15
+ from qwak.feature_store.data_sources.batch.filesystem.utils import (
14
16
  get_fs_config_from_proto,
15
17
  )
16
18
 
@@ -21,6 +23,7 @@ class CsvSource(BaseBatchSource):
21
23
  quote_character: str = '"'
22
24
  escape_character: str = '"'
23
25
  filesystem_configuration: Optional[FileSystemConfiguration] = None
26
+ repository: Optional[str] = None
24
27
 
25
28
  @classmethod
26
29
  def _from_proto(cls, proto):
@@ -38,12 +41,13 @@ class CsvSource(BaseBatchSource):
38
41
  filesystem_configuration=fs_conf,
39
42
  )
40
43
 
41
- def _to_proto(self):
44
+ def _to_proto(self, artifact_url: Optional[str] = None):
42
45
  fs_conf = None
43
46
  if self.filesystem_configuration:
44
47
  fs_conf = self.filesystem_configuration._to_proto()
45
48
 
46
49
  return ProtoDataSourceSpec(
50
+ data_source_repository_name=self.repository,
47
51
  batch_source=ProtoBatchSource(
48
52
  name=self.name,
49
53
  description=self.description,
@@ -54,5 +58,5 @@ class CsvSource(BaseBatchSource):
54
58
  escape_character=self.escape_character,
55
59
  filesystem_configuration=fs_conf,
56
60
  ),
57
- )
61
+ ),
58
62
  )
@@ -3,14 +3,12 @@ from typing import Optional
3
3
 
4
4
  from _qwak_proto.qwak.feature_store.sources.batch_pb2 import (
5
5
  BatchSource as ProtoBatchSource,
6
- )
7
- from _qwak_proto.qwak.feature_store.sources.batch_pb2 import (
8
6
  ElasticsearchSource as ProtoElasticsearchSource,
9
7
  )
10
8
  from _qwak_proto.qwak.feature_store.sources.data_source_pb2 import (
11
9
  DataSourceSpec as ProtoDataSourceSpec,
12
10
  )
13
- from qwak.feature_store.data_sources.batch_sources._batch import BaseBatchSource
11
+ from qwak.feature_store.data_sources.batch._batch import BaseBatchSource
14
12
 
15
13
 
16
14
  @dataclass
@@ -23,6 +21,7 @@ class ElasticSearchSource(BaseBatchSource):
23
21
  password_secret_name: Optional[str] = None
24
22
  exclude_fields: Optional[str] = None
25
23
  parse_dates: Optional[bool] = True
24
+ repository: Optional[str] = None
26
25
 
27
26
  @classmethod
28
27
  def _from_proto(cls, proto):
@@ -41,8 +40,9 @@ class ElasticSearchSource(BaseBatchSource):
41
40
  parse_dates=elastic.parse_dates,
42
41
  )
43
42
 
44
- def _to_proto(self):
43
+ def _to_proto(self, artifact_url: Optional[str] = None):
45
44
  return ProtoDataSourceSpec(
45
+ data_source_repository_name=self.repository,
46
46
  batch_source=ProtoBatchSource(
47
47
  name=self.name,
48
48
  description=self.description,
@@ -57,5 +57,5 @@ class ElasticSearchSource(BaseBatchSource):
57
57
  exclude_fields=self.exclude_fields,
58
58
  parse_dates=self.parse_dates,
59
59
  ),
60
- )
60
+ ),
61
61
  )