mlrun 1.10.0rc25__py3-none-any.whl → 1.10.0rc27__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/artifacts/llm_prompt.py +8 -1
- mlrun/common/model_monitoring/helpers.py +86 -0
- mlrun/common/schemas/hub.py +11 -18
- mlrun/config.py +2 -3
- mlrun/datastore/__init__.py +2 -2
- mlrun/datastore/datastore_profile.py +27 -3
- mlrun/datastore/model_provider/huggingface_provider.py +5 -1
- mlrun/datastore/model_provider/model_provider.py +1 -1
- mlrun/datastore/s3.py +24 -2
- mlrun/datastore/storeytargets.py +2 -3
- mlrun/db/base.py +14 -0
- mlrun/db/httpdb.py +11 -2
- mlrun/db/nopdb.py +13 -0
- mlrun/k8s_utils.py +0 -14
- mlrun/model_monitoring/applications/base.py +20 -3
- mlrun/model_monitoring/controller.py +5 -3
- mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connector.py +3 -1
- mlrun/model_monitoring/db/tsdb/v3io/stream_graph_steps.py +17 -4
- mlrun/model_monitoring/db/tsdb/v3io/v3io_connector.py +3 -0
- mlrun/model_monitoring/helpers.py +5 -5
- mlrun/projects/pipelines.py +2 -2
- mlrun/projects/project.py +5 -5
- mlrun/run.py +12 -1
- mlrun/runtimes/base.py +0 -3
- mlrun/runtimes/mounts.py +15 -2
- mlrun/runtimes/nuclio/function.py +35 -26
- mlrun/runtimes/pod.py +153 -11
- mlrun/serving/routers.py +23 -41
- mlrun/serving/server.py +1 -0
- mlrun/serving/states.py +3 -3
- mlrun/serving/system_steps.py +52 -29
- mlrun/serving/v2_serving.py +9 -10
- mlrun/utils/helpers.py +10 -13
- mlrun/utils/notifications/notification/base.py +18 -0
- mlrun/utils/notifications/notification/git.py +2 -4
- mlrun/utils/notifications/notification/slack.py +2 -4
- mlrun/utils/notifications/notification/webhook.py +2 -5
- mlrun/utils/version/version.json +2 -2
- {mlrun-1.10.0rc25.dist-info → mlrun-1.10.0rc27.dist-info}/METADATA +22 -26
- {mlrun-1.10.0rc25.dist-info → mlrun-1.10.0rc27.dist-info}/RECORD +44 -44
- {mlrun-1.10.0rc25.dist-info → mlrun-1.10.0rc27.dist-info}/WHEEL +0 -0
- {mlrun-1.10.0rc25.dist-info → mlrun-1.10.0rc27.dist-info}/entry_points.txt +0 -0
- {mlrun-1.10.0rc25.dist-info → mlrun-1.10.0rc27.dist-info}/licenses/LICENSE +0 -0
- {mlrun-1.10.0rc25.dist-info → mlrun-1.10.0rc27.dist-info}/top_level.txt +0 -0
mlrun/serving/system_steps.py
CHANGED
|
@@ -11,7 +11,6 @@
|
|
|
11
11
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
|
-
|
|
15
14
|
import random
|
|
16
15
|
from copy import copy
|
|
17
16
|
from datetime import timedelta
|
|
@@ -25,10 +24,27 @@ import mlrun.artifacts
|
|
|
25
24
|
import mlrun.common.schemas.model_monitoring as mm_schemas
|
|
26
25
|
import mlrun.feature_store
|
|
27
26
|
import mlrun.serving
|
|
27
|
+
from mlrun.common.model_monitoring.helpers import (
|
|
28
|
+
get_model_endpoints_creation_task_status,
|
|
29
|
+
)
|
|
28
30
|
from mlrun.common.schemas import MonitoringData
|
|
29
31
|
from mlrun.utils import get_data_from_path, logger
|
|
30
32
|
|
|
31
33
|
|
|
34
|
+
class MatchingEndpointsState(mlrun.common.types.StrEnum):
|
|
35
|
+
all_matched = "all_matched"
|
|
36
|
+
not_all_matched = "not_all_matched"
|
|
37
|
+
no_check_needed = "no_check_needed"
|
|
38
|
+
not_yet_checked = "not_yet_matched"
|
|
39
|
+
|
|
40
|
+
@staticmethod
|
|
41
|
+
def success_states() -> list[str]:
|
|
42
|
+
return [
|
|
43
|
+
MatchingEndpointsState.all_matched,
|
|
44
|
+
MatchingEndpointsState.no_check_needed,
|
|
45
|
+
]
|
|
46
|
+
|
|
47
|
+
|
|
32
48
|
class MonitoringPreProcessor(storey.MapClass):
|
|
33
49
|
"""preprocess step, reconstructs the serving output event body to StreamProcessingEvent schema"""
|
|
34
50
|
|
|
@@ -317,6 +333,9 @@ class BackgroundTaskStatus(storey.MapClass):
|
|
|
317
333
|
|
|
318
334
|
def __init__(self, **kwargs):
|
|
319
335
|
super().__init__(**kwargs)
|
|
336
|
+
self.matching_endpoints = MatchingEndpointsState.not_yet_checked
|
|
337
|
+
self.graph_model_endpoint_uids: set = set()
|
|
338
|
+
self.listed_model_endpoint_uids: set = set()
|
|
320
339
|
self.server: mlrun.serving.GraphServer = (
|
|
321
340
|
getattr(self.context, "server", None) if self.context else None
|
|
322
341
|
)
|
|
@@ -337,43 +356,47 @@ class BackgroundTaskStatus(storey.MapClass):
|
|
|
337
356
|
)
|
|
338
357
|
)
|
|
339
358
|
):
|
|
340
|
-
|
|
341
|
-
self.
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
self.
|
|
345
|
-
|
|
359
|
+
(
|
|
360
|
+
self._background_task_state,
|
|
361
|
+
self._background_task_check_timestamp,
|
|
362
|
+
self.listed_model_endpoint_uids,
|
|
363
|
+
) = get_model_endpoints_creation_task_status(self.server)
|
|
364
|
+
if (
|
|
365
|
+
self.listed_model_endpoint_uids
|
|
366
|
+
and self.matching_endpoints == MatchingEndpointsState.not_yet_checked
|
|
367
|
+
):
|
|
368
|
+
if not self.graph_model_endpoint_uids:
|
|
369
|
+
self.graph_model_endpoint_uids = collect_model_endpoint_uids(
|
|
370
|
+
self.server
|
|
371
|
+
)
|
|
372
|
+
|
|
373
|
+
if self.graph_model_endpoint_uids.issubset(self.listed_model_endpoint_uids):
|
|
374
|
+
self.matching_endpoints = MatchingEndpointsState.all_matched
|
|
375
|
+
elif self.listed_model_endpoint_uids is None:
|
|
376
|
+
self.matching_endpoints = MatchingEndpointsState.no_check_needed
|
|
346
377
|
|
|
347
378
|
if (
|
|
348
379
|
self._background_task_state
|
|
349
380
|
== mlrun.common.schemas.BackgroundTaskState.succeeded
|
|
381
|
+
and self.matching_endpoints in MatchingEndpointsState.success_states()
|
|
350
382
|
):
|
|
351
383
|
return event
|
|
352
384
|
else:
|
|
353
385
|
return None
|
|
354
386
|
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
)
|
|
369
|
-
else: # in progress
|
|
370
|
-
logger.info(
|
|
371
|
-
f"Model endpoint creation task is still in progress with the current state: "
|
|
372
|
-
f"{background_task_state}. Events will not be monitored for the next "
|
|
373
|
-
f"{mlrun.mlconf.model_endpoint_monitoring.model_endpoint_creation_check_period} seconds",
|
|
374
|
-
name=self.name,
|
|
375
|
-
background_task_check_timestamp=self._background_task_check_timestamp.isoformat(),
|
|
376
|
-
)
|
|
387
|
+
|
|
388
|
+
def collect_model_endpoint_uids(server: mlrun.serving.GraphServer) -> set[str]:
|
|
389
|
+
"""Collects all model endpoint UIDs from the server's graph steps."""
|
|
390
|
+
model_endpoint_uids = set()
|
|
391
|
+
for step in server.graph.steps.values():
|
|
392
|
+
if hasattr(step, "monitoring_data"):
|
|
393
|
+
for model in step.monitoring_data.keys():
|
|
394
|
+
uid = step.monitoring_data[model].get(
|
|
395
|
+
mlrun.common.schemas.MonitoringData.MODEL_ENDPOINT_UID
|
|
396
|
+
)
|
|
397
|
+
if uid:
|
|
398
|
+
model_endpoint_uids.add(uid)
|
|
399
|
+
return model_endpoint_uids
|
|
377
400
|
|
|
378
401
|
|
|
379
402
|
class SamplingStep(storey.MapClass):
|
mlrun/serving/v2_serving.py
CHANGED
|
@@ -24,6 +24,9 @@ import mlrun.common.schemas.model_monitoring
|
|
|
24
24
|
import mlrun.model_monitoring
|
|
25
25
|
from mlrun.utils import logger, now_date
|
|
26
26
|
|
|
27
|
+
from ..common.model_monitoring.helpers import (
|
|
28
|
+
get_model_endpoints_creation_task_status,
|
|
29
|
+
)
|
|
27
30
|
from .utils import StepToDict, _extract_input_data, _update_result_body
|
|
28
31
|
|
|
29
32
|
|
|
@@ -474,22 +477,18 @@ class V2ModelServer(StepToDict):
|
|
|
474
477
|
) or getattr(self.context, "server", None)
|
|
475
478
|
if not self.context.is_mock or self.context.monitoring_mock:
|
|
476
479
|
if server.model_endpoint_creation_task_name:
|
|
477
|
-
|
|
478
|
-
server
|
|
479
|
-
)
|
|
480
|
-
logger.debug(
|
|
481
|
-
"Checking model endpoint creation task status",
|
|
482
|
-
task_name=server.model_endpoint_creation_task_name,
|
|
480
|
+
background_task_state, _, _ = get_model_endpoints_creation_task_status(
|
|
481
|
+
server
|
|
483
482
|
)
|
|
484
483
|
if (
|
|
485
|
-
|
|
484
|
+
background_task_state
|
|
486
485
|
in mlrun.common.schemas.BackgroundTaskState.terminal_states()
|
|
487
486
|
):
|
|
488
487
|
logger.debug(
|
|
489
|
-
f"Model endpoint creation task completed with state {
|
|
488
|
+
f"Model endpoint creation task completed with state {background_task_state}"
|
|
490
489
|
)
|
|
491
490
|
if (
|
|
492
|
-
|
|
491
|
+
background_task_state
|
|
493
492
|
== mlrun.common.schemas.BackgroundTaskState.succeeded
|
|
494
493
|
):
|
|
495
494
|
self._model_logger = (
|
|
@@ -504,7 +503,7 @@ class V2ModelServer(StepToDict):
|
|
|
504
503
|
else: # in progress
|
|
505
504
|
logger.debug(
|
|
506
505
|
f"Model endpoint creation task is still in progress with the current state: "
|
|
507
|
-
f"{
|
|
506
|
+
f"{background_task_state}.",
|
|
508
507
|
name=self.name,
|
|
509
508
|
)
|
|
510
509
|
else:
|
mlrun/utils/helpers.py
CHANGED
|
@@ -15,7 +15,6 @@
|
|
|
15
15
|
import asyncio
|
|
16
16
|
import base64
|
|
17
17
|
import enum
|
|
18
|
-
import functools
|
|
19
18
|
import gzip
|
|
20
19
|
import hashlib
|
|
21
20
|
import inspect
|
|
@@ -804,7 +803,7 @@ def remove_tag_from_artifact_uri(uri: str) -> Optional[str]:
|
|
|
804
803
|
|
|
805
804
|
def extend_hub_uri_if_needed(uri) -> tuple[str, bool]:
|
|
806
805
|
"""
|
|
807
|
-
Retrieve the full uri of the
|
|
806
|
+
Retrieve the full uri of the function's yaml in the hub.
|
|
808
807
|
|
|
809
808
|
:param uri: structure: "hub://[<source>/]<item-name>[:<tag>]"
|
|
810
809
|
|
|
@@ -845,7 +844,10 @@ def extend_hub_uri_if_needed(uri) -> tuple[str, bool]:
|
|
|
845
844
|
# hub function directory name are with underscores instead of hyphens
|
|
846
845
|
name = name.replace("-", "_")
|
|
847
846
|
function_suffix = f"{name}/{tag}/src/function.yaml"
|
|
848
|
-
|
|
847
|
+
function_type = mlrun.common.schemas.hub.HubSourceType.functions
|
|
848
|
+
return indexed_source.source.get_full_uri(
|
|
849
|
+
function_suffix, function_type
|
|
850
|
+
), is_hub_uri
|
|
849
851
|
|
|
850
852
|
|
|
851
853
|
def gen_md_table(header, rows=None):
|
|
@@ -912,12 +914,10 @@ def enrich_image_url(
|
|
|
912
914
|
)
|
|
913
915
|
mlrun_version = config.images_tag or client_version or server_version
|
|
914
916
|
tag = mlrun_version or ""
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
mlrun_version=mlrun_version, python_version=client_python_version
|
|
920
|
-
)
|
|
917
|
+
tag += resolve_image_tag_suffix(
|
|
918
|
+
mlrun_version=mlrun_version,
|
|
919
|
+
python_version=client_python_version,
|
|
920
|
+
)
|
|
921
921
|
|
|
922
922
|
# it's an mlrun image if the repository is mlrun
|
|
923
923
|
is_mlrun_image = image_url.startswith("mlrun/") or "/mlrun/" in image_url
|
|
@@ -1859,10 +1859,7 @@ async def run_in_threadpool(func, *args, **kwargs):
|
|
|
1859
1859
|
Run a sync-function in the loop default thread pool executor pool and await its result.
|
|
1860
1860
|
Note that this function is not suitable for CPU-bound tasks, as it will block the event loop.
|
|
1861
1861
|
"""
|
|
1862
|
-
|
|
1863
|
-
if kwargs:
|
|
1864
|
-
func = functools.partial(func, **kwargs)
|
|
1865
|
-
return await loop.run_in_executor(None, func, *args)
|
|
1862
|
+
return await asyncio.to_thread(func, *args, **kwargs)
|
|
1866
1863
|
|
|
1867
1864
|
|
|
1868
1865
|
def is_explicit_ack_supported(context):
|
|
@@ -15,11 +15,29 @@
|
|
|
15
15
|
import asyncio
|
|
16
16
|
import typing
|
|
17
17
|
from copy import deepcopy
|
|
18
|
+
from typing import Optional
|
|
19
|
+
|
|
20
|
+
import aiohttp
|
|
18
21
|
|
|
19
22
|
import mlrun.common.schemas
|
|
20
23
|
import mlrun.lists
|
|
21
24
|
|
|
22
25
|
|
|
26
|
+
class TimedHTTPClient:
|
|
27
|
+
def __init__(self, timeout: Optional[float] = 30.0):
|
|
28
|
+
"""
|
|
29
|
+
HTTP client wrapper with built-in timeout.
|
|
30
|
+
|
|
31
|
+
Args:
|
|
32
|
+
timeout: Request timeout in seconds (default: 30.0)
|
|
33
|
+
"""
|
|
34
|
+
self.timeout = aiohttp.ClientTimeout(total=timeout)
|
|
35
|
+
|
|
36
|
+
def session(self, **kwargs) -> aiohttp.ClientSession:
|
|
37
|
+
"""Create a new ClientSession with the configured timeout and additional parameters."""
|
|
38
|
+
return aiohttp.ClientSession(timeout=self.timeout, **kwargs)
|
|
39
|
+
|
|
40
|
+
|
|
23
41
|
class NotificationBase:
|
|
24
42
|
def __init__(
|
|
25
43
|
self,
|
|
@@ -16,13 +16,11 @@ import json
|
|
|
16
16
|
import os
|
|
17
17
|
import typing
|
|
18
18
|
|
|
19
|
-
import aiohttp
|
|
20
|
-
|
|
21
19
|
import mlrun.common.schemas
|
|
22
20
|
import mlrun.errors
|
|
23
21
|
import mlrun.lists
|
|
24
22
|
|
|
25
|
-
from .base import NotificationBase
|
|
23
|
+
from .base import NotificationBase, TimedHTTPClient
|
|
26
24
|
|
|
27
25
|
|
|
28
26
|
class GitNotification(NotificationBase):
|
|
@@ -148,7 +146,7 @@ class GitNotification(NotificationBase):
|
|
|
148
146
|
}
|
|
149
147
|
url = f"https://{server}/repos/{repo}/issues/{issue}/comments"
|
|
150
148
|
|
|
151
|
-
async with
|
|
149
|
+
async with TimedHTTPClient().session() as session:
|
|
152
150
|
resp = await session.post(url, headers=headers, json={"body": message})
|
|
153
151
|
if not resp.ok:
|
|
154
152
|
resp_text = await resp.text()
|
|
@@ -14,14 +14,12 @@
|
|
|
14
14
|
|
|
15
15
|
import typing
|
|
16
16
|
|
|
17
|
-
import aiohttp
|
|
18
|
-
|
|
19
17
|
import mlrun.common.runtimes.constants as runtimes_constants
|
|
20
18
|
import mlrun.common.schemas
|
|
21
19
|
import mlrun.lists
|
|
22
20
|
import mlrun.utils.helpers
|
|
23
21
|
|
|
24
|
-
from .base import NotificationBase
|
|
22
|
+
from .base import NotificationBase, TimedHTTPClient
|
|
25
23
|
|
|
26
24
|
|
|
27
25
|
class SlackNotification(NotificationBase):
|
|
@@ -67,7 +65,7 @@ class SlackNotification(NotificationBase):
|
|
|
67
65
|
|
|
68
66
|
data = self._generate_slack_data(message, severity, runs, alert, event_data)
|
|
69
67
|
|
|
70
|
-
async with
|
|
68
|
+
async with TimedHTTPClient().session() as session:
|
|
71
69
|
async with session.post(webhook, json=data) as response:
|
|
72
70
|
response.raise_for_status()
|
|
73
71
|
|
|
@@ -15,14 +15,13 @@
|
|
|
15
15
|
import re
|
|
16
16
|
import typing
|
|
17
17
|
|
|
18
|
-
import aiohttp
|
|
19
18
|
import orjson
|
|
20
19
|
|
|
21
20
|
import mlrun.common.schemas
|
|
22
21
|
import mlrun.lists
|
|
23
22
|
import mlrun.utils.helpers
|
|
24
23
|
|
|
25
|
-
from .base import NotificationBase
|
|
24
|
+
from .base import NotificationBase, TimedHTTPClient
|
|
26
25
|
|
|
27
26
|
|
|
28
27
|
class WebhookNotification(NotificationBase):
|
|
@@ -87,9 +86,7 @@ class WebhookNotification(NotificationBase):
|
|
|
87
86
|
# we automatically handle it as `ssl=None` for their convenience.
|
|
88
87
|
verify_ssl = verify_ssl and None if url.startswith("https") else None
|
|
89
88
|
|
|
90
|
-
async with
|
|
91
|
-
json_serialize=self._encoder,
|
|
92
|
-
) as session:
|
|
89
|
+
async with TimedHTTPClient().session(json_serialize=self._encoder) as session:
|
|
93
90
|
response = await getattr(session, method)(
|
|
94
91
|
url,
|
|
95
92
|
headers=headers,
|
mlrun/utils/version/version.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mlrun
|
|
3
|
-
Version: 1.10.
|
|
3
|
+
Version: 1.10.0rc27
|
|
4
4
|
Summary: Tracking and config of machine learning runs
|
|
5
5
|
Home-page: https://github.com/mlrun/mlrun
|
|
6
6
|
Author: Yaron Haviv
|
|
@@ -21,8 +21,8 @@ Classifier: Topic :: Software Development :: Libraries
|
|
|
21
21
|
Requires-Python: >=3.9, <3.12
|
|
22
22
|
Description-Content-Type: text/markdown
|
|
23
23
|
License-File: LICENSE
|
|
24
|
-
Requires-Dist: urllib3>=1.26.20
|
|
25
|
-
Requires-Dist:
|
|
24
|
+
Requires-Dist: urllib3>=1.26.20
|
|
25
|
+
Requires-Dist: v3io-frames>=0.10.15
|
|
26
26
|
Requires-Dist: GitPython>=3.1.41,~=3.1
|
|
27
27
|
Requires-Dist: aiohttp~=3.11
|
|
28
28
|
Requires-Dist: aiohttp-retry~=2.9
|
|
@@ -39,13 +39,11 @@ Requires-Dist: tabulate~=0.8.6
|
|
|
39
39
|
Requires-Dist: v3io~=0.7.0
|
|
40
40
|
Requires-Dist: pydantic>=1.10.15
|
|
41
41
|
Requires-Dist: mergedeep~=1.3
|
|
42
|
-
Requires-Dist: v3io-frames~=0.10.15; python_version < "3.11"
|
|
43
|
-
Requires-Dist: v3io-frames>=0.13.0; python_version >= "3.11"
|
|
44
42
|
Requires-Dist: semver~=3.0
|
|
45
43
|
Requires-Dist: dependency-injector~=4.41
|
|
46
44
|
Requires-Dist: fsspec<=2025.7.0,>=2025.5.1
|
|
47
45
|
Requires-Dist: v3iofs~=0.1.17
|
|
48
|
-
Requires-Dist: storey~=1.10.
|
|
46
|
+
Requires-Dist: storey~=1.10.13
|
|
49
47
|
Requires-Dist: inflection~=0.5.0
|
|
50
48
|
Requires-Dist: python-dotenv~=1.0
|
|
51
49
|
Requires-Dist: setuptools>=75.2
|
|
@@ -56,7 +54,7 @@ Requires-Dist: mlrun-pipelines-kfp-common~=0.5.8
|
|
|
56
54
|
Requires-Dist: mlrun-pipelines-kfp-v1-8~=0.5.7
|
|
57
55
|
Requires-Dist: docstring_parser~=0.16
|
|
58
56
|
Requires-Dist: aiosmtplib~=3.0
|
|
59
|
-
Requires-Dist: deepdiff
|
|
57
|
+
Requires-Dist: deepdiff<9.0.0,>=8.6.1
|
|
60
58
|
Provides-Extra: s3
|
|
61
59
|
Requires-Dist: boto3<1.36,>=1.28.0; extra == "s3"
|
|
62
60
|
Requires-Dist: aiobotocore<2.16,>=2.5.0; extra == "s3"
|
|
@@ -92,10 +90,10 @@ Requires-Dist: databricks-sdk~=0.20.0; extra == "databricks-sdk"
|
|
|
92
90
|
Provides-Extra: sqlalchemy
|
|
93
91
|
Requires-Dist: sqlalchemy~=2.0; extra == "sqlalchemy"
|
|
94
92
|
Provides-Extra: dask
|
|
95
|
-
Requires-Dist: dask
|
|
96
|
-
Requires-Dist:
|
|
97
|
-
Requires-Dist:
|
|
98
|
-
Requires-Dist: distributed
|
|
93
|
+
Requires-Dist: dask>=2023.12.1; python_version < "3.11" and extra == "dask"
|
|
94
|
+
Requires-Dist: dask>=2024.8; python_version >= "3.11" and extra == "dask"
|
|
95
|
+
Requires-Dist: distributed>=2023.12.1; python_version < "3.11" and extra == "dask"
|
|
96
|
+
Requires-Dist: distributed>=2024.8; python_version >= "3.11" and extra == "dask"
|
|
99
97
|
Provides-Extra: alibaba-oss
|
|
100
98
|
Requires-Dist: ossfs==2025.5.0; extra == "alibaba-oss"
|
|
101
99
|
Requires-Dist: oss2==2.18.4; extra == "alibaba-oss"
|
|
@@ -106,7 +104,7 @@ Requires-Dist: snowflake-connector-python~=3.7; extra == "snowflake"
|
|
|
106
104
|
Provides-Extra: dev-postgres
|
|
107
105
|
Requires-Dist: pytest-mock-resources[postgres]~=2.12; extra == "dev-postgres"
|
|
108
106
|
Provides-Extra: kfp18
|
|
109
|
-
Requires-Dist: mlrun_pipelines_kfp_v1_8[kfp]>=0.5.
|
|
107
|
+
Requires-Dist: mlrun_pipelines_kfp_v1_8[kfp]>=0.5.7; extra == "kfp18"
|
|
110
108
|
Provides-Extra: api
|
|
111
109
|
Requires-Dist: uvicorn~=0.32.1; extra == "api"
|
|
112
110
|
Requires-Dist: dask-kubernetes~=0.11.0; extra == "api"
|
|
@@ -125,7 +123,6 @@ Requires-Dist: memray~=1.12; sys_platform != "win32" and extra == "api"
|
|
|
125
123
|
Requires-Dist: aiosmtplib~=3.0; extra == "api"
|
|
126
124
|
Requires-Dist: pydantic<2,>=1; extra == "api"
|
|
127
125
|
Requires-Dist: mlrun-pipelines-kfp-v1-8~=0.5.7; extra == "api"
|
|
128
|
-
Requires-Dist: grpcio~=1.70.0; extra == "api"
|
|
129
126
|
Provides-Extra: all
|
|
130
127
|
Requires-Dist: adlfs==2024.12.0; extra == "all"
|
|
131
128
|
Requires-Dist: aiobotocore<2.16,>=2.5.0; extra == "all"
|
|
@@ -134,11 +131,11 @@ Requires-Dist: azure-core~=1.24; extra == "all"
|
|
|
134
131
|
Requires-Dist: azure-identity~=1.5; extra == "all"
|
|
135
132
|
Requires-Dist: azure-keyvault-secrets~=4.2; extra == "all"
|
|
136
133
|
Requires-Dist: boto3<1.36,>=1.28.0; extra == "all"
|
|
137
|
-
Requires-Dist: dask
|
|
138
|
-
Requires-Dist: dask
|
|
134
|
+
Requires-Dist: dask>=2023.12.1; python_version < "3.11" and extra == "all"
|
|
135
|
+
Requires-Dist: dask>=2024.8; python_version >= "3.11" and extra == "all"
|
|
139
136
|
Requires-Dist: databricks-sdk~=0.20.0; extra == "all"
|
|
140
|
-
Requires-Dist: distributed
|
|
141
|
-
Requires-Dist: distributed
|
|
137
|
+
Requires-Dist: distributed>=2023.12.1; python_version < "3.11" and extra == "all"
|
|
138
|
+
Requires-Dist: distributed>=2024.8; python_version >= "3.11" and extra == "all"
|
|
142
139
|
Requires-Dist: gcsfs<=2025.7.0,>=2025.5.1; extra == "all"
|
|
143
140
|
Requires-Dist: google-cloud-bigquery-storage~=2.17; extra == "all"
|
|
144
141
|
Requires-Dist: google-cloud-bigquery[bqstorage,pandas]==3.14.1; extra == "all"
|
|
@@ -165,11 +162,11 @@ Requires-Dist: azure-core~=1.24; extra == "complete"
|
|
|
165
162
|
Requires-Dist: azure-identity~=1.5; extra == "complete"
|
|
166
163
|
Requires-Dist: azure-keyvault-secrets~=4.2; extra == "complete"
|
|
167
164
|
Requires-Dist: boto3<1.36,>=1.28.0; extra == "complete"
|
|
168
|
-
Requires-Dist: dask
|
|
169
|
-
Requires-Dist: dask
|
|
165
|
+
Requires-Dist: dask>=2023.12.1; python_version < "3.11" and extra == "complete"
|
|
166
|
+
Requires-Dist: dask>=2024.8; python_version >= "3.11" and extra == "complete"
|
|
170
167
|
Requires-Dist: databricks-sdk~=0.20.0; extra == "complete"
|
|
171
|
-
Requires-Dist: distributed
|
|
172
|
-
Requires-Dist: distributed
|
|
168
|
+
Requires-Dist: distributed>=2023.12.1; python_version < "3.11" and extra == "complete"
|
|
169
|
+
Requires-Dist: distributed>=2024.8; python_version >= "3.11" and extra == "complete"
|
|
173
170
|
Requires-Dist: gcsfs<=2025.7.0,>=2025.5.1; extra == "complete"
|
|
174
171
|
Requires-Dist: google-cloud-bigquery-storage~=2.17; extra == "complete"
|
|
175
172
|
Requires-Dist: google-cloud-bigquery[bqstorage,pandas]==3.14.1; extra == "complete"
|
|
@@ -200,11 +197,11 @@ Requires-Dist: azure-identity~=1.5; extra == "complete-api"
|
|
|
200
197
|
Requires-Dist: azure-keyvault-secrets~=4.2; extra == "complete-api"
|
|
201
198
|
Requires-Dist: boto3<1.36,>=1.28.0; extra == "complete-api"
|
|
202
199
|
Requires-Dist: dask-kubernetes~=0.11.0; extra == "complete-api"
|
|
203
|
-
Requires-Dist: dask
|
|
204
|
-
Requires-Dist: dask
|
|
200
|
+
Requires-Dist: dask>=2023.12.1; python_version < "3.11" and extra == "complete-api"
|
|
201
|
+
Requires-Dist: dask>=2024.8; python_version >= "3.11" and extra == "complete-api"
|
|
205
202
|
Requires-Dist: databricks-sdk~=0.20.0; extra == "complete-api"
|
|
206
|
-
Requires-Dist: distributed
|
|
207
|
-
Requires-Dist: distributed
|
|
203
|
+
Requires-Dist: distributed>=2023.12.1; python_version < "3.11" and extra == "complete-api"
|
|
204
|
+
Requires-Dist: distributed>=2024.8; python_version >= "3.11" and extra == "complete-api"
|
|
208
205
|
Requires-Dist: fastapi~=0.116.0; extra == "complete-api"
|
|
209
206
|
Requires-Dist: gcsfs<=2025.7.0,>=2025.5.1; extra == "complete-api"
|
|
210
207
|
Requires-Dist: google-cloud-bigquery-storage~=2.17; extra == "complete-api"
|
|
@@ -212,7 +209,6 @@ Requires-Dist: google-cloud-bigquery[bqstorage,pandas]==3.14.1; extra == "comple
|
|
|
212
209
|
Requires-Dist: google-cloud-storage==2.14.0; extra == "complete-api"
|
|
213
210
|
Requires-Dist: google-cloud==0.34; extra == "complete-api"
|
|
214
211
|
Requires-Dist: graphviz~=0.20.0; extra == "complete-api"
|
|
215
|
-
Requires-Dist: grpcio~=1.70.0; extra == "complete-api"
|
|
216
212
|
Requires-Dist: humanfriendly~=10.0; extra == "complete-api"
|
|
217
213
|
Requires-Dist: igz-mgmt~=0.4.1; extra == "complete-api"
|
|
218
214
|
Requires-Dist: kafka-python~=2.1.0; extra == "complete-api"
|