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/nopdb.py CHANGED
@@ -14,10 +14,14 @@
14
14
 
15
15
 
16
16
  import datetime
17
- from typing import List, Optional, Union
17
+ from typing import Optional, Union
18
18
 
19
+ import mlrun.alerts
20
+ import mlrun.common.formatters
21
+ import mlrun.common.runtimes.constants
19
22
  import mlrun.common.schemas
20
23
  import mlrun.errors
24
+ import mlrun.lists
21
25
 
22
26
  from ..config import config
23
27
  from ..utils import logger
@@ -70,22 +74,41 @@ class NopDB(RunDBInterface):
70
74
  def abort_run(self, uid, project="", iter=0, timeout=45, status_text=""):
71
75
  pass
72
76
 
77
+ def list_runtime_resources(
78
+ self,
79
+ project: Optional[str] = None,
80
+ label_selector: Optional[str] = None,
81
+ kind: Optional[str] = None,
82
+ object_id: Optional[str] = None,
83
+ group_by: Optional[
84
+ mlrun.common.schemas.ListRuntimeResourcesGroupByField
85
+ ] = None,
86
+ ) -> Union[
87
+ mlrun.common.schemas.RuntimeResourcesOutput,
88
+ mlrun.common.schemas.GroupedByJobRuntimeResourcesOutput,
89
+ mlrun.common.schemas.GroupedByProjectRuntimeResourcesOutput,
90
+ ]:
91
+ return []
92
+
73
93
  def read_run(
74
94
  self,
75
95
  uid,
76
96
  project="",
77
97
  iter=0,
78
- format_: mlrun.common.schemas.runs.RunsFormat = mlrun.common.schemas.runs.RunsFormat.full,
98
+ format_: mlrun.common.formatters.RunFormat = mlrun.common.formatters.RunFormat.full,
79
99
  ):
80
100
  pass
81
101
 
82
102
  def list_runs(
83
103
  self,
84
104
  name: Optional[str] = None,
85
- uid: Optional[Union[str, List[str]]] = None,
105
+ uid: Optional[Union[str, list[str]]] = None,
86
106
  project: Optional[str] = None,
87
- labels: Optional[Union[str, List[str]]] = None,
88
- state: Optional[str] = None,
107
+ labels: Optional[Union[str, list[str]]] = None,
108
+ state: Optional[
109
+ mlrun.common.runtimes.constants.RunStates
110
+ ] = None, # Backward compatibility
111
+ states: Optional[list[mlrun.common.runtimes.constants.RunStates]] = None,
89
112
  sort: bool = True,
90
113
  last: int = 0,
91
114
  iter: bool = False,
@@ -102,7 +125,7 @@ class NopDB(RunDBInterface):
102
125
  max_partitions: int = 0,
103
126
  with_notifications: bool = False,
104
127
  ):
105
- pass
128
+ return mlrun.lists.RunList()
106
129
 
107
130
  def del_run(self, uid, project="", iter=0):
108
131
  pass
@@ -115,7 +138,16 @@ class NopDB(RunDBInterface):
115
138
  ):
116
139
  pass
117
140
 
118
- def read_artifact(self, key, tag="", iter=None, project="", tree=None, uid=None):
141
+ def read_artifact(
142
+ self,
143
+ key,
144
+ tag="",
145
+ iter=None,
146
+ project="",
147
+ tree=None,
148
+ uid=None,
149
+ format_: mlrun.common.formatters.ArtifactFormat = mlrun.common.formatters.ArtifactFormat.full,
150
+ ):
119
151
  pass
120
152
 
121
153
  def list_artifacts(
@@ -131,11 +163,24 @@ class NopDB(RunDBInterface):
131
163
  kind: str = None,
132
164
  category: Union[str, mlrun.common.schemas.ArtifactCategories] = None,
133
165
  tree: str = None,
166
+ format_: mlrun.common.formatters.ArtifactFormat = mlrun.common.formatters.ArtifactFormat.full,
134
167
  limit: int = None,
135
168
  ):
