mlrun 1.6.3__py3-none-any.whl → 1.6.3rc4__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
@@ -1376,14 +1376,14 @@ def read_env(env=None, prefix=env_prefix):
1376
1376
  if log_formatter_name := config.get("log_formatter"):
1377
1377
  import mlrun.utils.logger
1378
1378
 
1379
- log_formatter = mlrun.utils.resolve_formatter_by_kind(
1379
+ log_formatter = mlrun.utils.create_formatter_instance(
1380
1380
  mlrun.utils.FormatterKinds(log_formatter_name)
1381
1381
  )
1382
1382
  current_handler = mlrun.utils.logger.get_handler("default")
1383
1383
  current_formatter_name = current_handler.formatter.__class__.__name__
1384
- desired_formatter_name = log_formatter.__name__
1384
+ desired_formatter_name = log_formatter.__class__.__name__
1385
1385
  if current_formatter_name != desired_formatter_name:
1386
- current_handler.setFormatter(log_formatter())
1386
+ current_handler.setFormatter(log_formatter)
1387
1387
 
1388
1388
  # The default function pod resource values are of type str; however, when reading from environment variable numbers,
1389
1389
  # it converts them to type int if contains only number, so we want to convert them to str.
mlrun/db/httpdb.py CHANGED
@@ -137,6 +137,8 @@ class HTTPRunDB(RunDBInterface):
137
137
  self.base_url = base_url
138
138
  username = parsed_url.username or config.httpdb.user
139
139
  password = parsed_url.password or config.httpdb.password
140
+ self.user = username
141
+ self.password = password
140
142
  self.token_provider = None
141
143
 
142
144
  if config.auth_with_client_id.enabled:
@@ -154,9 +156,6 @@ class HTTPRunDB(RunDBInterface):
154
156
  if token:
155
157
  self.token_provider = StaticTokenProvider(token)
156
158
 
157
- self.user = username
158
- self.password = password
159
-
160
159
  def __repr__(self):
161
160
  cls = self.__class__.__name__
162
161
  return f"{cls}({self.base_url!r})"
@@ -944,7 +943,6 @@ class HTTPRunDB(RunDBInterface):
944
943
  kind: str = None,
945
944
  category: Union[str, mlrun.common.schemas.ArtifactCategories] = None,
946
945
  tree: str = None,
947
- producer_uri: str = None,
948
946
  ) -> ArtifactList:
949
947
  """List artifacts filtered by various parameters.
950
948
 
@@ -971,12 +969,9 @@ class HTTPRunDB(RunDBInterface):
971
969
  :param best_iteration: Returns the artifact which belongs to the best iteration of a given run, in the case of
972
970
  artifacts generated from a hyper-param run. If only a single iteration exists, will return the artifact
973
971
  from that iteration. If using ``best_iter``, the ``iter`` parameter must not be used.
974
- :param kind: Return artifacts of the requested kind.
975
- :param category: Return artifacts of the requested category.
976
- :param tree: Return artifacts of the requested tree.
977
- :param producer_uri: Return artifacts produced by the requested producer URI. Producer URI usually
978
- points to a run and is used to filter artifacts by the run that produced them when the artifact producer id
979
- is a workflow id (artifact was created as part of a workflow).
972
+ :param kind: Return artifacts of the requested kind.
973
+ :param category: Return artifacts of the requested category.
974
+ :param tree: Return artifacts of the requested tree.
980
975
  """
981
976
 
982
977
  project = project or config.default_project
@@ -995,7 +990,6 @@ class HTTPRunDB(RunDBInterface):
995
990
  "category": category,
996
991
  "tree": tree,
997
992
  "format": mlrun.common.schemas.ArtifactsFormat.full.value,
998
- "producer_uri": producer_uri,
999
993
  }
1000
994
  error = "list artifacts"
1001
995
  endpoint_path = f"projects/{project}/artifacts"
mlrun/lists.py CHANGED
@@ -36,7 +36,6 @@ list_header = [
36
36
  "parameters",
37
37
  "results",
38
38
  "artifacts",
39
- "artifact_uris",
40
39
  "error",
41
40
  ]
42
41
 
@@ -64,7 +63,6 @@ class RunList(list):
64
63
  get_in(run, "spec.parameters", ""),
