mlrun 1.3.3rc1__py3-none-any.whl → 1.4.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 (444) hide show
  1. mlrun/__init__.py +3 -3
  2. mlrun/__main__.py +79 -37
  3. mlrun/api/__init__.py +1 -1
  4. mlrun/api/api/__init__.py +1 -1
  5. mlrun/api/api/api.py +4 -4
  6. mlrun/api/api/deps.py +10 -21
  7. mlrun/api/api/endpoints/__init__.py +1 -1
  8. mlrun/api/api/endpoints/artifacts.py +64 -36
  9. mlrun/api/api/endpoints/auth.py +4 -4
  10. mlrun/api/api/endpoints/background_tasks.py +11 -11
  11. mlrun/api/api/endpoints/client_spec.py +5 -5
  12. mlrun/api/api/endpoints/clusterization_spec.py +6 -4
  13. mlrun/api/api/endpoints/feature_store.py +124 -115
  14. mlrun/api/api/endpoints/files.py +22 -14
  15. mlrun/api/api/endpoints/frontend_spec.py +28 -21
  16. mlrun/api/api/endpoints/functions.py +142 -87
  17. mlrun/api/api/endpoints/grafana_proxy.py +89 -442
  18. mlrun/api/api/endpoints/healthz.py +20 -7
  19. mlrun/api/api/endpoints/hub.py +320 -0
  20. mlrun/api/api/endpoints/internal/__init__.py +1 -1
  21. mlrun/api/api/endpoints/internal/config.py +1 -1
  22. mlrun/api/api/endpoints/internal/memory_reports.py +9 -9
  23. mlrun/api/api/endpoints/logs.py +11 -11
  24. mlrun/api/api/endpoints/model_endpoints.py +74 -70
  25. mlrun/api/api/endpoints/operations.py +13 -9
  26. mlrun/api/api/endpoints/pipelines.py +93 -88
  27. mlrun/api/api/endpoints/projects.py +35 -35
  28. mlrun/api/api/endpoints/runs.py +69 -27
  29. mlrun/api/api/endpoints/runtime_resources.py +28 -28
  30. mlrun/api/api/endpoints/schedules.py +98 -41
  31. mlrun/api/api/endpoints/secrets.py +37 -32
  32. mlrun/api/api/endpoints/submit.py +12 -12
  33. mlrun/api/api/endpoints/tags.py +20 -22
  34. mlrun/api/api/utils.py +251 -42
  35. mlrun/api/constants.py +1 -1
  36. mlrun/api/crud/__init__.py +18 -15
  37. mlrun/api/crud/artifacts.py +10 -10
  38. mlrun/api/crud/client_spec.py +4 -4
  39. mlrun/api/crud/clusterization_spec.py +3 -3
  40. mlrun/api/crud/feature_store.py +54 -46
  41. mlrun/api/crud/functions.py +3 -3
  42. mlrun/api/crud/hub.py +312 -0
  43. mlrun/api/crud/logs.py +11 -9
  44. mlrun/api/crud/model_monitoring/__init__.py +3 -3
  45. mlrun/api/crud/model_monitoring/grafana.py +435 -0
  46. mlrun/api/crud/model_monitoring/model_endpoints.py +352 -129
  47. mlrun/api/crud/notifications.py +149 -0
  48. mlrun/api/crud/pipelines.py +67 -52
  49. mlrun/api/crud/projects.py +51 -23
  50. mlrun/api/crud/runs.py +7 -5
  51. mlrun/api/crud/runtime_resources.py +13 -13
  52. mlrun/api/{db/filedb → crud/runtimes}/__init__.py +1 -1
  53. mlrun/api/crud/runtimes/nuclio/__init__.py +14 -0
  54. mlrun/api/crud/runtimes/nuclio/function.py +505 -0
  55. mlrun/api/crud/runtimes/nuclio/helpers.py +310 -0
  56. mlrun/api/crud/secrets.py +88 -46
  57. mlrun/api/crud/tags.py +5 -5
  58. mlrun/api/db/__init__.py +1 -1
  59. mlrun/api/db/base.py +102 -54
  60. mlrun/api/db/init_db.py +2 -3
  61. mlrun/api/db/session.py +4 -12
  62. mlrun/api/db/sqldb/__init__.py +1 -1
  63. mlrun/api/db/sqldb/db.py +439 -196
  64. mlrun/api/db/sqldb/helpers.py +1 -1
  65. mlrun/api/db/sqldb/models/__init__.py +3 -3
  66. mlrun/api/db/sqldb/models/models_mysql.py +82 -64
  67. mlrun/api/db/sqldb/models/models_sqlite.py +76 -64
  68. mlrun/api/db/sqldb/session.py +27 -20
  69. mlrun/api/initial_data.py +82 -24
  70. mlrun/api/launcher.py +196 -0
  71. mlrun/api/main.py +91 -22
  72. mlrun/api/middlewares.py +6 -5
  73. mlrun/api/migrations_mysql/env.py +1 -1
  74. mlrun/api/migrations_mysql/versions/28383af526f3_market_place_to_hub.py +40 -0
  75. mlrun/api/migrations_mysql/versions/32bae1b0e29c_increase_timestamp_fields_precision.py +1 -1
  76. mlrun/api/migrations_mysql/versions/4903aef6a91d_tag_foreign_key_and_cascades.py +1 -1
  77. mlrun/api/migrations_mysql/versions/5f1351c88a19_adding_background_tasks_table.py +1 -1
  78. mlrun/api/migrations_mysql/versions/88e656800d6a_add_requested_logs_column_and_index_to_.py +1 -1
  79. mlrun/api/migrations_mysql/versions/9d16de5f03a7_adding_data_versions_table.py +1 -1
  80. mlrun/api/migrations_mysql/versions/b86f5b53f3d7_adding_name_and_updated_to_runs_table.py +1 -1
  81. mlrun/api/migrations_mysql/versions/c4af40b0bf61_init.py +1 -1
  82. mlrun/api/migrations_mysql/versions/c905d15bd91d_notifications.py +72 -0
  83. mlrun/api/migrations_mysql/versions/ee041e8fdaa0_adding_next_run_time_column_to_schedule_.py +1 -1
  84. mlrun/api/migrations_sqlite/env.py +1 -1
  85. mlrun/api/migrations_sqlite/versions/11f8dd2dc9fe_init.py +1 -1
  86. mlrun/api/migrations_sqlite/versions/1c954f8cb32d_schedule_last_run_uri.py +1 -1
  87. mlrun/api/migrations_sqlite/versions/2b6d23c715aa_adding_feature_sets.py +1 -1
  88. mlrun/api/migrations_sqlite/versions/4acd9430b093_market_place_to_hub.py +77 -0
  89. mlrun/api/migrations_sqlite/versions/6401142f2d7c_adding_next_run_time_column_to_schedule_.py +1 -1
  90. mlrun/api/migrations_sqlite/versions/64d90a1a69bc_adding_background_tasks_table.py +1 -1
  91. mlrun/api/migrations_sqlite/versions/803438ecd005_add_requested_logs_column_to_runs.py +1 -1
  92. mlrun/api/migrations_sqlite/versions/863114f0c659_refactoring_feature_set.py +1 -1
  93. mlrun/api/migrations_sqlite/versions/959ae00528ad_notifications.py +63 -0
  94. mlrun/api/migrations_sqlite/versions/accf9fc83d38_adding_data_versions_table.py +1 -1
  95. mlrun/api/migrations_sqlite/versions/b68e8e897a28_schedule_labels.py +1 -1
  96. mlrun/api/migrations_sqlite/versions/bcd0c1f9720c_adding_project_labels.py +1 -1
  97. mlrun/api/migrations_sqlite/versions/cf21882f938e_schedule_id.py +1 -1
  98. mlrun/api/migrations_sqlite/versions/d781f58f607f_tag_object_name_string.py +1 -1
  99. mlrun/api/migrations_sqlite/versions/deac06871ace_adding_marketplace_sources_table.py +1 -1
  100. mlrun/api/migrations_sqlite/versions/e1dd5983c06b_schedule_concurrency_limit.py +1 -1
  101. mlrun/api/migrations_sqlite/versions/e5594ed3ab53_adding_name_and_updated_to_runs_table.py +1 -1
  102. mlrun/api/migrations_sqlite/versions/f4249b4ba6fa_adding_feature_vectors.py +1 -1
  103. mlrun/api/migrations_sqlite/versions/f7b5a1a03629_adding_feature_labels.py +1 -1
  104. mlrun/api/schemas/__init__.py +216 -138
  105. mlrun/api/utils/__init__.py +1 -1
  106. mlrun/api/utils/asyncio.py +1 -1
  107. mlrun/api/utils/auth/__init__.py +1 -1
  108. mlrun/api/utils/auth/providers/__init__.py +1 -1
  109. mlrun/api/utils/auth/providers/base.py +7 -7
  110. mlrun/api/utils/auth/providers/nop.py +6 -7
  111. mlrun/api/utils/auth/providers/opa.py +17 -17
  112. mlrun/api/utils/auth/verifier.py +36 -34
  113. mlrun/api/utils/background_tasks.py +24 -24
  114. mlrun/{builder.py → api/utils/builder.py} +216 -123
  115. mlrun/api/utils/clients/__init__.py +1 -1
  116. mlrun/api/utils/clients/chief.py +19 -4
  117. mlrun/api/utils/clients/iguazio.py +106 -60
  118. mlrun/api/utils/clients/log_collector.py +1 -1
  119. mlrun/api/utils/clients/nuclio.py +23 -23
  120. mlrun/api/utils/clients/protocols/grpc.py +2 -2
  121. mlrun/api/utils/db/__init__.py +1 -1
  122. mlrun/api/utils/db/alembic.py +1 -1
  123. mlrun/api/utils/db/backup.py +1 -1
  124. mlrun/api/utils/db/mysql.py +24 -25
  125. mlrun/api/utils/db/sql_collation.py +1 -1
  126. mlrun/api/utils/db/sqlite_migration.py +2 -2
  127. mlrun/api/utils/events/__init__.py +14 -0
  128. mlrun/api/utils/events/base.py +57 -0
  129. mlrun/api/utils/events/events_factory.py +41 -0
  130. mlrun/api/utils/events/iguazio.py +217 -0
  131. mlrun/api/utils/events/nop.py +55 -0
  132. mlrun/api/utils/helpers.py +16 -13
  133. mlrun/api/utils/memory_reports.py +1 -1
  134. mlrun/api/utils/periodic.py +6 -3
  135. mlrun/api/utils/projects/__init__.py +1 -1
  136. mlrun/api/utils/projects/follower.py +33 -33
  137. mlrun/api/utils/projects/leader.py +36 -34
  138. mlrun/api/utils/projects/member.py +27 -27
  139. mlrun/api/utils/projects/remotes/__init__.py +1 -1
  140. mlrun/api/utils/projects/remotes/follower.py +13 -13
  141. mlrun/api/utils/projects/remotes/leader.py +10 -10
  142. mlrun/api/utils/projects/remotes/nop_follower.py +27 -21
  143. mlrun/api/utils/projects/remotes/nop_leader.py +17 -16
  144. mlrun/api/utils/scheduler.py +140 -51
  145. mlrun/api/utils/singletons/__init__.py +1 -1
  146. mlrun/api/utils/singletons/db.py +9 -15
  147. mlrun/api/utils/singletons/k8s.py +677 -5
  148. mlrun/api/utils/singletons/logs_dir.py +1 -1
  149. mlrun/api/utils/singletons/project_member.py +1 -1
  150. mlrun/api/utils/singletons/scheduler.py +1 -1
  151. mlrun/artifacts/__init__.py +2 -2
  152. mlrun/artifacts/base.py +8 -2
  153. mlrun/artifacts/dataset.py +5 -3
  154. mlrun/artifacts/manager.py +7 -1
  155. mlrun/artifacts/model.py +15 -4
  156. mlrun/artifacts/plots.py +1 -1
  157. mlrun/common/__init__.py +1 -1
  158. mlrun/common/constants.py +15 -0
  159. mlrun/common/model_monitoring.py +209 -0
  160. mlrun/common/schemas/__init__.py +167 -0
  161. mlrun/{api → common}/schemas/artifact.py +13 -14
  162. mlrun/{api → common}/schemas/auth.py +10 -8
  163. mlrun/{api → common}/schemas/background_task.py +3 -3
  164. mlrun/{api → common}/schemas/client_spec.py +1 -1
  165. mlrun/{api → common}/schemas/clusterization_spec.py +3 -3
  166. mlrun/{api → common}/schemas/constants.py +21 -8
  167. mlrun/common/schemas/events.py +36 -0
  168. mlrun/{api → common}/schemas/feature_store.py +2 -1
  169. mlrun/{api → common}/schemas/frontend_spec.py +7 -6
  170. mlrun/{api → common}/schemas/function.py +5 -5
  171. mlrun/{api → common}/schemas/http.py +3 -3
  172. mlrun/common/schemas/hub.py +134 -0
  173. mlrun/{api → common}/schemas/k8s.py +3 -3
  174. mlrun/{api → common}/schemas/memory_reports.py +1 -1
  175. mlrun/common/schemas/model_endpoints.py +342 -0
  176. mlrun/common/schemas/notification.py +57 -0
  177. mlrun/{api → common}/schemas/object.py +6 -6
  178. mlrun/{api → common}/schemas/pipeline.py +3 -3
  179. mlrun/{api → common}/schemas/project.py +6 -5
  180. mlrun/common/schemas/regex.py +24 -0
  181. mlrun/common/schemas/runs.py +30 -0
  182. mlrun/{api → common}/schemas/runtime_resource.py +3 -3
  183. mlrun/{api → common}/schemas/schedule.py +19 -7
  184. mlrun/{api → common}/schemas/secret.py +3 -3
  185. mlrun/{api → common}/schemas/tag.py +2 -2
  186. mlrun/common/types.py +25 -0
  187. mlrun/config.py +152 -20
  188. mlrun/data_types/__init__.py +7 -2
  189. mlrun/data_types/data_types.py +4 -2
  190. mlrun/data_types/infer.py +1 -1
  191. mlrun/data_types/spark.py +10 -3
  192. mlrun/datastore/__init__.py +10 -3
  193. mlrun/datastore/azure_blob.py +1 -1
  194. mlrun/datastore/base.py +185 -53
  195. mlrun/datastore/datastore.py +1 -1
  196. mlrun/datastore/filestore.py +1 -1
  197. mlrun/datastore/google_cloud_storage.py +1 -1
  198. mlrun/datastore/inmem.py +4 -1
  199. mlrun/datastore/redis.py +1 -1
  200. mlrun/datastore/s3.py +1 -1
  201. mlrun/datastore/sources.py +192 -70
  202. mlrun/datastore/spark_udf.py +44 -0
  203. mlrun/datastore/store_resources.py +4 -4
  204. mlrun/datastore/targets.py +115 -45
  205. mlrun/datastore/utils.py +127 -5
  206. mlrun/datastore/v3io.py +1 -1
  207. mlrun/datastore/wasbfs/__init__.py +1 -1
  208. mlrun/datastore/wasbfs/fs.py +1 -1
  209. mlrun/db/__init__.py +7 -5
  210. mlrun/db/base.py +112 -68
  211. mlrun/db/httpdb.py +445 -277
  212. mlrun/db/nopdb.py +491 -0
  213. mlrun/db/sqldb.py +112 -65
  214. mlrun/errors.py +6 -1
  215. mlrun/execution.py +44 -22
  216. mlrun/feature_store/__init__.py +1 -1
  217. mlrun/feature_store/api.py +143 -95
  218. mlrun/feature_store/common.py +16 -20
  219. mlrun/feature_store/feature_set.py +42 -12
  220. mlrun/feature_store/feature_vector.py +32 -21
  221. mlrun/feature_store/ingestion.py +9 -12
  222. mlrun/feature_store/retrieval/__init__.py +3 -2
  223. mlrun/feature_store/retrieval/base.py +388 -66
  224. mlrun/feature_store/retrieval/dask_merger.py +63 -151
  225. mlrun/feature_store/retrieval/job.py +30 -12
  226. mlrun/feature_store/retrieval/local_merger.py +40 -133
  227. mlrun/feature_store/retrieval/spark_merger.py +129 -127
  228. mlrun/feature_store/retrieval/storey_merger.py +173 -0
  229. mlrun/feature_store/steps.py +132 -15
  230. mlrun/features.py +8 -3
  231. mlrun/frameworks/__init__.py +1 -1
  232. mlrun/frameworks/_common/__init__.py +1 -1
  233. mlrun/frameworks/_common/artifacts_library.py +1 -1
  234. mlrun/frameworks/_common/mlrun_interface.py +1 -1
  235. mlrun/frameworks/_common/model_handler.py +1 -1
  236. mlrun/frameworks/_common/plan.py +1 -1
  237. mlrun/frameworks/_common/producer.py +1 -1
  238. mlrun/frameworks/_common/utils.py +1 -1
  239. mlrun/frameworks/_dl_common/__init__.py +1 -1
  240. mlrun/frameworks/_dl_common/loggers/__init__.py +1 -1
  241. mlrun/frameworks/_dl_common/loggers/logger.py +1 -1
  242. mlrun/frameworks/_dl_common/loggers/mlrun_logger.py +1 -1
  243. mlrun/frameworks/_dl_common/loggers/tensorboard_logger.py +1 -1
  244. mlrun/frameworks/_dl_common/model_handler.py +1 -1
  245. mlrun/frameworks/_dl_common/utils.py +1 -1
  246. mlrun/frameworks/_ml_common/__init__.py +1 -1
  247. mlrun/frameworks/_ml_common/artifacts_library.py +1 -1
  248. mlrun/frameworks/_ml_common/loggers/__init__.py +1 -1
  249. mlrun/frameworks/_ml_common/loggers/logger.py +1 -1
  250. mlrun/frameworks/_ml_common/loggers/mlrun_logger.py +1 -1
  251. mlrun/frameworks/_ml_common/model_handler.py +1 -1
  252. mlrun/frameworks/_ml_common/pkl_model_server.py +13 -1
  253. mlrun/frameworks/_ml_common/plan.py +1 -1
  254. mlrun/frameworks/_ml_common/plans/__init__.py +1 -1
  255. mlrun/frameworks/_ml_common/plans/calibration_curve_plan.py +1 -6
  256. mlrun/frameworks/_ml_common/plans/confusion_matrix_plan.py +1 -1
  257. mlrun/frameworks/_ml_common/plans/dataset_plan.py +1 -1
  258. mlrun/frameworks/_ml_common/plans/feature_importance_plan.py +1 -1
  259. mlrun/frameworks/_ml_common/plans/roc_curve_plan.py +1 -1
  260. mlrun/frameworks/_ml_common/producer.py +1 -1
  261. mlrun/frameworks/_ml_common/utils.py +1 -1
  262. mlrun/frameworks/auto_mlrun/__init__.py +1 -1
  263. mlrun/frameworks/auto_mlrun/auto_mlrun.py +1 -1
  264. mlrun/frameworks/huggingface/__init__.py +1 -1
  265. mlrun/frameworks/huggingface/model_server.py +1 -1
  266. mlrun/frameworks/lgbm/__init__.py +1 -1
  267. mlrun/frameworks/lgbm/callbacks/__init__.py +1 -1
  268. mlrun/frameworks/lgbm/callbacks/callback.py +1 -1
  269. mlrun/frameworks/lgbm/callbacks/logging_callback.py +1 -1
  270. mlrun/frameworks/lgbm/callbacks/mlrun_logging_callback.py +1 -1
  271. mlrun/frameworks/lgbm/mlrun_interfaces/__init__.py +1 -1
  272. mlrun/frameworks/lgbm/mlrun_interfaces/booster_mlrun_interface.py +1 -1
  273. mlrun/frameworks/lgbm/mlrun_interfaces/mlrun_interface.py +1 -1
  274. mlrun/frameworks/lgbm/mlrun_interfaces/model_mlrun_interface.py +1 -1
  275. mlrun/frameworks/lgbm/model_handler.py +1 -1
  276. mlrun/frameworks/lgbm/model_server.py +1 -1
  277. mlrun/frameworks/lgbm/utils.py +1 -1
  278. mlrun/frameworks/onnx/__init__.py +1 -1
  279. mlrun/frameworks/onnx/dataset.py +1 -1
  280. mlrun/frameworks/onnx/mlrun_interface.py +1 -1
  281. mlrun/frameworks/onnx/model_handler.py +1 -1
  282. mlrun/frameworks/onnx/model_server.py +1 -1
  283. mlrun/frameworks/parallel_coordinates.py +1 -1
  284. mlrun/frameworks/pytorch/__init__.py +1 -1
  285. mlrun/frameworks/pytorch/callbacks/__init__.py +1 -1
  286. mlrun/frameworks/pytorch/callbacks/callback.py +1 -1
  287. mlrun/frameworks/pytorch/callbacks/logging_callback.py +1 -1
  288. mlrun/frameworks/pytorch/callbacks/mlrun_logging_callback.py +1 -1
  289. mlrun/frameworks/pytorch/callbacks/tensorboard_logging_callback.py +1 -1
  290. mlrun/frameworks/pytorch/callbacks_handler.py +1 -1
  291. mlrun/frameworks/pytorch/mlrun_interface.py +1 -1
  292. mlrun/frameworks/pytorch/model_handler.py +1 -1
  293. mlrun/frameworks/pytorch/model_server.py +1 -1
  294. mlrun/frameworks/pytorch/utils.py +1 -1
  295. mlrun/frameworks/sklearn/__init__.py +1 -1
  296. mlrun/frameworks/sklearn/estimator.py +1 -1
  297. mlrun/frameworks/sklearn/metric.py +1 -1
  298. mlrun/frameworks/sklearn/metrics_library.py +1 -1
  299. mlrun/frameworks/sklearn/mlrun_interface.py +1 -1
  300. mlrun/frameworks/sklearn/model_handler.py +1 -1
  301. mlrun/frameworks/sklearn/utils.py +1 -1
  302. mlrun/frameworks/tf_keras/__init__.py +1 -1
  303. mlrun/frameworks/tf_keras/callbacks/__init__.py +1 -1
  304. mlrun/frameworks/tf_keras/callbacks/logging_callback.py +1 -1
  305. mlrun/frameworks/tf_keras/callbacks/mlrun_logging_callback.py +1 -1
  306. mlrun/frameworks/tf_keras/callbacks/tensorboard_logging_callback.py +1 -1
  307. mlrun/frameworks/tf_keras/mlrun_interface.py +1 -1
  308. mlrun/frameworks/tf_keras/model_handler.py +1 -1
  309. mlrun/frameworks/tf_keras/model_server.py +1 -1
  310. mlrun/frameworks/tf_keras/utils.py +1 -1
  311. mlrun/frameworks/xgboost/__init__.py +1 -1
  312. mlrun/frameworks/xgboost/mlrun_interface.py +1 -1
  313. mlrun/frameworks/xgboost/model_handler.py +1 -1
  314. mlrun/frameworks/xgboost/utils.py +1 -1
  315. mlrun/k8s_utils.py +14 -765
  316. mlrun/kfpops.py +14 -17
  317. mlrun/launcher/__init__.py +13 -0
  318. mlrun/launcher/base.py +406 -0
  319. mlrun/launcher/client.py +159 -0
  320. mlrun/launcher/factory.py +50 -0
  321. mlrun/launcher/local.py +276 -0
  322. mlrun/launcher/remote.py +178 -0
  323. mlrun/lists.py +10 -2
  324. mlrun/mlutils/__init__.py +1 -1
  325. mlrun/mlutils/data.py +1 -1
  326. mlrun/mlutils/models.py +1 -1
  327. mlrun/mlutils/plots.py +1 -1
  328. mlrun/model.py +252 -14
  329. mlrun/model_monitoring/__init__.py +41 -0
  330. mlrun/model_monitoring/features_drift_table.py +1 -1
  331. mlrun/model_monitoring/helpers.py +123 -38
  332. mlrun/model_monitoring/model_endpoint.py +144 -0
  333. mlrun/model_monitoring/model_monitoring_batch.py +310 -259
  334. mlrun/model_monitoring/stores/__init__.py +106 -0
  335. mlrun/model_monitoring/stores/kv_model_endpoint_store.py +448 -0
  336. mlrun/model_monitoring/stores/model_endpoint_store.py +147 -0
  337. mlrun/model_monitoring/stores/models/__init__.py +23 -0
  338. mlrun/model_monitoring/stores/models/base.py +18 -0
  339. mlrun/model_monitoring/stores/models/mysql.py +100 -0
  340. mlrun/model_monitoring/stores/models/sqlite.py +98 -0
  341. mlrun/model_monitoring/stores/sql_model_endpoint_store.py +370 -0
  342. mlrun/model_monitoring/stream_processing_fs.py +239 -271
  343. mlrun/package/__init__.py +163 -0
  344. mlrun/package/context_handler.py +325 -0
  345. mlrun/package/errors.py +47 -0
  346. mlrun/package/packager.py +298 -0
  347. mlrun/{runtimes/package → package/packagers}/__init__.py +3 -1
  348. mlrun/package/packagers/default_packager.py +422 -0
  349. mlrun/package/packagers/numpy_packagers.py +612 -0
  350. mlrun/package/packagers/pandas_packagers.py +968 -0
  351. mlrun/package/packagers/python_standard_library_packagers.py +616 -0
  352. mlrun/package/packagers_manager.py +786 -0
  353. mlrun/package/utils/__init__.py +53 -0
  354. mlrun/package/utils/_archiver.py +226 -0
  355. mlrun/package/utils/_formatter.py +211 -0
  356. mlrun/package/utils/_pickler.py +234 -0
  357. mlrun/package/utils/_supported_format.py +71 -0
  358. mlrun/package/utils/log_hint_utils.py +93 -0
  359. mlrun/package/utils/type_hint_utils.py +298 -0
  360. mlrun/platforms/__init__.py +1 -1
  361. mlrun/platforms/iguazio.py +34 -2
  362. mlrun/platforms/other.py +1 -1
  363. mlrun/projects/__init__.py +1 -1
  364. mlrun/projects/operations.py +14 -9
  365. mlrun/projects/pipelines.py +31 -13
  366. mlrun/projects/project.py +762 -238
  367. mlrun/render.py +49 -19
  368. mlrun/run.py +57 -326
  369. mlrun/runtimes/__init__.py +3 -9
  370. mlrun/runtimes/base.py +247 -784
  371. mlrun/runtimes/constants.py +1 -1
  372. mlrun/runtimes/daskjob.py +45 -41
  373. mlrun/runtimes/funcdoc.py +43 -7
  374. mlrun/runtimes/function.py +66 -656
  375. mlrun/runtimes/function_reference.py +1 -1
  376. mlrun/runtimes/generators.py +1 -1
  377. mlrun/runtimes/kubejob.py +99 -116
  378. mlrun/runtimes/local.py +59 -66
  379. mlrun/runtimes/mpijob/__init__.py +1 -1
  380. mlrun/runtimes/mpijob/abstract.py +13 -15
  381. mlrun/runtimes/mpijob/v1.py +3 -1
  382. mlrun/runtimes/mpijob/v1alpha1.py +1 -1
  383. mlrun/runtimes/nuclio.py +1 -1
  384. mlrun/runtimes/pod.py +51 -26
  385. mlrun/runtimes/remotesparkjob.py +3 -1
  386. mlrun/runtimes/serving.py +12 -4
  387. mlrun/runtimes/sparkjob/__init__.py +1 -2
  388. mlrun/runtimes/sparkjob/abstract.py +44 -31
  389. mlrun/runtimes/sparkjob/spark3job.py +11 -9
  390. mlrun/runtimes/utils.py +61 -42
  391. mlrun/secrets.py +16 -18
  392. mlrun/serving/__init__.py +3 -2
  393. mlrun/serving/merger.py +1 -1
  394. mlrun/serving/remote.py +1 -1
  395. mlrun/serving/routers.py +39 -42
  396. mlrun/serving/server.py +23 -13
  397. mlrun/serving/serving_wrapper.py +1 -1
  398. mlrun/serving/states.py +172 -39
  399. mlrun/serving/utils.py +1 -1
  400. mlrun/serving/v1_serving.py +1 -1
  401. mlrun/serving/v2_serving.py +29 -21
  402. mlrun/utils/__init__.py +1 -2
  403. mlrun/utils/async_http.py +8 -1
  404. mlrun/utils/azure_vault.py +1 -1
  405. mlrun/utils/clones.py +2 -2
  406. mlrun/utils/condition_evaluator.py +65 -0
  407. mlrun/utils/db.py +52 -0
  408. mlrun/utils/helpers.py +188 -13
  409. mlrun/utils/http.py +89 -54
  410. mlrun/utils/logger.py +48 -8
  411. mlrun/utils/model_monitoring.py +132 -100
  412. mlrun/utils/notifications/__init__.py +1 -1
  413. mlrun/utils/notifications/notification/__init__.py +8 -6
  414. mlrun/utils/notifications/notification/base.py +20 -14
  415. mlrun/utils/notifications/notification/console.py +7 -4
  416. mlrun/utils/notifications/notification/git.py +36 -19
  417. mlrun/utils/notifications/notification/ipython.py +10 -8
  418. mlrun/utils/notifications/notification/slack.py +18 -13
  419. mlrun/utils/notifications/notification_pusher.py +377 -56
  420. mlrun/utils/regex.py +6 -1
  421. mlrun/utils/singleton.py +1 -1
  422. mlrun/utils/v3io_clients.py +1 -1
  423. mlrun/utils/vault.py +270 -269
  424. mlrun/utils/version/__init__.py +1 -1
  425. mlrun/utils/version/version.json +2 -2
  426. mlrun/utils/version/version.py +1 -1
  427. {mlrun-1.3.3rc1.dist-info → mlrun-1.4.0.dist-info}/METADATA +16 -10
  428. mlrun-1.4.0.dist-info/RECORD +434 -0
  429. mlrun/api/api/endpoints/marketplace.py +0 -257
  430. mlrun/api/crud/marketplace.py +0 -221
  431. mlrun/api/crud/model_monitoring/model_endpoint_store.py +0 -847
  432. mlrun/api/db/filedb/db.py +0 -518
  433. mlrun/api/schemas/marketplace.py +0 -128
  434. mlrun/api/schemas/model_endpoints.py +0 -185
  435. mlrun/db/filedb.py +0 -891
  436. mlrun/feature_store/retrieval/online.py +0 -92
  437. mlrun/model_monitoring/constants.py +0 -67
  438. mlrun/runtimes/package/context_handler.py +0 -711
  439. mlrun/runtimes/sparkjob/spark2job.py +0 -59
  440. mlrun-1.3.3rc1.dist-info/RECORD +0 -381
  441. {mlrun-1.3.3rc1.dist-info → mlrun-1.4.0.dist-info}/LICENSE +0 -0
  442. {mlrun-1.3.3rc1.dist-info → mlrun-1.4.0.dist-info}/WHEEL +0 -0
  443. {mlrun-1.3.3rc1.dist-info → mlrun-1.4.0.dist-info}/entry_points.txt +0 -0
  444. {mlrun-1.3.3rc1.dist-info → mlrun-1.4.0.dist-info}/top_level.txt +0 -0
