mlrun 1.6.4rc7__py3-none-any.whl → 1.7.0__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.

Files changed (305) hide show
  1. mlrun/__init__.py +11 -1
  2. mlrun/__main__.py +40 -122
  3. mlrun/alerts/__init__.py +15 -0
  4. mlrun/alerts/alert.py +248 -0
  5. mlrun/api/schemas/__init__.py +5 -4
  6. mlrun/artifacts/__init__.py +8 -3
  7. mlrun/artifacts/base.py +47 -257
  8. mlrun/artifacts/dataset.py +11 -192
  9. mlrun/artifacts/manager.py +79 -47
  10. mlrun/artifacts/model.py +31 -159
  11. mlrun/artifacts/plots.py +23 -380
  12. mlrun/common/constants.py +74 -1
  13. mlrun/common/db/sql_session.py +5 -5
  14. mlrun/common/formatters/__init__.py +21 -0
  15. mlrun/common/formatters/artifact.py +45 -0
  16. mlrun/common/formatters/base.py +113 -0
  17. mlrun/common/formatters/feature_set.py +33 -0
  18. mlrun/common/formatters/function.py +46 -0
  19. mlrun/common/formatters/pipeline.py +53 -0
  20. mlrun/common/formatters/project.py +51 -0
  21. mlrun/common/formatters/run.py +29 -0
  22. mlrun/common/helpers.py +12 -3
  23. mlrun/common/model_monitoring/helpers.py +9 -5
  24. mlrun/{runtimes → common/runtimes}/constants.py +37 -9
  25. mlrun/common/schemas/__init__.py +31 -5
  26. mlrun/common/schemas/alert.py +202 -0
  27. mlrun/common/schemas/api_gateway.py +196 -0
  28. mlrun/common/schemas/artifact.py +25 -4
  29. mlrun/common/schemas/auth.py +16 -5
  30. mlrun/common/schemas/background_task.py +1 -1
  31. mlrun/common/schemas/client_spec.py +4 -2
  32. mlrun/common/schemas/common.py +7 -4
  33. mlrun/common/schemas/constants.py +3 -0
  34. mlrun/common/schemas/feature_store.py +74 -44
  35. mlrun/common/schemas/frontend_spec.py +15 -7
  36. mlrun/common/schemas/function.py +12 -1
  37. mlrun/common/schemas/hub.py +11 -18
  38. mlrun/common/schemas/memory_reports.py +2 -2
  39. mlrun/common/schemas/model_monitoring/__init__.py +20 -4
  40. mlrun/common/schemas/model_monitoring/constants.py +123 -42
  41. mlrun/common/schemas/model_monitoring/grafana.py +13 -9
  42. mlrun/common/schemas/model_monitoring/model_endpoints.py +101 -54
  43. mlrun/common/schemas/notification.py +71 -14
  44. mlrun/common/schemas/object.py +2 -2
  45. mlrun/{model_monitoring/controller_handler.py → common/schemas/pagination.py} +9 -12
  46. mlrun/common/schemas/pipeline.py +8 -1
  47. mlrun/common/schemas/project.py +69 -18
  48. mlrun/common/schemas/runs.py +7 -1
  49. mlrun/common/schemas/runtime_resource.py +8 -12
  50. mlrun/common/schemas/schedule.py +4 -4
  51. mlrun/common/schemas/tag.py +1 -2
  52. mlrun/common/schemas/workflow.py +12 -4
  53. mlrun/common/types.py +14 -1
  54. mlrun/config.py +154 -69
  55. mlrun/data_types/data_types.py +6 -1
  56. mlrun/data_types/spark.py +2 -2
  57. mlrun/data_types/to_pandas.py +67 -37
  58. mlrun/datastore/__init__.py +6 -8
  59. mlrun/datastore/alibaba_oss.py +131 -0
  60. mlrun/datastore/azure_blob.py +143 -42
  61. mlrun/datastore/base.py +102 -58
  62. mlrun/datastore/datastore.py +34 -13
  63. mlrun/datastore/datastore_profile.py +146 -20
  64. mlrun/datastore/dbfs_store.py +3 -7
  65. mlrun/datastore/filestore.py +1 -4
  66. mlrun/datastore/google_cloud_storage.py +97 -33
  67. mlrun/datastore/hdfs.py +56 -0
  68. mlrun/datastore/inmem.py +6 -3
  69. mlrun/datastore/redis.py +7 -2
  70. mlrun/datastore/s3.py +34 -12
  71. mlrun/datastore/snowflake_utils.py +45 -0
  72. mlrun/datastore/sources.py +303 -111
  73. mlrun/datastore/spark_utils.py +31 -2
  74. mlrun/datastore/store_resources.py +9 -7
  75. mlrun/datastore/storeytargets.py +151 -0
  76. mlrun/datastore/targets.py +453 -176
  77. mlrun/datastore/utils.py +72 -58
  78. mlrun/datastore/v3io.py +6 -1
  79. mlrun/db/base.py +274 -41
  80. mlrun/db/factory.py +1 -1
  81. mlrun/db/httpdb.py +893 -225
  82. mlrun/db/nopdb.py +291 -33
  83. mlrun/errors.py +36 -6
  84. mlrun/execution.py +115 -42
  85. mlrun/feature_store/__init__.py +0 -2
  86. mlrun/feature_store/api.py +65 -73
  87. mlrun/feature_store/common.py +7 -12
  88. mlrun/feature_store/feature_set.py +76 -55
  89. mlrun/feature_store/feature_vector.py +39 -31
  90. mlrun/feature_store/ingestion.py +7 -6
  91. mlrun/feature_store/retrieval/base.py +16 -11
  92. mlrun/feature_store/retrieval/dask_merger.py +2 -0
  93. mlrun/feature_store/retrieval/job.py +13 -4
  94. mlrun/feature_store/retrieval/local_merger.py +2 -0
  95. mlrun/feature_store/retrieval/spark_merger.py +24 -32
  96. mlrun/feature_store/steps.py +45 -34
  97. mlrun/features.py +11 -21
  98. mlrun/frameworks/_common/artifacts_library.py +9 -9
  99. mlrun/frameworks/_common/mlrun_interface.py +5 -5
  100. mlrun/frameworks/_common/model_handler.py +48 -48
  101. mlrun/frameworks/_common/plan.py +5 -6
  102. mlrun/frameworks/_common/producer.py +3 -4
  103. mlrun/frameworks/_common/utils.py +5 -5
  104. mlrun/frameworks/_dl_common/loggers/logger.py +6 -7
  105. mlrun/frameworks/_dl_common/loggers/mlrun_logger.py +9 -9
  106. mlrun/frameworks/_dl_common/loggers/tensorboard_logger.py +23 -47
  107. mlrun/frameworks/_ml_common/artifacts_library.py +1 -2
  108. mlrun/frameworks/_ml_common/loggers/logger.py +3 -4
  109. mlrun/frameworks/_ml_common/loggers/mlrun_logger.py +4 -5
  110. mlrun/frameworks/_ml_common/model_handler.py +24 -24
  111. mlrun/frameworks/_ml_common/pkl_model_server.py +2 -2
  112. mlrun/frameworks/_ml_common/plan.py +2 -2
  113. mlrun/frameworks/_ml_common/plans/calibration_curve_plan.py +2 -3
  114. mlrun/frameworks/_ml_common/plans/confusion_matrix_plan.py +2 -3
  115. mlrun/frameworks/_ml_common/plans/dataset_plan.py +3 -3
  116. mlrun/frameworks/_ml_common/plans/feature_importance_plan.py +3 -3
  117. mlrun/frameworks/_ml_common/plans/roc_curve_plan.py +4 -4
  118. mlrun/frameworks/_ml_common/utils.py +4 -4
  119. mlrun/frameworks/auto_mlrun/auto_mlrun.py +9 -9
  120. mlrun/frameworks/huggingface/model_server.py +4 -4
  121. mlrun/frameworks/lgbm/__init__.py +33 -33
  122. mlrun/frameworks/lgbm/callbacks/callback.py +2 -4
  123. mlrun/frameworks/lgbm/callbacks/logging_callback.py +4 -5
  124. mlrun/frameworks/lgbm/callbacks/mlrun_logging_callback.py +4 -5
  125. mlrun/frameworks/lgbm/mlrun_interfaces/booster_mlrun_interface.py +1 -3
  126. mlrun/frameworks/lgbm/mlrun_interfaces/mlrun_interface.py +6 -6
  127. mlrun/frameworks/lgbm/model_handler.py +10 -10
  128. mlrun/frameworks/lgbm/model_server.py +6 -6
  129. mlrun/frameworks/lgbm/utils.py +5 -5
  130. mlrun/frameworks/onnx/dataset.py +8 -8
  131. mlrun/frameworks/onnx/mlrun_interface.py +3 -3
  132. mlrun/frameworks/onnx/model_handler.py +6 -6
  133. mlrun/frameworks/onnx/model_server.py +7 -7
  134. mlrun/frameworks/parallel_coordinates.py +6 -6
  135. mlrun/frameworks/pytorch/__init__.py +18 -18
  136. mlrun/frameworks/pytorch/callbacks/callback.py +4 -5
  137. mlrun/frameworks/pytorch/callbacks/logging_callback.py +17 -17
  138. mlrun/frameworks/pytorch/callbacks/mlrun_logging_callback.py +11 -11
  139. mlrun/frameworks/pytorch/callbacks/tensorboard_logging_callback.py +23 -29
  140. mlrun/frameworks/pytorch/callbacks_handler.py +38 -38
  141. mlrun/frameworks/pytorch/mlrun_interface.py +20 -20
  142. mlrun/frameworks/pytorch/model_handler.py +17 -17
  143. mlrun/frameworks/pytorch/model_server.py +7 -7
  144. mlrun/frameworks/sklearn/__init__.py +13 -13
  145. mlrun/frameworks/sklearn/estimator.py +4 -4
  146. mlrun/frameworks/sklearn/metrics_library.py +14 -14
  147. mlrun/frameworks/sklearn/mlrun_interface.py +16 -9
  148. mlrun/frameworks/sklearn/model_handler.py +2 -2
  149. mlrun/frameworks/tf_keras/__init__.py +10 -7
  150. mlrun/frameworks/tf_keras/callbacks/logging_callback.py +15 -15
  151. mlrun/frameworks/tf_keras/callbacks/mlrun_logging_callback.py +11 -11
  152. mlrun/frameworks/tf_keras/callbacks/tensorboard_logging_callback.py +19 -23
  153. mlrun/frameworks/tf_keras/mlrun_interface.py +9 -11
  154. mlrun/frameworks/tf_keras/model_handler.py +14 -14
  155. mlrun/frameworks/tf_keras/model_server.py +6 -6
  156. mlrun/frameworks/xgboost/__init__.py +13 -13
  157. mlrun/frameworks/xgboost/model_handler.py +6 -6
  158. mlrun/k8s_utils.py +61 -17
  159. mlrun/launcher/__init__.py +1 -1
  160. mlrun/launcher/base.py +16 -15
  161. mlrun/launcher/client.py +13 -11
  162. mlrun/launcher/factory.py +1 -1
  163. mlrun/launcher/local.py +23 -13
  164. mlrun/launcher/remote.py +17 -10
  165. mlrun/lists.py +7 -6
  166. mlrun/model.py +478 -103
  167. mlrun/model_monitoring/__init__.py +1 -1
  168. mlrun/model_monitoring/api.py +163 -371
  169. mlrun/{runtimes/mpijob/v1alpha1.py → model_monitoring/applications/__init__.py} +9 -15
  170. mlrun/model_monitoring/applications/_application_steps.py +188 -0
  171. mlrun/model_monitoring/applications/base.py +108 -0
  172. mlrun/model_monitoring/applications/context.py +341 -0
  173. mlrun/model_monitoring/{evidently_application.py → applications/evidently_base.py} +27 -22
  174. mlrun/model_monitoring/applications/histogram_data_drift.py +354 -0
  175. mlrun/model_monitoring/applications/results.py +99 -0
  176. mlrun/model_monitoring/controller.py +131 -278
  177. mlrun/model_monitoring/db/__init__.py +18 -0
  178. mlrun/model_monitoring/db/stores/__init__.py +136 -0
  179. mlrun/model_monitoring/db/stores/base/__init__.py +15 -0
  180. mlrun/model_monitoring/db/stores/base/store.py +213 -0
  181. mlrun/model_monitoring/db/stores/sqldb/__init__.py +13 -0
  182. mlrun/model_monitoring/db/stores/sqldb/models/__init__.py +71 -0
  183. mlrun/model_monitoring/db/stores/sqldb/models/base.py +190 -0
  184. mlrun/model_monitoring/db/stores/sqldb/models/mysql.py +103 -0
  185. mlrun/model_monitoring/{stores/models/mysql.py → db/stores/sqldb/models/sqlite.py} +19 -13
  186. mlrun/model_monitoring/db/stores/sqldb/sql_store.py +659 -0
  187. mlrun/model_monitoring/db/stores/v3io_kv/__init__.py +13 -0
  188. mlrun/model_monitoring/db/stores/v3io_kv/kv_store.py +726 -0
  189. mlrun/model_monitoring/db/tsdb/__init__.py +105 -0
  190. mlrun/model_monitoring/db/tsdb/base.py +448 -0
  191. mlrun/model_monitoring/db/tsdb/helpers.py +30 -0
  192. mlrun/model_monitoring/db/tsdb/tdengine/__init__.py +15 -0
  193. mlrun/model_monitoring/db/tsdb/tdengine/schemas.py +279 -0
  194. mlrun/model_monitoring/db/tsdb/tdengine/stream_graph_steps.py +42 -0
  195. mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connector.py +507 -0
  196. mlrun/model_monitoring/db/tsdb/v3io/__init__.py +15 -0
  197. mlrun/model_monitoring/db/tsdb/v3io/stream_graph_steps.py +158 -0
  198. mlrun/model_monitoring/db/tsdb/v3io/v3io_connector.py +849 -0
  199. mlrun/model_monitoring/features_drift_table.py +134 -106
  200. mlrun/model_monitoring/helpers.py +199 -55
  201. mlrun/model_monitoring/metrics/__init__.py +13 -0
  202. mlrun/model_monitoring/metrics/histogram_distance.py +127 -0
  203. mlrun/model_monitoring/model_endpoint.py +3 -2
  204. mlrun/model_monitoring/stream_processing.py +131 -398
  205. mlrun/model_monitoring/tracking_policy.py +9 -2
  206. mlrun/model_monitoring/writer.py +161 -125
  207. mlrun/package/__init__.py +6 -6
  208. mlrun/package/context_handler.py +5 -5
  209. mlrun/package/packager.py +7 -7
  210. mlrun/package/packagers/default_packager.py +8 -8
  211. mlrun/package/packagers/numpy_packagers.py +15 -15
  212. mlrun/package/packagers/pandas_packagers.py +5 -5
  213. mlrun/package/packagers/python_standard_library_packagers.py +10 -10
  214. mlrun/package/packagers_manager.py +19 -23
  215. mlrun/package/utils/_formatter.py +6 -6
  216. mlrun/package/utils/_pickler.py +2 -2
  217. mlrun/package/utils/_supported_format.py +4 -4
  218. mlrun/package/utils/log_hint_utils.py +2 -2
  219. mlrun/package/utils/type_hint_utils.py +4 -9
  220. mlrun/platforms/__init__.py +11 -10
  221. mlrun/platforms/iguazio.py +24 -203
  222. mlrun/projects/operations.py +52 -25
  223. mlrun/projects/pipelines.py +191 -197
  224. mlrun/projects/project.py +1227 -400
  225. mlrun/render.py +16 -19
  226. mlrun/run.py +209 -184
  227. mlrun/runtimes/__init__.py +83 -15
  228. mlrun/runtimes/base.py +51 -35
  229. mlrun/runtimes/daskjob.py +17 -10
  230. mlrun/runtimes/databricks_job/databricks_cancel_task.py +1 -1
  231. mlrun/runtimes/databricks_job/databricks_runtime.py +8 -7
  232. mlrun/runtimes/databricks_job/databricks_wrapper.py +1 -1
  233. mlrun/runtimes/funcdoc.py +1 -29
  234. mlrun/runtimes/function_reference.py +1 -1
  235. mlrun/runtimes/kubejob.py +34 -128
  236. mlrun/runtimes/local.py +40 -11
  237. mlrun/runtimes/mpijob/__init__.py +0 -20
  238. mlrun/runtimes/mpijob/abstract.py +9 -10
  239. mlrun/runtimes/mpijob/v1.py +1 -1
  240. mlrun/{model_monitoring/stores/models/sqlite.py → runtimes/nuclio/__init__.py} +7 -9
  241. mlrun/runtimes/nuclio/api_gateway.py +769 -0
  242. mlrun/runtimes/nuclio/application/__init__.py +15 -0
  243. mlrun/runtimes/nuclio/application/application.py +758 -0
  244. mlrun/runtimes/nuclio/application/reverse_proxy.go +95 -0
  245. mlrun/runtimes/{function.py → nuclio/function.py} +200 -83
  246. mlrun/runtimes/{nuclio.py → nuclio/nuclio.py} +6 -6
  247. mlrun/runtimes/{serving.py → nuclio/serving.py} +65 -68
  248. mlrun/runtimes/pod.py +281 -101
  249. mlrun/runtimes/remotesparkjob.py +12 -9
  250. mlrun/runtimes/sparkjob/spark3job.py +67 -51
  251. mlrun/runtimes/utils.py +41 -75
  252. mlrun/secrets.py +9 -5
  253. mlrun/serving/__init__.py +8 -1
  254. mlrun/serving/remote.py +2 -7
  255. mlrun/serving/routers.py +85 -69
  256. mlrun/serving/server.py +69 -44
  257. mlrun/serving/states.py +209 -36
  258. mlrun/serving/utils.py +22 -14
  259. mlrun/serving/v1_serving.py +6 -7
  260. mlrun/serving/v2_serving.py +129 -54
  261. mlrun/track/tracker.py +2 -1
  262. mlrun/track/tracker_manager.py +3 -3
  263. mlrun/track/trackers/mlflow_tracker.py +6 -2
  264. mlrun/utils/async_http.py +6 -8
  265. mlrun/utils/azure_vault.py +1 -1
  266. mlrun/utils/clones.py +1 -2
  267. mlrun/utils/condition_evaluator.py +3 -3
  268. mlrun/utils/db.py +21 -3
  269. mlrun/utils/helpers.py +405 -225
  270. mlrun/utils/http.py +3 -6
  271. mlrun/utils/logger.py +112 -16
  272. mlrun/utils/notifications/notification/__init__.py +17 -13
  273. mlrun/utils/notifications/notification/base.py +50 -2
  274. mlrun/utils/notifications/notification/console.py +2 -0
  275. mlrun/utils/notifications/notification/git.py +24 -1
  276. mlrun/utils/notifications/notification/ipython.py +3 -1
  277. mlrun/utils/notifications/notification/slack.py +96 -21
  278. mlrun/utils/notifications/notification/webhook.py +59 -2
  279. mlrun/utils/notifications/notification_pusher.py +149 -30
  280. mlrun/utils/regex.py +9 -0
  281. mlrun/utils/retryer.py +208 -0
  282. mlrun/utils/singleton.py +1 -1
  283. mlrun/utils/v3io_clients.py +4 -6
  284. mlrun/utils/version/version.json +2 -2
  285. mlrun/utils/version/version.py +2 -6
  286. mlrun-1.7.0.dist-info/METADATA +378 -0
  287. mlrun-1.7.0.dist-info/RECORD +351 -0
  288. {mlrun-1.6.4rc7.dist-info → mlrun-1.7.0.dist-info}/WHEEL +1 -1
  289. mlrun/feature_store/retrieval/conversion.py +0 -273
  290. mlrun/kfpops.py +0 -868
  291. mlrun/model_monitoring/application.py +0 -310
  292. mlrun/model_monitoring/batch.py +0 -1095
  293. mlrun/model_monitoring/prometheus.py +0 -219
  294. mlrun/model_monitoring/stores/__init__.py +0 -111
  295. mlrun/model_monitoring/stores/kv_model_endpoint_store.py +0 -576
  296. mlrun/model_monitoring/stores/model_endpoint_store.py +0 -147
  297. mlrun/model_monitoring/stores/models/__init__.py +0 -27
  298. mlrun/model_monitoring/stores/models/base.py +0 -84
  299. mlrun/model_monitoring/stores/sql_model_endpoint_store.py +0 -384
  300. mlrun/platforms/other.py +0 -306
  301. mlrun-1.6.4rc7.dist-info/METADATA +0 -272
  302. mlrun-1.6.4rc7.dist-info/RECORD +0 -314
  303. {mlrun-1.6.4rc7.dist-info → mlrun-1.7.0.dist-info}/LICENSE +0 -0
  304. {mlrun-1.6.4rc7.dist-info → mlrun-1.7.0.dist-info}/entry_points.txt +0 -0
  305. {mlrun-1.6.4rc7.dist-info → mlrun-1.7.0.dist-info}/top_level.txt +0 -0
