mlrun 1.8.0rc39__py3-none-any.whl → 1.8.0rc41__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"
mlrun/launcher/base.py CHANGED
@@ -401,7 +401,6 @@ class BaseLauncher(abc.ABC):
401
401
  status=run.status.state,
402
402
  name=run.metadata.name,
403
403
  )
404
- self._update_end_time_if_terminal_state(runtime, run)
405
404
  if (
406
405
  run.status.state
407
406
  in mlrun.common.runtimes.constants.RunStates.error_and_abortion_states()
@@ -417,21 +416,6 @@ class BaseLauncher(abc.ABC):
417
416
 
418
417
  return None
419
418
 
420
- @staticmethod
421
- def _update_end_time_if_terminal_state(
422
- runtime: "mlrun.runtimes.BaseRuntime", run: "mlrun.run.RunObject"
423
- ):
424
- if (
425
- run.status.state
426
- in mlrun.common.runtimes.constants.RunStates.terminal_states()
427
- and not run.status.end_time
428
- ):
429
- end_time = mlrun.utils.now_date().isoformat()
430
- updates = {"status.end_time": end_time}
431
- runtime._get_db().update_run(
432
- updates, run.metadata.uid, run.metadata.project
433
- )
434
-
435
419
  @staticmethod
436
420
  def _refresh_function_metadata(runtime: "mlrun.runtimes.BaseRuntime"):
437
421
  pass
@@ -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())
mlrun/projects/project.py CHANGED
@@ -1412,7 +1412,9 @@ class MlrunProject(ModelObj):
1412
1412
  """
1413
1413
 
1414
1414
  # validate the provided workflow_path
1415
- self._validate_file_path(workflow_path, param_name="workflow_path")
1415
+ self._validate_file_path(
1416
+ workflow_path, param_name="workflow_path", engine=engine
1417
+ )
1416
1418
 
1417
1419
  if engine and "local" in engine and schedule:
1418
1420
  raise ValueError("'schedule' argument is not supported for 'local' engine.")
@@ -5241,7 +5243,7 @@ class MlrunProject(ModelObj):
5241
5243
  if is_remote_enriched:
5242
5244
  self.spec.repo.remotes[remote].set_url(clean_remote, enriched_remote)
5243
5245
 
5244
- def _validate_file_path(self, file_path: str, param_name: str):
5246
+ def _validate_file_path(self, file_path: str, param_name: str, engine: str):
5245
5247
  """
5246
5248
  The function checks if the given file_path is a valid path.
5247
5249
  If the file_path is a relative path, it is completed by joining it with the self.spec.get_code_path()
@@ -5266,6 +5268,10 @@ class MlrunProject(ModelObj):
5266
5268
  f"Invalid '{param_name}': '{file_path}'. Got a remote URL without a file suffix."
5267
5269
  )
5268
5270
 
5271
+ # if engine is remote then skip the local file validation
5272
+ if engine and not engine.startswith("remote"):
5273
+ return
5274
+
5269
5275
  code_path = self.spec.get_code_path()
5270
5276
 
5271
5277
  # If the file path is a relative path, it is completed by joining it with the code_path.
mlrun/runtimes/base.py CHANGED
@@ -33,6 +33,14 @@ import mlrun.launcher.factory
33
33
  import mlrun.utils.helpers
34
34
  import mlrun.utils.notifications
35
35
  import mlrun.utils.regex
36
+ from mlrun.model import (
37
+ BaseMetadata,
38
+ HyperParamOptions,
39
+ ImageBuilder,
40
+ ModelObj,
41
+ RunObject,
42
+ RunTemplate,
43
+ )
36
44
  from mlrun.utils.helpers import generate_object_uri, verify_field_regex
37
45
  from mlrun_pipelines.common.ops import mlrun_op
38
46
 
@@ -40,7 +48,6 @@ from ..config import config
40
48
  from ..datastore import store_manager
41
49
  from ..errors import err_to_str
42
50
  from ..lists import RunList
