mlrun 1.8.0rc4__py3-none-any.whl → 1.8.0rc6__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 (69) hide show
  1. mlrun/__init__.py +4 -3
  2. mlrun/alerts/alert.py +129 -2
  3. mlrun/artifacts/__init__.py +1 -1
  4. mlrun/artifacts/base.py +12 -1
  5. mlrun/artifacts/document.py +59 -38
  6. mlrun/common/model_monitoring/__init__.py +0 -2
  7. mlrun/common/model_monitoring/helpers.py +0 -28
  8. mlrun/common/schemas/__init__.py +1 -4
  9. mlrun/common/schemas/alert.py +3 -0
  10. mlrun/common/schemas/artifact.py +4 -0
  11. mlrun/common/schemas/client_spec.py +0 -1
  12. mlrun/common/schemas/model_monitoring/__init__.py +0 -6
  13. mlrun/common/schemas/model_monitoring/constants.py +11 -9
  14. mlrun/common/schemas/model_monitoring/model_endpoints.py +77 -149
  15. mlrun/common/schemas/notification.py +6 -0
  16. mlrun/config.py +0 -2
  17. mlrun/datastore/datastore_profile.py +57 -17
  18. mlrun/datastore/vectorstore.py +67 -59
  19. mlrun/db/base.py +22 -18
  20. mlrun/db/factory.py +0 -3
  21. mlrun/db/httpdb.py +122 -150
  22. mlrun/db/nopdb.py +33 -17
  23. mlrun/execution.py +43 -29
  24. mlrun/model.py +7 -0
  25. mlrun/model_monitoring/__init__.py +3 -2
  26. mlrun/model_monitoring/api.py +40 -43
  27. mlrun/model_monitoring/applications/_application_steps.py +4 -2
  28. mlrun/model_monitoring/applications/base.py +65 -6
  29. mlrun/model_monitoring/applications/context.py +64 -33
  30. mlrun/model_monitoring/applications/evidently_base.py +0 -1
  31. mlrun/model_monitoring/applications/histogram_data_drift.py +2 -6
  32. mlrun/model_monitoring/controller.py +43 -37
  33. mlrun/model_monitoring/db/__init__.py +0 -2
  34. mlrun/model_monitoring/db/tsdb/base.py +2 -1
  35. mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connector.py +2 -1
  36. mlrun/model_monitoring/db/tsdb/v3io/v3io_connector.py +43 -0
  37. mlrun/model_monitoring/helpers.py +12 -66
  38. mlrun/model_monitoring/stream_processing.py +83 -270
  39. mlrun/model_monitoring/writer.py +1 -10
  40. mlrun/projects/project.py +87 -74
  41. mlrun/runtimes/nuclio/function.py +7 -6
  42. mlrun/runtimes/nuclio/serving.py +7 -1
  43. mlrun/serving/routers.py +158 -145
  44. mlrun/serving/server.py +6 -0
  45. mlrun/serving/states.py +2 -0
  46. mlrun/serving/v2_serving.py +69 -60
  47. mlrun/utils/helpers.py +14 -30
  48. mlrun/utils/notifications/notification/mail.py +36 -9
  49. mlrun/utils/notifications/notification_pusher.py +34 -13
  50. mlrun/utils/version/version.json +2 -2
  51. {mlrun-1.8.0rc4.dist-info → mlrun-1.8.0rc6.dist-info}/METADATA +5 -4
  52. {mlrun-1.8.0rc4.dist-info → mlrun-1.8.0rc6.dist-info}/RECORD +56 -69
  53. mlrun/common/schemas/model_monitoring/model_endpoint_v2.py +0 -149
  54. mlrun/model_monitoring/db/stores/__init__.py +0 -136
  55. mlrun/model_monitoring/db/stores/base/__init__.py +0 -15
  56. mlrun/model_monitoring/db/stores/base/store.py +0 -154
  57. mlrun/model_monitoring/db/stores/sqldb/__init__.py +0 -13
  58. mlrun/model_monitoring/db/stores/sqldb/models/__init__.py +0 -46
  59. mlrun/model_monitoring/db/stores/sqldb/models/base.py +0 -93
  60. mlrun/model_monitoring/db/stores/sqldb/models/mysql.py +0 -47
  61. mlrun/model_monitoring/db/stores/sqldb/models/sqlite.py +0 -25
  62. mlrun/model_monitoring/db/stores/sqldb/sql_store.py +0 -408
  63. mlrun/model_monitoring/db/stores/v3io_kv/__init__.py +0 -13
  64. mlrun/model_monitoring/db/stores/v3io_kv/kv_store.py +0 -464
  65. mlrun/model_monitoring/model_endpoint.py +0 -120
  66. {mlrun-1.8.0rc4.dist-info → mlrun-1.8.0rc6.dist-info}/LICENSE +0 -0
  67. {mlrun-1.8.0rc4.dist-info → mlrun-1.8.0rc6.dist-info}/WHEEL +0 -0
  68. {mlrun-1.8.0rc4.dist-info → mlrun-1.8.0rc6.dist-info}/entry_points.txt +0 -0
  69. {mlrun-1.8.0rc4.dist-info → mlrun-1.8.0rc6.dist-info}/top_level.txt +0 -0
@@ -1,22 +1,22 @@
1
- mlrun/__init__.py,sha256=i1EKIDWQeslSAllPnmlZXKSNB3eDJBP2D4hqbPFtq2g,7381
1
+ mlrun/__init__.py,sha256=V11600nBHBHT84iZAFzZ7p1kbhEWaX99wzBIivl4ozo,7453
2
2
  mlrun/__main__.py,sha256=o65gXHhmFA9GV_n2mqmAO80nW3MAwo_s7j80IKgCzRE,45949
3
- mlrun/config.py,sha256=ejQ-goHH1vBiLqZ6WxV9191Wsw8k5NEBHzyRNvOfjzg,71029
3
+ mlrun/config.py,sha256=DSbhMEVV9QrTqlzedYg6YqvRahBq_VF1YNPALTJKuK8,70900
4
4
  mlrun/errors.py,sha256=5raKb1PXQpTcIvWQ4sr1qn2IS7P_GT_FydBJ0dXkVuc,8097
5
- mlrun/execution.py,sha256=0WJbnyA6eExgH84EkW5JJpLDo0R7uXBETlpDjThkUyw,46616
5
+ mlrun/execution.py,sha256=69SG3KUJbDixvVevFRWdcko7NpHT1__bSAaL9nJx9cI,47366
6
6
  mlrun/features.py,sha256=ReBaNGsBYXqcbgI012n-SO_j6oHIbk_Vpv0CGPXbUmo,15842
7
7
  mlrun/k8s_utils.py,sha256=mRQMs6NzPq36vx1n5_2BfFapXysc8wv3NcrZ77_2ANA,8949
8
8
  mlrun/lists.py,sha256=1hFv3Iyu5DVX1kdBGJmwUoY0CqrzauhKdSq9g3piHb4,8442
9
- mlrun/model.py,sha256=sqJOl4fm-BE0Ia68ql-_pvjoNaTNKdzWHPdw5FVmzb8,85000
9
+ mlrun/model.py,sha256=Qmj0UH5H0GKd6ZwxugxCvoqSP3O5q0LV0wSlHIzkyIM,85312
10
10
  mlrun/render.py,sha256=940H9fBBFeghH4dlifbURvtjlvw4GlWdAXezN6ky4rI,13275