@@ -17,7 +17,7 @@ import functools
17
17
  import inspect
18
18
  from abc import ABC
19
19
  from types import FunctionType, MethodType
20
- from typing import Any, Dict, Generic, List, Tuple, Union
20
+ from typing import Any, Generic, Union
21
21
 
22
22
  from .utils import CommonTypes
23
23
 
@@ -173,7 +173,7 @@ class MLRunInterface(ABC, Generic[CommonTypes.MLRunInterfaceableType]):
173
173
  def _insert_properties(
174
174
  cls,
175
175
  obj: CommonTypes.MLRunInterfaceableType,
176
- properties: Dict[str, Any] = None,
176
+ properties: dict[str, Any] = None,
177
177
  ):
178
178
  """
179
179
  Insert the properties of the interface to the object. The properties default values are being copied (not deep
@@ -238,7 +238,7 @@ class MLRunInterface(ABC, Generic[CommonTypes.MLRunInterfaceableType]):
238
238
 
239
239
  @classmethod
240
240
  def _replace_properties(
241
- cls, obj: CommonTypes.MLRunInterfaceableType, properties: Dict[str, Any] = None
241
+ cls, obj: CommonTypes.MLRunInterfaceableType, properties: dict[str, Any] = None
242
242
  ):
243
243
  """
