frogml 1.1.115__py3-none-any.whl → 1.2.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.
Files changed (483) hide show
  1. frogml/__init__.py +1 -1
  2. frogml/_proto/jfml/hosting_gateway/v1/build_upload_url_pb2.py +3 -3
  3. frogml/_proto/jfml/hosting_gateway/v1/build_upload_url_pb2.pyi +6 -4
  4. frogml/_proto/jfml/hosting_gateway/v1/hosting_gateway_service_pb2.py +3 -3
  5. frogml/_proto/jfml/hosting_gateway/v1/hosting_gateway_service_pb2.pyi +8 -9
  6. frogml/_proto/jfml/model_version/v1/artifact_pb2.py +3 -3
  7. frogml/_proto/jfml/model_version/v1/artifact_pb2.pyi +8 -9
  8. frogml/_proto/jfml/model_version/v1/build_spec_pb2.py +3 -3
  9. frogml/_proto/jfml/model_version/v1/build_spec_pb2.pyi +24 -20
  10. frogml/_proto/jfml/model_version/v1/model_repository_spec_pb2.py +3 -3
  11. frogml/_proto/jfml/model_version/v1/model_repository_spec_pb2.pyi +6 -9
  12. frogml/_proto/jfml/model_version/v1/model_version_framework_pb2.py +3 -3
  13. frogml/_proto/jfml/model_version/v1/model_version_framework_pb2.pyi +13 -10
  14. frogml/_proto/jfml/model_version/v1/model_version_manager_service_pb2.py +3 -3
  15. frogml/_proto/jfml/model_version/v1/model_version_manager_service_pb2.pyi +43 -30
  16. frogml/_proto/jfml/model_version/v1/model_version_pb2.py +11 -11
  17. frogml/_proto/jfml/model_version/v1/model_version_pb2.pyi +48 -32
  18. frogml/_proto/qwak/administration/account/v1/account_pb2.py +25 -23
  19. frogml/_proto/qwak/administration/account/v1/account_pb2.pyi +55 -21
  20. frogml/_proto/qwak/administration/account/v1/account_service_pb2.py +3 -3
  21. frogml/_proto/qwak/administration/account/v1/account_service_pb2.pyi +63 -36
  22. frogml/_proto/qwak/administration/account/v1/jfrog_tenant_details_pb2.py +5 -5
  23. frogml/_proto/qwak/administration/account/v1/jfrog_tenant_details_pb2.pyi +35 -22
  24. frogml/_proto/qwak/administration/account/v1/personalization_pb2.py +3 -3
  25. frogml/_proto/qwak/administration/account/v1/personalization_pb2.pyi +7 -9
  26. frogml/_proto/qwak/administration/account/v1/preferences_pb2.py +3 -3
  27. frogml/_proto/qwak/administration/account/v1/preferences_pb2.pyi +6 -8
  28. frogml/_proto/qwak/administration/account/v1/terms_pb2.py +3 -3
  29. frogml/_proto/qwak/administration/account/v1/terms_pb2.pyi +16 -11
  30. frogml/_proto/qwak/administration/authenticated_user/v1/authenticated_user_service_pb2.py +3 -3
  31. frogml/_proto/qwak/administration/authenticated_user/v1/authenticated_user_service_pb2.pyi +20 -14
  32. frogml/_proto/qwak/administration/authenticated_user/v1/credentials_pb2.py +3 -3
  33. frogml/_proto/qwak/administration/authenticated_user/v1/credentials_pb2.pyi +10 -11
  34. frogml/_proto/qwak/administration/authenticated_user/v1/details_pb2.py +3 -3
  35. frogml/_proto/qwak/administration/authenticated_user/v1/details_pb2.pyi +18 -15
  36. frogml/_proto/qwak/administration/cluster/v2/cluster_pb2.py +3 -3
  37. frogml/_proto/qwak/administration/cluster/v2/cluster_pb2.pyi +62 -39
  38. frogml/_proto/qwak/administration/runtime_configuration/v0/container_registry_config_pb2.py +3 -3
  39. frogml/_proto/qwak/administration/runtime_configuration/v0/container_registry_config_pb2.pyi +12 -13
  40. frogml/_proto/qwak/administration/runtime_configuration/v0/creds/auth_pb2.py +3 -3
  41. frogml/_proto/qwak/administration/runtime_configuration/v0/creds/auth_pb2.pyi +5 -8
  42. frogml/_proto/qwak/administration/runtime_configuration/v0/creds/secret_pb2.py +3 -3
  43. frogml/_proto/qwak/administration/runtime_configuration/v0/creds/secret_pb2.pyi +8 -10
  44. frogml/_proto/qwak/administration/runtime_configuration/v0/data_catalog_config_pb2.py +3 -3
  45. frogml/_proto/qwak/administration/runtime_configuration/v0/data_catalog_config_pb2.pyi +11 -11
  46. frogml/_proto/qwak/administration/runtime_configuration/v0/external/databricks/auth_pb2.py +3 -3
  47. frogml/_proto/qwak/administration/runtime_configuration/v0/external/databricks/auth_pb2.pyi +16 -17
  48. frogml/_proto/qwak/administration/runtime_configuration/v0/external/elasticsearch_config_pb2.py +3 -3
  49. frogml/_proto/qwak/administration/runtime_configuration/v0/external/elasticsearch_config_pb2.pyi +8 -11
  50. frogml/_proto/qwak/administration/runtime_configuration/v0/external/kafka_config_pb2.py +3 -3
  51. frogml/_proto/qwak/administration/runtime_configuration/v0/external/kafka_config_pb2.pyi +12 -12
  52. frogml/_proto/qwak/administration/runtime_configuration/v0/external/prometheus_config_pb2.py +3 -3
  53. frogml/_proto/qwak/administration/runtime_configuration/v0/external/prometheus_config_pb2.pyi +8 -10
  54. frogml/_proto/qwak/administration/runtime_configuration/v0/external/redis_config_pb2.py +3 -3
  55. frogml/_proto/qwak/administration/runtime_configuration/v0/external/redis_config_pb2.pyi +8 -11
  56. frogml/_proto/qwak/administration/runtime_configuration/v0/external/victoriametrics_config_pb2.py +3 -3
  57. frogml/_proto/qwak/administration/runtime_configuration/v0/external/victoriametrics_config_pb2.pyi +6 -9
  58. frogml/_proto/qwak/administration/runtime_configuration/v0/feature_store_config_pb2.py +3 -3
  59. frogml/_proto/qwak/administration/runtime_configuration/v0/feature_store_config_pb2.pyi +13 -14
  60. frogml/_proto/qwak/administration/runtime_configuration/v0/hosting/aws/auth_pb2.py +3 -3
  61. frogml/_proto/qwak/administration/runtime_configuration/v0/hosting/aws/auth_pb2.pyi +29 -25
  62. frogml/_proto/qwak/administration/runtime_configuration/v0/hosting/azure/auth_pb2.py +3 -3
  63. frogml/_proto/qwak/administration/runtime_configuration/v0/hosting/azure/auth_pb2.pyi +23 -21
  64. frogml/_proto/qwak/administration/runtime_configuration/v0/hosting_config_pb2.py +3 -3
  65. frogml/_proto/qwak/administration/runtime_configuration/v0/hosting_config_pb2.pyi +27 -25
  66. frogml/_proto/qwak/administration/runtime_configuration/v0/logs_storage_config_pb2.py +3 -3
  67. frogml/_proto/qwak/administration/runtime_configuration/v0/logs_storage_config_pb2.pyi +6 -9
  68. frogml/_proto/qwak/administration/runtime_configuration/v0/model_analytics_storage_config_pb2.py +3 -3
  69. frogml/_proto/qwak/administration/runtime_configuration/v0/model_analytics_storage_config_pb2.pyi +6 -9
  70. frogml/_proto/qwak/administration/runtime_configuration/v0/network_config_pb2.py +3 -3
  71. frogml/_proto/qwak/administration/runtime_configuration/v0/network_config_pb2.pyi +22 -21
  72. frogml/_proto/qwak/administration/runtime_configuration/v0/object_storage_config_pb2.py +3 -3
  73. frogml/_proto/qwak/administration/runtime_configuration/v0/object_storage_config_pb2.pyi +12 -12
  74. frogml/_proto/qwak/administration/runtime_configuration/v0/observability_config_pb2.py +3 -3
  75. frogml/_proto/qwak/administration/runtime_configuration/v0/observability_config_pb2.pyi +13 -14
  76. frogml/_proto/qwak/administration/runtime_configuration/v0/runtime_config_pb2.py +3 -3
  77. frogml/_proto/qwak/administration/runtime_configuration/v0/runtime_config_pb2.pyi +5 -8
  78. frogml/_proto/qwak/administration/runtime_configuration/v0/sql_engine_config_pb2.py +3 -3
  79. frogml/_proto/qwak/administration/runtime_configuration/v0/sql_engine_config_pb2.pyi +11 -11
  80. frogml/_proto/qwak/administration/v0/authentication/authentication_service_pb2.py +3 -3
  81. frogml/_proto/qwak/administration/v0/authentication/authentication_service_pb2.pyi +14 -13
  82. frogml/_proto/qwak/administration/v0/environments/configuration_pb2.py +3 -3
  83. frogml/_proto/qwak/administration/v0/environments/configuration_pb2.pyi +33 -20
  84. frogml/_proto/qwak/administration/v0/environments/environment_pb2.py +5 -5
  85. frogml/_proto/qwak/administration/v0/environments/environment_pb2.pyi +17 -8
  86. frogml/_proto/qwak/administration/v0/environments/environment_service_pb2.py +5 -5
  87. frogml/_proto/qwak/administration/v0/environments/environment_service_pb2.pyi +46 -26
  88. frogml/_proto/qwak/administration/v0/environments/personalization_pb2.py +3 -3
  89. frogml/_proto/qwak/administration/v0/environments/personalization_pb2.pyi +7 -9
  90. frogml/_proto/qwak/administration/v0/users/user_pb2.py +7 -7
  91. frogml/_proto/qwak/administration/v0/users/user_pb2.pyi +18 -11
  92. frogml/_proto/qwak/admiral/secret/v0/secret_pb2.py +21 -19
  93. frogml/_proto/qwak/admiral/secret/v0/secret_pb2.pyi +65 -24
  94. frogml/_proto/qwak/admiral/secret/v0/secret_service_pb2.py +3 -3
  95. frogml/_proto/qwak/admiral/secret/v0/secret_service_pb2.pyi +16 -12
  96. frogml/_proto/qwak/admiral/secret/v0/system_secret_service_pb2.py +3 -3
  97. frogml/_proto/qwak/admiral/secret/v0/system_secret_service_pb2.pyi +19 -14
  98. frogml/_proto/qwak/admiral/user_application_instance/v0/user_application_instance_pb2.py +3 -3
  99. frogml/_proto/qwak/admiral/user_application_instance/v0/user_application_instance_pb2.pyi +83 -48
  100. frogml/_proto/qwak/admiral/user_application_instance/v0/user_application_instance_service_pb2.py +3 -3
  101. frogml/_proto/qwak/admiral/user_application_instance/v0/user_application_instance_service_pb2.pyi +25 -16
  102. frogml/_proto/qwak/analytics/analytics_pb2.py +3 -3
  103. frogml/_proto/qwak/analytics/analytics_pb2.pyi +33 -16
  104. frogml/_proto/qwak/analytics/analytics_service_pb2.py +3 -3
  105. frogml/_proto/qwak/analytics/analytics_service_pb2.pyi +46 -26
  106. frogml/_proto/qwak/artifactory_settings/artifactory_settings_pb2.py +3 -3
  107. frogml/_proto/qwak/artifactory_settings/artifactory_settings_pb2.pyi +7 -9
  108. frogml/_proto/qwak/audience/v1/audience_api_pb2.py +3 -3
  109. frogml/_proto/qwak/audience/v1/audience_api_pb2.pyi +25 -17
  110. frogml/_proto/qwak/audience/v1/audience_pb2.py +5 -5
  111. frogml/_proto/qwak/audience/v1/audience_pb2.pyi +38 -23
  112. frogml/_proto/qwak/auto_scaling/v1/auto_scaling_pb2.py +3 -3
  113. frogml/_proto/qwak/auto_scaling/v1/auto_scaling_pb2.pyi +22 -13
  114. frogml/_proto/qwak/auto_scaling/v1/auto_scaling_service_pb2.py +3 -3
  115. frogml/_proto/qwak/auto_scaling/v1/auto_scaling_service_pb2.pyi +8 -9
  116. frogml/_proto/qwak/automation/v1/action_pb2.py +17 -17
  117. frogml/_proto/qwak/automation/v1/action_pb2.pyi +76 -47
  118. frogml/_proto/qwak/automation/v1/auto_scaling_pb2.py +3 -3
  119. frogml/_proto/qwak/automation/v1/auto_scaling_pb2.pyi +22 -13
  120. frogml/_proto/qwak/automation/v1/automation_execution_pb2.py +3 -3
  121. frogml/_proto/qwak/automation/v1/automation_execution_pb2.pyi +23 -13
  122. frogml/_proto/qwak/automation/v1/automation_management_service_pb2.py +5 -5
  123. frogml/_proto/qwak/automation/v1/automation_management_service_pb2.pyi +56 -32
  124. frogml/_proto/qwak/automation/v1/automation_pb2.py +3 -3
  125. frogml/_proto/qwak/automation/v1/automation_pb2.pyi +28 -25
  126. frogml/_proto/qwak/automation/v1/common_pb2.py +3 -3
  127. frogml/_proto/qwak/automation/v1/common_pb2.pyi +8 -5
  128. frogml/_proto/qwak/automation/v1/notification_pb2.py +7 -7
  129. frogml/_proto/qwak/automation/v1/notification_pb2.pyi +14 -8
  130. frogml/_proto/qwak/automation/v1/trigger_pb2.py +3 -3
  131. frogml/_proto/qwak/automation/v1/trigger_pb2.pyi +17 -16
  132. frogml/_proto/qwak/batch_job/v1/batch_job_events_pb2.py +13 -13
  133. frogml/_proto/qwak/batch_job/v1/batch_job_events_pb2.pyi +22 -14
  134. frogml/_proto/qwak/batch_job/v1/batch_job_resources_pb2.py +3 -3
  135. frogml/_proto/qwak/batch_job/v1/batch_job_resources_pb2.pyi +4 -2
  136. frogml/_proto/qwak/batch_job/v1/batch_job_service_pb2.py +27 -27
  137. frogml/_proto/qwak/batch_job/v1/batch_job_service_pb2.pyi +192 -101
  138. frogml/_proto/qwak/build/v1/build_api_pb2.py +17 -17
  139. frogml/_proto/qwak/build/v1/build_api_pb2.pyi +87 -46
  140. frogml/_proto/qwak/build/v1/build_pb2.py +9 -9
  141. frogml/_proto/qwak/build/v1/build_pb2.pyi +187 -118
  142. frogml/_proto/qwak/build_settings/build_settings_api_pb2.py +3 -3
  143. frogml/_proto/qwak/build_settings/build_settings_api_pb2.pyi +15 -13
  144. frogml/_proto/qwak/build_settings/build_settings_pb2.py +3 -3
  145. frogml/_proto/qwak/build_settings/build_settings_pb2.pyi +24 -19
  146. frogml/_proto/qwak/builds/build_pb2.py +7 -7
  147. frogml/_proto/qwak/builds/build_pb2.pyi +83 -54
  148. frogml/_proto/qwak/builds/build_url_pb2.py +5 -5
  149. frogml/_proto/qwak/builds/build_url_pb2.pyi +39 -21
  150. frogml/_proto/qwak/builds/build_values_pb2.py +35 -29
  151. frogml/_proto/qwak/builds/build_values_pb2.pyi +85 -36
  152. frogml/_proto/qwak/builds/builds_orchestrator_service_pb2.py +19 -19
  153. frogml/_proto/qwak/builds/builds_orchestrator_service_pb2.pyi +100 -52
  154. frogml/_proto/qwak/builds/builds_pb2.py +7 -7
  155. frogml/_proto/qwak/builds/builds_pb2.pyi +177 -105
  156. frogml/_proto/qwak/builds/internal_builds_orchestrator_service_pb2.py +3 -3
  157. frogml/_proto/qwak/builds/internal_builds_orchestrator_service_pb2.pyi +12 -10
  158. frogml/_proto/qwak/data_versioning/data_versioning_pb2.py +3 -3
  159. frogml/_proto/qwak/data_versioning/data_versioning_pb2.pyi +8 -10
  160. frogml/_proto/qwak/data_versioning/data_versioning_service_pb2.py +3 -3
  161. frogml/_proto/qwak/data_versioning/data_versioning_service_pb2.pyi +12 -11
  162. frogml/_proto/qwak/deployment/alert_pb2.py +5 -5
  163. frogml/_proto/qwak/deployment/alert_pb2.pyi +31 -20
  164. frogml/_proto/qwak/deployment/alert_service_pb2.py +7 -7
  165. frogml/_proto/qwak/deployment/alert_service_pb2.pyi +34 -21
  166. frogml/_proto/qwak/deployment/deployment_messages_pb2.py +3 -3
  167. frogml/_proto/qwak/deployment/deployment_messages_pb2.pyi +9 -11
  168. frogml/_proto/qwak/deployment/deployment_pb2.py +33 -33
  169. frogml/_proto/qwak/deployment/deployment_pb2.pyi +225 -139
  170. frogml/_proto/qwak/deployment/deployment_service_pb2.py +81 -81
  171. frogml/_proto/qwak/deployment/deployment_service_pb2.pyi +139 -78
  172. frogml/_proto/qwak/ecosystem/jfrog/v0/jfrog_tenant_info_service_pb2.py +3 -3
  173. frogml/_proto/qwak/ecosystem/jfrog/v0/jfrog_tenant_info_service_pb2.pyi +11 -9
  174. frogml/_proto/qwak/ecosystem/jfrog/v0/jfrog_tenant_pb2.py +3 -3
  175. frogml/_proto/qwak/ecosystem/jfrog/v0/jfrog_tenant_pb2.pyi +6 -8
  176. frogml/_proto/qwak/ecosystem/jfrog/v0/token_pb2.py +11 -11
  177. frogml/_proto/qwak/ecosystem/jfrog/v0/token_pb2.pyi +70 -37
  178. frogml/_proto/qwak/ecosystem/jfrog/v0/token_service_pb2.py +3 -3
  179. frogml/_proto/qwak/ecosystem/jfrog/v0/token_service_pb2.pyi +29 -19
  180. frogml/_proto/qwak/ecosystem/v0/auth_pb2.py +3 -3
  181. frogml/_proto/qwak/ecosystem/v0/auth_pb2.pyi +6 -8
  182. frogml/_proto/qwak/ecosystem/v0/azure_credentials_pb2.py +3 -3
  183. frogml/_proto/qwak/ecosystem/v0/azure_credentials_pb2.pyi +21 -19
  184. frogml/_proto/qwak/ecosystem/v0/credentials_pb2.py +3 -3
  185. frogml/_proto/qwak/ecosystem/v0/credentials_pb2.pyi +16 -15
  186. frogml/_proto/qwak/ecosystem/v0/ecosystem_pb2.py +11 -11
  187. frogml/_proto/qwak/ecosystem/v0/ecosystem_pb2.pyi +63 -40
  188. frogml/_proto/qwak/ecosystem/v0/ecosystem_runtime_service_pb2.py +5 -5
  189. frogml/_proto/qwak/ecosystem/v0/ecosystem_runtime_service_pb2.pyi +74 -41
  190. frogml/_proto/qwak/execution/v1/backfill_pb2.py +3 -3
  191. frogml/_proto/qwak/execution/v1/backfill_pb2.pyi +34 -24
  192. frogml/_proto/qwak/execution/v1/batch_pb2.py +3 -3
  193. frogml/_proto/qwak/execution/v1/batch_pb2.pyi +16 -13
  194. frogml/_proto/qwak/execution/v1/deletion_pb2.py +3 -3
  195. frogml/_proto/qwak/execution/v1/deletion_pb2.pyi +9 -9
  196. frogml/_proto/qwak/execution/v1/execution_pb2.py +3 -3
  197. frogml/_proto/qwak/execution/v1/execution_pb2.pyi +28 -12
  198. frogml/_proto/qwak/execution/v1/execution_service_pb2.py +5 -5
  199. frogml/_proto/qwak/execution/v1/execution_service_pb2.pyi +69 -43
  200. frogml/_proto/qwak/execution/v1/internal/deployment/platform_details_pb2.py +3 -3
  201. frogml/_proto/qwak/execution/v1/internal/deployment/platform_details_pb2.pyi +4 -7
  202. frogml/_proto/qwak/execution/v1/jobs/job_pb2.py +5 -5
  203. frogml/_proto/qwak/execution/v1/jobs/job_pb2.pyi +45 -22
  204. frogml/_proto/qwak/execution/v1/jobs/job_service_pb2.py +3 -3
  205. frogml/_proto/qwak/execution/v1/jobs/job_service_pb2.pyi +62 -37
  206. frogml/_proto/qwak/execution/v1/jobs/reports/report_pb2.py +5 -5
  207. frogml/_proto/qwak/execution/v1/jobs/reports/report_pb2.pyi +49 -29
  208. frogml/_proto/qwak/execution/v1/state/execution_state_pb2.py +3 -3
  209. frogml/_proto/qwak/execution/v1/state/execution_state_pb2.pyi +6 -9
  210. frogml/_proto/qwak/execution/v1/state/execution_state_service_pb2.py +3 -3
  211. frogml/_proto/qwak/execution/v1/state/execution_state_service_pb2.pyi +27 -19
  212. frogml/_proto/qwak/execution/v1/state/featureset_state_pb2.py +3 -3
  213. frogml/_proto/qwak/execution/v1/state/featureset_state_pb2.pyi +4 -7
  214. frogml/_proto/qwak/execution/v1/state/spark_execution_state_pb2.py +5 -5
  215. frogml/_proto/qwak/execution/v1/state/spark_execution_state_pb2.pyi +13 -7
  216. frogml/_proto/qwak/execution/v1/streaming_aggregation_pb2.py +21 -14
  217. frogml/_proto/qwak/execution/v1/streaming_aggregation_pb2.pyi +83 -11
  218. frogml/_proto/qwak/execution/v1/streaming_pb2.py +3 -3
  219. frogml/_proto/qwak/execution/v1/streaming_pb2.pyi +10 -10
  220. frogml/_proto/qwak/feature_store/entities/entity_pb2.py +3 -3
  221. frogml/_proto/qwak/feature_store/entities/entity_pb2.pyi +29 -16
  222. frogml/_proto/qwak/feature_store/entities/entity_service_pb2.py +3 -3
  223. frogml/_proto/qwak/feature_store/entities/entity_service_pb2.pyi +37 -22
  224. frogml/_proto/qwak/feature_store/features/aggregation_pb2.py +3 -3
  225. frogml/_proto/qwak/feature_store/features/aggregation_pb2.pyi +39 -21
  226. frogml/_proto/qwak/feature_store/features/deployment_pb2.py +3 -3
  227. frogml/_proto/qwak/feature_store/features/deployment_pb2.pyi +51 -27
  228. frogml/_proto/qwak/feature_store/features/deployment_service_pb2.py +3 -3
  229. frogml/_proto/qwak/feature_store/features/deployment_service_pb2.pyi +5 -7
  230. frogml/_proto/qwak/feature_store/features/execution_pb2.py +3 -3
  231. frogml/_proto/qwak/feature_store/features/execution_pb2.pyi +18 -13
  232. frogml/_proto/qwak/feature_store/features/feature_set_attribute_pb2.py +3 -3
  233. frogml/_proto/qwak/feature_store/features/feature_set_attribute_pb2.pyi +6 -8
  234. frogml/_proto/qwak/feature_store/features/feature_set_pb2.py +21 -21
  235. frogml/_proto/qwak/feature_store/features/feature_set_pb2.pyi +85 -48
  236. frogml/_proto/qwak/feature_store/features/feature_set_service_pb2.py +9 -9
  237. frogml/_proto/qwak/feature_store/features/feature_set_service_pb2.pyi +107 -53
  238. frogml/_proto/qwak/feature_store/features/feature_set_state_pb2.py +3 -3
  239. frogml/_proto/qwak/feature_store/features/feature_set_state_pb2.pyi +46 -23
  240. frogml/_proto/qwak/feature_store/features/feature_set_state_service_pb2.py +3 -3
  241. frogml/_proto/qwak/feature_store/features/feature_set_state_service_pb2.pyi +27 -17
  242. frogml/_proto/qwak/feature_store/features/feature_set_types_pb2.py +73 -71
  243. frogml/_proto/qwak/feature_store/features/feature_set_types_pb2.pyi +181 -99
  244. frogml/_proto/qwak/feature_store/features/monitoring_pb2.py +3 -3
  245. frogml/_proto/qwak/feature_store/features/monitoring_pb2.pyi +11 -11
  246. frogml/_proto/qwak/feature_store/features/real_time_feature_extractor_pb2.py +3 -3
  247. frogml/_proto/qwak/feature_store/features/real_time_feature_extractor_pb2.pyi +63 -37
  248. frogml/_proto/qwak/feature_store/jobs/job_pb2.py +3 -3
  249. frogml/_proto/qwak/feature_store/jobs/job_pb2.pyi +26 -14
  250. frogml/_proto/qwak/feature_store/jobs/job_service_pb2.py +3 -3
  251. frogml/_proto/qwak/feature_store/jobs/job_service_pb2.pyi +36 -25
  252. frogml/_proto/qwak/feature_store/jobs/v1/job_pb2.py +3 -3
  253. frogml/_proto/qwak/feature_store/jobs/v1/job_pb2.pyi +23 -12
  254. frogml/_proto/qwak/feature_store/jobs/v1/job_service_pb2.py +3 -3
  255. frogml/_proto/qwak/feature_store/jobs/v1/job_service_pb2.pyi +51 -30
  256. frogml/_proto/qwak/feature_store/platform/platform_details_pb2.py +3 -3
  257. frogml/_proto/qwak/feature_store/platform/platform_details_pb2.pyi +11 -11
  258. frogml/_proto/qwak/feature_store/reports/report_pb2.py +3 -3
  259. frogml/_proto/qwak/feature_store/reports/report_pb2.pyi +28 -18
  260. frogml/_proto/qwak/feature_store/repository/common/platform_pb2.py +3 -3
  261. frogml/_proto/qwak/feature_store/repository/common/platform_pb2.pyi +13 -12
  262. frogml/_proto/qwak/feature_store/serving/management_pb2.py +3 -3
  263. frogml/_proto/qwak/feature_store/serving/management_pb2.pyi +10 -10
  264. frogml/_proto/qwak/feature_store/serving/metadata_pb2.py +3 -3
  265. frogml/_proto/qwak/feature_store/serving/metadata_pb2.pyi +21 -15
  266. frogml/_proto/qwak/feature_store/serving/serving_pb2.py +13 -13
  267. frogml/_proto/qwak/feature_store/serving/serving_pb2.pyi +67 -37
  268. frogml/_proto/qwak/feature_store/serving/v1/value_pb2.py +3 -3
  269. frogml/_proto/qwak/feature_store/serving/v1/value_pb2.pyi +8 -10
  270. frogml/_proto/qwak/feature_store/sinks/sink_pb2.py +3 -3
  271. frogml/_proto/qwak/feature_store/sinks/sink_pb2.pyi +20 -16
  272. frogml/_proto/qwak/feature_store/sources/batch_pb2.py +11 -11
  273. frogml/_proto/qwak/feature_store/sources/batch_pb2.pyi +110 -70
  274. frogml/_proto/qwak/feature_store/sources/data_source_attribute_pb2.py +3 -3
  275. frogml/_proto/qwak/feature_store/sources/data_source_attribute_pb2.pyi +6 -8
  276. frogml/_proto/qwak/feature_store/sources/data_source_pb2.py +7 -7
  277. frogml/_proto/qwak/feature_store/sources/data_source_pb2.pyi +37 -30
  278. frogml/_proto/qwak/feature_store/sources/data_source_service_pb2.py +5 -5
  279. frogml/_proto/qwak/feature_store/sources/data_source_service_pb2.pyi +45 -25
  280. frogml/_proto/qwak/feature_store/sources/streaming_pb2.py +11 -11
  281. frogml/_proto/qwak/feature_store/sources/streaming_pb2.pyi +41 -21
  282. frogml/_proto/qwak/feature_store/v1/common/jfrog_artifact/jfrog_artifact_pb2.py +3 -3
  283. frogml/_proto/qwak/feature_store/v1/common/jfrog_artifact/jfrog_artifact_pb2.pyi +4 -7
  284. frogml/_proto/qwak/feature_store/v1/common/source_code/source_code_pb2.py +3 -3
  285. frogml/_proto/qwak/feature_store/v1/common/source_code/source_code_pb2.pyi +17 -17
  286. frogml/_proto/qwak/feature_store/v1/internal/data_source/data_source_service_pb2.py +5 -5
  287. frogml/_proto/qwak/feature_store/v1/internal/data_source/data_source_service_pb2.pyi +15 -13
  288. frogml/_proto/qwak/feature_store/v1/internal/featureset/featureset_token_service_pb2.py +3 -3
  289. frogml/_proto/qwak/feature_store/v1/internal/featureset/featureset_token_service_pb2.pyi +6 -8
  290. frogml/_proto/qwak/features_operator/v1/features_operator_pb2.py +3 -3
  291. frogml/_proto/qwak/features_operator/v1/features_operator_pb2.pyi +15 -11
  292. frogml/_proto/qwak/features_operator/v1/features_operator_service_pb2.py +3 -3
  293. frogml/_proto/qwak/features_operator/v1/features_operator_service_pb2.pyi +18 -16
  294. frogml/_proto/qwak/features_operator/v2/features_operator_pb2.py +3 -3
  295. frogml/_proto/qwak/features_operator/v2/features_operator_pb2.pyi +16 -11
  296. frogml/_proto/qwak/features_operator/v2/features_operator_service_pb2.py +3 -3
  297. frogml/_proto/qwak/features_operator/v2/features_operator_service_pb2.pyi +20 -19
  298. frogml/_proto/qwak/features_operator/v3/features_operator_async_service_pb2.py +3 -3
  299. frogml/_proto/qwak/features_operator/v3/features_operator_async_service_pb2.pyi +41 -34
  300. frogml/_proto/qwak/features_operator/v3/features_operator_pb2.py +3 -3
  301. frogml/_proto/qwak/features_operator/v3/features_operator_pb2.pyi +19 -13
  302. frogml/_proto/qwak/file_versioning/file_versioning_pb2.py +5 -5
  303. frogml/_proto/qwak/file_versioning/file_versioning_pb2.pyi +8 -5
  304. frogml/_proto/qwak/file_versioning/file_versioning_service_pb2.py +3 -3
  305. frogml/_proto/qwak/file_versioning/file_versioning_service_pb2.pyi +12 -11
  306. frogml/_proto/qwak/fitness_service/constructs_pb2.py +3 -3
  307. frogml/_proto/qwak/fitness_service/constructs_pb2.pyi +27 -16
  308. frogml/_proto/qwak/fitness_service/fitness_pb2.py +3 -3
  309. frogml/_proto/qwak/fitness_service/fitness_pb2.pyi +24 -18
  310. frogml/_proto/qwak/fitness_service/fitness_service_pb2.py +3 -3
  311. frogml/_proto/qwak/fitness_service/fitness_service_pb2.pyi +18 -13
  312. frogml/_proto/qwak/fitness_service/status_pb2.py +3 -3
  313. frogml/_proto/qwak/fitness_service/status_pb2.pyi +26 -16
  314. frogml/_proto/qwak/inference/feedback/feedback_pb2.py +3 -3
  315. frogml/_proto/qwak/inference/feedback/feedback_pb2.pyi +28 -15
  316. frogml/_proto/qwak/instance_template/instance_template_pb2.py +3 -3
  317. frogml/_proto/qwak/instance_template/instance_template_pb2.pyi +10 -7
  318. frogml/_proto/qwak/instance_template/instance_template_service_pb2.py +3 -3
  319. frogml/_proto/qwak/instance_template/instance_template_service_pb2.pyi +12 -12
  320. frogml/_proto/qwak/integration/hugging_face_integration_pb2.py +3 -3
  321. frogml/_proto/qwak/integration/hugging_face_integration_pb2.pyi +19 -17
  322. frogml/_proto/qwak/integration/integration_pb2.py +3 -3
  323. frogml/_proto/qwak/integration/integration_pb2.pyi +50 -32
  324. frogml/_proto/qwak/integration/integration_service_pb2.py +3 -3
  325. frogml/_proto/qwak/integration/integration_service_pb2.pyi +39 -23
  326. frogml/_proto/qwak/integration/open_a_i_integration_pb2.py +3 -3
  327. frogml/_proto/qwak/integration/open_a_i_integration_pb2.pyi +20 -17
  328. frogml/_proto/qwak/integration/opsgenie_integration_pb2.py +5 -5
  329. frogml/_proto/qwak/integration/opsgenie_integration_pb2.pyi +29 -16
  330. frogml/_proto/qwak/integration/pagerduty_integration_pb2.py +5 -5
  331. frogml/_proto/qwak/integration/pagerduty_integration_pb2.pyi +39 -26
  332. frogml/_proto/qwak/integration/slack_app_integration_pb2.py +5 -5
  333. frogml/_proto/qwak/integration/slack_app_integration_pb2.pyi +30 -20
  334. frogml/_proto/qwak/jfrog/gateway/v0/repository_pb2.py +3 -3
  335. frogml/_proto/qwak/jfrog/gateway/v0/repository_pb2.pyi +19 -16
  336. frogml/_proto/qwak/jfrog/gateway/v0/repository_service_pb2.py +3 -3
  337. frogml/_proto/qwak/jfrog/gateway/v0/repository_service_pb2.pyi +11 -11
  338. frogml/_proto/qwak/kube_deployment_captain/alert_pb2.py +5 -5
  339. frogml/_proto/qwak/kube_deployment_captain/alert_pb2.pyi +25 -15
  340. frogml/_proto/qwak/kube_deployment_captain/alerting_pb2.py +3 -3
  341. frogml/_proto/qwak/kube_deployment_captain/alerting_pb2.pyi +14 -12
  342. frogml/_proto/qwak/kube_deployment_captain/batch_job_pb2.py +67 -67
  343. frogml/_proto/qwak/kube_deployment_captain/batch_job_pb2.pyi +104 -61
  344. frogml/_proto/qwak/kube_deployment_captain/deployment_pb2.py +3 -3
  345. frogml/_proto/qwak/kube_deployment_captain/deployment_pb2.pyi +63 -40
  346. frogml/_proto/qwak/kube_deployment_captain/feature_set_deployment_pb2.py +7 -7
  347. frogml/_proto/qwak/kube_deployment_captain/feature_set_deployment_pb2.pyi +63 -39
  348. frogml/_proto/qwak/kube_deployment_captain/kube_deployment_captain_service_pb2.py +17 -17
  349. frogml/_proto/qwak/kube_deployment_captain/kube_deployment_captain_service_pb2.pyi +146 -72
  350. frogml/_proto/qwak/kube_deployment_captain/traffic_mapping_pb2.py +3 -3
  351. frogml/_proto/qwak/kube_deployment_captain/traffic_mapping_pb2.pyi +8 -10
  352. frogml/_proto/qwak/logging/log_filter_pb2.py +3 -3
  353. frogml/_proto/qwak/logging/log_filter_pb2.pyi +18 -13
  354. frogml/_proto/qwak/logging/log_line_pb2.py +5 -5
  355. frogml/_proto/qwak/logging/log_line_pb2.pyi +7 -8
  356. frogml/_proto/qwak/logging/log_reader_service_pb2.py +3 -3
  357. frogml/_proto/qwak/logging/log_reader_service_pb2.pyi +19 -18
  358. frogml/_proto/qwak/logging/log_source_pb2.py +3 -3
  359. frogml/_proto/qwak/logging/log_source_pb2.pyi +39 -29
  360. frogml/_proto/qwak/model_descriptor/open_ai_descriptor_pb2.py +3 -3
  361. frogml/_proto/qwak/model_descriptor/open_ai_descriptor_pb2.pyi +48 -44
  362. frogml/_proto/qwak/model_group/model_group_pb2.py +3 -3
  363. frogml/_proto/qwak/model_group/model_group_pb2.pyi +27 -18
  364. frogml/_proto/qwak/model_group/model_group_repository_details_pb2.py +3 -3
  365. frogml/_proto/qwak/model_group/model_group_repository_details_pb2.pyi +28 -18
  366. frogml/_proto/qwak/models/models_pb2.py +19 -19
  367. frogml/_proto/qwak/models/models_pb2.pyi +148 -89
  368. frogml/_proto/qwak/models/models_query_pb2.py +3 -3
  369. frogml/_proto/qwak/models/models_query_pb2.pyi +18 -13
  370. frogml/_proto/qwak/monitoring/v0/alerting_channel_management_service_pb2.py +3 -3
  371. frogml/_proto/qwak/monitoring/v0/alerting_channel_management_service_pb2.pyi +31 -18
  372. frogml/_proto/qwak/monitoring/v0/alerting_channel_pb2.py +3 -3
  373. frogml/_proto/qwak/monitoring/v0/alerting_channel_pb2.pyi +62 -28
  374. frogml/_proto/qwak/monitoring/v0/alerting_channel_sync_service_pb2.py +3 -3
  375. frogml/_proto/qwak/monitoring/v0/alerting_channel_sync_service_pb2.pyi +18 -14
  376. frogml/_proto/qwak/offline/serving/v1/feature_values_pb2.py +3 -3
  377. frogml/_proto/qwak/offline/serving/v1/feature_values_pb2.pyi +5 -7
  378. frogml/_proto/qwak/offline/serving/v1/offline_serving_async_service_pb2.py +3 -3
  379. frogml/_proto/qwak/offline/serving/v1/offline_serving_async_service_pb2.pyi +43 -23
  380. frogml/_proto/qwak/offline/serving/v1/options_pb2.py +3 -3
  381. frogml/_proto/qwak/offline/serving/v1/options_pb2.pyi +4 -7
  382. frogml/_proto/qwak/offline/serving/v1/population_pb2.py +3 -3
  383. frogml/_proto/qwak/offline/serving/v1/population_pb2.pyi +18 -15
  384. frogml/_proto/qwak/projects/jfrog_project_spec_pb2.py +3 -3
  385. frogml/_proto/qwak/projects/jfrog_project_spec_pb2.pyi +6 -9
  386. frogml/_proto/qwak/projects/projects_pb2.py +22 -20
  387. frogml/_proto/qwak/projects/projects_pb2.pyi +74 -36
  388. frogml/_proto/qwak/secret_service/secret_service_pb2.py +3 -3
  389. frogml/_proto/qwak/secret_service/secret_service_pb2.pyi +13 -11
  390. frogml/_proto/qwak/self_service/account/v0/account_membership_pb2.py +7 -7
  391. frogml/_proto/qwak/self_service/account/v0/account_membership_pb2.pyi +44 -22
  392. frogml/_proto/qwak/self_service/account/v0/account_membership_service_pb2.py +3 -3
  393. frogml/_proto/qwak/self_service/account/v0/account_membership_service_pb2.pyi +48 -24
  394. frogml/_proto/qwak/self_service/account/v0/account_status_pb2.py +5 -5
  395. frogml/_proto/qwak/self_service/account/v0/account_status_pb2.pyi +30 -23
  396. frogml/_proto/qwak/self_service/account/v0/managing_account_pb2.py +7 -7
  397. frogml/_proto/qwak/self_service/account/v0/managing_account_pb2.pyi +50 -26
  398. frogml/_proto/qwak/self_service/account/v0/managing_account_service_pb2.py +3 -3
  399. frogml/_proto/qwak/self_service/account/v0/managing_account_service_pb2.pyi +25 -16
  400. frogml/_proto/qwak/self_service/user/v1/api_key_pb2.py +3 -3
  401. frogml/_proto/qwak/self_service/user/v1/api_key_pb2.pyi +4 -7
  402. frogml/_proto/qwak/self_service/user/v1/user_pb2.py +3 -3
  403. frogml/_proto/qwak/self_service/user/v1/user_pb2.pyi +16 -16
  404. frogml/_proto/qwak/self_service/user/v1/user_service_pb2.py +5 -5
  405. frogml/_proto/qwak/self_service/user/v1/user_service_pb2.pyi +27 -14
  406. frogml/_proto/qwak/service_discovery/service_discovery_location_pb2.py +3 -3
  407. frogml/_proto/qwak/service_discovery/service_discovery_location_pb2.pyi +11 -11
  408. frogml/_proto/qwak/service_discovery/service_discovery_location_service_pb2.py +3 -3
  409. frogml/_proto/qwak/service_discovery/service_discovery_location_service_pb2.pyi +6 -8
  410. frogml/_proto/qwak/traffic/v1/traffic_api_pb2.py +3 -3
  411. frogml/_proto/qwak/traffic/v1/traffic_api_pb2.pyi +19 -14
  412. frogml/_proto/qwak/traffic/v1/traffic_pb2.py +3 -3
  413. frogml/_proto/qwak/traffic/v1/traffic_pb2.pyi +35 -22
  414. frogml/_proto/qwak/user_application/common/v0/resources_pb2.py +3 -3
  415. frogml/_proto/qwak/user_application/common/v0/resources_pb2.pyi +29 -19
  416. frogml/_proto/qwak/user_application/v0/user_application_pb2.py +7 -7
  417. frogml/_proto/qwak/user_application/v0/user_application_pb2.pyi +8 -5
  418. frogml/core/clients/build_orchestrator/build_model_request_getter.py +6 -2
  419. frogml/core/clients/build_orchestrator/client.py +9 -5
  420. frogml/core/exceptions/__init__.py +1 -0
  421. frogml/core/exceptions/frogml_grpc_address_exception.py +9 -0
  422. frogml/core/exceptions/frogml_token_exception.py +7 -0
  423. frogml/core/feature_store/data_sources/attributes.py +5 -8
  424. frogml/core/feature_store/data_sources/source_authentication.py +5 -6
  425. frogml/core/feature_store/data_sources/time_partition_columns.py +28 -41
  426. frogml/core/feature_store/execution/backfill.py +17 -28
  427. frogml/core/feature_store/feature_sets/transformations/__init__.py +0 -2
  428. frogml/core/feature_store/feature_sets/transformations/transformations.py +0 -69
  429. frogml/core/inner/build_config/build_config_v1.py +4 -5
  430. frogml/core/inner/const.py +2 -0
  431. frogml/core/inner/di_configuration/__init__.py +1 -65
  432. frogml/core/inner/di_configuration/account.py +4 -5
  433. frogml/core/inner/di_configuration/containers.py +7 -0
  434. frogml/core/inner/di_configuration/dependency_wiring.py +95 -0
  435. frogml/core/inner/tool/auth/TOKEN_ROTATION.md +51 -0
  436. frogml/core/inner/tool/auth/__init__.py +3 -0
  437. frogml/core/inner/tool/auth/auth_client.py +192 -0
  438. frogml/core/inner/tool/auth/token_maintainer.py +119 -0
  439. frogml/core/inner/tool/grpc/grpc_auth.py +22 -23
  440. frogml/core/inner/tool/grpc/grpc_tools.py +126 -6
  441. frogml/core/model_loggers/artifact_logger.py +5 -4
  442. frogml/feature_store/_common/packaging.py +1 -1
  443. frogml/feature_store/data_sources/base.py +8 -8
  444. frogml/feature_store/data_sources/batch/_batch.py +0 -3
  445. frogml/feature_store/data_sources/batch/_jdbc.py +6 -7
  446. frogml/feature_store/data_sources/batch/athena.py +6 -7
  447. frogml/feature_store/data_sources/batch/big_query.py +8 -5
  448. frogml/feature_store/data_sources/batch/clickhouse.py +8 -8
  449. frogml/feature_store/data_sources/batch/csv.py +2 -4
  450. frogml/feature_store/data_sources/batch/elastic_search.py +2 -4
  451. frogml/feature_store/data_sources/batch/filesystem/aws.py +21 -22
  452. frogml/feature_store/data_sources/batch/filesystem/base_config.py +3 -3
  453. frogml/feature_store/data_sources/batch/filesystem/gcp.py +3 -7
  454. frogml/feature_store/data_sources/batch/mongodb.py +2 -4
  455. frogml/feature_store/data_sources/batch/mysql.py +2 -3
  456. frogml/feature_store/data_sources/batch/parquet.py +6 -6
  457. frogml/feature_store/data_sources/batch/postgres.py +2 -3
  458. frogml/feature_store/data_sources/batch/redshift.py +8 -6
  459. frogml/feature_store/data_sources/batch/snowflake.py +17 -11
  460. frogml/feature_store/data_sources/batch/unity_catalog.py +14 -10
  461. frogml/feature_store/data_sources/batch/vertica.py +10 -6
  462. frogml/feature_store/data_sources/streaming/_streaming.py +0 -2
  463. frogml/feature_store/data_sources/streaming/kafka/authentication.py +13 -19
  464. frogml/feature_store/data_sources/streaming/kafka/deserialization.py +22 -23
  465. frogml/feature_store/data_sources/streaming/kafka/kafka.py +13 -14
  466. frogml/feature_store/online/client.py +20 -4
  467. frogml/sdk/frogml_client/builds/build.py +8 -7
  468. frogml/sdk/model_version/huggingface/__init__.py +5 -3
  469. frogml/sdk/model_version/utils/files_tools.py +2 -3
  470. frogml/storage/authentication/models/_auth_config.py +22 -1
  471. frogml/storage/authentication/utils/_authentication_utils.py +31 -34
  472. frogml/storage/constants.py +19 -0
  473. frogml/storage/frog_ml.py +5 -22
  474. frogml/storage/models/frogml_dataset_version.py +3 -3
  475. frogml/storage/models/frogml_model_version.py +6 -3
  476. frogml/storage/utils/_input_checks_utility.py +3 -1
  477. {frogml-1.1.115.dist-info → frogml-1.2.19.dist-info}/METADATA +39 -9
  478. {frogml-1.1.115.dist-info → frogml-1.2.19.dist-info}/RECORD +482 -476
  479. frogml_services_mock/mocks/authentication_service.py +3 -3
  480. frogml_services_mock/mocks/build_orchestrator_service_api.py +5 -2
  481. frogml_services_mock/services_mock.py +44 -33
  482. frogml/core/inner/tool/auth.py +0 -100
  483. {frogml-1.1.115.dist-info → frogml-1.2.19.dist-info}/WHEEL +0 -0
