mlrun 1.7.0rc4__py3-none-any.whl → 1.7.2__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.
- mlrun/__init__.py +11 -1
- mlrun/__main__.py +39 -121
- mlrun/{datastore/helpers.py → alerts/__init__.py} +2 -5
- mlrun/alerts/alert.py +248 -0
- mlrun/api/schemas/__init__.py +4 -3
- mlrun/artifacts/__init__.py +8 -3
- mlrun/artifacts/base.py +39 -254
- mlrun/artifacts/dataset.py +9 -190
- mlrun/artifacts/manager.py +73 -46
- mlrun/artifacts/model.py +30 -158
- mlrun/artifacts/plots.py +23 -380
- mlrun/common/constants.py +73 -1
- mlrun/common/db/sql_session.py +3 -2
- mlrun/common/formatters/__init__.py +21 -0
- mlrun/common/formatters/artifact.py +46 -0
- mlrun/common/formatters/base.py +113 -0
- mlrun/common/formatters/feature_set.py +44 -0
- mlrun/common/formatters/function.py +46 -0
- mlrun/common/formatters/pipeline.py +53 -0
- mlrun/common/formatters/project.py +51 -0
- mlrun/common/formatters/run.py +29 -0
- mlrun/common/helpers.py +11 -1
- mlrun/{runtimes → common/runtimes}/constants.py +32 -4
- mlrun/common/schemas/__init__.py +31 -4
- mlrun/common/schemas/alert.py +202 -0
- mlrun/common/schemas/api_gateway.py +196 -0
- mlrun/common/schemas/artifact.py +28 -1
- mlrun/common/schemas/auth.py +13 -2
- mlrun/common/schemas/client_spec.py +2 -1
- mlrun/common/schemas/common.py +7 -4
- mlrun/common/schemas/constants.py +3 -0
- mlrun/common/schemas/feature_store.py +58 -28
- mlrun/common/schemas/frontend_spec.py +8 -0
- mlrun/common/schemas/function.py +11 -0
- mlrun/common/schemas/hub.py +7 -9
- mlrun/common/schemas/model_monitoring/__init__.py +21 -4
- mlrun/common/schemas/model_monitoring/constants.py +136 -42
- mlrun/common/schemas/model_monitoring/grafana.py +9 -5
- mlrun/common/schemas/model_monitoring/model_endpoints.py +89 -41
- mlrun/common/schemas/notification.py +69 -12
- mlrun/{runtimes/mpijob/v1alpha1.py → common/schemas/pagination.py} +10 -13
- mlrun/common/schemas/pipeline.py +7 -0
- mlrun/common/schemas/project.py +67 -16
- mlrun/common/schemas/runs.py +17 -0
- mlrun/common/schemas/schedule.py +1 -1
- mlrun/common/schemas/workflow.py +10 -2
- mlrun/common/types.py +14 -1
- mlrun/config.py +233 -58
- mlrun/data_types/data_types.py +11 -1
- mlrun/data_types/spark.py +5 -4
- mlrun/data_types/to_pandas.py +75 -34
- mlrun/datastore/__init__.py +8 -10
- mlrun/datastore/alibaba_oss.py +131 -0
- mlrun/datastore/azure_blob.py +131 -43
- mlrun/datastore/base.py +107 -47
- mlrun/datastore/datastore.py +17 -7
- mlrun/datastore/datastore_profile.py +91 -7
- mlrun/datastore/dbfs_store.py +3 -7
- mlrun/datastore/filestore.py +1 -3
- mlrun/datastore/google_cloud_storage.py +92 -32
- mlrun/datastore/hdfs.py +5 -0
- mlrun/datastore/inmem.py +6 -3
- mlrun/datastore/redis.py +3 -2
- mlrun/datastore/s3.py +30 -12
- mlrun/datastore/snowflake_utils.py +45 -0
- mlrun/datastore/sources.py +274 -59
- mlrun/datastore/spark_utils.py +30 -0
- mlrun/datastore/store_resources.py +9 -7
- mlrun/datastore/storeytargets.py +151 -0
- mlrun/datastore/targets.py +387 -119
- mlrun/datastore/utils.py +68 -5
- mlrun/datastore/v3io.py +28 -50
- mlrun/db/auth_utils.py +152 -0
- mlrun/db/base.py +245 -20
- mlrun/db/factory.py +1 -4
- mlrun/db/httpdb.py +909 -231
- mlrun/db/nopdb.py +279 -14
- mlrun/errors.py +35 -5
- mlrun/execution.py +111 -38
- mlrun/feature_store/__init__.py +0 -2
- mlrun/feature_store/api.py +46 -53
- mlrun/feature_store/common.py +6 -11
- mlrun/feature_store/feature_set.py +48 -23
- mlrun/feature_store/feature_vector.py +13 -2
- mlrun/feature_store/ingestion.py +7 -6
- mlrun/feature_store/retrieval/base.py +9 -4
- mlrun/feature_store/retrieval/dask_merger.py +2 -0
- mlrun/feature_store/retrieval/job.py +13 -4
- mlrun/feature_store/retrieval/local_merger.py +2 -0
- mlrun/feature_store/retrieval/spark_merger.py +24 -32
- mlrun/feature_store/steps.py +38 -19
- mlrun/features.py +6 -14
- mlrun/frameworks/_common/plan.py +3 -3
- mlrun/frameworks/_dl_common/loggers/tensorboard_logger.py +7 -12
- mlrun/frameworks/_ml_common/plan.py +1 -1
- mlrun/frameworks/auto_mlrun/auto_mlrun.py +2 -2
- mlrun/frameworks/lgbm/__init__.py +1 -1
- mlrun/frameworks/lgbm/callbacks/callback.py +2 -4
- mlrun/frameworks/lgbm/model_handler.py +1 -1
- mlrun/frameworks/parallel_coordinates.py +4 -4
- mlrun/frameworks/pytorch/__init__.py +2 -2
- mlrun/frameworks/sklearn/__init__.py +1 -1
- mlrun/frameworks/sklearn/mlrun_interface.py +13 -3
- mlrun/frameworks/tf_keras/__init__.py +5 -2
- mlrun/frameworks/tf_keras/callbacks/logging_callback.py +1 -1
- mlrun/frameworks/tf_keras/mlrun_interface.py +2 -2
- mlrun/frameworks/xgboost/__init__.py +1 -1
- mlrun/k8s_utils.py +57 -12
- mlrun/launcher/__init__.py +1 -1
- mlrun/launcher/base.py +6 -5
- mlrun/launcher/client.py +13 -11
- mlrun/launcher/factory.py +1 -1
- mlrun/launcher/local.py +15 -5
- mlrun/launcher/remote.py +10 -3
- mlrun/lists.py +6 -2
- mlrun/model.py +297 -48
- mlrun/model_monitoring/__init__.py +1 -1
- mlrun/model_monitoring/api.py +152 -357
- mlrun/model_monitoring/applications/__init__.py +10 -0
- mlrun/model_monitoring/applications/_application_steps.py +190 -0
- mlrun/model_monitoring/applications/base.py +108 -0
- mlrun/model_monitoring/applications/context.py +341 -0
- mlrun/model_monitoring/{evidently_application.py → applications/evidently_base.py} +27 -22
- mlrun/model_monitoring/applications/histogram_data_drift.py +227 -91
- mlrun/model_monitoring/applications/results.py +99 -0
- mlrun/model_monitoring/controller.py +130 -303
- mlrun/model_monitoring/{stores/models/sqlite.py → db/__init__.py} +5 -10
- mlrun/model_monitoring/db/stores/__init__.py +136 -0
- mlrun/model_monitoring/db/stores/base/__init__.py +15 -0
- mlrun/model_monitoring/db/stores/base/store.py +213 -0
- mlrun/model_monitoring/db/stores/sqldb/__init__.py +13 -0
- mlrun/model_monitoring/db/stores/sqldb/models/__init__.py +71 -0
- mlrun/model_monitoring/db/stores/sqldb/models/base.py +190 -0
- mlrun/model_monitoring/db/stores/sqldb/models/mysql.py +103 -0
- mlrun/model_monitoring/{stores/models/mysql.py → db/stores/sqldb/models/sqlite.py} +19 -13
- mlrun/model_monitoring/db/stores/sqldb/sql_store.py +659 -0
- mlrun/model_monitoring/db/stores/v3io_kv/__init__.py +13 -0
- mlrun/model_monitoring/db/stores/v3io_kv/kv_store.py +726 -0
- mlrun/model_monitoring/db/tsdb/__init__.py +105 -0
- mlrun/model_monitoring/db/tsdb/base.py +448 -0
- mlrun/model_monitoring/db/tsdb/helpers.py +30 -0
- mlrun/model_monitoring/db/tsdb/tdengine/__init__.py +15 -0
- mlrun/model_monitoring/db/tsdb/tdengine/schemas.py +298 -0
- mlrun/model_monitoring/db/tsdb/tdengine/stream_graph_steps.py +42 -0
- mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connector.py +522 -0
- mlrun/model_monitoring/db/tsdb/v3io/__init__.py +15 -0
- mlrun/model_monitoring/db/tsdb/v3io/stream_graph_steps.py +158 -0
- mlrun/model_monitoring/db/tsdb/v3io/v3io_connector.py +849 -0
- mlrun/model_monitoring/features_drift_table.py +34 -22
- mlrun/model_monitoring/helpers.py +177 -39
- mlrun/model_monitoring/model_endpoint.py +3 -2
- mlrun/model_monitoring/stream_processing.py +165 -398
- mlrun/model_monitoring/tracking_policy.py +7 -1
- mlrun/model_monitoring/writer.py +161 -125
- mlrun/package/packagers/default_packager.py +2 -2
- mlrun/package/packagers_manager.py +1 -0
- mlrun/package/utils/_formatter.py +2 -2
- mlrun/platforms/__init__.py +11 -10
- mlrun/platforms/iguazio.py +67 -228
- mlrun/projects/__init__.py +6 -1
- mlrun/projects/operations.py +47 -20
- mlrun/projects/pipelines.py +396 -249
- mlrun/projects/project.py +1176 -406
- mlrun/render.py +28 -22
- mlrun/run.py +208 -181
- mlrun/runtimes/__init__.py +76 -11
- mlrun/runtimes/base.py +54 -24
- mlrun/runtimes/daskjob.py +9 -2
- mlrun/runtimes/databricks_job/databricks_runtime.py +1 -0
- mlrun/runtimes/databricks_job/databricks_wrapper.py +1 -1
- mlrun/runtimes/funcdoc.py +1 -29
- mlrun/runtimes/kubejob.py +34 -128
- mlrun/runtimes/local.py +39 -10
- mlrun/runtimes/mpijob/__init__.py +0 -20
- mlrun/runtimes/mpijob/abstract.py +8 -8
- mlrun/runtimes/mpijob/v1.py +1 -1
- mlrun/runtimes/nuclio/__init__.py +1 -0
- mlrun/runtimes/nuclio/api_gateway.py +769 -0
- mlrun/runtimes/nuclio/application/__init__.py +15 -0
- mlrun/runtimes/nuclio/application/application.py +758 -0
- mlrun/runtimes/nuclio/application/reverse_proxy.go +95 -0
- mlrun/runtimes/nuclio/function.py +188 -68
- mlrun/runtimes/nuclio/serving.py +57 -60
- mlrun/runtimes/pod.py +191 -58
- mlrun/runtimes/remotesparkjob.py +11 -8
- mlrun/runtimes/sparkjob/spark3job.py +17 -18
- mlrun/runtimes/utils.py +40 -73
- mlrun/secrets.py +6 -2
- mlrun/serving/__init__.py +8 -1
- mlrun/serving/remote.py +2 -3
- mlrun/serving/routers.py +89 -64
- mlrun/serving/server.py +54 -26
- mlrun/serving/states.py +187 -56
- mlrun/serving/utils.py +19 -11
- mlrun/serving/v2_serving.py +136 -63
- mlrun/track/tracker.py +2 -1
- mlrun/track/trackers/mlflow_tracker.py +5 -0
- mlrun/utils/async_http.py +26 -6
- mlrun/utils/db.py +18 -0
- mlrun/utils/helpers.py +375 -105
- mlrun/utils/http.py +2 -2
- mlrun/utils/logger.py +75 -9
- mlrun/utils/notifications/notification/__init__.py +14 -10
- mlrun/utils/notifications/notification/base.py +48 -0
- mlrun/utils/notifications/notification/console.py +2 -0
- mlrun/utils/notifications/notification/git.py +24 -1
- mlrun/utils/notifications/notification/ipython.py +2 -0
- mlrun/utils/notifications/notification/slack.py +96 -21
- mlrun/utils/notifications/notification/webhook.py +63 -2
- mlrun/utils/notifications/notification_pusher.py +146 -16
- mlrun/utils/regex.py +9 -0
- mlrun/utils/retryer.py +3 -2
- mlrun/utils/v3io_clients.py +2 -3
- mlrun/utils/version/version.json +2 -2
- mlrun-1.7.2.dist-info/METADATA +390 -0
- mlrun-1.7.2.dist-info/RECORD +351 -0
- {mlrun-1.7.0rc4.dist-info → mlrun-1.7.2.dist-info}/WHEEL +1 -1
- mlrun/feature_store/retrieval/conversion.py +0 -271
- mlrun/kfpops.py +0 -868
- mlrun/model_monitoring/application.py +0 -310
- mlrun/model_monitoring/batch.py +0 -974
- mlrun/model_monitoring/controller_handler.py +0 -37
- mlrun/model_monitoring/prometheus.py +0 -216
- mlrun/model_monitoring/stores/__init__.py +0 -111
- mlrun/model_monitoring/stores/kv_model_endpoint_store.py +0 -574
- mlrun/model_monitoring/stores/model_endpoint_store.py +0 -145
- mlrun/model_monitoring/stores/models/__init__.py +0 -27
- mlrun/model_monitoring/stores/models/base.py +0 -84
- mlrun/model_monitoring/stores/sql_model_endpoint_store.py +0 -382
- mlrun/platforms/other.py +0 -305
- mlrun-1.7.0rc4.dist-info/METADATA +0 -269
- mlrun-1.7.0rc4.dist-info/RECORD +0 -321
- {mlrun-1.7.0rc4.dist-info → mlrun-1.7.2.dist-info}/LICENSE +0 -0
- {mlrun-1.7.0rc4.dist-info → mlrun-1.7.2.dist-info}/entry_points.txt +0 -0
- {mlrun-1.7.0rc4.dist-info → mlrun-1.7.2.dist-info}/top_level.txt +0 -0
mlrun/db/nopdb.py
CHANGED
|
@@ -16,8 +16,12 @@
|
|
|
16
16
|
import datetime
|
|
17
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,7 +74,29 @@ class NopDB(RunDBInterface):
|
|
|
70
74
|
def abort_run(self, uid, project="", iter=0, timeout=45, status_text=""):
|
|
71
75
|
pass
|
|
72
76
|
|
|
73
|
-
def
|
|
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
|
+
|
|
93
|
+
def read_run(
|
|
94
|
+
self,
|
|
95
|
+
uid,
|
|
96
|
+
project="",
|
|
97
|
+
iter=0,
|
|
98
|
+
format_: mlrun.common.formatters.RunFormat = mlrun.common.formatters.RunFormat.full,
|
|
99
|
+
):
|
|
74
100
|
pass
|
|
75
101
|
|
|
76
102
|
def list_runs(
|
|
@@ -79,7 +105,10 @@ class NopDB(RunDBInterface):
|
|
|
79
105
|
uid: Optional[Union[str, list[str]]] = None,
|
|
80
106
|
project: Optional[str] = None,
|
|
81
107
|
labels: Optional[Union[str, list[str]]] = None,
|
|
82
|
-
state: Optional[
|
|
108
|
+
state: Optional[
|
|
109
|
+
mlrun.common.runtimes.constants.RunStates
|
|
110
|
+
] = None, # Backward compatibility
|
|
111
|
+
states: Optional[list[mlrun.common.runtimes.constants.RunStates]] = None,
|
|
83
112
|
sort: bool = True,
|
|
84
113
|
last: int = 0,
|
|
85
114
|
iter: bool = False,
|
|
@@ -96,7 +125,7 @@ class NopDB(RunDBInterface):
|
|
|
96
125
|
max_partitions: int = 0,
|
|
97
126
|
with_notifications: bool = False,
|
|
98
127
|
):
|
|
99
|
-
|
|
128
|
+
return mlrun.lists.RunList()
|
|
100
129
|
|
|
101
130
|
def del_run(self, uid, project="", iter=0):
|
|
102
131
|
pass
|
|
@@ -109,7 +138,16 @@ class NopDB(RunDBInterface):
|
|
|
109
138
|
):
|
|
110
139
|
pass
|
|
111
140
|
|
|
112
|
-
def read_artifact(
|
|
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
|
+
):
|
|
113
151
|
pass
|
|
114
152
|
|
|
115
153
|
def list_artifacts(
|
|
@@ -125,10 +163,24 @@ class NopDB(RunDBInterface):
|
|
|
125
163
|
kind: str = None,
|
|
126
164
|
category: Union[str, mlrun.common.schemas.ArtifactCategories] = None,
|
|
127
165
|
tree: str = None,
|
|
166
|
+
format_: mlrun.common.formatters.ArtifactFormat = mlrun.common.formatters.ArtifactFormat.full,
|
|
167
|
+
limit: int = None,
|
|
128
168
|
):
|
|
129
|
-
|
|
169
|
+
return mlrun.lists.ArtifactList()
|
|
130
170
|
|
|
131
|
-
def del_artifact(
|
|
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
|
+
):
|
|
132
184
|
pass
|
|
133
185
|
|
|
134
186
|
def del_artifacts(self, name="", project="", tag="", labels=None):
|
|
@@ -143,8 +195,10 @@ class NopDB(RunDBInterface):
|
|
|
143
195
|
def delete_function(self, name: str, project: str = ""):
|
|
144
196
|
pass
|
|
145
197
|
|
|
146
|
-
def list_functions(
|
|
147
|
-
|
|
198
|
+
def list_functions(
|
|
199
|
+
self, name=None, project="", tag="", labels=None, since=None, until=None
|
|
200
|
+
):
|
|
201
|
+
return []
|
|
148
202
|
|
|
149
203
|
def tag_objects(
|
|
150
204
|
self,
|
|
@@ -196,7 +250,7 @@ class NopDB(RunDBInterface):
|
|
|
196
250
|
def list_projects(
|
|
197
251
|
self,
|
|
198
252
|
owner: str = None,
|
|
199
|
-
format_: mlrun.common.
|
|
253
|
+
format_: mlrun.common.formatters.ProjectFormat = mlrun.common.formatters.ProjectFormat.name_only,
|
|
200
254
|
labels: list[str] = None,
|
|
201
255
|
state: mlrun.common.schemas.ProjectState = None,
|
|
202
256
|
) -> mlrun.common.schemas.ProjectsOutput:
|
|
@@ -235,11 +289,26 @@ class NopDB(RunDBInterface):
|
|
|
235
289
|
) -> mlrun.common.schemas.FeaturesOutput:
|
|
236
290
|
pass
|
|
237
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
|
+
|
|
238
302
|
def list_entities(
|
|
239
303
|
self, project: str, name: str = None, tag: str = None, labels: list[str] = None
|
|
240
304
|
) -> mlrun.common.schemas.EntitiesOutput:
|
|
241
305
|
pass
|
|
242
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
|
+
|
|
243
312
|
def list_feature_sets(
|
|
244
313
|
self,
|
|
245
314
|
project: str = "",
|
|
@@ -257,6 +326,9 @@ class NopDB(RunDBInterface):
|
|
|
257
326
|
partition_order: Union[
|
|
258
327
|
mlrun.common.schemas.OrderType, str
|
|
259
328
|
] = mlrun.common.schemas.OrderType.desc,
|
|
329
|
+
format_: Union[
|
|
330
|
+
str, mlrun.common.formatters.FeatureSetFormat
|
|
331
|
+
] = mlrun.common.formatters.FeatureSetFormat.full,
|
|
260
332
|
) -> list[dict]:
|
|
261
333
|
pass
|
|
262
334
|
|
|
@@ -351,8 +423,8 @@ class NopDB(RunDBInterface):
|
|
|
351
423
|
namespace: str = None,
|
|
352
424
|
timeout: int = 30,
|
|
353
425
|
format_: Union[
|
|
354
|
-
str, mlrun.common.
|
|
355
|
-
] = mlrun.common.
|
|
426
|
+
str, mlrun.common.formatters.PipelineFormat
|
|
427
|
+
] = mlrun.common.formatters.PipelineFormat.summary,
|
|
356
428
|
project: str = None,
|
|
357
429
|
):
|
|
358
430
|
pass
|
|
@@ -365,11 +437,11 @@ class NopDB(RunDBInterface):
|
|
|
365
437
|
page_token: str = "",
|
|
366
438
|
filter_: str = "",
|
|
367
439
|
format_: Union[
|
|
368
|
-
str, mlrun.common.
|
|
369
|
-
] = mlrun.common.
|
|
440
|
+
str, mlrun.common.formatters.PipelineFormat
|
|
441
|
+
] = mlrun.common.formatters.PipelineFormat.metadata_only,
|
|
370
442
|
page_size: int = None,
|
|
371
443
|
) -> mlrun.common.schemas.PipelinesOutput:
|
|
372
|
-
|
|
444
|
+
return mlrun.common.schemas.PipelinesOutput(runs=[], total_size=0)
|
|
373
445
|
|
|
374
446
|
def create_project_secrets(
|
|
375
447
|
self,
|
|
@@ -506,12 +578,100 @@ class NopDB(RunDBInterface):
|
|
|
506
578
|
):
|
|
507
579
|
pass
|
|
508
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
|
+
|
|
509
600
|
def verify_authorization(
|
|
510
601
|
self,
|
|
511
602
|
authorization_verification_input: mlrun.common.schemas.AuthorizationVerificationInput,
|
|
512
603
|
):
|
|
513
604
|
pass
|
|
514
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
|
+
|
|
515
675
|
def get_datastore_profile(
|
|
516
676
|
self, name: str, project: str
|
|
517
677
|
) -> Optional[mlrun.common.schemas.DatastoreProfile]:
|
|
@@ -529,3 +689,108 @@ class NopDB(RunDBInterface):
|
|
|
529
689
|
self, profile: mlrun.common.schemas.DatastoreProfile, project: str
|
|
530
690
|
):
|
|
531
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
|
|
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,
|
|
@@ -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
|
-
|
|
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,)
|