mlrun 1.6.4rc8__py3-none-any.whl → 1.7.0__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 mlrun might be problematic. Click here for more details.

Files changed (305) hide show
  1. mlrun/__init__.py +11 -1
  2. mlrun/__main__.py +40 -122
  3. mlrun/alerts/__init__.py +15 -0
  4. mlrun/alerts/alert.py +248 -0
  5. mlrun/api/schemas/__init__.py +5 -4
  6. mlrun/artifacts/__init__.py +8 -3
  7. mlrun/artifacts/base.py +47 -257
  8. mlrun/artifacts/dataset.py +11 -192
  9. mlrun/artifacts/manager.py +79 -47
  10. mlrun/artifacts/model.py +31 -159
  11. mlrun/artifacts/plots.py +23 -380
  12. mlrun/common/constants.py +74 -1
  13. mlrun/common/db/sql_session.py +5 -5
  14. mlrun/common/formatters/__init__.py +21 -0
  15. mlrun/common/formatters/artifact.py +45 -0
  16. mlrun/common/formatters/base.py +113 -0
  17. mlrun/common/formatters/feature_set.py +33 -0
  18. mlrun/common/formatters/function.py +46 -0
  19. mlrun/common/formatters/pipeline.py +53 -0
  20. mlrun/common/formatters/project.py +51 -0
  21. mlrun/common/formatters/run.py +29 -0
  22. mlrun/common/helpers.py +12 -3
  23. mlrun/common/model_monitoring/helpers.py +9 -5
  24. mlrun/{runtimes → common/runtimes}/constants.py +37 -9
  25. mlrun/common/schemas/__init__.py +31 -5
  26. mlrun/common/schemas/alert.py +202 -0
  27. mlrun/common/schemas/api_gateway.py +196 -0
  28. mlrun/common/schemas/artifact.py +25 -4
  29. mlrun/common/schemas/auth.py +16 -5
  30. mlrun/common/schemas/background_task.py +1 -1
  31. mlrun/common/schemas/client_spec.py +4 -2
  32. mlrun/common/schemas/common.py +7 -4
  33. mlrun/common/schemas/constants.py +3 -0
  34. mlrun/common/schemas/feature_store.py +74 -44
  35. mlrun/common/schemas/frontend_spec.py +15 -7
  36. mlrun/common/schemas/function.py +12 -1
  37. mlrun/common/schemas/hub.py +11 -18
  38. mlrun/common/schemas/memory_reports.py +2 -2
  39. mlrun/common/schemas/model_monitoring/__init__.py +20 -4
  40. mlrun/common/schemas/model_monitoring/constants.py +123 -42
  41. mlrun/common/schemas/model_monitoring/grafana.py +13 -9
  42. mlrun/common/schemas/model_monitoring/model_endpoints.py +101 -54
  43. mlrun/common/schemas/notification.py +71 -14
  44. mlrun/common/schemas/object.py +2 -2
  45. mlrun/{model_monitoring/controller_handler.py → common/schemas/pagination.py} +9 -12
  46. mlrun/common/schemas/pipeline.py +8 -1
  47. mlrun/common/schemas/project.py +69 -18
  48. mlrun/common/schemas/runs.py +7 -1
  49. mlrun/common/schemas/runtime_resource.py +8 -12
  50. mlrun/common/schemas/schedule.py +4 -4
  51. mlrun/common/schemas/tag.py +1 -2
  52. mlrun/common/schemas/workflow.py +12 -4
  53. mlrun/common/types.py +14 -1
  54. mlrun/config.py +154 -69
  55. mlrun/data_types/data_types.py +6 -1
  56. mlrun/data_types/spark.py +2 -2
  57. mlrun/data_types/to_pandas.py +67 -37
  58. mlrun/datastore/__init__.py +6 -8
  59. mlrun/datastore/alibaba_oss.py +131 -0
  60. mlrun/datastore/azure_blob.py +143 -42
  61. mlrun/datastore/base.py +102 -58
  62. mlrun/datastore/datastore.py +34 -13
  63. mlrun/datastore/datastore_profile.py +146 -20
  64. mlrun/datastore/dbfs_store.py +3 -7
  65. mlrun/datastore/filestore.py +1 -4
  66. mlrun/datastore/google_cloud_storage.py +97 -33
  67. mlrun/datastore/hdfs.py +56 -0
  68. mlrun/datastore/inmem.py +6 -3
  69. mlrun/datastore/redis.py +7 -2
  70. mlrun/datastore/s3.py +34 -12
  71. mlrun/datastore/snowflake_utils.py +45 -0
  72. mlrun/datastore/sources.py +303 -111
  73. mlrun/datastore/spark_utils.py +31 -2
  74. mlrun/datastore/store_resources.py +9 -7
  75. mlrun/datastore/storeytargets.py +151 -0
  76. mlrun/datastore/targets.py +453 -176
  77. mlrun/datastore/utils.py +72 -58
  78. mlrun/datastore/v3io.py +6 -1
  79. mlrun/db/base.py +274 -41
  80. mlrun/db/factory.py +1 -1
  81. mlrun/db/httpdb.py +893 -225
  82. mlrun/db/nopdb.py +291 -33
  83. mlrun/errors.py +36 -6
  84. mlrun/execution.py +115 -42
  85. mlrun/feature_store/__init__.py +0 -2
  86. mlrun/feature_store/api.py +65 -73
  87. mlrun/feature_store/common.py +7 -12
  88. mlrun/feature_store/feature_set.py +76 -55
  89. mlrun/feature_store/feature_vector.py +39 -31
  90. mlrun/feature_store/ingestion.py +7 -6
  91. mlrun/feature_store/retrieval/base.py +16 -11
  92. mlrun/feature_store/retrieval/dask_merger.py +2 -0
  93. mlrun/feature_store/retrieval/job.py +13 -4
  94. mlrun/feature_store/retrieval/local_merger.py +2 -0
  95. mlrun/feature_store/retrieval/spark_merger.py +24 -32
  96. mlrun/feature_store/steps.py +45 -34
  97. mlrun/features.py +11 -21
  98. mlrun/frameworks/_common/artifacts_library.py +9 -9
  99. mlrun/frameworks/_common/mlrun_interface.py +5 -5
  100. mlrun/frameworks/_common/model_handler.py +48 -48
  101. mlrun/frameworks/_common/plan.py +5 -6
  102. mlrun/frameworks/_common/producer.py +3 -4
  103. mlrun/frameworks/_common/utils.py +5 -5
  104. mlrun/frameworks/_dl_common/loggers/logger.py +6 -7
  105. mlrun/frameworks/_dl_common/loggers/mlrun_logger.py +9 -9
  106. mlrun/frameworks/_dl_common/loggers/tensorboard_logger.py +23 -47
  107. mlrun/frameworks/_ml_common/artifacts_library.py +1 -2
  108. mlrun/frameworks/_ml_common/loggers/logger.py +3 -4
  109. mlrun/frameworks/_ml_common/loggers/mlrun_logger.py +4 -5
  110. mlrun/frameworks/_ml_common/model_handler.py +24 -24
  111. mlrun/frameworks/_ml_common/pkl_model_server.py +2 -2
  112. mlrun/frameworks/_ml_common/plan.py +2 -2
  113. mlrun/frameworks/_ml_common/plans/calibration_curve_plan.py +2 -3
  114. mlrun/frameworks/_ml_common/plans/confusion_matrix_plan.py +2 -3
  115. mlrun/frameworks/_ml_common/plans/dataset_plan.py +3 -3
  116. mlrun/frameworks/_ml_common/plans/feature_importance_plan.py +3 -3
  117. mlrun/frameworks/_ml_common/plans/roc_curve_plan.py +4 -4
  118. mlrun/frameworks/_ml_common/utils.py +4 -4
  119. mlrun/frameworks/auto_mlrun/auto_mlrun.py +9 -9
  120. mlrun/frameworks/huggingface/model_server.py +4 -4
  121. mlrun/frameworks/lgbm/__init__.py +33 -33
  122. mlrun/frameworks/lgbm/callbacks/callback.py +2 -4
  123. mlrun/frameworks/lgbm/callbacks/logging_callback.py +4 -5
  124. mlrun/frameworks/lgbm/callbacks/mlrun_logging_callback.py +4 -5
  125. mlrun/frameworks/lgbm/mlrun_interfaces/booster_mlrun_interface.py +1 -3
  126. mlrun/frameworks/lgbm/mlrun_interfaces/mlrun_interface.py +6 -6
  127. mlrun/frameworks/lgbm/model_handler.py +10 -10
  128. mlrun/frameworks/lgbm/model_server.py +6 -6
  129. mlrun/frameworks/lgbm/utils.py +5 -5
  130. mlrun/frameworks/onnx/dataset.py +8 -8
  131. mlrun/frameworks/onnx/mlrun_interface.py +3 -3
  132. mlrun/frameworks/onnx/model_handler.py +6 -6
  133. mlrun/frameworks/onnx/model_server.py +7 -7
  134. mlrun/frameworks/parallel_coordinates.py +6 -6
  135. mlrun/frameworks/pytorch/__init__.py +18 -18
  136. mlrun/frameworks/pytorch/callbacks/callback.py +4 -5
  137. mlrun/frameworks/pytorch/callbacks/logging_callback.py +17 -17
  138. mlrun/frameworks/pytorch/callbacks/mlrun_logging_callback.py +11 -11
  139. mlrun/frameworks/pytorch/callbacks/tensorboard_logging_callback.py +23 -29
  140. mlrun/frameworks/pytorch/callbacks_handler.py +38 -38
  141. mlrun/frameworks/pytorch/mlrun_interface.py +20 -20
  142. mlrun/frameworks/pytorch/model_handler.py +17 -17
  143. mlrun/frameworks/pytorch/model_server.py +7 -7
  144. mlrun/frameworks/sklearn/__init__.py +13 -13
  145. mlrun/frameworks/sklearn/estimator.py +4 -4
  146. mlrun/frameworks/sklearn/metrics_library.py +14 -14
  147. mlrun/frameworks/sklearn/mlrun_interface.py +16 -9
  148. mlrun/frameworks/sklearn/model_handler.py +2 -2
  149. mlrun/frameworks/tf_keras/__init__.py +10 -7
  150. mlrun/frameworks/tf_keras/callbacks/logging_callback.py +15 -15
  151. mlrun/frameworks/tf_keras/callbacks/mlrun_logging_callback.py +11 -11
  152. mlrun/frameworks/tf_keras/callbacks/tensorboard_logging_callback.py +19 -23
  153. mlrun/frameworks/tf_keras/mlrun_interface.py +9 -11
  154. mlrun/frameworks/tf_keras/model_handler.py +14 -14
  155. mlrun/frameworks/tf_keras/model_server.py +6 -6
  156. mlrun/frameworks/xgboost/__init__.py +13 -13
  157. mlrun/frameworks/xgboost/model_handler.py +6 -6
  158. mlrun/k8s_utils.py +61 -17
  159. mlrun/launcher/__init__.py +1 -1
  160. mlrun/launcher/base.py +16 -15
  161. mlrun/launcher/client.py +13 -11
  162. mlrun/launcher/factory.py +1 -1
  163. mlrun/launcher/local.py +23 -13
  164. mlrun/launcher/remote.py +17 -10
  165. mlrun/lists.py +7 -6
  166. mlrun/model.py +478 -103
  167. mlrun/model_monitoring/__init__.py +1 -1
  168. mlrun/model_monitoring/api.py +163 -371
  169. mlrun/{runtimes/mpijob/v1alpha1.py → model_monitoring/applications/__init__.py} +9 -15
  170. mlrun/model_monitoring/applications/_application_steps.py +188 -0
  171. mlrun/model_monitoring/applications/base.py +108 -0
  172. mlrun/model_monitoring/applications/context.py +341 -0
  173. mlrun/model_monitoring/{evidently_application.py → applications/evidently_base.py} +27 -22
  174. mlrun/model_monitoring/applications/histogram_data_drift.py +354 -0
  175. mlrun/model_monitoring/applications/results.py +99 -0
  176. mlrun/model_monitoring/controller.py +131 -278
  177. mlrun/model_monitoring/db/__init__.py +18 -0
  178. mlrun/model_monitoring/db/stores/__init__.py +136 -0
  179. mlrun/model_monitoring/db/stores/base/__init__.py +15 -0
  180. mlrun/model_monitoring/db/stores/base/store.py +213 -0
  181. mlrun/model_monitoring/db/stores/sqldb/__init__.py +13 -0
  182. mlrun/model_monitoring/db/stores/sqldb/models/__init__.py +71 -0
  183. mlrun/model_monitoring/db/stores/sqldb/models/base.py +190 -0
  184. mlrun/model_monitoring/db/stores/sqldb/models/mysql.py +103 -0
  185. mlrun/model_monitoring/{stores/models/mysql.py → db/stores/sqldb/models/sqlite.py} +19 -13
  186. mlrun/model_monitoring/db/stores/sqldb/sql_store.py +659 -0
  187. mlrun/model_monitoring/db/stores/v3io_kv/__init__.py +13 -0
  188. mlrun/model_monitoring/db/stores/v3io_kv/kv_store.py +726 -0
  189. mlrun/model_monitoring/db/tsdb/__init__.py +105 -0
  190. mlrun/model_monitoring/db/tsdb/base.py +448 -0
  191. mlrun/model_monitoring/db/tsdb/helpers.py +30 -0
  192. mlrun/model_monitoring/db/tsdb/tdengine/__init__.py +15 -0
  193. mlrun/model_monitoring/db/tsdb/tdengine/schemas.py +279 -0
  194. mlrun/model_monitoring/db/tsdb/tdengine/stream_graph_steps.py +42 -0
  195. mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connector.py +507 -0
  196. mlrun/model_monitoring/db/tsdb/v3io/__init__.py +15 -0
  197. mlrun/model_monitoring/db/tsdb/v3io/stream_graph_steps.py +158 -0
  198. mlrun/model_monitoring/db/tsdb/v3io/v3io_connector.py +849 -0
  199. mlrun/model_monitoring/features_drift_table.py +134 -106
  200. mlrun/model_monitoring/helpers.py +199 -55
  201. mlrun/model_monitoring/metrics/__init__.py +13 -0
  202. mlrun/model_monitoring/metrics/histogram_distance.py +127 -0
  203. mlrun/model_monitoring/model_endpoint.py +3 -2
  204. mlrun/model_monitoring/stream_processing.py +134 -398
  205. mlrun/model_monitoring/tracking_policy.py +9 -2
  206. mlrun/model_monitoring/writer.py +161 -125
  207. mlrun/package/__init__.py +6 -6
  208. mlrun/package/context_handler.py +5 -5
  209. mlrun/package/packager.py +7 -7
  210. mlrun/package/packagers/default_packager.py +8 -8
  211. mlrun/package/packagers/numpy_packagers.py +15 -15
  212. mlrun/package/packagers/pandas_packagers.py +5 -5
  213. mlrun/package/packagers/python_standard_library_packagers.py +10 -10
  214. mlrun/package/packagers_manager.py +19 -23
  215. mlrun/package/utils/_formatter.py +6 -6
  216. mlrun/package/utils/_pickler.py +2 -2
  217. mlrun/package/utils/_supported_format.py +4 -4
  218. mlrun/package/utils/log_hint_utils.py +2 -2
  219. mlrun/package/utils/type_hint_utils.py +4 -9
  220. mlrun/platforms/__init__.py +11 -10
  221. mlrun/platforms/iguazio.py +24 -203
  222. mlrun/projects/operations.py +52 -25
  223. mlrun/projects/pipelines.py +191 -197
  224. mlrun/projects/project.py +1227 -400
  225. mlrun/render.py +16 -19
  226. mlrun/run.py +209 -184
  227. mlrun/runtimes/__init__.py +83 -15
  228. mlrun/runtimes/base.py +51 -35
  229. mlrun/runtimes/daskjob.py +17 -10
  230. mlrun/runtimes/databricks_job/databricks_cancel_task.py +1 -1
  231. mlrun/runtimes/databricks_job/databricks_runtime.py +8 -7
  232. mlrun/runtimes/databricks_job/databricks_wrapper.py +1 -1
  233. mlrun/runtimes/funcdoc.py +1 -29
  234. mlrun/runtimes/function_reference.py +1 -1
  235. mlrun/runtimes/kubejob.py +34 -128
  236. mlrun/runtimes/local.py +40 -11
  237. mlrun/runtimes/mpijob/__init__.py +0 -20
  238. mlrun/runtimes/mpijob/abstract.py +9 -10
  239. mlrun/runtimes/mpijob/v1.py +1 -1
  240. mlrun/{model_monitoring/stores/models/sqlite.py → runtimes/nuclio/__init__.py} +7 -9
  241. mlrun/runtimes/nuclio/api_gateway.py +769 -0
  242. mlrun/runtimes/nuclio/application/__init__.py +15 -0
  243. mlrun/runtimes/nuclio/application/application.py +758 -0
  244. mlrun/runtimes/nuclio/application/reverse_proxy.go +95 -0
  245. mlrun/runtimes/{function.py → nuclio/function.py} +200 -83
  246. mlrun/runtimes/{nuclio.py → nuclio/nuclio.py} +6 -6
  247. mlrun/runtimes/{serving.py → nuclio/serving.py} +65 -68
  248. mlrun/runtimes/pod.py +281 -101
  249. mlrun/runtimes/remotesparkjob.py +12 -9
  250. mlrun/runtimes/sparkjob/spark3job.py +67 -51
  251. mlrun/runtimes/utils.py +41 -75
  252. mlrun/secrets.py +9 -5
  253. mlrun/serving/__init__.py +8 -1
  254. mlrun/serving/remote.py +2 -7
  255. mlrun/serving/routers.py +85 -69
  256. mlrun/serving/server.py +69 -44
  257. mlrun/serving/states.py +209 -36
  258. mlrun/serving/utils.py +22 -14
  259. mlrun/serving/v1_serving.py +6 -7
  260. mlrun/serving/v2_serving.py +133 -54
  261. mlrun/track/tracker.py +2 -1
  262. mlrun/track/tracker_manager.py +3 -3
  263. mlrun/track/trackers/mlflow_tracker.py +6 -2
  264. mlrun/utils/async_http.py +6 -8
  265. mlrun/utils/azure_vault.py +1 -1
  266. mlrun/utils/clones.py +1 -2
  267. mlrun/utils/condition_evaluator.py +3 -3
  268. mlrun/utils/db.py +21 -3
  269. mlrun/utils/helpers.py +405 -225
  270. mlrun/utils/http.py +3 -6
  271. mlrun/utils/logger.py +112 -16
  272. mlrun/utils/notifications/notification/__init__.py +17 -13
  273. mlrun/utils/notifications/notification/base.py +50 -2
  274. mlrun/utils/notifications/notification/console.py +2 -0
  275. mlrun/utils/notifications/notification/git.py +24 -1
  276. mlrun/utils/notifications/notification/ipython.py +3 -1
  277. mlrun/utils/notifications/notification/slack.py +96 -21
  278. mlrun/utils/notifications/notification/webhook.py +59 -2
  279. mlrun/utils/notifications/notification_pusher.py +149 -30
  280. mlrun/utils/regex.py +9 -0
  281. mlrun/utils/retryer.py +208 -0
  282. mlrun/utils/singleton.py +1 -1
  283. mlrun/utils/v3io_clients.py +4 -6
  284. mlrun/utils/version/version.json +2 -2
  285. mlrun/utils/version/version.py +2 -6
  286. mlrun-1.7.0.dist-info/METADATA +378 -0
  287. mlrun-1.7.0.dist-info/RECORD +351 -0
  288. {mlrun-1.6.4rc8.dist-info → mlrun-1.7.0.dist-info}/WHEEL +1 -1
  289. mlrun/feature_store/retrieval/conversion.py +0 -273
  290. mlrun/kfpops.py +0 -868
  291. mlrun/model_monitoring/application.py +0 -310
  292. mlrun/model_monitoring/batch.py +0 -1095
  293. mlrun/model_monitoring/prometheus.py +0 -219
  294. mlrun/model_monitoring/stores/__init__.py +0 -111
  295. mlrun/model_monitoring/stores/kv_model_endpoint_store.py +0 -576
  296. mlrun/model_monitoring/stores/model_endpoint_store.py +0 -147
  297. mlrun/model_monitoring/stores/models/__init__.py +0 -27
  298. mlrun/model_monitoring/stores/models/base.py +0 -84
  299. mlrun/model_monitoring/stores/sql_model_endpoint_store.py +0 -384
  300. mlrun/platforms/other.py +0 -306
  301. mlrun-1.6.4rc8.dist-info/METADATA +0 -272
  302. mlrun-1.6.4rc8.dist-info/RECORD +0 -314
  303. {mlrun-1.6.4rc8.dist-info → mlrun-1.7.0.dist-info}/LICENSE +0 -0
  304. {mlrun-1.6.4rc8.dist-info → mlrun-1.7.0.dist-info}/entry_points.txt +0 -0
  305. {mlrun-1.6.4rc8.dist-info → mlrun-1.7.0.dist-info}/top_level.txt +0 -0