11
11
  mlrun/run.py,sha256=OJRX96ijJL8DYRLgOAtcx1ZNlTIpgXXImKmbsHoFuBU,43743
12
12
  mlrun/secrets.py,sha256=ibtCK79u7JVBZF6F0SP1-xXXF5MyrLEUs_TCWiJAnlc,7798
13
13
  mlrun/alerts/__init__.py,sha256=0gtG1BG0DXxFrXegIkjbM1XEN4sP9ODo0ucXrNld1hU,601
14
- mlrun/alerts/alert.py,sha256=z76Eg_yk0NHfSVA0gqqkAktHqB9w9j2bSGt4a1eY660,10627
14
+ mlrun/alerts/alert.py,sha256=mTROlDXzQw5gyWBFaUnykai3wpvjmgRmo28p0ytbzIU,15930
15
15
  mlrun/api/schemas/__init__.py,sha256=fEWH4I8hr5AdRJ7yoW44RlFB6NHkYDxyomP5J6ct1z4,14248
16
- mlrun/artifacts/__init__.py,sha256=_-yRrD27eVA5iuU28UmDZfdkhwadzQy_Q03kAuueSHg,1141
17
- mlrun/artifacts/base.py,sha256=W2iG9HOG3U0hTrJyI_zEm0rthgopzXTRu1oMsKruzQg,29694
16
+ mlrun/artifacts/__init__.py,sha256=5NRo_T5Hrltdssepx6Rs4-2vxuiYooF-OPFtjj0Jfow,1138
17
+ mlrun/artifacts/base.py,sha256=3D1lcD-pyppvXPc_g89q8dV3cSgIcvY-WYD8QStAFuo,29813
18
18
  mlrun/artifacts/dataset.py,sha256=QTot5vCgLHatlIWwNnKbWdZ8HHTxaZ7wk4gWQDoqQ2k,16655
19
- mlrun/artifacts/document.py,sha256=lXlkCbbBYI8A2FHOjrBHpYUTAn51iIxg7pLD6ylyrT8,11235
19
+ mlrun/artifacts/document.py,sha256=3dE3sr4PYLmyPa9zVSN9D4-YuwUruuhx3o-QQUqt-JY,12350
20
20
  mlrun/artifacts/manager.py,sha256=PKLSGiIe4zpgMK3uNopfZwqpIS2r922m9poqJ4-5VZE,15771
21
21
  mlrun/artifacts/model.py,sha256=jeOjUq_iZSHoNqlPyGgOz6acwje1Yqpg1yZwF9GbyG8,21615
22
22
  mlrun/artifacts/plots.py,sha256=dS0mHGt1b20tN2JyEH9H5o5I0oMKZkzn3Uz_3Hf4WjU,4813
@@ -36,16 +36,16 @@ mlrun/common/formatters/model_endpoint.py,sha256=MQPNpj6lQbitvsT9tIm-XZbH18HDv0X
36
36
  mlrun/common/formatters/pipeline.py,sha256=oATD3znsuq3s7LipPnZivDPelTX0hJ0MFeeXOQmwwLw,1762
37
37
  mlrun/common/formatters/project.py,sha256=0G4lhcTAsxQCxd40dKC4894cMH8nKt03BcGyp9wQO14,2102
38
38
  mlrun/common/formatters/run.py,sha256=Gcf9lVDqxPMNfWcPX0RJasjTC_N_U0yTBkQ02jOPJ7A,1062
39
- mlrun/common/model_monitoring/__init__.py,sha256=ePaXfZQaAH_okyfJKK0-DllguTVHRYMGkRHdY5A1XrA,617
40
- mlrun/common/model_monitoring/helpers.py,sha256=TA24rF5qlLouEWGMDhXp7zXncIMgwykmVYq8PPakMFw,4422
39
+ mlrun/common/model_monitoring/__init__.py,sha256=kXGBqhLN0rlAx0kTXhozGzFsIdSqW0uTSKMmsLgq_is,569
40
+ mlrun/common/model_monitoring/helpers.py,sha256=fg56lF3ZP8d5v_vA5OFLAleFw83w35dWrkURYhOng00,3676
41
41
  mlrun/common/runtimes/constants.py,sha256=Mok3m9Rv182TTMp7uYNfWalm9Xcz86yva-4fTxfMOPI,10988
42
- mlrun/common/schemas/__init__.py,sha256=cjBoE1NMiN8L36nd1iEkb2n4ogG-bbiRo5VdJMg8jXY,5381
43
- mlrun/common/schemas/alert.py,sha256=UZtkLw3vZAv6F2mi0P6sYmev3Tgu-BkHupa_8s2AxlM,7175
42
+ mlrun/common/schemas/__init__.py,sha256=bN0outkzAxPz7S8QVfcwo4nkIY-h3eeH0ITck5smIsc,5304
43
+ mlrun/common/schemas/alert.py,sha256=-Mz1QhyqGU6dyEBEIKZmKvR4v3qmGMp6-bWbDC9joy0,7258
44
44
  mlrun/common/schemas/api_gateway.py,sha256=3a0QxECLmoDkD5IiOKtXJL-uiWB26Hg55WMA3nULYuI,7127
45
- mlrun/common/schemas/artifact.py,sha256=adwyDqd6Tec5mxFaQfFSuO7OzKm7gUAQI15n4VAg4PU,3591
45
+ mlrun/common/schemas/artifact.py,sha256=i29BeZ4MoOLMST3WlApX1Nli0vy-M7Zj_oTm8jySlw4,3805
46
46
  mlrun/common/schemas/auth.py,sha256=AGbBNvQq_vcvhX_NLqbT-QPHL4BAJMB3xwBXW7cFvpo,6761
47
47
  mlrun/common/schemas/background_task.py,sha256=ofWRAQGGEkXEu79Dbw7tT_5GPolR09Lc3Ebg2r0fT24,1728
48
- mlrun/common/schemas/client_spec.py,sha256=40zyebkqHSvMHUQzZbbifgTofF5zn7LOZLZdp36TPlo,2898
48
+ mlrun/common/schemas/client_spec.py,sha256=j75fSEOm2bg4XYMKMzKpFVCcNBSv2ndY2J08jfMHerM,2820
49
49
  mlrun/common/schemas/clusterization_spec.py,sha256=LAWOL6V3E5hAt8tKmnP3DOJcKG1FQqp8Z-x8szPkf1I,894
50
50
  mlrun/common/schemas/common.py,sha256=3GcfkT7yOWmrieCSrjOJ_4aXkiUWwLd_kxqMDP1-_hw,3540
51
51
  mlrun/common/schemas/constants.py,sha256=LfoSq8d2n7TMrM0IvxGylOtVEJGvvDVlK2-Yau-Tt30,7245
@@ -58,7 +58,7 @@ mlrun/common/schemas/http.py,sha256=1PtYFhF6sqLSBRcuPMtYcUGmroBhaleqLmYidSdL9LM,
58
58
  mlrun/common/schemas/hub.py,sha256=L0MJp8Kg7NmcWXygnHiDZ8WpTHxEO06M7AtBuKEO0rg,4119
59
59
  mlrun/common/schemas/k8s.py,sha256=Co4znGaCa1uX-2dsWSrZhy_OEYWoBCGWaDd1HXkz-8g,1404