244
244
  Replace the properties of the given object according to the configuration in the MLRun interface.
@@ -282,7 +282,7 @@ class MLRunInterface(ABC, Generic[CommonTypes.MLRunInterfaceableType]):
282
282
 
283
283
  @classmethod
284
284
  def _replace_functions(
285
- cls, obj: CommonTypes.MLRunInterfaceableType, functions: List[str] = None
285
+ cls, obj: CommonTypes.MLRunInterfaceableType, functions: list[str] = None
286
286
  ):
287
287
  """
288
288
  Replace the functions / methods of the given object according to the configuration in the MLRun interface.
@@ -420,7 +420,7 @@ class MLRunInterface(ABC, Generic[CommonTypes.MLRunInterfaceableType]):
420
420
  passed_args: tuple = None,
421
421
  passed_kwargs: dict = None,
422
422
  default_value: Any = None,
423
- ) -> Tuple[Any, Union[str, int, None]]:
423
+ ) -> tuple[Any, Union[str, int, None]]:
424
424
  """
425
425
  Get a passed argument (from *args or **kwargs) to a function. If the argument was not found the default value
426
426
  will be returned. In addition, the keyword of the argument in `kwargs` or the index of the argument in `args`
@@ -20,7 +20,7 @@ import sys
20
20
  import zipfile