mlrun/db/base.py CHANGED
@@ -1,4 +1,4 @@
1
- # Copyright 2018 Iguazio
1
+ # Copyright 2023 Iguazio
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -13,12 +13,13 @@
13
13
  # limitations under the License.
14
14
 
15
15
  import datetime
16
+ import typing
16
17
  import warnings
17
18
  from abc import ABC, abstractmethod
18
19
  from typing import List, Optional, Union
19
20
 
20
- from mlrun.api import schemas
21
- from mlrun.api.schemas import ModelEndpoint
21
+ import mlrun.common.schemas
22
+ import mlrun.model_monitoring.model_endpoint
22
23
 
23
24
 
24
25
  class RunDBError(Exception):
@@ -49,7 +50,7 @@ class RunDBInterface(ABC):
49
50
  pass
50
51
 
51
52
  @abstractmethod
52
- def abort_run(self, uid, project="", iter=0):
53
+ def abort_run(self, uid, project="", iter=0, timeout=45):
53
54
  pass
54
55
 
55
56
  @abstractmethod
@@ -71,11 +72,14 @@ class RunDBInterface(ABC):
71
72
  start_time_to: datetime.datetime = None,
72
73
  last_update_time_from: datetime.datetime = None,
73
74
  last_update_time_to: datetime.datetime = None,
