mlrun 1.8.0rc39__py3-none-any.whl → 1.8.0rc40__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
@@ -232,6 +232,7 @@ default_config = {
232
232
  "delete_project": "900",
233
233
  "delete_function": "900",
234
234
  "model_endpoint_creation": "600",
235
+ "model_endpoint_tsdb_leftovers": "900",
235
236
  },
236
237
  "runtimes": {"dask": "600"},
237
238
  "push_notifications": "60",
@@ -566,16 +567,16 @@ default_config = {
566
567
  },
567
568
  "application_stream_args": {
568
569
  "v3io": {
569
- "shard_count": 1,
570
+ "shard_count": 4,
570
571
  "retention_period_hours": 24,
571
- "num_workers": 1,
572
+ "num_workers": 4,
572
573
  "min_replicas": 1,
573
574
  "max_replicas": 1,
574
575
  },
575
576
  "kafka": {
576
- "partition_count": 1,
577
+ "partition_count": 4,
577
578
  "replication_factor": 1,
578
- "num_workers": 1,
579
+ "num_workers": 4,
579
580
  "min_replicas": 1,
580
581
  "max_replicas": 1,
581
582
  },
@@ -708,6 +708,9 @@ def _deploy_ingestion_service_v2(
708
708
  function.metadata.name = function.metadata.name or name
709
709
 
710
710
  function.spec.graph = featureset.spec.graph
711
+ function.spec.graph.engine = (
712
+ "async" if featureset.spec.engine == "storey" else "sync"
713
+ )
711
714
  function.spec.parameters = run_config.parameters
712
715
  function.spec.graph_initializer = (
713
716
  "mlrun.feature_store.ingestion.featureset_initializer"
@@ -500,7 +500,7 @@ class MonitoringApplicationController:
500
500
  app_name=app_name,
501
501
  app_stream_type=str(type(app_stream)),
502
502
  )
503
- app_stream.push([data])
503
+ app_stream.push([data], partition_key=endpoint_id)
504
504
 
505
505
  def push_regular_event_to_controller_stream(self) -> None:
506
506
  """
@@ -80,6 +80,17 @@ class TSDBConnector(ABC):
80
80
  :raise mlrun.errors.MLRunRuntimeError: If an error occurred while writing the event.
81
81
  """
82
82
 
83
+ @abstractmethod
84
+ def delete_tsdb_records(
85
+ self, endpoint_ids: list[str], delete_timeout: Optional[int] = None
86
+ ) -> None:
87
+ """
88
+ Delete model endpoint records from the TSDB connector.
89
+ :param endpoint_ids: List of model endpoint unique identifiers.
90
+ :param delete_timeout: The timeout in seconds to wait for the deletion to complete.
91
+ """
92
+ pass
93
+
83
94
  @abstractmethod
84
95
  def delete_tsdb_resources(self):
85
96
  """
@@ -122,26 +122,30 @@ class TDEngineSchema:
122
122
  )
123
123
  return f"DELETE FROM {self.database}.{subtable} WHERE {values};"
124
124
 
125
- def _drop_subtable_query(
125
+ def drop_subtable_query(
126
126
  self,
127
127
  subtable: str,
128
128
  ) -> str:
129
- return f"DROP TABLE if EXISTS {self.database}.{subtable};"
129
+ return f"DROP TABLE if EXISTS {self.database}.`{subtable}`;"
130
130
 
131
131
  def drop_supertable_query(self) -> str:
132
132
  return f"DROP STABLE if EXISTS {self.database}.{self.super_table};"
133
133
 
134
- def _get_subtables_query(
134
+ def _get_subtables_query_by_tag(
135
135
  self,
136
- values: dict[str, Union[str, int, float, datetime.datetime]],
136
+ filter_tag: str,
137
+ filter_values: list[str],
138
+ operator: str = "OR",
137
139
  ) -> str:
138
- values = " AND ".join(
139
- f"{val} LIKE '{values[val]}'" for val in self.tags if val in values
140
- )
141
- if not values:
140
+ if filter_tag not in self.tags:
142
141
  raise mlrun.errors.MLRunInvalidArgumentError(
143
- f"values must contain at least one tag: {self.tags.keys()}"
142
+ f"`filter_tag` must be one of the tags: {self.tags.keys()}"
144
143
  )
144
+
145
+ values = f" {operator} ".join(
146
+ f"{filter_tag} LIKE '{val}'" for val in filter_values
147
+ )
148
+
145
149
  return f"SELECT DISTINCT tbname FROM {self.database}.{self.super_table} WHERE {values};"
146
150
 
147
151
  @staticmethod
@@ -286,6 +286,67 @@ class TDEngineConnector(TSDBConnector):
286
286
  flush_after_seconds=tsdb_batching_timeout_secs,
287
287
  )
288
288
 
289
+ def delete_tsdb_records(
290
+ self, endpoint_ids: list[str], delete_timeout: Optional[int] = None
291
+ ):
292
+ """
293
+ To delete subtables within TDEngine, we first query the subtables names with the provided endpoint_ids.
294
+ Then, we drop each subtable.
295
+ """
296
+ logger.debug(
297
+ "Deleting model endpoint resources using the TDEngine connector",
298
+ project=self.project,
299
+ number_of_endpoints_to_delete=len(endpoint_ids),
300
+ )
301
+
302
+ # Get all subtables with the provided endpoint_ids
303
+ subtables = []
304
+ try:
305
+ for table in self.tables:
306
+ get_subtable_query = self.tables[table]._get_subtables_query_by_tag(
307
+ filter_tag="endpoint_id", filter_values=endpoint_ids
308
+ )
309
+ subtables_result = self.connection.run(
310
+ query=get_subtable_query,
311
+ timeout=self._timeout,
312
+ retries=self._retries,
313
+ )
314
+ subtables.extend([subtable[0] for subtable in subtables_result.data])
315
+ except Exception as e:
316
+ logger.warning(
317
+ "Failed to get subtables for deletion. You may need to delete them manually."
318
+ "These can be found under the following supertables: app_results, "
319
+ "metrics, errors, and predictions.",
320
+ project=self.project,
321
+ error=mlrun.errors.err_to_str(e),
322
+ )
323
+
324
+ # Prepare the drop statements
325
+ drop_statements = []
326
+ for subtable in subtables:
327
+ drop_statements.append(
328
+ self.tables[table].drop_subtable_query(subtable=subtable)
329
+ )
330
+ try:
331
+ self.connection.run(
332
+ statements=drop_statements,
333
+ timeout=delete_timeout or self._timeout,
334
+ retries=self._retries,
335
+ )
336
+ except Exception as e:
337
+ logger.warning(
338
+ "Failed to delete model endpoint resources. You may need to delete them manually. "
339
+ "These can be found under the following supertables: app_results, "
340
+ "metrics, errors, and predictions.",
341
+ project=self.project,
342
+ error=mlrun.errors.err_to_str(e),
343
+ )
344
+ logger.debug(
345
+ "Deleted all model endpoint resources using the TDEngine connector",
346
+ project=self.project,
347
+ number_of_endpoints_to_delete=len(endpoint_ids),
348
+ )
349
+
289
350
  def delete_tsdb_resources(self):
290
351
  """
291
352
  Delete all project resources in the TSDB connector, such as model endpoints data and drift results.
@@ -308,7 +369,7 @@ class TDEngineConnector(TSDBConnector):
308
369
  logger.warning(
309
370
  "Failed to drop TDEngine tables. You may need to drop them manually. "
310
371
  "These can be found under the following supertables: app_results, "
311
- "metrics, and predictions.",
372
+ "metrics, errors, and predictions.",
312
373
  project=self.project,
313
374
  error=mlrun.errors.err_to_str(e),
314
375
  )
@@ -428,6 +428,40 @@ class V3IOTSDBConnector(TSDBConnector):
428
428
  store, _, _ = mlrun.store_manager.get_or_create_store(tsdb_path)
429
429
  store.rm(tsdb_path, recursive=True)
430
430
 
431
+ def delete_tsdb_records(
432
+ self, endpoint_ids: list[str], delete_timeout: Optional[int] = None
433
+ ):
434
+ logger.debug(
435
+ "Deleting model endpoints resources using the V3IO TSDB connector",
436
+ project=self.project,
437
+ number_of_endpoints_to_delete=len(endpoint_ids),
438
+ )
439
+ tables = mm_schemas.V3IOTSDBTables.list()
440
+
441
+ # Split the endpoint ids into chunks to avoid exceeding the v3io-engine filter-expression limit
442
+ for i in range(0, len(endpoint_ids), V3IO_MEPS_LIMIT):
443
+ endpoint_id_chunk = endpoint_ids[i : i + V3IO_MEPS_LIMIT]
444
+ filter_query = f"endpoint_id IN({str(endpoint_id_chunk)[1:-1]}) "
445
+ for table in tables:
446
+ try:
447
+ self.frames_client.delete(
448
+ backend=_TSDB_BE,
449
+ table=self.tables[table],
450
+ filter=filter_query,
451
+ start="0",
452
+ )
453
+ except Exception as e:
454
+ logger.warning(
455
+ f"Failed to delete TSDB records for the provided endpoints from table '{table}'",
456
+ error=mlrun.errors.err_to_str(e),
457
+ project=self.project,
458
+ )
459
+ logger.debug(
460
+ "Deleted all model endpoint resources using the V3IO connector",
461
+ project=self.project,
462
+ number_of_endpoints_to_delete=len(endpoint_ids),
463
+ )
464
+
431
465
  def get_model_endpoint_real_time_metrics(
432
466
  self, endpoint_id: str, metrics: list[str], start: str, end: str
433
467
  ) -> dict[str, list[tuple[str, float]]]:
@@ -1052,12 +1086,12 @@ class V3IOTSDBConnector(TSDBConnector):
1052
1086
  )
1053
1087
  add_metric(
1054
1088
  "avg_latency",
1055
- "max(result_status)",
1056
- drift_status_res,
1089
+ "avg(latency)",
1090
+ avg_latency_res,
1057
1091
  )
1058
1092
  add_metric(
1059
1093
  "result_status",
1060
- "avg(latency)",
1061
- avg_latency_res,
1094
+ "max(result_status)",
1095
+ drift_status_res,
1062
1096
  )
1063
1097
  return list(model_endpoint_objects_by_uid.values())
@@ -277,7 +277,7 @@ class ServingRuntime(RemoteRuntime):
277
277
 
278
278
  :param topology: - graph topology, router or flow
279
279
  :param class_name: - optional for router, router class name/path or router object
280
- :param engine: - optional for flow, sync or async engine (default to async)
280
+ :param engine: - optional for flow, sync or async engine
281
281
  :param exist_ok: - allow overriding existing topology
282
282
  :param class_args: - optional, router/flow class init args
283
283
 
@@ -1,4 +1,4 @@
1
1
  {
2
- "git_commit": "c4d1cedcb732b6108ad1b9a2e33df82ba9114fa1",
3
- "version": "1.8.0-rc39"
2
+ "git_commit": "5be12fb6a18e9bc2b1ba338c1372aa59327781f8",
3
+ "version": "1.8.0-rc40"
4
4
  }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: mlrun
3
- Version: 1.8.0rc39
3
+ Version: 1.8.0rc40
4
4
  Summary: Tracking and config of machine learning runs
5
5
  Home-page: https://github.com/mlrun/mlrun
6
6
  Author: Yaron Haviv
@@ -52,7 +52,7 @@ 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
54
  Requires-Dist: mlrun-pipelines-kfp-common~=0.3.12
55
- Requires-Dist: mlrun-pipelines-kfp-v1-8~=0.3.8; python_version < "3.11"
55
+ Requires-Dist: mlrun-pipelines-kfp-v1-8~=0.3.9; python_version < "3.11"
56
56
  Requires-Dist: docstring_parser~=0.16
57
57
  Requires-Dist: aiosmtplib~=3.0
58
58
  Provides-Extra: s3
@@ -119,7 +119,7 @@ Requires-Dist: timelength~=1.1; extra == "api"
119
119
  Requires-Dist: memray~=1.12; sys_platform != "win32" and extra == "api"
120
120
  Requires-Dist: aiosmtplib~=3.0; extra == "api"
121
121
  Requires-Dist: pydantic<2,>=1; extra == "api"
122
- Requires-Dist: mlrun-pipelines-kfp-v1-8[kfp]~=0.3.8; python_version < "3.11" and extra == "api"
122
+ Requires-Dist: mlrun-pipelines-kfp-v1-8[kfp]~=0.3.9; python_version < "3.11" and extra == "api"
123
123
  Requires-Dist: grpcio~=1.70.0; extra == "api"
124
124
  Provides-Extra: all
125
125
  Requires-Dist: adlfs==2023.9.0; extra == "all"
@@ -215,7 +215,7 @@ Requires-Dist: igz-mgmt~=0.4.1; extra == "complete-api"
215
215
  Requires-Dist: kafka-python~=2.0; extra == "complete-api"
216
216
  Requires-Dist: memray~=1.12; sys_platform != "win32" and extra == "complete-api"
217
217
  Requires-Dist: mlflow~=2.16; extra == "complete-api"
218
- Requires-Dist: mlrun-pipelines-kfp-v1-8[kfp]~=0.3.8; python_version < "3.11" and extra == "complete-api"
218
+ Requires-Dist: mlrun-pipelines-kfp-v1-8[kfp]~=0.3.9; python_version < "3.11" and extra == "complete-api"
219
219
  Requires-Dist: msrest~=0.6.21; extra == "complete-api"
220
220
  Requires-Dist: objgraph~=3.6; extra == "complete-api"
221
221
  Requires-Dist: oss2==2.18.1; extra == "complete-api"
@@ -1,6 +1,6 @@
1
1
  mlrun/__init__.py,sha256=Cqm9U9eCEdLpMejhU2BEhubu0mHL71igJJIwYa738EA,7450
2
2
  mlrun/__main__.py,sha256=0NDzPf9VFRO8KFfGgb8mkGUPIDS285aASV8Hbxs-ND0,45920
3
- mlrun/config.py,sha256=w3RCAJUINuiqTqFTkswK-L4Jg33WXyWUicVYbV44ApI,71390
3
+ mlrun/config.py,sha256=5b3y_cZIYRl_OTZ1CR7bcwDu1dHKbeAuP2nup88pLjI,71446
4
4
  mlrun/errors.py,sha256=LkcbXTLANGdsgo2CRX2pdbyNmt--lMsjGv0XZMgP-Nc,8222
5
5
  mlrun/execution.py,sha256=FUktsD3puSFjc3LZJU35b-OmFBrBPBNntViCLQVuwnk,50008
6
6
  mlrun/features.py,sha256=ReBaNGsBYXqcbgI012n-SO_j6oHIbk_Vpv0CGPXbUmo,15842
@@ -113,7 +113,7 @@ mlrun/db/factory.py,sha256=yP2vVmveUE7LYTCHbS6lQIxP9rW--zdISWuPd_I3d_4,2111
113
113
  mlrun/db/httpdb.py,sha256=O1PCDOfax3YdwAlYKj-nALcBVTBM9EHWQyhQwNlJS44,231559
114
114
  mlrun/db/nopdb.py,sha256=kjvoaWWc4OmQ7AdQKomtRzviJy1_dK3jdMCJNkic34o,27223
115
115
  mlrun/feature_store/__init__.py,sha256=8vLyiRgLyfzn5yjd46mjZ__OXm5MiDcZL5nQk63micc,1290
116
- mlrun/feature_store/api.py,sha256=ZjukeKYxqEmQvT7y1aTogmN4hHujPrjrcWoGWr8rxFg,36880
116
+ mlrun/feature_store/api.py,sha256=YBnsPjd6YFy9cJfJNqzwAqYYpoGgFzi6Mbt4NgYSVbE,36987
117
117
  mlrun/feature_store/common.py,sha256=Z7USI-d1fo0iwBMsqMBtJflJfyuiV3BLoDXQPSAoBAs,12826
118
118
  mlrun/feature_store/feature_set.py,sha256=lakkuKYAvYDJKDTE0xJa5n1nEipMPwpLki-J3CMk0mQ,56221
119
119
  mlrun/feature_store/feature_vector.py,sha256=9EJXdnPklwKdkYDKV0hxByIjd59K6R2S-DnP7jZlwoY,44602
@@ -218,7 +218,7 @@ mlrun/launcher/local.py,sha256=775HY-8S9LFUX5ubGXrLO0N1lVh8bn-DHFmNYuNqQPA,11451
218
218
  mlrun/launcher/remote.py,sha256=rLJW4UAnUT5iUb4BsGBOAV3K4R29a0X4lFtRkVKlyYU,7709
219
219
  mlrun/model_monitoring/__init__.py,sha256=ELy7njEtZnz09Dc6PGZSFFEGtnwI15bJNWM3Pj4_YIs,753
220
220
  mlrun/model_monitoring/api.py,sha256=nkNlBq_X12tGgs4rbVutzq-ce9P49zAyg_hvffwmz7I,27544
221
- mlrun/model_monitoring/controller.py,sha256=ulYECjgF9xgKf-j4hysZWLz3qYReegxqFrZvVJd5zGk,29787
221
+ mlrun/model_monitoring/controller.py,sha256=Kml08GtbNhln_r9urJxxJxTtefcgXwdRQLu4v5-L3Bg,29814
222
222
  mlrun/model_monitoring/features_drift_table.py,sha256=c6GpKtpOJbuT1u5uMWDL_S-6N4YPOmlktWMqPme3KFY,25308
223
223
  mlrun/model_monitoring/helpers.py,sha256=Q4vcc7x41lCJdFQIE8UFPY0WIQ8a-4tSGhziMA4ib4w,22003
224
224
  mlrun/model_monitoring/stream_processing.py,sha256=4M0H4txMlsC2Q5iKTPp992KWoNPAJjPHj9rqWhXbl8w,33321
@@ -236,15 +236,15 @@ mlrun/model_monitoring/db/__init__.py,sha256=r47xPGZpIfMuv8J3PQCZTSqVPMhUta4sSJC
236
236
  mlrun/model_monitoring/db/_schedules.py,sha256=AKyCJBAt0opNE3K3pg2TjCoD_afk1LKw5TY88rLQ2VA,6097
237
237
  mlrun/model_monitoring/db/_stats.py,sha256=VVMWLMqG3Us3ozBkLaokJF22Ewv8WKmVE1-OvS_g9vA,6943
238
238
  mlrun/model_monitoring/db/tsdb/__init__.py,sha256=GRaQ9b4zNnbJIugRUwR2t5B1nNTtvPPf9RdNLTHRLKA,4645
239
- mlrun/model_monitoring/db/tsdb/base.py,sha256=iT7ahaCW_4_dCwF4TiXrodTg5fx1JZNMDdhAvjQ-pJk,26590
239
+ mlrun/model_monitoring/db/tsdb/base.py,sha256=ayWMWmpm35mDVTEP9AvU-P5_5rBAkBO1hULajkgt0Vw,26995
240
240
  mlrun/model_monitoring/db/tsdb/helpers.py,sha256=0oUXc4aUkYtP2SGP6jTb3uPPKImIUsVsrb9otX9a7O4,1189
241
241
  mlrun/model_monitoring/db/tsdb/tdengine/__init__.py,sha256=vgBdsKaXUURKqIf3M0y4sRatmSVA4CQiJs7J5dcVBkQ,620
242
- mlrun/model_monitoring/db/tsdb/tdengine/schemas.py,sha256=qfKDUZhgteL0mp2A1aP1iMmcthgUMKmZqMUidZjQktQ,12649
242
+ mlrun/model_monitoring/db/tsdb/tdengine/schemas.py,sha256=EslhaR65jfeNdD5Ibk-3Hb4e5r5qYPfHb9rTChX3sG0,12689
243
243
  mlrun/model_monitoring/db/tsdb/tdengine/stream_graph_steps.py,sha256=Uadj0UvAmln2MxDWod-kAzau1uNlqZh981rPhbUH_5M,2857
244
- mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connector.py,sha256=h_7asngmZ2ZRGSsRRn5mWemYVPKd2bxPzNQ7DF1NTik,35270
244
+ mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connector.py,sha256=wjoxlNUFoHgMiG7yAMNsk1_1scca9EmMlM2Jp4Qv00c,37796
245
245
  mlrun/model_monitoring/db/tsdb/v3io/__init__.py,sha256=aL3bfmQsUQ-sbvKGdNihFj8gLCK3mSys0qDcXtYOwgc,616
246
246
  mlrun/model_monitoring/db/tsdb/v3io/stream_graph_steps.py,sha256=_-zo9relCDtjGgievxAcAP9gVN9nDWs8BzGtFwTjb9M,6284
247
- mlrun/model_monitoring/db/tsdb/v3io/v3io_connector.py,sha256=foxYWx7OjOfat2SHmzYrG8bIfaQ5NDnBtpDZua_NVGE,41141
247
+ mlrun/model_monitoring/db/tsdb/v3io/v3io_connector.py,sha256=8gzw69Y9mKFOAW1-_o1gr0SXgBbY9QhOhWdMUR2MdqM,42633
248
248
  mlrun/model_monitoring/metrics/__init__.py,sha256=6CsTXAxeLbbf8yfCADTaxmiavqwrLEdYFJ-qc5kgDAY,569
249
249
  mlrun/model_monitoring/metrics/histogram_distance.py,sha256=E9_WIl2vd6qNvoHVHoFcnuQk3ekbFWOdi8aU7sHrfk4,4724
250
250
  mlrun/package/__init__.py,sha256=v7VDyK9kDOOuDvFo4oiGV2fx-vM1KL7fdN9pGLakhUQ,7008
@@ -293,7 +293,7 @@ mlrun/runtimes/nuclio/__init__.py,sha256=gx1kizzKv8pGT5TNloN1js1hdbxqDw3rM90sLVY
293
293
  mlrun/runtimes/nuclio/api_gateway.py,sha256=vH9ClKVP4Mb24rvA67xPuAvAhX-gAv6vVtjVxyplhdc,26969
294
294
  mlrun/runtimes/nuclio/function.py,sha256=1M8SdMaPhuQ7yqLegYfOcIlseXPj4a18MsXUNYFdD-c,52901
295
295
  mlrun/runtimes/nuclio/nuclio.py,sha256=sLK8KdGO1LbftlL3HqPZlFOFTAAuxJACZCVl1c0Ha6E,2942
296
- mlrun/runtimes/nuclio/serving.py,sha256=rkNR-sJ1WKS5wEOsYNQ34pRzIENWz81QmZnXr9AuLg4,32685
296
+ mlrun/runtimes/nuclio/serving.py,sha256=1QPza0oG63bt3Bpib2VGhDcW3PNEjjsBUzIYBhiYR0s,32666
297
297
  mlrun/runtimes/nuclio/application/__init__.py,sha256=rRs5vasy_G9IyoTpYIjYDafGoL6ifFBKgBtsXn31Atw,614
298
298
  mlrun/runtimes/nuclio/application/application.py,sha256=VPX-ruYQJ7-7yd5c2sWdF4U5JCGSS3kYjUfOgev6l_Y,29186
299
299
  mlrun/runtimes/nuclio/application/reverse_proxy.go,sha256=JIIYae6bXzCLf3jXuu49KWPQYoXr_FDQ2Rbo1OWKAd0,3150
@@ -339,11 +339,11 @@ mlrun/utils/notifications/notification/mail.py,sha256=ZyJ3eqd8simxffQmXzqd3bgbAq
339
339
  mlrun/utils/notifications/notification/slack.py,sha256=eQvmctTh6wIG5xVOesLLV9S1-UUCu5UEQ9JIJOor3ts,7183
340
340
  mlrun/utils/notifications/notification/webhook.py,sha256=NeyIMSBojjjTJaUHmPbxMByp34GxYkl1-16NqzU27fU,4943
341
341
  mlrun/utils/version/__init__.py,sha256=7kkrB7hEZ3cLXoWj1kPoDwo4MaswsI2JVOBpbKgPAgc,614
342
- mlrun/utils/version/version.json,sha256=F3vIRDZtTlQYXdcSexB5AGU_TnSiczO86mOuVqEoUbA,89
342
+ mlrun/utils/version/version.json,sha256=Cdc9Q-3lkO4yeRDmcvJyXgOWmZmzzI1l9Ip-ZxfgXV8,89
343
343
  mlrun/utils/version/version.py,sha256=eEW0tqIAkU9Xifxv8Z9_qsYnNhn3YH7NRAfM-pPLt1g,1878
344
- mlrun-1.8.0rc39.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
345
- mlrun-1.8.0rc39.dist-info/METADATA,sha256=Jd7RlNsIDL-6kxcM4YfZZftiDX9MHUF7K78XFHQkQ6Q,25986
346
- mlrun-1.8.0rc39.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
347
- mlrun-1.8.0rc39.dist-info/entry_points.txt,sha256=1Owd16eAclD5pfRCoJpYC2ZJSyGNTtUr0nCELMioMmU,46
348
- mlrun-1.8.0rc39.dist-info/top_level.txt,sha256=NObLzw3maSF9wVrgSeYBv-fgnHkAJ1kEkh12DLdd5KM,6
349
- mlrun-1.8.0rc39.dist-info/RECORD,,
344
+ mlrun-1.8.0rc40.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
345
+ mlrun-1.8.0rc40.dist-info/METADATA,sha256=3MFGiFDQ0SoRStwHVzIxjQ4gVaki5garhVnpbPwxq2g,25986
346
+ mlrun-1.8.0rc40.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
347
+ mlrun-1.8.0rc40.dist-info/entry_points.txt,sha256=1Owd16eAclD5pfRCoJpYC2ZJSyGNTtUr0nCELMioMmU,46
348
+ mlrun-1.8.0rc40.dist-info/top_level.txt,sha256=NObLzw3maSF9wVrgSeYBv-fgnHkAJ1kEkh12DLdd5KM,6
349
+ mlrun-1.8.0rc40.dist-info/RECORD,,