21
21
  from abc import ABC, abstractmethod
22
22
  from types import MethodType
23
- from typing import Any, Dict, Generic, List, Type, Union
23
+ from typing import Any, Generic, Union
24
24
 
25
25
  import numpy as np
26
26
 
@@ -57,10 +57,10 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
57
57
  model_path: CommonTypes.PathType = None,
58
58
  model_name: str = None,
59
59
  modules_map: Union[
60
- Dict[str, Union[None, str, List[str]]], CommonTypes.PathType
60
+ dict[str, Union[None, str, list[str]]], CommonTypes.PathType
61
61
  ] = None,
62
62
  custom_objects_map: Union[
63
- Dict[str, Union[str, List[str]]], CommonTypes.PathType
63
+ dict[str, Union[str, list[str]]], CommonTypes.PathType
64
64
  ] = None,
65
65
  custom_objects_directory: CommonTypes.PathType = None,
66
66
  context: MLClientCtx = None,
@@ -224,7 +224,7 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
224
224
  return self._tag
225
225
 
226
226
  @property
227
- def inputs(self) -> Union[List[Feature], None]:
227
+ def inputs(self) -> Union[list[Feature], None]:
228
228
  """
229
229
  Get the input ports features list of this model's artifact. If the inputs are not set, None will be returned.
230
230
 
@@ -233,7 +233,7 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
233
233
  return self._inputs
234
234
 
235
235
  @property
236
- def outputs(self) -> Union[List[Feature], None]:
236
+ def outputs(self) -> Union[list[Feature], None]:
237
237
  """