mlrun/db/base.py CHANGED
@@ -13,12 +13,17 @@
13
13
  # limitations under the License.
14
14
 
15
15
  import datetime
16
- import typing
17
16
  from abc import ABC, abstractmethod
18
- from typing import List, Optional, Union
17
+ from typing import Optional, Union
19
18
 
19
+ from deprecated import deprecated
20
+
21
+ import mlrun.alerts
22
+ import mlrun.common
23
+ import mlrun.common.formatters
24
+ import mlrun.common.runtimes.constants
20
25
  import mlrun.common.schemas
21
- import mlrun.model_monitoring.model_endpoint
26
+ import mlrun.model_monitoring
22
27
 
23
28
 
24
29
  class RunDBError(Exception):
@@ -58,7 +63,7 @@ class RunDBInterface(ABC):
58
63
  uid: str,
59
64
  project: str = "",
60
65
  iter: int = 0,
61
- format_: mlrun.common.schemas.runs.RunsFormat = mlrun.common.schemas.runs.RunsFormat.full,
66
+ format_: mlrun.common.formatters.RunFormat = mlrun.common.formatters.RunFormat.full,
62
67
  ):
63
68
  pass
64
69
 
@@ -66,10 +71,13 @@ class RunDBInterface(ABC):
66
71
  def list_runs(
67
72
  self,
68
73
  name: Optional[str] = None,
69
- uid: Optional[Union[str, List[str]]] = None,
74
+ uid: Optional[Union[str, list[str]]] = None,
70
75
  project: Optional[str] = None,
71
- labels: Optional[Union[str, List[str]]] = None,
72
- state: Optional[str] = None,
76
+ labels: Optional[Union[str, list[str]]] = None,
77
+ state: Optional[
78
+ mlrun.common.runtimes.constants.RunStates
79
+ ] = None, # Backward compatibility
80
+ states: Optional[list[mlrun.common.runtimes.constants.RunStates]] = None,
73
81
  sort: bool = True,
74
82
  last: int = 0,
75
83
  iter: bool = False,
@@ -103,7 +111,16 @@ class RunDBInterface(ABC):
103
111
  pass
104
112
 
105
113
  @abstractmethod
106
- def read_artifact(self, key, tag="", iter=None, project="", tree=None, uid=None):
114
+ def read_artifact(
115
+ self,
116
+ key,
117
+ tag="",
118
+ iter=None,
119
+ project="",
120
+ tree=None,
121
+ uid=None,
122
+ format_: mlrun.common.formatters.ArtifactFormat = mlrun.common.formatters.ArtifactFormat.full,
123
+ ):
107
124
  pass
108
125
 
109
126
  @abstractmethod
@@ -120,12 +137,25 @@ class RunDBInterface(ABC):
120
137
  kind: str = None,
121
138
  category: Union[str, mlrun.common.schemas.ArtifactCategories] = None,
122
139
  tree: str = None,
140
+ format_: mlrun.common.formatters.ArtifactFormat = mlrun.common.formatters.ArtifactFormat.full,
123
141
  limit: int = None,
124
142
  ):