60
60
  mlrun/common/schemas/memory_reports.py,sha256=boLyk8RRhfRLv0JCYYWxcTxobKzqRzdtSY2zajhF6_c,901
61
- mlrun/common/schemas/notification.py,sha256=LNuBtKzw1M2XBY86UaHwK97shhxB1_1wqCc7wkMDmtg,5302
61
+ mlrun/common/schemas/notification.py,sha256=WDdGhFII--zII5XebfkTdse8reMgKeVCYXlgeH7M9WE,5430
62
62
  mlrun/common/schemas/object.py,sha256=0vftHJcicAm87Hfgi_SdyQEqokoZRE4IEHHRPx34hNQ,1983
63
63
  mlrun/common/schemas/pagination.py,sha256=8NEmiIkCXw5_sv-lE0MWgWz-WpxhSSn-vBtbPDBOGXc,899
64
64
  mlrun/common/schemas/partition.py,sha256=s7607EKe4T_37wxS5kt-j4XFqwWY_90aHBZggAdYeDw,5516
@@ -71,11 +71,10 @@ mlrun/common/schemas/schedule.py,sha256=LTWdZ4FvKDGkmmfyqKoBQ36VFqnnyIYLnq1I6qrT
71
71
  mlrun/common/schemas/secret.py,sha256=CCxFYiPwJtDxwg2VVJH9nUG9cAZ2a34IjeuaWv-BYlc,1487
72
72
  mlrun/common/schemas/tag.py,sha256=HRZi5QZ4vVGaCr2AMk9eJgcNiAIXmH4YDc8a4fvF770,893
73
73
  mlrun/common/schemas/workflow.py,sha256=rwYzDJYxpE9k4kC88j_eUCmqK4ZsWV_h-_nli7Fs7Ow,2078
74
- mlrun/common/schemas/model_monitoring/__init__.py,sha256=-8WEQ6siFVQ6gPd0G85v0WbMM46T7wkAIKy8oRbVtdM,1977
75
- mlrun/common/schemas/model_monitoring/constants.py,sha256=FdRJW1LgzLVrwdJMoo-cYjWvTx_eRPA3cntPVlH13bA,11241
74
+ mlrun/common/schemas/model_monitoring/__init__.py,sha256=6gQcNTzCDEd-rDv6qDC5pE78INnV1AHKP9WbysUVNcw,1840
75
+ mlrun/common/schemas/model_monitoring/constants.py,sha256=UblKVJpdBDic7PvFSHboRHeTJVP-6O-upPHZ8nM8ZKo,11265
76
76
  mlrun/common/schemas/model_monitoring/grafana.py,sha256=Rq10KKOyyUYr7qOQFZfwGZtUim0LY9O0LQ5uc9jmIVQ,1562
77
- mlrun/common/schemas/model_monitoring/model_endpoint_v2.py,sha256=znH3Qnuxo31h7ZHOtAa2tTqV5dZJdVcJing6g6hJ-kM,5430
78
- mlrun/common/schemas/model_monitoring/model_endpoints.py,sha256=zRrg0th-hM5M1QSQlJCmZF8Aj2OzqZv0AIdccPKePdI,13678
77
+ mlrun/common/schemas/model_monitoring/model_endpoints.py,sha256=Ibb9S3DYi9rgXR8xCYyRK9wrET0MgUheb9BLCfnImzw,10888
79
78
  mlrun/data_types/__init__.py,sha256=unRo9GGwCmj0hBKBRsXJ2P4BzpQaddlQTvIrVQaKluI,984
80
79
  mlrun/data_types/data_types.py,sha256=uB9qJusSvPRK2PTvrFBXrS5jcDXMuwqXokJGToDg4VA,4953
81
80
  mlrun/data_types/infer.py,sha256=KdaRgWcqvLkuLjXrMuDr3ik6WY7JP5wJO0Yii_Vl5kw,6173
@@ -86,7 +85,7 @@ mlrun/datastore/alibaba_oss.py,sha256=k-OHVe08HjMewlkpsT657CbOiVFAfSq9_EqhCE-k86
86
85
  mlrun/datastore/azure_blob.py,sha256=SzAcHYSXkm8Zpopz2Ea-rWVClH0URocUazcNK04S9W0,12776
87
86
  mlrun/datastore/base.py,sha256=Dqg8PqX0TFKHZg27Dgguc3RnQ1GABZiLf87p5ErTqJs,26448
88
87
  mlrun/datastore/datastore.py,sha256=frUYYP4i8ZmnY8GNXSgN_3x_exRgRPfxrCtAGEUifEU,9478
89
- mlrun/datastore/datastore_profile.py,sha256=NIFKGxJvZRizYiIeafbo6-bbGOkuqdrrCONQPRZpP_o,19664
88
+ mlrun/datastore/datastore_profile.py,sha256=DOCiN90li7G3kIe6z3vfHxf8iQKS6V_UNai_woeFR80,20884
90
89
  mlrun/datastore/dbfs_store.py,sha256=QkDRzwFnvm7CgEg4NuGxes6tBgKDyhX0CiBUvK8c9pk,6568
91
90
  mlrun/datastore/filestore.py,sha256=OcykjzhbUAZ6_Cb9bGAXRL2ngsOpxXSb4rR0lyogZtM,3773
92
91
  mlrun/datastore/google_cloud_storage.py,sha256=MnToY6irdhBZ8Wcapqnr1Yq2724LAh2uPO7MAtdWfUY,8716
@@ -103,15 +102,15 @@ mlrun/datastore/storeytargets.py,sha256=uNYG4nCBD3JIfa51CG4cDe9ryc9oIcqUdUXKvCPB
103
102
  mlrun/datastore/targets.py,sha256=0RuprYSc95Uy-P_fk30d1dMGHDpgx7DAeydZEA3uR_k,80660
104
103
  mlrun/datastore/utils.py,sha256=ZDAzz0W16_JcM6Q9h4RoMbdruM9eA6YGlA5dw8gW8Bw,7754
105
104
  mlrun/datastore/v3io.py,sha256=QSYBORRLcJTeM9mt0EaWzyLcdmzrPkqrF7k5uLTam5U,8209
106
- mlrun/datastore/vectorstore.py,sha256=39Hb_gRnr3pSrceoEPBNs-S2KNVQj_x2q66rxr7rEHQ,8028
105
+ mlrun/datastore/vectorstore.py,sha256=vDHYaKJ0wB0fiBSSRlFmeH5dRbPDY5l9VCpAr5p-wDA,8384
107
106
  mlrun/datastore/wasbfs/__init__.py,sha256=s5Ul-0kAhYqFjKDR2X0O2vDGDbLQQduElb32Ev56Te4,1343
108
107
  mlrun/datastore/wasbfs/fs.py,sha256=ge8NK__5vTcFT-krI155_8RDUywQw4SIRX6BWATXy9Q,6299
109
108
  mlrun/db/__init__.py,sha256=WqJ4x8lqJ7ZoKbhEyFqkYADd9P6E3citckx9e9ZLcIU,1163
110
109
  mlrun/db/auth_utils.py,sha256=hpg8D2r82oN0BWabuWN04BTNZ7jYMAF242YSUpK7LFM,5211