238
238
  Get the output ports features list of this model's artifact. If the outputs are not set, None will be returned.
239
239
 
@@ -242,7 +242,7 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
242
242
  return self._outputs
243
243
 
244
244
  @property
245
- def labels(self) -> Dict[str, str]:
245
+ def labels(self) -> dict[str, str]:
246
246
  """
247
247
  Get the labels dictionary of this model's artifact. These will be the labels that will be logged with the model.
248
248
 
@@ -251,7 +251,7 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
251
251
  return self._labels
252
252
 
253
253
  @property
254
- def parameters(self) -> Dict[str, str]:
254
+ def parameters(self) -> dict[str, str]:
255
255
  """
256
256
  Get the parameters dictionary of this model's artifact. These will be the parameters that will be logged with
257
257
  the model.
@@ -262,7 +262,7 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
262
262
 
263
263
  def get_artifacts(
264
264
  self, committed_only: bool = False
265
- ) -> Dict[str, CommonTypes.ExtraDataType]:
265
+ ) -> dict[str, CommonTypes.ExtraDataType]:
266
266
  """
267
267
  Get the registered artifacts of this model's artifact. By default all the artifacts (logged and to be logged -
268
268
  committed only) will be returned. To get only the artifacts registered in the current run whom are committed and
@@ -306,7 +306,7 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
306
306
  def set_inputs(
307
307
  self,
308
308
  from_sample: CommonTypes.IOSampleType = None,
309
- features: List[Feature] = None,
309
+ features: list[Feature] = None,
310
310
  **kwargs,
311
311
  ):
312
312
  """
@@ -335,7 +335,7 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
335
335
  def set_outputs(
336
336
  self,
337
337
  from_sample: CommonTypes.IOSampleType = None,
338
- features: List[Feature] = None,
338
+ features: list[Feature] = None,
339
339
  **kwargs,
340
340
  ):
341
341
  """
@@ -363,8 +363,8 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
363
363
 
364
364
  def set_labels(
365
365
  self,
366
- to_add: Dict[str, Union[str, int, float]] = None,
367
- to_remove: List[str] = None,
366
+ to_add: dict[str, Union[str, int, float]] = None,
367
+ to_remove: list[str] = None,
368
368
  ):
369
369
  """
370
370
  Update the labels dictionary of this model artifact.
@@ -383,8 +383,8 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
383
383
 
384
384
  def set_parameters(
385
385
  self,
386
- to_add: Dict[str, Union[str, int, float]] = None,
387
- to_remove: List[str] = None,
386
+ to_add: dict[str, Union[str, int, float]] = None,
387
+ to_remove: list[str] = None,
388
388
  ):
389
389
  """
390
390
  Update the parameters dictionary of this model artifact.
@@ -403,8 +403,8 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
403
403
 
404
404
  def set_metrics(
405
405
  self,
406
- to_add: Dict[str, CommonTypes.ExtraDataType] = None,
407
- to_remove: List[str] = None,
406
+ to_add: dict[str, CommonTypes.ExtraDataType] = None,
407
+ to_remove: list[str] = None,
408
408
  ):
409
409
  """
410
410
  Update the metrics dictionary of this model artifact.
@@ -423,8 +423,8 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
423
423
 
424
424
  def set_extra_data(
425
425
  self,
426
- to_add: Dict[str, CommonTypes.ExtraDataType] = None,
427
- to_remove: List[str] = None,
426
+ to_add: dict[str, CommonTypes.ExtraDataType] = None,
427
+ to_remove: list[str] = None,
428
428
  ):