136
- pass
169
+ return mlrun.lists.ArtifactList()
137
170
 
138
- def del_artifact(self, key, tag="", project="", tree=None, uid=None):
171
+ def del_artifact(
172
+ self,
173
+ key,
174
+ tag="",
175
+ project="",
176
+ tree=None,
177
+ uid=None,
178
+ deletion_strategy: mlrun.common.schemas.artifact.ArtifactsDeletionStrategies = (
179
+ mlrun.common.schemas.artifact.ArtifactsDeletionStrategies.metadata_only
180
+ ),
181
+ secrets: dict = None,
182
+ iter=None,
183
+ ):
139
184
  pass
140
185
 
141
186
  def del_artifacts(self, name="", project="", tag="", labels=None):
@@ -150,8 +195,10 @@ class NopDB(RunDBInterface):
150
195
  def delete_function(self, name: str, project: str = ""):
151
196
  pass
152
197
 
153
- def list_functions(self, name=None, project="", tag="", labels=None):
154
- pass
198
+ def list_functions(
199
+ self, name=None, project="", tag="", labels=None, since=None, until=None
200
+ ):
201
+ return []
155
202
 
156
203
  def tag_objects(
157
204
  self,
@@ -203,8 +250,8 @@ class NopDB(RunDBInterface):
203
250
  def list_projects(
204
251
  self,
205
252
  owner: str = None,
206
- format_: mlrun.common.schemas.ProjectsFormat = mlrun.common.schemas.ProjectsFormat.name_only,
207
- labels: List[str] = None,
253
+ format_: mlrun.common.formatters.ProjectFormat = mlrun.common.formatters.ProjectFormat.name_only,
254
+ labels: list[str] = None,
208
255
  state: mlrun.common.schemas.ProjectState = None,
209
256
  ) -> mlrun.common.schemas.ProjectsOutput:
210
257
  pass
@@ -237,25 +284,40 @@ class NopDB(RunDBInterface):
237
284
  project: str,
238
285
  name: str = None,
239
286
  tag: str = None,
240
- entities: List[str] = None,
241
- labels: List[str] = None,
287
+ entities: list[str] = None,
288
+ labels: list[str] = None,
242
289
  ) -> mlrun.common.schemas.FeaturesOutput:
243
290
  pass
244
291
 
292
+ def list_features_v2(
293
+ self,
294
+ project: str,
295
+ name: str = None,
296
+ tag: str = None,
297
+ entities: list[str] = None,
298
+ labels: list[str] = None,
299
+ ) -> mlrun.common.schemas.FeaturesOutputV2:
300
+ pass
301
+
245
302
  def list_entities(
246
- self, project: str, name: str = None, tag: str = None, labels: List[str] = None
303
+ self, project: str, name: str = None, tag: str = None, labels: list[str] = None
247
304
  ) -> mlrun.common.schemas.EntitiesOutput:
248
305
  pass
249
306
 
307
+ def list_entities_v2(
308
+ self, project: str, name: str = None, tag: str = None, labels: list[str] = None
309
+ ) -> mlrun.common.schemas.EntitiesOutputV2:
310
+ pass
311
+
250
312
  def list_feature_sets(
251
313
  self,
252
314
  project: str = "",
253
315
  name: str = None,
254
316
  tag: str = None,
255
317
  state: str = None,
256
- entities: List[str] = None,
257
- features: List[str] = None,
258
- labels: List[str] = None,
318
+ entities: list[str] = None,
319
+ features: list[str] = None,
320
+ labels: list[str] = None,
259
321
  partition_by: Union[
260
322
  mlrun.common.schemas.FeatureStorePartitionByField, str
261
323
  ] = None,
@@ -264,7 +326,10 @@ class NopDB(RunDBInterface):
264
326
  partition_order: Union[
265
327
  mlrun.common.schemas.OrderType, str
266
328
  ] = mlrun.common.schemas.OrderType.desc,
267
- ) -> List[dict]:
329
+ format_: Union[
330
+ str, mlrun.common.formatters.FeatureSetFormat
331
+ ] = mlrun.common.formatters.FeatureSetFormat.full,
332
+ ) -> list[dict]:
268
333
  pass