74
- partition_by: Union[schemas.RunPartitionByField, str] = None,
75
+ partition_by: Union[mlrun.common.schemas.RunPartitionByField, str] = None,
75
76
  rows_per_partition: int = 1,
76
- partition_sort_by: Union[schemas.SortField, str] = None,
77
- partition_order: Union[schemas.OrderType, str] = schemas.OrderType.desc,
77
+ partition_sort_by: Union[mlrun.common.schemas.SortField, str] = None,
78
+ partition_order: Union[
79
+ mlrun.common.schemas.OrderType, str
80
+ ] = mlrun.common.schemas.OrderType.desc,
78
81
  max_partitions: int = 0,
82
+ with_notifications: bool = False,
79
83
  ):
80
84
  pass
81
85
 
@@ -107,7 +111,7 @@ class RunDBInterface(ABC):
107
111
  iter: int = None,
108
112
  best_iteration: bool = False,
109
113
  kind: str = None,
110
- category: Union[str, schemas.ArtifactCategories] = None,
114
+ category: Union[str, mlrun.common.schemas.ArtifactCategories] = None,
111
115
  ):
112
116
  pass
113
117
 
@@ -147,7 +151,7 @@ class RunDBInterface(ABC):
147
151
  self,
148
152
  project: str,
149
153
  tag_name: str,