@@ -1,23 +1,22 @@
1
1
  from abc import ABC
2
- from dataclasses import dataclass
3
2
  from typing import Optional
3
+ from typing_extensions import Self
4
+ from pydantic import model_validator
4
5
 
5
6
  from frogml.core.exceptions import FrogmlException
6
7
  from frogml.feature_store.data_sources.batch._batch import BaseBatchSource
7
8
 
8
9
 
9
- @dataclass
10
10
  class JdbcSource(BaseBatchSource, ABC):
11
11
  username_secret_name: Optional[str] = None
12
12
  password_secret_name: Optional[str] = None
13
13
  url: Optional[str] = None
14
14
  db_table: Optional[str] = None
15
15
  query: Optional[str] = None
16
- repository: Optional[str] = None
17
16
 
18
- def __post_init__(self):
19
- self._validate()
20
-
21
- def _validate(self):
17
+ @model_validator(mode="after")
18
+ def __validate_jdbc(self) -> Self:
22
19
  if not (bool(self.db_table) ^ bool(self.query)):
23
20
  raise FrogmlException("Only one of query and db_table must be set")
21
+
22
+ return self
@@ -1,5 +1,6 @@
1
- from dataclasses import dataclass
2
1
  from typing import Optional
2
+ from typing_extensions import Self
3
+ from pydantic import model_validator
3
4
 