111
- mlrun/db/base.py,sha256=bui1BYkQDnugs6gdQEzL0YASEFqGVhqCxwV0B58OBds,28651
112
- mlrun/db/factory.py,sha256=ibIrE5QkIIyzDU1FXKrfbc31cZiRLYKDZb8dqCpQwyU,2397
113
- mlrun/db/httpdb.py,sha256=eHyWtbiNBieS6auGHOkj5ZHRRQsiouDTUQ_WSaF_Cec,221751
114
- mlrun/db/nopdb.py,sha256=SJv8TfggnpbYJSv46UHsPT7_dGEarbBiNa5iG6Pwt90,25470
110
+ mlrun/db/base.py,sha256=zg54PqHh-IYBSmlO1Q8DBS04r-U7v5x2-4Zncb0OIuI,28892
111
+ mlrun/db/factory.py,sha256=yP2vVmveUE7LYTCHbS6lQIxP9rW--zdISWuPd_I3d_4,2111
112
+ mlrun/db/httpdb.py,sha256=jEHqrEt7H2HIETXsMXRwzc0zQ9KGMnAVIR5nmLZT-Cw,219430
113
+ mlrun/db/nopdb.py,sha256=U8YW45sD5YZGoDrkRzFWIZJ0req_9yE59J1I9W8WeC4,26002
115
114
  mlrun/feature_store/__init__.py,sha256=AVnY2AFUNc2dKxLLUMx2K3Wo1eGviv0brDcYlDnmtf4,1506
116
115
  mlrun/feature_store/api.py,sha256=mrvFNwnX7GviWBVklruXbqLmXKSMGt0P6cJtmy9Z8Nw,50394
117
116
  mlrun/feature_store/common.py,sha256=Z7USI-d1fo0iwBMsqMBtJflJfyuiV3BLoDXQPSAoBAs,12826
@@ -216,46 +215,34 @@ mlrun/launcher/client.py,sha256=FXzQQqrSVE9oapLjjUYvx5qhZPG1r4ynUjUUFZVPekE,6228
216
215
  mlrun/launcher/factory.py,sha256=RW7mfzEFi8fR0M-4W1JQg1iq3_muUU6OTqT_3l4Ubrk,2338
217
216
  mlrun/launcher/local.py,sha256=9zNiuswHnSINDj4yYP2Vd192b5d4FUtSA8O2ICKjsKo,11279
218
217
  mlrun/launcher/remote.py,sha256=rLJW4UAnUT5iUb4BsGBOAV3K4R29a0X4lFtRkVKlyYU,7709
219
- mlrun/model_monitoring/__init__.py,sha256=ZT37aXwJvcQ5m7VUQ6qM5F3bwMpEvyEYYqaxfjKxmIk,777
220
- mlrun/model_monitoring/api.py,sha256=Lc1pYHjgTrehlO8Y6vc6Asvwptn6LsXdUKmhwcyTOaA,28208
221
- mlrun/model_monitoring/controller.py,sha256=syHN2Xm7ovBQT5b3_AfBZ9Mjjge7U-Dk5jAr_QRhINk,19452
218
+ mlrun/model_monitoring/__init__.py,sha256=RgXjrQSN7gZwo-URei3FNo3fE9wWlo1-wNhSVtNXbPA,784
219
+ mlrun/model_monitoring/api.py,sha256=qOyEtBtJcAprITe9jAu6rFQ_vRZFLiN_NKDNkZLOSQs,27708
220
+ mlrun/model_monitoring/controller.py,sha256=dBfZQswF67vqeUFnmgsm9jU_5sOs9dLwMPEiYHG-Kk8,19786
222
221
  mlrun/model_monitoring/features_drift_table.py,sha256=c6GpKtpOJbuT1u5uMWDL_S-6N4YPOmlktWMqPme3KFY,25308
223
- mlrun/model_monitoring/helpers.py,sha256=gSeMgLVz7pzQGZQup6L8zI3XkCI7S6XZhBDnWDLzjuA,15626
224
- mlrun/model_monitoring/model_endpoint.py,sha256=EOZl99r5RGE1ZV0WKTx-y3pfgFgvKw3UglambC6gXEA,4051
225
- mlrun/model_monitoring/stream_processing.py,sha256=XulKYz0xvnFrKdN9wcQT0WCHRbS3Hw6hHQ-Ev7M6Wx8,38905
222
+ mlrun/model_monitoring/helpers.py,sha256=x2nXtgMRePK6gvxfyZBmqISCQ9OZycOz963xA6kqnkg,13672
223
+ mlrun/model_monitoring/stream_processing.py,sha256=LtnSsGyfPNMq0t-L6soYNRcwErjLVotxbpY_yBo0SpE,31712
226
224
  mlrun/model_monitoring/tracking_policy.py,sha256=PBIGrUYWrwcE5gwXupBIVzOb0QRRwPJsgQm_yLGQxB4,5595
227
- mlrun/model_monitoring/writer.py,sha256=kiaXcqshUQ48YuxGps5dHEasDSIEQSh6k9Z9vd-MttE,10919
225
+ mlrun/model_monitoring/writer.py,sha256=-47Z7oMr6q2ieJunZgkMK8d0IHZJhC3jxTBIxHgtSOk,10490
228
226
  mlrun/model_monitoring/applications/__init__.py,sha256=QYvzgCutFdAkzqKPD3mvkX_3c1X4tzd-kW8ojUOE9ic,889
229
- mlrun/model_monitoring/applications/_application_steps.py,sha256=vvWBYK2VmaWJ0NF-_J42WiskNWrLBdoGOzJYmF6SlGQ,7050
230
- mlrun/model_monitoring/applications/base.py,sha256=uzc14lFlwTJnL0p2VBCzmp-CNoHd73cK_Iz0YHC1KAs,4380
231
- mlrun/model_monitoring/applications/context.py,sha256=vOZ_ZgUuy5UsNe22-puJSt7TB32HiZtqBdN1hegykuQ,12436
232
- mlrun/model_monitoring/applications/evidently_base.py,sha256=Z9v7Pa5PEQqei3FvhUdREfKK82tUDSQix4ELeNQZyoA,5099
233
- mlrun/model_monitoring/applications/histogram_data_drift.py,sha256=tyttqKMCt1AFH-lPkf_TDTv3GoyyGCeilM68HL3xxx0,14561
227
+ mlrun/model_monitoring/applications/_application_steps.py,sha256=h80Rs0vN70R3YOW-mCN8quWw1gFbfQdOPQeUwYFic_Q,7162
228
+ mlrun/model_monitoring/applications/base.py,sha256=ObHX1zSBjoEoaS1HE77Q05Gcpgvd_uza6ttRt16NgPU,6902
229
+ mlrun/model_monitoring/applications/context.py,sha256=cywoPOg5VI-HsZLPj2qta2Xtpn9wwqmdUi8imv2oaHM,13886
230
+ mlrun/model_monitoring/applications/evidently_base.py,sha256=hRjXuXf6xf8sbjGt9yYfGDUGnvS5rV3W7tkJroF3QJA,5098
231
+ mlrun/model_monitoring/applications/histogram_data_drift.py,sha256=DW_-DIBTy6sP-rKbt4BY-MrwswYsuQmZpllJtHrsNso,14454
234
232
  mlrun/model_monitoring/applications/results.py,sha256=oh1z9oacWWP4azVXm_Fx7j8uXSfdkB9T4mtGwyPBveE,5748
