mlrun 1.7.0rc28__py3-none-any.whl → 1.7.0rc30__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/common/constants.py +1 -1
- mlrun/common/formatters/artifact.py +1 -0
- mlrun/common/schemas/model_monitoring/__init__.py +1 -0
- mlrun/common/schemas/model_monitoring/constants.py +11 -1
- mlrun/common/schemas/project.py +1 -0
- mlrun/config.py +13 -5
- mlrun/datastore/base.py +17 -12
- mlrun/datastore/inmem.py +1 -1
- mlrun/datastore/targets.py +4 -10
- mlrun/db/base.py +1 -0
- mlrun/db/httpdb.py +2 -0
- mlrun/db/nopdb.py +1 -0
- mlrun/launcher/local.py +2 -2
- mlrun/model.py +11 -2
- mlrun/model_monitoring/api.py +3 -3
- mlrun/model_monitoring/applications/histogram_data_drift.py +4 -1
- mlrun/model_monitoring/db/stores/__init__.py +7 -2
- mlrun/model_monitoring/db/stores/sqldb/models/base.py +9 -7
- mlrun/model_monitoring/db/stores/sqldb/models/mysql.py +4 -2
- mlrun/model_monitoring/db/tsdb/__init__.py +6 -1
- mlrun/model_monitoring/db/tsdb/v3io/v3io_connector.py +0 -1
- mlrun/projects/operations.py +1 -0
- mlrun/run.py +1 -1
- mlrun/runtimes/base.py +1 -1
- mlrun/runtimes/local.py +8 -4
- mlrun/utils/helpers.py +10 -1
- mlrun/utils/notifications/notification_pusher.py +1 -1
- mlrun/utils/version/version.json +2 -2
- {mlrun-1.7.0rc28.dist-info → mlrun-1.7.0rc30.dist-info}/METADATA +4 -4
- {mlrun-1.7.0rc28.dist-info → mlrun-1.7.0rc30.dist-info}/RECORD +34 -34
- {mlrun-1.7.0rc28.dist-info → mlrun-1.7.0rc30.dist-info}/WHEEL +1 -1
- {mlrun-1.7.0rc28.dist-info → mlrun-1.7.0rc30.dist-info}/LICENSE +0 -0
- {mlrun-1.7.0rc28.dist-info → mlrun-1.7.0rc30.dist-info}/entry_points.txt +0 -0
- {mlrun-1.7.0rc28.dist-info → mlrun-1.7.0rc30.dist-info}/top_level.txt +0 -0
mlrun/common/constants.py
CHANGED
|
@@ -11,7 +11,6 @@
|
|
|
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
|
-
#
|
|
15
14
|
|
|
16
15
|
IMAGE_NAME_ENRICH_REGISTRY_PREFIX = "." # prefix for image name to enrich with registry
|
|
17
16
|
MLRUN_SERVING_CONF = "serving-conf"
|
|
@@ -70,6 +69,7 @@ class MLRunInternalLabels:
|
|
|
70
69
|
job_type = "job-type"
|
|
71
70
|
kind = "kind"
|
|
72
71
|
component = "component"
|
|
72
|
+
mlrun_type = "mlrun__type"
|
|
73
73
|
|
|
74
74
|
owner = "owner"
|
|
75
75
|
v3io_user = "v3io_user"
|
|
@@ -17,6 +17,7 @@ from dataclasses import dataclass
|
|
|
17
17
|
from enum import Enum, IntEnum
|
|
18
18
|
from typing import Optional
|
|
19
19
|
|
|
20
|
+
import mlrun.common.constants
|
|
20
21
|
import mlrun.common.helpers
|
|
21
22
|
from mlrun.common.types import StrEnum
|
|
22
23
|
|
|
@@ -187,6 +188,12 @@ class ProjectSecretKeys:
|
|
|
187
188
|
]
|
|
188
189
|
|
|
189
190
|
|
|
191
|
+
class ModelEndpointTargetSchemas(MonitoringStrEnum):
|
|
192
|
+
V3IO = "v3io"
|
|
193
|
+
MYSQL = "mysql"
|
|
194
|
+
SQLITE = "sqlite"
|
|
195
|
+
|
|
196
|
+
|
|
190
197
|
class ModelMonitoringStoreKinds:
|
|
191
198
|
ENDPOINTS = "endpoints"
|
|
192
199
|
EVENTS = "events"
|
|
@@ -348,7 +355,7 @@ class ResultStatusApp(IntEnum):
|
|
|
348
355
|
|
|
349
356
|
|
|
350
357
|
class ModelMonitoringAppLabel:
|
|
351
|
-
KEY =
|
|
358
|
+
KEY = mlrun.common.constants.MLRunInternalLabels.mlrun_type
|
|
352
359
|
VAL = "mlrun__model-monitoring-application"
|
|
353
360
|
|
|
354
361
|
def __str__(self) -> str:
|
|
@@ -371,3 +378,6 @@ class PredictionsQueryConstants:
|
|
|
371
378
|
|
|
372
379
|
class SpecialApps:
|
|
373
380
|
MLRUN_INFRA = "mlrun-infra"
|
|
381
|
+
|
|
382
|
+
|
|
383
|
+
_RESERVED_FUNCTION_NAMES = MonitoringFunctionNames.list() + [SpecialApps.MLRUN_INFRA]
|
mlrun/common/schemas/project.py
CHANGED
|
@@ -126,6 +126,7 @@ class ProjectSummary(pydantic.BaseModel):
|
|
|
126
126
|
pipelines_completed_recent_count: typing.Optional[int] = None
|
|
127
127
|
pipelines_failed_recent_count: typing.Optional[int] = None
|
|
128
128
|
pipelines_running_count: typing.Optional[int] = None
|
|
129
|
+
updated: typing.Optional[datetime.datetime] = None
|
|
129
130
|
|
|
130
131
|
|
|
131
132
|
class IguazioProject(pydantic.BaseModel):
|
mlrun/config.py
CHANGED
|
@@ -64,11 +64,15 @@ default_config = {
|
|
|
64
64
|
"api_base_version": "v1",
|
|
65
65
|
"version": "", # will be set to current version
|
|
66
66
|
"images_tag": "", # tag to use with mlrun images e.g. mlrun/mlrun (defaults to version)
|
|
67
|
-
|
|
67
|
+
# registry to use with mlrun images that start with "mlrun/" e.g. quay.io/ (defaults to empty, for dockerhub)
|
|
68
|
+
"images_registry": "",
|
|
69
|
+
# registry to use with non-mlrun images (don't start with "mlrun/") specified in 'images_to_enrich_registry'
|
|
70
|
+
# defaults to empty, for dockerhub
|
|
71
|
+
"vendor_images_registry": "",
|
|
68
72
|
# comma separated list of images that are in the specified images_registry, and therefore will be enriched with this
|
|
69
73
|
# registry when used. default to mlrun/* which means any image which is of the mlrun repository (mlrun/mlrun,
|
|
70
74
|
# mlrun/ml-base, etc...)
|
|
71
|
-
"images_to_enrich_registry": "^mlrun
|
|
75
|
+
"images_to_enrich_registry": "^mlrun/*,python:3.9",
|
|
72
76
|
"kfp_url": "",
|
|
73
77
|
"kfp_ttl": "14400", # KFP ttl in sec, after that completed PODs will be deleted
|
|
74
78
|
"kfp_image": "mlrun/mlrun", # image to use for KFP runner (defaults to mlrun/mlrun)
|
|
@@ -104,7 +108,12 @@ default_config = {
|
|
|
104
108
|
# max number of parallel abort run jobs in runs monitoring
|
|
105
109
|
"concurrent_abort_stale_runs_workers": 10,
|
|
106
110
|
"list_runs_time_period_in_days": 7, # days
|
|
107
|
-
}
|
|
111
|
+
},
|
|
112
|
+
"projects": {
|
|
113
|
+
"summaries": {
|
|
114
|
+
"cache_interval": "30",
|
|
115
|
+
},
|
|
116
|
+
},
|
|
108
117
|
},
|
|
109
118
|
"crud": {
|
|
110
119
|
"runs": {
|
|
@@ -250,7 +259,7 @@ default_config = {
|
|
|
250
259
|
"remote": "mlrun/mlrun",
|
|
251
260
|
"dask": "mlrun/ml-base",
|
|
252
261
|
"mpijob": "mlrun/mlrun",
|
|
253
|
-
"application": "python:3.9
|
|
262
|
+
"application": "python:3.9",
|
|
254
263
|
},
|
|
255
264
|
# see enrich_function_preemption_spec for more info,
|
|
256
265
|
# and mlrun.common.schemas.function.PreemptionModes for available options
|
|
@@ -433,7 +442,6 @@ default_config = {
|
|
|
433
442
|
"followers": "",
|
|
434
443
|
# This is used as the interval for the sync loop both when mlrun is leader and follower
|
|
435
444
|
"periodic_sync_interval": "1 minute",
|
|
436
|
-
"counters_cache_ttl": "2 minutes",
|
|
437
445
|
"project_owners_cache_ttl": "30 seconds",
|
|
438
446
|
# access key to be used when the leader is iguazio and polling is done from it
|
|
439
447
|
"iguazio_access_key": "",
|
mlrun/datastore/base.py
CHANGED
|
@@ -215,6 +215,11 @@ class DataStore:
|
|
|
215
215
|
raise mlrun.errors.MLRunInvalidArgumentError(
|
|
216
216
|
"When providing start_time or end_time, must provide time_column"
|
|
217
217
|
)
|
|
218
|
+
if start_time and end_time and start_time.tzinfo != end_time.tzinfo:
|
|
219
|
+
raise mlrun.errors.MLRunInvalidArgumentError(
|
|
220
|
+
"start_time and end_time must have the same time zone"
|
|
221
|
+
)
|
|
222
|
+
|
|
218
223
|
if start_time or end_time or additional_filters:
|
|
219
224
|
partitions_time_attributes = find_partitions(url, file_system)
|
|
220
225
|
set_filters(
|
|
@@ -232,13 +237,17 @@ class DataStore:
|
|
|
232
237
|
):
|
|
233
238
|
raise ex
|
|
234
239
|
|
|
235
|
-
|
|
236
|
-
if start_time
|
|
237
|
-
start_time_inner = start_time.replace(
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
240
|
+
start_time_inner = None
|
|
241
|
+
if start_time:
|
|
242
|
+
start_time_inner = start_time.replace(
|
|
243
|
+
tzinfo=None if start_time.tzinfo else pytz.utc
|
|
244
|
+
)
|
|
245
|
+
|
|
246
|
+
end_time_inner = None
|
|
247
|
+
if end_time:
|
|
248
|
+
end_time_inner = end_time.replace(
|
|
249
|
+
tzinfo=None if end_time.tzinfo else pytz.utc
|
|
250
|
+
)
|
|
242
251
|
|
|
243
252
|
set_filters(
|
|
244
253
|
partitions_time_attributes,
|
|
@@ -319,11 +328,7 @@ class DataStore:
|
|
|
319
328
|
dfs.append(df_module.read_csv(*updated_args, **kwargs))
|
|
320
329
|
return df_module.concat(dfs)
|
|
321
330
|
|
|
322
|
-
elif (
|
|
323
|
-
file_url.endswith(".parquet")
|
|
324
|
-
or file_url.endswith(".pq")
|
|
325
|
-
or format == "parquet"
|
|
326
|
-
):
|
|
331
|
+
elif mlrun.utils.helpers.is_parquet_file(file_url, format):
|
|
327
332
|
if columns:
|
|
328
333
|
kwargs["columns"] = columns
|
|
329
334
|
|
mlrun/datastore/inmem.py
CHANGED
|
@@ -72,7 +72,7 @@ class InMemoryStore(DataStore):
|
|
|
72
72
|
if columns:
|
|
73
73
|
kwargs["usecols"] = columns
|
|
74
74
|
reader = df_module.read_csv
|
|
75
|
-
elif
|
|
75
|
+
elif mlrun.utils.helpers.is_parquet_file(url, format):
|
|
76
76
|
if columns:
|
|
77
77
|
kwargs["columns"] = columns
|
|
78
78
|
reader = df_module.read_parquet
|
mlrun/datastore/targets.py
CHANGED
|
@@ -549,9 +549,7 @@ class BaseStoreTarget(DataTargetBase):
|
|
|
549
549
|
os.makedirs(dir, exist_ok=True)
|
|
550
550
|
target_df = df
|
|
551
551
|
partition_cols = None # single parquet file
|
|
552
|
-
if not
|
|
553
|
-
".pq"
|
|
554
|
-
): # directory
|
|
552
|
+
if not mlrun.utils.helpers.is_parquet_file(target_path): # directory
|
|
555
553
|
partition_cols = []
|
|
556
554
|
if timestamp_key and (
|
|
557
555
|
self.partitioned or self.time_partitioning_granularity
|
|
@@ -918,10 +916,8 @@ class ParquetTarget(BaseStoreTarget):
|
|
|
918
916
|
if time_unit == time_partitioning_granularity:
|
|
919
917
|
break
|
|
920
918
|
|
|
921
|
-
if (
|
|
922
|
-
|
|
923
|
-
and not self.get_target_path().endswith(".parquet")
|
|
924
|
-
and not self.get_target_path().endswith(".pq")
|
|
919
|
+
if not self.partitioned and not mlrun.utils.helpers.is_parquet_file(
|
|
920
|
+
self.get_target_path()
|
|
925
921
|
):
|
|
926
922
|
partition_cols = []
|
|
927
923
|
|
|
@@ -1040,9 +1036,7 @@ class ParquetTarget(BaseStoreTarget):
|
|
|
1040
1036
|
return result
|
|
1041
1037
|
|
|
1042
1038
|
def is_single_file(self):
|
|
1043
|
-
|
|
1044
|
-
return self.path.endswith(".parquet") or self.path.endswith(".pq")
|
|
1045
|
-
return False
|
|
1039
|
+
return mlrun.utils.helpers.is_parquet_file(self.path)
|
|
1046
1040
|
|
|
1047
1041
|
def prepare_spark_df(self, df, key_columns, timestamp_key=None, spark_options=None):
|
|
1048
1042
|
# If partitioning by time, add the necessary columns
|
mlrun/db/base.py
CHANGED
mlrun/db/httpdb.py
CHANGED
|
@@ -1033,6 +1033,7 @@ class HTTPRunDB(RunDBInterface):
|
|
|
1033
1033
|
mlrun.common.schemas.artifact.ArtifactsDeletionStrategies.metadata_only
|
|
1034
1034
|
),
|
|
1035
1035
|
secrets: dict = None,
|
|
1036
|
+
iter=None,
|
|
1036
1037
|
):
|
|
1037
1038
|
"""Delete an artifact.
|
|
1038
1039
|
|
|
@@ -1051,6 +1052,7 @@ class HTTPRunDB(RunDBInterface):
|
|
|
1051
1052
|
"tag": tag,
|
|
1052
1053
|
"tree": tree,
|
|
1053
1054
|
"uid": uid,
|
|
1055
|
+
"iter": iter,
|
|
1054
1056
|
"deletion_strategy": deletion_strategy,
|
|
1055
1057
|
}
|
|
1056
1058
|
error = f"del artifact {project}/{key}"
|
mlrun/db/nopdb.py
CHANGED
mlrun/launcher/local.py
CHANGED
|
@@ -72,9 +72,9 @@ class ClientLocalLauncher(launcher.ClientBaseLauncher):
|
|
|
72
72
|
reset_on_run: Optional[bool] = None,
|
|
73
73
|
) -> "mlrun.run.RunObject":
|
|
74
74
|
# do not allow local function to be scheduled
|
|
75
|
-
if
|
|
75
|
+
if schedule is not None:
|
|
76
76
|
raise mlrun.errors.MLRunInvalidArgumentError(
|
|
77
|
-
"
|
|
77
|
+
f"Unexpected {schedule=} parameter for local function execution"
|
|
78
78
|
)
|
|
79
79
|
|
|
80
80
|
self.enrich_runtime(runtime, project)
|
mlrun/model.py
CHANGED
|
@@ -737,8 +737,17 @@ class Notification(ModelObj):
|
|
|
737
737
|
self.kind
|
|
738
738
|
).get_notification()
|
|
739
739
|
|
|
740
|
-
secret_params = self.secret_params
|
|
741
|
-
params = self.params
|
|
740
|
+
secret_params = self.secret_params or {}
|
|
741
|
+
params = self.params or {}
|
|
742
|
+
|
|
743
|
+
# if the secret_params are already masked - no need to validate
|
|
744
|
+
params_secret = secret_params.get("secret", "")
|
|
745
|
+
if params_secret:
|
|
746
|
+
if len(secret_params) > 1:
|
|
747
|
+
raise mlrun.errors.MLRunInvalidArgumentError(
|
|
748
|
+
"When the 'secret' key is present, 'secret_params' should not contain any other keys."
|
|
749
|
+
)
|
|
750
|
+
return
|
|
742
751
|
|
|
743
752
|
if not secret_params and not params:
|
|
744
753
|
raise mlrun.errors.MLRunInvalidArgumentError(
|
mlrun/model_monitoring/api.py
CHANGED
|
@@ -569,10 +569,10 @@ def _create_model_monitoring_function_base(
|
|
|
569
569
|
"please use `ModelMonitoringApplicationBaseV2`. It will be removed in 1.9.0.",
|
|
570
570
|
FutureWarning,
|
|
571
571
|
)
|
|
572
|
-
if name in mm_constants.
|
|
572
|
+
if name in mm_constants._RESERVED_FUNCTION_NAMES:
|
|
573
573
|
raise mlrun.errors.MLRunInvalidArgumentError(
|
|
574
|
-
|
|
575
|
-
f"{mm_constants.
|
|
574
|
+
"An application cannot have the following names: "
|
|
575
|
+
f"{mm_constants._RESERVED_FUNCTION_NAMES}"
|
|
576
576
|
)
|
|
577
577
|
if func is None:
|
|
578
578
|
func = ""
|
|
@@ -195,7 +195,10 @@ class HistogramDataDriftApplication(ModelMonitoringApplicationBaseV2):
|
|
|
195
195
|
EventFieldType.CURRENT_STATS: json.dumps(
|
|
196
196
|
monitoring_context.sample_df_stats
|
|
197
197
|
),
|
|
198
|
-
EventFieldType.DRIFT_MEASURES:
|
|
198
|
+
EventFieldType.DRIFT_MEASURES: json.dumps(
|
|
199
|
+
metrics_per_feature.T.to_dict()
|
|
200
|
+
| {metric.name: metric.value for metric in metrics}
|
|
201
|
+
),
|
|
199
202
|
EventFieldType.DRIFT_STATUS: status.value,
|
|
200
203
|
},
|
|
201
204
|
)
|
|
@@ -100,7 +100,9 @@ def get_store_object(
|
|
|
100
100
|
:param store_connection_string: Optional explicit connection string of the store.
|
|
101
101
|
|
|
102
102
|
:return: `StoreBase` object. Using this object, the user can apply different operations such as write, update, get
|
|
103
|
-
|
|
103
|
+
and delete a model endpoint record.
|
|
104
|
+
:raise: `MLRunInvalidMMStoreType` if the user didn't provide store connection
|
|
105
|
+
or the provided store connection is invalid.
|
|
104
106
|
"""
|
|
105
107
|
|
|
106
108
|
store_connection_string = (
|
|
@@ -121,7 +123,10 @@ def get_store_object(
|
|
|
121
123
|
mlrun.common.schemas.model_monitoring.ModelEndpointTarget.V3IO_NOSQL
|
|
122
124
|
)
|
|
123
125
|
else:
|
|
124
|
-
|
|
126
|
+
raise mlrun.errors.MLRunInvalidMMStoreType(
|
|
127
|
+
"You must provide a valid store connection by using "
|
|
128
|
+
"set_model_monitoring_credentials API."
|
|
129
|
+
)
|
|
125
130
|
# Get store type value from ObjectStoreFactory enum class
|
|
126
131
|
store_type_fact = ObjectStoreFactory(store_type)
|
|
127
132
|
|
|
@@ -11,8 +11,10 @@
|
|
|
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
|
from sqlalchemy import (
|
|
15
|
-
|
|
16
|
+
DATETIME,
|
|
17
|
+
TIMESTAMP, # TODO: migrate to DATETIME, see ML-6921
|
|
16
18
|
Boolean,
|
|
17
19
|
Column,
|
|
18
20
|
Float,
|
|
@@ -90,11 +92,11 @@ class ModelEndpointsBaseTable(BaseModel):
|
|
|
90
92
|
metrics = Column(EventFieldType.METRICS, Text)
|
|
91
93
|
first_request = Column(
|
|
92
94
|
EventFieldType.FIRST_REQUEST,
|
|
93
|
-
TIMESTAMP(timezone=True),
|
|
95
|
+
TIMESTAMP(timezone=True), # TODO: migrate to DATETIME, see ML-6921
|
|
94
96
|
)
|
|
95
97
|
last_request = Column(
|
|
96
98
|
EventFieldType.LAST_REQUEST,
|
|
97
|
-
TIMESTAMP(timezone=True),
|
|
99
|
+
TIMESTAMP(timezone=True), # TODO: migrate to DATETIME, see ML-6921
|
|
98
100
|
)
|
|
99
101
|
|
|
100
102
|
|
|
@@ -122,11 +124,11 @@ class ApplicationResultBaseTable(BaseModel):
|
|
|
122
124
|
|
|
123
125
|
start_infer_time = Column(
|
|
124
126
|
WriterEvent.START_INFER_TIME,
|
|
125
|
-
|
|
127
|
+
DATETIME(timezone=True),
|
|
126
128
|
)
|
|
127
129
|
end_infer_time = Column(
|
|
128
130
|
WriterEvent.END_INFER_TIME,
|
|
129
|
-
|
|
131
|
+
DATETIME(timezone=True),
|
|
130
132
|
)
|
|
131
133
|
|
|
132
134
|
result_status = Column(ResultData.RESULT_STATUS, String(10))
|
|
@@ -152,11 +154,11 @@ class ApplicationMetricsBaseTable(BaseModel):
|
|
|
152
154
|
)
|
|
153
155
|
start_infer_time = Column(
|
|
154
156
|
WriterEvent.START_INFER_TIME,
|
|
155
|
-
|
|
157
|
+
DATETIME(timezone=True),
|
|
156
158
|
)
|
|
157
159
|
end_infer_time = Column(
|
|
158
160
|
WriterEvent.END_INFER_TIME,
|
|
159
|
-
|
|
161
|
+
DATETIME(timezone=True),
|
|
160
162
|
)
|
|
161
163
|
metric_name = Column(
|
|
162
164
|
MetricData.METRIC_NAME,
|
|
@@ -34,10 +34,12 @@ Base = declarative_base()
|
|
|
34
34
|
class ModelEndpointsTable(Base, ModelEndpointsBaseTable):
|
|
35
35
|
first_request = Column(
|
|
36
36
|
EventFieldType.FIRST_REQUEST,
|
|
37
|
+
# TODO: migrate to DATETIME, see ML-6921
|
|
37
38
|
sqlalchemy.dialects.mysql.TIMESTAMP(fsp=3, timezone=True),
|
|
38
39
|
)
|
|
39
40
|
last_request = Column(
|
|
40
41
|
EventFieldType.LAST_REQUEST,
|
|
42
|
+
# TODO: migrate to DATETIME, see ML-6921
|
|
41
43
|
sqlalchemy.dialects.mysql.TIMESTAMP(fsp=3, timezone=True),
|
|
42
44
|
)
|
|
43
45
|
|
|
@@ -52,11 +54,11 @@ class _ApplicationResultOrMetric:
|
|
|
52
54
|
|
|
53
55
|
start_infer_time = Column(
|
|
54
56
|
WriterEvent.START_INFER_TIME,
|
|
55
|
-
sqlalchemy.dialects.mysql.
|
|
57
|
+
sqlalchemy.dialects.mysql.DATETIME(fsp=3, timezone=True),
|
|
56
58
|
)
|
|
57
59
|
end_infer_time = Column(
|
|
58
60
|
WriterEvent.END_INFER_TIME,
|
|
59
|
-
sqlalchemy.dialects.mysql.
|
|
61
|
+
sqlalchemy.dialects.mysql.DATETIME(fsp=3, timezone=True),
|
|
60
62
|
)
|
|
61
63
|
|
|
62
64
|
@declared_attr
|
|
@@ -76,6 +76,8 @@ def get_tsdb_connector(
|
|
|
76
76
|
|
|
77
77
|
:return: `TSDBConnector` object. The main goal of this object is to handle different operations on the
|
|
78
78
|
TSDB connector such as updating drift metrics or write application record result.
|
|
79
|
+
:raise: `MLRunInvalidMMStoreType` if the user didn't provide TSDB connection
|
|
80
|
+
or the provided TSDB connection is invalid.
|
|
79
81
|
"""
|
|
80
82
|
|
|
81
83
|
tsdb_connection_string = (
|
|
@@ -91,7 +93,10 @@ def get_tsdb_connector(
|
|
|
91
93
|
elif tsdb_connection_string and tsdb_connection_string == "v3io":
|
|
92
94
|
tsdb_connector_type = mlrun.common.schemas.model_monitoring.TSDBTarget.V3IO_TSDB
|
|
93
95
|
else:
|
|
94
|
-
|
|
96
|
+
raise mlrun.errors.MLRunInvalidMMStoreType(
|
|
97
|
+
"You must provide a valid tsdb store connection by using "
|
|
98
|
+
"set_model_monitoring_credentials API."
|
|
99
|
+
)
|
|
95
100
|
|
|
96
101
|
# Get connector type value from ObjectTSDBFactory enum class
|
|
97
102
|
tsdb_connector_factory = ObjectTSDBFactory(tsdb_connector_type)
|
|
@@ -599,7 +599,6 @@ class V3IOTSDBConnector(TSDBConnector):
|
|
|
599
599
|
end=end,
|
|
600
600
|
columns=[mm_schemas.EventFieldType.LATENCY],
|
|
601
601
|
filter_query=f"endpoint_id=='{endpoint_id}'",
|
|
602
|
-
interval=aggregation_window,
|
|
603
602
|
agg_funcs=agg_funcs,
|
|
604
603
|
sliding_window_step=aggregation_window,
|
|
605
604
|
)
|
mlrun/projects/operations.py
CHANGED
mlrun/run.py
CHANGED
|
@@ -639,7 +639,7 @@ def code_to_function(
|
|
|
639
639
|
:param requirements: a list of python packages
|
|
640
640
|
:param requirements_file: path to a python requirements file
|
|
641
641
|
:param categories: list of categories for mlrun Function Hub, defaults to None
|
|
642
|
-
:param labels:
|
|
642
|
+
:param labels: name/value pairs dict to tag the function with useful metadata, defaults to None
|
|
643
643
|
:param with_doc: indicates whether to document the function parameters, defaults to True
|
|
644
644
|
:param ignored_tags: notebook cells to ignore when converting notebooks to py code (separated by ';')
|
|
645
645
|
|
mlrun/runtimes/base.py
CHANGED
mlrun/runtimes/local.py
CHANGED
|
@@ -58,7 +58,9 @@ class ParallelRunner:
|
|
|
58
58
|
|
|
59
59
|
return TrackerManager()
|
|
60
60
|
|
|
61
|
-
def _get_handler(
|
|
61
|
+
def _get_handler(
|
|
62
|
+
self, handler: str, context: MLClientCtx, embed_in_sys: bool = True
|
|
63
|
+
):
|
|
62
64
|
return handler
|
|
63
65
|
|
|
64
66
|
def _get_dask_client(self, options):
|
|
@@ -86,7 +88,7 @@ class ParallelRunner:
|
|
|
86
88
|
handler = runobj.spec.handler
|
|
87
89
|
self._force_handler(handler)
|
|
88
90
|
set_paths(self.spec.pythonpath)
|
|
89
|
-
handler = self._get_handler(handler, execution)
|
|
91
|
+
handler = self._get_handler(handler, execution, embed_in_sys=False)
|
|
90
92
|
|
|
91
93
|
client, function_name = self._get_dask_client(generator.options)
|
|
92
94
|
parallel_runs = generator.options.parallel_runs or 4
|
|
@@ -224,12 +226,14 @@ class LocalRuntime(BaseRuntime, ParallelRunner):
|
|
|
224
226
|
def is_deployed(self):
|
|
225
227
|
return True
|
|
226
228
|
|
|
227
|
-
def _get_handler(
|
|
229
|
+
def _get_handler(
|
|
230
|
+
self, handler: str, context: MLClientCtx, embed_in_sys: bool = True
|
|
231
|
+
):
|
|
228
232
|
command = self.spec.command
|
|
229
233
|
if not command and self.spec.build.functionSourceCode:
|
|
230
234
|
# if the code is embedded in the function object extract or find it
|
|
231
235
|
command, _ = mlrun.run.load_func_code(self)
|
|
232
|
-
return load_module(command, handler, context)
|
|
236
|
+
return load_module(command, handler, context, embed_in_sys=embed_in_sys)
|
|
233
237
|
|
|
234
238
|
def _pre_run(self, runobj: RunObject, execution: MLClientCtx):
|
|
235
239
|
workdir = self.spec.workdir
|
mlrun/utils/helpers.py
CHANGED
|
@@ -819,7 +819,6 @@ def enrich_image_url(
|
|
|
819
819
|
tag += resolve_image_tag_suffix(
|
|
820
820
|
mlrun_version=mlrun_version, python_version=client_python_version
|
|
821
821
|
)
|
|
822
|
-
registry = config.images_registry
|
|
823
822
|
|
|
824
823
|
# it's an mlrun image if the repository is mlrun
|
|
825
824
|
is_mlrun_image = image_url.startswith("mlrun/") or "/mlrun/" in image_url
|
|
@@ -827,6 +826,10 @@ def enrich_image_url(
|
|
|
827
826
|
if is_mlrun_image and tag and ":" not in image_url:
|
|
828
827
|
image_url = f"{image_url}:{tag}"
|
|
829
828
|
|
|
829
|
+
registry = (
|
|
830
|
+
config.images_registry if is_mlrun_image else config.vendor_images_registry
|
|
831
|
+
)
|
|
832
|
+
|
|
830
833
|
enrich_registry = False
|
|
831
834
|
# enrich registry only if images_to_enrich_registry provided
|
|
832
835
|
# example: "^mlrun/*" means enrich only if the image repository is mlrun and registry is not specified (in which
|
|
@@ -1698,6 +1701,12 @@ def format_alert_summary(
|
|
|
1698
1701
|
return result
|
|
1699
1702
|
|
|
1700
1703
|
|
|
1704
|
+
def is_parquet_file(file_path, format_=None):
|
|
1705
|
+
return (file_path and file_path.endswith((".parquet", ".pq"))) or (
|
|
1706
|
+
format_ == "parquet"
|
|
1707
|
+
)
|
|
1708
|
+
|
|
1709
|
+
|
|
1701
1710
|
def _reload(module, max_recursion_depth):
|
|
1702
1711
|
"""Recursively reload modules."""
|
|
1703
1712
|
if max_recursion_depth <= 0:
|
|
@@ -484,7 +484,7 @@ class NotificationPusher(_NotificationPusherBase):
|
|
|
484
484
|
def _get_workflow_manifest(
|
|
485
485
|
workflow_id: str,
|
|
486
486
|
) -> typing.Optional[mlrun_pipelines.models.PipelineManifest]:
|
|
487
|
-
kfp_client = mlrun_pipelines.utils.get_client(mlrun.mlconf)
|
|
487
|
+
kfp_client = mlrun_pipelines.utils.get_client(mlrun.mlconf.kfp_url)
|
|
488
488
|
|
|
489
489
|
# arbitrary timeout of 5 seconds, the workflow should be done by now
|
|
490
490
|
kfp_run = kfp_client.wait_for_run_completion(workflow_id, 5)
|
mlrun/utils/version/version.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: mlrun
|
|
3
|
-
Version: 1.7.
|
|
3
|
+
Version: 1.7.0rc30
|
|
4
4
|
Summary: Tracking and config of machine learning runs
|
|
5
5
|
Home-page: https://github.com/mlrun/mlrun
|
|
6
6
|
Author: Yaron Haviv
|
|
@@ -35,7 +35,7 @@ Requires-Dist: pyarrow <15,>=10.0
|
|
|
35
35
|
Requires-Dist: pyyaml <7,>=5.4.1
|
|
36
36
|
Requires-Dist: requests ~=2.31
|
|
37
37
|
Requires-Dist: tabulate ~=0.8.6
|
|
38
|
-
Requires-Dist: v3io ~=0.6.
|
|
38
|
+
Requires-Dist: v3io ~=0.6.6
|
|
39
39
|
Requires-Dist: pydantic <1.10.15,>=1.10.8
|
|
40
40
|
Requires-Dist: mergedeep ~=1.3
|
|
41
41
|
Requires-Dist: v3io-frames ~=0.10.14
|
|
@@ -50,8 +50,8 @@ Requires-Dist: setuptools ~=69.1
|
|
|
50
50
|
Requires-Dist: deprecated ~=1.2
|
|
51
51
|
Requires-Dist: jinja2 >=3.1.3,~=3.1
|
|
52
52
|
Requires-Dist: orjson <4,>=3.9.15
|
|
53
|
-
Requires-Dist: mlrun-pipelines-kfp-common ~=0.1.
|
|
54
|
-
Requires-Dist: mlrun-pipelines-kfp-v1-8 ~=0.1.
|
|
53
|
+
Requires-Dist: mlrun-pipelines-kfp-common ~=0.1.3
|
|
54
|
+
Requires-Dist: mlrun-pipelines-kfp-v1-8 ~=0.1.3
|
|
55
55
|
Provides-Extra: alibaba-oss
|
|
56
56
|
Requires-Dist: ossfs ==2023.12.0 ; extra == 'alibaba-oss'
|
|
57
57
|
Requires-Dist: oss2 ==2.18.1 ; extra == 'alibaba-oss'
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
mlrun/__init__.py,sha256=y08M1JcKXy5-9_5WaI9fn5aV5BxIQ5QkbduJK0OxWbA,7470
|
|
2
2
|
mlrun/__main__.py,sha256=iAifncsrQQx6ozXXmz7GH1OiNl8PA7KS3TnwlxnHGeo,45890
|
|
3
|
-
mlrun/config.py,sha256=
|
|
3
|
+
mlrun/config.py,sha256=a7Z_OWF9X4nw61l0ZElFEG95RnpwXCb2SQziHivm4L8,65123
|
|
4
4
|
mlrun/errors.py,sha256=VpC_imeSz2twRMZZb7u90Zj29z6aO-tCxUHD3ZA_Axw,7465
|
|
5
5
|
mlrun/execution.py,sha256=StasIZWmnbRjXDn5d7VU6DWu1fs_AJQckSiUKlSYL9M,42021
|
|
6
6
|
mlrun/features.py,sha256=m17K_3l9Jktwb9dOwlHLTAPTlemsWrRF7dJhXUX0iJU,15429
|
|
7
7
|
mlrun/k8s_utils.py,sha256=WdUajadvAhTR7sAMQdwFqKeJMimuTyqm02VdwK1A4xU,7023
|
|
8
8
|
mlrun/lists.py,sha256=3PqBdcajdwhTe1XuFsAaHTuFVM2kjwepf31qqE82apg,8384
|
|
9
|
-
mlrun/model.py,sha256=
|
|
9
|
+
mlrun/model.py,sha256=rkwDmPyg0Q8ZUTaOCNthyf-wsmTHNa4QG_hPyMVm-GQ,73448
|
|
10
10
|
mlrun/render.py,sha256=n8SeY3ogVrsV02-7-H0lt1RmpkxGpbI-11RQx61Vq9E,13267
|
|
11
|
-
mlrun/run.py,sha256=
|
|
11
|
+
mlrun/run.py,sha256=mSRHCmya2q8rK9Hs6iVKcV2ek9k2ULckVuVHViYQZUo,42886
|
|
12
12
|
mlrun/secrets.py,sha256=ibtCK79u7JVBZF6F0SP1-xXXF5MyrLEUs_TCWiJAnlc,7798
|
|
13
13
|
mlrun/alerts/__init__.py,sha256=0gtG1BG0DXxFrXegIkjbM1XEN4sP9ODo0ucXrNld1hU,601
|
|
14
14
|
mlrun/alerts/alert.py,sha256=JJfMFF-o0j8oTAIkyXAQG0YbU-kZlIDl0A8ILQi8vfA,6510
|
|
@@ -20,14 +20,14 @@ mlrun/artifacts/manager.py,sha256=I_1mgQ0M8j9JgryFJsB2yN3Pv47oQM6Jfg1fotTPDX0,15
|
|
|
20
20
|
mlrun/artifacts/model.py,sha256=ObUkqFMejYOtq0CDFdpYwzwhQ5bsHv0dHTysuVPJnbs,21102
|
|
21
21
|
mlrun/artifacts/plots.py,sha256=dS0mHGt1b20tN2JyEH9H5o5I0oMKZkzn3Uz_3Hf4WjU,4813
|
|
22
22
|
mlrun/common/__init__.py,sha256=xY3wHC4TEJgez7qtnn1pQvHosi8-5UJOCtyGBS7FcGE,571
|
|
23
|
-
mlrun/common/constants.py,sha256=
|
|
23
|
+
mlrun/common/constants.py,sha256=MdXxRPquVguW98WCnEUcJ9A46MOo-MrafFTk7QOK8BA,3052
|
|
24
24
|
mlrun/common/helpers.py,sha256=LRIULbCg8afKkPnzsZ99-B-JPVjcwR1G9vO--1rzRrQ,1387
|
|
25
25
|
mlrun/common/secrets.py,sha256=vc8WV82EZsCB5ENjUkObFOzZP59aZ1w8F82PTnqwBnc,5181
|
|
26
26
|
mlrun/common/types.py,sha256=cs8AtoI6LSuf2LF5Hg2ZSQ0QTex5_KqVSmNAU8_rnlk,1037
|
|
27
27
|
mlrun/common/db/__init__.py,sha256=xY3wHC4TEJgez7qtnn1pQvHosi8-5UJOCtyGBS7FcGE,571
|
|
28
28
|
mlrun/common/db/sql_session.py,sha256=Znc8KE2oLy4lg3_vRki1sVlNx59TgDSOTCXfU561hBU,2659
|
|
29
29
|
mlrun/common/formatters/__init__.py,sha256=91yPb5xoLK7fTIOC5C7ndJMvyEBlQY6f0CjenLYbsZw,785
|
|
30
|
-
mlrun/common/formatters/artifact.py,sha256=
|
|
30
|
+
mlrun/common/formatters/artifact.py,sha256=t4LmoWCFjPJ_YzzQCC2aMJwOeeLi84le979m6OTRyoM,1401
|
|
31
31
|
mlrun/common/formatters/base.py,sha256=LHwWWnQJCmvlnOCCmG8YtJ_xzs0xBI8PujYDL5Ky9H4,4101
|
|
32
32
|
mlrun/common/formatters/function.py,sha256=fGa5m5aI_XvQdvrUr73dmUwrEJrE_8wM4_P4q8RgBTg,1477
|
|
33
33
|
mlrun/common/formatters/pipeline.py,sha256=hGUV_3wcTEMa-JouspbjgJ1JGKa2Wc5cXSaH2XhOdMc,1763
|
|
@@ -59,7 +59,7 @@ mlrun/common/schemas/notification.py,sha256=Ge7eWNGf_XUFkjOnUkyUOubdEbmXh9z_OSGc
|
|
|
59
59
|
mlrun/common/schemas/object.py,sha256=VleJSUmDJMl92knLgaDE8SWCi3ky0UaHcwcwOIapPQ8,1980
|
|
60
60
|
mlrun/common/schemas/pagination.py,sha256=q7nk6bipkDiE7HExIVqhy5ANl-zv0x8QC9Kg6AkLtDA,887
|
|
61
61
|
mlrun/common/schemas/pipeline.py,sha256=MhH07_fAQXNAnmf5j6oXZp8qh9cxGcZlReMdt-ZJf40,1429
|
|
62
|
-
mlrun/common/schemas/project.py,sha256=
|
|
62
|
+
mlrun/common/schemas/project.py,sha256=jETPmrjUeNJPEcLKIFaXhEbkm2lhU43vE8tAdY_Qdg0,4940
|
|
63
63
|
mlrun/common/schemas/regex.py,sha256=8_vbDeAE0SODJDj7yUFg1FbaB9CNydYQTJ29JxE74Kc,776
|
|
64
64
|
mlrun/common/schemas/runs.py,sha256=yGGJxSHT_Mq4RLjlfuxW4pm9i-Py9eOsGUAofs_VqVM,1268
|
|
65
65
|
mlrun/common/schemas/runtime_resource.py,sha256=2rSuYL-9JkESSomlnU91mYDbfV-IkqZeXx6OHuMmDxs,1554
|
|
@@ -67,8 +67,8 @@ mlrun/common/schemas/schedule.py,sha256=nD9kxH2KjXkbGZPNfzVNlNSxbyFZmZUlwtT04_z2
|
|
|
67
67
|
mlrun/common/schemas/secret.py,sha256=51tCN1F8DFTq4y_XdHIMDy3I1TnMEBX8kO8BHKavYF4,1484
|
|
68
68
|
mlrun/common/schemas/tag.py,sha256=OAn9Qt6z8ibqw8uU8WQSvuwY8irUv45Dhx2Ko5FzUss,884
|
|
69
69
|
mlrun/common/schemas/workflow.py,sha256=eRoaOBFiWbvP0iwZ6Aof5JmheV81A0-0PGi8L4vuXmI,1823
|
|
70
|
-
mlrun/common/schemas/model_monitoring/__init__.py,sha256=
|
|
71
|
-
mlrun/common/schemas/model_monitoring/constants.py,sha256=
|
|
70
|
+
mlrun/common/schemas/model_monitoring/__init__.py,sha256=Z_tv5dO-tT_oHMSk98AnDQW0XM-fXqNKduFxkW3jO_E,1809
|
|
71
|
+
mlrun/common/schemas/model_monitoring/constants.py,sha256=izIN1HUF_rWpbxVR2AYXGww-Noq9rnx2k7zOvrRt7Js,9921
|
|
72
72
|
mlrun/common/schemas/model_monitoring/grafana.py,sha256=SG13MFUUz_tk6-mWeSx17qcdEW4ekicxqNtnMSwRTCY,1559
|
|
73
73
|
mlrun/common/schemas/model_monitoring/model_endpoints.py,sha256=3wPlCFNoBsHlCMgyJlXfNP-ZqIRsBXzyBX79O2PHkeg,13799
|
|
74
74
|
mlrun/data_types/__init__.py,sha256=EkxfkFoHb91zz3Aymq-KZfCHlPMzEc3bBqgzPUwmHWY,1087
|
|
@@ -79,14 +79,14 @@ mlrun/data_types/to_pandas.py,sha256=_QLSxMn9MPlXxcu1Ki_slzZx2eJbWJzrGvBR7_K-wcQ
|
|
|
79
79
|
mlrun/datastore/__init__.py,sha256=pQQI_Vi7H45Bbe6f9JaF8dOgtGWf3qY9_kd8NNTfaog,4093
|
|
80
80
|
mlrun/datastore/alibaba_oss.py,sha256=OfQ9AbsJNBFF9DFgUdq38TvKw6qwnHmEcnH-nze6ZZg,4827
|
|
81
81
|
mlrun/datastore/azure_blob.py,sha256=T0IzgBQJxcv8c97VJ1KDayvo_dkxLlgQboa7vcx1WEk,9077
|
|
82
|
-
mlrun/datastore/base.py,sha256=
|
|
82
|
+
mlrun/datastore/base.py,sha256=1HDFJBAdYZUDFowwG_OiUeM6CXAgVaKula2QyLoJQiM,25800
|
|
83
83
|
mlrun/datastore/datastore.py,sha256=vbawdOBXr4qjj8lvFxrd1PmHNIis45UWFcbvJ7S6hN8,9215
|
|
84
84
|
mlrun/datastore/datastore_profile.py,sha256=9g467ic1vuTP_HY101mMXG_smnLxkjhuBp6dR4_LIkg,18937
|
|
85
85
|
mlrun/datastore/dbfs_store.py,sha256=5IkxnFQXkW0fdx-ca5jjQnUdTsTfNdJzMvV31ZpDNrM,6634
|
|
86
86
|
mlrun/datastore/filestore.py,sha256=nS3Ie6jG41NDiW_as9tF8Nu5maaSVEKYKUr1IQtPhuA,3767
|
|
87
87
|
mlrun/datastore/google_cloud_storage.py,sha256=ctcfnZ41-uyNd3qjPe-VO9DAtfikhpNPPb8L9coKcr0,6272
|
|
88
88
|
mlrun/datastore/hdfs.py,sha256=TfL1zUWVRxEHF9kswZtOzrMdDmhSfiSVIAjz7fxWyVw,1876
|
|
89
|
-
mlrun/datastore/inmem.py,sha256=
|
|
89
|
+
mlrun/datastore/inmem.py,sha256=myYn8aR85BjY89ioUInKUH3MLJNoItuG-r6zGP_0teM,2780
|
|
90
90
|
mlrun/datastore/redis.py,sha256=OKMkDCU3APhxfo65SyJq605u1DsfOYH0fODnCXZRqEU,5575
|
|
91
91
|
mlrun/datastore/s3.py,sha256=moTbuBy7YydP_2frCpN8DjmVRMzg9M2R20CN6RTe_Ls,8330
|
|
92
92
|
mlrun/datastore/snowflake_utils.py,sha256=Wohvnlmq8j1d98RCaknll-iWdZZpSlCrKhUOEy0_-CA,1483
|
|
@@ -94,17 +94,17 @@ mlrun/datastore/sources.py,sha256=cm7uZp5IKd_x2uZ6peAysNXIvIvYQze0-QQzp64Jf_o,46
|
|
|
94
94
|
mlrun/datastore/spark_udf.py,sha256=NnnB3DZxZb-rqpRy7b-NC7QWXuuqFn3XkBDc86tU4mQ,1498
|
|
95
95
|
mlrun/datastore/spark_utils.py,sha256=50rllp6xXpXY__1LbU7aTXUU5ca8dKAfoskPre3npZo,1611
|
|
96
96
|
mlrun/datastore/store_resources.py,sha256=rcLoG506AMmR8qPJU_gE-G5d34VJVV_vNlZ3VHqho6c,6869
|
|
97
|
-
mlrun/datastore/targets.py,sha256=
|
|
97
|
+
mlrun/datastore/targets.py,sha256=9l_7-rpwaWnamtgViXM7WXk5Zs5jfqJP9RteeqJblM4,80748
|
|
98
98
|
mlrun/datastore/utils.py,sha256=l9dLZb_VCbHs_htqMFRv4qiestZ8z8K-4eY1MxHS8wE,7720
|
|
99
99
|
mlrun/datastore/v3io.py,sha256=tmZ2S-POZhjjKPE_0T1EkHcv6Q10pz5KQiaTXE1Be-4,8102
|
|
100
100
|
mlrun/datastore/wasbfs/__init__.py,sha256=s5Ul-0kAhYqFjKDR2X0O2vDGDbLQQduElb32Ev56Te4,1343
|
|
101
101
|
mlrun/datastore/wasbfs/fs.py,sha256=MnSj7Q4OKA2L55ihCmUnj2t3GA3B77oLMdAw-yxvN9w,6151
|
|
102
102
|
mlrun/db/__init__.py,sha256=WqJ4x8lqJ7ZoKbhEyFqkYADd9P6E3citckx9e9ZLcIU,1163
|
|
103
103
|
mlrun/db/auth_utils.py,sha256=hpg8D2r82oN0BWabuWN04BTNZ7jYMAF242YSUpK7LFM,5211
|
|
104
|
-
mlrun/db/base.py,sha256=
|
|
104
|
+
mlrun/db/base.py,sha256=aC95Or4q10Hpw9JvsxPa17D8FJmhj6jzRRlroADwpws,24018
|
|
105
105
|
mlrun/db/factory.py,sha256=ibIrE5QkIIyzDU1FXKrfbc31cZiRLYKDZb8dqCpQwyU,2397
|
|
106
|
-
mlrun/db/httpdb.py,sha256=
|
|
107
|
-
mlrun/db/nopdb.py,sha256=
|
|
106
|
+
mlrun/db/httpdb.py,sha256=KxujVYpRSU-_2mWMWK_mhP_uY4CDUDkY1Fv-onuUq2k,183267
|
|
107
|
+
mlrun/db/nopdb.py,sha256=gKqoDBtE4KqO_apaTOfwLX6Ym0Mz_-jN7jcwB4sdMSA,20724
|
|
108
108
|
mlrun/feature_store/__init__.py,sha256=FhHRc8NdqL_HWpCs7A8dKruxJS5wEm55Gs3dcgBiRUg,1522
|
|
109
109
|
mlrun/feature_store/api.py,sha256=uYheyPkJOVCrz1jivvpGatgy_JBAq0It0XZqPpNVQkE,48699
|
|
110
110
|
mlrun/feature_store/common.py,sha256=DKmoRk04NCS1gv7qZuEUa2-g8WsfR6IWjYctcrqKVlg,12853
|
|
@@ -208,10 +208,10 @@ mlrun/launcher/__init__.py,sha256=JL8qkT1lLr1YvW6iP0hmwDTaSR2RfrMDx0-1gWRhTOE,57
|
|
|
208
208
|
mlrun/launcher/base.py,sha256=ud1qc2v66-84haAVBuQ2e0IsOzvd_bleSVVImwNWhwE,16461
|
|
209
209
|
mlrun/launcher/client.py,sha256=kgju2mvGuVlvJWRk8sL8qTKF0lf_cSPK2nqYz1oZy3E,6196
|
|
210
210
|
mlrun/launcher/factory.py,sha256=RW7mfzEFi8fR0M-4W1JQg1iq3_muUU6OTqT_3l4Ubrk,2338
|
|
211
|
-
mlrun/launcher/local.py,sha256=
|
|
211
|
+
mlrun/launcher/local.py,sha256=pP9-ZrNL8OnNDEiXTAKAZQnmLpS_mCc2v-mJw329eks,11269
|
|
212
212
|
mlrun/launcher/remote.py,sha256=tGICSfWtvUHeR31mbzy6gqHejmDxjPUgjtxXTWhRubg,7699
|
|
213
213
|
mlrun/model_monitoring/__init__.py,sha256=dm5_j0_pwqrdzFwTaEtGnKfv2nVpNaM56nBI-oqLbNU,879
|
|
214
|
-
mlrun/model_monitoring/api.py,sha256=
|
|
214
|
+
mlrun/model_monitoring/api.py,sha256=WMxB4MMrsturFwyr1G1CHOddt0d_VSYcNEobjuxkjHg,27815
|
|
215
215
|
mlrun/model_monitoring/application.py,sha256=RJ8HeAPfGO3P2A_dEZYNg60c1wKTADh2YSv8BQ5embg,745
|
|
216
216
|
mlrun/model_monitoring/controller.py,sha256=MQ4BF3vfJSyYZv6HuTuSLt_nqaflgBYyOSwCccbwaio,27981
|
|
217
217
|
mlrun/model_monitoring/controller_handler.py,sha256=J9Y9ppLsQaxyYRl21165Rr7QuI9EM-mk-5veAqs4Bi0,1336
|
|
@@ -228,21 +228,21 @@ mlrun/model_monitoring/applications/_application_steps.py,sha256=-g9jxIAFM5f22iJ
|
|
|
228
228
|
mlrun/model_monitoring/applications/base.py,sha256=buVKyghH4AB3chZ5py1vyMIFnTF-deY8YDf_fPC9BnQ,11307
|
|
229
229
|
mlrun/model_monitoring/applications/context.py,sha256=i-9h6pWyrS8mjw53zd0kb_Dsf9ReS8cSfnth8PvOEI4,8571
|
|
230
230
|
mlrun/model_monitoring/applications/evidently_base.py,sha256=AE_eIz-GEYm3AZTrMCiqF9bcSMlvYk08LJb6bKWAQLg,8057
|
|
231
|
-
mlrun/model_monitoring/applications/histogram_data_drift.py,sha256=
|
|
231
|
+
mlrun/model_monitoring/applications/histogram_data_drift.py,sha256=TE6995h2PyO4lytVngH2HidhXFY7reLupWi4cHmdZdw,13163
|
|
232
232
|
mlrun/model_monitoring/applications/results.py,sha256=VVlu9Si7Tj2LNJzPQrp4_Qeyh9mxOVMu1Jwb5K2LfvY,3577
|
|
233
233
|
mlrun/model_monitoring/db/__init__.py,sha256=6Ic-X3Fh9XLPYMytmevGNSs-Hii1rAjLLoFTSPwTguw,736
|
|
234
|
-
mlrun/model_monitoring/db/stores/__init__.py,sha256=
|
|
234
|
+
mlrun/model_monitoring/db/stores/__init__.py,sha256=ZScmxeZZ3yZ84MocdDGRtvVIixSo0rAPiuLpavXTgJw,4737
|
|
235
235
|
mlrun/model_monitoring/db/stores/base/__init__.py,sha256=JufJETW3BXzPhFwbRa8dMf7BFGGZKceIWIMgr5x9n9c,599
|
|
236
236
|
mlrun/model_monitoring/db/stores/base/store.py,sha256=cUXEA0HKiwIE3FzuUuH40kIzJMgJuiuOMrKbfIzR4Ig,7386
|
|
237
237
|
mlrun/model_monitoring/db/stores/sqldb/__init__.py,sha256=6CsTXAxeLbbf8yfCADTaxmiavqwrLEdYFJ-qc5kgDAY,569
|
|
238
238
|
mlrun/model_monitoring/db/stores/sqldb/sql_store.py,sha256=iel2aXAMsaFmZJVraCTmAJrNv-IIbUGejjbo-LWKrgo,25730
|
|
239
239
|
mlrun/model_monitoring/db/stores/sqldb/models/__init__.py,sha256=lCiGw9WKPtHAIgrtNS2jyvM5OZvZvogBh76iurNYblg,2453
|
|
240
|
-
mlrun/model_monitoring/db/stores/sqldb/models/base.py,sha256=
|
|
241
|
-
mlrun/model_monitoring/db/stores/sqldb/models/mysql.py,sha256=
|
|
240
|
+
mlrun/model_monitoring/db/stores/sqldb/models/base.py,sha256=V2B5WdQM0KHKq0FNDq61q7tkNJ9fNRbxfnxrholKgjk,5352
|
|
241
|
+
mlrun/model_monitoring/db/stores/sqldb/models/mysql.py,sha256=tCzc5ANPxZw7tIPsn9p30woK0_s2HU_FsNzA3hL2wQs,2666
|
|
242
242
|
mlrun/model_monitoring/db/stores/sqldb/models/sqlite.py,sha256=yJJZppbKj3PsOANS_DXAQFFHKX4cQcm6Pz2DoxRiXMk,1104
|
|
243
243
|
mlrun/model_monitoring/db/stores/v3io_kv/__init__.py,sha256=6CsTXAxeLbbf8yfCADTaxmiavqwrLEdYFJ-qc5kgDAY,569
|
|
244
244
|
mlrun/model_monitoring/db/stores/v3io_kv/kv_store.py,sha256=OfhR5N4tfVkERgkzRQaKx8Y41HnqAaYJ6fJltiJa6lk,26909
|
|
245
|
-
mlrun/model_monitoring/db/tsdb/__init__.py,sha256=
|
|
245
|
+
mlrun/model_monitoring/db/tsdb/__init__.py,sha256=_Mfa4gguX86OS1fQCxnt_QSaNh603-zPYAK8NjYk7t8,4040
|
|
246
246
|
mlrun/model_monitoring/db/tsdb/base.py,sha256=sESs5U71a-iJKI-999sAloYH-mjOR3uSEQG7BxRs6No,13134
|
|
247
247
|
mlrun/model_monitoring/db/tsdb/helpers.py,sha256=0oUXc4aUkYtP2SGP6jTb3uPPKImIUsVsrb9otX9a7O4,1189
|
|
248
248
|
mlrun/model_monitoring/db/tsdb/tdengine/__init__.py,sha256=vgBdsKaXUURKqIf3M0y4sRatmSVA4CQiJs7J5dcVBkQ,620
|
|
@@ -251,7 +251,7 @@ mlrun/model_monitoring/db/tsdb/tdengine/stream_graph_steps.py,sha256=x1cWM2ystgh
|
|
|
251
251
|
mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connector.py,sha256=oplt9s-C-OGa__V456nkHwvyBe5YHxcuIJcYV9GFQHY,15521
|
|
252
252
|
mlrun/model_monitoring/db/tsdb/v3io/__init__.py,sha256=aL3bfmQsUQ-sbvKGdNihFj8gLCK3mSys0qDcXtYOwgc,616
|
|
253
253
|
mlrun/model_monitoring/db/tsdb/v3io/stream_graph_steps.py,sha256=qbiyBzrdWLJAKLmJV4K8jUxsAMbKGZ1vip7WNfRcpXM,4764
|
|
254
|
-
mlrun/model_monitoring/db/tsdb/v3io/v3io_connector.py,sha256=
|
|
254
|
+
mlrun/model_monitoring/db/tsdb/v3io/v3io_connector.py,sha256=hroUaoxbvKHDqM5L01p4EuYNuFjzaUQyT-HWt47LJCY,26362
|
|
255
255
|
mlrun/model_monitoring/metrics/__init__.py,sha256=6CsTXAxeLbbf8yfCADTaxmiavqwrLEdYFJ-qc5kgDAY,569
|
|
256
256
|
mlrun/model_monitoring/metrics/histogram_distance.py,sha256=E9_WIl2vd6qNvoHVHoFcnuQk3ekbFWOdi8aU7sHrfk4,4724
|
|
257
257
|
mlrun/package/__init__.py,sha256=uWILzN42bcq5vFRk6ptxEmn1I5uBWAnhaJr7e4H834w,7082
|
|
@@ -274,17 +274,17 @@ mlrun/package/utils/type_hint_utils.py,sha256=JYrek6vuN3z7e6MGUD3qBLDfQ03C4puZXN
|
|
|
274
274
|
mlrun/platforms/__init__.py,sha256=ggSGF7inITs6S-vj9u4S9X_5psgbA0G3GVqf7zu8qYc,2406
|
|
275
275
|
mlrun/platforms/iguazio.py,sha256=1h5BpdAEQJBg2vIt7ySjUADU0ip5OkaMYr0_VREi9ys,13084
|
|
276
276
|
mlrun/projects/__init__.py,sha256=Lv5rfxyXJrw6WGOWJKhBz66M6t3_zsNMCfUD6waPwx4,1153
|
|
277
|
-
mlrun/projects/operations.py,sha256=
|
|
277
|
+
mlrun/projects/operations.py,sha256=Y-NwrIFXpltUXcDLDQ9b33NY_r4TOPvJgO4F-xSuzoM,19252
|
|
278
278
|
mlrun/projects/pipelines.py,sha256=Xc9tQSBBPEg1Yxn-b4RseFdfO7SvrYC-ekdw_hAcPH8,40006
|
|
279
279
|
mlrun/projects/project.py,sha256=r_7_wPYNxkJUUZ0X_tOKzxTN5kn4vdKXK0Z6FMfGhr8,183253
|
|
280
280
|
mlrun/runtimes/__init__.py,sha256=0-tYDkew-Cr4DM-wztvMbzDA5xq385Jjo-GrtO_84Sc,8741
|
|
281
|
-
mlrun/runtimes/base.py,sha256=
|
|
281
|
+
mlrun/runtimes/base.py,sha256=g716uF0BpL6vLe75bNqpJ2SjtYW_tQqICl46d_4ljHs,37633
|
|
282
282
|
mlrun/runtimes/daskjob.py,sha256=JfK8rSPY-0SYnLJdtp_ts3oKyad0pA98th-2VntYzK0,19387
|
|
283
283
|
mlrun/runtimes/funcdoc.py,sha256=CC9cWRPgBiM2sk4NJTqusjc6O9kZ-49vGA5WRPjREKE,9796
|
|
284
284
|
mlrun/runtimes/function_reference.py,sha256=iWKRe4r2GTc5S8FOIASYUNLwwne8NqIui51PFr8Q4mg,4918
|
|
285
285
|
mlrun/runtimes/generators.py,sha256=v28HdNgxdHvj888G1dTnUeQZz-D9iTO0hoGeZbCdiuQ,7241
|
|
286
286
|
mlrun/runtimes/kubejob.py,sha256=ptBnMTIjukbEznkdixmbGvBqzujXrRzqNfP7ze6M76M,8660
|
|
287
|
-
mlrun/runtimes/local.py,sha256=
|
|
287
|
+
mlrun/runtimes/local.py,sha256=h_w0tzCfF1_tZZEjw-FJHqYmoxK-AhN2skpK7cdU1JI,22611
|
|
288
288
|
mlrun/runtimes/pod.py,sha256=XeV6CMlCxPb776bWNESkh0ImwHeia65KL_tvCSdNzlo,63249
|
|
289
289
|
mlrun/runtimes/remotesparkjob.py,sha256=9DPxDK8x08t9nReMo083TBxJiiqA83mHCbdtxrjj7AU,7426
|
|
290
290
|
mlrun/runtimes/utils.py,sha256=OFATL8d0c5vKN9N2enAu2oS3b4H71RfeG776ZnfZ0J4,14332
|
|
@@ -326,7 +326,7 @@ mlrun/utils/azure_vault.py,sha256=IEFizrDGDbAaoWwDr1WoA88S_EZ0T--vjYtY-i0cvYQ,34
|
|
|
326
326
|
mlrun/utils/clones.py,sha256=mJpx4nyFiY6jlBCvFABsNuyi_mr1mvfPWn81vlafpOU,7361
|
|
327
327
|
mlrun/utils/condition_evaluator.py,sha256=-nGfRmZzivn01rHTroiGY4rqEv8T1irMyhzxEei-sKc,1897
|
|
328
328
|
mlrun/utils/db.py,sha256=KEa-vzicUhzIwo1wBXax2ZuXtYgf5to7wnsY3CYCiOQ,1713
|
|
329
|
-
mlrun/utils/helpers.py,sha256=
|
|
329
|
+
mlrun/utils/helpers.py,sha256=Pl1LzfuDVzpQtDC23VFvnuWY8UHs-o7zcYcpNcSF3To,56976
|
|
330
330
|
mlrun/utils/http.py,sha256=l_JCPrCq8bfYUcUcAFWUPvb9Xu-93bLGIhV-H-XCU9s,8707
|
|
331
331
|
mlrun/utils/logger.py,sha256=cag2J30-jynIHmHZ2J8RYmVMNhYBGgAoimc5sbk-A1U,10016
|
|
332
332
|
mlrun/utils/regex.py,sha256=b0AUa2THS-ELzJj0grl5b8Stq609F2XomTZkD9SB1fQ,4900
|
|
@@ -335,7 +335,7 @@ mlrun/utils/singleton.py,sha256=p1Y-X0mPSs_At092GS-pZCA8CTR62HOqPU07_ZH6-To,869
|
|
|
335
335
|
mlrun/utils/v3io_clients.py,sha256=F7zO2NaXSSih6B35LkwuKW_y2CdV5C1ztP-Xs2FsgpQ,1282
|
|
336
336
|
mlrun/utils/vault.py,sha256=xUiKL17dCXjwQJ33YRzQj0oadUXATlFWPzKKYAESoQk,10447
|
|
337
337
|
mlrun/utils/notifications/__init__.py,sha256=eUzQDBxSQmMZASRY-YAnYS6tL5801P0wEjycp3Dvoe0,990
|
|
338
|
-
mlrun/utils/notifications/notification_pusher.py,sha256=
|
|
338
|
+
mlrun/utils/notifications/notification_pusher.py,sha256=4ecV6JfCtvYpb0kl1-sdg4Cw6XTrAjmmh2olhUenesY,26752
|
|
339
339
|
mlrun/utils/notifications/notification/__init__.py,sha256=2in3F2q8gtYDiDoQ4i9BIIE2I06OokT2EW49vs2krRA,2168
|
|
340
340
|
mlrun/utils/notifications/notification/base.py,sha256=hf3BDZ4-bq92MsqofQHt8DZqqlcKbWHscZFvzHdMcw4,4265
|
|
341
341
|
mlrun/utils/notifications/notification/console.py,sha256=MAVk7v5PJ52vdGRv76YcEPixWgV0licBPWGpR01uR40,2643
|
|
@@ -344,11 +344,11 @@ mlrun/utils/notifications/notification/ipython.py,sha256=ZtVL30B_Ha0VGoo4LxO-voT
|
|
|
344
344
|
mlrun/utils/notifications/notification/slack.py,sha256=wqpFGr5BTvFO5KuUSzFfxsgmyU1Ohq7fbrGeNe9TXOk,7006
|
|
345
345
|
mlrun/utils/notifications/notification/webhook.py,sha256=y8Hc3rlR48M2W76lfI2knEBxlD_T6k9P9kXD_vqFnfg,4472
|
|
346
346
|
mlrun/utils/version/__init__.py,sha256=7kkrB7hEZ3cLXoWj1kPoDwo4MaswsI2JVOBpbKgPAgc,614
|
|
347
|
-
mlrun/utils/version/version.json,sha256=
|
|
347
|
+
mlrun/utils/version/version.json,sha256=0oyQ89ttk4NJ1n_SJz3Y_28WTi9lcWPjIag3LRdOz6w,89
|
|
348
348
|
mlrun/utils/version/version.py,sha256=eEW0tqIAkU9Xifxv8Z9_qsYnNhn3YH7NRAfM-pPLt1g,1878
|
|
349
|
-
mlrun-1.7.
|
|
350
|
-
mlrun-1.7.
|
|
351
|
-
mlrun-1.7.
|
|
352
|
-
mlrun-1.7.
|
|
353
|
-
mlrun-1.7.
|
|
354
|
-
mlrun-1.7.
|
|
349
|
+
mlrun-1.7.0rc30.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
350
|
+
mlrun-1.7.0rc30.dist-info/METADATA,sha256=Oa4QRKtVfxP-8cDhj1mjXknBVHpVmf8MWWaNlB3QwlU,19534
|
|
351
|
+
mlrun-1.7.0rc30.dist-info/WHEEL,sha256=Z4pYXqR_rTB7OWNDYFOm1qRk0RX6GFP2o8LgvP453Hk,91
|
|
352
|
+
mlrun-1.7.0rc30.dist-info/entry_points.txt,sha256=1Owd16eAclD5pfRCoJpYC2ZJSyGNTtUr0nCELMioMmU,46
|
|
353
|
+
mlrun-1.7.0rc30.dist-info/top_level.txt,sha256=NObLzw3maSF9wVrgSeYBv-fgnHkAJ1kEkh12DLdd5KM,6
|
|
354
|
+
mlrun-1.7.0rc30.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|