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.
- mlrun/__init__.py +11 -1
- mlrun/__main__.py +40 -122
- mlrun/alerts/__init__.py +15 -0
- mlrun/alerts/alert.py +248 -0
- mlrun/api/schemas/__init__.py +5 -4
- mlrun/artifacts/__init__.py +8 -3
- mlrun/artifacts/base.py +47 -257
- mlrun/artifacts/dataset.py +11 -192
- mlrun/artifacts/manager.py +79 -47
- mlrun/artifacts/model.py +31 -159
- mlrun/artifacts/plots.py +23 -380
- mlrun/common/constants.py +74 -1
- mlrun/common/db/sql_session.py +5 -5
- mlrun/common/formatters/__init__.py +21 -0
- mlrun/common/formatters/artifact.py +45 -0
- mlrun/common/formatters/base.py +113 -0
- mlrun/common/formatters/feature_set.py +33 -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 +12 -3
- mlrun/common/model_monitoring/helpers.py +9 -5
- mlrun/{runtimes → common/runtimes}/constants.py +37 -9
- mlrun/common/schemas/__init__.py +31 -5
- mlrun/common/schemas/alert.py +202 -0
- mlrun/common/schemas/api_gateway.py +196 -0
- mlrun/common/schemas/artifact.py +25 -4
- mlrun/common/schemas/auth.py +16 -5
- mlrun/common/schemas/background_task.py +1 -1
- mlrun/common/schemas/client_spec.py +4 -2
- mlrun/common/schemas/common.py +7 -4
- mlrun/common/schemas/constants.py +3 -0
- mlrun/common/schemas/feature_store.py +74 -44
- mlrun/common/schemas/frontend_spec.py +15 -7
- mlrun/common/schemas/function.py +12 -1
- mlrun/common/schemas/hub.py +11 -18
- mlrun/common/schemas/memory_reports.py +2 -2
- mlrun/common/schemas/model_monitoring/__init__.py +20 -4
- mlrun/common/schemas/model_monitoring/constants.py +123 -42
- mlrun/common/schemas/model_monitoring/grafana.py +13 -9
- mlrun/common/schemas/model_monitoring/model_endpoints.py +101 -54
- mlrun/common/schemas/notification.py +71 -14
- mlrun/common/schemas/object.py +2 -2
- mlrun/{model_monitoring/controller_handler.py → common/schemas/pagination.py} +9 -12
- mlrun/common/schemas/pipeline.py +8 -1
- mlrun/common/schemas/project.py +69 -18
- mlrun/common/schemas/runs.py +7 -1
- mlrun/common/schemas/runtime_resource.py +8 -12
- mlrun/common/schemas/schedule.py +4 -4
- mlrun/common/schemas/tag.py +1 -2
- mlrun/common/schemas/workflow.py +12 -4
- mlrun/common/types.py +14 -1
- mlrun/config.py +154 -69
- mlrun/data_types/data_types.py +6 -1
- mlrun/data_types/spark.py +2 -2
- mlrun/data_types/to_pandas.py +67 -37
- mlrun/datastore/__init__.py +6 -8
- mlrun/datastore/alibaba_oss.py +131 -0
- mlrun/datastore/azure_blob.py +143 -42
- mlrun/datastore/base.py +102 -58
- mlrun/datastore/datastore.py +34 -13
- mlrun/datastore/datastore_profile.py +146 -20
- mlrun/datastore/dbfs_store.py +3 -7
- mlrun/datastore/filestore.py +1 -4
- mlrun/datastore/google_cloud_storage.py +97 -33
- mlrun/datastore/hdfs.py +56 -0
- mlrun/datastore/inmem.py +6 -3
- mlrun/datastore/redis.py +7 -2
- mlrun/datastore/s3.py +34 -12
- mlrun/datastore/snowflake_utils.py +45 -0
- mlrun/datastore/sources.py +303 -111
- mlrun/datastore/spark_utils.py +31 -2
- mlrun/datastore/store_resources.py +9 -7
- mlrun/datastore/storeytargets.py +151 -0
- mlrun/datastore/targets.py +453 -176
- mlrun/datastore/utils.py +72 -58
- mlrun/datastore/v3io.py +6 -1
- mlrun/db/base.py +274 -41
- mlrun/db/factory.py +1 -1
- mlrun/db/httpdb.py +893 -225
- mlrun/db/nopdb.py +291 -33
- mlrun/errors.py +36 -6
- mlrun/execution.py +115 -42
- mlrun/feature_store/__init__.py +0 -2
- mlrun/feature_store/api.py +65 -73
- mlrun/feature_store/common.py +7 -12
- mlrun/feature_store/feature_set.py +76 -55
- mlrun/feature_store/feature_vector.py +39 -31
- mlrun/feature_store/ingestion.py +7 -6
- mlrun/feature_store/retrieval/base.py +16 -11
- 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 +45 -34
- mlrun/features.py +11 -21
- mlrun/frameworks/_common/artifacts_library.py +9 -9
- mlrun/frameworks/_common/mlrun_interface.py +5 -5
- mlrun/frameworks/_common/model_handler.py +48 -48
- mlrun/frameworks/_common/plan.py +5 -6
- mlrun/frameworks/_common/producer.py +3 -4
- mlrun/frameworks/_common/utils.py +5 -5
- mlrun/frameworks/_dl_common/loggers/logger.py +6 -7
- mlrun/frameworks/_dl_common/loggers/mlrun_logger.py +9 -9
- mlrun/frameworks/_dl_common/loggers/tensorboard_logger.py +23 -47
- mlrun/frameworks/_ml_common/artifacts_library.py +1 -2
- mlrun/frameworks/_ml_common/loggers/logger.py +3 -4
- mlrun/frameworks/_ml_common/loggers/mlrun_logger.py +4 -5
- mlrun/frameworks/_ml_common/model_handler.py +24 -24
- mlrun/frameworks/_ml_common/pkl_model_server.py +2 -2
- mlrun/frameworks/_ml_common/plan.py +2 -2
- mlrun/frameworks/_ml_common/plans/calibration_curve_plan.py +2 -3
- mlrun/frameworks/_ml_common/plans/confusion_matrix_plan.py +2 -3
- mlrun/frameworks/_ml_common/plans/dataset_plan.py +3 -3
- mlrun/frameworks/_ml_common/plans/feature_importance_plan.py +3 -3
- mlrun/frameworks/_ml_common/plans/roc_curve_plan.py +4 -4
- mlrun/frameworks/_ml_common/utils.py +4 -4
- mlrun/frameworks/auto_mlrun/auto_mlrun.py +9 -9
- mlrun/frameworks/huggingface/model_server.py +4 -4
- mlrun/frameworks/lgbm/__init__.py +33 -33
- mlrun/frameworks/lgbm/callbacks/callback.py +2 -4
- mlrun/frameworks/lgbm/callbacks/logging_callback.py +4 -5
- mlrun/frameworks/lgbm/callbacks/mlrun_logging_callback.py +4 -5
- mlrun/frameworks/lgbm/mlrun_interfaces/booster_mlrun_interface.py +1 -3
- mlrun/frameworks/lgbm/mlrun_interfaces/mlrun_interface.py +6 -6
- mlrun/frameworks/lgbm/model_handler.py +10 -10
- mlrun/frameworks/lgbm/model_server.py +6 -6
- mlrun/frameworks/lgbm/utils.py +5 -5
- mlrun/frameworks/onnx/dataset.py +8 -8
- mlrun/frameworks/onnx/mlrun_interface.py +3 -3
- mlrun/frameworks/onnx/model_handler.py +6 -6
- mlrun/frameworks/onnx/model_server.py +7 -7
- mlrun/frameworks/parallel_coordinates.py +6 -6
- mlrun/frameworks/pytorch/__init__.py +18 -18
- mlrun/frameworks/pytorch/callbacks/callback.py +4 -5
- mlrun/frameworks/pytorch/callbacks/logging_callback.py +17 -17
- mlrun/frameworks/pytorch/callbacks/mlrun_logging_callback.py +11 -11
- mlrun/frameworks/pytorch/callbacks/tensorboard_logging_callback.py +23 -29
- mlrun/frameworks/pytorch/callbacks_handler.py +38 -38
- mlrun/frameworks/pytorch/mlrun_interface.py +20 -20
- mlrun/frameworks/pytorch/model_handler.py +17 -17
- mlrun/frameworks/pytorch/model_server.py +7 -7
- mlrun/frameworks/sklearn/__init__.py +13 -13
- mlrun/frameworks/sklearn/estimator.py +4 -4
- mlrun/frameworks/sklearn/metrics_library.py +14 -14
- mlrun/frameworks/sklearn/mlrun_interface.py +16 -9
- mlrun/frameworks/sklearn/model_handler.py +2 -2
- mlrun/frameworks/tf_keras/__init__.py +10 -7
- mlrun/frameworks/tf_keras/callbacks/logging_callback.py +15 -15
- mlrun/frameworks/tf_keras/callbacks/mlrun_logging_callback.py +11 -11
- mlrun/frameworks/tf_keras/callbacks/tensorboard_logging_callback.py +19 -23
- mlrun/frameworks/tf_keras/mlrun_interface.py +9 -11
- mlrun/frameworks/tf_keras/model_handler.py +14 -14
- mlrun/frameworks/tf_keras/model_server.py +6 -6
- mlrun/frameworks/xgboost/__init__.py +13 -13
- mlrun/frameworks/xgboost/model_handler.py +6 -6
- mlrun/k8s_utils.py +61 -17
- mlrun/launcher/__init__.py +1 -1
- mlrun/launcher/base.py +16 -15
- mlrun/launcher/client.py +13 -11
- mlrun/launcher/factory.py +1 -1
- mlrun/launcher/local.py +23 -13
- mlrun/launcher/remote.py +17 -10
- mlrun/lists.py +7 -6
- mlrun/model.py +478 -103
- mlrun/model_monitoring/__init__.py +1 -1
- mlrun/model_monitoring/api.py +163 -371
- mlrun/{runtimes/mpijob/v1alpha1.py → model_monitoring/applications/__init__.py} +9 -15
- mlrun/model_monitoring/applications/_application_steps.py +188 -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 +354 -0
- mlrun/model_monitoring/applications/results.py +99 -0
- mlrun/model_monitoring/controller.py +131 -278
- mlrun/model_monitoring/db/__init__.py +18 -0
- 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 +279 -0
- mlrun/model_monitoring/db/tsdb/tdengine/stream_graph_steps.py +42 -0
- mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connector.py +507 -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 +134 -106
- mlrun/model_monitoring/helpers.py +199 -55
- mlrun/model_monitoring/metrics/__init__.py +13 -0
- mlrun/model_monitoring/metrics/histogram_distance.py +127 -0
- mlrun/model_monitoring/model_endpoint.py +3 -2
- mlrun/model_monitoring/stream_processing.py +134 -398
- mlrun/model_monitoring/tracking_policy.py +9 -2
- mlrun/model_monitoring/writer.py +161 -125
- mlrun/package/__init__.py +6 -6
- mlrun/package/context_handler.py +5 -5
- mlrun/package/packager.py +7 -7
- mlrun/package/packagers/default_packager.py +8 -8
- mlrun/package/packagers/numpy_packagers.py +15 -15
- mlrun/package/packagers/pandas_packagers.py +5 -5
- mlrun/package/packagers/python_standard_library_packagers.py +10 -10
- mlrun/package/packagers_manager.py +19 -23
- mlrun/package/utils/_formatter.py +6 -6
- mlrun/package/utils/_pickler.py +2 -2
- mlrun/package/utils/_supported_format.py +4 -4
- mlrun/package/utils/log_hint_utils.py +2 -2
- mlrun/package/utils/type_hint_utils.py +4 -9
- mlrun/platforms/__init__.py +11 -10
- mlrun/platforms/iguazio.py +24 -203
- mlrun/projects/operations.py +52 -25
- mlrun/projects/pipelines.py +191 -197
- mlrun/projects/project.py +1227 -400
- mlrun/render.py +16 -19
- mlrun/run.py +209 -184
- mlrun/runtimes/__init__.py +83 -15
- mlrun/runtimes/base.py +51 -35
- mlrun/runtimes/daskjob.py +17 -10
- mlrun/runtimes/databricks_job/databricks_cancel_task.py +1 -1
- mlrun/runtimes/databricks_job/databricks_runtime.py +8 -7
- mlrun/runtimes/databricks_job/databricks_wrapper.py +1 -1
- mlrun/runtimes/funcdoc.py +1 -29
- mlrun/runtimes/function_reference.py +1 -1
- mlrun/runtimes/kubejob.py +34 -128
- mlrun/runtimes/local.py +40 -11
- mlrun/runtimes/mpijob/__init__.py +0 -20
- mlrun/runtimes/mpijob/abstract.py +9 -10
- mlrun/runtimes/mpijob/v1.py +1 -1
- mlrun/{model_monitoring/stores/models/sqlite.py → runtimes/nuclio/__init__.py} +7 -9
- 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/{function.py → nuclio/function.py} +200 -83
- mlrun/runtimes/{nuclio.py → nuclio/nuclio.py} +6 -6
- mlrun/runtimes/{serving.py → nuclio/serving.py} +65 -68
- mlrun/runtimes/pod.py +281 -101
- mlrun/runtimes/remotesparkjob.py +12 -9
- mlrun/runtimes/sparkjob/spark3job.py +67 -51
- mlrun/runtimes/utils.py +41 -75
- mlrun/secrets.py +9 -5
- mlrun/serving/__init__.py +8 -1
- mlrun/serving/remote.py +2 -7
- mlrun/serving/routers.py +85 -69
- mlrun/serving/server.py +69 -44
- mlrun/serving/states.py +209 -36
- mlrun/serving/utils.py +22 -14
- mlrun/serving/v1_serving.py +6 -7
- mlrun/serving/v2_serving.py +133 -54
- mlrun/track/tracker.py +2 -1
- mlrun/track/tracker_manager.py +3 -3
- mlrun/track/trackers/mlflow_tracker.py +6 -2
- mlrun/utils/async_http.py +6 -8
- mlrun/utils/azure_vault.py +1 -1
- mlrun/utils/clones.py +1 -2
- mlrun/utils/condition_evaluator.py +3 -3
- mlrun/utils/db.py +21 -3
- mlrun/utils/helpers.py +405 -225
- mlrun/utils/http.py +3 -6
- mlrun/utils/logger.py +112 -16
- mlrun/utils/notifications/notification/__init__.py +17 -13
- mlrun/utils/notifications/notification/base.py +50 -2
- mlrun/utils/notifications/notification/console.py +2 -0
- mlrun/utils/notifications/notification/git.py +24 -1
- mlrun/utils/notifications/notification/ipython.py +3 -1
- mlrun/utils/notifications/notification/slack.py +96 -21
- mlrun/utils/notifications/notification/webhook.py +59 -2
- mlrun/utils/notifications/notification_pusher.py +149 -30
- mlrun/utils/regex.py +9 -0
- mlrun/utils/retryer.py +208 -0
- mlrun/utils/singleton.py +1 -1
- mlrun/utils/v3io_clients.py +4 -6
- mlrun/utils/version/version.json +2 -2
- mlrun/utils/version/version.py +2 -6
- mlrun-1.7.0.dist-info/METADATA +378 -0
- mlrun-1.7.0.dist-info/RECORD +351 -0
- {mlrun-1.6.4rc8.dist-info → mlrun-1.7.0.dist-info}/WHEEL +1 -1
- mlrun/feature_store/retrieval/conversion.py +0 -273
- mlrun/kfpops.py +0 -868
- mlrun/model_monitoring/application.py +0 -310
- mlrun/model_monitoring/batch.py +0 -1095
- mlrun/model_monitoring/prometheus.py +0 -219
- mlrun/model_monitoring/stores/__init__.py +0 -111
- mlrun/model_monitoring/stores/kv_model_endpoint_store.py +0 -576
- mlrun/model_monitoring/stores/model_endpoint_store.py +0 -147
- 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 -384
- mlrun/platforms/other.py +0 -306
- mlrun-1.6.4rc8.dist-info/METADATA +0 -272
- mlrun-1.6.4rc8.dist-info/RECORD +0 -314
- {mlrun-1.6.4rc8.dist-info → mlrun-1.7.0.dist-info}/LICENSE +0 -0
- {mlrun-1.6.4rc8.dist-info → mlrun-1.7.0.dist-info}/entry_points.txt +0 -0
- {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
|
|
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.
|
|
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,
|
|
105
|
+
uid: Optional[Union[str, list[str]]] = None,
|
|
86
106
|
project: Optional[str] = None,
|
|
87
|
-
labels: Optional[Union[str,
|
|
88
|
-
state: Optional[
|
|
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
|
-
|
|
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(
|
|
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
|
-
|
|
169
|
+
return mlrun.lists.ArtifactList()
|
|
137
170
|
|
|
138
|
-
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
|
+
):
|
|
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(
|
|
154
|
-
|
|
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.
|
|
207
|
-
labels:
|
|
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:
|
|
241
|
-
labels:
|
|
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:
|
|
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:
|
|
257
|
-
features:
|
|
258
|
-
labels:
|
|
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
|
-
|
|
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:
|
|
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
|
-
) ->
|
|
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.
|
|
362
|
-
] = mlrun.common.
|
|
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.
|
|
376
|
-
] = mlrun.common.
|
|
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
|
-
|
|
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:
|
|
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:
|
|
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:
|
|
513
|
+
labels: list[str] = None,
|
|
449
514
|
start: str = "now-1h",
|
|
450
515
|
end: str = "now",
|
|
451
|
-
metrics: Optional[
|
|
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[
|
|
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
|
-
) ->
|
|
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
|
|
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(
|
|
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
|
-
|
|
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,)
|