235
- mlrun/model_monitoring/db/__init__.py,sha256=6Ic-X3Fh9XLPYMytmevGNSs-Hii1rAjLLoFTSPwTguw,736
233
+ mlrun/model_monitoring/db/__init__.py,sha256=r47xPGZpIfMuv8J3PQCZTSqVPMhUta4sSJCZFKcS7FM,644
236
234
  mlrun/model_monitoring/db/_schedules.py,sha256=NTO1rbSyhW1JidpBDSN39ZBD0ctp5pbJFYQwxKRIRrs,5821
237
235
  mlrun/model_monitoring/db/_stats.py,sha256=VVMWLMqG3Us3ozBkLaokJF22Ewv8WKmVE1-OvS_g9vA,6943
238
- mlrun/model_monitoring/db/stores/__init__.py,sha256=snjv_lrGKiUc913feYrRTw3_lBBOjTt0txht_1B3rSg,4769
239
- mlrun/model_monitoring/db/stores/base/__init__.py,sha256=JufJETW3BXzPhFwbRa8dMf7BFGGZKceIWIMgr5x9n9c,599
240
- mlrun/model_monitoring/db/stores/base/store.py,sha256=WU545LovRIRvTrthkY7nVp4n5YcyNDXCLJ6AneEAhV4,5429
241
- mlrun/model_monitoring/db/stores/sqldb/__init__.py,sha256=6CsTXAxeLbbf8yfCADTaxmiavqwrLEdYFJ-qc5kgDAY,569
242
- mlrun/model_monitoring/db/stores/sqldb/sql_store.py,sha256=YO8scfwQDZH4aeM0589F83Vpdd-UozO3gr1cxGwbFCI,15865
243
- mlrun/model_monitoring/db/stores/sqldb/models/__init__.py,sha256=enJr3FfzpvMSzRrGKUsVesuR0HVpGuoy2DscXgezBNI,1519
244
- mlrun/model_monitoring/db/stores/sqldb/models/base.py,sha256=hVpfffTW18J3vuOdHGUYdl1Wg1PsBfvhIfZrqHkdAyU,2995
245
- mlrun/model_monitoring/db/stores/sqldb/models/mysql.py,sha256=IV1dzN-d5rOeKOU1L6FhlxeNogvj4hrgSrzlJfS46QI,1578
246
- mlrun/model_monitoring/db/stores/sqldb/models/sqlite.py,sha256=yWlFnhiDxEsfBG_1DVvX_rD4vQZzfisd2m6JpqDGF_U,774
247
- mlrun/model_monitoring/db/stores/v3io_kv/__init__.py,sha256=6CsTXAxeLbbf8yfCADTaxmiavqwrLEdYFJ-qc5kgDAY,569
248
- mlrun/model_monitoring/db/stores/v3io_kv/kv_store.py,sha256=vZes3ZORFzfIhwLbvJJ1dkVc8c3ZOtd8jh4z7YOapNQ,16625
249
236
  mlrun/model_monitoring/db/tsdb/__init__.py,sha256=Zqh_27I2YAEHk9nl0Z6lUxP7VEfrgrpnwhmHsbi4jnA,4055
250
- mlrun/model_monitoring/db/tsdb/base.py,sha256=ld6i28P-EqztkgDhVxwLNFvbJnX76AYKMZswtmdmY80,20898
237
+ mlrun/model_monitoring/db/tsdb/base.py,sha256=EWm-56AzuLSH1JV6DAhSRu9sUel5YD6Ch1n5tgUHODo,20983
251
238
  mlrun/model_monitoring/db/tsdb/helpers.py,sha256=0oUXc4aUkYtP2SGP6jTb3uPPKImIUsVsrb9otX9a7O4,1189
252
239
  mlrun/model_monitoring/db/tsdb/tdengine/__init__.py,sha256=vgBdsKaXUURKqIf3M0y4sRatmSVA4CQiJs7J5dcVBkQ,620
253
240
  mlrun/model_monitoring/db/tsdb/tdengine/schemas.py,sha256=5otz6VXRYNMc55hq9SdTQoglywdr2Ylh-ApL1dCyqls,13169
254
241
  mlrun/model_monitoring/db/tsdb/tdengine/stream_graph_steps.py,sha256=Uadj0UvAmln2MxDWod-kAzau1uNlqZh981rPhbUH_5M,2857
255
- mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connector.py,sha256=nxCf98AbAvZrg_Igd52cQ1LgMJy360ValeJJGyaNaNk,29621
242
+ mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connector.py,sha256=a2AjI7_jTnbJ8as1Bt0AMQcwsPgFsR0tvyxlKp3uZrs,29706
256
243
  mlrun/model_monitoring/db/tsdb/v3io/__init__.py,sha256=aL3bfmQsUQ-sbvKGdNihFj8gLCK3mSys0qDcXtYOwgc,616
257
244
  mlrun/model_monitoring/db/tsdb/v3io/stream_graph_steps.py,sha256=_-zo9relCDtjGgievxAcAP9gVN9nDWs8BzGtFwTjb9M,6284
258
- mlrun/model_monitoring/db/tsdb/v3io/v3io_connector.py,sha256=V48SN3-8KKjwuaCjwpewtEphB0DRFSJawcMCLJoG0I4,33824
245
+ mlrun/model_monitoring/db/tsdb/v3io/v3io_connector.py,sha256=_9n837rmlmxeEzqKjc5LerXRxNqKAgjMMzU-sKz4uyo,35668
259
246
  mlrun/model_monitoring/metrics/__init__.py,sha256=6CsTXAxeLbbf8yfCADTaxmiavqwrLEdYFJ-qc5kgDAY,569
260
247
  mlrun/model_monitoring/metrics/histogram_distance.py,sha256=E9_WIl2vd6qNvoHVHoFcnuQk3ekbFWOdi8aU7sHrfk4,4724
261
248
  mlrun/package/__init__.py,sha256=v7VDyK9kDOOuDvFo4oiGV2fx-vM1KL7fdN9pGLakhUQ,7008
@@ -280,7 +267,7 @@ mlrun/platforms/iguazio.py,sha256=6VBTq8eQ3mzT96tzjYhAtcMQ2VjF4x8LpIPW5DAcX2Q,13
280
267
  mlrun/projects/__init__.py,sha256=0Krf0WIKfnZa71WthYOg0SoaTodGg3sV_hK3f_OlTPI,1220
281
268
  mlrun/projects/operations.py,sha256=VXUlMrouFTls-I-bMhdN5pPfQ34TR7bFQ-NUSWNvl84,20029
282
269
  mlrun/projects/pipelines.py,sha256=DWAWkFXLDoPIaKySgdn4XVqkIMfxCcCNUdw7XwAsfno,45924
283
- mlrun/projects/project.py,sha256=l548J0ySW0MDbc3q6Oyi-BCoLAerZVT7KXSwpggLaqI,218870
270
+ mlrun/projects/project.py,sha256=iVaLufFtTGTmvi39MarzBVpktj2o3isvvCHPGz8ic0M,219268
284
271
  mlrun/runtimes/__init__.py,sha256=J9Sy2HiyMlztNv6VUurMzF5H2XzttNil8nRsWDsqLyg,8923
285
272
  mlrun/runtimes/base.py,sha256=Yt2l7srrXjK783cunBEKH0yQxQZRH8lkedXNOXuLbbo,37841
286
273
  mlrun/runtimes/daskjob.py,sha256=JwuGvOiPsxEDHHMMUS4Oie4hLlYYIZwihAl6DjroTY0,19521
