mlrun 1.8.0rc17__py3-none-any.whl → 1.8.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.

Potentially problematic release.


This version of mlrun might be problematic. Click here for more details.

mlrun/config.py CHANGED
@@ -169,6 +169,7 @@ default_config = {
169
169
  "max_chunk_size": 1024 * 1024 * 1, # 1MB
170
170
  "max_preview_size": 1024 * 1024 * 10, # 10MB
171
171
  "max_download_size": 1024 * 1024 * 100, # 100MB
172
+ "max_deletions": 200,
172
173
  },
173
174
  },
174
175
  # FIXME: Adding these defaults here so we won't need to patch the "installing component" (provazio-controller) to
@@ -14,7 +14,8 @@
14
14
 
15
15
  import socket
16
16
  from abc import ABC, abstractmethod
17
- from datetime import datetime
17
+ from collections.abc import Iterator
18
+ from datetime import datetime, timedelta
18
19
  from typing import Any, Optional, Union, cast
19
20
 
20
21
  import pandas as pd
@@ -96,6 +97,7 @@ class ModelMonitoringApplicationBase(MonitoringApplicationToDict, ABC):
96
97
  endpoints: Optional[list[tuple[str, str]]] = None,
97
98
  start: Optional[datetime] = None,
98
99
  end: Optional[datetime] = None,
100
+ base_period: Optional[int] = None,
99
101
  ):
100
102
  """
101
103
  A custom handler that wraps the application's logic implemented in
@@ -122,32 +124,59 @@ class ModelMonitoringApplicationBase(MonitoringApplicationToDict, ABC):
122
124
  return self.do_tracking(monitoring_context)
123
125
 
124
126
  if endpoints is not None:
125
- start, end = self._validate_times(start, end)
126
- for endpoint_name, endpoint_id in endpoints:
127
- result = call_do_tracking(
128
- event={
129
- mm_constants.ApplicationEvent.ENDPOINT_NAME: endpoint_name,
130
- mm_constants.ApplicationEvent.ENDPOINT_ID: endpoint_id,
131
- mm_constants.ApplicationEvent.START_INFER_TIME: start,
132
- mm_constants.ApplicationEvent.END_INFER_TIME: end,
133
- }
134
- )
135
- context.log_result(
136
- f"{endpoint_name}_{start.isoformat()}_{end.isoformat()}", result
137
- )
127
+ start, end = self._validate_times(start, end, base_period)
128
+ for window_start, window_end in self._window_generator(
129
+ start, end, base_period
130
+ ):
131
+ for endpoint_name, endpoint_id in endpoints:
132
+ result = call_do_tracking(
133
+ event={
134
+ mm_constants.ApplicationEvent.ENDPOINT_NAME: endpoint_name,
135
+ mm_constants.ApplicationEvent.ENDPOINT_ID: endpoint_id,
136
+ mm_constants.ApplicationEvent.START_INFER_TIME: window_start,
137
+ mm_constants.ApplicationEvent.END_INFER_TIME: window_end,
138
+ }
139
+ )
140
+ context.log_result(
141
+ f"{endpoint_name}_{window_start.isoformat()}_{window_end.isoformat()}",
142
+ result,
143
+ )
138
144
  else:
139
145
  return call_do_tracking()
140
146
 
141
147
  @staticmethod
142
148
  def _validate_times(
143
- start: Optional[datetime], end: Optional[datetime]
149
+ start: Optional[datetime],
150
+ end: Optional[datetime],
151
+ base_period: Optional[int],
144
152
  ) -> tuple[datetime, datetime]:
145
153
  if (start is None) or (end is None):
146
154
  raise mlrun.errors.MLRunValueError(
147
155
  "When `endpoint_names` is provided, you must also pass the start and end times"
148
156
  )
157
+ if (base_period is not None) and not (
158
+ isinstance(base_period, int) and base_period > 0
159
+ ):
160
+ raise mlrun.errors.MLRunValueError(
161
+ "`base_period` must be a nonnegative integer - the number of minutes in a monitoring window"
162
+ )
149
163
  return start, end
150
164
 
165
+ @staticmethod
166
+ def _window_generator(
167
+ start: datetime, end: datetime, base_period: Optional[int]
168
+ ) -> Iterator[tuple[datetime, datetime]]:
169
+ if base_period is None:
170
+ yield start, end
171
+ return
172
+
173
+ window_length = timedelta(minutes=base_period)
174
+ current_start_time = start
175
+ while current_start_time < end:
176
+ current_end_time = min(current_start_time + window_length, end)
177
+ yield current_start_time, current_end_time
178
+ current_start_time = current_end_time
179
+
151
180
  @classmethod
152
181
  def deploy(
153
182
  cls,
@@ -203,6 +232,7 @@ class ModelMonitoringApplicationBase(MonitoringApplicationToDict, ABC):
203
232
  endpoints: Optional[list[tuple[str, str]]] = None,
204
233
  start: Optional[datetime] = None,
205
234
  end: Optional[datetime] = None,
235
+ base_period: Optional[int] = None,
206
236
  ) -> "mlrun.RunObject":
207
237
  """