150
- tag_objects: schemas.TagObjects,
154
+ tag_objects: mlrun.common.schemas.TagObjects,
151
155
  replace: bool = False,
152
156
  ):
153
157
  pass
@@ -157,7 +161,7 @@ class RunDBInterface(ABC):
157
161
  self,
158
162
  project: str,
159
163
  tag_name: str,
160
- tag_objects: schemas.TagObjects,
164
+ tag_objects: mlrun.common.schemas.TagObjects,
161
165
  ):
162
166
  pass
163
167
 
@@ -183,11 +187,11 @@ class RunDBInterface(ABC):
183
187
  @staticmethod
184
188
  def _resolve_artifacts_to_tag_objects(
185
189
  artifacts,
186
- ) -> schemas.TagObjects:
190
+ ) -> mlrun.common.schemas.TagObjects:
187
191
  """
188
192
  :param artifacts: Can be a list of :py:class:`~mlrun.artifacts.Artifact` objects or
189
193
  dictionaries, or a single object.
190
- :return: :py:class:`~mlrun.api.schemas.TagObjects`
194
+ :return: :py:class:`~mlrun.common.schemas.TagObjects`
191
195
  """
192
196
  # to avoid circular imports we import here
193
197
  import mlrun.artifacts.base
@@ -203,7 +207,7 @@ class RunDBInterface(ABC):
203
207
  else artifact
