qwak-core 0.4.278__py3-none-any.whl → 0.5.19__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of qwak-core might be problematic. Click here for more details.

Files changed (361) hide show
  1. _qwak_proto/jfml/hosting_gateway/v1/build_upload_url_pb2.py +8 -23
  2. _qwak_proto/jfml/hosting_gateway/v1/hosting_gateway_service_pb2.py +10 -27
  3. _qwak_proto/qwak/administration/account/v1/account_pb2.py +25 -88
  4. _qwak_proto/qwak/administration/account/v1/account_pb2.pyi +21 -2
  5. _qwak_proto/qwak/administration/account/v1/account_service_pb2.py +42 -187
  6. _qwak_proto/qwak/administration/account/v1/jfrog_tenant_details_pb2.py +26 -114
  7. _qwak_proto/qwak/administration/account/v1/personalization_pb2.py +8 -24
  8. _qwak_proto/qwak/administration/account/v1/preferences_pb2.py +6 -14
  9. _qwak_proto/qwak/administration/account/v1/terms_pb2.py +14 -54
  10. _qwak_proto/qwak/administration/authenticated_user/v1/authenticated_user_service_pb2.py +18 -67
  11. _qwak_proto/qwak/administration/authenticated_user/v1/credentials_pb2.py +8 -24
  12. _qwak_proto/qwak/administration/authenticated_user/v1/credentials_pb2.pyi +1 -1
  13. _qwak_proto/qwak/administration/authenticated_user/v1/details_pb2.py +14 -54
  14. _qwak_proto/qwak/administration/cluster/v2/cluster_pb2.py +38 -173
  15. _qwak_proto/qwak/administration/runtime_configuration/v0/container_registry_config_pb2.py +32 -0
  16. _qwak_proto/qwak/administration/runtime_configuration/v0/container_registry_config_pb2.pyi +65 -0
  17. _qwak_proto/qwak/administration/runtime_configuration/v0/container_registry_config_pb2_grpc.py +4 -0
  18. _qwak_proto/qwak/administration/runtime_configuration/v0/creds/auth_pb2.py +6 -14
  19. _qwak_proto/qwak/administration/runtime_configuration/v0/creds/secret_pb2.py +8 -24
  20. _qwak_proto/qwak/administration/runtime_configuration/v0/data_catalog_config_pb2.py +13 -35
  21. _qwak_proto/qwak/administration/runtime_configuration/v0/data_catalog_config_pb2.pyi +24 -3
  22. _qwak_proto/qwak/administration/runtime_configuration/v0/external/databricks/auth_pb2.py +34 -0
  23. _qwak_proto/qwak/administration/runtime_configuration/v0/external/databricks/auth_pb2.pyi +97 -0
  24. _qwak_proto/qwak/administration/runtime_configuration/v0/external/databricks/auth_pb2_grpc.py +4 -0
  25. _qwak_proto/qwak/administration/runtime_configuration/v0/external/elasticsearch_config_pb2.py +6 -14
  26. _qwak_proto/qwak/administration/runtime_configuration/v0/external/kafka_config_pb2.py +12 -44
  27. _qwak_proto/qwak/administration/runtime_configuration/v0/external/prometheus_config_pb2.py +9 -15
  28. _qwak_proto/qwak/administration/runtime_configuration/v0/external/prometheus_config_pb2.pyi +29 -0
  29. _qwak_proto/qwak/administration/runtime_configuration/v0/external/redis_config_pb2.py +6 -14
  30. _qwak_proto/qwak/administration/runtime_configuration/v0/external/victoriametrics_config_pb2.py +8 -15
  31. _qwak_proto/qwak/administration/runtime_configuration/v0/external/victoriametrics_config_pb2.pyi +16 -0
  32. _qwak_proto/qwak/administration/runtime_configuration/v0/feature_store_config_pb2.py +10 -34
  33. _qwak_proto/qwak/administration/runtime_configuration/v0/hosting/aws/auth_pb2.py +42 -0
  34. _qwak_proto/qwak/administration/runtime_configuration/v0/hosting/aws/auth_pb2.pyi +159 -0
  35. _qwak_proto/qwak/administration/runtime_configuration/v0/hosting/aws/auth_pb2_grpc.py +4 -0
  36. _qwak_proto/qwak/administration/runtime_configuration/v0/hosting/azure/auth_pb2.py +39 -0
  37. _qwak_proto/qwak/administration/runtime_configuration/v0/hosting/azure/auth_pb2.pyi +126 -0
  38. _qwak_proto/qwak/administration/runtime_configuration/v0/hosting/azure/auth_pb2_grpc.py +4 -0
  39. _qwak_proto/qwak/administration/runtime_configuration/v0/hosting_config_pb2.py +19 -55
  40. _qwak_proto/qwak/administration/runtime_configuration/v0/hosting_config_pb2.pyi +38 -6
  41. _qwak_proto/qwak/administration/runtime_configuration/v0/logs_storage_config_pb2.py +6 -14
  42. _qwak_proto/qwak/administration/runtime_configuration/v0/model_analytics_storage_config_pb2.py +6 -14
  43. _qwak_proto/qwak/administration/runtime_configuration/v0/network_config_pb2.py +14 -54
  44. _qwak_proto/qwak/administration/runtime_configuration/v0/object_storage_config_pb2.py +13 -35
  45. _qwak_proto/qwak/administration/runtime_configuration/v0/object_storage_config_pb2.pyi +26 -3
  46. _qwak_proto/qwak/administration/runtime_configuration/v0/observability_config_pb2.py +10 -34
  47. _qwak_proto/qwak/administration/runtime_configuration/v0/runtime_config_pb2.py +8 -15
  48. _qwak_proto/qwak/administration/runtime_configuration/v0/runtime_config_pb2.pyi +7 -2
  49. _qwak_proto/qwak/administration/runtime_configuration/v0/sql_engine_config_pb2.py +13 -35
  50. _qwak_proto/qwak/administration/runtime_configuration/v0/sql_engine_config_pb2.pyi +24 -3
  51. _qwak_proto/qwak/administration/v0/authentication/authentication_service_pb2.py +14 -47
  52. _qwak_proto/qwak/administration/v0/environments/configuration_pb2.py +20 -82
  53. _qwak_proto/qwak/administration/v0/environments/environment_pb2.py +12 -40
  54. _qwak_proto/qwak/administration/v0/environments/environment_service_pb2.py +36 -158
  55. _qwak_proto/qwak/administration/v0/environments/personalization_pb2.py +8 -24
  56. _qwak_proto/qwak/administration/v0/users/user_pb2.py +18 -71
  57. _qwak_proto/qwak/admiral/secret/v0/secret_pb2.py +29 -116
  58. _qwak_proto/qwak/admiral/secret/v0/secret_pb2.pyi +21 -2
  59. _qwak_proto/qwak/admiral/secret/v0/secret_service_pb2.py +18 -67
  60. _qwak_proto/qwak/admiral/secret/v0/system_secret_service_pb2.py +18 -67
  61. _qwak_proto/qwak/admiral/user_application_instance/v0/user_application_instance_pb2.py +38 -174
  62. _qwak_proto/qwak/admiral/user_application_instance/v0/user_application_instance_service_pb2.py +22 -87
  63. _qwak_proto/qwak/analytics/analytics_pb2.py +26 -121
  64. _qwak_proto/qwak/analytics/analytics_service_pb2.py +46 -207
  65. _qwak_proto/qwak/artifactory_settings/artifactory_settings_pb2.py +8 -24
  66. _qwak_proto/qwak/audience/v1/audience_api_pb2.py +30 -127
  67. _qwak_proto/qwak/audience/v1/audience_pb2.py +26 -113
  68. _qwak_proto/qwak/auto_scaling/v1/auto_scaling_pb2.py +18 -79
  69. _qwak_proto/qwak/auto_scaling/v1/auto_scaling_service_pb2.py +10 -27
  70. _qwak_proto/qwak/automation/v1/action_pb2.py +40 -180
  71. _qwak_proto/qwak/automation/v1/auto_scaling_pb2.py +18 -79
  72. _qwak_proto/qwak/automation/v1/automation_execution_pb2.py +12 -43
  73. _qwak_proto/qwak/automation/v1/automation_management_service_pb2.py +56 -258
  74. _qwak_proto/qwak/automation/v1/automation_pb2.py +11 -35
  75. _qwak_proto/qwak/automation/v1/automation_pb2.pyi +5 -1
  76. _qwak_proto/qwak/automation/v1/common_pb2.py +10 -35
  77. _qwak_proto/qwak/automation/v1/notification_pb2.py +16 -68
  78. _qwak_proto/qwak/automation/v1/trigger_pb2.py +14 -54
  79. _qwak_proto/qwak/batch_job/v1/batch_job_events_pb2.py +26 -116
  80. _qwak_proto/qwak/batch_job/v1/batch_job_resources_pb2.py +8 -26
  81. _qwak_proto/qwak/batch_job/v1/batch_job_service_pb2.py +119 -562
  82. _qwak_proto/qwak/batch_job/v1/batch_job_service_pb2.pyi +5 -1
  83. _qwak_proto/qwak/build/v1/build_api_pb2.py +86 -407
  84. _qwak_proto/qwak/build/v1/build_pb2.py +114 -549
  85. _qwak_proto/qwak/build_settings/build_settings_api_pb2.py +18 -67
  86. _qwak_proto/qwak/build_settings/build_settings_pb2.py +18 -74
  87. _qwak_proto/qwak/builds/build_pb2.py +46 -207
  88. _qwak_proto/qwak/builds/build_pb2.pyi +48 -3
  89. _qwak_proto/qwak/builds/build_url_pb2.py +26 -113
  90. _qwak_proto/qwak/builds/build_values_pb2.py +82 -0
  91. _qwak_proto/qwak/builds/build_values_pb2.pyi +559 -0
  92. _qwak_proto/qwak/builds/build_values_pb2_grpc.py +4 -0
  93. _qwak_proto/qwak/builds/builds_orchestrator_service_pb2.py +87 -270
  94. _qwak_proto/qwak/builds/builds_orchestrator_service_pb2.pyi +173 -0
  95. _qwak_proto/qwak/builds/builds_orchestrator_service_pb2_grpc.py +66 -0
  96. _qwak_proto/qwak/builds/builds_pb2.py +87 -528
  97. _qwak_proto/qwak/builds/builds_pb2.pyi +0 -191
  98. _qwak_proto/qwak/builds/builds_pb2_grpc.py +0 -233
  99. _qwak_proto/qwak/builds/internal_builds_orchestrator_service_pb2.py +12 -37
  100. _qwak_proto/qwak/data_versioning/data_versioning_pb2.py +8 -24
  101. _qwak_proto/qwak/data_versioning/data_versioning_service_pb2.py +14 -47
  102. _qwak_proto/qwak/deployment/alert_pb2.py +24 -108
  103. _qwak_proto/qwak/deployment/alert_service_pb2.py +30 -127
  104. _qwak_proto/qwak/deployment/deployment_messages_pb2.py +6 -14
  105. _qwak_proto/qwak/deployment/deployment_pb2.py +124 -588
  106. _qwak_proto/qwak/deployment/deployment_service_pb2.py +86 -419
  107. _qwak_proto/qwak/ecosystem/jfrog/v0/token_pb2.py +47 -165
  108. _qwak_proto/qwak/ecosystem/jfrog/v0/token_pb2.pyi +102 -3
  109. _qwak_proto/qwak/ecosystem/jfrog/v0/token_service_pb2.py +22 -87
  110. _qwak_proto/qwak/ecosystem/v0/auth_pb2.py +28 -0
  111. _qwak_proto/qwak/ecosystem/v0/auth_pb2.pyi +37 -0
  112. _qwak_proto/qwak/ecosystem/v0/auth_pb2_grpc.py +4 -0
  113. _qwak_proto/qwak/ecosystem/v0/azure_credentials_pb2.py +37 -0
  114. _qwak_proto/qwak/ecosystem/v0/azure_credentials_pb2.pyi +117 -0
  115. _qwak_proto/qwak/ecosystem/v0/azure_credentials_pb2_grpc.py +4 -0
  116. _qwak_proto/qwak/ecosystem/v0/credentials_pb2.py +12 -35
  117. _qwak_proto/qwak/ecosystem/v0/credentials_pb2.pyi +8 -3
  118. _qwak_proto/qwak/ecosystem/v0/ecosystem_pb2.py +30 -138
  119. _qwak_proto/qwak/ecosystem/v0/ecosystem_runtime_service_pb2.py +52 -237
  120. _qwak_proto/qwak/execution/v1/backfill_pb2.py +18 -74
  121. _qwak_proto/qwak/execution/v1/batch_pb2.py +10 -34
  122. _qwak_proto/qwak/execution/v1/deletion_pb2.py +12 -44
  123. _qwak_proto/qwak/execution/v1/execution_pb2.py +16 -69
  124. _qwak_proto/qwak/execution/v1/execution_service_pb2.py +64 -298
  125. _qwak_proto/qwak/execution/v1/internal/deployment/platform_details_pb2.py +6 -14
  126. _qwak_proto/qwak/execution/v1/jobs/job_pb2.py +18 -76
  127. _qwak_proto/qwak/execution/v1/jobs/job_service_pb2.py +54 -247
  128. _qwak_proto/qwak/execution/v1/jobs/reports/report_pb2.py +20 -84
  129. _qwak_proto/qwak/execution/v1/state/execution_state_pb2.py +6 -14
  130. _qwak_proto/qwak/execution/v1/state/execution_state_service_pb2.py +30 -127
  131. _qwak_proto/qwak/execution/v1/state/featureset_state_pb2.py +6 -14
  132. _qwak_proto/qwak/execution/v1/state/spark_execution_state_pb2.py +14 -68
  133. _qwak_proto/qwak/execution/v1/streaming_aggregation_pb2.py +22 -55
  134. _qwak_proto/qwak/execution/v1/streaming_aggregation_pb2.pyi +71 -1
  135. _qwak_proto/qwak/execution/v1/streaming_pb2.py +12 -44
  136. _qwak_proto/qwak/feature_store/entities/entity_pb2.py +16 -57
  137. _qwak_proto/qwak/feature_store/entities/entity_service_pb2.py +30 -127
  138. _qwak_proto/qwak/feature_store/features/aggregation_pb2.py +38 -175
  139. _qwak_proto/qwak/feature_store/features/deployment_pb2.py +36 -167
  140. _qwak_proto/qwak/feature_store/features/deployment_service_pb2.py +10 -27
  141. _qwak_proto/qwak/feature_store/features/execution_pb2.py +14 -56
  142. _qwak_proto/qwak/feature_store/features/feature_set_attribute_pb2.py +6 -14
  143. _qwak_proto/qwak/feature_store/features/feature_set_pb2.py +35 -156
  144. _qwak_proto/qwak/feature_store/features/feature_set_pb2.pyi +9 -1
  145. _qwak_proto/qwak/feature_store/features/feature_set_service_pb2.py +97 -440
  146. _qwak_proto/qwak/feature_store/features/feature_set_service_pb2.pyi +25 -0
  147. _qwak_proto/qwak/feature_store/features/feature_set_service_pb2_grpc.py +34 -0
  148. _qwak_proto/qwak/feature_store/features/feature_set_state_pb2.py +38 -181
  149. _qwak_proto/qwak/feature_store/features/feature_set_state_service_pb2.py +26 -107
  150. _qwak_proto/qwak/feature_store/features/feature_set_types_pb2.py +77 -347
  151. _qwak_proto/qwak/feature_store/features/feature_set_types_pb2.pyi +7 -2
  152. _qwak_proto/qwak/feature_store/features/monitoring_pb2.py +10 -34
  153. _qwak_proto/qwak/feature_store/features/real_time_feature_extractor_pb2.py +32 -143
  154. _qwak_proto/qwak/feature_store/jobs/job_pb2.py +12 -46
  155. _qwak_proto/qwak/feature_store/jobs/job_service_pb2.py +30 -127
  156. _qwak_proto/qwak/feature_store/jobs/v1/job_pb2.py +12 -45
  157. _qwak_proto/qwak/feature_store/jobs/v1/job_service_pb2.py +42 -187
  158. _qwak_proto/qwak/feature_store/platform/platform_details_pb2.py +8 -24
  159. _qwak_proto/qwak/feature_store/reports/report_pb2.py +14 -53
  160. _qwak_proto/qwak/feature_store/repository/common/platform_pb2.py +10 -34
  161. _qwak_proto/qwak/feature_store/serving/management_pb2.py +14 -47
  162. _qwak_proto/qwak/feature_store/serving/metadata_pb2.py +12 -44
  163. _qwak_proto/qwak/feature_store/serving/serving_pb2.py +50 -222
  164. _qwak_proto/qwak/feature_store/serving/v1/value_pb2.py +8 -24
  165. _qwak_proto/qwak/feature_store/sinks/sink_pb2.py +14 -54
  166. _qwak_proto/qwak/feature_store/sources/batch_pb2.py +79 -335
  167. _qwak_proto/qwak/feature_store/sources/batch_pb2.pyi +99 -7
  168. _qwak_proto/qwak/feature_store/sources/data_source_attribute_pb2.py +6 -14
  169. _qwak_proto/qwak/feature_store/sources/data_source_pb2.py +15 -55
  170. _qwak_proto/qwak/feature_store/sources/data_source_pb2.pyi +5 -1
  171. _qwak_proto/qwak/feature_store/sources/data_source_service_pb2.py +39 -148
  172. _qwak_proto/qwak/feature_store/sources/data_source_service_pb2.pyi +25 -0
  173. _qwak_proto/qwak/feature_store/sources/data_source_service_pb2_grpc.py +34 -0
  174. _qwak_proto/qwak/feature_store/sources/streaming_pb2.py +34 -146
  175. _qwak_proto/qwak/feature_store/v1/common/jfrog_artifact/jfrog_artifact_pb2.py +6 -14
  176. _qwak_proto/qwak/feature_store/v1/common/source_code/source_code_pb2.py +10 -34
  177. _qwak_proto/qwak/feature_store/v1/internal/data_source/data_source_service_pb2.py +16 -58
  178. _qwak_proto/qwak/feature_store/v1/internal/featureset/featureset_token_service_pb2.py +10 -27
  179. _qwak_proto/qwak/features_operator/v1/features_operator_pb2.py +14 -54
  180. _qwak_proto/qwak/features_operator/v1/features_operator_service_pb2.py +14 -47
  181. _qwak_proto/qwak/features_operator/v2/features_operator_pb2.py +16 -64
  182. _qwak_proto/qwak/features_operator/v2/features_operator_service_pb2.py +12 -37
  183. _qwak_proto/qwak/features_operator/v3/features_operator_async_service_pb2.py +26 -107
  184. _qwak_proto/qwak/features_operator/v3/features_operator_pb2.py +16 -64
  185. _qwak_proto/qwak/file_versioning/file_versioning_pb2.py +10 -33
  186. _qwak_proto/qwak/file_versioning/file_versioning_service_pb2.py +14 -47
  187. _qwak_proto/qwak/fitness_service/constructs_pb2.py +23 -100
  188. _qwak_proto/qwak/fitness_service/constructs_pb2.pyi +24 -0
  189. _qwak_proto/qwak/fitness_service/fitness_pb2.py +7 -34
  190. _qwak_proto/qwak/fitness_service/fitness_pb2.pyi +0 -93
  191. _qwak_proto/qwak/fitness_service/status_pb2.py +17 -108
  192. _qwak_proto/qwak/fitness_service/status_pb2.pyi +1 -121
  193. _qwak_proto/qwak/inference/feedback/feedback_pb2.py +28 -96
  194. _qwak_proto/qwak/instance_template/instance_template_pb2.py +13 -41
  195. _qwak_proto/qwak/instance_template/instance_template_pb2.pyi +4 -1
  196. _qwak_proto/qwak/instance_template/instance_template_service_pb2.py +14 -47
  197. _qwak_proto/qwak/integration/hugging_face_integration_pb2.py +16 -64
  198. _qwak_proto/qwak/integration/integration_pb2.py +28 -126
  199. _qwak_proto/qwak/integration/integration_service_pb2.py +34 -147
  200. _qwak_proto/qwak/integration/open_a_i_integration_pb2.py +16 -64
  201. _qwak_proto/qwak/integration/opsgenie_integration_pb2.py +20 -82
  202. _qwak_proto/qwak/integration/pagerduty_integration_pb2.py +24 -104
  203. _qwak_proto/qwak/integration/slack_app_integration_pb2.py +24 -104
  204. _qwak_proto/qwak/kube_deployment_captain/alert_pb2.py +22 -97
  205. _qwak_proto/qwak/kube_deployment_captain/alerting_pb2.py +12 -44
  206. _qwak_proto/qwak/kube_deployment_captain/batch_job_pb2.py +70 -323
  207. _qwak_proto/qwak/kube_deployment_captain/batch_job_pb2.pyi +20 -5
  208. _qwak_proto/qwak/kube_deployment_captain/deployment_pb2.py +44 -167
  209. _qwak_proto/qwak/kube_deployment_captain/feature_set_deployment_pb2.py +32 -144
  210. _qwak_proto/qwak/kube_deployment_captain/kube_deployment_captain_service_pb2.py +108 -519
  211. _qwak_proto/qwak/kube_deployment_captain/traffic_mapping_pb2.py +8 -24
  212. _qwak_proto/qwak/logging/log_filter_pb2.py +12 -44
  213. _qwak_proto/qwak/logging/log_line_pb2.py +8 -25
  214. _qwak_proto/qwak/logging/log_reader_service_pb2.py +10 -27
  215. _qwak_proto/qwak/logging/log_source_pb2.py +30 -134
  216. _qwak_proto/qwak/model_descriptor/open_ai_descriptor_pb2.py +18 -74
  217. _qwak_proto/qwak/model_group/model_group_pb2.py +25 -48
  218. _qwak_proto/qwak/model_group/model_group_pb2.pyi +88 -0
  219. _qwak_proto/qwak/model_group/model_group_pb2_grpc.py +70 -0
  220. _qwak_proto/qwak/model_group/model_group_repository_details_pb2.py +23 -75
  221. _qwak_proto/qwak/model_group/model_group_repository_details_pb2.pyi +44 -6
  222. _qwak_proto/qwak/models/models_pb2.py +99 -406
  223. _qwak_proto/qwak/models/models_pb2.pyi +86 -0
  224. _qwak_proto/qwak/models/models_pb2_grpc.py +34 -0
  225. _qwak_proto/qwak/models/models_query_pb2.py +16 -56
  226. _qwak_proto/qwak/models/models_query_pb2.pyi +4 -4
  227. _qwak_proto/qwak/monitoring/v0/alerting_channel_management_service_pb2.py +30 -127
  228. _qwak_proto/qwak/monitoring/v0/alerting_channel_pb2.py +34 -152
  229. _qwak_proto/qwak/monitoring/v0/alerting_channel_sync_service_pb2.py +14 -47
  230. _qwak_proto/qwak/offline/serving/v1/feature_values_pb2.py +6 -14
  231. _qwak_proto/qwak/offline/serving/v1/offline_serving_async_service_pb2.py +30 -123
  232. _qwak_proto/qwak/offline/serving/v1/options_pb2.py +6 -14
  233. _qwak_proto/qwak/offline/serving/v1/population_pb2.py +14 -54
  234. _qwak_proto/qwak/projects/jfrog_project_spec_pb2.py +6 -14
  235. _qwak_proto/qwak/projects/projects_pb2.py +50 -192
  236. _qwak_proto/qwak/projects/projects_pb2.pyi +35 -0
  237. _qwak_proto/qwak/prompt/v1/prompt/prompt_manager_service_pb2.py +54 -247
  238. _qwak_proto/qwak/prompt/v1/prompt/prompt_pb2.py +46 -214
  239. _qwak_proto/qwak/secret_service/secret_service_pb2.py +18 -67
  240. _qwak_proto/qwak/secret_service/secret_service_pb2.pyi +1 -1
  241. _qwak_proto/qwak/self_service/account/v0/account_membership_pb2.py +24 -106
  242. _qwak_proto/qwak/self_service/account/v0/account_membership_service_pb2.py +50 -227
  243. _qwak_proto/qwak/self_service/account/v0/account_status_pb2.py +16 -65
  244. _qwak_proto/qwak/self_service/account/v0/managing_account_pb2.py +37 -132
  245. _qwak_proto/qwak/self_service/account/v0/managing_account_pb2.pyi +40 -2
  246. _qwak_proto/qwak/self_service/account/v0/managing_account_service_pb2.py +22 -87
  247. _qwak_proto/qwak/self_service/user/v1/api_key_pb2.py +6 -14
  248. _qwak_proto/qwak/self_service/user/v1/user_pb2.py +6 -14
  249. _qwak_proto/qwak/self_service/user/v1/user_service_pb2.py +30 -121
  250. _qwak_proto/qwak/service_discovery/service_discovery_location_pb2.py +12 -44
  251. _qwak_proto/qwak/service_discovery/service_discovery_location_service_pb2.py +10 -27
  252. _qwak_proto/qwak/traffic/v1/traffic_api_pb2.py +22 -87
  253. _qwak_proto/qwak/traffic/v1/traffic_pb2.py +26 -113
  254. _qwak_proto/qwak/user_application/common/v0/resources_pb2.py +31 -139
  255. _qwak_proto/qwak/user_application/common/v0/resources_pb2.pyi +24 -0
  256. _qwak_proto/qwak/user_application/v0/user_application_pb2.py +11 -44
  257. _qwak_proto/qwak/user_application/v0/user_application_pb2.pyi +6 -0
  258. _qwak_proto/qwak/vectors/v1/collection/collection_pb2.py +24 -106
  259. _qwak_proto/qwak/vectors/v1/collection/collection_service_pb2.py +38 -167
  260. _qwak_proto/qwak/vectors/v1/collection/event/collection_event_pb2.py +6 -14
  261. _qwak_proto/qwak/vectors/v1/filters_pb2.py +30 -134
  262. _qwak_proto/qwak/vectors/v1/vector_pb2.py +14 -54
  263. _qwak_proto/qwak/vectors/v1/vector_service_pb2.py +26 -107
  264. _qwak_proto/qwak/workspace/workspace_pb2.py +22 -107
  265. _qwak_proto/qwak/workspace/workspace_service_pb2.py +62 -287
  266. qwak/__init__.py +1 -1
  267. qwak/automations/automations.py +3 -0
  268. qwak/clients/feature_store/execution_management_client.py +28 -0
  269. qwak/clients/feature_store/management_client.py +156 -206
  270. qwak/clients/feature_store/operator_client.py +19 -1
  271. qwak/clients/logging_client/client.py +13 -18
  272. qwak/clients/model_management/client.py +0 -5
  273. qwak/clients/project/client.py +0 -7
  274. qwak/exceptions/__init__.py +1 -0
  275. qwak/exceptions/qwak_grpc_address_exception.py +9 -0
  276. qwak/feature_store/_common/artifact_utils.py +10 -8
  277. qwak/feature_store/_common/packaging.py +39 -21
  278. qwak/feature_store/_common/source_code_spec.py +61 -11
  279. qwak/feature_store/_common/source_code_spec_factory.py +63 -10
  280. qwak/feature_store/data_sources/__init__.py +2 -0
  281. qwak/feature_store/data_sources/base.py +11 -7
  282. qwak/feature_store/data_sources/batch/snowflake.py +34 -8
  283. qwak/feature_store/data_sources/batch/unity_catalog.py +107 -0
  284. qwak/feature_store/execution/streaming_backfill.py +48 -0
  285. qwak/feature_store/feature_sets/base_feature_set.py +1 -0
  286. qwak/feature_store/feature_sets/streaming.py +84 -63
  287. qwak/feature_store/feature_sets/streaming_backfill.py +88 -124
  288. qwak/feature_store/online/client.py +20 -4
  289. qwak/feature_store/validations/validation_decorators.py +70 -0
  290. qwak/feature_store/validations/validation_response.py +3 -1
  291. qwak/feature_store/validations/validator.py +11 -3
  292. qwak/inner/build_logic/interface/context_interface.py +4 -0
  293. qwak/inner/build_logic/phases/phase_010_fetch_model/post_fetch_validation_step.py +1 -1
  294. qwak/inner/const.py +2 -6
  295. qwak/inner/di_configuration/__init__.py +1 -69
  296. qwak/inner/di_configuration/account.py +18 -63
  297. qwak/inner/di_configuration/containers.py +5 -1
  298. qwak/inner/di_configuration/dependency_wiring.py +98 -0
  299. qwak/inner/tool/auth.py +10 -80
  300. qwak/inner/tool/grpc/grpc_auth.py +0 -32
  301. qwak/inner/tool/grpc/grpc_tools.py +125 -11
  302. qwak/inner/tool/grpc/grpc_try_wrapping.py +140 -3
  303. qwak/llmops/generation/chat/openai/types/chat/chat_completion.py +24 -6
  304. qwak/llmops/generation/chat/openai/types/chat/chat_completion_chunk.py +44 -8
  305. qwak/llmops/generation/chat/openai/types/chat/chat_completion_message.py +6 -3
  306. qwak/qwak_client/client.py +2 -13
  307. qwak/vector_store/rest_helpers.py +4 -16
  308. qwak_core-0.5.19.dist-info/METADATA +48 -0
  309. {qwak_core-0.4.278.dist-info → qwak_core-0.5.19.dist-info}/RECORD +316 -334
  310. qwak_services_mock/mocks/execution_management_service.py +9 -1
  311. qwak_services_mock/mocks/feature_store_data_sources_manager_api.py +55 -13
  312. qwak_services_mock/mocks/feature_store_entities_manager_api.py +31 -29
  313. qwak_services_mock/mocks/features_operator_v3_service.py +20 -0
  314. qwak_services_mock/mocks/qwak_mocks.py +0 -2
  315. qwak_services_mock/services_mock.py +1 -11
  316. _qwak_proto/qwak/fitness_service/fitness_service_pb2.py +0 -110
  317. _qwak_proto/qwak/fitness_service/fitness_service_pb2.pyi +0 -121
  318. _qwak_proto/qwak/fitness_service/fitness_service_pb2_grpc.py +0 -169
  319. frogml_storage/__init__.py +0 -1
  320. frogml_storage/artifactory/__init__.py +0 -1
  321. frogml_storage/artifactory/_artifactory_api.py +0 -315
  322. frogml_storage/authentication/login/__init__.py +0 -1
  323. frogml_storage/authentication/login/_login_cli.py +0 -239
  324. frogml_storage/authentication/login/_login_command.py +0 -74
  325. frogml_storage/authentication/models/__init__.py +0 -3
  326. frogml_storage/authentication/models/_auth.py +0 -24
  327. frogml_storage/authentication/models/_auth_config.py +0 -70
  328. frogml_storage/authentication/models/_login.py +0 -22
  329. frogml_storage/authentication/utils/__init__.py +0 -17
  330. frogml_storage/authentication/utils/_authentication_utils.py +0 -281
  331. frogml_storage/authentication/utils/_login_checks_utils.py +0 -114
  332. frogml_storage/base_storage.py +0 -140
  333. frogml_storage/constants.py +0 -56
  334. frogml_storage/exceptions/checksum_verification_error.py +0 -3
  335. frogml_storage/exceptions/validation_error.py +0 -4
  336. frogml_storage/frog_ml.py +0 -668
  337. frogml_storage/http/__init__.py +0 -1
  338. frogml_storage/http/http_client.py +0 -83
  339. frogml_storage/logging/__init__.py +0 -1
  340. frogml_storage/logging/_log_config.py +0 -45
  341. frogml_storage/logging/log_utils.py +0 -21
  342. frogml_storage/models/__init__.py +0 -1
  343. frogml_storage/models/_download_context.py +0 -54
  344. frogml_storage/models/dataset_manifest.py +0 -13
  345. frogml_storage/models/entity_manifest.py +0 -93
  346. frogml_storage/models/frogml_dataset_version.py +0 -21
  347. frogml_storage/models/frogml_entity_type_info.py +0 -50
  348. frogml_storage/models/frogml_entity_version.py +0 -34
  349. frogml_storage/models/frogml_model_version.py +0 -21
  350. frogml_storage/models/model_manifest.py +0 -60
  351. frogml_storage/models/serialization_metadata.py +0 -15
  352. frogml_storage/utils/__init__.py +0 -12
  353. frogml_storage/utils/_environment.py +0 -21
  354. frogml_storage/utils/_input_checks_utility.py +0 -104
  355. frogml_storage/utils/_storage_utils.py +0 -15
  356. frogml_storage/utils/_url_utils.py +0 -27
  357. qwak/clients/build_management/__init__.py +0 -1
  358. qwak/clients/build_management/client.py +0 -114
  359. qwak_core-0.4.278.dist-info/METADATA +0 -415
  360. qwak_services_mock/mocks/build_management.py +0 -100
  361. {qwak_core-0.4.278.dist-info → qwak_core-0.5.19.dist-info}/WHEEL +0 -0
