mlrun 1.8.0rc47__py3-none-any.whl → 1.8.0rc49__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/datastore/storeytargets.py +9 -5
- mlrun/model_monitoring/applications/context.py +34 -71
- mlrun/model_monitoring/controller.py +6 -4
- mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connector.py +23 -2
- mlrun/model_monitoring/stream_processing.py +3 -0
- mlrun/serving/states.py +6 -2
- mlrun/utils/version/version.json +2 -2
- {mlrun-1.8.0rc47.dist-info → mlrun-1.8.0rc49.dist-info}/METADATA +6 -6
- {mlrun-1.8.0rc47.dist-info → mlrun-1.8.0rc49.dist-info}/RECORD +13 -13
- {mlrun-1.8.0rc47.dist-info → mlrun-1.8.0rc49.dist-info}/WHEEL +0 -0
- {mlrun-1.8.0rc47.dist-info → mlrun-1.8.0rc49.dist-info}/entry_points.txt +0 -0
- {mlrun-1.8.0rc47.dist-info → mlrun-1.8.0rc49.dist-info}/licenses/LICENSE +0 -0
- {mlrun-1.8.0rc47.dist-info → mlrun-1.8.0rc49.dist-info}/top_level.txt +0 -0
mlrun/datastore/storeytargets.py
CHANGED
|
@@ -109,17 +109,20 @@ class StreamStoreyTarget(storey.StreamTarget):
|
|
|
109
109
|
raise mlrun.errors.MLRunInvalidArgumentError("StreamTarget requires a path")
|
|
110
110
|
|
|
111
111
|
_, storage_options = get_url_and_storage_options(uri)
|
|
112
|
-
|
|
112
|
+
_, path = parse_path(uri)
|
|
113
113
|
|
|
114
114
|
access_key = storage_options.get("v3io_access_key")
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
115
|
+
|
|
116
|
+
if alt_key_name := kwargs.pop("alternative_v3io_access_key", None):
|
|
117
|
+
if alt_key := mlrun.get_secret_or_env(alt_key_name):
|
|
118
|
+
access_key = alt_key
|
|
119
|
+
|
|
120
|
+
storage = V3ioDriver(access_key=access_key)
|
|
118
121
|
|
|
119
122
|
if storage_options:
|
|
120
123
|
kwargs["storage"] = storage
|
|
121
124
|
if args:
|
|
122
|
-
args[0] =
|
|
125
|
+
args[0] = path
|
|
123
126
|
if "stream_path" in kwargs:
|
|
124
127
|
kwargs["stream_path"] = path
|
|
125
128
|
|
|
@@ -128,6 +131,7 @@ class StreamStoreyTarget(storey.StreamTarget):
|
|
|
128
131
|
|
|
129
132
|
class KafkaStoreyTarget(storey.KafkaTarget):
|
|
130
133
|
def __init__(self, *args, **kwargs):
|
|
134
|
+
kwargs.pop("alternative_v3io_access_key", None)
|
|
131
135
|
path = kwargs.pop("path")
|
|
132
136
|
attributes = kwargs.pop("attributes", {})
|
|
133
137
|
if path and path.startswith("ds://"):
|
|
@@ -23,12 +23,13 @@ import mlrun.common.constants as mlrun_constants
|
|
|
23
23
|
import mlrun.common.schemas.model_monitoring.constants as mm_constants
|
|
24
24
|
import mlrun.errors
|
|
25
25
|
import mlrun.feature_store as fstore
|
|
26
|
+
import mlrun.feature_store.feature_set as fs
|
|
26
27
|
import mlrun.features
|
|
27
28
|
import mlrun.serving
|
|
28
29
|
import mlrun.utils
|
|
29
30
|
from mlrun.artifacts import Artifact, DatasetArtifact, ModelArtifact, get_model
|
|
30
31
|
from mlrun.common.model_monitoring.helpers import FeatureStats
|
|
31
|
-
from mlrun.common.schemas import
|
|
32
|
+
from mlrun.common.schemas import ModelEndpoint
|
|
32
33
|
from mlrun.model_monitoring.helpers import (
|
|
33
34
|
calculate_inputs_statistics,
|
|
34
35
|
)
|
|
@@ -41,7 +42,6 @@ class _ArtifactsLogger(Protocol):
|
|
|
41
42
|
|
|
42
43
|
def log_artifact(self, *args, **kwargs) -> Artifact: ...
|
|
43
44
|
def log_dataset(self, *args, **kwargs) -> DatasetArtifact: ...
|
|
44
|
-
def log_model(self, *args, **kwargs) -> ModelArtifact: ...
|
|
45
45
|
|
|
46
46
|
|
|
47
47
|
class MonitoringApplicationContext:
|
|
@@ -59,7 +59,7 @@ class MonitoringApplicationContext:
|
|
|
59
59
|
model_endpoint_dict: Optional[dict[str, ModelEndpoint]] = None,
|
|
60
60
|
sample_df: Optional[pd.DataFrame] = None,
|
|
61
61
|
feature_stats: Optional[FeatureStats] = None,
|
|
62
|
-
feature_sets_dict: Optional[dict[str, FeatureSet]] = None,
|
|
62
|
+
feature_sets_dict: Optional[dict[str, fs.FeatureSet]] = None,
|
|
63
63
|
) -> None:
|
|
64
64
|
"""
|
|
65
65
|
The :code:`MonitoringApplicationContext` object holds all the relevant information for the
|
|
@@ -124,9 +124,13 @@ class MonitoringApplicationContext:
|
|
|
124
124
|
self._model_endpoint: Optional[ModelEndpoint] = (
|
|
125
125
|
model_endpoint_dict.get(self.endpoint_id) if model_endpoint_dict else None
|
|
126
126
|
)
|
|
127
|
-
self._feature_set: Optional[FeatureSet] = (
|
|
127
|
+
self._feature_set: Optional[fs.FeatureSet] = (
|
|
128
128
|
feature_sets_dict.get(self.endpoint_id) if feature_sets_dict else None
|
|
129
129
|
)
|
|
130
|
+
store, _, _ = mlrun.store_manager.get_or_create_store(
|
|
131
|
+
mlrun.mlconf.artifact_path
|
|
132
|
+
)
|
|
133
|
+
self.storage_options = store.get_storage_options()
|
|
130
134
|
|
|
131
135
|
@classmethod
|
|
132
136
|
def _from_ml_ctx(
|
|
@@ -169,7 +173,7 @@ class MonitoringApplicationContext:
|
|
|
169
173
|
model_endpoint_dict: Optional[dict[str, ModelEndpoint]] = None,
|
|
170
174
|
sample_df: Optional[pd.DataFrame] = None,
|
|
171
175
|
feature_stats: Optional[FeatureStats] = None,
|
|
172
|
-
feature_sets_dict: Optional[dict[str, FeatureSet]] = None,
|
|
176
|
+
feature_sets_dict: Optional[dict[str, fs.FeatureSet]] = None,
|
|
173
177
|
) -> "MonitoringApplicationContext":
|
|
174
178
|
nuclio_logger = graph_context.logger
|
|
175
179
|
artifacts_logger = graph_context.project_obj
|
|
@@ -192,13 +196,14 @@ class MonitoringApplicationContext:
|
|
|
192
196
|
)
|
|
193
197
|
|
|
194
198
|
def _get_default_labels(self) -> dict[str, str]:
|
|
195
|
-
|
|
199
|
+
labels = {
|
|
196
200
|
mlrun_constants.MLRunInternalLabels.runner_pod: socket.gethostname(),
|
|
197
201
|
mlrun_constants.MLRunInternalLabels.producer_type: "model-monitoring-app",
|
|
198
202
|
mlrun_constants.MLRunInternalLabels.app_name: self.application_name,
|
|
199
203
|
mlrun_constants.MLRunInternalLabels.endpoint_id: self.endpoint_id,
|
|
200
204
|
mlrun_constants.MLRunInternalLabels.endpoint_name: self.endpoint_name,
|
|
201
205
|
}
|
|
206
|
+
return {key: value for key, value in labels.items() if value is not None}
|
|
202
207
|
|
|
203
208
|
def _add_default_labels(self, labels: Optional[dict[str, str]]) -> dict[str, str]:
|
|
204
209
|
"""Add the default labels to logged artifacts labels"""
|
|
@@ -221,22 +226,13 @@ class MonitoringApplicationContext:
|
|
|
221
226
|
"You can either provide the sample dataframe directly, the model endpoint's details and times, "
|
|
222
227
|
"or adapt the application's logic to not access the sample dataframe."
|
|
223
228
|
)
|
|
224
|
-
|
|
225
|
-
features = [f"{feature_set.metadata.name}.*"]
|
|
226
|
-
vector = fstore.FeatureVector(
|
|
227
|
-
name=f"{self.endpoint_id}_vector",
|
|
228
|
-
features=features,
|
|
229
|
-
with_indexes=True,
|
|
230
|
-
)
|
|
231
|
-
vector.metadata.tag = self.application_name
|
|
232
|
-
vector.feature_set_objects = {feature_set.metadata.name: feature_set}
|
|
233
|
-
|
|
234
|
-
offline_response = vector.get_offline_features(
|
|
229
|
+
df = self.feature_set.to_dataframe(
|
|
235
230
|
start_time=self.start_infer_time,
|
|
236
231
|
end_time=self.end_infer_time,
|
|
237
|
-
|
|
232
|
+
time_column=mm_constants.EventFieldType.TIMESTAMP,
|
|
233
|
+
storage_options=self.storage_options,
|
|
238
234
|
)
|
|
239
|
-
self._sample_df =
|
|
235
|
+
self._sample_df = df.reset_index(drop=True)
|
|
240
236
|
return self._sample_df
|
|
241
237
|
|
|
242
238
|
@property
|
|
@@ -259,7 +255,7 @@ class MonitoringApplicationContext:
|
|
|
259
255
|
return self._model_endpoint
|
|
260
256
|
|
|
261
257
|
@property
|
|
262
|
-
def feature_set(self) -> FeatureSet:
|
|
258
|
+
def feature_set(self) -> fs.FeatureSet:
|
|
263
259
|
if not self._feature_set and self.model_endpoint:
|
|
264
260
|
self._feature_set = fstore.get_feature_set(
|
|
265
261
|
self.model_endpoint.spec.monitoring_feature_set_uri
|
|
@@ -329,13 +325,23 @@ class MonitoringApplicationContext:
|
|
|
329
325
|
upload: Optional[bool] = None,
|
|
330
326
|
labels: Optional[dict[str, str]] = None,
|
|
331
327
|
target_path: Optional[str] = None,
|
|
328
|
+
unique_per_endpoint: bool = True,
|
|
332
329
|
**kwargs,
|
|
333
330
|
) -> Artifact:
|
|
334
331
|
"""
|
|
335
332
|
Log an artifact.
|
|
336
333
|
See :func:`~mlrun.projects.MlrunProject.log_artifact` for the documentation.
|
|
334
|
+
:param unique_per_endpoint: by default True, we will log different artifact for each model endpoint,
|
|
335
|
+
set to False without changing item key will cause artifact override
|
|
337
336
|
"""
|
|
338
337
|
labels = self._add_default_labels(labels)
|
|
338
|
+
# By default, we want to log different artifact for each model endpoint
|
|
339
|
+
endpoint_id = labels.get(mlrun_constants.MLRunInternalLabels.endpoint_id, "")
|
|
340
|
+
if unique_per_endpoint and isinstance(item, str):
|
|
341
|
+
item = f"{item}-{endpoint_id}" if endpoint_id else item
|
|
342
|
+
elif unique_per_endpoint: # isinstance(item, Artifact) is True
|
|
343
|
+
item.key = f"{item.key}-{endpoint_id}" if endpoint_id else item.key
|
|
344
|
+
|
|
339
345
|
return self._artifacts_logger.log_artifact(
|
|
340
346
|
item,
|
|
341
347
|
body=body,
|
|
@@ -364,13 +370,21 @@ class MonitoringApplicationContext:
|
|
|
364
370
|
target_path="",
|
|
365
371
|
extra_data=None,
|
|
366
372
|
label_column: Optional[str] = None,
|
|
373
|
+
unique_per_endpoint: bool = True,
|
|
367
374
|
**kwargs,
|
|
368
375
|
) -> DatasetArtifact:
|
|
369
376
|
"""
|
|
370
377
|
Log a dataset artifact.
|
|
371
378
|
See :func:`~mlrun.projects.MlrunProject.log_dataset` for the documentation.
|
|
379
|
+
:param unique_per_endpoint: by default True, we will log different dataset for each model endpoint,
|
|
380
|
+
set to False without changing item key will cause dataset override
|
|
372
381
|
"""
|
|
373
382
|
labels = self._add_default_labels(labels)
|
|
383
|
+
# By default, we want to log different artifact for each model endpoint
|
|
384
|
+
endpoint_id = labels.get(mlrun_constants.MLRunInternalLabels.endpoint_id, "")
|
|
385
|
+
if unique_per_endpoint and isinstance(key, str):
|
|
386
|
+
key = f"{key}-{endpoint_id}" if endpoint_id else key
|
|
387
|
+
|
|
374
388
|
return self._artifacts_logger.log_dataset(
|
|
375
389
|
key,
|
|
376
390
|
df,
|
|
@@ -387,54 +401,3 @@ class MonitoringApplicationContext:
|
|
|
387
401
|
label_column=label_column,
|
|
388
402
|
**kwargs,
|
|
389
403
|
)
|
|
390
|
-
|
|
391
|
-
def log_model(
|
|
392
|
-
self,
|
|
393
|
-
key,
|
|
394
|
-
body=None,
|
|
395
|
-
framework="",
|
|
396
|
-
tag="",
|
|
397
|
-
model_dir=None,
|
|
398
|
-
model_file=None,
|
|
399
|
-
algorithm=None,
|
|
400
|
-
metrics=None,
|
|
401
|
-
parameters=None,
|
|
402
|
-
artifact_path=None,
|
|
403
|
-
upload=None,
|
|
404
|
-
labels=None,
|
|
405
|
-
inputs: Optional[list[mlrun.features.Feature]] = None,
|
|
406
|
-
outputs: Optional[list[mlrun.features.Feature]] = None,
|
|
407
|
-
feature_vector: Optional[str] = None,
|
|
408
|
-
feature_weights: Optional[list] = None,
|
|
409
|
-
training_set=None,
|
|
410
|
-
label_column=None,
|
|
411
|
-
extra_data=None,
|
|
412
|
-
**kwargs,
|
|
413
|
-
) -> ModelArtifact:
|
|
414
|
-
"""
|
|
415
|
-
Log a model artifact.
|
|
416
|
-
See :func:`~mlrun.projects.MlrunProject.log_model` for the documentation.
|
|
417
|
-
"""
|
|
418
|
-
labels = self._add_default_labels(labels)
|
|
419
|
-
return self._artifacts_logger.log_model(
|
|
420
|
-
key,
|
|
421
|
-
body=body,
|
|
422
|
-
framework=framework,
|
|
423
|
-
tag=tag,
|
|
424
|
-
model_dir=model_dir,
|
|
425
|
-
model_file=model_file,
|
|
426
|
-
algorithm=algorithm,
|
|
427
|
-
metrics=metrics,
|
|
428
|
-
parameters=parameters,
|
|
429
|
-
artifact_path=artifact_path,
|
|
430
|
-
upload=upload,
|
|
431
|
-
labels=labels,
|
|
432
|
-
inputs=inputs,
|
|
433
|
-
outputs=outputs,
|
|
434
|
-
feature_vector=feature_vector,
|
|
435
|
-
feature_weights=feature_weights,
|
|
436
|
-
training_set=training_set,
|
|
437
|
-
label_column=label_column,
|
|
438
|
-
extra_data=extra_data,
|
|
439
|
-
**kwargs,
|
|
440
|
-
)
|
|
@@ -311,10 +311,12 @@ class MonitoringApplicationController:
|
|
|
311
311
|
mlrun.platforms.iguazio.KafkaOutputStream,
|
|
312
312
|
]:
|
|
313
313
|
if self._model_monitoring_stream is None:
|
|
314
|
-
self._model_monitoring_stream =
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
314
|
+
self._model_monitoring_stream = (
|
|
315
|
+
mlrun.model_monitoring.helpers.get_output_stream(
|
|
316
|
+
project=self.project,
|
|
317
|
+
function_name=mm_constants.MonitoringFunctionNames.STREAM,
|
|
318
|
+
v3io_access_key=self.model_monitoring_access_key,
|
|
319
|
+
)
|
|
318
320
|
)
|
|
319
321
|
return self._model_monitoring_stream
|
|
320
322
|
|
|
@@ -11,10 +11,11 @@
|
|
|
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 asyncio
|
|
15
16
|
from datetime import datetime, timedelta
|
|
16
17
|
from threading import Lock
|
|
17
|
-
from typing import Callable, Literal, Optional, Union
|
|
18
|
+
from typing import Callable, Final, Literal, Optional, Union
|
|
18
19
|
|
|
19
20
|
import pandas as pd
|
|
20
21
|
import taosws
|
|
@@ -24,6 +25,7 @@ from taoswswrap.tdengine_connection import (
|
|
|
24
25
|
)
|
|
25
26
|
|
|
26
27
|
import mlrun.common.schemas.model_monitoring as mm_schemas
|
|
28
|
+
import mlrun.common.types
|
|
27
29
|
import mlrun.model_monitoring.db.tsdb.tdengine.schemas as tdengine_schemas
|
|
28
30
|
import mlrun.model_monitoring.db.tsdb.tdengine.stream_graph_steps
|
|
29
31
|
from mlrun.datastore.datastore_profile import DatastoreProfile
|
|
@@ -35,6 +37,19 @@ _connection = None
|
|
|
35
37
|
_connection_lock = Lock()
|
|
36
38
|
|
|
37
39
|
|
|
40
|
+
class TDEngineTimestampPrecision(mlrun.common.types.StrEnum):
|
|
41
|
+
"""
|
|
42
|
+
The timestamp precision for the TDEngine database.
|
|
43
|
+
For more information, see:
|
|
44
|
+
https://docs.tdengine.com/tdengine-reference/sql-manual/data-types/#timestamp
|
|
45
|
+
https://docs.tdengine.com/tdengine-reference/sql-manual/manage-databases/#create-database
|
|
46
|
+
"""
|
|
47
|
+
|
|
48
|
+
MILLISECOND = "ms" # TDEngine's default
|
|
49
|
+
MICROSECOND = "us" # MLRun's default
|
|
50
|
+
NANOSECOND = "ns"
|
|
51
|
+
|
|
52
|
+
|
|
38
53
|
class TDEngineConnector(TSDBConnector):
|
|
39
54
|
"""
|
|
40
55
|
Handles the TSDB operations when the TSDB connector is of type TDEngine.
|
|
@@ -47,12 +62,17 @@ class TDEngineConnector(TSDBConnector):
|
|
|
47
62
|
self,
|
|
48
63
|
project: str,
|
|
49
64
|
profile: DatastoreProfile,
|
|
65
|
+
timestamp_precision: TDEngineTimestampPrecision = TDEngineTimestampPrecision.MICROSECOND,
|
|
50
66
|
**kwargs,
|
|
51
67
|
):
|
|
52
68
|
super().__init__(project=project)
|
|
53
69
|
|
|
54
70
|
self._tdengine_connection_profile = profile
|
|
55
71
|
|
|
72
|
+
self._timestamp_precision: Final = ( # cannot be changed after initialization
|
|
73
|
+
timestamp_precision
|
|
74
|
+
)
|
|
75
|
+
|
|
56
76
|
self._init_super_tables()
|
|
57
77
|
|
|
58
78
|
self._run_directly = (
|
|
@@ -105,7 +125,7 @@ class TDEngineConnector(TSDBConnector):
|
|
|
105
125
|
"""Create the database if it does not exist."""
|
|
106
126
|
self.connection.prefix_statements = []
|
|
107
127
|
self.connection.run(
|
|
108
|
-
statements=f"CREATE DATABASE IF NOT EXISTS {self.database}",
|
|
128
|
+
statements=f"CREATE DATABASE IF NOT EXISTS {self.database} PRECISION '{self._timestamp_precision}'",
|
|
109
129
|
timeout=self._timeout,
|
|
110
130
|
retries=self._retries,
|
|
111
131
|
)
|
|
@@ -180,6 +200,7 @@ class TDEngineConnector(TSDBConnector):
|
|
|
180
200
|
columns=columns,
|
|
181
201
|
subtable=table_name,
|
|
182
202
|
values=event,
|
|
203
|
+
timestamp_precision=self._timestamp_precision,
|
|
183
204
|
)
|
|
184
205
|
|
|
185
206
|
self.connection.run(
|
|
@@ -264,6 +264,9 @@ class EventStreamProcessor:
|
|
|
264
264
|
path=stream_uri,
|
|
265
265
|
sharding_func=ControllerEvent.ENDPOINT_ID,
|
|
266
266
|
after="ForwardNOP",
|
|
267
|
+
# Force using the pipeline key instead of the one in the profile in case of v3io profile.
|
|
268
|
+
# In case of Kafka, this parameter will be ignored.
|
|
269
|
+
alternative_v3io_access_key="V3IO_ACCESS_KEY",
|
|
267
270
|
)
|
|
268
271
|
|
|
269
272
|
apply_push_controller_stream(controller_stream_uri)
|
mlrun/serving/states.py
CHANGED
|
@@ -1833,7 +1833,7 @@ def params_to_step(
|
|
|
1833
1833
|
class_args = class_args or {}
|
|
1834
1834
|
|
|
1835
1835
|
if isinstance(class_name, QueueStep):
|
|
1836
|
-
if not name or class_name.name:
|
|
1836
|
+
if not (name or class_name.name):
|
|
1837
1837
|
raise MLRunInvalidArgumentError("queue name must be specified")
|
|
1838
1838
|
|
|
1839
1839
|
step = class_name
|
|
@@ -1854,7 +1854,11 @@ def params_to_step(
|
|
|
1854
1854
|
elif class_name and hasattr(class_name, "to_dict"):
|
|
1855
1855
|
struct = class_name.to_dict()
|
|
1856
1856
|
kind = struct.get("kind", StepKinds.task)
|
|
1857
|
-
name =
|
|
1857
|
+
name = (
|
|
1858
|
+
name
|
|
1859
|
+
or struct.get("name", struct.get("class_name"))
|
|
1860
|
+
or class_name.to_dict(["name"]).get("name")
|
|
1861
|
+
)
|
|
1858
1862
|
cls = classes_map.get(kind, RootFlowStep)
|
|
1859
1863
|
step = cls.from_dict(struct)
|
|
1860
1864
|
step.function = function
|
mlrun/utils/version/version.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mlrun
|
|
3
|
-
Version: 1.8.
|
|
3
|
+
Version: 1.8.0rc49
|
|
4
4
|
Summary: Tracking and config of machine learning runs
|
|
5
5
|
Home-page: https://github.com/mlrun/mlrun
|
|
6
6
|
Author: Yaron Haviv
|
|
@@ -44,7 +44,7 @@ Requires-Dist: semver~=3.0
|
|
|
44
44
|
Requires-Dist: dependency-injector~=4.41
|
|
45
45
|
Requires-Dist: fsspec<2024.7,>=2023.9.2
|
|
46
46
|
Requires-Dist: v3iofs~=0.1.17
|
|
47
|
-
Requires-Dist: storey~=1.8.
|
|
47
|
+
Requires-Dist: storey~=1.8.11
|
|
48
48
|
Requires-Dist: inflection~=0.5.0
|
|
49
49
|
Requires-Dist: python-dotenv~=1.0
|
|
50
50
|
Requires-Dist: setuptools>=75.2
|
|
@@ -99,7 +99,7 @@ Requires-Dist: ossfs==2023.12.0; extra == "alibaba-oss"
|
|
|
99
99
|
Requires-Dist: oss2==2.18.1; extra == "alibaba-oss"
|
|
100
100
|
Provides-Extra: tdengine
|
|
101
101
|
Requires-Dist: taos-ws-py==0.3.2; extra == "tdengine"
|
|
102
|
-
Requires-Dist: taoswswrap~=0.3.
|
|
102
|
+
Requires-Dist: taoswswrap~=0.3.5; extra == "tdengine"
|
|
103
103
|
Provides-Extra: snowflake
|
|
104
104
|
Requires-Dist: snowflake-connector-python~=3.7; extra == "snowflake"
|
|
105
105
|
Provides-Extra: kfp18
|
|
@@ -152,7 +152,7 @@ Requires-Dist: s3fs<2024.7,>=2023.9.2; extra == "all"
|
|
|
152
152
|
Requires-Dist: snowflake-connector-python~=3.7; extra == "all"
|
|
153
153
|
Requires-Dist: sqlalchemy~=1.4; extra == "all"
|
|
154
154
|
Requires-Dist: taos-ws-py==0.3.2; extra == "all"
|
|
155
|
-
Requires-Dist: taoswswrap~=0.3.
|
|
155
|
+
Requires-Dist: taoswswrap~=0.3.5; extra == "all"
|
|
156
156
|
Provides-Extra: complete
|
|
157
157
|
Requires-Dist: adlfs==2023.9.0; extra == "complete"
|
|
158
158
|
Requires-Dist: aiobotocore<2.16,>=2.5.0; extra == "complete"
|
|
@@ -184,7 +184,7 @@ Requires-Dist: s3fs<2024.7,>=2023.9.2; extra == "complete"
|
|
|
184
184
|
Requires-Dist: snowflake-connector-python~=3.7; extra == "complete"
|
|
185
185
|
Requires-Dist: sqlalchemy~=1.4; extra == "complete"
|
|
186
186
|
Requires-Dist: taos-ws-py==0.3.2; extra == "complete"
|
|
187
|
-
Requires-Dist: taoswswrap~=0.3.
|
|
187
|
+
Requires-Dist: taoswswrap~=0.3.5; extra == "complete"
|
|
188
188
|
Provides-Extra: complete-api
|
|
189
189
|
Requires-Dist: adlfs==2023.9.0; extra == "complete-api"
|
|
190
190
|
Requires-Dist: aiobotocore<2.16,>=2.5.0; extra == "complete-api"
|
|
@@ -229,7 +229,7 @@ Requires-Dist: s3fs<2024.7,>=2023.9.2; extra == "complete-api"
|
|
|
229
229
|
Requires-Dist: snowflake-connector-python~=3.7; extra == "complete-api"
|
|
230
230
|
Requires-Dist: sqlalchemy~=1.4; extra == "complete-api"
|
|
231
231
|
Requires-Dist: taos-ws-py==0.3.2; extra == "complete-api"
|
|
232
|
-
Requires-Dist: taoswswrap~=0.3.
|
|
232
|
+
Requires-Dist: taoswswrap~=0.3.5; extra == "complete-api"
|
|
233
233
|
Requires-Dist: timelength~=1.1; extra == "complete-api"
|
|
234
234
|
Requires-Dist: uvicorn~=0.32.1; extra == "complete-api"
|
|
235
235
|
Dynamic: author
|
|
@@ -99,7 +99,7 @@ mlrun/datastore/sources.py,sha256=KQp1nNN7TcaewFm3It03H1R28uzlWGZDDHJyqiT--vw,49
|
|
|
99
99
|
mlrun/datastore/spark_udf.py,sha256=NnnB3DZxZb-rqpRy7b-NC7QWXuuqFn3XkBDc86tU4mQ,1498
|
|
100
100
|
mlrun/datastore/spark_utils.py,sha256=_AsVoU5Ix_-W7Gyq8io8V-2GTk0m8THJNDP3WGGaWJY,2865
|
|
101
101
|
mlrun/datastore/store_resources.py,sha256=PFOMrZ6KH6hBOb0PiO-cHx_kv0UpHu5P2t8_mrR-lS4,6842
|
|
102
|
-
mlrun/datastore/storeytargets.py,sha256=
|
|
102
|
+
mlrun/datastore/storeytargets.py,sha256=dSy9wr4IyxrIE1GHBxzVEeEY1sdU66s4w-oUuaIfa2U,6620
|
|
103
103
|
mlrun/datastore/targets.py,sha256=7qLf26BDH3qYTHOR7TSP0tUMPBhYOkaaOwffUBxgqY0,81201
|
|
104
104
|
mlrun/datastore/utils.py,sha256=CbKbDI6CdFRCqyAXe-jykVvN_GH6R0JkxIQFAogR2GA,10604
|
|
105
105
|
mlrun/datastore/v3io.py,sha256=QSYBORRLcJTeM9mt0EaWzyLcdmzrPkqrF7k5uLTam5U,8209
|
|
@@ -219,16 +219,16 @@ mlrun/launcher/local.py,sha256=775HY-8S9LFUX5ubGXrLO0N1lVh8bn-DHFmNYuNqQPA,11451
|
|
|
219
219
|
mlrun/launcher/remote.py,sha256=rLJW4UAnUT5iUb4BsGBOAV3K4R29a0X4lFtRkVKlyYU,7709
|
|
220
220
|
mlrun/model_monitoring/__init__.py,sha256=ELy7njEtZnz09Dc6PGZSFFEGtnwI15bJNWM3Pj4_YIs,753
|
|
221
221
|
mlrun/model_monitoring/api.py,sha256=LU58dzE4QZiMH23lgiqfI__3m2E3eEZP-DQe2ioUSwM,28317
|
|
222
|
-
mlrun/model_monitoring/controller.py,sha256=
|
|
222
|
+
mlrun/model_monitoring/controller.py,sha256=m4Zx_NQ0C-A7WtjBoXnqBmS11RRtLvBaFgbFbIgrdVc,36847
|
|
223
223
|
mlrun/model_monitoring/features_drift_table.py,sha256=c6GpKtpOJbuT1u5uMWDL_S-6N4YPOmlktWMqPme3KFY,25308
|
|
224
224
|
mlrun/model_monitoring/helpers.py,sha256=8QsoYRPOVSnR3Lcv99m4XYrp_cR6hSqBUflYSOkJmFQ,21019
|
|
225
|
-
mlrun/model_monitoring/stream_processing.py,sha256=
|
|
225
|
+
mlrun/model_monitoring/stream_processing.py,sha256=A66vbrgfWL_sBdAkiPJZmPUFXvQU5phYuyKX6yECtfQ,33558
|
|
226
226
|
mlrun/model_monitoring/tracking_policy.py,sha256=PBIGrUYWrwcE5gwXupBIVzOb0QRRwPJsgQm_yLGQxB4,5595
|
|
227
227
|
mlrun/model_monitoring/writer.py,sha256=ibbhvfSHb8Reqlb7RGFEAUNM4iTyK1gk8-2m46mP6VM,8428
|
|
228
228
|
mlrun/model_monitoring/applications/__init__.py,sha256=xDBxkBjl-whHSG_4t1mLkxiypLH-fzn8TmAW9Mjo2uI,759
|
|
229
229
|
mlrun/model_monitoring/applications/_application_steps.py,sha256=PxULZznKW66Oq-fKaraOAbsTuGnV0zgXh6_91wX3KUo,8367
|
|
230
230
|
mlrun/model_monitoring/applications/base.py,sha256=7XL12idItWkoE3CJ_48F6cwVx5pJH3bgfG92hb8LcN8,24872
|
|
231
|
-
mlrun/model_monitoring/applications/context.py,sha256=
|
|
231
|
+
mlrun/model_monitoring/applications/context.py,sha256=l7HculkdcrWbMLjy9tsxEhm-1X6zxJE5Blk-U7yc-5I,16449
|
|
232
232
|
mlrun/model_monitoring/applications/histogram_data_drift.py,sha256=09t0tfC35W0SeJA3fzN29pJiB6G-V_8GlcvULVq6H9Q,15179
|
|
233
233
|
mlrun/model_monitoring/applications/results.py,sha256=_qmj6TWT0SR2bi7gUyRKBU418eGgGoLW2_hTJ7S-ock,5782
|
|
234
234
|
mlrun/model_monitoring/applications/evidently/__init__.py,sha256=-DqdPnBSrjZhFvKOu_Ie3MiFvlur9sPTZpZ1u0_1AE8,690
|
|
@@ -242,7 +242,7 @@ mlrun/model_monitoring/db/tsdb/helpers.py,sha256=0oUXc4aUkYtP2SGP6jTb3uPPKImIUsV
|
|
|
242
242
|
mlrun/model_monitoring/db/tsdb/tdengine/__init__.py,sha256=vgBdsKaXUURKqIf3M0y4sRatmSVA4CQiJs7J5dcVBkQ,620
|
|
243
243
|
mlrun/model_monitoring/db/tsdb/tdengine/schemas.py,sha256=EslhaR65jfeNdD5Ibk-3Hb4e5r5qYPfHb9rTChX3sG0,12689
|
|
244
244
|
mlrun/model_monitoring/db/tsdb/tdengine/stream_graph_steps.py,sha256=Uadj0UvAmln2MxDWod-kAzau1uNlqZh981rPhbUH_5M,2857
|
|
245
|
-
mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connector.py,sha256=
|
|
245
|
+
mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connector.py,sha256=rpE-RB5sqe5GAkd9MZB4JFzSP1skxs0loC5hhAkNgKk,38747
|
|
246
246
|
mlrun/model_monitoring/db/tsdb/v3io/__init__.py,sha256=aL3bfmQsUQ-sbvKGdNihFj8gLCK3mSys0qDcXtYOwgc,616
|
|
247
247
|
mlrun/model_monitoring/db/tsdb/v3io/stream_graph_steps.py,sha256=_-zo9relCDtjGgievxAcAP9gVN9nDWs8BzGtFwTjb9M,6284
|
|
248
248
|
mlrun/model_monitoring/db/tsdb/v3io/v3io_connector.py,sha256=IzdThNwWMBWo0D0VzXV-WVvGg-z7Y9e8ke8_LYJTeVA,46214
|
|
@@ -306,7 +306,7 @@ mlrun/serving/remote.py,sha256=gxJkj_J3j-sZcVUbUzbAmJafP6t6y4NVFsu0kWmYngA,18818
|
|
|
306
306
|
mlrun/serving/routers.py,sha256=SY6AsaiSnh8ssXq8hQE2z9MYapOxFOFJBx9QomiZMO8,53915
|
|
307
307
|
mlrun/serving/server.py,sha256=KiNhW0nTV5STZPzR6kEAUFVzCCAX8qv0g9AoCopARrM,23429
|
|
308
308
|
mlrun/serving/serving_wrapper.py,sha256=R670-S6PX_d5ER6jiHtRvacuPyFzQH0mEf2K0sBIIOM,836
|
|
309
|
-
mlrun/serving/states.py,sha256=
|
|
309
|
+
mlrun/serving/states.py,sha256=Hh3FBoQbHoO4KiofHfSwi_aUx7mQ26iXpKijcGiDJ6c,73341
|
|
310
310
|
mlrun/serving/utils.py,sha256=k2EIYDWHUGkE-IBI6T0UNT32fw-KySsccIJM_LObI00,4171
|
|
311
311
|
mlrun/serving/v1_serving.py,sha256=c6J_MtpE-Tqu00-6r4eJOCO6rUasHDal9W2eBIcrl50,11853
|
|
312
312
|
mlrun/serving/v2_serving.py,sha256=b3C5Utv2_AOPrH_hPi3NarjNbAK3kRoeIfqMU4qNuUo,25362
|
|
@@ -340,11 +340,11 @@ mlrun/utils/notifications/notification/mail.py,sha256=ZyJ3eqd8simxffQmXzqd3bgbAq
|
|
|
340
340
|
mlrun/utils/notifications/notification/slack.py,sha256=eQvmctTh6wIG5xVOesLLV9S1-UUCu5UEQ9JIJOor3ts,7183
|
|
341
341
|
mlrun/utils/notifications/notification/webhook.py,sha256=NeyIMSBojjjTJaUHmPbxMByp34GxYkl1-16NqzU27fU,4943
|
|
342
342
|
mlrun/utils/version/__init__.py,sha256=7kkrB7hEZ3cLXoWj1kPoDwo4MaswsI2JVOBpbKgPAgc,614
|
|
343
|
-
mlrun/utils/version/version.json,sha256=
|
|
343
|
+
mlrun/utils/version/version.json,sha256=b0zzWDuszZWG3WY9mCKveicaqnMi13s_l0qH8nfwiWA,89
|
|
344
344
|
mlrun/utils/version/version.py,sha256=eEW0tqIAkU9Xifxv8Z9_qsYnNhn3YH7NRAfM-pPLt1g,1878
|
|
345
|
-
mlrun-1.8.
|
|
346
|
-
mlrun-1.8.
|
|
347
|
-
mlrun-1.8.
|
|
348
|
-
mlrun-1.8.
|
|
349
|
-
mlrun-1.8.
|
|
350
|
-
mlrun-1.8.
|
|
345
|
+
mlrun-1.8.0rc49.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
346
|
+
mlrun-1.8.0rc49.dist-info/METADATA,sha256=Jznk4YH97II00VXkbNbjBzb2TybeurNx-a_S--ZYVHk,26009
|
|
347
|
+
mlrun-1.8.0rc49.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
|
|
348
|
+
mlrun-1.8.0rc49.dist-info/entry_points.txt,sha256=1Owd16eAclD5pfRCoJpYC2ZJSyGNTtUr0nCELMioMmU,46
|
|
349
|
+
mlrun-1.8.0rc49.dist-info/top_level.txt,sha256=NObLzw3maSF9wVrgSeYBv-fgnHkAJ1kEkh12DLdd5KM,6
|
|
350
|
+
mlrun-1.8.0rc49.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|