269
334
 
270
335
  def store_feature_set(
@@ -313,7 +378,7 @@ class NopDB(RunDBInterface):
313
378
  name: str = None,
314
379
  tag: str = None,
315
380
  state: str = None,
316
- labels: List[str] = None,
381
+ labels: list[str] = None,
317
382
  partition_by: Union[
318
383
  mlrun.common.schemas.FeatureStorePartitionByField, str
319
384
  ] = None,
@@ -322,7 +387,7 @@ class NopDB(RunDBInterface):
322
387
  partition_order: Union[
323
388
  mlrun.common.schemas.OrderType, str
324
389
  ] = mlrun.common.schemas.OrderType.desc,
325
- ) -> List[dict]:
390
+ ) -> list[dict]:
326
391
  pass
327
392
 
328
393
  def store_feature_vector(
@@ -358,8 +423,8 @@ class NopDB(RunDBInterface):
358
423
  namespace: str = None,
359
424
  timeout: int = 30,
360
425
  format_: Union[
361
- str, mlrun.common.schemas.PipelinesFormat
362
- ] = mlrun.common.schemas.PipelinesFormat.summary,
426
+ str, mlrun.common.formatters.PipelineFormat
427
+ ] = mlrun.common.formatters.PipelineFormat.summary,
363
428
  project: str = None,
364
429
  ):
365
430
  pass
@@ -372,11 +437,11 @@ class NopDB(RunDBInterface):
372
437
  page_token: str = "",
373
438
  filter_: str = "",
374
439
  format_: Union[
375
- str, mlrun.common.schemas.PipelinesFormat
376
- ] = mlrun.common.schemas.PipelinesFormat.metadata_only,
440
+ str, mlrun.common.formatters.PipelineFormat
441
+ ] = mlrun.common.formatters.PipelineFormat.metadata_only,
377
442
  page_size: int = None,
378
443
  ) -> mlrun.common.schemas.PipelinesOutput:
379
- pass
444
+ return mlrun.common.schemas.PipelinesOutput(runs=[], total_size=0)
380
445
 
381
446
  def create_project_secrets(
382
447
  self,
@@ -395,7 +460,7 @@ class NopDB(RunDBInterface):
395
460
  provider: Union[
396
461
  str, mlrun.common.schemas.SecretProviderName
397
462
  ] = mlrun.common.schemas.SecretProviderName.kubernetes,
398
- secrets: List[str] = None,
463
+ secrets: list[str] = None,
399
464
  ) -> mlrun.common.schemas.SecretsData:
400
465
  pass
401
466
 
@@ -415,7 +480,7 @@ class NopDB(RunDBInterface):
415
480
  provider: Union[
416
481
  str, mlrun.common.schemas.SecretProviderName
417
482
  ] = mlrun.common.schemas.SecretProviderName.kubernetes,
418
- secrets: List[str] = None,
483
+ secrets: list[str] = None,
419
484
  ):
420
485
  pass
421
486
 
@@ -445,10 +510,10 @@ class NopDB(RunDBInterface):
445
510
  project: str,
446
511
  model: Optional[str] = None,
447
512
  function: Optional[str] = None,
448
- labels: List[str] = None,
513
+ labels: list[str] = None,
449
514
  start: str = "now-1h",
450
515
  end: str = "now",
451
- metrics: Optional[List[str]] = None,
516
+ metrics: Optional[list[str]] = None,
452
517
  ):
453
518
  pass
454
519
 
@@ -458,7 +523,7 @@ class NopDB(RunDBInterface):
458
523
  endpoint_id: str,
459
524
  start: Optional[str] = None,
460
525
  end: Optional[str] = None,
461
- metrics: Optional[List[str]] = None,
526
+ metrics: Optional[list[str]] = None,
462
527
  features: bool = False,
463
528
  ):
464
529
  pass
@@ -513,12 +578,100 @@ class NopDB(RunDBInterface):
513
578
  ):
