mlrun 1.3.3__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.3.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.3.dist-info/RECORD +0 -381
  441. {mlrun-1.3.3.dist-info → mlrun-1.4.0.dist-info}/LICENSE +0 -0
  442. {mlrun-1.3.3.dist-info → mlrun-1.4.0.dist-info}/WHEEL +0 -0
  443. {mlrun-1.3.3.dist-info → mlrun-1.4.0.dist-info}/entry_points.txt +0 -0
  444. {mlrun-1.3.3.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.
@@ -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.
@@ -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.
@@ -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.
@@ -15,7 +15,7 @@
15
15
  import abc
16
16
  import typing
17
17
 
18
- import mlrun.api.schemas
18
+ import mlrun.common.schemas
19
19
 
20
20
 
21
21
  class Provider(abc.ABC):
@@ -23,8 +23,8 @@ class Provider(abc.ABC):
23
23
  async def query_permissions(
24
24
  self,
25
25
  resource: str,
26
- action: mlrun.api.schemas.AuthorizationAction,
27
- auth_info: mlrun.api.schemas.AuthInfo,
26
+ action: mlrun.common.schemas.AuthorizationAction,
27
+ auth_info: mlrun.common.schemas.AuthInfo,
28
28
  raise_on_forbidden: bool = True,
29
29
  ) -> bool:
30
30
  pass
@@ -34,13 +34,13 @@ class Provider(abc.ABC):
34
34
  self,
35
35
  resources: typing.List,
36
36
  opa_resource_extractor: typing.Callable,
37
- action: mlrun.api.schemas.AuthorizationAction,
38
- auth_info: mlrun.api.schemas.AuthInfo,
37
+ action: mlrun.common.schemas.AuthorizationAction,
38
+ auth_info: mlrun.common.schemas.AuthInfo,
39
39
  ) -> typing.List:
40
40
  pass
41
41
 
42
42
  @abc.abstractmethod
43
43
  def add_allowed_project_for_owner(
44
- self, project_name: str, auth_info: mlrun.api.schemas.AuthInfo
44
+ self, project_name: str, auth_info: mlrun.common.schemas.AuthInfo
45
45
  ):
46
46
  pass
@@ -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.
@@ -14,7 +14,6 @@
14
14
  #
15
15
  import typing
16
16
 
17
- import mlrun.api.schemas
18
17
  import mlrun.api.utils.auth.providers.base
19
18
  import mlrun.utils.singleton
20
19
 