125
143
  pass
126
144
 
127
145
  @abstractmethod
128
- def del_artifact(self, key, tag="", project="", tree=None, uid=None):
146
+ def del_artifact(
147
+ self,
148
+ key,
149
+ tag="",
150
+ project="",
151
+ tree=None,
152
+ uid=None,
153
+ deletion_strategy: mlrun.common.schemas.artifact.ArtifactsDeletionStrategies = (
154
+ mlrun.common.schemas.artifact.ArtifactsDeletionStrategies.metadata_only
155
+ ),
156
+ secrets: dict = None,
157
+ iter=None,
158
+ ):
129
159
  pass
130
160
 
131
161
  @abstractmethod
@@ -145,7 +175,9 @@ class RunDBInterface(ABC):
145
175
  pass
146
176
 
147
177
  @abstractmethod
148
- def list_functions(self, name=None, project="", tag="", labels=None):
178
+ def list_functions(
179
+ self, name=None, project="", tag="", labels=None, since=None, until=None
180
+ ):
149
181
  pass
150
182
 
151
183
  @abstractmethod
@@ -210,9 +242,8 @@ class RunDBInterface(ABC):
210
242
  )
211
243
  artifact_identifiers.append(
212
244
  mlrun.common.schemas.ArtifactIdentifier(
213
- key=mlrun.utils.get_in_artifact(artifact_obj, "key"),
214
- # we are passing tree as uid when storing an artifact, so if uid is not defined,
215
- # pass the tree as uid
245
+ # we pass the db_key and not the key so the API will be able to find the artifact in the db
246
+ key=mlrun.utils.get_in_artifact(artifact_obj, "db_key"),
216
247
  uid=mlrun.utils.get_in_artifact(artifact_obj, "uid"),
217
248
  producer_id=mlrun.utils.get_in_artifact(artifact_obj, "tree"),
218
249
  kind=mlrun.utils.get_in_artifact(artifact_obj, "kind"),
@@ -259,8 +290,8 @@ class RunDBInterface(ABC):
259
290
  def list_projects(
260
291
  self,
261
292
  owner: str = None,
262
- format_: mlrun.common.schemas.ProjectsFormat = mlrun.common.schemas.ProjectsFormat.name_only,
263
- labels: List[str] = None,
293
+ format_: mlrun.common.formatters.ProjectFormat = mlrun.common.formatters.ProjectFormat.name_only,
294
+ labels: list[str] = None,
264
295
  state: mlrun.common.schemas.ProjectState = None,
265
296
  ) -> mlrun.common.schemas.ProjectsOutput:
266
297
  pass
@@ -292,27 +323,60 @@ class RunDBInterface(ABC):
292
323
  ) -> dict:
293
324
  pass
294
325
 
326
+ # TODO: remove in 1.9.0
327
+ @deprecated(
328
+ version="1.9.0",
329
+ reason="'list_features' will be removed in 1.9.0, use 'list_features_v2' instead",
330
+ category=FutureWarning,
331
+ )
295
332
  @abstractmethod
296
333
  def list_features(
297
334
  self,
298
335
  project: str,
299
336
  name: str = None,
300
337
  tag: str = None,
301
- entities: List[str] = None,
302
- labels: List[str] = None,
338
+ entities: list[str] = None,
339
+ labels: list[str] = None,
303
340
  ) -> mlrun.common.schemas.FeaturesOutput:
304
341
  pass
305
342
 
343
+ @abstractmethod
344
+ def list_features_v2(
345
+ self,
346
+ project: str,
347
+ name: str = None,
348
+ tag: str = None,
349
+ entities: list[str] = None,
350
+ labels: list[str] = None,
351
+ ) -> mlrun.common.schemas.FeaturesOutputV2:
352
+ pass
353
+
354
+ # TODO: remove in 1.9.0
355
+ @deprecated(
356
+ version="1.9.0",
357
+ reason="'list_entities' will be removed in 1.9.0, use 'list_entities_v2' instead",
358
+ category=FutureWarning,
359
+ )
306
360
  @abstractmethod
307
361
  def list_entities(
308
362
  self,
309
363
  project: str,
310
364
  name: str = None,
311
365
  tag: str = None,
312
- labels: List[str] = None,
366
+ labels: list[str] = None,
313
367
  ) -> mlrun.common.schemas.EntitiesOutput:
314
368
  pass
315
369
 
370
+ @abstractmethod
371
+ def list_entities_v2(
372
+ self,
373
+ project: str,
374
+ name: str = None,
375
+ tag: str = None,
376
+ labels: list[str] = None,
377
+ ) -> mlrun.common.schemas.EntitiesOutputV2:
378
+ pass
379
+
316
380
  @abstractmethod
317
381
  def list_feature_sets(
318
382
  self,
@@ -320,9 +384,9 @@ class RunDBInterface(ABC):
320
384
  name: str = None,
321
385
  tag: str = None,
322
386
  state: str = None,
323
- entities: List[str] = None,
324
- features: List[str] = None,
325
- labels: List[str] = None,
387
+ entities: list[str] = None,
388
+ features: list[str] = None,
389
+ labels: list[str] = None,
326
390
  partition_by: Union[
327
391
  mlrun.common.schemas.FeatureStorePartitionByField, str
328
392
  ] = None,
@@ -331,7 +395,10 @@ class RunDBInterface(ABC):
331
395
  partition_order: Union[
332
396
  mlrun.common.schemas.OrderType, str
333
397
  ] = mlrun.common.schemas.OrderType.desc,
334
- ) -> List[dict]:
398
+ format_: Union[
399
+ str, mlrun.common.formatters.FeatureSetFormat
400
+ ] = mlrun.common.formatters.FeatureSetFormat.full,
401
+ ) -> list[dict]:
335
402
  pass