514
579
  pass
515
580
 
581
+ def store_api_gateway(
582
+ self,
583
+ api_gateway: Union[
584
+ mlrun.common.schemas.APIGateway,
585
+ mlrun.runtimes.nuclio.api_gateway.APIGateway,
586
+ ],
587
+ project: str = None,
588
+ ) -> mlrun.common.schemas.APIGateway:
589
+ pass
590
+
591
+ def list_api_gateways(self, project=None):
592
+ pass
593
+
594
+ def get_api_gateway(self, name, project=None):
595
+ pass
596
+
597
+ def delete_api_gateway(self, name, project=None):
598
+ pass
599
+
516
600
  def verify_authorization(
517
601
  self,
518
602
  authorization_verification_input: mlrun.common.schemas.AuthorizationVerificationInput,
519
603
  ):
520
604
  pass
521
605
 
606
+ def remote_builder(
607
+ self,
608
+ func: "mlrun.runtimes.BaseRuntime",
609
+ with_mlrun: bool,
610
+ mlrun_version_specifier: Optional[str] = None,
611
+ skip_deployed: bool = False,
612
+ builder_env: Optional[dict] = None,
613
+ force_build: bool = False,
614
+ ):
615
+ pass
616
+
617
+ def deploy_nuclio_function(
618
+ self,
619
+ func: "mlrun.runtimes.RemoteRuntime",
620
+ builder_env: Optional[dict] = None,
621
+ ):
622
+ pass
623
+
624
+ def get_builder_status(
625
+ self,
626
+ func: "mlrun.runtimes.BaseRuntime",
627
+ offset: int = 0,
628
+ logs: bool = True,
629
+ last_log_timestamp: float = 0.0,
630
+ verbose: bool = False,
631
+ ):
632
+ pass
633
+
634
+ def get_nuclio_deploy_status(
635
+ self,
636
+ func: "mlrun.runtimes.RemoteRuntime",
637
+ last_log_timestamp: float = 0.0,
638
+ verbose: bool = False,
639
+ ):
640
+ pass
641
+
642
+ def set_run_notifications(
643
+ self,
644
+ project: str,
645
+ runs: list[mlrun.model.RunObject],
646
+ notifications: list[mlrun.model.Notification],
647
+ ):
648
+ pass
649
+
650
+ def store_run_notifications(
651
+ self,
652
+ notification_objects: list[mlrun.model.Notification],
653
+ run_uid: str,
654
+ project: str = None,
655
+ mask_params: bool = True,
656
+ ):
657
+ pass
658
+
659
+ def store_alert_notifications(
660
+ self,
661
+ session,
662
+ notification_objects: list[mlrun.model.Notification],
663
+ alert_id: str,
664
+ project: str,
665
+ mask_params: bool = True,
666
+ ):
667
+ pass
668
+
669
+ def get_log_size(self, uid, project=""):
670
+ pass
671
+
672
+ def watch_log(self, uid, project="", watch=True, offset=0):
673
+ pass
674
+
522
675
  def get_datastore_profile(
523
676
  self, name: str, project: str
524
677
  ) -> Optional[mlrun.common.schemas.DatastoreProfile]:
@@ -529,10 +682,115 @@ class NopDB(RunDBInterface):
529
682
 
530
683
  def list_datastore_profiles(
531
684
  self, project: str
532
- ) -> List[mlrun.common.schemas.DatastoreProfile]:
685
+ ) -> list[mlrun.common.schemas.DatastoreProfile]:
533
686
  pass
534
687
 
535
688
  def store_datastore_profile(
536
689
  self, profile: mlrun.common.schemas.DatastoreProfile, project: str
537
690
  ):
538
691
  pass