4
5
  from frogml._proto.qwak.feature_store.sources.batch_pb2 import (
5
6
  AthenaSourceV1 as ProtoAthenaSourceV1,
@@ -45,18 +46,15 @@ from frogml.core.feature_store.data_sources.time_partition_columns import (
45
46
  )
46
47
 
47
48
 
48
- @dataclass
49
49
  class AthenaSource(JdbcSource):
50
50
  aws_region: str = str()
51
51
  s3_output_location: str = str()
52
52
  aws_authentication: Optional[AwsAuthentication] = None
53
53
  time_partition_columns: Optional[TimePartitionColumns] = None
54
54
  workgroup: Optional[str] = None
55
- repository: Optional[str] = None
56
-
57
- def _validate(self):
58
- super()._validate()
59
55
 
56
+ @model_validator(mode="after")
57
+ def __validate_athena(self) -> Self:
60
58
  if self.aws_authentication is None:
61
59
  raise AttributeError("`aws_authentication` must be set")
62
60
 
@@ -67,6 +65,7 @@ class AthenaSource(JdbcSource):
67
65
  raise AttributeError(
68
66
  "At least one of: `s3_output_location`, `workgroup` must be set"
69
67
  )
68
+ return self
70
69
 
71
70
  def _to_proto(self, artifact_url: Optional[str] = None) -> ProtoDataSourceSpec:
72
71
  proto_date_partition_columns = None
@@ -122,7 +121,7 @@ class AthenaSource(JdbcSource):
122
121
  )