@@ -302,9 +289,9 @@ mlrun/runtimes/mpijob/abstract.py,sha256=JGMjcJ4dvpJbctF6psU9UvYyNCutMxTMgBQeTlz
302
289
  mlrun/runtimes/mpijob/v1.py,sha256=1XQZC7AIMGX_AQCbApcwpH8I7y39-v0v2O35MvxjXoo,3213
303
290
  mlrun/runtimes/nuclio/__init__.py,sha256=gx1kizzKv8pGT5TNloN1js1hdbxqDw3rM90sLVYVffY,794
304
291
  mlrun/runtimes/nuclio/api_gateway.py,sha256=vH9ClKVP4Mb24rvA67xPuAvAhX-gAv6vVtjVxyplhdc,26969
305
- mlrun/runtimes/nuclio/function.py,sha256=hKi9t-1CFHNB27y3zIt9z98XrpLcaEyFBtOEm8rLUYk,52217
292
+ mlrun/runtimes/nuclio/function.py,sha256=ZXXHuPkQPgOewaGr9G3jLTQSFQHSJpLVFJ2bIA6bfpI,52287
306
293
  mlrun/runtimes/nuclio/nuclio.py,sha256=sLK8KdGO1LbftlL3HqPZlFOFTAAuxJACZCVl1c0Ha6E,2942
307
- mlrun/runtimes/nuclio/serving.py,sha256=_5jUTo3jt4nlGSCjzNY17KRjuUDlmXm0IhjgiZ0_Pi4,29816
294
+ mlrun/runtimes/nuclio/serving.py,sha256=Oxbs2-aMK58s7JmaHiYMp7but4KQr7rbIHW59IGe7ak,30139
308
295
  mlrun/runtimes/nuclio/application/__init__.py,sha256=rRs5vasy_G9IyoTpYIjYDafGoL6ifFBKgBtsXn31Atw,614
309
296
  mlrun/runtimes/nuclio/application/application.py,sha256=HlEq4A6hbFqr3Ba3TL4m7nbmfMYI06Zb_NAKGjzkEFU,29242
310
297
  mlrun/runtimes/nuclio/application/reverse_proxy.go,sha256=JIIYae6bXzCLf3jXuu49KWPQYoXr_FDQ2Rbo1OWKAd0,3150
@@ -313,13 +300,13 @@ mlrun/runtimes/sparkjob/spark3job.py,sha256=0ipkgAjDYDJDlcuvt379zonjhepCspsQQXMr
313
300
  mlrun/serving/__init__.py,sha256=-SMRV3q_5cGVPDxRslXPU0zGYZIygs0cSj7WKlOJJUc,1163
314
301
  mlrun/serving/merger.py,sha256=Sj2OUjPNLQrGZD_StMx8-j0kGyzKlp4QjTmDHmpJQLA,6185
315
302
  mlrun/serving/remote.py,sha256=KBSC3Aw0H6fOlmwdnc37C1CtegCiI7MhkKAXgaxFESs,18158
316
- mlrun/serving/routers.py,sha256=kc4WYWw78-PS8NuYBFDgSleDb1LLqSgX0wCNwtgWF1A,56291
317
- mlrun/serving/server.py,sha256=0CZIPe26CNjDRCOcpsXUQkL4MKQwmpt3ytcoecYhpmI,22102
303
+ mlrun/serving/routers.py,sha256=3jkLU8F-c311KUX2YtYeORDsogutY8S_HbdQPRhsG_w,56358
304
+ mlrun/serving/server.py,sha256=KtcK_fn57G4CLgtEvSeaxwA-kruhUxv28StV3HimvXE,22294
318
305
  mlrun/serving/serving_wrapper.py,sha256=R670-S6PX_d5ER6jiHtRvacuPyFzQH0mEf2K0sBIIOM,836
319
- mlrun/serving/states.py,sha256=9hO7kFK1Djn-_kauUaIJ_caWAOnQ_ppXhpLQknbT4Jw,61101
306
+ mlrun/serving/states.py,sha256=gPaE9Nqd2_ilY7GCGYNVJNw6-z1Yj8b10470lZz14_k,61202
320
307
  mlrun/serving/utils.py,sha256=k2EIYDWHUGkE-IBI6T0UNT32fw-KySsccIJM_LObI00,4171
321
308
  mlrun/serving/v1_serving.py,sha256=c6J_MtpE-Tqu00-6r4eJOCO6rUasHDal9W2eBIcrl50,11853
322
- mlrun/serving/v2_serving.py,sha256=GhQLzAW2wr-ZkaqqjR0NOxZe1Xvg0zf0zB-xzgSUUOA,26419
309
+ mlrun/serving/v2_serving.py,sha256=rr21Y3Adg9UmJDDbxBRS8qfalsrxUTK7durh-cg88Ys,27416
323
310
  mlrun/track/__init__.py,sha256=yVXbT52fXvGKRlc_ByHqIVt7-9L3DRE634RSeQwgXtU,665
324
311
  mlrun/track/tracker.py,sha256=CyTU6Qd3_5GGEJ_hpocOj71wvV65EuFYUjaYEUKAL6Q,3575
325
312
  mlrun/track/tracker_manager.py,sha256=IYBl99I62IC6VCCmG1yt6JoHNOQXa53C4DURJ2sWgio,5726
@@ -331,7 +318,7 @@ mlrun/utils/azure_vault.py,sha256=IEFizrDGDbAaoWwDr1WoA88S_EZ0T--vjYtY-i0cvYQ,34
331
318
  mlrun/utils/clones.py,sha256=y3zC9QS7z5mLuvyQ6vFd6sJnikbgtDwrBvieQq0sovY,7359
332
319
  mlrun/utils/condition_evaluator.py,sha256=-nGfRmZzivn01rHTroiGY4rqEv8T1irMyhzxEei-sKc,1897
333
320
  mlrun/utils/db.py,sha256=blQgkWMfFH9lcN4sgJQcPQgEETz2Dl_zwbVA0SslpFg,2186
334
- mlrun/utils/helpers.py,sha256=H_ArwAtezFFFYlfB3Jvpgj7ooUn6yCT3yoW2xBrh3to,63583
321
+ mlrun/utils/helpers.py,sha256=aCTSeGRjxhPaE0xA_4l1x8wmJJfcVMiLNNsboDD7eg8,63141
335
322
  mlrun/utils/http.py,sha256=t6FrXQstZm9xVVjxqIGiLzrwZNCR4CSienSOuVgNIcI,8706
336
323
  mlrun/utils/logger.py,sha256=_v4UTv1-STzC2c6aAWAa0NNl9STQoBYbR3OHgAiL41s,14606
337
324
  mlrun/utils/regex.py,sha256=zxeogx8gsZU8txvmRF5LEtOSqt6m3vpzkUDKLkPdvdA,4999
@@ -340,21 +327,21 @@ mlrun/utils/singleton.py,sha256=p1Y-X0mPSs_At092GS-pZCA8CTR62HOqPU07_ZH6-To,869
340
327
  mlrun/utils/v3io_clients.py,sha256=0aCFiQFBmgdSeLzJr_nEP6SG-zyieSgH8RdtcUq4dc0,1294
341
328
  mlrun/utils/vault.py,sha256=xUiKL17dCXjwQJ33YRzQj0oadUXATlFWPzKKYAESoQk,10447