429
429
  """
430
430
  Update the extra data dictionary of this model artifact.
@@ -442,7 +442,7 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
442
442
  self._extra_data.pop(label)
443
443
 
444
444
  def register_artifacts(
445
- self, artifacts: Union[Artifact, List[Artifact], Dict[str, Artifact]]
445
+ self, artifacts: Union[Artifact, list[Artifact], dict[str, Artifact]]
446
446
  ):
447
447
  """
448
448
  Register the given artifacts, so they will be logged as extra data with the model of this handler. Notice: The
@@ -466,7 +466,7 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
466
466
  @abstractmethod
467
467
  def save(
468
468
  self, output_path: CommonTypes.PathType = None, **kwargs
469
- ) -> Union[Dict[str, Artifact], None]:
469
+ ) -> Union[dict[str, Artifact], None]:
470
470
  """
471
471
  Save the handled model at the given output path.
472
472
 
@@ -525,13 +525,13 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
525
525
  def log(
526
526
  self,
527
527
  tag: str = "",
528
- labels: Dict[str, Union[str, int, float]] = None,
529
- parameters: Dict[str, Union[str, int, float]] = None,
530
- inputs: List[Feature] = None,
531
- outputs: List[Feature] = None,
532
- metrics: Dict[str, Union[int, float]] = None,
533
- artifacts: Dict[str, Artifact] = None,
534
- extra_data: Dict[str, CommonTypes.ExtraDataType] = None,
528
+ labels: dict[str, Union[str, int, float]] = None,
529
+ parameters: dict[str, Union[str, int, float]] = None,
530
+ inputs: list[Feature] = None,
531
+ outputs: list[Feature] = None,
532
+ metrics: dict[str, Union[int, float]] = None,
533
+ artifacts: dict[str, Artifact] = None,
534
+ extra_data: dict[str, CommonTypes.ExtraDataType] = None,
535
535
  **kwargs,
536
536
  ):
537
537
  """
@@ -630,13 +630,13 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
630
630
 
631
631
  def update(
632
632
  self,
633
- labels: Dict[str, Union[str, int, float]] = None,
634
- parameters: Dict[str, Union[str, int, float]] = None,
635
- inputs: List[Feature] = None,
636
- outputs: List[Feature] = None,
637
- metrics: Dict[str, Union[int, float]] = None,
638
- artifacts: Dict[str, Artifact] = None,
639
- extra_data: Dict[str, CommonTypes.ExtraDataType] = None,
633
+ labels: dict[str, Union[str, int, float]] = None,
634
+ parameters: dict[str, Union[str, int, float]] = None,
635
+ inputs: list[Feature] = None,
636
+ outputs: list[Feature] = None,
637
+ metrics: dict[str, Union[int, float]] = None,
638
+ artifacts: dict[str, Artifact] = None,
639
+ extra_data: dict[str, CommonTypes.ExtraDataType] = None,
640
640
  **kwargs,
641
641
  ):
642
642
  """
@@ -857,7 +857,7 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
857
857
 
858
858
  # Read the modules map if given as a json:
859
859
  if isinstance(self._modules_map, str):
860
- with open(self._modules_map, "r") as map_json_file:
860
+ with open(self._modules_map) as map_json_file:
861
861
  self._modules_map = json.loads(map_json_file.read())
862
862
 
863
863
  # Start importing the modules according to the map:
@@ -887,7 +887,7 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
887
887
 
888
888
  # Read the custom objects map if given as a json:
889
889
  if isinstance(self._custom_objects_map, str):
890
- with open(self._custom_objects_map, "r") as map_json_file:
890
+ with open(self._custom_objects_map) as map_json_file:
891
891
  self._custom_objects_map = json.loads(map_json_file.read())
892
892
 
893
893
  # Unzip the custom objects files if the directory was given as a zip:
@@ -917,7 +917,7 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
917
917
  ),
918
918
  }
919
919
 
920
- def _log_modules(self) -> Dict[str, Artifact]:
920
+ def _log_modules(self) -> dict[str, Artifact]:
921
921
  """
922
922
  Log the modules, returning the modules map json file logged as an artifact.
923
923
 
@@ -946,7 +946,7 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
946
946
 
947
947
  return artifacts
948
948
 
949
- def _log_custom_objects(self) -> Dict[str, Artifact]:
949
+ def _log_custom_objects(self) -> dict[str, Artifact]:
950
950
  """
951
951
  Log the custom objects, returning their artifacts:
952
952
 
@@ -1002,8 +1002,8 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
1002
1002
 
1003
1003
  def _read_io_samples(
1004
1004
  self,
1005
- samples: Union[CommonTypes.IOSampleType, List[CommonTypes.IOSampleType]],
1006
- ) -> List[Feature]:
1005
+ samples: Union[CommonTypes.IOSampleType, list[CommonTypes.IOSampleType]],
1006
+ ) -> list[Feature]:
1007
1007
  """
1008
1008
  Read the given inputs / output sample to / from the model into a list of MLRun Features (ports) to log in
1009
1009
  the model's artifact.
@@ -1062,7 +1062,7 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
1062
1062
 
1063
1063
  @staticmethod
1064
1064
  def _validate_modules_parameter(
1065
- modules_map: Union[Dict[str, Union[None, str, List[str]]], str],
1065
+ modules_map: Union[dict[str, Union[None, str, list[str]]], str],
1066
1066
  ):
1067
1067
  """
1068
1068
  Validate the given modules parameter.
@@ -1090,7 +1090,7 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
1090
1090
 
1091
1091
  @staticmethod
1092
1092
  def _validate_custom_objects_parameters(
1093
- custom_objects_map: Union[Dict[str, Union[str, List[str]]], str],
1093
+ custom_objects_map: Union[dict[str, Union[str, list[str]]], str],
1094
1094
  custom_objects_directory: str,
1095
1095
  ):
1096
1096
  """
@@ -1154,8 +1154,8 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
1154
1154
 
1155
1155
  @staticmethod