208
238
  Call this function to run the application's
@@ -228,6 +258,10 @@ class ModelMonitoringApplicationBase(MonitoringApplicationToDict, ABC):
228
258
  If provided, you have to provide also the start and end times of the data to analyze.
229
259
  :param start: The start time of the sample data.
230
260
  :param end: The end time of the sample data.
261
+ :param base_period: The window length in minutes. If ``None``, the whole window from ``start`` to ``end``
262
+ is taken. If an integer is specified, the application is run from ``start`` to ``end``
263
+ in ``base_period`` length windows, except for the last window that ends at ``end`` and
264
+ therefore may be shorter.
231
265
 
232
266
  :returns: The output of the
233
267
  :py:meth:`~mlrun.model_monitoring.applications.ModelMonitoringApplicationBase.do_tracking`
@@ -253,15 +287,16 @@ class ModelMonitoringApplicationBase(MonitoringApplicationToDict, ABC):
253
287
  ),
254
288
  )
255
289
 
256
- params: dict[str, Union[list[tuple[str, str]], datetime]] = {}
290
+ params: dict[str, Union[list[tuple[str, str]], datetime, int, None]] = {}
257
291
  if endpoints:
258
- start, end = cls._validate_times(start, end)
292
+ start, end = cls._validate_times(start, end, base_period)
259
293
  params["endpoints"] = endpoints
260
294
  params["start"] = start
261
295
  params["end"] = end
262
- elif start or end:
296
+ params["base_period"] = base_period
297
+ elif start or end or base_period:
263
298
  raise mlrun.errors.MLRunValueError(
264
- "Custom start or end times are supported only with endpoints data"
299
+ "Custom start and end times or base_period are supported only with endpoints data"
265
300
  )
266
301
 
267
302
  inputs: dict[str, str] = {}
@@ -748,7 +748,8 @@ class _LocalRunner(_PipelineRunner):
748
748
  project.set_source(source=source)
749
749
  pipeline_context.workflow_artifact_path = artifact_path
750
750
 