342
329
  mlrun/utils/notifications/__init__.py,sha256=eUzQDBxSQmMZASRY-YAnYS6tL5801P0wEjycp3Dvoe0,990
343
- mlrun/utils/notifications/notification_pusher.py,sha256=q59lKrK3hYvmYA46apAT6hobRBbhPp7ell2G2iY2cts,27457
330
+ mlrun/utils/notifications/notification_pusher.py,sha256=j6wzGhf7r03tYKlTjIDyHTDIVJnWC4q945j-lrkLGsY,28181
344
331
  mlrun/utils/notifications/notification/__init__.py,sha256=9Rfy6Jm8n0LaEDO1VAQb6kIbr7_uVuQhK1pS_abELIY,2581
345
332
  mlrun/utils/notifications/notification/base.py,sha256=r-5eAGm2xz5VZGbV6NfeRV-heF7WzOYi-qWwDK2nR7U,5297
346
333
  mlrun/utils/notifications/notification/console.py,sha256=ICbIhOf9fEBJky_3j9TFiKAewDGyDHJr9l4VeT7G2sc,2745
347
334
  mlrun/utils/notifications/notification/git.py,sha256=t2lqRrPRBO4awf_uhxJreH9CpcbYSH8T3CvHtwspHkE,6306
348
335
  mlrun/utils/notifications/notification/ipython.py,sha256=9uZvI1uOLFaNuAsfJPXmL3l6dOzFoWdBK5GYNYFAfks,2282
349
- mlrun/utils/notifications/notification/mail.py,sha256=ItwbXkrPTY0_ek7Uuyi_MgnuQ57iuXzMrtL_13PTMNI,5034
336
+ mlrun/utils/notifications/notification/mail.py,sha256=ZyJ3eqd8simxffQmXzqd3bgbAqp1vij7C6aRJ9h2mgs,6012
350
337
  mlrun/utils/notifications/notification/slack.py,sha256=NKV4RFiY3gLsS8uPppgniPLyag8zJ9O1VhixoXkM7kw,7108
351
338
  mlrun/utils/notifications/notification/webhook.py,sha256=lSGKCQMa-TstKbMpZnU5uQkW14tzIaqjBHDXUNh9dlU,4848
352
339
  mlrun/utils/version/__init__.py,sha256=7kkrB7hEZ3cLXoWj1kPoDwo4MaswsI2JVOBpbKgPAgc,614
353
- mlrun/utils/version/version.json,sha256=aYD5TXGG3fGCvb179cqfMZ9iF67jqbjn0qgbmSZdpf4,88
340
+ mlrun/utils/version/version.json,sha256=DPwkk-LMY-TirkTLeYmU3lDjDZeoCxs37pnRsMuC-iM,88
354
341
  mlrun/utils/version/version.py,sha256=eEW0tqIAkU9Xifxv8Z9_qsYnNhn3YH7NRAfM-pPLt1g,1878