123
122
 
124
123
  @classmethod
125
- def _from_proto(cls, proto: ProtoBatchSource):
124
+ def _from_proto(cls, proto: ProtoBatchSource) -> Self:
126
125
  proto_jdbc_source: ProtoJdbcSource = proto.jdbcSource
127
126
  proto_athena_source: ProtoAthenaSourceV1 = proto_jdbc_source.athenaSource
128
127
 
@@ -1,5 +1,7 @@
1
- from dataclasses import dataclass
2
1
  from typing import Optional
2
+ from typing_extensions import Self
3
+
4
+ from pydantic import model_validator
3
5
 
4
6
  from frogml._proto.qwak.feature_store.sources.batch_pb2 import (
5
7
  BatchSource as ProtoBatchSource,
@@ -14,7 +16,6 @@ from frogml.core.exceptions import FrogmlException
14
16
  from frogml.feature_store.data_sources.batch._batch import BaseBatchSource
15
17
 
16
18
 
17
- @dataclass
18
19
  class BigQuerySource(BaseBatchSource):
19
20
  credentials_secret_name: str
20
21
  project: Optional[str] = None
@@ -25,9 +26,9 @@ class BigQuerySource(BaseBatchSource):
25
26
  views_enabled: Optional[bool] = False
26
27
  materialization_dataset: Optional[str] = None
27
28
  materialization_project: Optional[str] = None
28
- repository: Optional[str] = None
29
29
 
30
- def __post_init__(self):
30
+ @model_validator(mode="after")
31
+ def __validate_bigquery(self) -> Self:
31
32
  if not (self.sql or (self.table and self.dataset)):
32
33
  raise FrogmlException("Either SQL or (table and dataset) must be provided.")
33
34
 
@@ -42,8 +43,10 @@ class BigQuerySource(BaseBatchSource):
42
43
  )