65
64
  get_in(run, "status.results", ""),
66
65
  get_in(run, "status.artifacts", []),
67
- get_in(run, "status.artifact_uris", {}),
68
66
  get_in(run, "status.error", ""),
69
67
  ]
70
68
  if extend_iterations and iterations:
mlrun/model.py CHANGED
@@ -1058,7 +1058,6 @@ class RunStatus(ModelObj):
1058
1058
  ui_url=None,
1059
1059
  reason: str = None,
1060
1060
  notifications: Dict[str, Notification] = None,
1061
- artifact_uris: dict[str, str] = None,
1062
1061
  ):
1063
1062
  self.state = state or "created"
1064
1063
  self.status_text = status_text
@@ -1073,8 +1072,6 @@ class RunStatus(ModelObj):
1073
1072
  self.ui_url = ui_url
1074
1073
  self.reason = reason
1075
1074
  self.notifications = notifications or {}
1076
- # Artifact key -> URI mapping, since the full artifacts are not stored in the runs DB table
1077
- self.artifact_uris = artifact_uris or {}
1078
1075
 
1079
1076
  def is_failed(self) -> Optional[bool]:
1080
1077
  """
@@ -1387,10 +1384,8 @@ class RunObject(RunTemplate):
1387
1384
  iter=self.metadata.iteration,
1388
1385
  )
1389
1386
  if run:
1390
- run_status = run.get("status", {})
1391
- # Artifacts are not stored in the DB, so we need to preserve them here
1392
- run_status["artifacts"] = self.status.artifacts
1393
- self.status = RunStatus.from_dict(run_status)
1387
+ self.status = RunStatus.from_dict(run.get("status", {}))
1388
+ self.status.from_dict(run.get("status", {}))
1394
1389
  return self
1395
1390
 
1396
1391
  def show(self):
mlrun/render.py CHANGED
@@ -134,7 +134,7 @@ def artifacts_html(
134
134
 
135
135
  if not attribute_value:
136
136
  mlrun.utils.logger.warning(
137
- f"Artifact required attribute {attribute_name} is missing, omitting from output",
137
+ "Artifact is incomplete, omitting from output (most likely due to a failed artifact logging)",
138
138
  artifact_key=key,
139
139
  )
140
140
  continue
@@ -404,21 +404,12 @@ def runs_to_html(
404
404
  df.drop("labels", axis=1, inplace=True)
405
405
  df.drop("inputs", axis=1, inplace=True)
406
406
  df.drop("artifacts", axis=1, inplace=True)
407
- df.drop("artifact_uris", axis=1, inplace=True)
408
407
  else:
409
408
  df["labels"] = df["labels"].apply(dict_html)
410
409
  df["inputs"] = df["inputs"].apply(inputs_html)
411
- if df["artifacts"][0]:
412
- df["artifacts"] = df["artifacts"].apply(
413
- lambda artifacts: artifacts_html(artifacts, "target_path"),
414
- )
415
- df.drop("artifact_uris", axis=1, inplace=True)
416
- elif df["artifact_uris"][0]:
417
- df["artifact_uris"] = df["artifact_uris"].apply(dict_html)
418
- df.drop("artifacts", axis=1, inplace=True)
419
- else:
420
- df.drop("artifacts", axis=1, inplace=True)
421
- df.drop("artifact_uris", axis=1, inplace=True)
410
+ df["artifacts"] = df["artifacts"].apply(
411
+ lambda artifacts: artifacts_html(artifacts, "target_path"),
412
+ )
422
413
 
423
414
  def expand_error(x):
424
415
  if x["state"] == "error":
mlrun/utils/async_http.py CHANGED
@@ -24,7 +24,7 @@ from aiohttp_retry import ExponentialRetry, RequestParams, RetryClient, RetryOpt
24
24
  from aiohttp_retry.client import _RequestContext
25
25
 
26
26
  from mlrun.config import config
27
- from mlrun.errors import err_to_str, raise_for_status
27
+ from mlrun.errors import err_to_str
28
28
 
29
29
  from .helpers import logger as mlrun_logger
30
30
 
@@ -48,21 +48,12 @@ class AsyncClientWithRetry(RetryClient):
48
48
  *args,
49
49
  **kwargs,
50
50
  ):
51
- # do not retry on PUT / PATCH as they might have side effects (not truly idempotent)
52
- blacklisted_methods = (
53
- blacklisted_methods
54
- if blacklisted_methods is not None
55
- else [
56
- "POST",
57
- "PUT",
58
- "PATCH",
59
- ]
60
- )
61
51
  super().__init__(
62
52
  *args,
63
53
  retry_options=ExponentialRetryOverride(
64
54
  retry_on_exception=retry_on_exception,
65
- blacklisted_methods=blacklisted_methods,
55
+ # do not retry on PUT / PATCH as they might have side effects (not truly idempotent)
56
+ blacklisted_methods=blacklisted_methods or ["POST", "PUT", "PATCH"],
66
57
  attempts=max_retries,
67
58
  statuses=retry_on_status_codes,
68
59
  factor=retry_backoff_factor,
@@ -74,12 +65,6 @@ class AsyncClientWithRetry(RetryClient):
74
65
  **kwargs,
75
66
  )
76
67
 
77
- def methods_blacklist_update_required(self, new_blacklist: str):
78
- self._retry_options: ExponentialRetryOverride
79
- return set(self._retry_options.blacklisted_methods).difference(
80
- set(new_blacklist)
81
- )
82
-
83
68
  def _make_requests(
84
69
  self,
85
70
  params_list: List[RequestParams],
@@ -190,7 +175,7 @@ class _CustomRequestContext(_RequestContext):
190
175
  last_attempt = current_attempt == self._retry_options.attempts
191
176
  if self._is_status_code_ok(response.status) or last_attempt:
192
177
  if self._raise_for_status:
193
- raise_for_status(response)
178
+ response.raise_for_status()
194
179
 
195
180
  self._response = response
196
181
  return response
@@ -292,11 +277,6 @@ class _CustomRequestContext(_RequestContext):
292
277
  if isinstance(exc.os_error, exc_type):
293
278
  return
294
279
  if exc.__cause__:
295
- # If the cause exception is retriable, return, otherwise, raise the original exception
296
- try:
297
- self.verify_exception_type(exc.__cause__)
298
- except Exception:
299
- raise exc
300
- return
280
+ return self.verify_exception_type(exc.__cause__)
301
281
  else:
302
282
  raise exc
mlrun/utils/logger.py CHANGED
@@ -14,7 +14,6 @@
14
14
 
15
15
  import json
16
16
  import logging
17
- import typing
18
17
  from enum import Enum
19
18
  from sys import stdout
20
19
  from traceback import format_exception
@@ -187,15 +186,11 @@ class FormatterKinds(Enum):
187
186
  JSON = "json"
188
187
 
189
188
 
190
- def resolve_formatter_by_kind(
191
- formatter_kind: FormatterKinds,
192
- ) -> typing.Type[
193
- typing.Union[HumanReadableFormatter, HumanReadableExtendedFormatter, JSONFormatter]
194
- ]:
189
+ def create_formatter_instance(formatter_kind: FormatterKinds) -> logging.Formatter:
195
190
  return {
196
- FormatterKinds.HUMAN: HumanReadableFormatter,
197
- FormatterKinds.HUMAN_EXTENDED: HumanReadableExtendedFormatter,
198
- FormatterKinds.JSON: JSONFormatter,
191
+ FormatterKinds.HUMAN: HumanReadableFormatter(),
192
+ FormatterKinds.HUMAN_EXTENDED: HumanReadableExtendedFormatter(),
193
+ FormatterKinds.JSON: JSONFormatter(),
199
194
  }[formatter_kind]
200
195
 
201
196
 
@@ -213,11 +208,11 @@ def create_logger(
213
208
  logger_instance = Logger(level, name=name, propagate=False)
214
209
 
215
210
  # resolve formatter
216
- formatter_instance = resolve_formatter_by_kind(
211
+ formatter_instance = create_formatter_instance(
217
212
  FormatterKinds(formatter_kind.lower())
218
213
  )
219
214
 
220
215
  # set handler
221
- logger_instance.set_handler("default", stream or stdout, formatter_instance())
216
+ logger_instance.set_handler("default", stream or stdout, formatter_instance)
222
217
 
223
218
  return logger_instance
@@ -1,4 +1,4 @@
1
1
  {
2
- "git_commit": "43c50e9853e34113270e42ef4b4ccc1b0cdb28cb",
3
- "version": "1.6.3"
2
+ "git_commit": "dbb53dc1e528cfa04c02960e9de29fcad530c9ed",
3
+ "version": "1.6.3-rc4"
4
4
  }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mlrun
3
- Version: 1.6.3
3
+ Version: 1.6.3rc4
4
4
  Summary: Tracking and config of machine learning runs
5
5
  Home-page: https://github.com/mlrun/mlrun
6
6
  Author: Yaron Haviv
@@ -26,7 +26,7 @@ Requires-Dist: GitPython >=3.1.41,~=3.1
26
26
  Requires-Dist: aiohttp ~=3.9
27
27
  Requires-Dist: aiohttp-retry ~=2.8
28
28
  Requires-Dist: click ~=8.1
29
- Requires-Dist: kfp >=1.8.14,~=1.8
29
+ Requires-Dist: kfp ~=1.8
30
30
  Requires-Dist: nest-asyncio ~=1.0
31
31
  Requires-Dist: ipython ~=8.10
32
32
  Requires-Dist: nuclio-jupyter ~=0.9.15
@@ -89,7 +89,6 @@ Requires-Dist: sqlalchemy ~=1.4 ; extra == 'api'
89
89
  Requires-Dist: pymysql ~=1.0 ; extra == 'api'
90
90
  Requires-Dist: alembic ~=1.9 ; extra == 'api'
91
91
  Requires-Dist: timelength ~=1.1 ; extra == 'api'
92
- Requires-Dist: memray ~=1.12 ; extra == 'api'
93
92
  Provides-Extra: azure-blob-storage
94
93
  Requires-Dist: msrest ~=0.6.21 ; extra == 'azure-blob-storage'
95
94
  Requires-Dist: azure-core ~=1.24 ; extra == 'azure-blob-storage'
@@ -144,7 +143,6 @@ Requires-Dist: graphviz ~=0.20.0 ; extra == 'complete-api'
144
143
  Requires-Dist: humanfriendly ~=10.0 ; extra == 'complete-api'
145
144
  Requires-Dist: igz-mgmt ==0.1.0 ; extra == 'complete-api'
146
145
  Requires-Dist: kafka-python ~=2.0 ; extra == 'complete-api'
147
- Requires-Dist: memray ~=1.12 ; extra == 'complete-api'
148
146
  Requires-Dist: mlflow ~=2.8 ; extra == 'complete-api'
149
147
  Requires-Dist: msrest ~=0.6.21 ; extra == 'complete-api'
150
148
  Requires-Dist: objgraph ~=3.6 ; extra == 'complete-api'
@@ -1,14 +1,14 @@
1
1
  mlrun/__init__.py,sha256=o9dHUfVFADfsi6GnOPLr2OkfkHdPvOnA7rkoECen0-I,7248
2
2
  mlrun/__main__.py,sha256=zd-o0SkFH69HhIWKhqXnNURsrtpIcOJYYq50JfAxW7k,49234
3
- mlrun/config.py,sha256=4scerZD_BdeDIOXJw9xrXCmpSBHxEvuc7R9QZpAb5EA,63789
3
+ mlrun/config.py,sha256=U8La3z_0ac5d71qq6qydUsxLYiBPfEZOf-i-8SdKA7c,63797
4
4
  mlrun/errors.py,sha256=YdUtkN3qJ6yrseNygmKxmSWOfQ_RdKBhRxwwyMlTQCM,7106
5
5
  mlrun/execution.py,sha256=tgp6PcujZvGhDDVzPNs32YH_JNzaxfSd25yeuLwmjzg,40880
6
6
  mlrun/features.py,sha256=UQQ2uh5Xh9XsMGiYBqh3bKgDhOHANjv1gQgWyId9qQE,15624
7
7
  mlrun/k8s_utils.py,sha256=-6egUEZNPhzOxJ2gFytubvQvCYU9nPPg5Yn0zsTK-NQ,7065
8
8
  mlrun/kfpops.py,sha256=VgvS_4DappCPHzV7057SbraBTbF2mn7zZ7iPAaks3KU,30493
9
- mlrun/lists.py,sha256=sEEfl_mw_oVUD1dfkvQZIkJ8q7LJKJPDrb5B_Dg85nY,8388
10
- mlrun/model.py,sha256=EbSxpwtNFkqodTwM_StcmDG5MFSG50ZuDMhqzIyzLmM,64896
11
- mlrun/render.py,sha256=pfAky9fTHRbINs93_Km_hEdVxmra9RA8BwqMepPbiuE,13451
9
+ mlrun/lists.py,sha256=JMc4Ch4wQxD_B9zbrE3JZwXD8cCYWLqHb1FQXWoaGzM,8310
10
+ mlrun/model.py,sha256=Ax3h8A0-vUp8hRDNgttQuLoxaB0_8X8-yjpTLbBhirQ,64579
11
+ mlrun/render.py,sha256=_Jrtqw54AkvUZDWK5ORGUQWnGewREh_lQnUQWuCkTV4,13016
12
12
  mlrun/run.py,sha256=gyxYJqVCBsZxp0_HWAG5_lwi2_KPqcxy6un5ZLw_-2Q,42456
13
13
  mlrun/secrets.py,sha256=m7jM8fdjGLR-j9Vx-08eNmtOmlxFx9mTUBqBWtMSVQo,7782
14
14
  mlrun/api/schemas/__init__.py,sha256=ggWbnqhp7By5HNYYfRsZ4D4EdVvjLuz4qfNfR3Kq6M4,14219
@@ -88,7 +88,7 @@ mlrun/db/__init__.py,sha256=WqJ4x8lqJ7ZoKbhEyFqkYADd9P6E3citckx9e9ZLcIU,1163
88
88
  mlrun/db/auth_utils.py,sha256=hpg8D2r82oN0BWabuWN04BTNZ7jYMAF242YSUpK7LFM,5211
89
89
  mlrun/db/base.py,sha256=Rg2TrcwvzN28vmoyhq8sSxNjiBS1EA6BAHr24fhcmNU,18221
90
90
  mlrun/db/factory.py,sha256=wTEKHEmdDkylM6IkTYvmEYVF8gn2HdjLoLoWICCyatI,2403
91
- mlrun/db/httpdb.py,sha256=FHrAwU7c4AQPCoXDIdkEkFfr8ViUS7XLJYIGrXrv_rs,157292
91
+ mlrun/db/httpdb.py,sha256=SdbGVA1R3acUXATlkisEIV9zK4RW4MORmKyU3wuJdWI,156881
92
92
  mlrun/db/nopdb.py,sha256=rpZy5cpW-8--4OvMzlVoKNYjbhWJ3cn_z-JFwfuPqnI,14520
93
93
  mlrun/feature_store/__init__.py,sha256=n1F5m1svFW2chbE2dJdWzZJJiYS4E-y8PQsG9Q-F0lU,1584
94
94
  mlrun/feature_store/api.py,sha256=ehEwKlmE07pq1FUwh-ehA8Jm9LTkQofl5MQpEiMwVqM,49520
@@ -282,14 +282,14 @@ mlrun/track/tracker_manager.py,sha256=ZZzXtgQ-t4ah64XeAHNCbZ2VMOK_0E0RHv0pIowynj
282
282
  mlrun/track/trackers/__init__.py,sha256=9xft8YjJnblwqt8f05htmOt_eDzVBVQN07RfY_SYLCs,569
283
283
  mlrun/track/trackers/mlflow_tracker.py,sha256=zqqnECpxk_CHDKzEIdjwL9QUjXfueOw7xlZU7buguKY,23282
284
284
  mlrun/utils/__init__.py,sha256=g2pbT3loDw0GWELOC_rBq1NojSMCFnWrD-TYcDgAZiI,826
285
- mlrun/utils/async_http.py,sha256=J3z4dzU1zk96k1sLDiGUIciBu3pdgivqh-GExFv-Fn8,11773
285
+ mlrun/utils/async_http.py,sha256=N-zkACdr2CZNwYyMaocSR6ZH90F_WV_ZRBVe9ssi-Ns,11141
286
286
  mlrun/utils/azure_vault.py,sha256=IbPAZh-7mp0j4PcCy1L079LuEA6ENrkWhKZvkD4lcTY,3455
287
287
  mlrun/utils/clones.py,sha256=QG2ka65-ysfrOaoziudEjJqGgAxJvFKZOXkiD9WZGN4,7386
288
288
  mlrun/utils/condition_evaluator.py,sha256=KFZC-apM7RU5TIlRszAzMFc0NqPj3W1rgP0Zv17Ud-A,1918
289
289
  mlrun/utils/db.py,sha256=fp9p2_z7XW3DhsceJEObWKh-e5zKjPiCM55kSGNkZD8,1658
290
290
  mlrun/utils/helpers.py,sha256=MRfvRQlxh9IITpYX68Sc8Lnej-SB5sWzIAy_7NhB44o,53692
291
291
  mlrun/utils/http.py,sha256=BLkPfCmXwFrpPrPXzipmDr9IhY3q5css7hovncXYs9g,8735
292
- mlrun/utils/logger.py,sha256=KZFzojroEshCu1kvtCsavJpdIY8vNA-QZxiBjehP9f4,7260
292
+ mlrun/utils/logger.py,sha256=3SS-9ON0ScnUJp1S6P_jmaTRXuwF6MhBF5a5Ij8s3IU,7158
293
293
  mlrun/utils/regex.py,sha256=Nd7xnDHU9PEOsse6rFwLNVgU4AaYCyuwMmQ9qgx2-Vw,4581
294
294
  mlrun/utils/singleton.py,sha256=UUTQiBTXyzmjeYzsvTUsSxqyLJHOtesqif9GNfZO9rc,883
295
295
  mlrun/utils/v3io_clients.py,sha256=HL7Hma-pxaQBXMKcEnWqGLCpFgykwnszlabzeOHC9-E,1319
@@ -304,11 +304,11 @@ mlrun/utils/notifications/notification/ipython.py,sha256=qrBmtECiRG6sZpCIVMg7RZc
304
304
  mlrun/utils/notifications/notification/slack.py,sha256=5JysqIpUYUZKXPSeeZtbl7qb2L9dj7p2NvnEBcEsZkA,3898
305
305
  mlrun/utils/notifications/notification/webhook.py,sha256=QHezCuN5uXkLcroAGxGrhGHaxAdUvkDLIsp27_Yrfd4,2390
306
306
  mlrun/utils/version/__init__.py,sha256=7kkrB7hEZ3cLXoWj1kPoDwo4MaswsI2JVOBpbKgPAgc,614
307
- mlrun/utils/version/version.json,sha256=rk9MvAyByMv8Nmgcq1QMFOkTa8NP0K-g4bSlN47hPAo,84
307
+ mlrun/utils/version/version.json,sha256=Jd9xQviLgtl-g6Ug6Kgcw_smZAZFd6k_4rtbV5pGoVg,88
308
308
  mlrun/utils/version/version.py,sha256=HMwseV8xjTQ__6T6yUWojx_z6yUj7Io7O4NcCCH_sz8,1970
309
- mlrun-1.6.3.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
310
- mlrun-1.6.3.dist-info/METADATA,sha256=ca26nwhJusTY2TzpDN36YP2Bb0OqX8t5B1Zj-RPQM2A,18400
311
- mlrun-1.6.3.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
312
- mlrun-1.6.3.dist-info/entry_points.txt,sha256=1Owd16eAclD5pfRCoJpYC2ZJSyGNTtUr0nCELMioMmU,46
313
- mlrun-1.6.3.dist-info/top_level.txt,sha256=NObLzw3maSF9wVrgSeYBv-fgnHkAJ1kEkh12DLdd5KM,6
314
- mlrun-1.6.3.dist-info/RECORD,,
309
+ mlrun-1.6.3rc4.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
310
+ mlrun-1.6.3rc4.dist-info/METADATA,sha256=OFf0HHI4PeJOXNCEluzTbK020vLthQrTFxOky9sDVvc,18293
311
+ mlrun-1.6.3rc4.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
312
+ mlrun-1.6.3rc4.dist-info/entry_points.txt,sha256=1Owd16eAclD5pfRCoJpYC2ZJSyGNTtUr0nCELMioMmU,46
313
+ mlrun-1.6.3rc4.dist-info/top_level.txt,sha256=NObLzw3maSF9wVrgSeYBv-fgnHkAJ1kEkh12DLdd5KM,6
314
+ mlrun-1.6.3rc4.dist-info/RECORD,,