204
208
  )
205
209
  artifact_identifiers.append(
206
- schemas.ArtifactIdentifier(
210
+ mlrun.common.schemas.ArtifactIdentifier(
207
211
  key=mlrun.utils.get_in_artifact(artifact_obj, "key"),
208
212
  # we are passing tree as uid when storing an artifact, so if uid is not defined,
209
213
  # pass the tree as uid
@@ -213,13 +217,15 @@ class RunDBInterface(ABC):
213
217
  iter=mlrun.utils.get_in_artifact(artifact_obj, "iter"),
214
218
  )
215
219
  )
216
- return schemas.TagObjects(kind="artifact", identifiers=artifact_identifiers)
220
+ return mlrun.common.schemas.TagObjects(
221
+ kind="artifact", identifiers=artifact_identifiers
222
+ )
217
223
 
218
224
  @abstractmethod
219
225
  def delete_project(
220
226
  self,
221
227
  name: str,
222
- deletion_strategy: schemas.DeletionStrategy = schemas.DeletionStrategy.default(),
228
+ deletion_strategy: mlrun.common.schemas.DeletionStrategy = mlrun.common.schemas.DeletionStrategy.default(),
223
229
  ):
224
230
  pass
225
231
 
@@ -227,8 +233,8 @@ class RunDBInterface(ABC):
227
233
  def store_project(
228
234
  self,
229
235
  name: str,
230
- project: schemas.Project,
231
- ) -> schemas.Project:
236
+ project: mlrun.common.schemas.Project,
237
+ ) -> mlrun.common.schemas.Project:
232
238
  pass