336
403
 
337
404
  @abstractmethod
@@ -386,7 +453,7 @@ class RunDBInterface(ABC):
386
453
  name: str = None,
387
454
  tag: str = None,
388
455
  state: str = None,
389
- labels: List[str] = None,
456
+ labels: list[str] = None,
390
457
  partition_by: Union[
391
458
  mlrun.common.schemas.FeatureStorePartitionByField, str
392
459
  ] = None,
@@ -395,7 +462,7 @@ class RunDBInterface(ABC):
395
462
  partition_order: Union[
396
463
  mlrun.common.schemas.OrderType, str
397
464
  ] = mlrun.common.schemas.OrderType.desc,
398
- ) -> List[dict]:
465
+ ) -> list[dict]:
399
466
  pass
400
467
 
401
468
  @abstractmethod
@@ -435,8 +502,8 @@ class RunDBInterface(ABC):
435
502
  namespace: str = None,
436
503
  timeout: int = 30,
437
504
  format_: Union[
438
- str, mlrun.common.schemas.PipelinesFormat
439
- ] = mlrun.common.schemas.PipelinesFormat.summary,
505
+ str, mlrun.common.formatters.PipelineFormat
506
+ ] = mlrun.common.formatters.PipelineFormat.summary,
440
507
  project: str = None,