1156
1156
  def _import_module(
1157
- module_path: str, objects_names: Union[List[str], None]
1158
- ) -> Dict[str, Any]:
1157
+ module_path: str, objects_names: Union[list[str], None]
1158
+ ) -> dict[str, Any]:
1159
1159
  """
1160
1160
  Import the given objects by their names from the given module path by the following rules:
1161
1161
 
@@ -1199,8 +1199,8 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
1199
1199
 
1200
1200
  @staticmethod
1201
1201
  def _import_custom_object(
1202
- py_file_path: str, objects_names: List[str]
1203
- ) -> Dict[str, Any]:
1202
+ py_file_path: str, objects_names: list[str]
1203
+ ) -> dict[str, Any]:
1204
1204
  """
1205
1205
  Import the given objects by their names from the given python file as: from 'py_file_path' import 'object_name'.
1206
1206
  If an object specified is already imported, a reference would simply be returned.
@@ -1232,7 +1232,7 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
1232
1232
  return objects_imports
1233
1233
 
1234
1234
 
1235
- def with_mlrun_interface(interface: Type[MLRunInterface]):
1235
+ def with_mlrun_interface(interface: type[MLRunInterface]):
1236
1236
  """
1237
1237
  Decorator configure for decorating a ModelHandler method (expecting 'self' to be the first argument) to add the
1238
1238
  given MLRun interface into the model before executing the method and remove it afterwards.
@@ -1261,7 +1261,7 @@ def with_mlrun_interface(interface: Type[MLRunInterface]):
1261
1261
  return decorator
1262
1262
 
1263
1263
 
1264
- def without_mlrun_interface(interface: Type[MLRunInterface]):
1264
+ def without_mlrun_interface(interface: type[MLRunInterface]):
1265
1265
  """
1266
1266
  Decorator configure for decorating a ModelHandler method (expecting 'self' to be the first argument) to remove the
1267
1267
  given MLRun interface from the model before executing the method and restore it afterwards.
@@ -11,13 +11,12 @@
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
15
  from abc import ABC, abstractmethod
16
- from typing import Dict
17
16
 
18
17
  import mlrun
19
18
  from mlrun.artifacts import Artifact
20
- from mlrun.utils.helpers import is_ipython
19
+ from mlrun.utils.helpers import is_jupyter
21
20
 
22
21
 
23
22
  class Plan(ABC):
@@ -33,7 +32,7 @@ class Plan(ABC):
33
32
  self._artifacts = {} # type: Dict[str, Artifact]
34
33
 
35
34
  @property
36
- def artifacts(self) -> Dict[str, Artifact]:
35
+ def artifacts(self) -> dict[str, Artifact]:
37
36
  """
38
37
  Get the plan's produced artifacts.
39
38
 
@@ -59,7 +58,7 @@ class Plan(ABC):
59
58
  pass
60
59
 
61
60
  @abstractmethod
62
- def produce(self, *args, **kwargs) -> Dict[str, Artifact]:
61
+ def produce(self, *args, **kwargs) -> dict[str, Artifact]:
63
62
  """
64
63
  Produce the artifact according to this plan.
65
64
 
@@ -85,7 +84,7 @@ class Plan(ABC):
85
84
  return
86
85
 
87
86
  # Call the correct display method according to the kernel:
88
- if is_ipython:
87
+ if is_jupyter:
89
88
  self._gui_display()
90
89
  else:
91
90
  self._cli_display()
@@ -12,7 +12,6 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
  #
15
- from typing import Dict, List
16
15
 
17
16
  import mlrun
18
17
  from mlrun.artifacts import Artifact
@@ -29,7 +28,7 @@ class Producer:
29
28
  def __init__(
30
29
  self,
31
30
  context: mlrun.MLClientCtx = None,
32
- plans: List[Plan] = None,
31
+ plans: list[Plan] = None,
33
32
  ):
34
33
  """
35
34
  Initialize a producer with the given plans. The producer will log the produced artifacts using the given
@@ -68,7 +67,7 @@ class Producer:
68
67
  return self._context
69
68
 
70
69
  @property
71
- def artifacts(self) -> Dict[str, Artifact]:
70
+ def artifacts(self) -> dict[str, Artifact]:
72
71
  """
73
72
  Get the logged artifacts.
74
73
 
@@ -92,7 +91,7 @@ class Producer:
92
91
  """
93
92
  self._context = context
94
93
 
95
- def set_plans(self, plans: List[Plan]):
94
+ def set_plans(self, plans: list[Plan]):
96
95
  """
97
96
  Update the plans of this logger to the given list of plans here.
98
97
 
@@ -16,7 +16,7 @@ import re
16
16
  from abc import ABC
17
17
  from enum import Enum
18
18
  from pathlib import Path
19
- from typing import Any, Dict, List, Tuple, TypeVar, Union
19
+ from typing import Any, TypeVar, Union
20
20
 
21
21
  import numpy as np
22
22
  import pandas as pd
@@ -42,10 +42,10 @@ class CommonTypes(ABC):
42
42
  MLRunInterfaceableType = TypeVar("MLRunInterfaceableType")
43
43
 
44
44
  # Type for a MLRun Interface restoration tuple as returned from 'remove_interface':
