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
@@ -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.
@@ -16,14 +16,14 @@ import datetime
16
16
  from http import HTTPStatus
17
17
  from typing import List
18
18
 
19
- from fastapi import APIRouter, Depends, Query, Request
19
+ from fastapi import APIRouter, Body, Depends, Query, Request, Response
20
20
  from fastapi.concurrency import run_in_threadpool
21
21
  from sqlalchemy.orm import Session
22
22
 
23
23
  import mlrun.api.crud
24
- import mlrun.api.schemas
25
24
  import mlrun.api.utils.auth.verifier
26
25
  import mlrun.api.utils.singletons.project_member
26
+ import mlrun.common.schemas
27
27
  from mlrun.api.api import deps
28
28
  from mlrun.api.api.utils import log_and_raise
29
29
  from mlrun.utils.helpers import datetime_from_iso
@@ -37,7 +37,7 @@ async def store_run(
37
37
  project: str,
38
38
  uid: str,
39
39
  iter: int = 0,
40
- auth_info: mlrun.api.schemas.AuthInfo = Depends(deps.authenticate_request),
40
+ auth_info: mlrun.common.schemas.AuthInfo = Depends(deps.authenticate_request),
41
41
  db_session: Session = Depends(deps.get_db_session),
42
42
  ):
43
43
  await run_in_threadpool(
@@ -47,10 +47,10 @@ async def store_run(
47
47
  auth_info=auth_info,
48
48
  )
49
49
  await mlrun.api.utils.auth.verifier.AuthVerifier().query_project_resource_permissions(
50
- mlrun.api.schemas.AuthorizationResourceTypes.run,
50
+ mlrun.common.schemas.AuthorizationResourceTypes.run,
51
51
  project,
52
52
  uid,
53
- mlrun.api.schemas.AuthorizationAction.store,
53
+ mlrun.common.schemas.AuthorizationAction.store,
54
54
  auth_info,
55
55
  )
56
56
  data = None
@@ -76,14 +76,14 @@ async def update_run(
76
76
  project: str,
77
77
  uid: str,
78
78
  iter: int = 0,
79
- auth_info: mlrun.api.schemas.AuthInfo = Depends(deps.authenticate_request),
79
+ auth_info: mlrun.common.schemas.AuthInfo = Depends(deps.authenticate_request),
80
80
  db_session: Session = Depends(deps.get_db_session),
81
81
  ):
82
82
  await mlrun.api.utils.auth.verifier.AuthVerifier().query_project_resource_permissions(
83
- mlrun.api.schemas.AuthorizationResourceTypes.run,
83
+ mlrun.common.schemas.AuthorizationResourceTypes.run,
84
84
  project,
85
85
  uid,
86
- mlrun.api.schemas.AuthorizationAction.update,
86
+ mlrun.common.schemas.AuthorizationAction.update,
87
87
  auth_info,
88
88
  )
89
89
  data = None
@@ -108,17 +108,17 @@ async def get_run(
108
108
  project: str,
109
109
  uid: str,
110
110
  iter: int = 0,
111
- auth_info: mlrun.api.schemas.AuthInfo = Depends(deps.authenticate_request),
111
+ auth_info: mlrun.common.schemas.AuthInfo = Depends(deps.authenticate_request),
112
112
  db_session: Session = Depends(deps.get_db_session),
113
113
  ):
114
114
  data = await run_in_threadpool(
115
115
  mlrun.api.crud.Runs().get_run, db_session, uid, iter, project
116
116
  )
117
117
  await mlrun.api.utils.auth.verifier.AuthVerifier().query_project_resource_permissions(
118
- mlrun.api.schemas.AuthorizationResourceTypes.run,
118
+ mlrun.common.schemas.AuthorizationResourceTypes.run,
119
119
  project,
120
120
  uid,
121
- mlrun.api.schemas.AuthorizationAction.read,
121
+ mlrun.common.schemas.AuthorizationAction.read,
122
122
  auth_info,
123
123
  )
124
124
  return {
@@ -131,14 +131,14 @@ async def delete_run(
131
131
  project: str,
132
132
  uid: str,
133
133
  iter: int = 0,
134
- auth_info: mlrun.api.schemas.AuthInfo = Depends(deps.authenticate_request),
134
+ auth_info: mlrun.common.schemas.AuthInfo = Depends(deps.authenticate_request),
135
135
  db_session: Session = Depends(deps.get_db_session),
136
136
  ):
137
137
  await mlrun.api.utils.auth.verifier.AuthVerifier().query_project_resource_permissions(
138
- mlrun.api.schemas.AuthorizationResourceTypes.run,
138
+ mlrun.common.schemas.AuthorizationResourceTypes.run,
139
139
  project,
140
140
  uid,
141
- mlrun.api.schemas.AuthorizationAction.delete,
141
+ mlrun.common.schemas.AuthorizationAction.delete,
142
142
  auth_info,
143
143
  )
144
144
  await run_in_threadpool(
@@ -165,24 +165,25 @@ async def list_runs(
165
165
  start_time_to: str = None,
166
166
  last_update_time_from: str = None,
167
167
  last_update_time_to: str = None,
168
- partition_by: mlrun.api.schemas.RunPartitionByField = Query(
168
+ partition_by: mlrun.common.schemas.RunPartitionByField = Query(
169
169
  None, alias="partition-by"
170
170
  ),
171
171
  rows_per_partition: int = Query(1, alias="rows-per-partition", gt=0),
172
- partition_sort_by: mlrun.api.schemas.SortField = Query(
172
+ partition_sort_by: mlrun.common.schemas.SortField = Query(
173
173
  None, alias="partition-sort-by"
174
174
  ),
175
- partition_order: mlrun.api.schemas.OrderType = Query(
176
- mlrun.api.schemas.OrderType.desc, alias="partition-order"
175
+ partition_order: mlrun.common.schemas.OrderType = Query(
176
+ mlrun.common.schemas.OrderType.desc, alias="partition-order"
177
177
  ),
178
178
  max_partitions: int = Query(0, alias="max-partitions", ge=0),
179
- auth_info: mlrun.api.schemas.AuthInfo = Depends(deps.authenticate_request),
179
+ with_notifications: bool = Query(False, alias="with-notifications"),
180
+ auth_info: mlrun.common.schemas.AuthInfo = Depends(deps.authenticate_request),
180
181
  db_session: Session = Depends(deps.get_db_session),
181
182
  ):
182
183
  if project != "*":
183
184
  await mlrun.api.utils.auth.verifier.AuthVerifier().query_project_permissions(
184
185
  project,
185
- mlrun.api.schemas.AuthorizationAction.read,
186
+ mlrun.common.schemas.AuthorizationAction.read,
186
187
  auth_info,
187
188
  )
188
189
  runs = await run_in_threadpool(
@@ -205,9 +206,10 @@ async def list_runs(
205
206
  partition_sort_by,
206
207
  partition_order,
207
208
  max_partitions,
209
+ with_notifications=with_notifications,
208
210
  )
209
211
  filtered_runs = await mlrun.api.utils.auth.verifier.AuthVerifier().filter_project_resources_by_permissions(
210
- mlrun.api.schemas.AuthorizationResourceTypes.run,
212
+ mlrun.common.schemas.AuthorizationResourceTypes.run,
211
213
  runs,
212
214
  lambda run: (
213
215
  run.get("metadata", {}).get("project", mlrun.mlconf.default_project),
@@ -227,7 +229,7 @@ async def delete_runs(
227
229
  labels: List[str] = Query([], alias="label"),
228
230
  state: str = None,
229
231
  days_ago: int = None,
230
- auth_info: mlrun.api.schemas.AuthInfo = Depends(deps.authenticate_request),
232
+ auth_info: mlrun.common.schemas.AuthInfo = Depends(deps.authenticate_request),
231
233
  db_session: Session = Depends(deps.get_db_session),
232
234
  ):
233
235
  if not project or project != "*":
@@ -235,10 +237,10 @@ async def delete_runs(
235
237
  # Meaning there is no reason at the moment to query the permission for each run under the project
236
238
  # TODO check for every run when we will manage permission per run inside a project
237
239
  await mlrun.api.utils.auth.verifier.AuthVerifier().query_project_resource_permissions(
238
- mlrun.api.schemas.AuthorizationResourceTypes.run,
240
+ mlrun.common.schemas.AuthorizationResourceTypes.run,
239
241
  project or mlrun.mlconf.default_project,
240
242
  "",
241
- mlrun.api.schemas.AuthorizationAction.delete,
243
+ mlrun.common.schemas.AuthorizationAction.delete,
242
244
  auth_info,
243
245
  )
244
246
  else:
@@ -264,10 +266,10 @@ async def delete_runs(
264
266
  # currently we fail if the user doesn't has permissions to delete runs to one of the projects in the system
265
267
  # TODO Delete only runs from projects that user has permissions to
266
268
  await mlrun.api.utils.auth.verifier.AuthVerifier().query_project_resource_permissions(
267
- mlrun.api.schemas.AuthorizationResourceTypes.run,
269
+ mlrun.common.schemas.AuthorizationResourceTypes.run,
268
270
  run_project,
269
271
  "",
270
- mlrun.api.schemas.AuthorizationAction.delete,
272
+ mlrun.common.schemas.AuthorizationAction.delete,
271
273
  auth_info,
272
274
  )
273
275
 
@@ -281,3 +283,43 @@ async def delete_runs(
281
283
  days_ago,
282
284
  )
283
285
  return {}
286
+
287
+
288
+ @router.put(
289
+ "/projects/{project}/runs/{uid}/notifications",
290
+ status_code=HTTPStatus.OK.value,
291
+ )
292
+ async def set_run_notifications(
293
+ project: str,
294
+ uid: str,
295
+ set_notifications_request: mlrun.common.schemas.SetNotificationRequest = Body(...),
296
+ auth_info: mlrun.common.schemas.AuthInfo = Depends(
297
+ mlrun.api.api.deps.authenticate_request
298
+ ),
299
+ db_session: Session = Depends(mlrun.api.api.deps.get_db_session),
300
+ ):
301
+ await run_in_threadpool(
302
+ mlrun.api.utils.singletons.project_member.get_project_member().ensure_project,
303
+ db_session,
304
+ project,
305
+ auth_info=auth_info,
306
+ )
307
+
308
+ # check permission per object type
309
+ await mlrun.api.utils.auth.verifier.AuthVerifier().query_project_resource_permissions(
310
+ mlrun.common.schemas.AuthorizationResourceTypes.run,
311
+ project,
312
+ resource_name=uid,
313
+ action=mlrun.common.schemas.AuthorizationAction.update,
314
+ auth_info=auth_info,
315
+ )
316
+
317
+ await run_in_threadpool(
318
+ mlrun.api.crud.Notifications().set_object_notifications,
319
+ db_session,
320
+ auth_info,
321
+ project,
322
+ set_notifications_request.notifications,
323
+ mlrun.common.schemas.RunIdentifier(uid=uid),
324
+ )
325
+ return Response(status_code=HTTPStatus.OK.value)
@@ -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.
@@ -23,18 +23,18 @@ from fastapi.concurrency import run_in_threadpool
23
23
  import mlrun
24
24
  import mlrun.api.api.deps
25
25
  import mlrun.api.crud
26
- import mlrun.api.schemas
27
26
  import mlrun.api.utils.auth.verifier
27
+ import mlrun.common.schemas
28
28
 
29
- router = fastapi.APIRouter()
29
+ router = fastapi.APIRouter(prefix="/projects/{project}/runtime-resources")
30
30
 
31
31
 
32
32
  @router.get(
33
- "/projects/{project}/runtime-resources",
33
+ "",
34
34
  response_model=typing.Union[
35
- mlrun.api.schemas.RuntimeResourcesOutput,
36
- mlrun.api.schemas.GroupedByJobRuntimeResourcesOutput,
37
- mlrun.api.schemas.GroupedByProjectRuntimeResourcesOutput,
35
+ mlrun.common.schemas.RuntimeResourcesOutput,
36
+ mlrun.common.schemas.GroupedByJobRuntimeResourcesOutput,
37
+ mlrun.common.schemas.GroupedByProjectRuntimeResourcesOutput,
38
38
  ],
39
39
  )
40
40
  async def list_runtime_resources(
@@ -43,9 +43,9 @@ async def list_runtime_resources(
43
43
  kind: typing.Optional[str] = None,
44
44
  object_id: typing.Optional[str] = fastapi.Query(None, alias="object-id"),
45
45
  group_by: typing.Optional[
46
- mlrun.api.schemas.ListRuntimeResourcesGroupByField
46
+ mlrun.common.schemas.ListRuntimeResourcesGroupByField
47
47
  ] = fastapi.Query(None, alias="group-by"),
48
- auth_info: mlrun.api.schemas.AuthInfo = fastapi.Depends(
48
+ auth_info: mlrun.common.schemas.AuthInfo = fastapi.Depends(
49
49
  mlrun.api.api.deps.authenticate_request
50
50
  ),
51
51
  ):
@@ -55,8 +55,8 @@ async def list_runtime_resources(
55
55
 
56
56
 
57
57
  @router.delete(
58
- "/projects/{project}/runtime-resources",
59
- response_model=mlrun.api.schemas.GroupedByProjectRuntimeResourcesOutput,
58
+ "",
59
+ response_model=mlrun.common.schemas.GroupedByProjectRuntimeResourcesOutput,
60
60
  )
61
61
  async def delete_runtime_resources(
62
62
  project: str,
@@ -67,7 +67,7 @@ async def delete_runtime_resources(
67
67
  grace_period: int = fastapi.Query(
68
68
  mlrun.mlconf.runtime_resources_deletion_grace_period, alias="grace-period"
69
69
  ),
70
- auth_info: mlrun.api.schemas.AuthInfo = fastapi.Depends(
70
+ auth_info: mlrun.common.schemas.AuthInfo = fastapi.Depends(
71
71
  mlrun.api.api.deps.authenticate_request
72
72
  ),
73
73
  db_session: sqlalchemy.orm.Session = fastapi.Depends(
@@ -88,7 +88,7 @@ async def delete_runtime_resources(
88
88
 
89
89
  async def _delete_runtime_resources(
90
90
  db_session: sqlalchemy.orm.Session,
91
- auth_info: mlrun.api.schemas.AuthInfo,
91
+ auth_info: mlrun.common.schemas.AuthInfo,
92
92
  project: str,
93
93
  label_selector: typing.Optional[str] = None,
94
94
  kind: typing.Optional[str] = None,
@@ -97,7 +97,7 @@ async def _delete_runtime_resources(
97
97
  grace_period: int = mlrun.mlconf.runtime_resources_deletion_grace_period,
98
98
  return_body: bool = True,
99
99
  ) -> typing.Union[
100
- mlrun.api.schemas.GroupedByProjectRuntimeResourcesOutput, fastapi.Response
100
+ mlrun.common.schemas.GroupedByProjectRuntimeResourcesOutput, fastapi.Response
101
101
  ]:
102
102
  (
103
103
  allowed_projects,
@@ -110,7 +110,7 @@ async def _delete_runtime_resources(
110
110
  label_selector,
111
111
  kind,
112
112
  object_id,
113
- mlrun.api.schemas.AuthorizationAction.delete,
113
+ mlrun.common.schemas.AuthorizationAction.delete,
114
114
  )
115
115
 
116
116
  # TODO: once we have more granular permissions, we should check if the user is allowed to delete the specific
@@ -162,7 +162,7 @@ async def _delete_runtime_resources(
162
162
  return mlrun.api.crud.RuntimeResources().filter_and_format_grouped_by_project_runtime_resources_output(
163
163
  grouped_by_project_runtime_resources_output,
164
164
  filtered_projects,
165
- mlrun.api.schemas.ListRuntimeResourcesGroupByField.project,
165
+ mlrun.common.schemas.ListRuntimeResourcesGroupByField.project,
166
166
  )
167
167
  else:
168
168
  return fastapi.Response(status_code=http.HTTPStatus.NO_CONTENT.value)
@@ -170,17 +170,17 @@ async def _delete_runtime_resources(
170
170
 
171
171
  async def _list_runtime_resources(
172
172
  project: str,
173
- auth_info: mlrun.api.schemas.AuthInfo,
173
+ auth_info: mlrun.common.schemas.AuthInfo,
174
174
  label_selector: typing.Optional[str] = None,
175
175
  group_by: typing.Optional[
176
- mlrun.api.schemas.ListRuntimeResourcesGroupByField
176
+ mlrun.common.schemas.ListRuntimeResourcesGroupByField
177
177
  ] = None,
178
178
  kind_filter: typing.Optional[str] = None,
179
179
  object_id: typing.Optional[str] = None,
180
180
  ) -> typing.Union[
181
- mlrun.api.schemas.RuntimeResourcesOutput,
182
- mlrun.api.schemas.GroupedByJobRuntimeResourcesOutput,
183
- mlrun.api.schemas.GroupedByProjectRuntimeResourcesOutput,
181
+ mlrun.common.schemas.RuntimeResourcesOutput,
182
+ mlrun.common.schemas.GroupedByJobRuntimeResourcesOutput,
183
+ mlrun.common.schemas.GroupedByProjectRuntimeResourcesOutput,
184
184
  ]:
185
185
  (
186
186
  allowed_projects,
@@ -199,31 +199,31 @@ async def _list_runtime_resources(
199
199
 
200
200
  async def _get_runtime_resources_allowed_projects(
201
201
  project: str,
202
- auth_info: mlrun.api.schemas.AuthInfo,
202
+ auth_info: mlrun.common.schemas.AuthInfo,
203
203
  label_selector: typing.Optional[str] = None,
204
204
  kind: typing.Optional[str] = None,
205
205
  object_id: typing.Optional[str] = None,
206
- action: mlrun.api.schemas.AuthorizationAction = mlrun.api.schemas.AuthorizationAction.read,
206
+ action: mlrun.common.schemas.AuthorizationAction = mlrun.common.schemas.AuthorizationAction.read,
207
207
  ) -> typing.Tuple[
208
208
  typing.List[str],
209
- mlrun.api.schemas.GroupedByProjectRuntimeResourcesOutput,
209
+ mlrun.common.schemas.GroupedByProjectRuntimeResourcesOutput,
210
210
  bool,
211
211
  bool,
212
212
  ]:
213
213
  if project != "*":
214
214
  await mlrun.api.utils.auth.verifier.AuthVerifier().query_project_permissions(
215
215
  project,
216
- mlrun.api.schemas.AuthorizationAction.read,
216
+ mlrun.common.schemas.AuthorizationAction.read,
217
217
  auth_info,
218
218
  )
219
- grouped_by_project_runtime_resources_output: mlrun.api.schemas.GroupedByProjectRuntimeResourcesOutput
219
+ grouped_by_project_runtime_resources_output: mlrun.common.schemas.GroupedByProjectRuntimeResourcesOutput
220
220
  grouped_by_project_runtime_resources_output = await run_in_threadpool(
221
221
  mlrun.api.crud.RuntimeResources().list_runtime_resources,
222
222
  project,
223
223
  kind,
224
224
  object_id,
225
225
  label_selector,
226
- mlrun.api.schemas.ListRuntimeResourcesGroupByField.project,
226
+ mlrun.common.schemas.ListRuntimeResourcesGroupByField.project,
227
227
  )
228
228
 
229
229
  projects = []
@@ -237,7 +237,7 @@ async def _get_runtime_resources_allowed_projects(
237
237
  continue
238
238
  projects.append(project)
239
239
  allowed_projects = await mlrun.api.utils.auth.verifier.AuthVerifier().filter_project_resources_by_permissions(
240
- mlrun.api.schemas.AuthorizationResourceTypes.runtime_resource,
240
+ mlrun.common.schemas.AuthorizationResourceTypes.runtime_resource,
241
241
  projects,
242
242
  lambda project: (
243
243
  project,