441
508
  ):
442
509
  pass
@@ -450,8 +517,8 @@ class RunDBInterface(ABC):
450
517
  page_token: str = "",
451
518
  filter_: str = "",
452
519
  format_: Union[
453
- str, mlrun.common.schemas.PipelinesFormat
454
- ] = mlrun.common.schemas.PipelinesFormat.metadata_only,
520
+ str, mlrun.common.formatters.PipelineFormat
521
+ ] = mlrun.common.formatters.PipelineFormat.metadata_only,
455
522
  page_size: int = None,
456
523
  ) -> mlrun.common.schemas.PipelinesOutput:
457
524
  pass
@@ -475,7 +542,7 @@ class RunDBInterface(ABC):
475
542
  provider: Union[
476
543
  str, mlrun.common.schemas.SecretProviderName
477
544
  ] = mlrun.common.schemas.SecretProviderName.kubernetes,
478
- secrets: List[str] = None,
545
+ secrets: list[str] = None,
479
546
  ) -> mlrun.common.schemas.SecretsData:
480
547
  pass
481
548
 
@@ -497,7 +564,7 @@ class RunDBInterface(ABC):
497
564
  provider: Union[
498
565
  str, mlrun.common.schemas.SecretProviderName
499
566
  ] = mlrun.common.schemas.SecretProviderName.kubernetes,
