mlrun 1.7.0rc7__py3-none-any.whl → 1.7.0rc8__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/__main__.py +2 -0
- mlrun/common/schemas/__init__.py +1 -0
- mlrun/common/schemas/api_gateway.py +8 -1
- mlrun/config.py +27 -10
- mlrun/datastore/datastore_profile.py +7 -0
- mlrun/datastore/targets.py +6 -1
- mlrun/frameworks/tf_keras/callbacks/logging_callback.py +6 -1
- mlrun/frameworks/tf_keras/mlrun_interface.py +20 -8
- mlrun/kfpops.py +2 -5
- mlrun/model_monitoring/helpers.py +3 -1
- mlrun/projects/pipelines.py +1 -1
- mlrun/projects/project.py +9 -2
- mlrun/run.py +2 -0
- mlrun/runtimes/nuclio/api_gateway.py +32 -6
- mlrun/serving/routers.py +4 -3
- mlrun/serving/v2_serving.py +4 -3
- mlrun/utils/http.py +1 -1
- mlrun/utils/retryer.py +1 -0
- mlrun/utils/version/version.json +2 -2
- {mlrun-1.7.0rc7.dist-info → mlrun-1.7.0rc8.dist-info}/METADATA +12 -12
- {mlrun-1.7.0rc7.dist-info → mlrun-1.7.0rc8.dist-info}/RECORD +25 -25
- {mlrun-1.7.0rc7.dist-info → mlrun-1.7.0rc8.dist-info}/LICENSE +0 -0
- {mlrun-1.7.0rc7.dist-info → mlrun-1.7.0rc8.dist-info}/WHEEL +0 -0
- {mlrun-1.7.0rc7.dist-info → mlrun-1.7.0rc8.dist-info}/entry_points.txt +0 -0
- {mlrun-1.7.0rc7.dist-info → mlrun-1.7.0rc8.dist-info}/top_level.txt +0 -0
mlrun/__main__.py
CHANGED
mlrun/common/schemas/__init__.py
CHANGED
|
@@ -36,6 +36,13 @@ class APIGatewayAuthenticationMode(mlrun.common.types.StrEnum):
|
|
|
36
36
|
)
|
|
37
37
|
|
|
38
38
|
|
|
39
|
+
class APIGatewayState(mlrun.common.types.StrEnum):
|
|
40
|
+
none = ""
|
|
41
|
+
ready = "ready"
|
|
42
|
+
error = "error"
|
|
43
|
+
waiting_for_provisioning = "waitingForProvisioning"
|
|
44
|
+
|
|
45
|
+
|
|
39
46
|
class _APIGatewayBaseModel(pydantic.BaseModel):
|
|
40
47
|
class Config:
|
|
41
48
|
extra = pydantic.Extra.allow
|
|
@@ -72,7 +79,7 @@ class APIGatewaySpec(_APIGatewayBaseModel):
|
|
|
72
79
|
|
|
73
80
|
class APIGatewayStatus(_APIGatewayBaseModel):
|
|
74
81
|
name: Optional[str]
|
|
75
|
-
state: Optional[
|
|
82
|
+
state: Optional[APIGatewayState]
|
|
76
83
|
|
|
77
84
|
|
|
78
85
|
class APIGateway(_APIGatewayBaseModel):
|
mlrun/config.py
CHANGED
|
@@ -481,10 +481,13 @@ default_config = {
|
|
|
481
481
|
# if set to true, will log a warning for trying to use run db functionality while in nop db mode
|
|
482
482
|
"verbose": True,
|
|
483
483
|
},
|
|
484
|
-
"
|
|
485
|
-
"
|
|
486
|
-
"
|
|
487
|
-
|
|
484
|
+
"pagination": {
|
|
485
|
+
"default_page_size": 20,
|
|
486
|
+
"pagination_cache": {
|
|
487
|
+
"interval": 60,
|
|
488
|
+
"ttl": 3600,
|
|
489
|
+
"max_size": 10000,
|
|
490
|
+
},
|
|
488
491
|
},
|
|
489
492
|
},
|
|
490
493
|
"model_endpoint_monitoring": {
|
|
@@ -548,6 +551,7 @@ default_config = {
|
|
|
548
551
|
"nosql": "v3io:///projects/{project}/FeatureStore/{name}/{kind}",
|
|
549
552
|
# "authority" is optional and generalizes [userinfo "@"] host [":" port]
|
|
550
553
|
"redisnosql": "redis://{authority}/projects/{project}/FeatureStore/{name}/{kind}",
|
|
554
|
+
"dsnosql": "ds://{ds_profile_name}/projects/{project}/FeatureStore/{name}/{kind}",
|
|
551
555
|
},
|
|
552
556
|
"default_targets": "parquet,nosql",
|
|
553
557
|
"default_job_image": "mlrun/mlrun",
|
|
@@ -1073,7 +1077,7 @@ class Config:
|
|
|
1073
1077
|
target: str = "online",
|
|
1074
1078
|
artifact_path: str = None,
|
|
1075
1079
|
function_name: str = None,
|
|
1076
|
-
) -> str:
|
|
1080
|
+
) -> typing.Union[str, list[str]]:
|
|
1077
1081
|
"""Get the full path from the configuration based on the provided project and kind.
|
|
1078
1082
|
|
|
1079
1083
|
:param project: Project name.
|
|
@@ -1089,7 +1093,8 @@ class Config:
|
|
|
1089
1093
|
relative artifact path will be taken from the global MLRun artifact path.
|
|
1090
1094
|
:param function_name: Application name, None for model_monitoring_stream.
|
|
1091
1095
|
|
|
1092
|
-
:return: Full configured path for the provided kind.
|
|
1096
|
+
:return: Full configured path for the provided kind. Can be either a single path
|
|
1097
|
+
or a list of paths in the case of the online model monitoring stream path.
|
|
1093
1098
|
"""
|
|
1094
1099
|
|
|
1095
1100
|
if target != "offline":
|
|
@@ -1111,10 +1116,22 @@ class Config:
|
|
|
1111
1116
|
if function_name is None
|
|
1112
1117
|
else f"{kind}-{function_name.lower()}",
|
|
1113
1118
|
)
|
|
1114
|
-
return mlrun.
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1119
|
+
elif kind == "stream": # return list for mlrun<1.6.3 BC
|
|
1120
|
+
return [
|
|
1121
|
+
mlrun.mlconf.model_endpoint_monitoring.store_prefixes.default.format(
|
|
1122
|
+
project=project,
|
|
1123
|
+
kind=kind,
|
|
1124
|
+
), # old stream uri (pipelines) for BC ML-6043
|
|
1125
|
+
mlrun.mlconf.model_endpoint_monitoring.store_prefixes.user_space.format(
|
|
1126
|
+
project=project,
|
|
1127
|
+
kind=kind,
|
|
1128
|
+
), # new stream uri (projects)
|
|
1129
|
+
]
|
|
1130
|
+
else:
|
|
1131
|
+
return mlrun.mlconf.model_endpoint_monitoring.store_prefixes.default.format(
|
|
1132
|
+
project=project,
|
|
1133
|
+
kind=kind,
|
|
1134
|
+
)
|
|
1118
1135
|
|
|
1119
1136
|
# Get the current offline path from the configuration
|
|
1120
1137
|
file_path = mlrun.mlconf.model_endpoint_monitoring.offline_storage_path.format(
|
|
@@ -68,6 +68,9 @@ class TemporaryClientDatastoreProfiles(metaclass=mlrun.utils.singleton.Singleton
|
|
|
68
68
|
def get(self, key):
|
|
69
69
|
return self._data.get(key, None)
|
|
70
70
|
|
|
71
|
+
def remove(self, key):
|
|
72
|
+
self._data.pop(key, None)
|
|
73
|
+
|
|
71
74
|
|
|
72
75
|
class DatastoreProfileBasic(DatastoreProfile):
|
|
73
76
|
type: str = pydantic.Field("basic")
|
|
@@ -460,3 +463,7 @@ def register_temporary_client_datastore_profile(profile: DatastoreProfile):
|
|
|
460
463
|
It's beneficial for testing purposes.
|
|
461
464
|
"""
|
|
462
465
|
TemporaryClientDatastoreProfiles().add(profile)
|
|
466
|
+
|
|
467
|
+
|
|
468
|
+
def remove_temporary_client_datastore_profile(profile_name: str):
|
|
469
|
+
TemporaryClientDatastoreProfiles().remove(profile_name)
|
mlrun/datastore/targets.py
CHANGED
|
@@ -524,7 +524,12 @@ class BaseStoreTarget(DataTargetBase):
|
|
|
524
524
|
store, path_in_store, target_path = self._get_store_and_path()
|
|
525
525
|
target_path = generate_path_with_chunk(self, chunk_id, target_path)
|
|
526
526
|
file_system = store.filesystem
|
|
527
|
-
if
|
|
527
|
+
if (
|
|
528
|
+
file_system.protocol == "file"
|
|
529
|
+
# fsspec 2023.10.0 changed protocol from "file" to ("file", "local")
|
|
530
|
+
or isinstance(file_system.protocol, (tuple, list))
|
|
531
|
+
and "file" in file_system.protocol
|
|
532
|
+
):
|
|
528
533
|
dir = os.path.dirname(target_path)
|
|
529
534
|
if dir:
|
|
530
535
|
os.makedirs(dir, exist_ok=True)
|
|
@@ -15,9 +15,14 @@
|
|
|
15
15
|
from typing import Callable, Union
|
|
16
16
|
|
|
17
17
|
import numpy as np
|
|
18
|
+
import semver
|
|
18
19
|
import tensorflow as tf
|
|
19
20
|
from tensorflow import Tensor, Variable
|
|
20
|
-
|
|
21
|
+
|
|
22
|
+
if semver.VersionInfo.parse(tf.__version__) < semver.VersionInfo(2, 6):
|
|
23
|
+
from tensorflow.keras.callbacks import Callback
|
|
24
|
+
else:
|
|
25
|
+
from keras.callbacks import Callback
|
|
21
26
|
|
|
22
27
|
import mlrun
|
|
23
28
|
|
|
@@ -17,18 +17,30 @@ import os
|
|
|
17
17
|
from abc import ABC
|
|
18
18
|
from typing import Union
|
|
19
19
|
|
|
20
|
+
import semver
|
|
20
21
|
import tensorflow as tf
|
|
21
22
|
from tensorflow import keras
|
|
22
|
-
from tensorflow.keras.callbacks import (
|
|
23
|
-
BaseLogger,
|
|
24
|
-
Callback,
|
|
25
|
-
CSVLogger,
|
|
26
|
-
ModelCheckpoint,
|
|
27
|
-
ProgbarLogger,
|
|
28
|
-
TensorBoard,
|
|
29
|
-
)
|
|
30
23
|
from tensorflow.keras.optimizers import Optimizer
|
|
31
24
|
|
|
25
|
+
if semver.VersionInfo.parse(tf.__version__) < semver.VersionInfo(2, 6):
|
|
26
|
+
from tensorflow.keras.callbacks import (
|
|
27
|
+
BaseLogger,
|
|
28
|
+
Callback,
|
|
29
|
+
CSVLogger,
|
|
30
|
+
ModelCheckpoint,
|
|
31
|
+
ProgbarLogger,
|
|
32
|
+
TensorBoard,
|
|
33
|
+
)
|
|
34
|
+
else:
|
|
35
|
+
from keras.callbacks import (
|
|
36
|
+
BaseLogger,
|
|
37
|
+
Callback,
|
|
38
|
+
CSVLogger,
|
|
39
|
+
ModelCheckpoint,
|
|
40
|
+
ProgbarLogger,
|
|
41
|
+
TensorBoard,
|
|
42
|
+
)
|
|
43
|
+
|
|
32
44
|
import mlrun
|
|
33
45
|
|
|
34
46
|
from .._common import MLRunInterface
|
mlrun/kfpops.py
CHANGED
|
@@ -103,7 +103,7 @@ def write_kfpmeta(struct):
|
|
|
103
103
|
with open(path, "w") as fp:
|
|
104
104
|
fp.write(str(val))
|
|
105
105
|
except Exception as exc:
|
|
106
|
-
logger.warning("Failed writing to temp file. Ignoring", exc=
|
|
106
|
+
logger.warning("Failed writing to temp file. Ignoring", exc=err_to_str(exc))
|
|
107
107
|
pass
|
|
108
108
|
|
|
109
109
|
text = "# Run Report\n"
|
|
@@ -112,10 +112,7 @@ def write_kfpmeta(struct):
|
|
|
112
112
|
|
|
113
113
|
text += "## Metadata\n```yaml\n" + dict_to_yaml(struct) + "```\n"
|
|
114
114
|
|
|
115
|
-
metadata = {
|
|
116
|
-
"outputs": output_artifacts
|
|
117
|
-
+ [{"type": "markdown", "storage": "inline", "source": text}]
|
|
118
|
-
}
|
|
115
|
+
metadata = {"outputs": [{"type": "markdown", "storage": "inline", "source": text}]}
|
|
119
116
|
with open(os.path.join(KFPMETA_DIR, "mlpipeline-ui-metadata.json"), "w") as f:
|
|
120
117
|
json.dump(metadata, f)
|
|
121
118
|
|
|
@@ -42,7 +42,7 @@ class _BatchDict(typing.TypedDict):
|
|
|
42
42
|
def get_stream_path(
|
|
43
43
|
project: str = None,
|
|
44
44
|
function_name: str = mm_constants.MonitoringFunctionNames.STREAM,
|
|
45
|
-
):
|
|
45
|
+
) -> str:
|
|
46
46
|
"""
|
|
47
47
|
Get stream path from the project secret. If wasn't set, take it from the system configurations
|
|
48
48
|
|
|
@@ -61,6 +61,8 @@ def get_stream_path(
|
|
|
61
61
|
function_name=function_name,
|
|
62
62
|
)
|
|
63
63
|
|
|
64
|
+
if isinstance(stream_uri, list): # ML-6043 - user side gets only the new stream uri
|
|
65
|
+
stream_uri = stream_uri[1] # get new stream path, under projects
|
|
64
66
|
return mlrun.common.model_monitoring.helpers.parse_monitoring_stream_path(
|
|
65
67
|
stream_uri=stream_uri, project=project, function_name=function_name
|
|
66
68
|
)
|
mlrun/projects/pipelines.py
CHANGED
mlrun/projects/project.py
CHANGED
|
@@ -129,6 +129,7 @@ def new_project(
|
|
|
129
129
|
save: bool = True,
|
|
130
130
|
overwrite: bool = False,
|
|
131
131
|
parameters: dict = None,
|
|
132
|
+
default_function_node_selector: dict = None,
|
|
132
133
|
) -> "MlrunProject":
|
|
133
134
|
"""Create a new MLRun project, optionally load it from a yaml/zip/git template
|
|
134
135
|
|
|
@@ -182,6 +183,7 @@ def new_project(
|
|
|
182
183
|
:param overwrite: overwrite project using 'cascade' deletion strategy (deletes project resources)
|
|
183
184
|
if project with name exists
|
|
184
185
|
:param parameters: key/value pairs to add to the project.spec.params
|
|
186
|
+
:param default_function_node_selector: defines the default node selector for scheduling functions within the project
|
|
185
187
|
|
|
186
188
|
:returns: project object
|
|
187
189
|
"""
|
|
@@ -228,6 +230,11 @@ def new_project(
|
|
|
228
230
|
project.spec.origin_url = url
|
|
229
231
|
if description:
|
|
230
232
|
project.spec.description = description
|
|
233
|
+
|
|
234
|
+
if default_function_node_selector:
|
|
235
|
+
for key, val in default_function_node_selector.items():
|
|
236
|
+
project.spec.default_function_node_selector[key] = val
|
|
237
|
+
|
|
231
238
|
if parameters:
|
|
232
239
|
# Enable setting project parameters at load time, can be used to customize the project_setup
|
|
233
240
|
for key, val in parameters.items():
|
|
@@ -2086,7 +2093,7 @@ class MlrunProject(ModelObj):
|
|
|
2086
2093
|
self,
|
|
2087
2094
|
func: typing.Union[str, mlrun.runtimes.BaseRuntime] = None,
|
|
2088
2095
|
name: str = "",
|
|
2089
|
-
kind: str = "",
|
|
2096
|
+
kind: str = "job",
|
|
2090
2097
|
image: str = None,
|
|
2091
2098
|
handler: str = None,
|
|
2092
2099
|
with_repo: bool = None,
|
|
@@ -3340,7 +3347,7 @@ class MlrunProject(ModelObj):
|
|
|
3340
3347
|
logger.warning(
|
|
3341
3348
|
f"Image was successfully built, but failed to delete temporary function {function.metadata.name}."
|
|
3342
3349
|
" To remove the function, attempt to manually delete it.",
|
|
3343
|
-
exc=
|
|
3350
|
+
exc=mlrun.errors.err_to_str(exc),
|
|
3344
3351
|
)
|
|
3345
3352
|
|
|
3346
3353
|
return result
|
mlrun/run.py
CHANGED
|
@@ -389,6 +389,8 @@ def import_function_to_dict(url, secrets=None):
|
|
|
389
389
|
code = get_in(runtime, "spec.build.functionSourceCode")
|
|
390
390
|
update_in(runtime, "metadata.build.code_origin", url)
|
|
391
391
|
cmd = code_file = get_in(runtime, "spec.command", "")
|
|
392
|
+
# use kind = "job" by default if not specified
|
|
393
|
+
runtime.setdefault("kind", "job")
|
|
392
394
|
if " " in cmd:
|
|
393
395
|
code_file = cmd[: cmd.find(" ")]
|
|
394
396
|
if runtime["kind"] in ["", "local"]:
|
|
@@ -85,7 +85,7 @@ class BasicAuth(APIGatewayAuthenticator):
|
|
|
85
85
|
self,
|
|
86
86
|
) -> Optional[dict[str, Optional[mlrun.common.schemas.APIGatewayBasicAuth]]]:
|
|
87
87
|
return {
|
|
88
|
-
"
|
|
88
|
+
"basicAuth": mlrun.common.schemas.APIGatewayBasicAuth(
|
|
89
89
|
username=self._username, password=self._password
|
|
90
90
|
)
|
|
91
91
|
}
|
|
@@ -147,6 +147,7 @@ class APIGateway:
|
|
|
147
147
|
self.description = description
|
|
148
148
|
self.canary = canary
|
|
149
149
|
self.authentication = authentication
|
|
150
|
+
self.state = ""
|
|
150
151
|
|
|
151
152
|
def invoke(
|
|
152
153
|
self,
|
|
@@ -172,6 +173,11 @@ class APIGateway:
|
|
|
172
173
|
raise mlrun.errors.MLRunInvalidArgumentError(
|
|
173
174
|
"Invocation url is not set. Set up gateway's `invoke_url` attribute."
|
|
174
175
|
)
|
|
176
|
+
if not self.is_ready():
|
|
177
|
+
raise mlrun.errors.MLRunPreconditionFailedError(
|
|
178
|
+
f"API gateway is not ready. " f"Current state: {self.state}"
|
|
179
|
+
)
|
|
180
|
+
|
|
175
181
|
if (
|
|
176
182
|
self.authentication.authentication_mode
|
|
177
183
|
== NUCLIO_API_GATEWAY_AUTHENTICATION_MODE_BASIC_AUTH
|
|
@@ -188,6 +194,12 @@ class APIGateway:
|
|
|
188
194
|
auth=HTTPBasicAuth(*auth) if auth else None,
|
|
189
195
|
)
|
|
190
196
|
|
|
197
|
+
def is_ready(self):
|
|
198
|
+
if self.state is not mlrun.common.schemas.api_gateway.APIGatewayState.ready:
|
|
199
|
+
# try to sync the state
|
|
200
|
+
self.sync()
|
|
201
|
+
return self.state == mlrun.common.schemas.api_gateway.APIGatewayState.ready
|
|
202
|
+
|
|
191
203
|
def sync(self):
|
|
192
204
|
"""
|
|
193
205
|
Synchronize the API gateway from the server.
|
|
@@ -201,6 +213,7 @@ class APIGateway:
|
|
|
201
213
|
self.functions = synced_gateway.functions
|
|
202
214
|
self.canary = synced_gateway.canary
|
|
203
215
|
self.description = synced_gateway.description
|
|
216
|
+
self.state = synced_gateway.state
|
|
204
217
|
|
|
205
218
|
def with_basic_auth(self, username: str, password: str):
|
|
206
219
|
"""
|
|
@@ -247,7 +260,12 @@ class APIGateway:
|
|
|
247
260
|
def from_scheme(cls, api_gateway: mlrun.common.schemas.APIGateway):
|
|
248
261
|
project = api_gateway.metadata.labels.get(PROJECT_NAME_LABEL)
|
|
249
262
|
functions, canary = cls._resolve_canary(api_gateway.spec.upstreams)
|
|
250
|
-
|
|
263
|
+
state = (
|
|
264
|
+
api_gateway.status.state
|
|
265
|
+
if api_gateway.status
|
|
266
|
+
else mlrun.common.schemas.APIGatewayState.none
|
|
267
|
+
)
|
|
268
|
+
api_gateway = cls(
|
|
251
269
|
project=project,
|
|
252
270
|
description=api_gateway.spec.description,
|
|
253
271
|
name=api_gateway.spec.name,
|
|
@@ -257,15 +275,21 @@ class APIGateway:
|
|
|
257
275
|
functions=functions,
|
|
258
276
|
canary=canary,
|
|
259
277
|
)
|
|
278
|
+
api_gateway.state = state
|
|
279
|
+
return api_gateway
|
|
260
280
|
|
|
261
281
|
def to_scheme(self) -> mlrun.common.schemas.APIGateway:
|
|
262
282
|
upstreams = (
|
|
263
283
|
[
|
|
264
284
|
mlrun.common.schemas.APIGatewayUpstream(
|
|
265
|
-
nucliofunction={"name":
|
|
266
|
-
percentage=
|
|
267
|
-
)
|
|
268
|
-
|
|
285
|
+
nucliofunction={"name": self.functions[0]},
|
|
286
|
+
percentage=self.canary[0],
|
|
287
|
+
),
|
|
288
|
+
mlrun.common.schemas.APIGatewayUpstream(
|
|
289
|
+
# do not set percent for the second function,
|
|
290
|
+
# so we can define which function to display as a primary one in UI
|
|
291
|
+
nucliofunction={"name": self.functions[1]},
|
|
292
|
+
),
|
|
269
293
|
]
|
|
270
294
|
if self.canary
|
|
271
295
|
else [
|
|
@@ -300,6 +324,8 @@ class APIGateway:
|
|
|
300
324
|
|
|
301
325
|
:return: (str) The invoke URL.
|
|
302
326
|
"""
|
|
327
|
+
if not self.host.startswith("http"):
|
|
328
|
+
self.host = f"https://{self.host}"
|
|
303
329
|
return urljoin(self.host, self.path)
|
|
304
330
|
|
|
305
331
|
def _validate(
|
mlrun/serving/routers.py
CHANGED
|
@@ -28,6 +28,7 @@ import numpy as np
|
|
|
28
28
|
import mlrun
|
|
29
29
|
import mlrun.common.model_monitoring
|
|
30
30
|
import mlrun.common.schemas.model_monitoring
|
|
31
|
+
from mlrun.errors import err_to_str
|
|
31
32
|
from mlrun.utils import logger, now_date
|
|
32
33
|
|
|
33
34
|
from ..common.helpers import parse_versioned_object_uri
|
|
@@ -1013,7 +1014,7 @@ def _init_endpoint_record(
|
|
|
1013
1014
|
graph_server.function_uri
|
|
1014
1015
|
)
|
|
1015
1016
|
except Exception as e:
|
|
1016
|
-
logger.error("Failed to parse function URI", exc=e)
|
|
1017
|
+
logger.error("Failed to parse function URI", exc=err_to_str(e))
|
|
1017
1018
|
return None
|
|
1018
1019
|
|
|
1019
1020
|
# Generating version model value based on the model name and model version
|
|
@@ -1089,12 +1090,12 @@ def _init_endpoint_record(
|
|
|
1089
1090
|
except Exception as exc:
|
|
1090
1091
|
logger.warning(
|
|
1091
1092
|
"Failed creating model endpoint record",
|
|
1092
|
-
exc=exc,
|
|
1093
|
+
exc=err_to_str(exc),
|
|
1093
1094
|
traceback=traceback.format_exc(),
|
|
1094
1095
|
)
|
|
1095
1096
|
|
|
1096
1097
|
except Exception as e:
|
|
1097
|
-
logger.error("Failed to retrieve model endpoint object", exc=e)
|
|
1098
|
+
logger.error("Failed to retrieve model endpoint object", exc=err_to_str(e))
|
|
1098
1099
|
|
|
1099
1100
|
return endpoint_uid
|
|
1100
1101
|
|
mlrun/serving/v2_serving.py
CHANGED
|
@@ -21,6 +21,7 @@ import mlrun.common.model_monitoring
|
|
|
21
21
|
import mlrun.common.schemas.model_monitoring
|
|
22
22
|
from mlrun.artifacts import ModelArtifact # noqa: F401
|
|
23
23
|
from mlrun.config import config
|
|
24
|
+
from mlrun.errors import err_to_str
|
|
24
25
|
from mlrun.utils import logger, now_date
|
|
25
26
|
|
|
26
27
|
from ..common.helpers import parse_versioned_object_uri
|
|
@@ -523,7 +524,7 @@ def _init_endpoint_record(
|
|
|
523
524
|
graph_server.function_uri
|
|
524
525
|
)
|
|
525
526
|
except Exception as e:
|
|
526
|
-
logger.error("Failed to parse function URI", exc=e)
|
|
527
|
+
logger.error("Failed to parse function URI", exc=err_to_str(e))
|
|
527
528
|
return None
|
|
528
529
|
|
|
529
530
|
# Generating version model value based on the model name and model version
|
|
@@ -576,9 +577,9 @@ def _init_endpoint_record(
|
|
|
576
577
|
)
|
|
577
578
|
|
|
578
579
|
except Exception as e:
|
|
579
|
-
logger.error("Failed to create endpoint record", exc=e)
|
|
580
|
+
logger.error("Failed to create endpoint record", exc=err_to_str(e))
|
|
580
581
|
|
|
581
582
|
except Exception as e:
|
|
582
|
-
logger.error("Failed to retrieve model endpoint object", exc=e)
|
|
583
|
+
logger.error("Failed to retrieve model endpoint object", exc=err_to_str(e))
|
|
583
584
|
|
|
584
585
|
return uid
|
mlrun/utils/http.py
CHANGED
mlrun/utils/retryer.py
CHANGED
mlrun/utils/version/version.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: mlrun
|
|
3
|
-
Version: 1.7.
|
|
3
|
+
Version: 1.7.0rc8
|
|
4
4
|
Summary: Tracking and config of machine learning runs
|
|
5
5
|
Home-page: https://github.com/mlrun/mlrun
|
|
6
6
|
Author: Yaron Haviv
|
|
@@ -37,12 +37,12 @@ Requires-Dist: pyyaml ~=5.1
|
|
|
37
37
|
Requires-Dist: requests ~=2.31
|
|
38
38
|
Requires-Dist: tabulate ~=0.8.6
|
|
39
39
|
Requires-Dist: v3io ~=0.6.4
|
|
40
|
-
Requires-Dist: pydantic
|
|
40
|
+
Requires-Dist: pydantic <1.10.15,>=1.10.8
|
|
41
41
|
Requires-Dist: mergedeep ~=1.3
|
|
42
42
|
Requires-Dist: v3io-frames ~=0.10.12
|
|
43
43
|
Requires-Dist: semver ~=3.0
|
|
44
44
|
Requires-Dist: dependency-injector ~=4.41
|
|
45
|
-
Requires-Dist: fsspec
|
|
45
|
+
Requires-Dist: fsspec <2024.4,>=2023.9.2
|
|
46
46
|
Requires-Dist: v3iofs ~=0.1.17
|
|
47
47
|
Requires-Dist: storey ~=1.7.6
|
|
48
48
|
Requires-Dist: inflection ~=0.5.0
|
|
@@ -50,7 +50,7 @@ Requires-Dist: python-dotenv ~=0.17.0
|
|
|
50
50
|
Requires-Dist: setuptools ~=69.1
|
|
51
51
|
Requires-Dist: deprecated ~=1.2
|
|
52
52
|
Requires-Dist: jinja2 >=3.1.3,~=3.1
|
|
53
|
-
Requires-Dist: orjson
|
|
53
|
+
Requires-Dist: orjson <4,>=3.9.15
|
|
54
54
|
Provides-Extra: alibaba-oss
|
|
55
55
|
Requires-Dist: ossfs ==2023.12.0 ; extra == 'alibaba-oss'
|
|
56
56
|
Requires-Dist: oss2 ==2.18.1 ; extra == 'alibaba-oss'
|
|
@@ -66,7 +66,7 @@ Requires-Dist: boto3 <1.29.0,>=1.28.0 ; extra == 'all'
|
|
|
66
66
|
Requires-Dist: dask ~=2023.9.0 ; extra == 'all'
|
|
67
67
|
Requires-Dist: databricks-sdk ~=0.13.0 ; extra == 'all'
|
|
68
68
|
Requires-Dist: distributed ~=2023.9.0 ; extra == 'all'
|
|
69
|
-
Requires-Dist: gcsfs
|
|
69
|
+
Requires-Dist: gcsfs <2024.4,>=2023.9.2 ; extra == 'all'
|
|
70
70
|
Requires-Dist: google-cloud-bigquery[bqstorage,pandas] ==3.14.1 ; extra == 'all'
|
|
71
71
|
Requires-Dist: google-cloud-storage ==2.14.0 ; extra == 'all'
|
|
72
72
|
Requires-Dist: google-cloud ==0.34 ; extra == 'all'
|
|
@@ -79,7 +79,7 @@ Requires-Dist: ossfs ==2023.12.0 ; extra == 'all'
|
|
|
79
79
|
Requires-Dist: plotly <5.12.0,~=5.4 ; extra == 'all'
|
|
80
80
|
Requires-Dist: pyopenssl >=23 ; extra == 'all'
|
|
81
81
|
Requires-Dist: redis ~=4.3 ; extra == 'all'
|
|
82
|
-
Requires-Dist: s3fs
|
|
82
|
+
Requires-Dist: s3fs <2024.4,>=2023.9.2 ; extra == 'all'
|
|
83
83
|
Requires-Dist: sqlalchemy ~=1.4 ; extra == 'all'
|
|
84
84
|
Provides-Extra: api
|
|
85
85
|
Requires-Dist: uvicorn ~=0.27.1 ; extra == 'api'
|
|
@@ -115,7 +115,7 @@ Requires-Dist: boto3 <1.29.0,>=1.28.0 ; extra == 'complete'
|
|
|
115
115
|
Requires-Dist: dask ~=2023.9.0 ; extra == 'complete'
|
|
116
116
|
Requires-Dist: databricks-sdk ~=0.13.0 ; extra == 'complete'
|
|
117
117
|
Requires-Dist: distributed ~=2023.9.0 ; extra == 'complete'
|
|
118
|
-
Requires-Dist: gcsfs
|
|
118
|
+
Requires-Dist: gcsfs <2024.4,>=2023.9.2 ; extra == 'complete'
|
|
119
119
|
Requires-Dist: google-cloud-bigquery[bqstorage,pandas] ==3.14.1 ; extra == 'complete'
|
|
120
120
|
Requires-Dist: graphviz ~=0.20.0 ; extra == 'complete'
|
|
121
121
|
Requires-Dist: kafka-python ~=2.0 ; extra == 'complete'
|
|
@@ -126,7 +126,7 @@ Requires-Dist: ossfs ==2023.12.0 ; extra == 'complete'
|
|
|
126
126
|
Requires-Dist: plotly <5.12.0,~=5.4 ; extra == 'complete'
|
|
127
127
|
Requires-Dist: pyopenssl >=23 ; extra == 'complete'
|
|
128
128
|
Requires-Dist: redis ~=4.3 ; extra == 'complete'
|
|
129
|
-
Requires-Dist: s3fs
|
|
129
|
+
Requires-Dist: s3fs <2024.4,>=2023.9.2 ; extra == 'complete'
|
|
130
130
|
Requires-Dist: sqlalchemy ~=1.4 ; extra == 'complete'
|
|
131
131
|
Provides-Extra: complete-api
|
|
132
132
|
Requires-Dist: adlfs ==2023.9.0 ; extra == 'complete-api'
|
|
@@ -143,7 +143,7 @@ Requires-Dist: dask ~=2023.9.0 ; extra == 'complete-api'
|
|
|
143
143
|
Requires-Dist: databricks-sdk ~=0.13.0 ; extra == 'complete-api'
|
|
144
144
|
Requires-Dist: distributed ~=2023.9.0 ; extra == 'complete-api'
|
|
145
145
|
Requires-Dist: fastapi ~=0.110.0 ; extra == 'complete-api'
|
|
146
|
-
Requires-Dist: gcsfs
|
|
146
|
+
Requires-Dist: gcsfs <2024.4,>=2023.9.2 ; extra == 'complete-api'
|
|
147
147
|
Requires-Dist: google-cloud-bigquery[bqstorage,pandas] ==3.14.1 ; extra == 'complete-api'
|
|
148
148
|
Requires-Dist: graphviz ~=0.20.0 ; extra == 'complete-api'
|
|
149
149
|
Requires-Dist: humanfriendly ~=10.0 ; extra == 'complete-api'
|
|
@@ -158,7 +158,7 @@ Requires-Dist: plotly <5.12.0,~=5.4 ; extra == 'complete-api'
|
|
|
158
158
|
Requires-Dist: pymysql ~=1.0 ; extra == 'complete-api'
|
|
159
159
|
Requires-Dist: pyopenssl >=23 ; extra == 'complete-api'
|
|
160
160
|
Requires-Dist: redis ~=4.3 ; extra == 'complete-api'
|
|
161
|
-
Requires-Dist: s3fs
|
|
161
|
+
Requires-Dist: s3fs <2024.4,>=2023.9.2 ; extra == 'complete-api'
|
|
162
162
|
Requires-Dist: sqlalchemy ~=1.4 ; extra == 'complete-api'
|
|
163
163
|
Requires-Dist: timelength ~=1.1 ; extra == 'complete-api'
|
|
164
164
|
Requires-Dist: uvicorn ~=0.27.1 ; extra == 'complete-api'
|
|
@@ -174,7 +174,7 @@ Requires-Dist: google-cloud ==0.34 ; extra == 'google-cloud'
|
|
|
174
174
|
Provides-Extra: google-cloud-bigquery
|
|
175
175
|
Requires-Dist: google-cloud-bigquery[bqstorage,pandas] ==3.14.1 ; extra == 'google-cloud-bigquery'
|
|
176
176
|
Provides-Extra: google-cloud-storage
|
|
177
|
-
Requires-Dist: gcsfs
|
|
177
|
+
Requires-Dist: gcsfs <2024.4,>=2023.9.2 ; extra == 'google-cloud-storage'
|
|
178
178
|
Provides-Extra: graphviz
|
|
179
179
|
Requires-Dist: graphviz ~=0.20.0 ; extra == 'graphviz'
|
|
180
180
|
Provides-Extra: kafka
|
|
@@ -189,7 +189,7 @@ Requires-Dist: redis ~=4.3 ; extra == 'redis'
|
|
|
189
189
|
Provides-Extra: s3
|
|
190
190
|
Requires-Dist: boto3 <1.29.0,>=1.28.0 ; extra == 's3'
|
|
191
191
|
Requires-Dist: aiobotocore <2.8,>=2.5.0 ; extra == 's3'
|
|
192
|
-
Requires-Dist: s3fs
|
|
192
|
+
Requires-Dist: s3fs <2024.4,>=2023.9.2 ; extra == 's3'
|
|
193
193
|
Provides-Extra: sqlalchemy
|
|
194
194
|
Requires-Dist: sqlalchemy ~=1.4 ; extra == 'sqlalchemy'
|
|
195
195
|
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
mlrun/__init__.py,sha256=o9dHUfVFADfsi6GnOPLr2OkfkHdPvOnA7rkoECen0-I,7248
|
|
2
|
-
mlrun/__main__.py,sha256=
|
|
3
|
-
mlrun/config.py,sha256=
|
|
2
|
+
mlrun/__main__.py,sha256=LKskOWulg04o0IFm33Pfmokuxo6P9wLSl3ZHkiS9eZc,49326
|
|
3
|
+
mlrun/config.py,sha256=7HGuYhgeCLETYxNxqjSgtSFfNMQ5PcAPaWmtBRX-uoo,63992
|
|
4
4
|
mlrun/errors.py,sha256=HmOAdfpL0bCDisZMUoJPOumneq71ko49Ph-XBL-A4xA,7080
|
|
5
5
|
mlrun/execution.py,sha256=meZ_qSdTmnpqW7DKv7LdBmuE1Ut34E1RbK2kO0MD_QM,40866
|
|
6
6
|
mlrun/features.py,sha256=nPDvy8tJuxwbRr843oWcnLBrqMJDPUanzn2Sb3BBi6w,15569
|
|
7
7
|
mlrun/k8s_utils.py,sha256=YyFZT2WNZrJkcZoqxrkduQgzQ1X-7195O0mmEqvaIug,7023
|
|
8
|
-
mlrun/kfpops.py,sha256=
|
|
8
|
+
mlrun/kfpops.py,sha256=bCHfvzz9E_fOSM8ASPqBcbG4pGRo8Sq5IMvGIYiEYRI,30446
|
|
9
9
|
mlrun/lists.py,sha256=ev-gLBPc_az03yQEHrKyDPq_Bjosa4D_XFiVbRIpmRY,8286
|
|
10
10
|
mlrun/model.py,sha256=BkPHhOQZJUQI4YB74FE8gEBOHwY1rpEhiEBcjzWIJtw,70641
|
|
11
11
|
mlrun/render.py,sha256=aMH3U2z7ELpW8MwYEGOrqLdEUwMX29shqy6V6-KbgiM,13009
|
|
12
|
-
mlrun/run.py,sha256=
|
|
12
|
+
mlrun/run.py,sha256=38xMRfYQU7qpEtWjzFOul-gYLzL6vrnolXDmQU4eB7s,42968
|
|
13
13
|
mlrun/secrets.py,sha256=Nl_7ZNSErd-AOH19vVx_PjrLg9bJM9L-BvEYoPolB1c,7776
|
|
14
14
|
mlrun/api/schemas/__init__.py,sha256=LhfO3myrnLVxC0MYCAc1_LTuqhRlYV3H7BwJkjOu3dQ,14211
|
|
15
15
|
mlrun/artifacts/__init__.py,sha256=LxEWcMYPawJYvNOl6H2_UvrxdLTNYfKeZcMEKFZnGgA,1187
|
|
@@ -27,8 +27,8 @@ mlrun/common/db/__init__.py,sha256=xY3wHC4TEJgez7qtnn1pQvHosi8-5UJOCtyGBS7FcGE,5
|
|
|
27
27
|
mlrun/common/db/sql_session.py,sha256=Znc8KE2oLy4lg3_vRki1sVlNx59TgDSOTCXfU561hBU,2659
|
|
28
28
|
mlrun/common/model_monitoring/__init__.py,sha256=x0EMEvxVjHsm858J1t6IEA9dtKTdFpJ9sKhss10ld8A,721
|
|
29
29
|
mlrun/common/model_monitoring/helpers.py,sha256=1CpxIDQPumFnpUB1eqcvCpLlyPFVeW2sL6prM-N5A1A,4405
|
|
30
|
-
mlrun/common/schemas/__init__.py,sha256=
|
|
31
|
-
mlrun/common/schemas/api_gateway.py,sha256=
|
|
30
|
+
mlrun/common/schemas/__init__.py,sha256=kMQDBUWtuJxBhCUakS8knGUyZa_izTAJpMOFJrivkjM,5005
|
|
31
|
+
mlrun/common/schemas/api_gateway.py,sha256=mw47rpTBAVIRV6TdMQ_A6rIgnEHOUweU7iT3VbINvBE,2519
|
|
32
32
|
mlrun/common/schemas/artifact.py,sha256=d6srME_eWn2MpGuqvPQZtePRFkjDfNJgQ6JDd51qVrI,2796
|
|
33
33
|
mlrun/common/schemas/auth.py,sha256=KOQfABIXTrcMh3Us5vlmnN4w3bJB7Rl3Xd5GTAFpr-g,5970
|
|
34
34
|
mlrun/common/schemas/background_task.py,sha256=2qZxib2qrF_nPZj0ncitCG-2jxz2hg1qj0hFc8eswWQ,1707
|
|
@@ -70,7 +70,7 @@ mlrun/datastore/alibaba_oss.py,sha256=OfQ9AbsJNBFF9DFgUdq38TvKw6qwnHmEcnH-nze6ZZ
|
|
|
70
70
|
mlrun/datastore/azure_blob.py,sha256=NpkEoIie7mH171tOwlrwpEwzRYGoo9SF3FAAegEENhU,9019
|
|
71
71
|
mlrun/datastore/base.py,sha256=QNiYoeyMRnZiyp7HRT68sfjWeSyu0zLLGfzTkTdkyl8,24421
|
|
72
72
|
mlrun/datastore/datastore.py,sha256=GGo8XPnKVWWgY0b-18D93V1g8DJgeBNafa6knnHEabw,9111
|
|
73
|
-
mlrun/datastore/datastore_profile.py,sha256=
|
|
73
|
+
mlrun/datastore/datastore_profile.py,sha256=yRQA7UmiaBvkROOakjlkgMPBzu9WCQMEBuSNYix93UU,16175
|
|
74
74
|
mlrun/datastore/dbfs_store.py,sha256=5IkxnFQXkW0fdx-ca5jjQnUdTsTfNdJzMvV31ZpDNrM,6634
|
|
75
75
|
mlrun/datastore/filestore.py,sha256=nS3Ie6jG41NDiW_as9tF8Nu5maaSVEKYKUr1IQtPhuA,3767
|
|
76
76
|
mlrun/datastore/google_cloud_storage.py,sha256=Du5qYYUCSkLt9acQDeQ-PgEjttsE7D2eAoLebO43kiw,6110
|
|
@@ -83,7 +83,7 @@ mlrun/datastore/sources.py,sha256=3BgqVgJzdiK7OWbbSJiGBnIY1OnP4W9lLEdk--RGruQ,40
|
|
|
83
83
|
mlrun/datastore/spark_udf.py,sha256=NnnB3DZxZb-rqpRy7b-NC7QWXuuqFn3XkBDc86tU4mQ,1498
|
|
84
84
|
mlrun/datastore/spark_utils.py,sha256=50rllp6xXpXY__1LbU7aTXUU5ca8dKAfoskPre3npZo,1611
|
|
85
85
|
mlrun/datastore/store_resources.py,sha256=dfMdFy2urilECtlwLJr5CSG12MA645b-NPYDnbr5s1A,6839
|
|
86
|
-
mlrun/datastore/targets.py,sha256=
|
|
86
|
+
mlrun/datastore/targets.py,sha256=wTnPDuYvWkfz6zqEbJfWYQ9Zzf2NlzSb-SW8P9qfg8k,70949
|
|
87
87
|
mlrun/datastore/utils.py,sha256=YKK9q1C0LmveQFnbh1Dkb8LwA4WbOYFTsNxziC8d0E4,5227
|
|
88
88
|
mlrun/datastore/v3io.py,sha256=oCAMpST6sKnjm5CaNsTrcwqk3bvUFzuKBvNFmUJpPfw,9252
|
|
89
89
|
mlrun/datastore/wasbfs/__init__.py,sha256=s5Ul-0kAhYqFjKDR2X0O2vDGDbLQQduElb32Ev56Te4,1343
|
|
@@ -180,12 +180,12 @@ mlrun/frameworks/sklearn/mlrun_interface.py,sha256=y4RsG_RI4KfPrPADU4Lsr8PF95_VR
|
|
|
180
180
|
mlrun/frameworks/sklearn/model_handler.py,sha256=h2fZGq8y_0okTq9ygsRtVwE3IduNYcUTf8OJyNA2xww,4695
|
|
181
181
|
mlrun/frameworks/sklearn/utils.py,sha256=Cg_pSxUMvKe8vBSLQor6JM8u9_ccKJg4Rk5EPDzTsVo,1209
|
|
182
182
|
mlrun/frameworks/tf_keras/__init__.py,sha256=ZHK6lXdu-DY3yRsP4RPAXlkSbQiDdHHIr3ed6cO0Y7E,10447
|
|
183
|
-
mlrun/frameworks/tf_keras/mlrun_interface.py,sha256=
|
|
183
|
+
mlrun/frameworks/tf_keras/mlrun_interface.py,sha256=lJsfctAxkdLSiTNzedTdF4KbiPW_nJdnUNUMhk7S2I8,16901
|
|
184
184
|
mlrun/frameworks/tf_keras/model_handler.py,sha256=2BFrYc7mKLKmEdgPAzBa8c_OnvSHqO9HXv7At3onrlo,28102
|
|
185
185
|
mlrun/frameworks/tf_keras/model_server.py,sha256=64x0nWFGdEONrye5F1socl8KXhMiia_neAoMzXcPF8A,9529
|
|
186
186
|
mlrun/frameworks/tf_keras/utils.py,sha256=_QWk1YmdRybbUB54vsQFE2_WMuAK0g7eR1ozVbMk0Go,4284
|
|
187
187
|
mlrun/frameworks/tf_keras/callbacks/__init__.py,sha256=ufH33gxHF4erP9RCiM8O2YaXLG6btLIU98gCS_MGFjI,844
|
|
188
|
-
mlrun/frameworks/tf_keras/callbacks/logging_callback.py,sha256=
|
|
188
|
+
mlrun/frameworks/tf_keras/callbacks/logging_callback.py,sha256=_ADceS3uylZQFV0ZwQhA3bnTpCyW3_ayJV_-_8Zaa6c,21993
|
|
189
189
|
mlrun/frameworks/tf_keras/callbacks/mlrun_logging_callback.py,sha256=RuR4tuPNCAeUC_6z6MEdMc_OzejFs3lEMSxvO5k5mUo,8701
|
|
190
190
|
mlrun/frameworks/tf_keras/callbacks/tensorboard_logging_callback.py,sha256=bdhMM6ZaCQObhzGry8Sg-uVJ89P7U2nr6RnIQoNDy_Q,28419
|
|
191
191
|
mlrun/frameworks/xgboost/__init__.py,sha256=opkcSxdS4y-FF6EO2KHHmtEqpACk06RU2y6ilnFK-Zc,10276
|
|
@@ -205,7 +205,7 @@ mlrun/model_monitoring/controller.py,sha256=DtrEOHGOlBm2PYPESjo5ea4ubHgUD7eEy0A1
|
|
|
205
205
|
mlrun/model_monitoring/controller_handler.py,sha256=J9Y9ppLsQaxyYRl21165Rr7QuI9EM-mk-5veAqs4Bi0,1336
|
|
206
206
|
mlrun/model_monitoring/evidently_application.py,sha256=o9PsDsjyRfcbuC1X1gb2ww5nzWCsR_KheabtpxKZ5yY,4824
|
|
207
207
|
mlrun/model_monitoring/features_drift_table.py,sha256=c6GpKtpOJbuT1u5uMWDL_S-6N4YPOmlktWMqPme3KFY,25308
|
|
208
|
-
mlrun/model_monitoring/helpers.py,sha256=
|
|
208
|
+
mlrun/model_monitoring/helpers.py,sha256=gEgj5rCU1q8NRtmpFBpzfpOaeDmdf1Aa0WPiHKtnjfo,9095
|
|
209
209
|
mlrun/model_monitoring/model_endpoint.py,sha256=BBtxdY5ciormI_al4zshmIp0GN7hGhOCn-hLgpCXek0,3938
|
|
210
210
|
mlrun/model_monitoring/prometheus.py,sha256=cUR4y73GutJB_pA_VCBDl9YtK4PcIJp2wj2rnLVmYi4,7578
|
|
211
211
|
mlrun/model_monitoring/stream_processing.py,sha256=A2dKK2XJAkGnVWK6MawsSRN4nR_ZgFCKILyHgj8LJhw,49317
|
|
@@ -249,8 +249,8 @@ mlrun/platforms/iguazio.py,sha256=M89zXuCd1bbcIANSy4ec-9evXIs7nPRVo3D0YhKvEtE,19
|
|
|
249
249
|
mlrun/platforms/other.py,sha256=T1BibmEBNggM62YJ6oejRmcVv_1besfH5DDHhCaDkRg,11828
|
|
250
250
|
mlrun/projects/__init__.py,sha256=Lv5rfxyXJrw6WGOWJKhBz66M6t3_zsNMCfUD6waPwx4,1153
|
|
251
251
|
mlrun/projects/operations.py,sha256=SiDHd7cqh9u23AVpETbkJE6WmOnB434zBrwM-StZLQY,18538
|
|
252
|
-
mlrun/projects/pipelines.py,sha256=
|
|
253
|
-
mlrun/projects/project.py,sha256=
|
|
252
|
+
mlrun/projects/pipelines.py,sha256=7XsVg13Y2bPK_6SCLC5e22PMnU2DUjscJX2LctSKXN8,40579
|
|
253
|
+
mlrun/projects/project.py,sha256=J9koTyjGvP82xlgXHYJbZnLjtTE9uJElw-8LMQwfujs,166182
|
|
254
254
|
mlrun/runtimes/__init__.py,sha256=tTDfia4cr0gUy2rEtLTj4Nz6M_JJd6utzkFi-ogDvXg,8289
|
|
255
255
|
mlrun/runtimes/base.py,sha256=prqlbGq5fbgQ8atBMjsXhdRY5UqS1egpHtOPaAjhVyI,36683
|
|
256
256
|
mlrun/runtimes/constants.py,sha256=oP3OxdYCpbvadJ3zP1JGkqGBKaBheNkCnJISWha9x58,9513
|
|
@@ -272,7 +272,7 @@ mlrun/runtimes/mpijob/abstract.py,sha256=AqIb-nEKZaRO7x1GxJea6cXg_Tn3Dr4WiWZUz3y
|
|
|
272
272
|
mlrun/runtimes/mpijob/v1.py,sha256=_RUlFo_3NcFf7x-QpUNVm8f7qNbRDIdUmPf_ijrv54U,3206
|
|
273
273
|
mlrun/runtimes/mpijob/v1alpha1.py,sha256=w_971wwL03hW_ksgHJXdjTdjhxCs9KJ0zNqHSQ9whIM,1034
|
|
274
274
|
mlrun/runtimes/nuclio/__init__.py,sha256=gx1kizzKv8pGT5TNloN1js1hdbxqDw3rM90sLVYVffY,794
|
|
275
|
-
mlrun/runtimes/nuclio/api_gateway.py,sha256=
|
|
275
|
+
mlrun/runtimes/nuclio/api_gateway.py,sha256=1fHCHqR5ABlVKJ0al12iIYDSMy2bOTIxnLJPvb4KE9M,15894
|
|
276
276
|
mlrun/runtimes/nuclio/function.py,sha256=7Ax0u760z-ex0yRlztJRrUZcKGXeJNvsXcUAJqjc26w,49044
|
|
277
277
|
mlrun/runtimes/nuclio/nuclio.py,sha256=sLK8KdGO1LbftlL3HqPZlFOFTAAuxJACZCVl1c0Ha6E,2942
|
|
278
278
|
mlrun/runtimes/nuclio/serving.py,sha256=e0VdJ6zbkurEl9ZlYqGzUaWRUM_US2bE7fpV6RZ83as,29745
|
|
@@ -284,13 +284,13 @@ mlrun/runtimes/sparkjob/spark3job.py,sha256=yU-PxEI2pDJK5LHXTTcmrdjmO1Jwrj5Zyf8N
|
|
|
284
284
|
mlrun/serving/__init__.py,sha256=_6HRAOuS2Ehjo3vwx5h1aI_-JppxEAsl4VfEERAbGFE,1078
|
|
285
285
|
mlrun/serving/merger.py,sha256=PXLn3A21FiLteJHaDSLm5xKNT-80eTTjfHUJnBX1gKY,6116
|
|
286
286
|
mlrun/serving/remote.py,sha256=jLFjMfgPx_PwJkpRHYbKrB9EQZcD4gZ-iczzHl1o0zs,18010
|
|
287
|
-
mlrun/serving/routers.py,sha256=
|
|
287
|
+
mlrun/serving/routers.py,sha256=gI4NU41ft16aD8jagI9sUzfHWMknHq8FSt5zxEhAvmQ,55048
|
|
288
288
|
mlrun/serving/server.py,sha256=gs3FATCkCv6Ngke70vNaCWGhONH6IMI4eiuvRwLLMdY,21055
|
|
289
289
|
mlrun/serving/serving_wrapper.py,sha256=R670-S6PX_d5ER6jiHtRvacuPyFzQH0mEf2K0sBIIOM,836
|
|
290
290
|
mlrun/serving/states.py,sha256=7_nvFobvT-PIJoegkfXYrMlDD0CC4T66y8TvUytkEGo,56265
|
|
291
291
|
mlrun/serving/utils.py,sha256=WO0n_YTO0YVPTjp_90zxRl4vey4flDgw5vaOHK5p_qY,3871
|
|
292
292
|
mlrun/serving/v1_serving.py,sha256=by4myxlnwyZ0ijQ5fURilGCK1sUpdQL2Il1VR3Xqpxg,11805
|
|
293
|
-
mlrun/serving/v2_serving.py,sha256=
|
|
293
|
+
mlrun/serving/v2_serving.py,sha256=_iFo8uY1n7xZp_YFVgsL6yn9HofY_49A1Bc3cmbL30s,23631
|
|
294
294
|
mlrun/track/__init__.py,sha256=LWRUHJt8JyFW17FyNPOVyWd-NXTf1iptzsK9KFj5fuY,765
|
|
295
295
|
mlrun/track/tracker.py,sha256=y-UdhC2nzM6r-yHCwvrfiHRr93xsr4JRsZTxDrTTRJo,3541
|
|
296
296
|
mlrun/track/tracker_manager.py,sha256=IYBl99I62IC6VCCmG1yt6JoHNOQXa53C4DURJ2sWgio,5726
|
|
@@ -303,10 +303,10 @@ mlrun/utils/clones.py,sha256=mJpx4nyFiY6jlBCvFABsNuyi_mr1mvfPWn81vlafpOU,7361
|
|
|
303
303
|
mlrun/utils/condition_evaluator.py,sha256=-nGfRmZzivn01rHTroiGY4rqEv8T1irMyhzxEei-sKc,1897
|
|
304
304
|
mlrun/utils/db.py,sha256=KEa-vzicUhzIwo1wBXax2ZuXtYgf5to7wnsY3CYCiOQ,1713
|
|
305
305
|
mlrun/utils/helpers.py,sha256=k69jVSFghCWS_UyScr76reHl5AxNq1TKBOK7dfnYY7Q,52095
|
|
306
|
-
mlrun/utils/http.py,sha256=
|
|
306
|
+
mlrun/utils/http.py,sha256=l_JCPrCq8bfYUcUcAFWUPvb9Xu-93bLGIhV-H-XCU9s,8707
|
|
307
307
|
mlrun/utils/logger.py,sha256=6-XMv1ucg9NqTstLpiji9qb06XHpx2LvNA8JxU1J5Tk,8133
|
|
308
308
|
mlrun/utils/regex.py,sha256=Nd7xnDHU9PEOsse6rFwLNVgU4AaYCyuwMmQ9qgx2-Vw,4581
|
|
309
|
-
mlrun/utils/retryer.py,sha256=
|
|
309
|
+
mlrun/utils/retryer.py,sha256=TFdnh5bEjeNW-n0upzXi1Ni4jcjNKdl7jj8y0VtncJ0,7560
|
|
310
310
|
mlrun/utils/singleton.py,sha256=p1Y-X0mPSs_At092GS-pZCA8CTR62HOqPU07_ZH6-To,869
|
|
311
311
|
mlrun/utils/v3io_clients.py,sha256=7eReciHBPLuLW6b5DIc8emnmrjh4D8hXPuqZDooR6HQ,1284
|
|
312
312
|
mlrun/utils/vault.py,sha256=xUiKL17dCXjwQJ33YRzQj0oadUXATlFWPzKKYAESoQk,10447
|
|
@@ -320,11 +320,11 @@ mlrun/utils/notifications/notification/ipython.py,sha256=d47s-fW4TgqOJZOSdmzBQvd
|
|
|
320
320
|
mlrun/utils/notifications/notification/slack.py,sha256=5JysqIpUYUZKXPSeeZtbl7qb2L9dj7p2NvnEBcEsZkA,3898
|
|
321
321
|
mlrun/utils/notifications/notification/webhook.py,sha256=QHezCuN5uXkLcroAGxGrhGHaxAdUvkDLIsp27_Yrfd4,2390
|
|
322
322
|
mlrun/utils/version/__init__.py,sha256=7kkrB7hEZ3cLXoWj1kPoDwo4MaswsI2JVOBpbKgPAgc,614
|
|
323
|
-
mlrun/utils/version/version.json,sha256=
|
|
323
|
+
mlrun/utils/version/version.json,sha256=xDSX9YaznNhRyrGomc1_tfWTpIgN3RYMWgZyvWebdI8,88
|
|
324
324
|
mlrun/utils/version/version.py,sha256=eEW0tqIAkU9Xifxv8Z9_qsYnNhn3YH7NRAfM-pPLt1g,1878
|
|
325
|
-
mlrun-1.7.
|
|
326
|
-
mlrun-1.7.
|
|
327
|
-
mlrun-1.7.
|
|
328
|
-
mlrun-1.7.
|
|
329
|
-
mlrun-1.7.
|
|
330
|
-
mlrun-1.7.
|
|
325
|
+
mlrun-1.7.0rc8.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
326
|
+
mlrun-1.7.0rc8.dist-info/METADATA,sha256=5byWUNhTGutxXLa0EZduzJTgQIWsetUN15lEyF57N4E,18799
|
|
327
|
+
mlrun-1.7.0rc8.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
|
328
|
+
mlrun-1.7.0rc8.dist-info/entry_points.txt,sha256=1Owd16eAclD5pfRCoJpYC2ZJSyGNTtUr0nCELMioMmU,46
|
|
329
|
+
mlrun-1.7.0rc8.dist-info/top_level.txt,sha256=NObLzw3maSF9wVrgSeYBv-fgnHkAJ1kEkh12DLdd5KM,6
|
|
330
|
+
mlrun-1.7.0rc8.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|