355
- mlrun-1.8.0rc4.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
356
- mlrun-1.8.0rc4.dist-info/METADATA,sha256=e48IYo1sQ8YOq-lN9mhLlwHIf35lapewgcBdc5Uymgs,24326
357
- mlrun-1.8.0rc4.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
358
- mlrun-1.8.0rc4.dist-info/entry_points.txt,sha256=1Owd16eAclD5pfRCoJpYC2ZJSyGNTtUr0nCELMioMmU,46
359
- mlrun-1.8.0rc4.dist-info/top_level.txt,sha256=NObLzw3maSF9wVrgSeYBv-fgnHkAJ1kEkh12DLdd5KM,6
360
- mlrun-1.8.0rc4.dist-info/RECORD,,
342
+ mlrun-1.8.0rc6.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
343
+ mlrun-1.8.0rc6.dist-info/METADATA,sha256=8roaqnmhOVgQjaSs2_xApcn24qTxpRhjcL9RQzZIt7Y,24456
344
+ mlrun-1.8.0rc6.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
345
+ mlrun-1.8.0rc6.dist-info/entry_points.txt,sha256=1Owd16eAclD5pfRCoJpYC2ZJSyGNTtUr0nCELMioMmU,46
346
+ mlrun-1.8.0rc6.dist-info/top_level.txt,sha256=NObLzw3maSF9wVrgSeYBv-fgnHkAJ1kEkh12DLdd5KM,6
347
+ mlrun-1.8.0rc6.dist-info/RECORD,,
@@ -1,149 +0,0 @@
1
- # Copyright 2023 Iguazio
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
- #
15
- import abc
16
- from typing import Optional
17
-
18
- from pydantic.v1 import BaseModel, Field, constr
19
-
20
- from ..object import ObjectKind, ObjectMetadata, ObjectSpec, ObjectStatus
21
- from .constants import (
22
- PROJECT_PATTERN,
23
- EndpointType,
24
- ModelMonitoringMode,
25
- )
26
- from .model_endpoints import _mapping_attributes
27
-
28
- # TODO : replace ModelEndpoint
29
-
30
-
31
- class ModelEndpointParser(abc.ABC, BaseModel):
32
- @classmethod
33
- def json_parse_values(cls) -> list[str]:
34
- return []
35
-
36
- @classmethod
37
- def from_flat_dict(
38
- cls, endpoint_dict: dict, json_parse_values: Optional[list] = None
39
- ):
40
- """Create a `ModelEndpointMetadata` object from an endpoint dictionary
41
-
42
- :param endpoint_dict: Model endpoint dictionary.
43
- :param json_parse_values: List of dictionary keys with a JSON string value that will be parsed into a
44
- dictionary using json.loads().
45
- """
46
- if json_parse_values is None:
47
- json_parse_values = cls.json_parse_values()
48
-
49
- return _mapping_attributes(
50
- model_class=cls,
51
- flattened_dictionary=endpoint_dict,
52
- json_parse_values=json_parse_values,
53
- )
54
-
55
-
56
- class ModelEndpointV2Metadata(ObjectMetadata, ModelEndpointParser):
57
- project: constr(regex=PROJECT_PATTERN)
58
- endpoint_type: Optional[EndpointType] = EndpointType.NODE_EP.value
59
-
60
-
61
- class ModelEndpointV2Spec(ObjectSpec, ModelEndpointParser):
62
- model_uid: Optional[str] = ""
63
- model_name: Optional[str] = ""
64
- model_tag: Optional[str] = ""
65
- model_class: Optional[str] = ""
66
- function_name: Optional[str] = ""
67
- function_uid: Optional[str] = ""
68
- feature_names: Optional[list[str]] = []
69
- label_names: Optional[list[str]] = []
70
-
71
-
72
- class ModelEndpointV2Status(ObjectStatus, ModelEndpointParser):
73
- state: Optional[str] = "unknown" # will be updated according to the function state
74
- first_request: Optional[str] = ""
75
- children: Optional[list[str]] = []
76
- children_uids: Optional[list[str]] = []
77
- monitoring_feature_set_uri: Optional[str] = ""
78
- monitoring_mode: Optional[ModelMonitoringMode] = ModelMonitoringMode.disabled.value
79
- function_uri: Optional[str] = "" # <project_name>/<function_name>:<tag>
80
- model_uri: Optional[str] = ""
81
-
82
- # operative
83
- last_request: Optional[str] = ""
84
- drift_status: Optional[str] = ""
85
- avg_latency: Optional[float] = None
86
- error_count: Optional[int] = 0
87
- feature_stats: Optional[dict] = {}
88
- current_stats: Optional[dict] = {}
89
- drift_measures: Optional[dict] = {}
90
-
91
-
92
- class ModelEndpointV2(BaseModel):
93
- kind: ObjectKind = Field(ObjectKind.model_endpoint, const=True)
94
- metadata: ModelEndpointV2Metadata
95
- spec: ModelEndpointV2Spec
96
- status: ModelEndpointV2Status
97
-
98
- def flat_dict(self, exclude: Optional[set] = None):
99
- """Generate a flattened `ModelEndpoint` dictionary. The flattened dictionary result is important for storing
100
- the model endpoint object in the database.
101
-
102
- :return: Flattened `ModelEndpoint` dictionary.
103
- """
104
- # Convert the ModelEndpoint object into a dictionary using BaseModel dict() function
105
- # In addition, remove the BaseModel kind as it is not required by the DB schema
106
- if exclude:
107
- exclude = exclude | {"kind", "tag"}
108
- else:
109
- exclude = {"kind", "tag"}
110
- model_endpoint_dictionary = self.dict(exclude=exclude)
111
-
112
- # Initialize a flattened dictionary that will be filled with the model endpoint dictionary attributes
113
- flatten_dict = {}
114
- for k_object in model_endpoint_dictionary:
115
- for key in model_endpoint_dictionary[k_object]:
116
- # Extract the value of the current field
117
- flatten_dict[key] = model_endpoint_dictionary[k_object][key]
118
-
119
- return flatten_dict
120
-
121
- @classmethod
122
- def from_flat_dict(cls, endpoint_dict: dict) -> "ModelEndpointV2":
123
- """Create a `ModelEndpoint` object from an endpoint flattened dictionary. Because the provided dictionary
124
- is flattened, we pass it as is to the subclasses without splitting the keys into spec, metadata, and status.
125
-
126
- :param endpoint_dict: Model endpoint dictionary.
127
- """
128
-
129
- return cls(
130
- metadata=ModelEndpointV2Metadata.from_flat_dict(
131
- endpoint_dict=endpoint_dict
132
- ),
133
- spec=ModelEndpointV2Spec.from_flat_dict(endpoint_dict=endpoint_dict),
134
- status=ModelEndpointV2Status.from_flat_dict(endpoint_dict=endpoint_dict),
135
- )
136
-
137
- @classmethod
138
- def _operative_data(cls) -> set:
139
- return {
140
- "last_request",
141
- "drift_status",
142
- "avg_latency",
143
- "error_count",
144
- "feature_stats",
145
- "current_stats",
146
- "drift_measures",
147
- "function_uri",
148
- "model_uri",
149
- }
@@ -1,136 +0,0 @@
1
- # Copyright 2024 Iguazio
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
-
15
- import enum
16
- import typing
17
- import warnings
18
-
19
- import mlrun.common.schemas.secret
20
- import mlrun.errors
21
-
22
- from .base import StoreBase
23
-
24
-
25
- class ObjectStoreFactory(enum.Enum):
26
- """Enum class to handle the different store type values for saving model monitoring records."""
27
-
28
- v3io_nosql = "v3io-nosql"
29
- SQL = "sql"
30
-
31
- def to_object_store(
32
- self,
33
- project: str,
34
- **kwargs,
35
- ) -> StoreBase:
36
- """
37
- Return a StoreBase object based on the provided enum value.
38
-
39
- :param project: The name of the project.
40
-
41
- :return: `StoreBase` object.
42
-
43
- """
44
-
45
- if self == self.v3io_nosql:
46
- from mlrun.model_monitoring.db.stores.v3io_kv.kv_store import KVStoreBase
47
-
48
- return KVStoreBase(project=project)
49
-
50
- # Assuming SQL store target if store type is not KV.
51
- # Update these lines once there are more than two store target types.
52
-
53
- from mlrun.model_monitoring.db.stores.sqldb.sql_store import SQLStoreBase
54
-
55
- return SQLStoreBase(
56
- project=project,
57
- **kwargs,
58
- )
59
-
60
- @classmethod
61
- def _missing_(cls, value: typing.Any):
62
- """A lookup function to handle an invalid value.
63
- :param value: Provided enum (invalid) value.
64
- """
65
- valid_values = list(cls.__members__.keys())
66
- raise mlrun.errors.MLRunInvalidMMStoreTypeError(
67
- f"{value} is not a valid endpoint store, please choose a valid value: %{valid_values}."
68
- )
69
-
70
-
71
- def get_model_endpoint_store(
72
- project: str,
73
- access_key: typing.Optional[str] = None,
74
- secret_provider: typing.Optional[typing.Callable[[str], str]] = None,
75
- ) -> StoreBase:
76
- # Leaving here for backwards compatibility
77
- warnings.warn(
78
- "The 'get_model_endpoint_store' function is deprecated and will be removed in 1.9.0. "
79
- "Please use `get_store_object` instead.",
80
- # TODO: remove in 1.9.0
81
- FutureWarning,
82
- )
83
- return get_store_object(
84
- project=project, access_key=access_key, secret_provider=secret_provider
85
- )
86
-
87
-
88
- def get_store_object(
89
- project: str,
90
- secret_provider: typing.Optional[typing.Callable[[str], str]] = None,
91
- store_connection_string: typing.Optional[str] = None,
92
- **kwargs,
93
- ) -> StoreBase:
94
- """
95
- Generate a store object. If a connection string is provided, the store type will be updated according to the
96
- connection string. Currently, the supported store types are SQL and v3io-nosql.
97
-
98
- :param project: The name of the project.
99
- :param secret_provider: An optional secret provider to get the connection string secret.
100
- :param store_connection_string: Optional explicit connection string of the store.
101
-
102
- :return: `StoreBase` object. Using this object, the user can apply different operations such as write, update, get
103
- and delete a model endpoint record.
104
- :raise: `MLRunInvalidMMStoreTypeError` if the user didn't provide store connection
105
- or the provided store connection is invalid.
106
- """
107
-
108
- store_connection_string = (
109
- store_connection_string
110
- or mlrun.model_monitoring.helpers.get_connection_string(
111
- secret_provider=secret_provider
112
- )
113
- )
114
-
115
- if store_connection_string and (
116
- store_connection_string.startswith("mysql")
117
- or store_connection_string.startswith("sqlite")
118
- ):
119
- store_type = mlrun.common.schemas.model_monitoring.ModelEndpointTarget.SQL
120
- kwargs["store_connection_string"] = store_connection_string
121
- elif store_connection_string and store_connection_string == "v3io":
122
- store_type = (
123
- mlrun.common.schemas.model_monitoring.ModelEndpointTarget.V3IO_NOSQL
124
- )
125
- else:
126
- raise mlrun.errors.MLRunInvalidMMStoreTypeError(
127
- "You must provide a valid store connection by using "
128
- "set_model_monitoring_credentials API."
129
- )
130
- # Get store type value from ObjectStoreFactory enum class
131
- store_type_fact = ObjectStoreFactory(store_type)
132
-
133
- # Convert into store target object
134
- return store_type_fact.to_object_store(
135
- project=project, secret_provider=secret_provider, **kwargs
136
- )
@@ -1,15 +0,0 @@
1
- # Copyright 2024 Iguazio
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
-
15
- from .store import StoreBase