500
- secrets: List[str] = None,
567
+ secrets: list[str] = None,
501
568
  ):
502
569
  pass
503
570
 
@@ -517,9 +584,7 @@ class RunDBInterface(ABC):
517
584
  self,
518
585
  project: str,
519
586
  endpoint_id: str,
520
- model_endpoint: Union[
521
- mlrun.model_monitoring.model_endpoint.ModelEndpoint, dict
522
- ],
587
+ model_endpoint: Union[mlrun.model_monitoring.ModelEndpoint, dict],
523
588
  ):
524
589
  pass
525
590
 
@@ -537,10 +602,10 @@ class RunDBInterface(ABC):
537
602
  project: str,
538
603
  model: Optional[str] = None,
539
604
  function: Optional[str] = None,
540
- labels: List[str] = None,
605
+ labels: list[str] = None,
541
606
  start: str = "now-1h",
542
607
  end: str = "now",
543
- metrics: Optional[List[str]] = None,
608
+ metrics: Optional[list[str]] = None,
544
609
  ):
545
610
  pass
546
611
 
@@ -551,9 +616,9 @@ class RunDBInterface(ABC):
551
616
  endpoint_id: str,
552
617
  start: Optional[str] = None,
553
618
  end: Optional[str] = None,
554
- metrics: Optional[List[str]] = None,
619
+ metrics: Optional[list[str]] = None,
555
620
  features: bool = False,