@@ -1,281 +0,0 @@
1
- import http
2
- import json
3
- import os
4
- from typing import Optional, Tuple, Union, List
5
-
6
- import requests
7
- from requests.auth import AuthBase, HTTPBasicAuth
8
-
9
- from frogml_storage.utils import join_url
10
- from frogml_storage.artifactory import ArtifactoryApi
11
- from frogml_storage.authentication.models import (
12
- BearerAuth,
13
- EmptyAuth,
14
- AuthConfig,
15
- LoginArguments,
16
- )
17
- from frogml_storage.constants import (
18
- CONFIG_FILE_PATH,
19
- FROG_ML_CONFIG_ACCESS_TOKEN,
20
- FROG_ML_CONFIG_ARTIFACTORY_URL,
21
- FROG_ML_CONFIG_PASSWORD,
22
- FROG_ML_CONFIG_USER,
23
- JF_ACCESS_TOKEN,
24
- JF_URL,
25
- JFROG_CLI_CONFIG_ACCESS_TOKEN,
26
- JFROG_CLI_CONFIG_ARTIFACTORY_URL,
27
- JFROG_CLI_CONFIG_FILE_PATH,
28
- JFROG_CLI_CONFIG_PASSWORD,
29
- JFROG_CLI_CONFIG_URL,
30
- JFROG_CLI_CONFIG_USER,
31
- SERVER_ID,
32
- )
33
- from frogml_storage.logging import logger
34
-
35
-
36
- def read_jfrog_cli_config() -> Union[dict, None]:
37
- try:
38
- with open(JFROG_CLI_CONFIG_FILE_PATH, "r") as file:
39
- config_data = json.load(file)
40
- return config_data
41
- except FileNotFoundError:
42
- logger.debug("JFrog cli config file was not found.")
43
- return None
44
- except json.JSONDecodeError as e:
45
- print(f"JFrog cli config file is not a valid JSON {e}.")
46
- return None
47
-
48
-
49
- def read_frogml_config() -> Union[dict, None]:
50
- try:
51
- with open(CONFIG_FILE_PATH, "r") as file:
52
- config_data = json.load(file)
53
- return config_data
54
- except FileNotFoundError:
55
- logger.debug("FrogMl config file was not found.")
56
- return None
57
- except json.JSONDecodeError as e:
58
- print(f"FrogMl config file is not a valid JSON {e}.")
59
- return None
60
-
61
-
62
- def parse_cli_config_server(server_config: dict) -> Union[LoginArguments, None]:
63
- login_args = LoginArguments()
64
- login_args.server_id = server_config.get(SERVER_ID)
65
-
66
- if JFROG_CLI_CONFIG_ARTIFACTORY_URL in server_config:
67
- login_args.artifactory_url = server_config.get(JFROG_CLI_CONFIG_ARTIFACTORY_URL)
68
- elif (
69
- JFROG_CLI_CONFIG_URL in server_config
70
- and server_config.get(JFROG_CLI_CONFIG_URL) is not None
71
- ):
72
- login_args.artifactory_url = join_url(
73
- server_config[JFROG_CLI_CONFIG_URL], "artifactory"
74
- )
75
- else:
76
- logger.debug(
77
- "Invalid JFrog CLI file, expected either artifactoryUrl or url in jfrog cli config file"
78
- )
79
- return None
80
-
81
- if JFROG_CLI_CONFIG_ACCESS_TOKEN in server_config:
82
- login_args.access_token = server_config.get(JFROG_CLI_CONFIG_ACCESS_TOKEN)
83
- elif (
84
- JFROG_CLI_CONFIG_USER in server_config
85
- and JFROG_CLI_CONFIG_PASSWORD in server_config
86
- ):
87
- login_args.username = server_config.get(JFROG_CLI_CONFIG_USER)
88
- login_args.password = server_config.get(JFROG_CLI_CONFIG_PASSWORD)
89
- else:
90
- logger.debug(
91
- "Expected either accessToken or user/password in jfrog cli config file"
92
- )
93
- return None
94
-
95
- return login_args
96
-
97
-
98
- def get_frogml_configuration() -> Union[LoginArguments, None]:
99
- frog_ml_config = read_frogml_config()
100
- if (
101
- frog_ml_config is not None
102
- and frog_ml_config.get("servers") is not None
103
- and len(frog_ml_config["servers"]) > 0
104
- ):
105
- server_config = frog_ml_config["servers"][0]
106
- login_args = LoginArguments()
107
- if FROG_ML_CONFIG_ARTIFACTORY_URL in server_config:
108
- login_args.artifactory_url = server_config.get(
109
- FROG_ML_CONFIG_ARTIFACTORY_URL
110
- )
111
- else:
112
- logger.debug(
113
- "Invalid FrogMl authentication file, expected either artifactory_url in FrogMl authentication file"
114
- )
115
- return None
116
-
117
- if FROG_ML_CONFIG_ACCESS_TOKEN in server_config:
118
- login_args.access_token = server_config.get(FROG_ML_CONFIG_ACCESS_TOKEN)
119
- elif (
120
- FROG_ML_CONFIG_USER in server_config
121
- and FROG_ML_CONFIG_PASSWORD in server_config
122
- ):
123
- login_args.username = server_config.get(FROG_ML_CONFIG_USER)
124
- login_args.password = server_config.get(FROG_ML_CONFIG_PASSWORD)
125
- elif (
126
- FROG_ML_CONFIG_USER in server_config
127
- and FROG_ML_CONFIG_PASSWORD not in server_config
128
- or (
129
- FROG_ML_CONFIG_USER not in server_config
130
- and FROG_ML_CONFIG_PASSWORD in server_config
131
- )
132
- ):
133
- logger.debug(
134
- "Invalid FrogMl authentication file, username or password is missing in FrogMl authentication file"
135
- )
136
- return None
137
- elif (
138
- login_args.username is None
139
- and login_args.password is None
140
- and login_args.access_token is None
141
- ):
142
- login_args.isAnonymous = True
143
- return login_args
144
- else:
145
- return None
146
-
147
-
148
- def get_encrypted_password(
149
- auth_config: AuthConfig, auth_token: AuthBase
150
- ) -> Optional[str]:
151
- try:
152
- response = ArtifactoryApi(
153
- auth_config.artifactory_url, auth_token
154
- ).encrypt_password()
155
- if response.status_code != http.HTTPStatus.OK:
156
- logger.debug(
157
- f"Expected {http.HTTPStatus.OK} status but got {response.status_code} "
158
- f"when using url {auth_config.artifactory_url}"
159
- )
160
- print("Error while trying to encrypt password.")
161
- return None
162
- return response.text
163
- except requests.exceptions.RequestException as e:
164
- print(f"Error while trying to encrypt password: {e}.")
165
- return None
166
-
167
-
168
- def save_auth_config(auth_config: AuthConfig) -> None:
169
- file_content: dict[str, list] = {}
170
- file_content.setdefault("servers", []).append(auth_config.to_json())
171
- os.makedirs(os.path.dirname(CONFIG_FILE_PATH), exist_ok=True)
172
- with open(CONFIG_FILE_PATH, "w") as file:
173
- json.dump(file_content, file, indent=2)
174
-
175
-
176
- def get_credentials(auth_config: Optional[AuthConfig] = None) -> Tuple[str, AuthBase]:
177
- if not __should_use_file_auth(auth_config):
178
- __validate_credentials(auth_config)
179
- return __auth_config_to_auth_tuple(auth_config)
180
- logger.debug(
181
- "Login configuration not supplied, attempting to find environment variables"
182
- )
183
-
184
- if __should_use_environment_variables():
185
- return get_environment_variables()
186
-
187
- logger.debug(
188
- "Environment variables not supplied, attempting to load configuration from file"
189
- )
190
-
191
- if os.path.exists(CONFIG_FILE_PATH):
192
- return __read_credentials_from_file(CONFIG_FILE_PATH)
193
- raise ValueError(
194
- f"Configuration were not provided and configuration file not found in {CONFIG_FILE_PATH},"
195
- f" either pass configuration in the constructor, add env variables or create the configuration file by "
196
- f"running `frogml login`"
197
- )
198
-
199
-
200
- def __should_use_environment_variables() -> bool:
201
- return os.getenv("JF_URL") is not None
202
-
203
-
204
- def get_environment_variables() -> Tuple[str, AuthBase]:
205
- auth_config: AuthConfig = AuthConfig(
206
- artifactory_url=os.getenv(JF_URL),
207
- access_token=os.getenv(JF_ACCESS_TOKEN),
208
- )
209
-
210
- return __auth_config_to_auth_tuple(auth_config)
211
-
212
-
213
- def __should_use_file_auth(credentials: Optional[AuthConfig] = None) -> bool:
214
- return credentials is None or (
215
- credentials.artifactory_url is None
216
- and credentials.user is None
217
- and credentials.password is None
218
- and credentials.access_token is None
219
- )
220
-
221
-
222
- def __validate_credentials(credentials: Optional[AuthConfig]) -> None:
223
- if credentials is None:
224
- raise ValueError("Credentials must be provided.")
225
- if credentials.artifactory_url is None:
226
- raise ValueError("Credentials must contain artifactory url.")
227
- return None
228
-
229
-
230
- def __read_credentials_from_file(file_path: str) -> Tuple[str, AuthBase]:
231
- try:
232
- with open(file_path, "r") as file:
233
- config_content: dict = json.load(file)
234
- servers = config_content.get("servers")
235
- if servers is None or len(servers) == 0:
236
- raise ValueError(
237
- "Configuration file was found but it's empty, failing authentication"
238
- )
239
- server = servers[0]
240
- return __auth_config_to_auth_tuple(AuthConfig.from_dict(server))
241
- except json.JSONDecodeError:
242
- raise ValueError(f"Error when reading {file_path}, please recreate the file.")
243
-
244
-
245
- def __auth_config_to_auth_tuple(
246
- auth_config: Optional[AuthConfig],
247
- ) -> Tuple[str, AuthBase]:
248
-
249
- if auth_config is None:
250
- raise ValueError("No authentication configuration provided")
251
-
252
- auth: AuthBase = EmptyAuth()
253
- if auth_config.access_token is not None:
254
- auth = BearerAuth(auth_config.access_token)
255
- elif auth_config.user is not None and auth_config.password is not None:
256
- auth = HTTPBasicAuth(auth_config.user, auth_config.password)
257
- elif auth_config.user is not None or auth_config.password is not None:
258
- raise ValueError("User and password must be provided together")
259
-
260
- if auth_config.artifactory_url is None:
261
- raise ValueError("No artifactory URL provided")
262
-
263
- return auth_config.artifactory_url, auth
264
-
265
-
266
- def get_list_of_servers_from_config(jfrog_cli_config: dict) -> List[str]:
267
- if jfrog_cli_config is not None:
268
- servers = jfrog_cli_config.get("servers")
269
- if servers is not None:
270
- return list(map(__map_server_ids, servers))
271
-
272
- return []
273
-
274
-
275
- def __map_server_ids(server: dict) -> str:
276
- server_id = ""
277
- if server is not None:
278
- server_id = str(server.get("serverId"))
279
- if server.get("isDefault") is not None and bool(server.get("isDefault")):
280
- server_id = server_id + " (Default)"
281
- return server_id
@@ -1,114 +0,0 @@
1
- from typing import Optional
2
-
3
- from frogml_storage.authentication.models import AuthConfig
4
-
5
-
6
- def login_input_checks(
7
- url: Optional[str] = None,
8
- username: Optional[str] = None,
9
- password: Optional[str] = None,
10
- token: Optional[str] = None,
11
- anonymous: bool = False,
12
- ) -> bool:
13
- return (
14
- __is_user_name_password_command(url, username, password, token, anonymous)
15
- or __is_access_token_command(url, username, password, token, anonymous)
16
- or __is_anonymous_command(url, username, password, token, anonymous)
17
- )
18
-
19
-
20
- def is_login_without_params(
21
- url: Optional[str] = None,
22
- username: Optional[str] = None,
23
- password: Optional[str] = None,
24
- token: Optional[str] = None,
25
- anonymous: bool = False,
26
- ) -> bool:
27
- return (
28
- all(params is None for params in [url, username, password, token])
29
- and not anonymous
30
- )
31
-
32
-
33
- def is_username_password_login(
34
- auth_config: AuthConfig, anonymous: Optional[bool] = False
35
- ) -> bool:
36
- return __is_user_name_password_command(
37
- url=auth_config.artifactory_url,
38
- username=auth_config.user,
39
- password=auth_config.password,
40
- token=auth_config.access_token,
41
- anonymous=anonymous,
42
- )
43
-
44
-
45
- def is_access_token_login(
46
- auth_config: AuthConfig, anonymous: Optional[bool] = False
47
- ) -> bool:
48
- if anonymous is None:
49
- anonymous = False
50
- return __is_access_token_command(
51
- url=auth_config.artifactory_url,
52
- username=auth_config.user,
53
- password=auth_config.password,
54
- token=auth_config.access_token,
55
- anonymous=anonymous,
56
- )
57
-
58
-
59
- def is_anonymous_login(
60
- auth_config: AuthConfig, anonymous: Optional[bool] = False
61
- ) -> bool:
62
- if anonymous is None:
63
- anonymous = False
64
- return __is_anonymous_command(
65
- url=auth_config.artifactory_url,
66
- username=auth_config.user,
67
- password=auth_config.password,
68
- token=auth_config.access_token,
69
- anonymous=anonymous,
70
- )
71
-
72
-
73
- def __is_anonymous_command(
74
- url: Optional[str],
75
- username: Optional[str],
76
- password: Optional[str],
77
- token: Optional[str],
78
- anonymous: bool,
79
- ) -> bool:
80
- return (
81
- anonymous
82
- and all(params is None for params in [username, password, token])
83
- and url is not None
84
- )
85
-
86
-
87
- def __is_access_token_command(
88
- url: Optional[str],
89
- username: Optional[str],
90
- password: Optional[str],
91
- token: Optional[str],
92
- anonymous: bool,
93
- ) -> bool:
94
- if anonymous:
95
- return False
96
- return all(params is None for params in [username, password]) and all(
97
- params is not None for params in [url, token]
98
- )
99
-
100
-
101
- def __is_user_name_password_command(
102
- url: Optional[str],
103
- username: Optional[str],
104
- password: Optional[str],
105
- token: Optional[str],
106
- anonymous: Optional[bool] = False,
107
- ) -> bool:
108
- return (
109
- not anonymous
110
- and url is not None
111
- and username is not None
112
- and password is not None
113
- and token is None
114
- )
@@ -1,140 +0,0 @@
1
- from abc import ABC, abstractmethod
2
- from typing import Dict, List, Optional, Union
3
-
4
- from frogml_storage.models.frogml_dataset_version import FrogMLDatasetVersion
5
- from frogml_storage.models.frogml_model_version import FrogMLModelVersion
6
- from frogml_storage.models.serialization_metadata import SerializationMetadata
7
-
8
-
9
- class BaseStorage(ABC):
10
- """
11
- Repository storage to download or store model | dataset artifacts,
12
- metrics and relation between these in an Artifactory repository.
13
- """
14
-
15
- @abstractmethod
16
- def upload_model_version(
17
- self,
18
- repository: str,
19
- model_name: str,
20
- model_path: str,
21
- model_type: Union[SerializationMetadata, Dict],
22
- namespace: Optional[str] = None,
23
- version: Optional[str] = None,
24
- properties: Optional[dict[str, str]] = None,
25
- dependencies_files_paths: Optional[List[str]] = None,
26
- code_archive_file_path: Optional[str] = None,
27
- ) -> FrogMLModelVersion:
28
- """Upload model to a repository in Artifactory. Uploaded models should be stored with the following layout:
29
- ├── REPO
30
- ├── models
31
- ├── ${NAMESPACE}
32
- ├── ${MODEL_NAME}
33
- ├── ${MODEL_VERSION}
34
- ├── model-manifest.json
35
- ├── model
36
- ├── model.pkl
37
- ├── evidence.json
38
- ├── ...
39
- ├── code
40
- ├── code.zip
41
- ├── requirements.txt
42
- :param repository: the repository to upload the model to
43
- :param model_name: the name of the model
44
- :param model_path: the source path of the model
45
- :param model_type: the type of the model (PyTorch, HuggingFace, Catboost)
46
- :param namespace: the namespace to upload the model to
47
- :param version: the version of the model
48
- :param properties: tags to associate with the model
49
- :param dependencies_files_paths: the list of dependencies files paths
50
- :param code_archive_file_path: the path to the code archive file
51
- """
52
- pass
53
-
54
- @abstractmethod
55
- def download_model_version(
56
- self,
57
- repository: str,
58
- model_name: str,
59
- version: str,
60
- target_path: str,
61
- namespace: Optional[str] = None,
62
- ) -> None:
63
- """Downloads a model from an Artifactory repository
64
- :param repository: the repository to download the model from
65
- :param model_name: the name of the model to download
66
- :param version: the version of the model to download
67
- :param target_path: the target local path to store the model in
68
- :param namespace: the namespace of the model to download
69
-
70
- """
71
- pass
72
-
73
- def download_model_single_artifact(
74
- self,
75
- repository: str,
76
- model_name: str,
77
- version: str,
78
- target_path: str,
79
- source_artifact_path: str,
80
- namespace: Optional[str] = None,
81
- ) -> None:
82
- """Downloads an artifact from an Artifactory repository
83
- :param repository: the repository to download the artifact from
84
- :param model_name: the model to download artifact from
85
- :param version: the model's version to download artifact from
86
- :param target_path: the target local path to store the artifact in
87
- :param source_artifact_path: the path of the artifact under the model's version directory
88
- :param namespace: the namespace of the artifact
89
- """
90
- pass
91
-
92
- @abstractmethod
93
- def upload_dataset_version(
94
- self,
95
- repository: str,
96
- dataset_name: str,
97
- source_path: str,
98
- namespace: Optional[str] = None,
99
- version: Optional[str] = None,
100
- tags: Optional[dict[str, str]] = None,
101
- ) -> FrogMLDatasetVersion:
102
- """Uploads a dataset to a repository in Artifactory. Uploaded datasets should be stored with
103
- the following layout:
104
- ├── REPO
105
- ├── datasets
106
- ├── ${NAMESPACE}
107
- ├── ${DATASET_NAME}
108
- ├── ${DATASET_VERSION}
109
- ├── dataset-manifest.json
110
- ├── dataset
111
- ├── cli_docs_1.csv
112
- ├── cli_docs_2.csv
113
- ├── ...
114
- :param repository: the repository to upload the dataset to
115
- :param dataset_name: the name of the dataset
116
- :param source_path: the source path of the dataset
117
- :param namespace: the namespace to upload the dataset to
118
- :param version: the version of the dataset
119
- :param tags: tags to associate with the dataset
120
- """
121
- pass
122
-
123
- @abstractmethod
124
- def download_dataset_version(
125
- self,
126
- repository: str,
127
- dataset_name: str,
128
- version: str,
129
- target_path: str,
130
- namespace: Optional[str] = None,
131
- ) -> None:
132
- """Downloads a dataset from an Artifactory repository
133
- :param repository: the repository to download the dataset from
134
- :param dataset_name: the name of the dataset to download
135
- :param version: the version of the dataset to download
136
- :param target_path: the target local path to store the dataset in
137
- :param namespace: the namespace of the dataset to download
138
-
139
- """
140
- pass
@@ -1,56 +0,0 @@
1
- import os
2
-
3
- home_dir = os.path.expanduser("~")
4
-
5
- JFROG_CLI_CONFIG_FILE_PATH = os.path.join(home_dir, ".jfrog", "jfrog-cli.conf.v6")
6
- CONFIG_FILE_PATH = os.path.join(home_dir, ".frogml", "config.json")
7
-
8
- FROG_ML_CONFIG_USER = "user"
9
- FROG_ML_CONFIG_ARTIFACTORY_URL = "artifactory_url"
10
- FROG_ML_CONFIG_PASSWORD = "password" # nosec B105
11
- FROG_ML_CONFIG_ACCESS_TOKEN = "access_token" # nosec B105
12
- FROG_ML_DEFAULT_HTTP_THREADS_COUNT = 5
13
- FROG_ML_MAX_CHARS_FOR_NAME = 60
14
-
15
- SERVER_ID = "server_id"
16
-
17
- JFROG_CLI_CONFIG_ARTIFACTORY_URL = "artifactoryUrl"
18
- JFROG_CLI_CONFIG_URL = "url"
19
- JFROG_CLI_CONFIG_USER = "user"
20
- JFROG_CLI_CONFIG_PASSWORD = "password" # nosec B105
21
- JFROG_CLI_CONFIG_ACCESS_TOKEN = "accessToken" # nosec B105
22
-
23
- MODEL = "model"
24
- ROOT_FROGML_MODEL_UI_DIRECTORY = "models"
25
- MODEL_UI_DIRECTORY = "model"
26
- MODEL_METADATA_FILE_NAME = "model-manifest.json"
27
- BODY_PART_MODEL_MANIFEST_STREAM = "modelManifest"
28
-
29
- DATASET = "dataset"
30
- ROOT_FROGML_DATASET_UI_DIRECTORY = "datasets"
31
- DATASET_UI_DIRECTORY = "dataset"
32
- DATASET_METADATA_FILE_NAME = "dataset-manifest.json"
33
- BODY_PART_DATASET_MANIFEST_STREAM = "datasetManifest"
34
-
35
- CHECKSUM_SHA2_HEADER = "X-Checksum-Sha256"
36
-
37
- JFML_THREAD_COUNT = "JFML_THREAD_COUNT"
38
- JF_URL = "JF_URL"
39
- JF_ACCESS_TOKEN = "JF_ACCESS_TOKEN" # nosec B105
40
-
41
- FROG_ML_IGNORED_FILES = [
42
- ".DS_Store",
43
- "CVS",
44
- ".cvsignore",
45
- "SCCS",
46
- "vssver.scc",
47
- ".svn",
48
- ".git",
49
- ".gitignore",
50
- ".gitattributes",
51
- ".gitmodules",
52
- ".gitkeep",
53
- ".gitconfig",
54
- MODEL_METADATA_FILE_NAME,
55
- DATASET_METADATA_FILE_NAME,
56
- ]
@@ -1,3 +0,0 @@
1
- class ChecksumVerificationError(Exception):
2
- def __init__(self, filename):
3
- super().__init__(f"Checksum verification failed for file: '{filename}'")
@@ -1,4 +0,0 @@
1
- class FrogMLValidationError(ValueError):
2
- def __init__(self, message, errors=None):
3
- super().__init__(message)
4
- self.errors = errors or {}