mlrun 1.7.0rc46__py3-none-any.whl → 1.7.0rc47__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.

@@ -25,6 +25,7 @@ from .constants import (
25
25
  FileTargetKind,
26
26
  FunctionURI,
27
27
  MetricData,
28
+ ModelEndpointMonitoringMetricType,
28
29
  ModelEndpointTarget,
29
30
  ModelEndpointTargetSchemas,
30
31
  ModelMonitoringMode,
@@ -61,7 +62,6 @@ from .model_endpoints import (
61
62
  ModelEndpointMetadata,
62
63
  ModelEndpointMonitoringMetric,
63
64
  ModelEndpointMonitoringMetricNoData,
64
- ModelEndpointMonitoringMetricType,
65
65
  ModelEndpointMonitoringMetricValues,
66
66
  ModelEndpointMonitoringResultValues,
67
67
  ModelEndpointSpec,
@@ -13,7 +13,8 @@
13
13
  # limitations under the License.
14
14
 
15
15
  import hashlib
16
- from dataclasses import dataclass
16
+ import re
17
+ from dataclasses import dataclass, field
17
18
  from enum import Enum, IntEnum
18
19
  from typing import Optional
19
20
 
@@ -295,7 +296,7 @@ class EndpointUID:
295
296
  function_hash_key: str
296
297
  model: str
297
298
  model_version: str
298
- uid: Optional[str] = None
299
+ uid: str = field(init=False)
299
300
 
300
301
  def __post_init__(self):
301
302
  function_ref = (
@@ -372,3 +373,23 @@ _RESERVED_FUNCTION_NAMES = MonitoringFunctionNames.list() + [SpecialApps.MLRUN_I
372
373
 
373
374
 
374
375
  V3IO_MODEL_MONITORING_DB = "v3io"
376
+
377
+
378
+ class ModelEndpointMonitoringMetricType(StrEnum):
379
+ RESULT = "result"
380
+ METRIC = "metric"
381
+
382
+
383
+ _FQN_PART_PATTERN = r"[a-zA-Z0-9_-]+"
384
+ FQN_PATTERN = (
385
+ rf"^(?P<project>{_FQN_PART_PATTERN})\."
386
+ rf"(?P<app>{_FQN_PART_PATTERN})\."
387
+ rf"(?P<type>{ModelEndpointMonitoringMetricType.RESULT}|{ModelEndpointMonitoringMetricType.METRIC})\."
388
+ rf"(?P<name>{_FQN_PART_PATTERN})$"
389
+ )
390
+ FQN_REGEX = re.compile(FQN_PATTERN)
391
+
392
+ # refer to `mlrun.utils.regex.project_name`
393
+ PROJECT_PATTERN = r"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$"
394
+
395
+ MODEL_ENDPOINT_ID_PATTERN = r"^[a-zA-Z0-9_-]+$"
@@ -14,26 +14,32 @@
14
14
 
15
15
  import enum
16
16
  import json
17
- import re
18
17
  from datetime import datetime
19
- from typing import Any, NamedTuple, Optional
18
+ from typing import Any, NamedTuple, Optional, TypeVar
20
19
 
21
- from pydantic import BaseModel, Field, validator
22
- from pydantic.main import Extra
20
+ from pydantic import BaseModel, Extra, Field, constr, validator
23
21
 
24
- import mlrun.common.types
22
+ # TODO: remove the unused import below after `mlrun.datastore` and `mlrun.utils` usage is removed.
23
+ # At the moment `make lint` fails if this is removed.
24
+ import mlrun.common.model_monitoring
25
25
 
26
26
  from ..object import ObjectKind, ObjectSpec, ObjectStatus
27
27
  from .constants import (
28
+ FQN_REGEX,
29
+ MODEL_ENDPOINT_ID_PATTERN,
30
+ PROJECT_PATTERN,
28
31
  EndpointType,
29
32
  EventFieldType,
30
33
  EventKeyMetrics,
31
34
  EventLiveStats,
35
+ ModelEndpointMonitoringMetricType,
32
36
  ModelMonitoringMode,
33
37
  ResultKindApp,
34
38
  ResultStatusApp,
35
39
  )
36
40
 
41
+ Model = TypeVar("Model", bound=BaseModel)
42
+
37
43
 
38
44
  class ModelMonitoringStoreKinds:
39
45
  # TODO: do changes in examples & demos In 1.5.0 remove
@@ -42,9 +48,9 @@ class ModelMonitoringStoreKinds:
42
48
 
43
49
 
44
50
  class ModelEndpointMetadata(BaseModel):
45
- project: Optional[str] = ""
51
+ project: constr(regex=PROJECT_PATTERN)
52
+ uid: constr(regex=MODEL_ENDPOINT_ID_PATTERN)
46
53
  labels: Optional[dict] = {}
47
- uid: Optional[str] = ""
48
54
 
49
55
  class Config:
50
56
  extra = Extra.allow
@@ -57,12 +63,11 @@ class ModelEndpointMetadata(BaseModel):
57
63
  :param json_parse_values: List of dictionary keys with a JSON string value that will be parsed into a
58
64
  dictionary using json.loads().
59
65
  """
60
- new_object = cls()
61
66
  if json_parse_values is None:
62
67
  json_parse_values = [EventFieldType.LABELS]
63
68
 
64
69
  return _mapping_attributes(
65
- base_model=new_object,
70
+ model_class=cls,
66
71
  flattened_dictionary=endpoint_dict,
67
72
  json_parse_values=json_parse_values,
68
73
  )
@@ -89,7 +94,6 @@ class ModelEndpointSpec(ObjectSpec):
89
94
  :param json_parse_values: List of dictionary keys with a JSON string value that will be parsed into a
90
95
  dictionary using json.loads().
91
96
  """
92
- new_object = cls()
93
97
  if json_parse_values is None:
94
98
  json_parse_values = [
95
99
  EventFieldType.FEATURE_NAMES,
@@ -97,7 +101,7 @@ class ModelEndpointSpec(ObjectSpec):
97
101
  EventFieldType.MONITOR_CONFIGURATION,
98
102
  ]
99
103
  return _mapping_attributes(
100
- base_model=new_object,
104
+ model_class=cls,
101
105
  flattened_dictionary=endpoint_dict,
102
106
  json_parse_values=json_parse_values,
103
107
  )
@@ -191,7 +195,6 @@ class ModelEndpointStatus(ObjectStatus):
191
195
  :param json_parse_values: List of dictionary keys with a JSON string value that will be parsed into a
192
196
  dictionary using json.loads().
193
197
  """
194
- new_object = cls()
195
198
  if json_parse_values is None:
196
199
  json_parse_values = [
197
200
  EventFieldType.FEATURE_STATS,
@@ -203,7 +206,7 @@ class ModelEndpointStatus(ObjectStatus):
203
206
  EventFieldType.ENDPOINT_TYPE,
204
207
  ]
205
208
  return _mapping_attributes(
206
- base_model=new_object,
209
+ model_class=cls,
207
210
  flattened_dictionary=endpoint_dict,
208
211
  json_parse_values=json_parse_values,
209
212
  )
@@ -211,22 +214,13 @@ class ModelEndpointStatus(ObjectStatus):
211
214
 
212
215
  class ModelEndpoint(BaseModel):
213
216
  kind: ObjectKind = Field(ObjectKind.model_endpoint, const=True)
214
- metadata: ModelEndpointMetadata = ModelEndpointMetadata()
217
+ metadata: ModelEndpointMetadata
215
218
  spec: ModelEndpointSpec = ModelEndpointSpec()
216
219
  status: ModelEndpointStatus = ModelEndpointStatus()
217
220
 
218
221
  class Config:
219
222
  extra = Extra.allow
220
223
 
221
- def __init__(self, **data: Any):
222
- super().__init__(**data)
223
- if self.metadata.uid is None:
224
- uid = mlrun.common.model_monitoring.create_model_endpoint_uid(
225
- function_uri=self.spec.function_uri,
226
- versioned_model=self.spec.model,
227
- )
228
- self.metadata.uid = str(uid)
229
-
230
224
  def flat_dict(self):
231
225
  """Generate a flattened `ModelEndpoint` dictionary. The flattened dictionary result is important for storing
232
226
  the model endpoint object in the database.
@@ -267,7 +261,7 @@ class ModelEndpoint(BaseModel):
267
261
  return flatten_dict
268
262
 
269
263
  @classmethod
270
- def from_flat_dict(cls, endpoint_dict: dict):
264
+ def from_flat_dict(cls, endpoint_dict: dict) -> "ModelEndpoint":
271
265
  """Create a `ModelEndpoint` object from an endpoint flattened dictionary. Because the provided dictionary
272
266
  is flattened, we pass it as is to the subclasses without splitting the keys into spec, metadata, and status.
273
267
 
@@ -285,11 +279,6 @@ class ModelEndpointList(BaseModel):
285
279
  endpoints: list[ModelEndpoint] = []
286
280
 
287
281
 
288
- class ModelEndpointMonitoringMetricType(mlrun.common.types.StrEnum):
289
- RESULT = "result"
290
- METRIC = "metric"
291
-
292
-
293
282
  class ModelEndpointMonitoringMetric(BaseModel):
294
283
  project: str
295
284
  app: str
@@ -308,18 +297,8 @@ def _compose_full_name(
308
297
  return ".".join([project, app, type, name])
309
298
 
310
299
 
311
- _FQN_PART_PATTERN = r"[a-zA-Z0-9_-]+"
312
- _FQN_PATTERN = (
313
- rf"^(?P<project>{_FQN_PART_PATTERN})\."
314
- rf"(?P<app>{_FQN_PART_PATTERN})\."
315
- rf"(?P<type>{ModelEndpointMonitoringMetricType.RESULT}|{ModelEndpointMonitoringMetricType.METRIC})\."
316
- rf"(?P<name>{_FQN_PART_PATTERN})$"
317
- )
318
- _FQN_REGEX = re.compile(_FQN_PATTERN)
319
-
320
-
321
300
  def _parse_metric_fqn_to_monitoring_metric(fqn: str) -> ModelEndpointMonitoringMetric:
322
- match = _FQN_REGEX.fullmatch(fqn)
301
+ match = FQN_REGEX.fullmatch(fqn)
323
302
  if match is None:
324
303
  raise ValueError("The fully qualified name is not in the expected format")
325
304
  return ModelEndpointMonitoringMetric.parse_obj(
@@ -364,20 +343,18 @@ class ModelEndpointMonitoringMetricNoData(_ModelEndpointMonitoringMetricValuesBa
364
343
 
365
344
 
366
345
  def _mapping_attributes(
367
- base_model: BaseModel,
368
- flattened_dictionary: dict,
369
- json_parse_values: list = None,
370
- ):
346
+ model_class: type[Model], flattened_dictionary: dict, json_parse_values: list
347
+ ) -> Model:
371
348
  """Generate a `BaseModel` object with the provided dictionary attributes.
372
349
 
373
- :param base_model: `BaseModel` object (e.g. `ModelEndpointMetadata`).
350
+ :param model_class: `BaseModel` class (e.g. `ModelEndpointMetadata`).
374
351
  :param flattened_dictionary: Flattened dictionary that contains the model endpoint attributes.
375
352
  :param json_parse_values: List of dictionary keys with a JSON string value that will be parsed into a
376
353
  dictionary using json.loads().
377
354
  """
378
355
  # Get the fields of the provided base model object. These fields will be used to filter to relevent keys
379
356
  # from the flattened dictionary.
380
- wanted_keys = base_model.__fields__.keys()
357
+ wanted_keys = model_class.__fields__.keys()
381
358
 
382
359
  # Generate a filtered flattened dictionary that will be parsed into the BaseModel object
383
360
  dict_to_parse = {}
@@ -391,7 +368,7 @@ def _mapping_attributes(
391
368
  else:
392
369
  dict_to_parse[field_key] = flattened_dictionary[field_key]
393
370
 
394
- return base_model.parse_obj(dict_to_parse)
371
+ return model_class.parse_obj(dict_to_parse)
395
372
 
396
373
 
397
374
  def _json_loads_if_not_none(field: Any) -> Any:
@@ -19,6 +19,7 @@ import mlrun
19
19
  import mlrun.model_monitoring.helpers
20
20
  from mlrun.datastore.base import DataStore
21
21
 
22
+ from ..platforms.iguazio import parse_path
22
23
  from .utils import (
23
24
  parse_kafka_url,
24
25
  )
@@ -82,12 +83,14 @@ class StreamStoreyTarget(storey.StreamTarget):
82
83
  def __init__(self, *args, **kwargs):
83
84
  args = list(args)
84
85
 
85
- path = args[0] if args else kwargs.get("stream_path")
86
- endpoint, storage_options = get_url_and_storage_options(path)
86
+ uri = args[0] if args else kwargs.get("stream_path")
87
87
 
88
- if not path:
88
+ if not uri:
89
89
  raise mlrun.errors.MLRunInvalidArgumentError("StreamTarget requires a path")
90
90
 
91
+ _, storage_options = get_url_and_storage_options(uri)
92
+ endpoint, path = parse_path(uri)
93
+
91
94
  access_key = storage_options.get("v3io_access_key")
92
95
  storage = V3ioDriver(
93
96
  webapi=endpoint or mlrun.mlconf.v3io_api, access_key=access_key
@@ -98,7 +101,7 @@ class StreamStoreyTarget(storey.StreamTarget):
98
101
  if args:
99
102
  args[0] = endpoint
100
103
  if "stream_path" in kwargs:
101
- kwargs["stream_path"] = endpoint
104
+ kwargs["stream_path"] = path
102
105
 
103
106
  super().__init__(*args, **kwargs)
104
107
 
mlrun/model.py CHANGED
@@ -2044,6 +2044,8 @@ class DataSource(ModelObj):
2044
2044
  ]
2045
2045
  kind = None
2046
2046
 
2047
+ _fields_to_serialize = ["start_time", "end_time"]
2048
+
2047
2049
  def __init__(
2048
2050
  self,
2049
2051
  name: str = None,
@@ -2072,6 +2074,16 @@ class DataSource(ModelObj):
2072
2074
  def set_secrets(self, secrets):
2073
2075
  self._secrets = secrets
2074
2076
 
2077
+ def _serialize_field(
2078
+ self, struct: dict, field_name: str = None, strip: bool = False
2079
+ ) -> typing.Any:
2080
+ value = super()._serialize_field(struct, field_name, strip)
2081
+ # We pull the field from self and not from struct because it was excluded from the struct when looping over
2082
+ # the fields to save.
2083
+ if field_name in ("start_time", "end_time") and isinstance(value, datetime):
2084
+ return value.isoformat()
2085
+ return value
2086
+
2075
2087
 
2076
2088
  class DataTargetBase(ModelObj):
2077
2089
  """data target spec, specify a destination for the feature set data"""
@@ -11,6 +11,7 @@
11
11
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
+
14
15
  import json
15
16
  import typing
16
17
  from abc import ABC, abstractmethod
@@ -211,7 +211,7 @@ class TDEngineSchema:
211
211
  if filter_query:
212
212
  query.write(f"{filter_query} AND ")
213
213
  if start:
214
- query.write(f"{timestamp_column} >= '{start}'" + " AND ")
214
+ query.write(f"{timestamp_column} >= '{start}' AND ")
215
215
  if end:
216
216
  query.write(f"{timestamp_column} <= '{end}'")
217
217
  if interval:
@@ -262,7 +262,7 @@ class TDEngineConnector(TSDBConnector):
262
262
 
263
263
  project_condition = f"project = '{self.project}'"
264
264
  filter_query = (
265
- f"{filter_query} AND {project_condition}"
265
+ f"({filter_query}) AND ({project_condition})"
266
266
  if filter_query
267
267
  else project_condition
268
268
  )
@@ -341,7 +341,7 @@ class TDEngineConnector(TSDBConnector):
341
341
  for metric in metrics
342
342
  ]
343
343
  )
344
- filter_query = f"endpoint_id='{endpoint_id}' AND ({metrics_condition})"
344
+ filter_query = f"(endpoint_id='{endpoint_id}') AND ({metrics_condition})"
345
345
 
346
346
  df = self._get_records(
347
347
  table=table,
@@ -18,6 +18,10 @@ import typing
18
18
  import numpy as np
19
19
  import pandas as pd
20
20
 
21
+ if typing.TYPE_CHECKING:
22
+ from mlrun.db.base import RunDBInterface
23
+ from mlrun.projects import MlrunProject
24
+
21
25
  import mlrun
22
26
  import mlrun.artifacts
23
27
  import mlrun.common.model_monitoring.helpers
@@ -26,16 +30,11 @@ import mlrun.data_types.infer
26
30
  import mlrun.model_monitoring
27
31
  from mlrun.common.schemas.model_monitoring.model_endpoints import (
28
32
  ModelEndpointMonitoringMetric,
29
- ModelEndpointMonitoringMetricType,
30
33
  _compose_full_name,
31
34
  )
32
35
  from mlrun.model_monitoring.model_endpoint import ModelEndpoint
33
36
  from mlrun.utils import logger
34
37
 
35
- if typing.TYPE_CHECKING:
36
- from mlrun.db.base import RunDBInterface
37
- from mlrun.projects import MlrunProject
38
-
39
38
 
40
39
  class _BatchDict(typing.TypedDict):
41
40
  minutes: int
@@ -301,7 +300,7 @@ def get_invocations_fqn(project: str) -> str:
301
300
  project=project,
302
301
  app=mm_constants.SpecialApps.MLRUN_INFRA,
303
302
  name=mm_constants.PredictionsQueryConstants.INVOCATIONS,
304
- type=ModelEndpointMonitoringMetricType.METRIC,
303
+ type=mm_constants.ModelEndpointMonitoringMetricType.METRIC,
305
304
  )
306
305
 
307
306
 
@@ -315,7 +314,7 @@ def get_invocations_metric(project: str) -> ModelEndpointMonitoringMetric:
315
314
  return ModelEndpointMonitoringMetric(
316
315
  project=project,
317
316
  app=mm_constants.SpecialApps.MLRUN_INFRA,
318
- type=ModelEndpointMonitoringMetricType.METRIC,
317
+ type=mm_constants.ModelEndpointMonitoringMetricType.METRIC,
319
318
  name=mm_constants.PredictionsQueryConstants.INVOCATIONS,
320
319
  full_name=get_invocations_fqn(project),
321
320
  )
@@ -1,4 +1,4 @@
1
1
  {
2
- "git_commit": "2fcec45a11625a8ea4cea29091e594a3adcb76f5",
3
- "version": "1.7.0-rc46"
2
+ "git_commit": "efce6df76e301a94049bc8cd8eb236302c3193ec",
3
+ "version": "1.7.0-rc47"
4
4
  }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mlrun
3
- Version: 1.7.0rc46
3
+ Version: 1.7.0rc47
4
4
  Summary: Tracking and config of machine learning runs
5
5
  Home-page: https://github.com/mlrun/mlrun
6
6
  Author: Yaron Haviv
@@ -31,7 +31,7 @@ Requires-Dist: ipython ~=8.10
31
31
  Requires-Dist: nuclio-jupyter ~=0.10.4
32
32
  Requires-Dist: numpy <1.27.0,>=1.16.5
33
33
  Requires-Dist: pandas <2.2,>=1.2
34
- Requires-Dist: pyarrow <15,>=10.0
34
+ Requires-Dist: pyarrow <18,>=10.0
35
35
  Requires-Dist: pyyaml <7,>=5.4.1
36
36
  Requires-Dist: requests ~=2.32
37
37
  Requires-Dist: tabulate ~=0.8.6
@@ -43,7 +43,7 @@ Requires-Dist: semver ~=3.0
43
43
  Requires-Dist: dependency-injector ~=4.41
44
44
  Requires-Dist: fsspec <2024.7,>=2023.9.2
45
45
  Requires-Dist: v3iofs ~=0.1.17
46
- Requires-Dist: storey ~=1.7.24
46
+ Requires-Dist: storey ~=1.7.27
47
47
  Requires-Dist: inflection ~=0.5.0
48
48
  Requires-Dist: python-dotenv ~=0.17.0
49
49
  Requires-Dist: setuptools ~=71.0
@@ -6,7 +6,7 @@ mlrun/execution.py,sha256=EGsEeSqOFnSxYFL4_YVKv8DEx2YsmJ9aA1gXBAV5W5A,42563
6
6
  mlrun/features.py,sha256=m17K_3l9Jktwb9dOwlHLTAPTlemsWrRF7dJhXUX0iJU,15429
7
7
  mlrun/k8s_utils.py,sha256=mRQMs6NzPq36vx1n5_2BfFapXysc8wv3NcrZ77_2ANA,8949
8
8
  mlrun/lists.py,sha256=3PqBdcajdwhTe1XuFsAaHTuFVM2kjwepf31qqE82apg,8384
9
- mlrun/model.py,sha256=WcRg13FSww_4YLpL-WDRnfoBnfiEHXRFTMLEMJIeICk,80694
9
+ mlrun/model.py,sha256=pWE8L9SIaNu3pAgoqVTea5i-MRXcWqorOWvL0AiwM5E,81226
10
10
  mlrun/render.py,sha256=940H9fBBFeghH4dlifbURvtjlvw4GlWdAXezN6ky4rI,13275
11
11
  mlrun/run.py,sha256=hNxV-TnixbH8MCos2jqz8jdTDlK7dBSvJMil_QoGKQI,43616
12
12
  mlrun/secrets.py,sha256=ibtCK79u7JVBZF6F0SP1-xXXF5MyrLEUs_TCWiJAnlc,7798
@@ -68,10 +68,10 @@ mlrun/common/schemas/schedule.py,sha256=nD9kxH2KjXkbGZPNfzVNlNSxbyFZmZUlwtT04_z2
68
68
  mlrun/common/schemas/secret.py,sha256=51tCN1F8DFTq4y_XdHIMDy3I1TnMEBX8kO8BHKavYF4,1484
69
69
  mlrun/common/schemas/tag.py,sha256=OAn9Qt6z8ibqw8uU8WQSvuwY8irUv45Dhx2Ko5FzUss,884
70
70
  mlrun/common/schemas/workflow.py,sha256=WxmlwtwrzwL4lfHYjQTOp03uv6PWYMpZ4cNBMOA6N6E,1897
71
- mlrun/common/schemas/model_monitoring/__init__.py,sha256=3uijQoEigSeEklKjhDZnfWk1EOgMP0EuKHlRGxGA95A,1813
72
- mlrun/common/schemas/model_monitoring/constants.py,sha256=YaKwvMHhJVIwFJDsLg2Iu6zCv2YgxdiiJ1owvb5IGGk,9568
71
+ mlrun/common/schemas/model_monitoring/__init__.py,sha256=q2icasMdgI7OG-p5eVwCu6sBuPrBMpRxByC6rxYk0DM,1813
72
+ mlrun/common/schemas/model_monitoring/constants.py,sha256=KD6gaw24EAKFow5LPl0JkMlSXHUMca3DS-S41sWAre8,10158
73
73
  mlrun/common/schemas/model_monitoring/grafana.py,sha256=SG13MFUUz_tk6-mWeSx17qcdEW4ekicxqNtnMSwRTCY,1559
74
- mlrun/common/schemas/model_monitoring/model_endpoints.py,sha256=FdKbO8Lb_SDrEXtEHn19GEiAWUWLd_fS6bk0ytanhmo,13762
74
+ mlrun/common/schemas/model_monitoring/model_endpoints.py,sha256=5vvjNX1bV98VSGdT4jwHr5ArKC9v_c1iHlaTf82fSUY,13198
75
75
  mlrun/data_types/__init__.py,sha256=EkxfkFoHb91zz3Aymq-KZfCHlPMzEc3bBqgzPUwmHWY,1087
76
76
  mlrun/data_types/data_types.py,sha256=3dmmIxJ2_uKzf-dbbgOwbYJx8cvUYrPiQan40vcSqJo,4948
77
77
  mlrun/data_types/infer.py,sha256=z2EbSpR6xWEE5-HRUtDZkapHQld3xMbzXtTX83K-690,6134
@@ -95,7 +95,7 @@ mlrun/datastore/sources.py,sha256=op90ksx95wqaBtoiORpHnqEgw4iGEDPsJ3_lI8ftS-E,48
95
95
  mlrun/datastore/spark_udf.py,sha256=NnnB3DZxZb-rqpRy7b-NC7QWXuuqFn3XkBDc86tU4mQ,1498
96
96
  mlrun/datastore/spark_utils.py,sha256=_AsVoU5Ix_-W7Gyq8io8V-2GTk0m8THJNDP3WGGaWJY,2865
97
97
  mlrun/datastore/store_resources.py,sha256=rcLoG506AMmR8qPJU_gE-G5d34VJVV_vNlZ3VHqho6c,6869
98
- mlrun/datastore/storeytargets.py,sha256=t1TCqeXr2GZ-w_tgKhPyubOtlFRcYAnvXXR3peR0T-8,5015
98
+ mlrun/datastore/storeytargets.py,sha256=uNYG4nCBD3JIfa51CG4cDe9ryc9oIcqUdUXKvCPB6uE,5086
99
99
  mlrun/datastore/targets.py,sha256=TkG2HG4h7SaQ3qG2sKAHAuJJyj_gnE-eChaIsyjlq1o,80450
100
100
  mlrun/datastore/utils.py,sha256=l9dLZb_VCbHs_htqMFRv4qiestZ8z8K-4eY1MxHS8wE,7720
101
101
  mlrun/datastore/v3io.py,sha256=HxP6mygiYM6leDAbQ9KdTxObLCt9yGMro0YhfdU6KUo,8157
@@ -217,7 +217,7 @@ mlrun/model_monitoring/application.py,sha256=RJ8HeAPfGO3P2A_dEZYNg60c1wKTADh2YSv
217
217
  mlrun/model_monitoring/controller.py,sha256=ZKp3mWMhj6irCuREs-OH1MYYh5DzqNEDe04kVPVrZzw,27971
218
218
  mlrun/model_monitoring/evidently_application.py,sha256=iOc42IVjj8m6PDBmVcKIMWm46Bu0EdO9SDcH40Eqhyo,769
219
219
  mlrun/model_monitoring/features_drift_table.py,sha256=c6GpKtpOJbuT1u5uMWDL_S-6N4YPOmlktWMqPme3KFY,25308
220
- mlrun/model_monitoring/helpers.py,sha256=zoUfwo0IMOBa71p-DQgxS2lnpX3STcCv-XgClnBqWOU,12770
220
+ mlrun/model_monitoring/helpers.py,sha256=KsbSH0kEjCPajvLUpv3q5GWyvx0bZj-JkghGJlzbLZI,12757
221
221
  mlrun/model_monitoring/model_endpoint.py,sha256=7VX0cBATqLsA4sSinDzouf41ndxqh2mf5bO9BW0G5Z4,4017
222
222
  mlrun/model_monitoring/stream_processing.py,sha256=0eu1Gq1Obq87LFno6eIZ55poXoFaeloqYTLiQgyfd0k,38687
223
223
  mlrun/model_monitoring/tracking_policy.py,sha256=sQq956akAQpntkrJwIgFWcEq-JpyVcg0FxgNa4h3V70,5502
@@ -232,7 +232,7 @@ mlrun/model_monitoring/applications/results.py,sha256=B0YuLig4rgBzBs3OAh01yLavht
232
232
  mlrun/model_monitoring/db/__init__.py,sha256=6Ic-X3Fh9XLPYMytmevGNSs-Hii1rAjLLoFTSPwTguw,736
233
233
  mlrun/model_monitoring/db/stores/__init__.py,sha256=m6Z6rPQyaufq5oXF3HVUYGDN34biAX1JE1F6OxLN9B8,4752
234
234
  mlrun/model_monitoring/db/stores/base/__init__.py,sha256=JufJETW3BXzPhFwbRa8dMf7BFGGZKceIWIMgr5x9n9c,599
235
- mlrun/model_monitoring/db/stores/base/store.py,sha256=xaiaUwXDYYV1z6e17Ny9IiE3a7pSiEFg8nffdWHSq0A,7517
235
+ mlrun/model_monitoring/db/stores/base/store.py,sha256=KDNiAil7wF7zTEp3KytyJeMGGT4oblt4-q1CvJlhB1k,7518
236
236
  mlrun/model_monitoring/db/stores/sqldb/__init__.py,sha256=6CsTXAxeLbbf8yfCADTaxmiavqwrLEdYFJ-qc5kgDAY,569
237
237
  mlrun/model_monitoring/db/stores/sqldb/sql_store.py,sha256=9YjYqLue1GV1K4G2VRLVFObySEaIDnGqivvvXDM29to,26154
238
238
  mlrun/model_monitoring/db/stores/sqldb/models/__init__.py,sha256=lCiGw9WKPtHAIgrtNS2jyvM5OZvZvogBh76iurNYblg,2453
@@ -245,9 +245,9 @@ mlrun/model_monitoring/db/tsdb/__init__.py,sha256=Zqh_27I2YAEHk9nl0Z6lUxP7VEfrgr
245
245
  mlrun/model_monitoring/db/tsdb/base.py,sha256=X89X763sDrShfRXE1N-p8k97E8NBs7O1QJFiO-CffLM,18583
246
246
  mlrun/model_monitoring/db/tsdb/helpers.py,sha256=0oUXc4aUkYtP2SGP6jTb3uPPKImIUsVsrb9otX9a7O4,1189
247
247
  mlrun/model_monitoring/db/tsdb/tdengine/__init__.py,sha256=vgBdsKaXUURKqIf3M0y4sRatmSVA4CQiJs7J5dcVBkQ,620
248
- mlrun/model_monitoring/db/tsdb/tdengine/schemas.py,sha256=SujUl_Bu_dvZD_tn7yxYstp_uuVTkE5Uc8aYKdqs90w,10508
248
+ mlrun/model_monitoring/db/tsdb/tdengine/schemas.py,sha256=7yZFn42sF597TBumVM-xhh1bjIQCbIo6qIvMK5WpWO0,10503
249
249
  mlrun/model_monitoring/db/tsdb/tdengine/stream_graph_steps.py,sha256=Hb0vcCBP-o0ET78mU4P32fnhUL65QZv-pMuv2lnCby4,1586
250
- mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connector.py,sha256=H3Jl8TNZA17yrsHtJdsxNezYPg6J3JlwV8BjDupX9Ho,18665
250
+ mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connector.py,sha256=L4cDFfuGOVyF_bnPbUJ_xhMEt_DGwY6FWwoO4VEXSW4,18671
251
251
  mlrun/model_monitoring/db/tsdb/v3io/__init__.py,sha256=aL3bfmQsUQ-sbvKGdNihFj8gLCK3mSys0qDcXtYOwgc,616
252
252
  mlrun/model_monitoring/db/tsdb/v3io/stream_graph_steps.py,sha256=mbmhN4f_F58ptVjhwoMF6ifZSdnZWhK7x8eNsWS39IA,6217
253
253
  mlrun/model_monitoring/db/tsdb/v3io/v3io_connector.py,sha256=1H-IBXPNJPRAaxDMGWpUU25QqfR87LpZbJ03vaJkICs,32858
@@ -343,11 +343,11 @@ mlrun/utils/notifications/notification/ipython.py,sha256=ZtVL30B_Ha0VGoo4LxO-voT
343
343
  mlrun/utils/notifications/notification/slack.py,sha256=wqpFGr5BTvFO5KuUSzFfxsgmyU1Ohq7fbrGeNe9TXOk,7006
344
344
  mlrun/utils/notifications/notification/webhook.py,sha256=cb9w1Mc8ENfJBdgan7iiVHK9eVls4-R3tUxmXM-P-8I,4746
345
345
  mlrun/utils/version/__init__.py,sha256=7kkrB7hEZ3cLXoWj1kPoDwo4MaswsI2JVOBpbKgPAgc,614
346
- mlrun/utils/version/version.json,sha256=3ANNtWXY4UEFE6BhIv4ABsKlhsIrlpcWJJSvuIvg-Iw,89
346
+ mlrun/utils/version/version.json,sha256=q5cEJlSDRoZA0OSLYB_pHTa6NDst7rvigtmJRxEHYLw,89
347
347
  mlrun/utils/version/version.py,sha256=eEW0tqIAkU9Xifxv8Z9_qsYnNhn3YH7NRAfM-pPLt1g,1878
348
- mlrun-1.7.0rc46.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
349
- mlrun-1.7.0rc46.dist-info/METADATA,sha256=nd09TI_C22BOpwpkzrcZJiCi8F6k8lzfqwDIgeTnDB0,19943
350
- mlrun-1.7.0rc46.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
351
- mlrun-1.7.0rc46.dist-info/entry_points.txt,sha256=1Owd16eAclD5pfRCoJpYC2ZJSyGNTtUr0nCELMioMmU,46
352
- mlrun-1.7.0rc46.dist-info/top_level.txt,sha256=NObLzw3maSF9wVrgSeYBv-fgnHkAJ1kEkh12DLdd5KM,6
353
- mlrun-1.7.0rc46.dist-info/RECORD,,
348
+ mlrun-1.7.0rc47.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
349
+ mlrun-1.7.0rc47.dist-info/METADATA,sha256=mFz9Rh9j0hxTRo8fwrTziz_722E5JijvBB8K32E3X7s,19943
350
+ mlrun-1.7.0rc47.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
351
+ mlrun-1.7.0rc47.dist-info/entry_points.txt,sha256=1Owd16eAclD5pfRCoJpYC2ZJSyGNTtUr0nCELMioMmU,46
352
+ mlrun-1.7.0rc47.dist-info/top_level.txt,sha256=NObLzw3maSF9wVrgSeYBv-fgnHkAJ1kEkh12DLdd5KM,6
353
+ mlrun-1.7.0rc47.dist-info/RECORD,,