556
- ):
621
+ ) -> mlrun.model_monitoring.ModelEndpoint:
557
622
  pass
558
623
 
559
624
  @abstractmethod
@@ -624,6 +689,89 @@ class RunDBInterface(ABC):
624
689
  ):
625
690
  pass
626
691
 
692
+ @abstractmethod
693
+ def store_api_gateway(
694
+ self,
695
+ api_gateway: Union[
696
+ mlrun.common.schemas.APIGateway,
697
+ "mlrun.runtimes.nuclio.api_gateway.APIGateway",
698
+ ],
699
+ project: Optional[str] = None,
700
+ ):
701
+ pass
702
+
703
+ @abstractmethod
704
+ def list_api_gateways(self, project=None) -> mlrun.common.schemas.APIGatewaysOutput:
705
+ pass
706
+
707
+ @abstractmethod
708
+ def get_api_gateway(self, name, project=None) -> mlrun.common.schemas.APIGateway:
709
+ pass
710
+
711
+ @abstractmethod
712
+ def delete_api_gateway(self, name, project=None):
713
+ pass
714
+
715
+ @abstractmethod
716
+ def remote_builder(
717
+ self,
718
+ func: "mlrun.runtimes.BaseRuntime",
719
+ with_mlrun: bool,
720
+ mlrun_version_specifier: Optional[str] = None,
721
+ skip_deployed: bool = False,
722
+ builder_env: Optional[dict] = None,
723
+ force_build: bool = False,
724
+ ):
725
+ pass
726
+
727
+ @abstractmethod
728
+ def deploy_nuclio_function(
729
+ self,
730
+ func: "mlrun.runtimes.RemoteRuntime",
731
+ builder_env: Optional[dict] = None,
732
+ ):
733
+ pass
734
+
735
+ @abstractmethod
736
+ def generate_event(
737
+ self, name: str, event_data: Union[dict, mlrun.common.schemas.Event], project=""
738
+ ):
739
+ pass
740
+
741
+ @abstractmethod
742
+ def store_alert_config(
743
+ self,
744
+ alert_name: str,
745
+ alert_data: Union[dict, mlrun.alerts.alert.AlertConfig],
746
+ project="",
747
+ ):
748
+ pass
749
+
750
+ @abstractmethod
751
+ def get_alert_config(self, alert_name: str, project=""):
752
+ pass
753
+
754
+ @abstractmethod
755
+ def list_alerts_configs(self, project=""):
756
+ pass
757
+
758
+ @abstractmethod
759
+ def delete_alert_config(self, alert_name: str, project=""):
760
+ pass
761
+
762
+ @abstractmethod
763
+ def reset_alert_config(self, alert_name: str, project=""):
764
+ pass
765
+
766
+ @abstractmethod
767
+ def get_alert_template(self, template_name: str):
768
+ pass
769
+
770
+ @abstractmethod
771
+ def list_alert_templates(self):
772
+ pass
773
+
774
+ @abstractmethod
627
775
  def get_builder_status(
628
776
  self,
629
777
  func: "mlrun.runtimes.BaseRuntime",
@@ -634,57 +782,88 @@ class RunDBInterface(ABC):
634
782
  ):