233
239
 
234
240
  @abstractmethod
@@ -236,40 +242,45 @@ class RunDBInterface(ABC):
236
242
  self,
237
243
  name: str,
238
244
  project: dict,
239
- patch_mode: schemas.PatchMode = schemas.PatchMode.replace,
240
- ) -> schemas.Project:
245
+ patch_mode: mlrun.common.schemas.PatchMode = mlrun.common.schemas.PatchMode.replace,
246
+ ) -> mlrun.common.schemas.Project:
241
247
  pass
242
248
 
243
249
  @abstractmethod
244
250
  def create_project(
245
251
  self,
246
- project: schemas.Project,
247
- ) -> schemas.Project:
252
+ project: mlrun.common.schemas.Project,
253
+ ) -> mlrun.common.schemas.Project:
248
254
  pass
249
255
 
250
256
  @abstractmethod
251
257
  def list_projects(
252
258
  self,
253
259
  owner: str = None,
254
- format_: schemas.ProjectsFormat = schemas.ProjectsFormat.full,
260
+ format_: mlrun.common.schemas.ProjectsFormat = mlrun.common.schemas.ProjectsFormat.full,
255
261
  labels: List[str] = None,
256
- state: schemas.ProjectState = None,
257
- ) -> schemas.ProjectsOutput:
262
+ state: mlrun.common.schemas.ProjectState = None,
263
+ ) -> mlrun.common.schemas.ProjectsOutput:
258
264
  pass