43
- from ..model import BaseMetadata, HyperParamOptions, ImageBuilder, ModelObj, RunObject
44
51
  from ..utils import (
45
52
  dict_to_json,
46
53
  dict_to_yaml,
@@ -668,7 +675,7 @@ class BaseRuntime(ModelObj):
668
675
 
669
676
  def as_step(
670
677
  self,
671
- runspec: RunObject = None,
678
+ runspec: Union[RunObject, RunTemplate] = None,
672
679
  handler=None,
673
680
  name: str = "",
674
681
  project: str = "",
@@ -306,9 +306,12 @@ class RemoteRuntime(KubeResource):
306
306
  def _validate_triggers(self, spec):
307
307
  # ML-7763 / NUC-233
308
308
  min_nuclio_version = "1.13.12"
309
- if mlconf.nuclio_version and semver.VersionInfo.parse(
309
+ if (
310
310
  mlconf.nuclio_version
311
- ) < semver.VersionInfo.parse(min_nuclio_version):
311
+ and mlconf.nuclio_version != "unstable"
312
+ and semver.VersionInfo.parse(mlconf.nuclio_version)
313
+ < semver.VersionInfo.parse(min_nuclio_version)
314
+ ):
312
315
  explicit_ack_enabled = False
313
316
  num_triggers = 0
314
317
  trigger_name = spec.get("name", "UNKNOWN")
@@ -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
 
mlrun/utils/clones.py CHANGED
@@ -165,14 +165,17 @@ def clone_git(url: str, context: str, secrets=None, clone: bool = True):
165
165
 
166
166
  branch = None
167
167
  tag = None
168
+ commit = None
168
169
  if url_obj.fragment:
169
170
  refs = url_obj.fragment
170
171
  if refs.startswith("refs/heads/"):
171
172
  branch = refs.replace("refs/heads/", "")
172
173
  elif refs.startswith("refs/tags/"):
173
174
  tag = refs.replace("refs/tags/", "")
175
+ elif refs.startswith("refs/commits/"):
176
+ commit = refs.replace("refs/commits/", "")
174
177
  else:
175
- url = url.replace("#" + refs, f"#refs/heads/{refs}")
178
+ url = url.replace(f"#{refs}", f"#refs/heads/{refs}")
176
179
  branch = refs
177
180
 
178
181
  # when using the CLI and clone path was not enriched, username/password input will be requested via shell
@@ -182,8 +185,8 @@ def clone_git(url: str, context: str, secrets=None, clone: bool = True):
182
185
  # override enriched clone path for security reasons
183
186
  repo.remotes[0].set_url(clone_path, final_clone_path)
184
187
 
185
- if tag:
186
- repo.git.checkout(tag)
188
+ if tag_or_commit := tag or commit:
189
+ repo.git.checkout(tag_or_commit)
187
190
 
188
191
  return url, repo
189
192
 
@@ -1,4 +1,4 @@
1
1
  {
2
- "git_commit": "c4d1cedcb732b6108ad1b9a2e33df82ba9114fa1",
3
- "version": "1.8.0-rc39"
2
+ "git_commit": "18a4adfd7aa39a10127ad6a505bce173beab12a4",
3
+ "version": "1.8.0-rc41"
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.0rc41
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
@@ -211,14 +211,14 @@ mlrun/frameworks/xgboost/mlrun_interface.py,sha256=QcP_mTKBjxvRyWcNnju0BlvXBDOqN
211
211
  mlrun/frameworks/xgboost/model_handler.py,sha256=e3VLKMmaC9OFoclUPx9buUXYLDe1Ab3zMxXUmL8TMO4,11664
212
212
  mlrun/frameworks/xgboost/utils.py,sha256=5zLzHoeI3n2FuA_rdGzi404QCTLfQx1TYEyUWhZogs8,1069
213
213
  mlrun/launcher/__init__.py,sha256=JL8qkT1lLr1YvW6iP0hmwDTaSR2RfrMDx0-1gWRhTOE,571
214
- mlrun/launcher/base.py,sha256=tTON7And0Et9RtvWaisoyEdrFXMjnQD7KSG7K-aw2fE,17088
214
+ mlrun/launcher/base.py,sha256=uZaUpwjy9_Z137aQ4b1JsuYqD01ZVRxytAxZSFKSu6U,16480
215
215
  mlrun/launcher/client.py,sha256=lJ3y9brmPspgwAZrUPAeu3Dn5B7mh9k3MhrbFKhNDvw,6286
216
216
  mlrun/launcher/factory.py,sha256=RW7mfzEFi8fR0M-4W1JQg1iq3_muUU6OTqT_3l4Ubrk,2338
217
217
  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
@@ -269,9 +269,9 @@ mlrun/platforms/iguazio.py,sha256=6VBTq8eQ3mzT96tzjYhAtcMQ2VjF4x8LpIPW5DAcX2Q,13
269
269
  mlrun/projects/__init__.py,sha256=0Krf0WIKfnZa71WthYOg0SoaTodGg3sV_hK3f_OlTPI,1220
270
270
  mlrun/projects/operations.py,sha256=TzPbTYBgmYrjxTKP_wOtBJYFFFwDCQtaVvF1Snr0TfM,20029
271
271
  mlrun/projects/pipelines.py,sha256=wud7ezeEmhIJvfYE_wzQbA4ygEfGXHtbOtoOpan6poY,48556
272
- mlrun/projects/project.py,sha256=tiBcPw3AtTDpu8IhjPR8EMYRgDK_-YBTJVgnrZKvUTA,234920
272
+ mlrun/projects/project.py,sha256=md2ieQ0gmsVaRj0urWax0aFld88cIF-9r0JIMgmXiC8,235111
273
273
  mlrun/runtimes/__init__.py,sha256=J9Sy2HiyMlztNv6VUurMzF5H2XzttNil8nRsWDsqLyg,8923
274
- mlrun/runtimes/base.py,sha256=K5-zfFrE_HR6AaHWs2figaOTr7eosw3-4bELkYzpRk4,37789
274
+ mlrun/runtimes/base.py,sha256=EL14Kmc1vWEjnBPJwLj5hHC6CtRAQHJLmohCD3sFEHo,37855
275
275
  mlrun/runtimes/daskjob.py,sha256=JwuGvOiPsxEDHHMMUS4Oie4hLlYYIZwihAl6DjroTY0,19521
276
276
  mlrun/runtimes/funcdoc.py,sha256=zRFHrJsV8rhDLJwoUhcfZ7Cs0j-tQ76DxwUqdXV_Wyc,9810
277
277
  mlrun/runtimes/function_reference.py,sha256=CLvRY-wXX9qhI9YEzSl0VWt8piH_-5FQYQ8ObUYLLDc,4911
@@ -291,9 +291,9 @@ mlrun/runtimes/mpijob/abstract.py,sha256=JGMjcJ4dvpJbctF6psU9UvYyNCutMxTMgBQeTlz
291
291
  mlrun/runtimes/mpijob/v1.py,sha256=1XQZC7AIMGX_AQCbApcwpH8I7y39-v0v2O35MvxjXoo,3213
292
292
  mlrun/runtimes/nuclio/__init__.py,sha256=gx1kizzKv8pGT5TNloN1js1hdbxqDw3rM90sLVYVffY,794
293
293
  mlrun/runtimes/nuclio/api_gateway.py,sha256=vH9ClKVP4Mb24rvA67xPuAvAhX-gAv6vVtjVxyplhdc,26969
294
- mlrun/runtimes/nuclio/function.py,sha256=1M8SdMaPhuQ7yqLegYfOcIlseXPj4a18MsXUNYFdD-c,52901
294
+ mlrun/runtimes/nuclio/function.py,sha256=j_gKYhaGfJjr_mVBdUcnSgXcXOHJrKHtUMpmOu8TII8,52979
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
@@ -317,7 +317,7 @@ mlrun/track/trackers/mlflow_tracker.py,sha256=8JnCelnjqqW2L8wjh4fCvEL8r5wYIOzboz
317
317
  mlrun/utils/__init__.py,sha256=g2pbT3loDw0GWELOC_rBq1NojSMCFnWrD-TYcDgAZiI,826
318
318
  mlrun/utils/async_http.py,sha256=nAN0hxKUKaGc1XYJjdb59C2G1-nIF8HbzZECBmlODZI,12247
319
319
  mlrun/utils/azure_vault.py,sha256=IEFizrDGDbAaoWwDr1WoA88S_EZ0T--vjYtY-i0cvYQ,3450
320
- mlrun/utils/clones.py,sha256=y3zC9QS7z5mLuvyQ6vFd6sJnikbgtDwrBvieQq0sovY,7359
320
+ mlrun/utils/clones.py,sha256=yXOeuLtgIiKZdmjeKK0Z_vIrH19ds5JuoJaCeDjhwOo,7516
321
321
  mlrun/utils/condition_evaluator.py,sha256=-nGfRmZzivn01rHTroiGY4rqEv8T1irMyhzxEei-sKc,1897
322
322
  mlrun/utils/db.py,sha256=blQgkWMfFH9lcN4sgJQcPQgEETz2Dl_zwbVA0SslpFg,2186
323
323
  mlrun/utils/helpers.py,sha256=ws-4ekIh2PvwO6n3-3_jm9b9RDAfSGqxC3IIiqqhnlk,73926
@@ -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=ixZhSkY3aQXk61oqGZn9xgYm6Aj1zyZNZQOWMEPTPtI,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.0rc41.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
345
+ mlrun-1.8.0rc41.dist-info/METADATA,sha256=UVLiV1nBd9z2-TfLSnNVUgKVxFlFyrcA1rZiwyTNi8M,25986
346
+ mlrun-1.8.0rc41.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
347
+ mlrun-1.8.0rc41.dist-info/entry_points.txt,sha256=1Owd16eAclD5pfRCoJpYC2ZJSyGNTtUr0nCELMioMmU,46
348
+ mlrun-1.8.0rc41.dist-info/top_level.txt,sha256=NObLzw3maSF9wVrgSeYBv-fgnHkAJ1kEkh12DLdd5KM,6
349
+ mlrun-1.8.0rc41.dist-info/RECORD,,