635
783
  pass
636
784
 
785
+ @abstractmethod
786
+ def get_nuclio_deploy_status(
787
+ self,
788
+ func: "mlrun.runtimes.RemoteRuntime",
789
+ last_log_timestamp: float = 0.0,
790
+ verbose: bool = False,
791
+ ):
792
+ pass
793
+
794
+ @abstractmethod
637
795
  def set_run_notifications(
638
796
  self,
639
797
  project: str,
640
- runs: typing.List[mlrun.model.RunObject],
641
- notifications: typing.List[mlrun.model.Notification],
798
+ runs: list[mlrun.model.RunObject],
799
+ notifications: list[mlrun.model.Notification],
642
800
  ):
643
801
  pass
644
802
 
803
+ @abstractmethod
645
804
  def store_run_notifications(
646
805
  self,
647
- notification_objects: typing.List[mlrun.model.Notification],
806
+ notification_objects: list[mlrun.model.Notification],
648
807
  run_uid: str,
649
808
  project: str = None,
650
809
  mask_params: bool = True,
651
810
  ):
652
811
  pass
653
812
 
813
+ @abstractmethod
654
814
  def get_log_size(self, uid, project=""):
655
815
  pass
656
816
 
817
+ @abstractmethod
818
+ def store_alert_notifications(
819
+ self,
820
+ session,
821
+ notification_objects: list[mlrun.model.Notification],
822
+ alert_id: str,
823
+ project: str,
824
+ mask_params: bool = True,
825
+ ):
826
+ pass
827
+
828
+ @abstractmethod
657
829
  def watch_log(self, uid, project="", watch=True, offset=0):
658
830
  pass
659
831
 
832
+ @abstractmethod
660
833
  def get_datastore_profile(
661
834
  self, name: str, project: str
662
835
  ) -> Optional[mlrun.common.schemas.DatastoreProfile]:
663
836
  pass
664
837
 
838
+ @abstractmethod
665
839
  def delete_datastore_profile(
666
840
  self, name: str, project: str
667
841
  ) -> mlrun.common.schemas.DatastoreProfile:
668
842
  pass
669
843
 
844
+ @abstractmethod
670
845
  def list_datastore_profiles(
671
846
  self, project: str
672
- ) -> List[mlrun.common.schemas.DatastoreProfile]:
847
+ ) -> list[mlrun.common.schemas.DatastoreProfile]:
673
848
  pass
674
849
 
850
+ @abstractmethod
675
851
  def store_datastore_profile(
676
852
  self, profile: mlrun.common.schemas.DatastoreProfile, project: str
677
853
  ):
678
854
  pass
679
855
 
856
+ @abstractmethod
680
857
  def function_status(self, project, name, kind, selector):
681
858
  pass
682
859
 
860
+ @abstractmethod
683
861
  def start_function(
684
862
  self, func_url: str = None, function: "mlrun.runtimes.BaseRuntime" = None
685
863
  ):
686
864
  pass
687
865
 
866
+ @abstractmethod
688
867
  def submit_workflow(
689
868
  self,
690
869
  project: str,
@@ -702,3 +881,57 @@ class RunDBInterface(ABC):
702
881
  notifications: list["mlrun.model.Notification"] = None,
703
882
  ) -> "mlrun.common.schemas.WorkflowResponse":
704
883
  pass
884
+
885
+ @abstractmethod
886
+ def update_model_monitoring_controller(
887
+ self,
888
+ project: str,
889
+ base_period: int = 10,
890
+ image: str = "mlrun/mlrun",
891
+ ) -> None:
892
+ pass
893
+
894
+ @abstractmethod
895
+ def enable_model_monitoring(
896
+ self,
897
+ project: str,
898
+ base_period: int = 10,
899
+ image: str = "mlrun/mlrun",
900
+ deploy_histogram_data_drift_app: bool = True,
901
+ rebuild_images: bool = False,
902
+ fetch_credentials_from_sys_config: bool = False,
903
+ ) -> None:
904
+ pass
905
+
906
+ @abstractmethod
907
+ def disable_model_monitoring(
908
+ self,
909
+ project: str,
910
+ delete_resources: bool = True,
911
+ delete_stream_function: bool = False,
912
+ delete_histogram_data_drift_app: bool = True,
913
+ delete_user_applications: bool = False,
914
+ user_application_list: list[str] = None,
915
+ ) -> bool:
916
+ pass
917
+
918
+ @abstractmethod
919
+ def delete_model_monitoring_function(
920
+ self, project: str, functions: list[str]
921
+ ) -> bool:
922
+ pass
923
+
924
+ @abstractmethod
925
+ def deploy_histogram_data_drift_app(
926
+ self, project: str, image: str = "mlrun/mlrun"
927
+ ) -> None:
928
+ pass
929
+
930
+ @abstractmethod
931
+ def set_model_monitoring_credentials(
932
+ self,
933
+ project: str,
934
+ credentials: dict[str, str],
935
+ replace_creds: bool,
936
+ ) -> None:
937
+ pass
mlrun/db/factory.py CHANGED
@@ -1,4 +1,4 @@
1
- # Copyright 2023 MLRun Authors
1
+ # Copyright 2023 Iguazio
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.