259
265
 
260
266
  @abstractmethod
261
- def get_project(self, name: str) -> schemas.Project:
267
+ def get_project(self, name: str) -> mlrun.common.schemas.Project:
262
268
  pass
263
269
 
264
270
  @abstractmethod
265
271
  def list_artifact_tags(
266
- self, project=None, category: Union[str, schemas.ArtifactCategories] = None
272
+ self,
273
+ project=None,
274
+ category: Union[str, mlrun.common.schemas.ArtifactCategories] = None,
267
275
  ):
268
276
  pass
269
277
 
270
278
  @abstractmethod
271
279
  def create_feature_set(
272
- self, feature_set: Union[dict, schemas.FeatureSet], project="", versioned=True
280
+ self,
281
+ feature_set: Union[dict, mlrun.common.schemas.FeatureSet],
282
+ project="",
283
+ versioned=True,
273
284
  ) -> dict:
274
285
  pass
275
286
 
@@ -287,7 +298,7 @@ class RunDBInterface(ABC):
287
298
  tag: str = None,
288
299
  entities: List[str] = None,
289
300
  labels: List[str] = None,
290
- ) -> schemas.FeaturesOutput:
301
+ ) -> mlrun.common.schemas.FeaturesOutput:
291
302
  pass
292
303
 
293
304
  @abstractmethod
@@ -297,7 +308,7 @@ class RunDBInterface(ABC):
297
308
  name: str = None,
298
309
  tag: str = None,
299
310
  labels: List[str] = None,
300
- ) -> schemas.EntitiesOutput:
311
+ ) -> mlrun.common.schemas.EntitiesOutput:
301
312
  pass
302
313
 
303
314
  @abstractmethod
@@ -310,17 +321,21 @@ class RunDBInterface(ABC):
310
321
  entities: List[str] = None,
311
322
  features: List[str] = None,
312
323
  labels: List[str] = None,
313
- partition_by: Union[schemas.FeatureStorePartitionByField, str] = None,
324
+ partition_by: Union[
325
+ mlrun.common.schemas.FeatureStorePartitionByField, str
326
+ ] = None,
314
327
  rows_per_partition: int = 1,
315
- partition_sort_by: Union[schemas.SortField, str] = None,
316
- partition_order: Union[schemas.OrderType, str] = schemas.OrderType.desc,
328
+ partition_sort_by: Union[mlrun.common.schemas.SortField, str] = None,
329
+ partition_order: Union[
330
+ mlrun.common.schemas.OrderType, str
331
+ ] = mlrun.common.schemas.OrderType.desc,
317
332
  ) -> List[dict]:
318
333
  pass
319
334
 
320
335
  @abstractmethod
321
336
  def store_feature_set(
322
337
  self,
323
- feature_set: Union[dict, schemas.FeatureSet],
338
+ feature_set: Union[dict, mlrun.common.schemas.FeatureSet],
324
339
  name=None,
325
340
  project="",
326
341
  tag=None,
@@ -337,7 +352,9 @@ class RunDBInterface(ABC):
337
352
  project="",
338
353
  tag=None,
339
354
  uid=None,
340
- patch_mode: Union[str, schemas.PatchMode] = schemas.PatchMode.replace,
355
+ patch_mode: Union[
356
+ str, mlrun.common.schemas.PatchMode
357
+ ] = mlrun.common.schemas.PatchMode.replace,
341
358
  ):
342
359
  pass
343
360
 
@@ -348,7 +365,7 @@ class RunDBInterface(ABC):
348
365
  @abstractmethod
349
366
  def create_feature_vector(
350
367
  self,
351
- feature_vector: Union[dict, schemas.FeatureVector],
368
+ feature_vector: Union[dict, mlrun.common.schemas.FeatureVector],
352
369
  project="",
353
370
  versioned=True,
354
371
  ) -> dict:
@@ -368,17 +385,21 @@ class RunDBInterface(ABC):
368
385
  tag: str = None,
369
386
  state: str = None,
370
387
  labels: List[str] = None,
371
- partition_by: Union[schemas.FeatureStorePartitionByField, str] = None,
388
+ partition_by: Union[
389
+ mlrun.common.schemas.FeatureStorePartitionByField, str
390
+ ] = None,
372
391
  rows_per_partition: int = 1,
373
- partition_sort_by: Union[schemas.SortField, str] = None,
374
- partition_order: Union[schemas.OrderType, str] = schemas.OrderType.desc,
392
+ partition_sort_by: Union[mlrun.common.schemas.SortField, str] = None,
393
+ partition_order: Union[
394
+ mlrun.common.schemas.OrderType, str
395
+ ] = mlrun.common.schemas.OrderType.desc,
375
396
  ) -> List[dict]:
376
397
  pass
377
398
 
378
399
  @abstractmethod
379
400
  def store_feature_vector(
380
401
  self,
381
- feature_vector: Union[dict, schemas.FeatureVector],
402
+ feature_vector: Union[dict, mlrun.common.schemas.FeatureVector],
382
403
  name=None,
383
404
  project="",
384
405
  tag=None,
@@ -395,7 +416,9 @@ class RunDBInterface(ABC):
395
416
  project="",
396
417
  tag=None,
397
418
  uid=None,
398
- patch_mode: Union[str, schemas.PatchMode] = schemas.PatchMode.replace,
419
+ patch_mode: Union[
420
+ str, mlrun.common.schemas.PatchMode
421
+ ] = mlrun.common.schemas.PatchMode.replace,
399
422
  ):
400
423
  pass
401
424
 
@@ -412,10 +435,10 @@ class RunDBInterface(ABC):
412
435
  page_token: str = "",
413
436
  filter_: str = "",