43
44
  self.views_enabled = True
44
45
 
46
+ return self
47
+
45
48
  @classmethod
46
- def _from_proto(cls, proto):
49
+ def _from_proto(cls, proto) -> Self:
47
50
  bigquery = proto.bigquerySource
48
51
  return cls(
49
52
  name=proto.name,
@@ -1,5 +1,7 @@
1
- from dataclasses import dataclass
2
1
  from typing import Optional
2
+ from typing_extensions import Self
3
+
4
+ from pydantic import model_validator
3
5
 
4
6
  from frogml._proto.qwak.feature_store.sources.batch_pb2 import (
5
7
  BatchSource as ProtoBatchSource,
@@ -14,22 +16,20 @@ from frogml.core.exceptions import FrogmlException
14
16
  from frogml.feature_store.data_sources.batch._batch import BaseBatchSource
15
17
 
16
18
 
17
- @dataclass
18
19
  class ClickhouseSource(BaseBatchSource):
19
20
  username_secret_name: Optional[str] = None
20
21
  password_secret_name: Optional[str] = None
21
22
  url: Optional[str] = None
22
23
  db_table: Optional[str] = None
23
24
  query: Optional[str] = None
24
- repository: Optional[str] = None
25
-
26
- def __post_init__(self):
27
- self._validate()
28
25
 
29
- def _validate(self):
26
+ @model_validator(mode="after")
27
+ def __validate_clickhouse(self) -> Self:
30
28
  if not (bool(self.db_table) ^ bool(self.query)):
31
29
  raise FrogmlException("Only one of query and db_table must be set")
32
30
 
31
+ return self
32
+
33
33
  def _to_proto(self, artifact_url: Optional[str] = None) -> ProtoDataSourceSpec:
34
34
  return ProtoDataSourceSpec(
35
35
  data_source_repository_name=self.repository,
@@ -48,7 +48,7 @@ class ClickhouseSource(BaseBatchSource):
48
48
  )
49
49
 
50
50
  @classmethod
51
- def _from_proto(cls, proto: ProtoBatchSource):
51
+ def _from_proto(cls, proto: ProtoBatchSource) -> Self:
52
52
  clickhouse: ProtoClickhouseSource = proto.clickhouseSource
53
53
  return cls(
54
54
  name=proto.name,
@@ -1,5 +1,5 @@
1
- from dataclasses import dataclass
2
1
  from typing import Optional
2
+ from typing_extensions import Self
3
3
 
4
4
  from frogml._proto.qwak.feature_store.sources.batch_pb2 import (
5
5
  BatchSource as ProtoBatchSource,
@@ -19,16 +19,14 @@ from frogml.feature_store.data_sources.batch.filesystem.utils import (
19
19
  )
20
20
 
21
21
 
22
- @dataclass
23
22
  class CsvSource(BaseBatchSource):
24
23
  path: str
25
24
  quote_character: str = '"'
26
25
  escape_character: str = '"'
27
26
  filesystem_configuration: Optional[FileSystemConfiguration] = None
28
- repository: Optional[str] = None
29
27
 
30
28
  @classmethod
31
- def _from_proto(cls, proto):
29
+ def _from_proto(cls, proto) -> Self:
32
30
  csv = proto.csvSource
33
31
 
34
32
  fs_conf = get_fs_config_from_proto(csv.filesystem_configuration)
@@ -1,5 +1,5 @@
1
- from dataclasses import dataclass
2
1
  from typing import Optional
2
+ from typing_extensions import Self
3
3
 
4
4
  from frogml._proto.qwak.feature_store.sources.batch_pb2 import (
5
5
  BatchSource as ProtoBatchSource,
@@ -13,7 +13,6 @@ from frogml._proto.qwak.feature_store.sources.data_source_pb2 import (
13
13
  from frogml.feature_store.data_sources.batch._batch import BaseBatchSource
14
14
 
15
15
 
16
- @dataclass
17
16
  class ElasticSearchSource(BaseBatchSource):
18
17
  nodes: str
19
18
  resource: str
@@ -23,10 +22,9 @@ class ElasticSearchSource(BaseBatchSource):
23
22
  password_secret_name: Optional[str] = None
24
23
  exclude_fields: Optional[str] = None
25
24
  parse_dates: Optional[bool] = True
26
- repository: Optional[str] = None
27
25
 
28
26
  @classmethod
29
- def _from_proto(cls, proto):
27
+ def _from_proto(cls, proto) -> Self:
30
28
  elastic = proto.elasticsearchSource
31
29
  return cls(
32
30
  name=proto.name,
@@ -1,5 +1,7 @@
1
- from dataclasses import dataclass
2
1
  from typing import Optional
2
+ from typing_extensions import Self
3
+
4
+ from pydantic import model_validator
3
5
 
4
6
  from frogml._proto.qwak.feature_store.sources.batch_pb2 import (
5
7
  AnonymousS3Configuration as ProtoAnonymousS3Configuration,
@@ -19,30 +21,28 @@ from frogml.feature_store.data_sources.batch.filesystem.base_config import (
19
21
  )
20
22
 
21
23
 
22
- @dataclass
23
24
  class AnonymousS3Configuration(FileSystemConfiguration):
24
- def _to_proto(self):
25
+ def _to_proto(self) -> ProtoFileSystemConfiguration:
25
26
  return ProtoFileSystemConfiguration(
26
27
  aws_s3_anonymous=ProtoAnonymousS3Configuration()
27
28
  )
28
29
 
29
30
  @classmethod
30
- def _from_proto(cls, proto):
31
+ def _from_proto(cls, proto: ProtoAnonymousS3Configuration) -> Self:
31
32
  return cls()
32
33
 
33
34
 
34
- @dataclass
35
35
  class AwsS3AssumeRoleFileSystemConfiguration(FileSystemConfiguration):
36
36
  role_arn: str
37
37
 
38
- def __post_init__(self):
39
- self._validate()
40
-
41
- def _validate(self):
38
+ @model_validator(mode="after")
39
+ def __validate_role_arn(self) -> Self:
42
40
  if not self.role_arn:
43
41
  raise FrogmlException("`role_arn` field is mandatory")
44
42
 
45
- def _to_proto(self) -> ProtoAwsS3FileSystemConfiguration:
43
+ return self
44
+
45
+ def _to_proto(self) -> ProtoFileSystemConfiguration:
46
46
  return ProtoFileSystemConfiguration(
47
47
  aws_s3_assume_role_configuration=ProtoAwsS3AssumeRole(
48
48
  role_arn=self.role_arn
@@ -50,21 +50,18 @@ class AwsS3AssumeRoleFileSystemConfiguration(FileSystemConfiguration):
50
50
  )
51
51
 
52
52
  @classmethod
53
- def _from_proto(cls, proto: ProtoAwsS3AssumeRole):
54
- return cls(proto.role_arn)
53
+ def _from_proto(cls, proto: ProtoAwsS3AssumeRole) -> Self:
54
+ return cls(role_arn=proto.role_arn)
55
55
 
56
56
 
57
- @dataclass
58
57
  class AwsS3FileSystemConfiguration(FileSystemConfiguration):
59
- access_key_secret_name: str
60
- secret_key_secret_name: str
61
- bucket: str
58
+ access_key_secret_name: Optional[str] = None
59
+ secret_key_secret_name: Optional[str] = None
60
+ bucket: Optional[str] = None
62
61
  session_token_secret_name: Optional[str] = ""
63
62
 
64
- def __post_init__(self):
65
- self._validate()
66
-
67
- def _validate(self):
63
+ @model_validator(mode="after")
64
+ def __validate_fs_configuration(self) -> Self:
68
65
  error_msg = "{field} field is mandatory"
69
66
  if not self.access_key_secret_name:
70
67
  raise FrogmlException(error_msg.format(field="access_key"))
@@ -73,7 +70,9 @@ class AwsS3FileSystemConfiguration(FileSystemConfiguration):
73
70
  if not self.bucket:
74
71
  raise FrogmlException(error_msg.format(field="bucket"))
75
72
 
76
- def _to_proto(self):
73
+ return self
74
+
75
+ def _to_proto(self) -> ProtoFileSystemConfiguration:
77
76
  return ProtoFileSystemConfiguration(
78
77
  aws_s3_configuration=ProtoAwsS3FileSystemConfiguration(
79
78
  access_key_secret_name=self.access_key_secret_name,
@@ -84,7 +83,7 @@ class AwsS3FileSystemConfiguration(FileSystemConfiguration):
84
83
  )
85
84
 
86
85
  @classmethod
87
- def _from_proto(cls, proto):
86
+ def _from_proto(cls, proto: ProtoAwsS3FileSystemConfiguration) -> Self:
88
87
  return AwsS3FileSystemConfiguration(
89
88
  access_key_secret_name=proto.access_key_secret_name,
90
89
  secret_key_secret_name=proto.secret_key_secret_name,
@@ -1,9 +1,9 @@
1
1
  from abc import ABC, abstractmethod
2
- from dataclasses import dataclass
3
2
 
3
+ from pydantic import BaseModel
4
4
 
5
- @dataclass
6
- class FileSystemConfiguration(ABC):
5
+
6
+ class FileSystemConfiguration(BaseModel, ABC):
7
7
  @abstractmethod
8
8
  def _to_proto(self):
9
9
  pass
@@ -1,5 +1,4 @@
1
- from dataclasses import dataclass
2
-
1
+ from pydantic import model_validator
3
2
  from frogml._proto.qwak.feature_store.sources.batch_pb2 import (
4
3
  FileSystemConfiguration as ProtoFileSystemConfiguration,
5
4
  )
@@ -15,18 +14,16 @@ from frogml.feature_store.data_sources.batch.filesystem.base_config import (
15
14
  )
16
15
 
17
16
 
18
- @dataclass
19
17
  class GcpGcsServiceAccountImpersonation(FileSystemConfiguration):
20
18
  service_account_user: str
21
19
 
22
- def __post_init__(self):
23
- self._validate()
24
-
20
+ @model_validator(mode="after")
25
21
  def _validate(self):
26
22
  if not self.service_account_user or not self.service_account_user.strip():
27
23
  raise FrogmlException(
28
24
  "Service account user is mandatory for GCS service account impersonation, blanks are invalid"
29
25
  )
26
+ return self
30
27
 
31
28
  def _to_proto(self):
32
29
  return ProtoFileSystemConfiguration(
@@ -42,7 +39,6 @@ class GcpGcsServiceAccountImpersonation(FileSystemConfiguration):
42
39
  )
43
40
 
44
41
 
45
- @dataclass
46
42
  class GcpGcsUnauthenticated(FileSystemConfiguration):
47
43
  def _to_proto(self):
48
44
  return ProtoFileSystemConfiguration(
@@ -1,5 +1,5 @@
1
- from dataclasses import dataclass
2
1
  from typing import Optional
2
+ from typing_extensions import Self
3
3
 
4
4
  from frogml._proto.qwak.feature_store.sources.batch_pb2 import (
5
5
  BatchSource as ProtoBatchSource,
@@ -13,7 +13,6 @@ from frogml._proto.qwak.feature_store.sources.data_source_pb2 import (
13
13
  from frogml.feature_store.data_sources.batch._batch import BaseBatchSource
14
14
 
15
15
 
16
- @dataclass
17
16
  class MongoDbSource(BaseBatchSource):
18
17
  hosts: str
19
18
  username_secret_name: str
@@ -22,10 +21,9 @@ class MongoDbSource(BaseBatchSource):
22
21
  collection: str
23
22
  connection_params: str
24
23
  protocol: str = "mongodb"
25
- repository: Optional[str] = None
26
24
 
27
25
  @classmethod
28
- def _from_proto(cls, proto):
26
+ def _from_proto(cls, proto) -> Self:
29
27
  mongo = proto.mongoSource
30
28
  return cls(
31
29
  name=proto.name,
@@ -1,5 +1,5 @@
1
- from dataclasses import dataclass
2
1
  from typing import Optional
2
+ from typing_extensions import Self
3
3
 
4
4
  from frogml._proto.qwak.feature_store.sources.batch_pb2 import (
5
5
  BatchSource as ProtoBatchSource,
@@ -16,10 +16,9 @@ from frogml._proto.qwak.feature_store.sources.data_source_pb2 import (
16
16
  from frogml.feature_store.data_sources.batch._jdbc import JdbcSource
17
17
 
18
18
 
19
- @dataclass
20
19
  class MysqlSource(JdbcSource):
21
20
  @classmethod
22
- def _from_proto(cls, proto):
21
+ def _from_proto(cls, proto) -> Self:
23
22
  mysql = proto.jdbcSource
24
23
  return cls(
25
24
  name=proto.name,
@@ -1,5 +1,7 @@
1
- from dataclasses import dataclass, field
2
1
  from typing import Optional
2
+ from typing_extensions import Self
3
+
4
+ from pydantic import Field
3
5
 
4
6
  from frogml._proto.qwak.feature_store.sources.batch_pb2 import (
5
7
  BatchSource as ProtoBatchSource,
@@ -20,16 +22,14 @@ from frogml.feature_store.data_sources.batch.filesystem.utils import (
20
22
  )
21
23
 
22
24
 
23
- @dataclass
24
25
  class ParquetSource(BaseBatchSource):
25
26
  path: str
26
- filesystem_configuration: FileSystemConfiguration = field(
27
- default_factory=lambda: AnonymousS3Configuration()
27
+ filesystem_configuration: Optional[FileSystemConfiguration] = Field(
28
+ default_factory=AnonymousS3Configuration
28
29
  )
29
- repository: Optional[str] = None
30
30
 
31
31
  @classmethod
32
- def _from_proto(cls, proto):
32
+ def _from_proto(cls, proto: ProtoBatchSource) -> Self:
33
33
  parquet: ProtoParquetSource = proto.parquetSource
34
34
  fs_conf = get_fs_config_from_proto(parquet.filesystem_configuration)
35
35
 
@@ -1,5 +1,5 @@
1
- from dataclasses import dataclass
2
1
  from typing import Optional
2
+ from typing_extensions import Self
3
3
 
4
4
  from frogml._proto.qwak.feature_store.sources.batch_pb2 import (
5
5
  BatchSource as ProtoBatchSource,
@@ -16,7 +16,6 @@ from frogml._proto.qwak.feature_store.sources.data_source_pb2 import (
16
16
  from frogml.feature_store.data_sources.batch._jdbc import JdbcSource
17
17
 
18
18
 
19
- @dataclass
20
19
  class PostgresSource(JdbcSource):
21
20
  def _to_proto(self, artifact_url: Optional[str] = None) -> ProtoDataSourceSpec:
22
21
  return ProtoDataSourceSpec(
@@ -37,7 +36,7 @@ class PostgresSource(JdbcSource):
37
36
  )
38
37
 
39
38
  @classmethod
40
- def _from_proto(cls, proto):
39
+ def _from_proto(cls, proto) -> Self:
41
40
  postgresql = proto.jdbcSource
42
41
  return cls(
43
42
  name=proto.name,
@@ -1,5 +1,7 @@
1
- from dataclasses import dataclass
2
1
  from typing import Optional
2
+ from typing_extensions import Self
3
+
4
+ from pydantic import model_validator
3
5
 
4
6
  from frogml._proto.qwak.feature_store.sources.batch_pb2 import (
5
7
  BatchSource as ProtoBatchSource,
@@ -17,7 +19,6 @@ from frogml.core.exceptions import FrogmlException
17
19
  from frogml.feature_store.data_sources.batch._jdbc import JdbcSource
18
20
 
19
21
 
20
- @dataclass
21
22
  class RedshiftSource(JdbcSource):
22
23
  iam_role_arn: Optional[str] = None
23
24
  db_user: Optional[str] = None
@@ -27,9 +28,8 @@ class RedshiftSource(JdbcSource):
27
28
  secret_access_key: Optional[str] = None
28
29
  query_group: Optional[str] = "_qwak_featurestore"
29
30
 
30
- repository: Optional[str] = None
31
-
32
- def _validate(self):
31
+ @model_validator(mode="after")
32
+ def __validate_redshift(self) -> Self:
33
33
  authentication_methods = sum(
34
34
  [
35
35
  bool(self.access_key and self.secret_access_key),
@@ -48,6 +48,8 @@ class RedshiftSource(JdbcSource):
48
48
  "or user id secret name and password secret name"
49
49
  )
50
50
 
51
+ return self
52
+
51
53
  def _to_proto(self, artifact_url: Optional[str] = None) -> ProtoDataSourceSpec:
52
54
  return ProtoDataSourceSpec(
53
55
  data_source_repository_name=self.repository,
@@ -72,7 +74,7 @@ class RedshiftSource(JdbcSource):
72
74
  )
73
75
 
74
76
  @classmethod
75
- def _from_proto(cls, proto: ProtoBatchSource):
77
+ def _from_proto(cls, proto: ProtoBatchSource) -> Self:
76
78
  redshift = proto.jdbcSource
77
79
  return cls(
78
80
  name=proto.name,
@@ -1,6 +1,8 @@
1
1
  import warnings
2
- from dataclasses import dataclass
3
2
  from typing import Optional
3
+ from typing_extensions import Self
4
+
5
+ from pydantic import Field, model_validator
4
6
 
5
7
  from frogml._proto.qwak.feature_store.sources.batch_pb2 import (
6
8
  BatchSource as ProtoBatchSource,
@@ -17,30 +19,32 @@ from frogml.feature_store.data_sources.batch._batch import BaseBatchSource
17
19
  warnings.simplefilter("once", DeprecationWarning)
18
20
 
19
21
 
20
- @dataclass
21
22
  class SnowflakeSource(BaseBatchSource):
22
23
  host: str
23
24
  username_secret_name: str
24
- database: str
25
- schema: str
25
+ database: Optional[str] = None
26
+ schema_name: Optional[str] = Field(
27
+ default=None, alias="schema", serialization_alias="schema"
28
+ )
26
29
  warehouse: str
27
30
  password_secret_name: Optional[str] = None
28
31
  pem_private_key_secret_name: Optional[str] = None
29
32
  table: Optional[str] = None
30
33
  query: Optional[str] = None
31
- repository: Optional[str] = None
32
34
 
33
- def __post_init__(self):
34
- self._validate()
35
+ @property
36
+ def schema(self) -> Optional[str]:
37
+ return self.schema_name
35
38
 
36
- def _validate(self):
39
+ @model_validator(mode="after")
40
+ def __validate_snowflake(self) -> Self:
37
41
  if not self.username_secret_name:
38
42
  raise FrogmlException("username_secret_name must be set!")
39
43
 
40
44
  if not self.database:
41
45
  raise FrogmlException("database must be set!")
42
46
 
43
- if not self.schema:
47
+ if not self.schema_name:
44
48
  raise FrogmlException("schema must be set!")
45
49
 
46
50
  if self.password_secret_name:
@@ -65,6 +69,8 @@ class SnowflakeSource(BaseBatchSource):
65
69
  if no_auth_set or both_auth_set:
66
70
  raise FrogmlException(no_unique_auth_exception_message)
67
71
 
72
+ return self
73
+
68
74
  def _to_proto(self, artifact_url: Optional[str] = None) -> ProtoDataSourceSpec:
69
75
  return ProtoDataSourceSpec(
70
76
  data_source_repository_name=self.repository,
@@ -78,7 +84,7 @@ class SnowflakeSource(BaseBatchSource):
78
84
  password_secret_name=self.password_secret_name,
79
85
  pem_private_key_secret_name=self.pem_private_key_secret_name,
80
86
  database=self.database,
81
- schema=self.schema,
87
+ schema=self.schema_name,
82
88
  warehouse=self.warehouse,
83
89
  table=self.table,
84
90
  query=self.query,
@@ -87,7 +93,7 @@ class SnowflakeSource(BaseBatchSource):
87
93
  )
88
94
 
89
95
  @classmethod
90
- def _from_proto(cls, proto):
96
+ def _from_proto(cls, proto: ProtoBatchSource) -> Self:
91
97
  snowflake = proto.snowflakeSource
92
98
  return cls(
93
99
  name=proto.name,
@@ -1,5 +1,7 @@
1
- from dataclasses import dataclass
2
1
  from typing import Optional
2
+ from typing_extensions import Self
3
+
4
+ from pydantic import Field, model_validator
3
5
 
4
6
  from frogml._proto.qwak.feature_store.sources.batch_pb2 import (
5
7
  BatchSource as ProtoBatchSource,
@@ -15,7 +17,6 @@ from frogml.feature_store.data_sources.batch._batch import BaseBatchSource
15
17
  RESERVED_CATALOG_NAME = "qwak_catalog"
16
18
 
17
19
 
18
- @dataclass
19
20
  class UnityCatalogSource(BaseBatchSource):
20
21
  """Unity Catalog batch data source.
21
22
 
@@ -40,21 +41,22 @@ class UnityCatalogSource(BaseBatchSource):
40
41
  """
41
42
 
42
43
  uri: str
43
- schema: str
44
+ schema_name: str = Field(alias="schema", serialization_alias="schema")
44
45
  catalog: str
45
46
  personal_access_token_secret_name: Optional[str] = None
46
47
  table: Optional[str] = None
47
48
  query: Optional[str] = None
48
- repository: Optional[str] = None
49
49
 
50
- def __post_init__(self):
51
- self._validate()
50
+ @property
51
+ def schema(self) -> str:
52
+ return self.schema_name
52
53
 
53
- def _validate(self):
54
+ @model_validator(mode="after")
55
+ def __validate_unity_catalog(self) -> Self:
54
56
  if not self.uri:
55
57
  raise FrogmlException("`uri` cannot be empty.")
56
58
 
57
- if not self.schema:
59
+ if not self.schema_name:
58
60
  raise FrogmlException("`schema` cannot be empty.")
59
61
 
60
62
  if not self.catalog:
@@ -73,6 +75,8 @@ class UnityCatalogSource(BaseBatchSource):
73
75
  if bool(self.query) == bool(self.table):
74
76
  raise FrogmlException("Either `query` or `table` must be provided.")
75
77
 
78
+ return self
79
+
76
80
  def _to_proto(self, artifact_url: Optional[str] = None) -> ProtoDataSourceSpec:
77
81
  return ProtoDataSourceSpec(
78
82
  data_source_repository_name=self.repository,
@@ -86,7 +90,7 @@ class UnityCatalogSource(BaseBatchSource):
86
90
  table=self.table,
87
91
  unityCatalogSource=ProtoUnityCatalogSource(
88
92
  catalog=self.catalog,
89
- schema=self.schema,
93
+ schema=self.schema_name,
90
94
  personal_access_token_secret_name=self.personal_access_token_secret_name,
91
95
  ),
92
96
  ),
@@ -94,7 +98,7 @@ class UnityCatalogSource(BaseBatchSource):
94
98
  )
95
99
 
96
100
  @classmethod
97
- def _from_proto(cls, proto: ProtoBatchSource) -> "UnityCatalogSource":
101
+ def _from_proto(cls, proto: ProtoBatchSource) -> Self:
98
102
  catalog_source = proto.catalogSource
99
103
  return cls(
100
104
  name=proto.name,