@@ -26,8 +25,8 @@ class Provider(
26
25
  async def query_permissions(
27
26
  self,
28
27
  resource: str,
29
- action: mlrun.api.schemas.AuthorizationAction,
30
- auth_info: mlrun.api.schemas.AuthInfo,
28
+ action: mlrun.common.schemas.AuthorizationAction,
29
+ auth_info: mlrun.common.schemas.AuthInfo,
31
30
  raise_on_forbidden: bool = True,
32
31
  ) -> bool:
33
32
  return True
@@ -36,12 +35,12 @@ class Provider(
36
35
  self,
37
36
  resources: typing.List,
38
37
  opa_resource_extractor: typing.Callable,
39
- action: mlrun.api.schemas.AuthorizationAction,
40
- auth_info: mlrun.api.schemas.AuthInfo,
38
+ action: mlrun.common.schemas.AuthorizationAction,
39
+ auth_info: mlrun.common.schemas.AuthInfo,
41
40
  ) -> typing.List:
42
41
  return resources
43
42
 
44
43
  def add_allowed_project_for_owner(
45
- self, project_name: str, auth_info: mlrun.api.schemas.AuthInfo
44
+ self, project_name: str, auth_info: mlrun.common.schemas.AuthInfo
46
45
  ):
47
46
  pass
@@ -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.
@@ -21,9 +21,9 @@ import typing
21
21
 
22
22
  import humanfriendly
23
23
 
24
- import mlrun.api.schemas
25
24
  import mlrun.api.utils.auth.providers.base
26
25
  import mlrun.api.utils.projects.remotes.leader
26
+ import mlrun.common.schemas
27
27
  import mlrun.errors
28
28
  import mlrun.utils.helpers
29
29
  import mlrun.utils.singleton
@@ -66,23 +66,23 @@ class Provider(
66
66
  async def query_permissions(
67
67
  self,
68
68
  resource: str,
69
- action: mlrun.api.schemas.AuthorizationAction,
70
- auth_info: mlrun.api.schemas.AuthInfo,
69
+ action: mlrun.common.schemas.AuthorizationAction,
70
+ auth_info: mlrun.common.schemas.AuthInfo,
71
71
  raise_on_forbidden: bool = True,
72
72
  ) -> bool:
73
73
 
74
74
  # store is not really a verb in our OPA manifest, we map it to 2 query permissions requests (create & update)
75
- if action == mlrun.api.schemas.AuthorizationAction.store:
75
+ if action == mlrun.common.schemas.AuthorizationAction.store:
76
76
  results = await asyncio.gather(
77
77
  self.query_permissions(
78
78
  resource,
79
- mlrun.api.schemas.AuthorizationAction.create,
79
+ mlrun.common.schemas.AuthorizationAction.create,
80
80
  auth_info,
81
81
  raise_on_forbidden,
82
82
  ),
83
83
  self.query_permissions(
84
84
  resource,
85
- mlrun.api.schemas.AuthorizationAction.update,
85
+ mlrun.common.schemas.AuthorizationAction.update,
86
86
  auth_info,
87
87
  raise_on_forbidden,
88
88
  ),
@@ -113,11 +113,11 @@ class Provider(
113
113
  self,
114
114
  resources: typing.List,
115
115
  opa_resource_extractor: typing.Callable,
116
- action: mlrun.api.schemas.AuthorizationAction,
117
- auth_info: mlrun.api.schemas.AuthInfo,
116
+ action: mlrun.common.schemas.AuthorizationAction,
117
+ auth_info: mlrun.common.schemas.AuthInfo,
118
118
  ) -> typing.List:
119
119
  # store is not really a verb in our OPA manifest, we map it to 2 query permissions requests (create & update)
120
- if action == mlrun.api.schemas.AuthorizationAction.store:
120
+ if action == mlrun.common.schemas.AuthorizationAction.store:
121
121
  raise NotImplementedError("Store action is not supported in filtering")
122
122
  if self._is_request_from_leader(auth_info.projects_role):
123
123
  return resources
@@ -149,7 +149,7 @@ class Provider(
149
149
  return allowed_resources
150
150
 
151
151
  def add_allowed_project_for_owner(
152
- self, project_name: str, auth_info: mlrun.api.schemas.AuthInfo
152
+ self, project_name: str, auth_info: mlrun.common.schemas.AuthInfo
153
153
  ):
154
154
  if (
155
155
  not auth_info.user_id
@@ -168,7 +168,7 @@ class Provider(
168
168
  self._allowed_project_owners_cache[auth_info.user_id] = allowed_projects
169
169
 
170
170
  def _check_allowed_project_owners_cache(
171
- self, resource: str, auth_info: mlrun.api.schemas.AuthInfo
171
+ self, resource: str, auth_info: mlrun.common.schemas.AuthInfo
172
172
  ):
173
173
  # Cache shouldn't be big, simply clean it on get instead of scheduling it
174
174
  self._clean_expired_records_from_cache()
@@ -199,7 +199,7 @@ class Provider(
199
199
  del self._allowed_project_owners_cache[user_id]
200
200
 
201
201
  def _is_request_from_leader(
202
- self, projects_role: typing.Optional[mlrun.api.schemas.ProjectsRole]
202
+ self, projects_role: typing.Optional[mlrun.common.schemas.ProjectsRole]
203
203
  ):
204
204
  if projects_role and projects_role.value == self._leader_name:
205
205
  return True
@@ -241,8 +241,8 @@ class Provider(
241
241
  @staticmethod
242
242
  def _generate_permission_request_body(
243
243
  resource: str,
244
- action: mlrun.api.schemas.AuthorizationAction,
245
- auth_info: mlrun.api.schemas.AuthInfo,
244
+ action: mlrun.common.schemas.AuthorizationAction,
245
+ auth_info: mlrun.common.schemas.AuthInfo,
246
246
  ) -> dict:
247
247
  body = {
248
248
  "input": {
@@ -256,8 +256,8 @@ class Provider(
256
256
  @staticmethod
257
257
  def _generate_filter_request_body(
258
258
  resources: typing.List[str],
259
- action: mlrun.api.schemas.AuthorizationAction,
260
- auth_info: mlrun.api.schemas.AuthInfo,
259
+ action: mlrun.common.schemas.AuthorizationAction,
260
+ auth_info: mlrun.common.schemas.AuthInfo,
261
261
  ) -> dict:
262
262
  body = {
263
263
  "input": {
@@ -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.
@@ -19,10 +19,10 @@ import typing
19
19
  import fastapi
20
20
 
21
21
  import mlrun
22
- import mlrun.api.schemas
23
22
  import mlrun.api.utils.auth.providers.nop
24
23
  import mlrun.api.utils.auth.providers.opa
25
24
  import mlrun.api.utils.clients.iguazio
25
+ import mlrun.common.schemas
26
26
  import mlrun.utils.singleton
27
27
 
28
28
 
@@ -41,11 +41,11 @@ class AuthVerifier(metaclass=mlrun.utils.singleton.Singleton):
41
41
 
42
42
  async def filter_project_resources_by_permissions(
43
43
  self,
44
- resource_type: mlrun.api.schemas.AuthorizationResourceTypes,
44
+ resource_type: mlrun.common.schemas.AuthorizationResourceTypes,
45
45
  resources: typing.List,
46
46
  project_and_resource_name_extractor: typing.Callable,
47
- auth_info: mlrun.api.schemas.AuthInfo,
48
- action: mlrun.api.schemas.AuthorizationAction = mlrun.api.schemas.AuthorizationAction.read,
47
+ auth_info: mlrun.common.schemas.AuthInfo,
48
+ action: mlrun.common.schemas.AuthorizationAction = mlrun.common.schemas.AuthorizationAction.read,
49
49
  ) -> typing.List:
50
50
  def _generate_opa_resource(resource):
51
51
  project_name, resource_name = project_and_resource_name_extractor(resource)
@@ -60,8 +60,8 @@ class AuthVerifier(metaclass=mlrun.utils.singleton.Singleton):
60
60
  async def filter_projects_by_permissions(
61
61
  self,
62
62
  project_names: typing.List[str],
63
- auth_info: mlrun.api.schemas.AuthInfo,
64
- action: mlrun.api.schemas.AuthorizationAction = mlrun.api.schemas.AuthorizationAction.read,
63
+ auth_info: mlrun.common.schemas.AuthInfo,
64
+ action: mlrun.common.schemas.AuthorizationAction = mlrun.common.schemas.AuthorizationAction.read,
65
65
  ) -> typing.List:
66
66
  return await self.filter_by_permissions(
67
67
  project_names,
@@ -72,11 +72,11 @@ class AuthVerifier(metaclass=mlrun.utils.singleton.Singleton):
72
72
 
73
73
  async def query_project_resources_permissions(
74
74
  self,
75
- resource_type: mlrun.api.schemas.AuthorizationResourceTypes,
75
+ resource_type: mlrun.common.schemas.AuthorizationResourceTypes,
76
76
  resources: typing.List,
77
77
  project_and_resource_name_extractor: typing.Callable,
78
- action: mlrun.api.schemas.AuthorizationAction,
79
- auth_info: mlrun.api.schemas.AuthInfo,
78
+ action: mlrun.common.schemas.AuthorizationAction,
79
+ auth_info: mlrun.common.schemas.AuthInfo,
80
80
  raise_on_forbidden: bool = True,
81
81
  ) -> bool:
82
82
  project_resources = [
@@ -102,11 +102,11 @@ class AuthVerifier(metaclass=mlrun.utils.singleton.Singleton):
102
102
 
103
103
  async def query_project_resource_permissions(
104
104
  self,
105
- resource_type: mlrun.api.schemas.AuthorizationResourceTypes,
105
+ resource_type: mlrun.common.schemas.AuthorizationResourceTypes,
106
106
  project_name: str,
107
107
  resource_name: str,
108
- action: mlrun.api.schemas.AuthorizationAction,
109
- auth_info: mlrun.api.schemas.AuthInfo,
108
+ action: mlrun.common.schemas.AuthorizationAction,
109
+ auth_info: mlrun.common.schemas.AuthInfo,
110
110
  raise_on_forbidden: bool = True,
111
111
  ) -> bool:
112
112
  return await self.query_permissions(
@@ -121,8 +121,8 @@ class AuthVerifier(metaclass=mlrun.utils.singleton.Singleton):
121
121
  async def query_project_permissions(
122
122
  self,
123
123
  project_name: str,
124
- action: mlrun.api.schemas.AuthorizationAction,
125
- auth_info: mlrun.api.schemas.AuthInfo,
124
+ action: mlrun.common.schemas.AuthorizationAction,
125
+ auth_info: mlrun.common.schemas.AuthInfo,
126
126
  raise_on_forbidden: bool = True,
127
127
  ) -> bool:
128
128
  return await self.query_permissions(
@@ -134,9 +134,9 @@ class AuthVerifier(metaclass=mlrun.utils.singleton.Singleton):
134
134
 
135
135
  async def query_global_resource_permissions(
136
136
  self,
137
- resource_type: mlrun.api.schemas.AuthorizationResourceTypes,
138
- action: mlrun.api.schemas.AuthorizationAction,
139
- auth_info: mlrun.api.schemas.AuthInfo,
137
+ resource_type: mlrun.common.schemas.AuthorizationResourceTypes,
138
+ action: mlrun.common.schemas.AuthorizationAction,
139
+ auth_info: mlrun.common.schemas.AuthInfo,
140
140
  raise_on_forbidden: bool = True,
141
141
  ) -> bool:
142
142
  return await self.query_resource_permissions(
@@ -149,10 +149,10 @@ class AuthVerifier(metaclass=mlrun.utils.singleton.Singleton):
149
149
 
150
150
  async def query_resource_permissions(
151
151
  self,
152
- resource_type: mlrun.api.schemas.AuthorizationResourceTypes,
152
+ resource_type: mlrun.common.schemas.AuthorizationResourceTypes,
153
153
  resource_name: str,
154
- action: mlrun.api.schemas.AuthorizationAction,
155
- auth_info: mlrun.api.schemas.AuthInfo,
154
+ action: mlrun.common.schemas.AuthorizationAction,
155
+ auth_info: mlrun.common.schemas.AuthInfo,
156
156
  raise_on_forbidden: bool = True,
157
157
  ) -> bool:
158
158
  return await self.query_permissions(
@@ -165,8 +165,8 @@ class AuthVerifier(metaclass=mlrun.utils.singleton.Singleton):
165
165
  async def query_permissions(
166
166
  self,
167
167
  resource: str,
168
- action: mlrun.api.schemas.AuthorizationAction,
169
- auth_info: mlrun.api.schemas.AuthInfo,
168
+ action: mlrun.common.schemas.AuthorizationAction,
169
+ auth_info: mlrun.common.schemas.AuthInfo,
170
170
  raise_on_forbidden: bool = True,
171
171
  ) -> bool:
172
172
  return await self._auth_provider.query_permissions(
@@ -177,8 +177,8 @@ class AuthVerifier(metaclass=mlrun.utils.singleton.Singleton):
177
177
  self,
178
178
  resources: typing.List,
179
179
  opa_resource_extractor: typing.Callable,
180
- action: mlrun.api.schemas.AuthorizationAction,
181
- auth_info: mlrun.api.schemas.AuthInfo,
180
+ action: mlrun.common.schemas.AuthorizationAction,
181
+ auth_info: mlrun.common.schemas.AuthInfo,
182
182
  ) -> typing.List:
183
183
  return await self._auth_provider.filter_by_permissions(
184
184
  resources,
@@ -188,14 +188,14 @@ class AuthVerifier(metaclass=mlrun.utils.singleton.Singleton):
188
188
  )
189
189
 
190
190
  def add_allowed_project_for_owner(
191
- self, project_name: str, auth_info: mlrun.api.schemas.AuthInfo
191
+ self, project_name: str, auth_info: mlrun.common.schemas.AuthInfo
192
192
  ):
193
193
  self._auth_provider.add_allowed_project_for_owner(project_name, auth_info)
194
194
 
195
195
  async def authenticate_request(
196
196
  self, request: fastapi.Request
197
- ) -> mlrun.api.schemas.AuthInfo:
198
- auth_info = mlrun.api.schemas.AuthInfo()
197
+ ) -> mlrun.common.schemas.AuthInfo:
198
+ auth_info = mlrun.common.schemas.AuthInfo()
199
199
  header = request.headers.get("Authorization", "")
200
200
  if self._basic_auth_configured():
201
201
  if not header.startswith(self._basic_prefix):
@@ -228,10 +228,10 @@ class AuthVerifier(metaclass=mlrun.utils.singleton.Singleton):
228
228
  auth_info.username = request.headers["x-remote-user"]
229
229
 
230
230
  projects_role_header = request.headers.get(
231
- mlrun.api.schemas.HeaderNames.projects_role
231
+ mlrun.common.schemas.HeaderNames.projects_role
232
232
  )
233
233
  auth_info.projects_role = (
234
- mlrun.api.schemas.ProjectsRole(projects_role_header)
234
+ mlrun.common.schemas.ProjectsRole(projects_role_header)
235
235
  if projects_role_header
236
236
  else None
237
237
  )
@@ -248,7 +248,7 @@ class AuthVerifier(metaclass=mlrun.utils.singleton.Singleton):
248
248
 
249
249
  async def generate_auth_info_from_session(
250
250
  self, session: str
251
- ) -> mlrun.api.schemas.AuthInfo:
251
+ ) -> mlrun.common.schemas.AuthInfo:
252
252
  if not self._iguazio_auth_configured():
253
253
  raise NotImplementedError(
254
254
  "Session is currently supported only for iguazio authentication mode"
@@ -273,13 +273,15 @@ class AuthVerifier(metaclass=mlrun.utils.singleton.Singleton):
273
273
 
274
274
  @staticmethod
275
275
  def _generate_resource_string_from_project_name(project_name: str):
276
- return mlrun.api.schemas.AuthorizationResourceTypes.project.to_resource_string(
277
- project_name, ""
276
+ return (
277
+ mlrun.common.schemas.AuthorizationResourceTypes.project.to_resource_string(
278
+ project_name, ""
279
+ )
278
280
  )
279
281
 
280
282
  @staticmethod
281
283
  def _generate_resource_string_from_project_resource(
282
- resource_type: mlrun.api.schemas.AuthorizationResourceTypes,
284
+ resource_type: mlrun.common.schemas.AuthorizationResourceTypes,
283
285
  project_name: str,
284
286
  resource_name: str,
285
287
  ):
@@ -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.
@@ -22,10 +22,10 @@ import fastapi
22
22
  import fastapi.concurrency
23
23
  import sqlalchemy.orm
24
24
 
25
- import mlrun.api.schemas
26
25
  import mlrun.api.utils.helpers
27
26
  import mlrun.api.utils.singletons.db
28
27
  import mlrun.api.utils.singletons.project_member
28
+ import mlrun.common.schemas
29
29
  import mlrun.errors
30
30
  import mlrun.utils.singleton
31
31
  from mlrun.utils import logger
@@ -41,13 +41,13 @@ class ProjectBackgroundTasksHandler(metaclass=mlrun.utils.singleton.Singleton):
41
41
  timeout: int = None, # in seconds
42
42
  *args,
43
43
  **kwargs,
44
- ) -> mlrun.api.schemas.BackgroundTask:
44
+ ) -> mlrun.common.schemas.BackgroundTask:
45
45
  name = str(uuid.uuid4())
46
46
  mlrun.api.utils.singletons.db.get_db().store_background_task(
47
47
  db_session,
48
48
  name,
49
49
  project,
50
- mlrun.api.schemas.BackgroundTaskState.running,
50
+ mlrun.common.schemas.BackgroundTaskState.running,
51
51
  timeout,
52
52
  )
53
53
  background_tasks.add_task(
@@ -66,7 +66,7 @@ class ProjectBackgroundTasksHandler(metaclass=mlrun.utils.singleton.Singleton):
66
66
  db_session: sqlalchemy.orm.Session,
67
67
  name: str,
68
68
  project: str,
69
- ) -> mlrun.api.schemas.BackgroundTask:
69
+ ) -> mlrun.common.schemas.BackgroundTask:
70
70
  return mlrun.api.utils.singletons.db.get_db().get_background_task(
71
71
  db_session, name, project
72
72
  )
@@ -93,21 +93,21 @@ class ProjectBackgroundTasksHandler(metaclass=mlrun.utils.singleton.Singleton):
93
93
  db_session,
94
94
  name,
95
95
  project=project,
96
- state=mlrun.api.schemas.BackgroundTaskState.failed,
96
+ state=mlrun.common.schemas.BackgroundTaskState.failed,
97
97
  )
98
98
  else:
99
99
  mlrun.api.utils.singletons.db.get_db().store_background_task(
100
100
  db_session,
101
101
  name,
102
102
  project=project,
103
- state=mlrun.api.schemas.BackgroundTaskState.succeeded,
103
+ state=mlrun.common.schemas.BackgroundTaskState.succeeded,
104
104
  )
105
105
 
106
106
 
107
107
  class InternalBackgroundTasksHandler(metaclass=mlrun.utils.singleton.Singleton):
108
108
  def __init__(self):
109
109
  self._internal_background_tasks: typing.Dict[
110
- str, mlrun.api.schemas.BackgroundTask
110
+ str, mlrun.common.schemas.BackgroundTask
111
111
  ] = {}
112
112
 
113
113
  @mlrun.api.utils.helpers.ensure_running_on_chief
@@ -117,7 +117,7 @@ class InternalBackgroundTasksHandler(metaclass=mlrun.utils.singleton.Singleton):
117
117
  function,
118
118
  *args,
119
119
  **kwargs,
120
- ) -> mlrun.api.schemas.BackgroundTask:
120
+ ) -> mlrun.common.schemas.BackgroundTask:
121
121
  name = str(uuid.uuid4())
122
122
  # sanity
123
123
  if name in self._internal_background_tasks:
@@ -138,7 +138,7 @@ class InternalBackgroundTasksHandler(metaclass=mlrun.utils.singleton.Singleton):
138
138
  def get_background_task(
139
139
  self,
140
140
  name: str,
141
- ) -> mlrun.api.schemas.BackgroundTask:
141
+ ) -> mlrun.common.schemas.BackgroundTask:
142
142
  """
143
143
  :return: returns the background task object and bool whether exists
144
144
  """
@@ -160,17 +160,17 @@ class InternalBackgroundTasksHandler(metaclass=mlrun.utils.singleton.Singleton):
160
160
  f"Failed during background task execution: {function.__name__}, exc: {traceback.format_exc()}"
161
161
  )
162
162
  self._update_background_task(
163
- name, mlrun.api.schemas.BackgroundTaskState.failed
163
+ name, mlrun.common.schemas.BackgroundTaskState.failed
164
164
  )
165
165
  else:
166
166
  self._update_background_task(
167
- name, mlrun.api.schemas.BackgroundTaskState.succeeded
167
+ name, mlrun.common.schemas.BackgroundTaskState.succeeded
168
168
  )
169
169
 
170
170
  def _update_background_task(
171
171
  self,
172
172
  name: str,
173
- state: mlrun.api.schemas.BackgroundTaskState,
173
+ state: mlrun.common.schemas.BackgroundTaskState,
174
174
  ):
175
175
  background_task = self._internal_background_tasks[name]
176
176
  background_task.status.state = state
@@ -183,31 +183,31 @@ class InternalBackgroundTasksHandler(metaclass=mlrun.utils.singleton.Singleton):
183
183
  # in order to keep things simple we don't persist the internal background tasks to the DB
184
184
  # If for some reason get is called and the background task doesn't exist, it means that probably we got
185
185
  # restarted, therefore we want to return a failed background task so the client will retry (if needed)
186
- return mlrun.api.schemas.BackgroundTask(
187
- metadata=mlrun.api.schemas.BackgroundTaskMetadata(
186
+ return mlrun.common.schemas.BackgroundTask(
187
+ metadata=mlrun.common.schemas.BackgroundTaskMetadata(
188
188
  name=name, project=project
189
189
  ),
190
- spec=mlrun.api.schemas.BackgroundTaskSpec(),
191
- status=mlrun.api.schemas.BackgroundTaskStatus(
192
- state=mlrun.api.schemas.BackgroundTaskState.failed
190
+ spec=mlrun.common.schemas.BackgroundTaskSpec(),
191
+ status=mlrun.common.schemas.BackgroundTaskStatus(
192
+ state=mlrun.common.schemas.BackgroundTaskState.failed
193
193
  ),
194
194
  )
195
195
 
196
196
  @staticmethod
197
197
  def _generate_background_task(
198
198
  name: str, project: typing.Optional[str] = None
199
- ) -> mlrun.api.schemas.BackgroundTask:
199
+ ) -> mlrun.common.schemas.BackgroundTask:
200
200
  now = datetime.datetime.utcnow()
201
- metadata = mlrun.api.schemas.BackgroundTaskMetadata(
201
+ metadata = mlrun.common.schemas.BackgroundTaskMetadata(
202
202
  name=name,
203
203
  project=project,
204
204
  created=now,
205
205
  updated=now,
206
206
  )
207
- spec = mlrun.api.schemas.BackgroundTaskSpec()
208
- status = mlrun.api.schemas.BackgroundTaskStatus(
209
- state=mlrun.api.schemas.BackgroundTaskState.running
207
+ spec = mlrun.common.schemas.BackgroundTaskSpec()
208
+ status = mlrun.common.schemas.BackgroundTaskStatus(
209
+ state=mlrun.common.schemas.BackgroundTaskState.running
210
210
  )
211
- return mlrun.api.schemas.BackgroundTask(
211
+ return mlrun.common.schemas.BackgroundTask(
212
212
  metadata=metadata, spec=spec, status=status
213
213
  )