751
- project.notifiers.push_pipeline_start_message(
751
+ # TODO: we should create endpoint for sending custom notification from BE
752
+ project.notifiers.push_pipeline_start_message_from_client(
752
753
  project.metadata.name, pipeline_id=workflow_id
753
754
  )
754
755
  err = None
mlrun/serving/states.py CHANGED
@@ -700,7 +700,7 @@ class RouterStep(TaskStep):
700
700
 
701
701
  kind = "router"
702
702
  default_shape = "doubleoctagon"
703
- _dict_fields = _task_step_fields + ["routes"]
703
+ _dict_fields = _task_step_fields + ["routes", "name"]
704
704
  _default_class = "mlrun.serving.ModelRouter"
705
705
 
706
706
  def __init__(
@@ -718,7 +718,7 @@ class RouterStep(TaskStep):
718
718
  class_name,
719
719
  class_args,
720
720
  handler,
721
- name=name,
721
+ name=get_name(name, class_name or RouterStep.kind),
722
722
  function=function,
723
723
  input_path=input_path,
724
724
  result_path=result_path,
@@ -1707,7 +1707,7 @@ def get_name(name, class_name):
1707
1707
  raise MLRunInvalidArgumentError("name or class_name must be provided")
1708
1708
  if isinstance(class_name, type):
1709
1709
  return class_name.__name__
1710
- return class_name
1710
+ return class_name.split(".")[-1]
1711
1711
 
1712
1712
 
1713
1713
  def params_to_step(
@@ -96,7 +96,7 @@ class V2ModelServer(StepToDict):
96
96
  self.name = name
97
97
  self.version = ""
98
98
  if name and ":" in name:
99
- self.name, self.version = name.split(":", 1)
99
+ self.version = name.split(":", 1)[-1]
100
100
  self.context = context
101
101
  self.ready = False
102
102
  self.error = ""
@@ -277,7 +277,7 @@ class V2ModelServer(StepToDict):
277
277
 
278
278
  response = {
279
279
  "id": event_id,
280
- "model_name": self.name,
280
+ "model_name": self.name.split(":")[0],
281
281
  "outputs": outputs,
282
282
  "timestamp": start.isoformat(sep=" ", timespec="microseconds"),
283
283
  }
@@ -308,7 +308,7 @@ class V2ModelServer(StepToDict):
308
308
  # get model metadata operation
309
309
  setattr(event, "terminated", True)
310
310
  event_body = {
311
- "name": self.name,
311
+ "name": self.name.split(":")[0],
312
312
  "version": self.version or "",
313
313
  "inputs": [],
314
314
  "outputs": [],
@@ -14,6 +14,7 @@
14
14
 
15
15
  import asyncio
16
16
  import datetime
17
+ import os
17
18
  import re
18
19
  import traceback
19
20
  import typing
@@ -30,6 +31,7 @@ import mlrun.model
30
31
  import mlrun.utils.helpers
31
32
  import mlrun.utils.notifications.notification as notification_module
32
33
  import mlrun.utils.notifications.notification.base as base
34
+ import mlrun_pipelines.common.constants
33
35
  import mlrun_pipelines.common.ops
34
36
  import mlrun_pipelines.models
35
37
  import mlrun_pipelines.utils
@@ -499,9 +501,9 @@ class NotificationPusher(_NotificationPusherBase):
499
501
  steps.append(function)
500
502
 
501
503
  step_methods = {
502
- mlrun_pipelines.common.ops.PipelineRunType.run: _add_run_step,
503
- mlrun_pipelines.common.ops.PipelineRunType.build: _add_deploy_function_step,
504
- mlrun_pipelines.common.ops.PipelineRunType.deploy: _add_deploy_function_step,
504
+ mlrun_pipelines.common.constants.PipelineRunType.run: _add_run_step,
505
+ mlrun_pipelines.common.constants.PipelineRunType.build: _add_deploy_function_step,
506
+ mlrun_pipelines.common.constants.PipelineRunType.deploy: _add_deploy_function_step,
505
507
  }
506
508
 
507
509
  workflow_id = run.status.results.get("workflow_id", None)
@@ -684,6 +686,34 @@ class CustomNotificationPusher(_NotificationPusherBase):
684
686
  db = mlrun.get_run_db()
685
687
  db.push_run_notifications(pipeline_id, project)
686
688
 
689
+ def push_pipeline_start_message_from_client(
690
+ self,
691
+ project: str,
692
+ commit_id: typing.Optional[str] = None,
693
+ pipeline_id: typing.Optional[str] = None,
694
+ has_workflow_url: bool = False,
695
+ ):
696
+ message = f"Workflow started in project {project}"
697
+ if pipeline_id:
698
+ message += f" id={pipeline_id}"
699
+ commit_id = (
700
+ commit_id or os.environ.get("GITHUB_SHA") or os.environ.get("CI_COMMIT_SHA")
701
+ )
702
+ if commit_id:
703
+ message += f", commit={commit_id}"
704
+ if has_workflow_url:
705
+ url = mlrun.utils.helpers.get_workflow_url(project, pipeline_id)
706
+ else:
707
+ url = mlrun.utils.helpers.get_ui_url(project)
708
+ html = ""
709
+ if url:
710
+ html = (
711
+ message
712
+ + f'<div><a href="{url}" target="_blank">click here to view progress</a></div>'
713
+ )
714
+ message = message + f", check progress in {url}"
715
+ self.push(message, "info", custom_html=html)
716
+
687
717
  def push_pipeline_run_results(
688
718
  self,
689
719
  runs: typing.Union[mlrun.lists.RunList, list],
@@ -1,4 +1,4 @@
1
1
  {
2
- "git_commit": "eb1fcda410abefdd86a344d75af69fe49dc5eb07",
3
- "version": "1.8.0-rc17"
2
+ "git_commit": "2d5cc0ee3dacf5d31a3b6a2158cd2e2b4a378b56",
3
+ "version": "1.8.0-rc18"
4
4
  }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mlrun
3
- Version: 1.8.0rc17
3
+ Version: 1.8.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
@@ -51,12 +51,10 @@ Requires-Dist: setuptools>=75.2
51
51
  Requires-Dist: deprecated~=1.2
52
52
  Requires-Dist: jinja2>=3.1.3,~=3.1
53
53
  Requires-Dist: orjson<4,>=3.9.15
54
- Requires-Dist: mlrun-pipelines-kfp-common~=0.3.3
55
- Requires-Dist: mlrun-pipelines-kfp-v1-8~=0.3.3; python_version < "3.11"
54
+ Requires-Dist: mlrun-pipelines-kfp-common~=0.3.5
55
+ Requires-Dist: mlrun-pipelines-kfp-v1-8~=0.3.5; python_version < "3.11"
56
56
  Requires-Dist: docstring_parser~=0.16
57
57
  Requires-Dist: aiosmtplib~=3.0
58
- Requires-Dist: grpcio-tools~=1.48.2; python_version < "3.11"
59
- Requires-Dist: grpcio~=1.48.2; python_version < "3.11"
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"
@@ -121,7 +119,7 @@ Requires-Dist: timelength~=1.1; extra == "api"
121
119
  Requires-Dist: memray~=1.12; sys_platform != "win32" and extra == "api"
122
120
  Requires-Dist: aiosmtplib~=3.0; extra == "api"
123
121
  Requires-Dist: pydantic<2,>=1; extra == "api"
124
- Requires-Dist: mlrun-pipelines-kfp-v1-8[kfp]~=0.3.3; python_version < "3.11" and extra == "api"
122
+ Requires-Dist: mlrun-pipelines-kfp-v1-8[kfp]~=0.3.5; python_version < "3.11" and extra == "api"
125
123
  Provides-Extra: all
126
124
  Requires-Dist: adlfs==2023.9.0; extra == "all"
127
125
  Requires-Dist: aiobotocore<2.16,>=2.5.0; extra == "all"
@@ -210,7 +208,7 @@ Requires-Dist: igz-mgmt~=0.4.1; extra == "complete-api"
210
208
  Requires-Dist: kafka-python~=2.0; extra == "complete-api"
211
209
  Requires-Dist: memray~=1.12; sys_platform != "win32" and extra == "complete-api"
212
210
  Requires-Dist: mlflow~=2.16; extra == "complete-api"
213
- Requires-Dist: mlrun-pipelines-kfp-v1-8[kfp]~=0.3.3; python_version < "3.11" and extra == "complete-api"
211
+ Requires-Dist: mlrun-pipelines-kfp-v1-8[kfp]~=0.3.5; python_version < "3.11" and extra == "complete-api"
214
212
  Requires-Dist: msrest~=0.6.21; extra == "complete-api"
215
213
  Requires-Dist: objgraph~=3.6; extra == "complete-api"
216
214
  Requires-Dist: oss2==2.18.1; extra == "complete-api"
@@ -1,6 +1,6 @@
1
1
  mlrun/__init__.py,sha256=7vuMpUiigXXDrghLRq680LKWy1faC0kQyGCZb_7cwyE,7473
2
2
  mlrun/__main__.py,sha256=o65gXHhmFA9GV_n2mqmAO80nW3MAwo_s7j80IKgCzRE,45949
3
- mlrun/config.py,sha256=TgmglvBiIsG5P_okv0m622duVILyeDVeWRMH0pMtE2w,70571
3
+ mlrun/config.py,sha256=jjjpcnTjmYPc5ptvetYMJ-BPWaOiQW1b9Phdh9A8wo0,70605
4
4
  mlrun/errors.py,sha256=5raKb1PXQpTcIvWQ4sr1qn2IS7P_GT_FydBJ0dXkVuc,8097
5
5
  mlrun/execution.py,sha256=Up9U6xonTElRIaesF9Vej2JK1Isk2AZNK9ke0XcF5Dg,49030
6
6
  mlrun/features.py,sha256=ReBaNGsBYXqcbgI012n-SO_j6oHIbk_Vpv0CGPXbUmo,15842
@@ -225,7 +225,7 @@ mlrun/model_monitoring/tracking_policy.py,sha256=PBIGrUYWrwcE5gwXupBIVzOb0QRRwPJ
225
225
  mlrun/model_monitoring/writer.py,sha256=vbL7bqTyNu8q4bNcebX72sUMybVDAoTWg-CXq4fov3Y,8429
226
226
  mlrun/model_monitoring/applications/__init__.py,sha256=QYvzgCutFdAkzqKPD3mvkX_3c1X4tzd-kW8ojUOE9ic,889
227
227
  mlrun/model_monitoring/applications/_application_steps.py,sha256=NvrYJs6N0Kpp3s_t6s9LkCk5hY7kWYmkVoIhz_ZZx_8,7178
228
- mlrun/model_monitoring/applications/base.py,sha256=vk5cpGqD2UV6j-o4FV6g_2C-RwHEm4ags8uXM9Br5_0,13309
228
+ mlrun/model_monitoring/applications/base.py,sha256=pqmZ67zaslIkcJlsjcUG6TWjbBTD_fYci6rlEvbFttc,15091
229
229
  mlrun/model_monitoring/applications/context.py,sha256=kE_8h7eoUES_bFG2s7nENRziMFB72fJvAZ3KpIBWxOo,15084
230
230
  mlrun/model_monitoring/applications/evidently_base.py,sha256=hRjXuXf6xf8sbjGt9yYfGDUGnvS5rV3W7tkJroF3QJA,5098
231
231
  mlrun/model_monitoring/applications/histogram_data_drift.py,sha256=G26_4gQfcwDZe3S6SIZ4Uc_qyrHAJ6lDTFOQGkbfQR8,14455
@@ -266,7 +266,7 @@ mlrun/platforms/__init__.py,sha256=ZuyeHCHHUxYEoZRmaJqzFSfwhaTyUdBZXMeVp75ql1w,3
266
266
  mlrun/platforms/iguazio.py,sha256=6VBTq8eQ3mzT96tzjYhAtcMQ2VjF4x8LpIPW5DAcX2Q,13749
267
267
  mlrun/projects/__init__.py,sha256=0Krf0WIKfnZa71WthYOg0SoaTodGg3sV_hK3f_OlTPI,1220
268
268
  mlrun/projects/operations.py,sha256=VXUlMrouFTls-I-bMhdN5pPfQ34TR7bFQ-NUSWNvl84,20029
269
- mlrun/projects/pipelines.py,sha256=SOlwMyyPO4jhV61Ja_4yco3OYzhijNQwyoq8g41fTe8,47343
269
+ mlrun/projects/pipelines.py,sha256=vZpyiERUzwPMS7NCC5ghI0KB_DItIddr7MMWGTwLawY,47437
270
270
  mlrun/projects/project.py,sha256=fApkLLMJKPQi-Q69O-pZP5sh6eVsLmBt1KqZUFwcZoM,228225
271
271
  mlrun/runtimes/__init__.py,sha256=J9Sy2HiyMlztNv6VUurMzF5H2XzttNil8nRsWDsqLyg,8923
272
272
  mlrun/runtimes/base.py,sha256=Yt2l7srrXjK783cunBEKH0yQxQZRH8lkedXNOXuLbbo,37841
@@ -303,10 +303,10 @@ mlrun/serving/remote.py,sha256=gxJkj_J3j-sZcVUbUzbAmJafP6t6y4NVFsu0kWmYngA,18818
303
303
  mlrun/serving/routers.py,sha256=A_R34_N6uYw2veK58WpffEp1NsFwq0XbNU9is2Nd7s8,50901
304
304
  mlrun/serving/server.py,sha256=xP88X7_C4mHIk0R7TJBCl-jSl-VomctblipiYepQTaQ,22512
305
305
  mlrun/serving/serving_wrapper.py,sha256=R670-S6PX_d5ER6jiHtRvacuPyFzQH0mEf2K0sBIIOM,836
306
- mlrun/serving/states.py,sha256=m22RTz2Ap05ZlM9ZagxtQkbXNYy7VnopmFvycMyhkgc,67501
306
+ mlrun/serving/states.py,sha256=g6UIeaS6B9v8k4eDMmOxyoB8Gdqm9PiNIkeuzDyTJA8,67565
307
307
  mlrun/serving/utils.py,sha256=k2EIYDWHUGkE-IBI6T0UNT32fw-KySsccIJM_LObI00,4171
308
308
  mlrun/serving/v1_serving.py,sha256=c6J_MtpE-Tqu00-6r4eJOCO6rUasHDal9W2eBIcrl50,11853
309
- mlrun/serving/v2_serving.py,sha256=ViPRigBwb58M6eeRvKa3JyVLd_OVEEtjPVSMRFZ1aPs,21861
309
+ mlrun/serving/v2_serving.py,sha256=B1Vmca2_YidXyit4wuxR6JGooMGdaeZI3Ja90JHCz10,21882
310
310
  mlrun/track/__init__.py,sha256=yVXbT52fXvGKRlc_ByHqIVt7-9L3DRE634RSeQwgXtU,665
311
311
  mlrun/track/tracker.py,sha256=CyTU6Qd3_5GGEJ_hpocOj71wvV65EuFYUjaYEUKAL6Q,3575
312
312
  mlrun/track/tracker_manager.py,sha256=IYBl99I62IC6VCCmG1yt6JoHNOQXa53C4DURJ2sWgio,5726
@@ -327,7 +327,7 @@ mlrun/utils/singleton.py,sha256=p1Y-X0mPSs_At092GS-pZCA8CTR62HOqPU07_ZH6-To,869
327
327
  mlrun/utils/v3io_clients.py,sha256=0aCFiQFBmgdSeLzJr_nEP6SG-zyieSgH8RdtcUq4dc0,1294
328
328
  mlrun/utils/vault.py,sha256=xUiKL17dCXjwQJ33YRzQj0oadUXATlFWPzKKYAESoQk,10447
329
329
  mlrun/utils/notifications/__init__.py,sha256=eUzQDBxSQmMZASRY-YAnYS6tL5801P0wEjycp3Dvoe0,990
330
- mlrun/utils/notifications/notification_pusher.py,sha256=tG1VfdygP2mYe1JkLszufPGeq4zkD27vSqvfMAVMh-M,28172
330
+ mlrun/utils/notifications/notification_pusher.py,sha256=Y30ZG8MDk0oxPPHPjqd9kDxQaOewTuE5uwZhxlM5V-s,29269
331
331
  mlrun/utils/notifications/notification/__init__.py,sha256=9Rfy6Jm8n0LaEDO1VAQb6kIbr7_uVuQhK1pS_abELIY,2581
332
332
  mlrun/utils/notifications/notification/base.py,sha256=VOgrzRakRfjYYBqvkc0cgEC5pl7KMidP7u-TL4HpGCY,5280
333
333
  mlrun/utils/notifications/notification/console.py,sha256=ICbIhOf9fEBJky_3j9TFiKAewDGyDHJr9l4VeT7G2sc,2745
@@ -337,11 +337,11 @@ mlrun/utils/notifications/notification/mail.py,sha256=ZyJ3eqd8simxffQmXzqd3bgbAq
337
337
  mlrun/utils/notifications/notification/slack.py,sha256=NKV4RFiY3gLsS8uPppgniPLyag8zJ9O1VhixoXkM7kw,7108
338
338
  mlrun/utils/notifications/notification/webhook.py,sha256=M-pSBM2VTKVUPRERocjORlH6mKqo1K9ihVL5Qrn2GyM,4789
339
339
  mlrun/utils/version/__init__.py,sha256=7kkrB7hEZ3cLXoWj1kPoDwo4MaswsI2JVOBpbKgPAgc,614
340
- mlrun/utils/version/version.json,sha256=Y-XDXMFgN05nuMsqiCUUOaj573CKHH1Tt1UOh7jsTps,89
340
+ mlrun/utils/version/version.json,sha256=fuKq-DQzj4VU91pAfeQ6y9--Wzwya8hmUG1brhepAzQ,89
341
341
  mlrun/utils/version/version.py,sha256=eEW0tqIAkU9Xifxv8Z9_qsYnNhn3YH7NRAfM-pPLt1g,1878
342
- mlrun-1.8.0rc17.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
343
- mlrun-1.8.0rc17.dist-info/METADATA,sha256=MtbtQTijxHOPGjTOgbRVt20Y5d6CjE9LT67gern78r0,25001
344
- mlrun-1.8.0rc17.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
345
- mlrun-1.8.0rc17.dist-info/entry_points.txt,sha256=1Owd16eAclD5pfRCoJpYC2ZJSyGNTtUr0nCELMioMmU,46
346
- mlrun-1.8.0rc17.dist-info/top_level.txt,sha256=NObLzw3maSF9wVrgSeYBv-fgnHkAJ1kEkh12DLdd5KM,6
347
- mlrun-1.8.0rc17.dist-info/RECORD,,
342
+ mlrun-1.8.0rc18.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
343
+ mlrun-1.8.0rc18.dist-info/METADATA,sha256=LmjjU6uSheHxPOGP4V2giVzBleaHV45fl9bCB_xqyBo,24885
344
+ mlrun-1.8.0rc18.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
345
+ mlrun-1.8.0rc18.dist-info/entry_points.txt,sha256=1Owd16eAclD5pfRCoJpYC2ZJSyGNTtUr0nCELMioMmU,46
346
+ mlrun-1.8.0rc18.dist-info/top_level.txt,sha256=NObLzw3maSF9wVrgSeYBv-fgnHkAJ1kEkh12DLdd5KM,6
347
+ mlrun-1.8.0rc18.dist-info/RECORD,,