692
+
693
+ def function_status(self, project, name, kind, selector):
694
+ pass
695
+
696
+ def start_function(
697
+ self, func_url: str = None, function: "mlrun.runtimes.BaseRuntime" = None
698
+ ):
699
+ pass
700
+
701
+ def submit_workflow(
702
+ self,
703
+ project: str,
704
+ name: str,
705
+ workflow_spec: Union[
706
+ "mlrun.projects.pipelines.WorkflowSpec",
707
+ "mlrun.common.schemas.WorkflowSpec",
708
+ dict,
709
+ ],
710
+ arguments: Optional[dict] = None,
711
+ artifact_path: Optional[str] = None,
712
+ source: Optional[str] = None,
713
+ run_name: Optional[str] = None,
714
+ namespace: Optional[str] = None,
715
+ notifications: list["mlrun.model.Notification"] = None,
716
+ ) -> "mlrun.common.schemas.WorkflowResponse":
717
+ pass
718
+
719
+ def update_model_monitoring_controller(
720
+ self,
721
+ project: str,
722
+ base_period: int = 10,
723
+ image: str = "mlrun/mlrun",
724
+ ):
725
+ pass
726
+
727
+ def enable_model_monitoring(
728
+ self,
729
+ project: str,
730
+ base_period: int = 10,
731
+ image: str = "mlrun/mlrun",
732
+ deploy_histogram_data_drift_app: bool = True,
733
+ rebuild_images: bool = False,
734
+ fetch_credentials_from_sys_config: bool = False,
735
+ ) -> None:
736
+ pass
737
+
738
+ def disable_model_monitoring(
739
+ self,
740
+ project: str,
741
+ delete_resources: bool = True,
742
+ delete_stream_function: bool = False,
743
+ delete_histogram_data_drift_app: bool = True,
744
+ delete_user_applications: bool = False,
745
+ user_application_list: list[str] = None,
746
+ ) -> bool:
747
+ pass
748
+
749
+ def delete_model_monitoring_function(
750
+ self, project: str, functions: list[str]
751
+ ) -> bool:
752
+ pass
753
+
754
+ def deploy_histogram_data_drift_app(
755
+ self, project: str, image: str = "mlrun/mlrun"
756
+ ) -> None:
757
+ pass
758
+
759
+ def set_model_monitoring_credentials(
760
+ self,
761
+ project: str,
762
+ credentials: dict[str, str],
763
+ replace_creds: bool,
764
+ ) -> None:
765
+ pass
766
+
767
+ def generate_event(
768
+ self, name: str, event_data: Union[dict, mlrun.common.schemas.Event], project=""
769
+ ):
770
+ pass
771
+
772
+ def store_alert_config(
773
+ self,
774
+ alert_name: str,
775
+ alert_data: Union[dict, mlrun.alerts.alert.AlertConfig],
776
+ project="",
777
+ ):
778
+ pass
779
+
780
+ def get_alert_config(self, alert_name: str, project=""):
781
+ pass
782
+
783
+ def list_alerts_configs(self, project=""):
784
+ pass
785
+
786
+ def delete_alert_config(self, alert_name: str, project=""):
787
+ pass
788
+
789
+ def reset_alert_config(self, alert_name: str, project=""):
790
+ pass
791
+
792
+ def get_alert_template(self, template_name: str):
793
+ pass
794
+
795
+ def list_alert_templates(self):
796
+ pass
mlrun/errors.py CHANGED
@@ -29,11 +29,14 @@ class MLRunBaseError(Exception):
29
29
  pass
30
30
 
31
31
 
32
- class MLRunTaskNotReady(MLRunBaseError):
32
+ class MLRunTaskNotReadyError(MLRunBaseError):
33
33
  """indicate we are trying to read a value which is not ready
34
34
  or need to come from a job which is in progress"""
35
35
 
36
36
 
37
+ MLRunTaskNotReady = MLRunTaskNotReadyError # kept for BC only
38
+
39
+
37
40
  class MLRunHTTPError(MLRunBaseError, requests.HTTPError):
