mlrun 1.10.0rc16__py3-none-any.whl → 1.10.0rc18__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.
- mlrun/common/constants.py +2 -0
- mlrun/common/formatters/artifact.py +1 -0
- mlrun/common/schemas/__init__.py +1 -0
- mlrun/common/schemas/model_monitoring/__init__.py +1 -0
- mlrun/common/schemas/model_monitoring/constants.py +33 -6
- mlrun/common/schemas/serving.py +3 -0
- mlrun/common/schemas/workflow.py +1 -0
- mlrun/config.py +15 -5
- mlrun/datastore/datastore.py +4 -4
- mlrun/datastore/datastore_profile.py +26 -0
- mlrun/datastore/model_provider/huggingface_provider.py +183 -0
- mlrun/datastore/model_provider/model_provider.py +6 -1
- mlrun/datastore/model_provider/openai_provider.py +24 -12
- mlrun/datastore/utils.py +6 -0
- mlrun/db/base.py +1 -0
- mlrun/db/httpdb.py +4 -0
- mlrun/model_monitoring/api.py +5 -3
- mlrun/model_monitoring/applications/base.py +107 -28
- mlrun/model_monitoring/applications/results.py +4 -7
- mlrun/model_monitoring/controller.py +175 -121
- mlrun/model_monitoring/stream_processing.py +29 -2
- mlrun/projects/project.py +7 -2
- mlrun/run.py +3 -1
- mlrun/serving/server.py +98 -11
- mlrun/serving/states.py +8 -19
- mlrun/serving/system_steps.py +20 -10
- mlrun/utils/helpers.py +6 -1
- mlrun/utils/logger.py +3 -1
- mlrun/utils/version/version.json +2 -2
- {mlrun-1.10.0rc16.dist-info → mlrun-1.10.0rc18.dist-info}/METADATA +2 -2
- {mlrun-1.10.0rc16.dist-info → mlrun-1.10.0rc18.dist-info}/RECORD +35 -34
- {mlrun-1.10.0rc16.dist-info → mlrun-1.10.0rc18.dist-info}/WHEEL +0 -0
- {mlrun-1.10.0rc16.dist-info → mlrun-1.10.0rc18.dist-info}/entry_points.txt +0 -0
- {mlrun-1.10.0rc16.dist-info → mlrun-1.10.0rc18.dist-info}/licenses/LICENSE +0 -0
- {mlrun-1.10.0rc16.dist-info → mlrun-1.10.0rc18.dist-info}/top_level.txt +0 -0
mlrun/serving/server.py
CHANGED
|
@@ -22,8 +22,10 @@ import os
|
|
|
22
22
|
import socket
|
|
23
23
|
import traceback
|
|
24
24
|
import uuid
|
|
25
|
+
from datetime import datetime, timezone
|
|
25
26
|
from typing import Any, Optional, Union
|
|
26
27
|
|
|
28
|
+
import pandas as pd
|
|
27
29
|
import storey
|
|
28
30
|
from nuclio import Context as NuclioContext
|
|
29
31
|
from nuclio.request import Logger as NuclioLogger
|
|
@@ -40,6 +42,7 @@ from mlrun.secrets import SecretsStore
|
|
|
40
42
|
|
|
41
43
|
from ..common.helpers import parse_versioned_object_uri
|
|
42
44
|
from ..common.schemas.model_monitoring.constants import FileTargetKind
|
|
45
|
+
from ..common.schemas.serving import MAX_BATCH_JOB_DURATION
|
|
43
46
|
from ..datastore import DataItem, get_stream_pusher
|
|
44
47
|
from ..datastore.store_resources import ResourceCache
|
|
45
48
|
from ..errors import MLRunInvalidArgumentError
|
|
@@ -561,6 +564,7 @@ def v2_serving_init(context, namespace=None):
|
|
|
561
564
|
async def async_execute_graph(
|
|
562
565
|
context: MLClientCtx,
|
|
563
566
|
data: DataItem,
|
|
567
|
+
timestamp_column: Optional[str],
|
|
564
568
|
batching: bool,
|
|
565
569
|
batch_size: Optional[int],
|
|
566
570
|
read_as_lists: bool,
|
|
@@ -605,10 +609,43 @@ async def async_execute_graph(
|
|
|
605
609
|
f"(status='{task_state}')"
|
|
606
610
|
)
|
|
607
611
|
|
|
612
|
+
df = data.as_df()
|
|
613
|
+
|
|
614
|
+
if df.empty:
|
|
615
|
+
context.logger.warn("Job terminated due to empty inputs (0 rows)")
|
|
616
|
+
return []
|
|
617
|
+
|
|
618
|
+
track_models = spec.get("track_models")
|
|
619
|
+
|
|
620
|
+
if track_models and timestamp_column:
|
|
621
|
+
context.logger.info(f"Sorting dataframe by {timestamp_column}")
|
|
622
|
+
df[timestamp_column] = pd.to_datetime( # in case it's a string
|
|
623
|
+
df[timestamp_column]
|
|
624
|
+
)
|
|
625
|
+
df.sort_values(by=timestamp_column, inplace=True)
|
|
626
|
+
if len(df) > 1:
|
|
627
|
+
start_time = df[timestamp_column].iloc[0]
|
|
628
|
+
end_time = df[timestamp_column].iloc[-1]
|
|
629
|
+
time_range = end_time - start_time
|
|
630
|
+
start_time = start_time.isoformat()
|
|
631
|
+
end_time = end_time.isoformat()
|
|
632
|
+
# TODO: tie this to the controller's base period
|
|
633
|
+
if time_range > pd.Timedelta(MAX_BATCH_JOB_DURATION):
|
|
634
|
+
raise mlrun.errors.MLRunRuntimeError(
|
|
635
|
+
f"Dataframe time range is too long: {time_range}. "
|
|
636
|
+
"Please disable tracking or reduce the input dataset's time range below the defined limit "
|
|
637
|
+
f"of {MAX_BATCH_JOB_DURATION}."
|
|
638
|
+
)
|
|
639
|
+
else:
|
|
640
|
+
start_time = end_time = df["timestamp"].iloc[0].isoformat()
|
|
641
|
+
else:
|
|
642
|
+
# end time will be set from clock time when the batch completes
|
|
643
|
+
start_time = datetime.now(tz=timezone.utc).isoformat()
|
|
644
|
+
|
|
608
645
|
server.graph = add_system_steps_to_graph(
|
|
609
646
|
server.project,
|
|
610
647
|
copy.deepcopy(server.graph),
|
|
611
|
-
|
|
648
|
+
track_models,
|
|
612
649
|
context,
|
|
613
650
|
spec,
|
|
614
651
|
pause_until_background_task_completion=False, # we've already awaited it
|
|
@@ -633,19 +670,28 @@ async def async_execute_graph(
|
|
|
633
670
|
if server.verbose:
|
|
634
671
|
context.logger.info(server.to_yaml())
|
|
635
672
|
|
|
636
|
-
df = data.as_df()
|
|
637
|
-
|
|
638
|
-
responses = []
|
|
639
|
-
|
|
640
673
|
async def run(body):
|
|
641
674
|
event = storey.Event(id=index, body=body)
|
|
642
|
-
|
|
643
|
-
|
|
675
|
+
if timestamp_column:
|
|
676
|
+
if batching:
|
|
677
|
+
# we use the first row in the batch to determine the timestamp for the whole batch
|
|
678
|
+
body = body[0]
|
|
679
|
+
if not isinstance(body, dict):
|
|
680
|
+
raise mlrun.errors.MLRunRuntimeError(
|
|
681
|
+
f"When timestamp_column=True, event body must be a dict – got {type(body).__name__} instead"
|
|
682
|
+
)
|
|
683
|
+
if timestamp_column not in body:
|
|
684
|
+
raise mlrun.errors.MLRunRuntimeError(
|
|
685
|
+
f"Event body '{body}' did not contain timestamp column '{timestamp_column}'"
|
|
686
|
+
)
|
|
687
|
+
event._original_timestamp = body[timestamp_column]
|
|
688
|
+
return await server.run(event, context)
|
|
644
689
|
|
|
645
690
|
if batching and not batch_size:
|
|
646
691
|
batch_size = len(df)
|
|
647
692
|
|
|
648
693
|
batch = []
|
|
694
|
+
tasks = []
|
|
649
695
|
for index, row in df.iterrows():
|
|
650
696
|
data = row.to_list() if read_as_lists else row.to_dict()
|
|
651
697
|
if nest_under_inputs:
|
|
@@ -653,24 +699,56 @@ async def async_execute_graph(
|
|
|
653
699
|
if batching:
|
|
654
700
|
batch.append(data)
|
|
655
701
|
if len(batch) == batch_size:
|
|
656
|
-
|
|
702
|
+
tasks.append(asyncio.create_task(run(batch)))
|
|
657
703
|
batch = []
|
|
658
704
|
else:
|
|
659
|
-
|
|
705
|
+
tasks.append(asyncio.create_task(run(data)))
|
|
660
706
|
|
|
661
707
|
if batch:
|
|
662
|
-
|
|
708
|
+
tasks.append(asyncio.create_task(run(batch)))
|
|
709
|
+
|
|
710
|
+
responses = await asyncio.gather(*tasks)
|
|
663
711
|
|
|
664
712
|
termination_result = server.wait_for_completion()
|
|
665
713
|
if asyncio.iscoroutine(termination_result):
|
|
666
714
|
await termination_result
|
|
667
715
|
|
|
716
|
+
model_endpoint_uids = spec.get("model_endpoint_uids", [])
|
|
717
|
+
|
|
718
|
+
# needed for output_stream to be created
|
|
719
|
+
server = GraphServer.from_dict(spec)
|
|
720
|
+
server.init_states(None, namespace)
|
|
721
|
+
|
|
722
|
+
batch_completion_time = datetime.now(tz=timezone.utc).isoformat()
|
|
723
|
+
|
|
724
|
+
if not timestamp_column:
|
|
725
|
+
end_time = batch_completion_time
|
|
726
|
+
|
|
727
|
+
mm_stream_record = dict(
|
|
728
|
+
kind="batch_complete",
|
|
729
|
+
project=context.project,
|
|
730
|
+
first_timestamp=start_time,
|
|
731
|
+
last_timestamp=end_time,
|
|
732
|
+
batch_completion_time=batch_completion_time,
|
|
733
|
+
)
|
|
734
|
+
output_stream = server.context.stream.output_stream
|
|
735
|
+
for mep_uid in spec.get("model_endpoint_uids", []):
|
|
736
|
+
mm_stream_record["endpoint_id"] = mep_uid
|
|
737
|
+
output_stream.push(mm_stream_record, partition_key=mep_uid)
|
|
738
|
+
|
|
739
|
+
context.logger.info(
|
|
740
|
+
f"Job completed processing {len(df)} rows",
|
|
741
|
+
timestamp_column=timestamp_column,
|
|
742
|
+
model_endpoint_uids=model_endpoint_uids,
|
|
743
|
+
)
|
|
744
|
+
|
|
668
745
|
return responses
|
|
669
746
|
|
|
670
747
|
|
|
671
748
|
def execute_graph(
|
|
672
749
|
context: MLClientCtx,
|
|
673
750
|
data: DataItem,
|
|
751
|
+
timestamp_column: Optional[str] = None,
|
|
674
752
|
batching: bool = False,
|
|
675
753
|
batch_size: Optional[int] = None,
|
|
676
754
|
read_as_lists: bool = False,
|
|
@@ -681,6 +759,9 @@ def execute_graph(
|
|
|
681
759
|
|
|
682
760
|
:param context: The job's execution client context.
|
|
683
761
|
:param data: The input data to the job, to be pushed into the graph row by row, or in batches.
|
|
762
|
+
:param timestamp_column: The name of the column that will be used as the timestamp for model monitoring purposes.
|
|
763
|
+
when timestamp_column is used in conjunction with batching, the first timestamp will be used for the entire
|
|
764
|
+
batch.
|
|
684
765
|
:param batching: Whether to push one or more batches into the graph rather than row by row.
|
|
685
766
|
:param batch_size: The number of rows to push per batch. If not set, and batching=True, the entire dataset will
|
|
686
767
|
be pushed into the graph in one batch.
|
|
@@ -691,7 +772,13 @@ def execute_graph(
|
|
|
691
772
|
"""
|
|
692
773
|
return asyncio.run(
|
|
693
774
|
async_execute_graph(
|
|
694
|
-
context,
|
|
775
|
+
context,
|
|
776
|
+
data,
|
|
777
|
+
timestamp_column,
|
|
778
|
+
batching,
|
|
779
|
+
batch_size,
|
|
780
|
+
read_as_lists,
|
|
781
|
+
nest_under_inputs,
|
|
695
782
|
)
|
|
696
783
|
)
|
|
697
784
|
|
mlrun/serving/states.py
CHANGED
|
@@ -1206,7 +1206,7 @@ class Model(storey.ParallelExecutionRunnable, ModelObj):
|
|
|
1206
1206
|
|
|
1207
1207
|
class LLModel(Model):
|
|
1208
1208
|
def __init__(
|
|
1209
|
-
self, name: str, input_path: Optional[Union[str, list[str]]], **kwargs
|
|
1209
|
+
self, name: str, input_path: Optional[Union[str, list[str]]] = None, **kwargs
|
|
1210
1210
|
):
|
|
1211
1211
|
super().__init__(name, **kwargs)
|
|
1212
1212
|
self._input_path = split_path(input_path)
|
|
@@ -1754,9 +1754,10 @@ class ModelRunnerStep(MonitoredStep):
|
|
|
1754
1754
|
except (
|
|
1755
1755
|
mlrun.errors.MLRunNotFoundError,
|
|
1756
1756
|
mlrun.errors.MLRunInvalidArgumentError,
|
|
1757
|
-
):
|
|
1757
|
+
) as ex:
|
|
1758
1758
|
logger.warning(
|
|
1759
|
-
f"Model endpoint not found, using default output schema for model {name}"
|
|
1759
|
+
f"Model endpoint not found, using default output schema for model {name}",
|
|
1760
|
+
error=f"{type(ex).__name__}: {ex}",
|
|
1760
1761
|
)
|
|
1761
1762
|
return output_schema
|
|
1762
1763
|
|
|
@@ -1768,22 +1769,6 @@ class ModelRunnerStep(MonitoredStep):
|
|
|
1768
1769
|
)
|
|
1769
1770
|
if isinstance(monitoring_data, dict):
|
|
1770
1771
|
for model in monitoring_data:
|
|
1771
|
-
monitoring_data[model][schemas.MonitoringData.OUTPUTS] = (
|
|
1772
|
-
monitoring_data.get(model, {}).get(schemas.MonitoringData.OUTPUTS)
|
|
1773
|
-
or self._get_model_endpoint_output_schema(
|
|
1774
|
-
name=model,
|
|
1775
|
-
project=self.context.project if self.context else None,
|
|
1776
|
-
uid=monitoring_data.get(model, {}).get(
|
|
1777
|
-
mlrun.common.schemas.MonitoringData.MODEL_ENDPOINT_UID
|
|
1778
|
-
),
|
|
1779
|
-
)
|
|
1780
|
-
)
|
|
1781
|
-
# Prevent calling _get_model_output_schema for same model more than once
|
|
1782
|
-
self.class_args[
|
|
1783
|
-
mlrun.common.schemas.ModelRunnerStepData.MONITORING_DATA
|
|
1784
|
-
][model][schemas.MonitoringData.OUTPUTS] = monitoring_data[model][
|
|
1785
|
-
schemas.MonitoringData.OUTPUTS
|
|
1786
|
-
]
|
|
1787
1772
|
monitoring_data[model][schemas.MonitoringData.INPUT_PATH] = split_path(
|
|
1788
1773
|
monitoring_data[model][schemas.MonitoringData.INPUT_PATH]
|
|
1789
1774
|
)
|
|
@@ -1791,6 +1776,10 @@ class ModelRunnerStep(MonitoredStep):
|
|
|
1791
1776
|
monitoring_data[model][schemas.MonitoringData.RESULT_PATH]
|
|
1792
1777
|
)
|
|
1793
1778
|
return monitoring_data
|
|
1779
|
+
else:
|
|
1780
|
+
raise mlrun.errors.MLRunInvalidArgumentError(
|
|
1781
|
+
"Monitoring data must be a dictionary."
|
|
1782
|
+
)
|
|
1794
1783
|
|
|
1795
1784
|
def init_object(self, context, namespace, mode="sync", reset=False, **extra_kwargs):
|
|
1796
1785
|
self.context = context
|
mlrun/serving/system_steps.py
CHANGED
|
@@ -104,7 +104,7 @@ class MonitoringPreProcessor(storey.MapClass):
|
|
|
104
104
|
@staticmethod
|
|
105
105
|
def transpose_by_key(
|
|
106
106
|
data: dict, schema: Optional[Union[str, list[str]]] = None
|
|
107
|
-
) -> Union[list[
|
|
107
|
+
) -> Union[list[Any], list[list[Any]]]:
|
|
108
108
|
"""
|
|
109
109
|
Transpose values from a dictionary by keys.
|
|
110
110
|
|
|
@@ -146,7 +146,11 @@ class MonitoringPreProcessor(storey.MapClass):
|
|
|
146
146
|
else:
|
|
147
147
|
keys = schema
|
|
148
148
|
|
|
149
|
-
values = [data[key] for key in keys]
|
|
149
|
+
values = [data[key] for key in keys if key in data]
|
|
150
|
+
if len(values) != len(keys):
|
|
151
|
+
raise mlrun.MLRunInvalidArgumentError(
|
|
152
|
+
f"Schema keys {keys} do not match the data keys {list(data.keys())}."
|
|
153
|
+
)
|
|
150
154
|
|
|
151
155
|
# Detect if all are scalars ie: int,float,str
|
|
152
156
|
all_scalars = all(not isinstance(v, (list, tuple, np.ndarray)) for v in values)
|
|
@@ -158,9 +162,9 @@ class MonitoringPreProcessor(storey.MapClass):
|
|
|
158
162
|
)
|
|
159
163
|
|
|
160
164
|
if all_scalars:
|
|
161
|
-
transposed = np.array([values])
|
|
165
|
+
transposed = np.array([values], dtype=object)
|
|
162
166
|
elif all_lists and len(keys) > 1:
|
|
163
|
-
arrays = [np.array(v) for v in values]
|
|
167
|
+
arrays = [np.array(v, dtype=object) for v in values]
|
|
164
168
|
mat = np.stack(arrays, axis=0)
|
|
165
169
|
transposed = mat.T
|
|
166
170
|
else:
|
|
@@ -192,6 +196,12 @@ class MonitoringPreProcessor(storey.MapClass):
|
|
|
192
196
|
request, resp = self.reconstruct_request_resp_fields(
|
|
193
197
|
event, model, monitoring_data[model]
|
|
194
198
|
)
|
|
199
|
+
if hasattr(event, "_original_timestamp"):
|
|
200
|
+
when = event._original_timestamp
|
|
201
|
+
else:
|
|
202
|
+
when = event._metadata.get(model, {}).get(
|
|
203
|
+
mm_schemas.StreamProcessingEvent.WHEN
|
|
204
|
+
)
|
|
195
205
|
monitoring_event_list.append(
|
|
196
206
|
{
|
|
197
207
|
mm_schemas.StreamProcessingEvent.MODEL: model,
|
|
@@ -201,9 +211,7 @@ class MonitoringPreProcessor(storey.MapClass):
|
|
|
201
211
|
mm_schemas.StreamProcessingEvent.MICROSEC: event._metadata.get(
|
|
202
212
|
model, {}
|
|
203
213
|
).get(mm_schemas.StreamProcessingEvent.MICROSEC),
|
|
204
|
-
mm_schemas.StreamProcessingEvent.WHEN:
|
|
205
|
-
model, {}
|
|
206
|
-
).get(mm_schemas.StreamProcessingEvent.WHEN),
|
|
214
|
+
mm_schemas.StreamProcessingEvent.WHEN: when,
|
|
207
215
|
mm_schemas.StreamProcessingEvent.ENDPOINT_ID: monitoring_data[
|
|
208
216
|
model
|
|
209
217
|
].get(
|
|
@@ -236,6 +244,10 @@ class MonitoringPreProcessor(storey.MapClass):
|
|
|
236
244
|
request, resp = self.reconstruct_request_resp_fields(
|
|
237
245
|
event, model, monitoring_data[model]
|
|
238
246
|
)
|
|
247
|
+
if hasattr(event, "_original_timestamp"):
|
|
248
|
+
when = event._original_timestamp
|
|
249
|
+
else:
|
|
250
|
+
when = event._metadata.get(mm_schemas.StreamProcessingEvent.WHEN)
|
|
239
251
|
monitoring_event_list.append(
|
|
240
252
|
{
|
|
241
253
|
mm_schemas.StreamProcessingEvent.MODEL: model,
|
|
@@ -245,9 +257,7 @@ class MonitoringPreProcessor(storey.MapClass):
|
|
|
245
257
|
mm_schemas.StreamProcessingEvent.MICROSEC: event._metadata.get(
|
|
246
258
|
mm_schemas.StreamProcessingEvent.MICROSEC
|
|
247
259
|
),
|
|
248
|
-
mm_schemas.StreamProcessingEvent.WHEN:
|
|
249
|
-
mm_schemas.StreamProcessingEvent.WHEN
|
|
250
|
-
),
|
|
260
|
+
mm_schemas.StreamProcessingEvent.WHEN: when,
|
|
251
261
|
mm_schemas.StreamProcessingEvent.ENDPOINT_ID: monitoring_data[
|
|
252
262
|
model
|
|
253
263
|
].get(mlrun.common.schemas.MonitoringData.MODEL_ENDPOINT_UID),
|
mlrun/utils/helpers.py
CHANGED
|
@@ -800,7 +800,12 @@ def remove_tag_from_artifact_uri(uri: str) -> Optional[str]:
|
|
|
800
800
|
"store://key:tag" => "store://key"
|
|
801
801
|
"store://models/remote-model-project/my_model#0@tree" => unchanged (no tag)
|
|
802
802
|
"""
|
|
803
|
-
|
|
803
|
+
add_store = False
|
|
804
|
+
if mlrun.datastore.is_store_uri(uri):
|
|
805
|
+
uri = uri.removeprefix(DB_SCHEMA + "://")
|
|
806
|
+
add_store = True
|
|
807
|
+
uri = re.sub(r"(#[^:@\s]*)?:[^@^:\s]+(?=(@|\^|$))", lambda m: m.group(1) or "", uri)
|
|
808
|
+
return uri if not add_store else DB_SCHEMA + "://" + uri
|
|
804
809
|
|
|
805
810
|
|
|
806
811
|
def extend_hub_uri_if_needed(uri) -> tuple[str, bool]:
|
mlrun/utils/logger.py
CHANGED
|
@@ -393,12 +393,14 @@ def resolve_formatter_by_kind(
|
|
|
393
393
|
|
|
394
394
|
|
|
395
395
|
def create_test_logger(name: str = "mlrun", stream: IO[str] = stdout) -> Logger:
|
|
396
|
-
|
|
396
|
+
logger = create_logger(
|
|
397
397
|
level="debug",
|
|
398
398
|
formatter_kind=FormatterKinds.HUMAN_EXTENDED.name,
|
|
399
399
|
name=name,
|
|
400
400
|
stream=stream,
|
|
401
401
|
)
|
|
402
|
+
logger._logger.propagate = True # pass records up to pytest’s handler
|
|
403
|
+
return logger
|
|
402
404
|
|
|
403
405
|
|
|
404
406
|
def create_logger(
|
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.0rc18
|
|
4
4
|
Summary: Tracking and config of machine learning runs
|
|
5
5
|
Home-page: https://github.com/mlrun/mlrun
|
|
6
6
|
Author: Yaron Haviv
|
|
@@ -44,7 +44,7 @@ Requires-Dist: semver~=3.0
|
|
|
44
44
|
Requires-Dist: dependency-injector~=4.41
|
|
45
45
|
Requires-Dist: fsspec<2024.7,>=2023.9.2
|
|
46
46
|
Requires-Dist: v3iofs~=0.1.17
|
|
47
|
-
Requires-Dist: storey~=1.10.
|
|
47
|
+
Requires-Dist: storey~=1.10.9
|
|
48
48
|
Requires-Dist: inflection~=0.5.0
|
|
49
49
|
Requires-Dist: python-dotenv~=1.0
|
|
50
50
|
Requires-Dist: setuptools>=75.2
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
mlrun/__init__.py,sha256=Y_AFhZV1hEx4vfiO-cyjup0aLGcp6R0SeL75GqLFQrc,7514
|
|
2
2
|
mlrun/__main__.py,sha256=wQNaxW7QsqFBtWffnPkw-497fnpsrQzUnscBQQAP_UM,48364
|
|
3
|
-
mlrun/config.py,sha256=
|
|
3
|
+
mlrun/config.py,sha256=XAAb68MwEHpuPddPMtKBULtFk0hI9YC25DniYQk1DKk,72853
|
|
4
4
|
mlrun/errors.py,sha256=bAk0t_qmCxQSPNK0TugOAfA5R6f0G6OYvEvXUWSJ_5U,9062
|
|
5
5
|
mlrun/execution.py,sha256=dJ4PFwg5AlDHbCL2Q9dVDjWA_i64UTq2qBiF8kTU9tw,56922
|
|
6
6
|
mlrun/features.py,sha256=jMEXo6NB36A6iaxNEJWzdtYwUmglYD90OIKTIEeWhE8,15841
|
|
@@ -8,7 +8,7 @@ mlrun/k8s_utils.py,sha256=mMnGyouHoJC93ZD2KGf9neJM1pD7mR9IXLnHOEwYVTQ,21469
|
|
|
8
8
|
mlrun/lists.py,sha256=OlaV2QIFUzmenad9kxNJ3k4whlDyxI3zFbGwr6vpC5Y,8561
|
|
9
9
|
mlrun/model.py,sha256=wHtM8LylSOEFk6Hxl95CVm8DOPhofjsANYdIvKHH6dw,88956
|
|
10
10
|
mlrun/render.py,sha256=5DlhD6JtzHgmj5RVlpaYiHGhX84Q7qdi4RCEUj2UMgw,13195
|
|
11
|
-
mlrun/run.py,sha256=
|
|
11
|
+
mlrun/run.py,sha256=6I4I_88Slpj27WzGnoq0c02SNpDaGsJllC8Y-2BED0E,46951
|
|
12
12
|
mlrun/secrets.py,sha256=dZPdkc_zzfscVQepOHUwmzFqnBavDCBXV9DQoH_eIYM,7800
|
|
13
13
|
mlrun/alerts/__init__.py,sha256=0gtG1BG0DXxFrXegIkjbM1XEN4sP9ODo0ucXrNld1hU,601
|
|
14
14
|
mlrun/alerts/alert.py,sha256=QQFZGydQbx9RvAaSiaH-ALQZVcDKQX5lgizqj_rXW2k,15948
|
|
@@ -23,14 +23,14 @@ mlrun/artifacts/manager.py,sha256=_cDNCS7wwmFIsucJ2uOgHxZQECmIGb8Wye64b6oLgKU,16
|
|
|
23
23
|
mlrun/artifacts/model.py,sha256=8EVaD70SOkTohQIWqkDk0MEwskdofxs3wJTgspa2sho,25615
|
|
24
24
|
mlrun/artifacts/plots.py,sha256=wmaxVXiAPSCyn3M7pIlcBu9pP3O8lrq0Ewx6iHRDF9s,4238
|
|
25
25
|
mlrun/common/__init__.py,sha256=kXGBqhLN0rlAx0kTXhozGzFsIdSqW0uTSKMmsLgq_is,569
|
|
26
|
-
mlrun/common/constants.py,sha256=
|
|
26
|
+
mlrun/common/constants.py,sha256=BDxV8kAAf8D2W-gsa7IP8HJe5da-sPwVUfiodQ1O7kI,4127
|
|
27
27
|
mlrun/common/helpers.py,sha256=DIdqs_eN3gO5bZ8iFobIvx8cEiOxYxhFIyut6-O69T0,1385
|
|
28
28
|
mlrun/common/secrets.py,sha256=8g9xtIw-9DGcwiZRT62a5ozSQM-aYo8yK5Ghey9WM0g,5179
|
|
29
29
|
mlrun/common/types.py,sha256=1gxThbmC0Vd0U1ffIkEwz4T4S7JOgHt70rvw8TCO21c,1073
|
|
30
30
|
mlrun/common/db/__init__.py,sha256=kXGBqhLN0rlAx0kTXhozGzFsIdSqW0uTSKMmsLgq_is,569
|
|
31
31
|
mlrun/common/db/dialects.py,sha256=QN9bx7CTo32IIdJ2J3ZrsX8IUdp_BPxBtl0LyjMEC9g,868
|
|
32
32
|
mlrun/common/formatters/__init__.py,sha256=au7S3M3wa9964RpQhFSvflk5-i5SWMeb3kek8Gvt4kg,889
|
|
33
|
-
mlrun/common/formatters/artifact.py,sha256=
|
|
33
|
+
mlrun/common/formatters/artifact.py,sha256=JRs1B3nEvTdn4h69FLHjZZY_Dy40E9-BgvxfjcL_DKU,1503
|
|
34
34
|
mlrun/common/formatters/base.py,sha256=85vQ0t4ZfqCs8b8QV1RLfRcEvANztKvTvsa__sD3zTo,4099
|
|
35
35
|
mlrun/common/formatters/feature_set.py,sha256=SmSSiNYXZtmzQDCvQJhIpArtjOInmDN0g1xFqrDdWsw,1534
|
|
36
36
|
mlrun/common/formatters/function.py,sha256=H8bHilWSn1NXm5WWlFH2dx8slomCGm3e8ghsmWOOh48,1493
|
|
@@ -41,7 +41,7 @@ mlrun/common/formatters/run.py,sha256=LlqhhVY4dAp5y17k_sWBtHaJogdNdtJWF0iO9sX-bU
|
|
|
41
41
|
mlrun/common/model_monitoring/__init__.py,sha256=kXGBqhLN0rlAx0kTXhozGzFsIdSqW0uTSKMmsLgq_is,569
|
|
42
42
|
mlrun/common/model_monitoring/helpers.py,sha256=AkuHz4u318MEP4ebxmNWlNXh6HiNLrI5oF7QvJiJkYc,2707
|
|
43
43
|
mlrun/common/runtimes/constants.py,sha256=CGMHE2gdsNHXNsa-u3eL0o8sQmDs6PN5FLpMlCDClns,12218
|
|
44
|
-
mlrun/common/schemas/__init__.py,sha256=
|
|
44
|
+
mlrun/common/schemas/__init__.py,sha256=HbnF4nd6jIGbej9Qj6WYjajIr44f3vYNpgWyeLk7N6I,5486
|
|
45
45
|
mlrun/common/schemas/alert.py,sha256=u6INAHBhQIfm-mMsGqDJo1_JDN6gOuWZa-8fOU-aOUE,10182
|
|
46
46
|
mlrun/common/schemas/api_gateway.py,sha256=bgC3vXbyb1SVwsSZkLXtEoQLCe_QDKpIhAVX3X_HWW4,7126
|
|
47
47
|
mlrun/common/schemas/artifact.py,sha256=JojMRRa4n0Rge2olGOpUyp348hkTGsMEnvUBRSoo4oE,4310
|
|
@@ -71,11 +71,11 @@ mlrun/common/schemas/runs.py,sha256=yKY29ByTS4SruWQyPpDNFGulMrcT9Ms-3lnwBUDp3us,
|
|
|
71
71
|
mlrun/common/schemas/runtime_resource.py,sha256=TybJmCHJXmm1z3s5J1dd89TeFE6lG5t7vjcrf1R9YfE,1568
|
|
72
72
|
mlrun/common/schemas/schedule.py,sha256=L7z9Lp06-xmFmdp0q5PypCU_DCl6zZIyQTVoJa01gfM,4291
|
|
73
73
|
mlrun/common/schemas/secret.py,sha256=Td2UAeWHSAdA4nIP3rQv_PIVKVqcBnCnK6xjr528tS8,1486
|
|
74
|
-
mlrun/common/schemas/serving.py,sha256
|
|
74
|
+
mlrun/common/schemas/serving.py,sha256=4ek9JZDagkdeXyfkX6P6xp4deUNSf_kqXUaXcKSuv-g,1391
|
|
75
75
|
mlrun/common/schemas/tag.py,sha256=1wqEiAujsElojWb3qmuyfcaLFjXSNAAQdafkDx7fkn0,891
|
|
76
|
-
mlrun/common/schemas/workflow.py,sha256=
|
|
77
|
-
mlrun/common/schemas/model_monitoring/__init__.py,sha256=
|
|
78
|
-
mlrun/common/schemas/model_monitoring/constants.py,sha256=
|
|
76
|
+
mlrun/common/schemas/workflow.py,sha256=Y-FHJnxs5c86yetuOAPdEJPkne__tLPCxjSXSb4lrjo,2541
|
|
77
|
+
mlrun/common/schemas/model_monitoring/__init__.py,sha256=FqFiFIDcylquQdY0XTBamB5kMzMrMFEpVYM_ecsVfLg,1925
|
|
78
|
+
mlrun/common/schemas/model_monitoring/constants.py,sha256=WhuUWgOwk91BI0dP5c1rm6X_W0V4UBV3l6KvRNHHE-E,13898
|
|
79
79
|
mlrun/common/schemas/model_monitoring/functions.py,sha256=GpfSGp05D87wEKemECD3USL368pvnAM2WfS-nef5qOg,2210
|
|
80
80
|
mlrun/common/schemas/model_monitoring/grafana.py,sha256=THQlLfPBevBksta8p5OaIsBaJtsNSXexLvHrDxOaVns,2095
|
|
81
81
|
mlrun/common/schemas/model_monitoring/model_endpoints.py,sha256=aCrVqgoJsUEwvDJ84YFabDSy78CHcVBV3b0RdWj4JUw,13250
|
|
@@ -88,8 +88,8 @@ mlrun/datastore/__init__.py,sha256=UKGHkUfj5A9dqTiOeW4UScvwv0vq91NS_xs3-_QA7Jk,5
|
|
|
88
88
|
mlrun/datastore/alibaba_oss.py,sha256=E0t0-e9Me2t2Mux2LWdC9riOG921TgNjhoy897JJX7o,4932
|
|
89
89
|
mlrun/datastore/azure_blob.py,sha256=3LG7tOTwT97ZFBmyq-sfAIe5_SkuFgisRQtipv4kKUw,12779
|
|
90
90
|
mlrun/datastore/base.py,sha256=yLdnFCL2k_rcasdbxXjnQr7Lwm-A79LnW9AITtn9-p4,25450
|
|
91
|
-
mlrun/datastore/datastore.py,sha256=
|
|
92
|
-
mlrun/datastore/datastore_profile.py,sha256=
|
|
91
|
+
mlrun/datastore/datastore.py,sha256=gOlMyPDelD9CRieoraDPYf1NNig_GrQRuuQxLmRq8Bo,13298
|
|
92
|
+
mlrun/datastore/datastore_profile.py,sha256=Y4VtaatIK4UXuTdpffCkAcsCBSxj5KOgnX7KlL-Yds8,23803
|
|
93
93
|
mlrun/datastore/dbfs_store.py,sha256=CJwst1598qxiu63-Qa0c3e5E8LjeCv1XbMyWI7A6irY,6560
|
|
94
94
|
mlrun/datastore/filestore.py,sha256=OcykjzhbUAZ6_Cb9bGAXRL2ngsOpxXSb4rR0lyogZtM,3773
|
|
95
95
|
mlrun/datastore/google_cloud_storage.py,sha256=NREwZT7BCI0HfmOGkjpy5S3psiL_rgQSi43MaazJcKk,8711
|
|
@@ -105,19 +105,20 @@ mlrun/datastore/spark_utils.py,sha256=dn0RWpYzee-M8UZw-NVuHAdqlNAZ7VO-fNtI8ZiDky
|
|
|
105
105
|
mlrun/datastore/store_resources.py,sha256=s2794zqkzy_mjRMvRedDNs_tycTLoF8wxTqsWRQphCE,6839
|
|
106
106
|
mlrun/datastore/storeytargets.py,sha256=TvHbY3XS0qOg8ImXW1ET61UnjUPcYJbfSGAga3vgC-o,6492
|
|
107
107
|
mlrun/datastore/targets.py,sha256=8dRnLy1wBYJbVyommYkpGeztdT1CsfFHZY6Zh7o8X-Q,79165
|
|
108
|
-
mlrun/datastore/utils.py,sha256=
|
|
108
|
+
mlrun/datastore/utils.py,sha256=jxvq4lgQfgqb7dwKe4Kp51fYCCyOvitEdIfV2mzlqxg,11936
|
|
109
109
|
mlrun/datastore/v3io.py,sha256=sMn5473k_bXyIJovNf0rahbVHRmO0YPdOwIhbs06clg,8201
|
|
110
110
|
mlrun/datastore/vectorstore.py,sha256=k-yom5gfw20hnVG0Rg7aBEehuXwvAloZwn0cx0VGals,11708
|
|
111
111
|
mlrun/datastore/model_provider/__init__.py,sha256=kXGBqhLN0rlAx0kTXhozGzFsIdSqW0uTSKMmsLgq_is,569
|
|
112
|
-
mlrun/datastore/model_provider/
|
|
113
|
-
mlrun/datastore/model_provider/
|
|
112
|
+
mlrun/datastore/model_provider/huggingface_provider.py,sha256=KTmErt_WHhAV9t8803_iCHoa7jO-0y-7bch7KMTMDKo,7264
|
|
113
|
+
mlrun/datastore/model_provider/model_provider.py,sha256=dJIc1R0wbExsk-uzWgpt9w_FK027mr4lTBxYpQx-icY,8083
|
|
114
|
+
mlrun/datastore/model_provider/openai_provider.py,sha256=Tl3HXLDOtHkp54rb0ZCddlCWU-gUruhFJwSC6ocbv1Y,9157
|
|
114
115
|
mlrun/datastore/wasbfs/__init__.py,sha256=s5Ul-0kAhYqFjKDR2X0O2vDGDbLQQduElb32Ev56Te4,1343
|
|
115
116
|
mlrun/datastore/wasbfs/fs.py,sha256=ge8NK__5vTcFT-krI155_8RDUywQw4SIRX6BWATXy9Q,6299
|
|
116
117
|
mlrun/db/__init__.py,sha256=WqJ4x8lqJ7ZoKbhEyFqkYADd9P6E3citckx9e9ZLcIU,1163
|
|
117
118
|
mlrun/db/auth_utils.py,sha256=hpg8D2r82oN0BWabuWN04BTNZ7jYMAF242YSUpK7LFM,5211
|
|
118
|
-
mlrun/db/base.py,sha256=
|
|
119
|
+
mlrun/db/base.py,sha256=QUncUfRYep_2Bsui7y-DduAEm8qdgIlWIYmrns-S7HA,32110
|
|
119
120
|
mlrun/db/factory.py,sha256=yP2vVmveUE7LYTCHbS6lQIxP9rW--zdISWuPd_I3d_4,2111
|
|
120
|
-
mlrun/db/httpdb.py,sha256=
|
|
121
|
+
mlrun/db/httpdb.py,sha256=oSzc4zigDgu9S2Vs7Lkz_NY1Oc78OGyHN-xeV19nVtk,239397
|
|
121
122
|
mlrun/db/nopdb.py,sha256=kRWKEEI9LUskI3mp2ofTdAWVLov-99-nSMdaqhi3XT8,28194
|
|
122
123
|
mlrun/feature_store/__init__.py,sha256=SlI845bWt6xX34SXunHHqhmFAR9-5v2ak8N-qpcAPGo,1328
|
|
123
124
|
mlrun/feature_store/api.py,sha256=qKj5Tk6prTab6XWatWhBuPRVp0eJEctoxRMN2wz48vA,32168
|
|
@@ -225,18 +226,18 @@ mlrun/launcher/factory.py,sha256=RW7mfzEFi8fR0M-4W1JQg1iq3_muUU6OTqT_3l4Ubrk,233
|
|
|
225
226
|
mlrun/launcher/local.py,sha256=3gv-IQYoIChSmRaZ0vLUh0Tu26oLMCx9GbBYh4fWygQ,12161
|
|
226
227
|
mlrun/launcher/remote.py,sha256=zFXE52Cq_7EkC8lfNKT0ceIbye0CfFiundF7O1YU4Xw,7810
|
|
227
228
|
mlrun/model_monitoring/__init__.py,sha256=qDQnncjya9XPTlfvGyfWsZWiXc-glGZrrNja-5QmCZk,782
|
|
228
|
-
mlrun/model_monitoring/api.py,sha256=
|
|
229
|
-
mlrun/model_monitoring/controller.py,sha256=
|
|
229
|
+
mlrun/model_monitoring/api.py,sha256=9UsBIy8LYeAOoiIDTYthuD0mx1TYZxeGgaEM_H2qBkM,26092
|
|
230
|
+
mlrun/model_monitoring/controller.py,sha256=FVckATzREAzldj68D1KxcnKSdilgKUDRdqhRUf9XpWU,39592
|
|
230
231
|
mlrun/model_monitoring/features_drift_table.py,sha256=c6GpKtpOJbuT1u5uMWDL_S-6N4YPOmlktWMqPme3KFY,25308
|
|
231
232
|
mlrun/model_monitoring/helpers.py,sha256=0xhIYKzhaBrgyjLiA_ekCZsXzi3GBXpLyG40Bhj-PTY,23596
|
|
232
|
-
mlrun/model_monitoring/stream_processing.py,sha256=
|
|
233
|
+
mlrun/model_monitoring/stream_processing.py,sha256=Mzn9Pelcblw8UzOFLGKb9oXOX0tkP2aoPcFbjtfHhcA,34247
|
|
233
234
|
mlrun/model_monitoring/writer.py,sha256=rGRFzSOkqZWvD3Y6sVk2H1Gepfnkzkp9ce00PsApTLo,8288
|
|
234
235
|
mlrun/model_monitoring/applications/__init__.py,sha256=MaH_n4GiqqQvSkntM5yQ7_FCANtM_IfgK-IJTdo4G_E,757
|
|
235
236
|
mlrun/model_monitoring/applications/_application_steps.py,sha256=t9LDIqQUGE10cyjyhlg0QqN1yVx0apD1HpERYLJfm8U,7409
|
|
236
|
-
mlrun/model_monitoring/applications/base.py,sha256=
|
|
237
|
+
mlrun/model_monitoring/applications/base.py,sha256=tfxXcE7WOvPEd68b6gbZWFG-8gkeeSaRRN0G0HYn0C8,43932
|
|
237
238
|
mlrun/model_monitoring/applications/context.py,sha256=fAGFNCyNhSnVJPSIeJxv-XmEL2JhDmjK5Ouog9qyvdc,17035
|
|
238
239
|
mlrun/model_monitoring/applications/histogram_data_drift.py,sha256=2qgfFmrpHf-x0_EaHD-0T28piwSQzw-HH71aV1GwbZs,15389
|
|
239
|
-
mlrun/model_monitoring/applications/results.py,sha256=
|
|
240
|
+
mlrun/model_monitoring/applications/results.py,sha256=LfBQOmkpKGvVGNrcj5QiXsRIG2IRgcv_Xqe4QJBmauk,5699
|
|
240
241
|
mlrun/model_monitoring/applications/evidently/__init__.py,sha256=-DqdPnBSrjZhFvKOu_Ie3MiFvlur9sPTZpZ1u0_1AE8,690
|
|
241
242
|
mlrun/model_monitoring/applications/evidently/base.py,sha256=shH9YwuFrGNWy1IDAbv622l-GE4o1z_u1bqhqTyTHDA,5661
|
|
242
243
|
mlrun/model_monitoring/db/__init__.py,sha256=r47xPGZpIfMuv8J3PQCZTSqVPMhUta4sSJCZFKcS7FM,644
|
|
@@ -277,7 +278,7 @@ mlrun/platforms/iguazio.py,sha256=6VBTq8eQ3mzT96tzjYhAtcMQ2VjF4x8LpIPW5DAcX2Q,13
|
|
|
277
278
|
mlrun/projects/__init__.py,sha256=hdCOA6_fp8X4qGGGT7Bj7sPbkM1PayWuaVZL0DkpuZw,1240
|
|
278
279
|
mlrun/projects/operations.py,sha256=Rc__P5ucNAY2G-lHc2LrnZs15PUbNFt8-NqNNT2Bjpk,20623
|
|
279
280
|
mlrun/projects/pipelines.py,sha256=nGDzBABEOqoe9sWbax4SfF8CVLgrvK0NLWBadzEthVE,52219
|
|
280
|
-
mlrun/projects/project.py,sha256=
|
|
281
|
+
mlrun/projects/project.py,sha256=a75Sj1lYzWNggTXIKxerSwy52YqNciGvrT2k-ddRmkQ,254149
|
|
281
282
|
mlrun/runtimes/__init__.py,sha256=8cqrYKy1a0_87XG7V_p96untQ4t8RocadM4LVEEN1JM,9029
|
|
282
283
|
mlrun/runtimes/base.py,sha256=FVEooeQMpwxIK2iW1R0FNbC5P1sZ_efKtJcsdNSYNmc,38266
|
|
283
284
|
mlrun/runtimes/daskjob.py,sha256=kR5sDQtXtXY_VGn5Y3mapjEEB5P6Lj30pSrPe1DqsAg,20077
|
|
@@ -311,10 +312,10 @@ mlrun/serving/__init__.py,sha256=nriJAcVn5aatwU03T7SsE6ngJEGTxr3wIGt4WuvCCzY,139
|
|
|
311
312
|
mlrun/serving/merger.py,sha256=pfOQoozUyObCTpqXAMk94PmhZefn4bBrKufO3MKnkAc,6193
|
|
312
313
|
mlrun/serving/remote.py,sha256=Igha2FipK3-6rV_PZ1K464kTbiTu8rhc6SMm-HiEJ6o,18817
|
|
313
314
|
mlrun/serving/routers.py,sha256=SmBOlHn7rT2gWTa-W8f16UB0UthgIFc4D1cPOZAA9ss,54003
|
|
314
|
-
mlrun/serving/server.py,sha256=
|
|
315
|
+
mlrun/serving/server.py,sha256=_P_SR4_7YKqruVzzDHgSPHWlNLGPG5-ksSUwuGhnmjg,38851
|
|
315
316
|
mlrun/serving/serving_wrapper.py,sha256=UL9hhWCfMPcTJO_XrkvNaFvck1U1E7oS8trTZyak0cA,835
|
|
316
|
-
mlrun/serving/states.py,sha256
|
|
317
|
-
mlrun/serving/system_steps.py,sha256=
|
|
317
|
+
mlrun/serving/states.py,sha256=-eo1IGLm96Kd0bTrwj211nUcwomMizQ6MxrqtURNxAg,124069
|
|
318
|
+
mlrun/serving/system_steps.py,sha256=tCxkJ54peOzRTMaqvHQCbcwx0ITqZkSpGXbtpRUEfzU,18463
|
|
318
319
|
mlrun/serving/utils.py,sha256=Zbfqm8TKNcTE8zRBezVBzpvR2WKeKeIRN7otNIaiYEc,4170
|
|
319
320
|
mlrun/serving/v1_serving.py,sha256=c6J_MtpE-Tqu00-6r4eJOCO6rUasHDal9W2eBIcrl50,11853
|
|
320
321
|
mlrun/serving/v2_serving.py,sha256=257LVOvWxV0KjeY0-Kxro6YgKmPu2QzNne2IORlXi5E,25434
|
|
@@ -328,9 +329,9 @@ mlrun/utils/async_http.py,sha256=8Olx8TNNeXB07nEGwlqhEgFgnFAD71vBU_bqaA9JW-w,122
|
|
|
328
329
|
mlrun/utils/azure_vault.py,sha256=IEFizrDGDbAaoWwDr1WoA88S_EZ0T--vjYtY-i0cvYQ,3450
|
|
329
330
|
mlrun/utils/clones.py,sha256=qbAGyEbSvlewn3Tw_DpQZP9z6MGzFhSaZfI1CblX8Fg,7515
|
|
330
331
|
mlrun/utils/condition_evaluator.py,sha256=-nGfRmZzivn01rHTroiGY4rqEv8T1irMyhzxEei-sKc,1897
|
|
331
|
-
mlrun/utils/helpers.py,sha256=
|
|
332
|
+
mlrun/utils/helpers.py,sha256=fMlwtYBzUK98nCTFCA5FGm1imqIdpJi0CuAPmO10YZs,82641
|
|
332
333
|
mlrun/utils/http.py,sha256=5ZU2VpokaUM_DT3HBSqTm8xjUqTPjZN5fKkSIvKlTl0,8704
|
|
333
|
-
mlrun/utils/logger.py,sha256=
|
|
334
|
+
mlrun/utils/logger.py,sha256=uaCgI_ezzaXf7nJDCy-1Nrjds8vSXqDbzmjmb3IyCQo,14864
|
|
334
335
|
mlrun/utils/regex.py,sha256=FcRwWD8x9X3HLhCCU2F0AVKTFah784Pr7ZAe3a02jw8,5199
|
|
335
336
|
mlrun/utils/retryer.py,sha256=SHddxyNdUjIyvNJ3idTDyBzXARihCSuo3zWlZj6fqB0,7852
|
|
336
337
|
mlrun/utils/singleton.py,sha256=fNOfAUtha6OPCV_M1umWnGD0iabnnRwBke9otIspv30,868
|
|
@@ -347,11 +348,11 @@ mlrun/utils/notifications/notification/mail.py,sha256=ZyJ3eqd8simxffQmXzqd3bgbAq
|
|
|
347
348
|
mlrun/utils/notifications/notification/slack.py,sha256=kfhogR5keR7Zjh0VCjJNK3NR5_yXT7Cv-x9GdOUW4Z8,7294
|
|
348
349
|
mlrun/utils/notifications/notification/webhook.py,sha256=zxh8CAlbPnTazsk6r05X5TKwqUZVOH5KBU2fJbzQlG4,5330
|
|
349
350
|
mlrun/utils/version/__init__.py,sha256=YnzE6tlf24uOQ8y7Z7l96QLAI6-QEii7-77g8ynmzy0,613
|
|
350
|
-
mlrun/utils/version/version.json,sha256=
|
|
351
|
+
mlrun/utils/version/version.json,sha256=1hAlhHbCP3fWtgQa3l5zk4ROJntlDhuVxmDS5HRBMiY,90
|
|
351
352
|
mlrun/utils/version/version.py,sha256=M2hVhRrgkN3SxacZHs3ZqaOsqAA7B6a22ne324IQ1HE,1877
|
|
352
|
-
mlrun-1.10.
|
|
353
|
-
mlrun-1.10.
|
|
354
|
-
mlrun-1.10.
|
|
355
|
-
mlrun-1.10.
|
|
356
|
-
mlrun-1.10.
|
|
357
|
-
mlrun-1.10.
|
|
353
|
+
mlrun-1.10.0rc18.dist-info/licenses/LICENSE,sha256=zTiv1CxWNkOk1q8eJS1G_8oD4gWpWLwWxj_Agcsi8Os,11337
|
|
354
|
+
mlrun-1.10.0rc18.dist-info/METADATA,sha256=Rx-oVfq1W7TA73agpQeaFDhrevZ_RYVTXG6ormcXWvk,26195
|
|
355
|
+
mlrun-1.10.0rc18.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
356
|
+
mlrun-1.10.0rc18.dist-info/entry_points.txt,sha256=1Owd16eAclD5pfRCoJpYC2ZJSyGNTtUr0nCELMioMmU,46
|
|
357
|
+
mlrun-1.10.0rc18.dist-info/top_level.txt,sha256=NObLzw3maSF9wVrgSeYBv-fgnHkAJ1kEkh12DLdd5KM,6
|
|
358
|
+
mlrun-1.10.0rc18.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|