414
437
  format_: Union[
415
- str, schemas.PipelinesFormat
416
- ] = schemas.PipelinesFormat.metadata_only,
438
+ str, mlrun.common.schemas.PipelinesFormat
439
+ ] = mlrun.common.schemas.PipelinesFormat.metadata_only,
417
440
  page_size: int = None,
418
- ) -> schemas.PipelinesOutput:
441
+ ) -> mlrun.common.schemas.PipelinesOutput:
419
442
  pass
420
443
 
421
444
  @abstractmethod
@@ -423,8 +446,8 @@ class RunDBInterface(ABC):
423
446
  self,
424
447
  project: str,
425
448
  provider: Union[
426
- str, schemas.SecretProviderName
427
- ] = schemas.SecretProviderName.kubernetes,
449
+ str, mlrun.common.schemas.SecretProviderName
450
+ ] = mlrun.common.schemas.SecretProviderName.kubernetes,
428
451
  secrets: dict = None,
429
452
  ):
430
453
  pass
@@ -435,10 +458,10 @@ class RunDBInterface(ABC):
435
458
  project: str,
436
459
  token: str,
437
460
  provider: Union[
438
- str, schemas.SecretProviderName
439
- ] = schemas.SecretProviderName.kubernetes,
461
+ str, mlrun.common.schemas.SecretProviderName
462
+ ] = mlrun.common.schemas.SecretProviderName.kubernetes,
440
463
  secrets: List[str] = None,
441
- ) -> schemas.SecretsData:
464
+ ) -> mlrun.common.schemas.SecretsData:
442
465
  pass
443
466
 
444
467
  @abstractmethod
@@ -446,10 +469,10 @@ class RunDBInterface(ABC):
446
469
  self,
447
470
  project: str,
448
471
  provider: Union[
449
- str, schemas.SecretProviderName
450
- ] = schemas.SecretProviderName.kubernetes,
472
+ str, mlrun.common.schemas.SecretProviderName
473
+ ] = mlrun.common.schemas.SecretProviderName.kubernetes,
451
474
  token: str = None,
452
- ) -> schemas.SecretKeysData:
475
+ ) -> mlrun.common.schemas.SecretKeysData:
453
476
  pass
454
477
 
455
478
  @abstractmethod
@@ -457,8 +480,8 @@ class RunDBInterface(ABC):
457
480
  self,
458
481
  project: str,
459
482
  provider: Union[
460
- str, schemas.SecretProviderName
461
- ] = schemas.SecretProviderName.kubernetes,
483
+ str, mlrun.common.schemas.SecretProviderName
484
+ ] = mlrun.common.schemas.SecretProviderName.kubernetes,
462
485
  secrets: List[str] = None,
463
486
  ):
464
487
  pass
@@ -468,8 +491,8 @@ class RunDBInterface(ABC):
468
491
  self,
469
492
  user: str,
470
493
  provider: Union[
471
- str, schemas.SecretProviderName
472
- ] = schemas.SecretProviderName.vault,
494
+ str, mlrun.common.schemas.SecretProviderName
495
+ ] = mlrun.common.schemas.SecretProviderName.vault,
473
496
  secrets: dict = None,
474
497
  ):
475
498
  pass
@@ -479,7 +502,9 @@ class RunDBInterface(ABC):
479
502
  self,
480
503
  project: str,
481
504
  endpoint_id: str,
482
- model_endpoint: ModelEndpoint,
505
+ model_endpoint: Union[
506
+ mlrun.model_monitoring.model_endpoint.ModelEndpoint, dict
507
+ ],
483
508
  ):
484
509
  pass
485
510
 
@@ -526,34 +551,35 @@ class RunDBInterface(ABC):
526
551
  pass
527
552
 
528
553
  @abstractmethod
529
- def create_marketplace_source(
530
- self, source: Union[dict, schemas.IndexedMarketplaceSource]
554
+ def create_hub_source(
555
+ self, source: Union[dict, mlrun.common.schemas.IndexedHubSource]
531
556
  ):
532
557
  pass
533
558
 
534
559
  @abstractmethod
535
- def store_marketplace_source(
536
- self, source_name: str, source: Union[dict, schemas.IndexedMarketplaceSource]
560
+ def store_hub_source(
561
+ self,
562
+ source_name: str,
563
+ source: Union[dict, mlrun.common.schemas.IndexedHubSource],
537
564
  ):
538
565
  pass
539
566
 
540
567
  @abstractmethod
541
- def list_marketplace_sources(self):
568
+ def list_hub_sources(self):
542
569
  pass
543
570
 
544
571
  @abstractmethod
545
- def get_marketplace_source(self, source_name: str):
572
+ def get_hub_source(self, source_name: str):
546
573
  pass
547
574
 
548
575
  @abstractmethod
549
- def delete_marketplace_source(self, source_name: str):
576
+ def delete_hub_source(self, source_name: str):
550
577
  pass
551
578
 
552
579
  @abstractmethod
553
- def get_marketplace_catalog(
580
+ def get_hub_catalog(
554
581
  self,
555
582
  source_name: str,
556
- channel: str = None,
557
583
  version: str = None,
558
584
  tag: str = None,
559
585
  force_refresh: bool = False,
@@ -561,11 +587,10 @@ class RunDBInterface(ABC):
561
587
  pass
562
588
 
563
589
  @abstractmethod
564
- def get_marketplace_item(
590
+ def get_hub_item(
565
591
  self,
566
592
  source_name: str,
567
593
  item_name: str,
568
- channel: str = "development",
569
594
  version: str = None,
570
595
  tag: str = "latest",
571
596
  force_refresh: bool = False,
@@ -574,6 +599,25 @@ class RunDBInterface(ABC):
574
599
 
575
600
  @abstractmethod
576
601
  def verify_authorization(
577
- self, authorization_verification_input: schemas.AuthorizationVerificationInput
602
+ self,
603
+ authorization_verification_input: mlrun.common.schemas.AuthorizationVerificationInput,
604
+ ):
605
+ pass
606
+
607
+ def get_builder_status(
608
+ self,
609
+ func: "mlrun.runtimes.BaseRuntime",
610
+ offset: int = 0,
611
+ logs: bool = True,
612
+ last_log_timestamp: float = 0.0,
613
+ verbose: bool = False,
614
+ ):
615
+ pass
616
+
617
+ def set_run_notifications(
618
+ self,
619
+ project: str,
620
+ runs: typing.List[mlrun.model.RunObject],
621
+ notifications: typing.List[mlrun.model.Notification],
578
622
  ):
579
623
  pass