38
41
  def __init__(
39
42
  self,
@@ -73,7 +76,7 @@ class MLRunHTTPStatusError(MLRunHTTPError):
73
76
  error_status_code = None
74
77
 
75
78
  def __init__(self, *args, response: requests.Response = None, **kwargs):
76
- super(MLRunHTTPStatusError, self).__init__(
79
+ super().__init__(
77
80
  *args, response=response, status_code=self.error_status_code, **kwargs
78
81
  )
79
82
 
@@ -92,9 +95,7 @@ def raise_for_status(
92
95
  try:
93
96
  response.raise_for_status()
94
97
  except (requests.HTTPError, aiohttp.ClientResponseError) as exc:
95
- error_message = err_to_str(exc)
96
- if message:
97
- error_message = f"{error_message}: {message}"
98
+ error_message = err_to_str(exc) if not message else message
98
99
  status_code = (
99
100
  response.status_code
100
101
  if hasattr(response, "status_code")
@@ -139,7 +140,13 @@ def err_to_str(err):
139
140
  error_strings.append(err_msg)
140
141
  err = err.__cause__
141
142
 
142
- return ", caused by: ".join(error_strings)
143
+ err_msg = ", caused by: ".join(error_strings)
144
+
145
+ # in case the error string is longer than 32k, we truncate it
146
+ # the truncation takes the first 16k, then the last 16k characters
147
+ if len(err_msg) > 32_000:
148
+ err_msg = err_msg[:16_000] + "...truncated..." + err_msg[-16_000:]
149
+ return err_msg
143
150
 
144
151
 
145
152
  # Specific Errors
@@ -155,6 +162,10 @@ class MLRunNotFoundError(MLRunHTTPStatusError):
155
162
  error_status_code = HTTPStatus.NOT_FOUND.value
156
163
 
157
164
 
165
+ class MLRunPaginationEndOfResultsError(MLRunNotFoundError):
166
+ pass
167
+
168
+
158
169
  class MLRunBadRequestError(MLRunHTTPStatusError):
159
170
  error_status_code = HTTPStatus.BAD_REQUEST.value
160
171
 
@@ -183,6 +194,10 @@ class MLRunInternalServerError(MLRunHTTPStatusError):
183
194
  error_status_code = HTTPStatus.INTERNAL_SERVER_ERROR.value
184
195
 
185
196
 
197
+ class MLRunNotImplementedServerError(MLRunHTTPStatusError):
198
+ error_status_code = HTTPStatus.NOT_IMPLEMENTED.value
199
+
200
+
186
201
  class MLRunServiceUnavailableError(MLRunHTTPStatusError):
187
202
  error_status_code = HTTPStatus.SERVICE_UNAVAILABLE.value
188
203
 
@@ -199,6 +214,18 @@ class MLRunTimeoutError(MLRunHTTPStatusError, TimeoutError):
199
214
  error_status_code = HTTPStatus.GATEWAY_TIMEOUT.value
200
215
 
201
216
 
217
+ class MLRunInvalidMMStoreTypeError(MLRunHTTPStatusError, ValueError):
218
+ error_status_code = HTTPStatus.BAD_REQUEST.value
219
+
220
+
221
+ class MLRunStreamConnectionFailureError(MLRunHTTPStatusError, ValueError):
222
+ error_status_code = HTTPStatus.BAD_REQUEST.value
223
+
224
+
225
+ class MLRunTSDBConnectionFailureError(MLRunHTTPStatusError, ValueError):
226
+ error_status_code = HTTPStatus.BAD_REQUEST.value
227
+
228
+
202
229
  class MLRunRetryExhaustedError(Exception):
203
230
  pass
204
231
 
@@ -234,4 +261,7 @@ STATUS_ERRORS = {
234
261
  HTTPStatus.PRECONDITION_FAILED.value: MLRunPreconditionFailedError,
235
262
  HTTPStatus.INTERNAL_SERVER_ERROR.value: MLRunInternalServerError,
236
263
  HTTPStatus.SERVICE_UNAVAILABLE.value: MLRunServiceUnavailableError,
264
+ HTTPStatus.NOT_IMPLEMENTED.value: MLRunNotImplementedServerError,
237
265
  }
266
+
267
+ EXPECTED_ERRORS = (MLRunPaginationEndOfResultsError,)