45
- MLRunInterfaceRestorationType = Tuple[
46
- Dict[str, Any], # Interface properties.
47
- Dict[str, Any], # Replaced properties.
48
- List[str], # Replaced methods and functions.
45
+ MLRunInterfaceRestorationType = tuple[
46
+ dict[str, Any], # Interface properties.
47
+ dict[str, Any], # Replaced properties.
48
+ list[str], # Replaced methods and functions.
49
49
  ]
50
50
 
51
51
  # Common dataset type to all frameworks:
@@ -12,7 +12,6 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
  #
15
- from typing import Dict, List
16
15
 
17
16
  import mlrun
18
17
 
@@ -79,7 +78,7 @@ class Logger:
79
78
  return self._mode
80
79
 
81
80
  @property
82
- def training_results(self) -> Dict[str, List[List[float]]]:
81
+ def training_results(self) -> dict[str, list[list[float]]]:
83
82
  """
84
83
  Get the training results logged. The results will be stored in a dictionary where each key is the metric name
85
84
  and the value is a list of lists of values. The first list is by epoch and the second list is by iteration
@@ -90,7 +89,7 @@ class Logger:
90
89
  return self._training_results
91
90
 
92
91
  @property
93
- def validation_results(self) -> Dict[str, List[List[float]]]:
92
+ def validation_results(self) -> dict[str, list[list[float]]]:
94
93
  """
95
94
  Get the validation results logged. The results will be stored in a dictionary where each key is the metric name
96
95
  and the value is a list of lists of values. The first list is by epoch and the second list is by iteration
@@ -101,7 +100,7 @@ class Logger:
101
100
  return self._validation_results
102
101
 
103
102
  @property
104
- def training_summaries(self) -> Dict[str, List[float]]:
103
+ def training_summaries(self) -> dict[str, list[float]]:
105
104
  """
106
105
  Get the training summaries of the metrics results. The summaries will be stored in a dictionary where each key
107
106
  is the metric names and the value is a list of all the summary values per epoch.
@@ -111,7 +110,7 @@ class Logger:
111
110
  return self._training_summaries
112
111
 
113
112
  @property
114
- def validation_summaries(self) -> Dict[str, List[float]]:
113
+ def validation_summaries(self) -> dict[str, list[float]]:
115
114
  """
116
115
  Get the validation summaries of the metrics results. The summaries will be stored in a dictionary where each key
117
116
  is the metric names and the value is a list of all the summary values per epoch.
@@ -121,7 +120,7 @@ class Logger:
121
120
  return self._validation_summaries
122
121
 
123
122
  @property
124
- def static_hyperparameters(self) -> Dict[str, DLTypes.TrackableType]:
123
+ def static_hyperparameters(self) -> dict[str, DLTypes.TrackableType]:
125
124
  """
126
125
  Get the static hyperparameters logged. The hyperparameters will be stored in a dictionary where each key is the
127
126
  hyperparameter name and the value is his logged value.
@@ -131,7 +130,7 @@ class Logger:
131
130
  return self._static_hyperparameters
132
131
 
133
132
  @property
134
- def dynamic_hyperparameters(self) -> Dict[str, List[DLTypes.TrackableType]]:
133
+ def dynamic_hyperparameters(self) -> dict[str, list[DLTypes.TrackableType]]:
135
134
  """
136
135
  Get the dynamic hyperparameters logged. The hyperparameters will be stored in a dictionary where each key is the
137
136
  hyperparameter name and the value is a list of his logged values per epoch.
@@ -13,7 +13,7 @@
13
13
  # limitations under the License.
14
14
  #
15
15
  import itertools
16
- from typing import Dict, List, Union
16
+ from typing import Union
17
17
 
18
18
  import numpy as np
19
19
  import plotly.graph_objects as go
@@ -63,7 +63,7 @@ class MLRunLogger(Logger):
63
63
  :param context: MLRun context to log to. The context parameters can be logged as static
64
64
  hyperparameters.
65
65
  """
66
- super(MLRunLogger, self).__init__(context=context)
66
+ super().__init__(context=context)
67
67
 
68
68
  # Prepare the artifacts collection:
69
69
  self._artifacts = {} # type: Dict[str, Artifact]
@@ -144,9 +144,9 @@ class MLRunLogger(Logger):
144
144
  self,
145
145
  model_handler: DLModelHandler,
146
146
  tag: str = "",
147
- labels: Dict[str, DLTypes.TrackableType] = None,
148
- parameters: Dict[str, DLTypes.TrackableType] = None,
149
- extra_data: Dict[str, Union[DLTypes.TrackableType, Artifact]] = None,
147
+ labels: dict[str, DLTypes.TrackableType] = None,
148
+ parameters: dict[str, DLTypes.TrackableType] = None,
149
+ extra_data: dict[str, Union[DLTypes.TrackableType, Artifact]] = None,
150
150
  ):
151
151
  """
152
152
  Log the run, summarizing the validation metrics and dynamic hyperparameters across all epochs. If 'update' is
@@ -227,7 +227,7 @@ class MLRunLogger(Logger):
227
227
  # Commit to update the changes, so they will be available in the MLRun UI:
228
228
  self._context.commit(completed=False)
229
229
 
230
- def _generate_metrics_summary(self) -> Dict[str, float]:
230
+ def _generate_metrics_summary(self) -> dict[str, float]:
231
231
  """
232
232
  Generate a metrics summary to log along the model.
233
233
 
@@ -254,7 +254,7 @@ class MLRunLogger(Logger):
254
254
 
255
255
  @staticmethod
256
256
  def _generate_metric_results_artifact(
257
- loop: str, name: str, epochs_results: List[List[float]]
257
+ loop: str, name: str, epochs_results: list[list[float]]
258
258
  ) -> PlotlyArtifact:
259
259
  """
260
260
  Generate a plotly artifact for the results of the metric provided.
@@ -300,7 +300,7 @@ class MLRunLogger(Logger):
300
300
 
301
301
  @staticmethod
302
302
  def _generate_summary_results_artifact(
303
- name: str, training_results: List[float], validation_results: List[float]
303
+ name: str, training_results: list[float], validation_results: list[float]
304
304
  ) -> PlotlyArtifact:
305
305
  """
306
306
  Generate a plotly artifact for the results summary across all the epochs of training.
@@ -351,7 +351,7 @@ class MLRunLogger(Logger):
351
351
 
352
352
  @staticmethod
353
353
  def _generate_dynamic_hyperparameter_values_artifact(
354
- name: str, values: List[float]
354
+ name: str, values: list[float]
355
355
  ) -> PlotlyArtifact:
356
356
  """
357
357
  Generate a plotly artifact for the values of the hyperparameter provided.