mlrun 1.3.1rc5__py3-none-any.whl → 1.4.0rc2__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 (67) hide show
  1. mlrun/__main__.py +57 -4
  2. mlrun/api/api/endpoints/marketplace.py +57 -4
  3. mlrun/api/api/endpoints/runs.py +2 -0
  4. mlrun/api/api/utils.py +102 -0
  5. mlrun/api/crud/__init__.py +1 -0
  6. mlrun/api/crud/marketplace.py +133 -44
  7. mlrun/api/crud/notifications.py +80 -0
  8. mlrun/api/crud/runs.py +2 -0
  9. mlrun/api/crud/secrets.py +1 -0
  10. mlrun/api/db/base.py +32 -0
  11. mlrun/api/db/session.py +3 -11
  12. mlrun/api/db/sqldb/db.py +162 -1
  13. mlrun/api/db/sqldb/models/models_mysql.py +41 -0
  14. mlrun/api/db/sqldb/models/models_sqlite.py +35 -0
  15. mlrun/api/main.py +54 -1
  16. mlrun/api/migrations_mysql/versions/c905d15bd91d_notifications.py +70 -0
  17. mlrun/api/migrations_sqlite/versions/959ae00528ad_notifications.py +61 -0
  18. mlrun/api/schemas/__init__.py +1 -0
  19. mlrun/api/schemas/marketplace.py +18 -8
  20. mlrun/api/{db/filedb/__init__.py → schemas/notification.py} +17 -1
  21. mlrun/api/utils/singletons/db.py +8 -14
  22. mlrun/builder.py +37 -26
  23. mlrun/config.py +12 -2
  24. mlrun/data_types/spark.py +9 -2
  25. mlrun/datastore/base.py +10 -1
  26. mlrun/datastore/sources.py +1 -1
  27. mlrun/db/__init__.py +6 -4
  28. mlrun/db/base.py +1 -2
  29. mlrun/db/httpdb.py +32 -6
  30. mlrun/db/nopdb.py +463 -0
  31. mlrun/db/sqldb.py +47 -7
  32. mlrun/execution.py +3 -0
  33. mlrun/feature_store/api.py +26 -12
  34. mlrun/feature_store/common.py +1 -1
  35. mlrun/feature_store/steps.py +110 -13
  36. mlrun/k8s_utils.py +10 -0
  37. mlrun/model.py +43 -0
  38. mlrun/projects/operations.py +5 -2
  39. mlrun/projects/pipelines.py +4 -3
  40. mlrun/projects/project.py +50 -10
  41. mlrun/run.py +5 -4
  42. mlrun/runtimes/__init__.py +2 -6
  43. mlrun/runtimes/base.py +82 -31
  44. mlrun/runtimes/function.py +22 -0
  45. mlrun/runtimes/kubejob.py +10 -8
  46. mlrun/runtimes/serving.py +1 -1
  47. mlrun/runtimes/sparkjob/__init__.py +0 -1
  48. mlrun/runtimes/sparkjob/abstract.py +0 -2
  49. mlrun/serving/states.py +2 -2
  50. mlrun/utils/helpers.py +1 -1
  51. mlrun/utils/notifications/notification/__init__.py +1 -1
  52. mlrun/utils/notifications/notification/base.py +14 -13
  53. mlrun/utils/notifications/notification/console.py +6 -3
  54. mlrun/utils/notifications/notification/git.py +19 -12
  55. mlrun/utils/notifications/notification/ipython.py +6 -3
  56. mlrun/utils/notifications/notification/slack.py +13 -12
  57. mlrun/utils/notifications/notification_pusher.py +185 -37
  58. mlrun/utils/version/version.json +2 -2
  59. {mlrun-1.3.1rc5.dist-info → mlrun-1.4.0rc2.dist-info}/METADATA +6 -2
  60. {mlrun-1.3.1rc5.dist-info → mlrun-1.4.0rc2.dist-info}/RECORD +64 -63
  61. mlrun/api/db/filedb/db.py +0 -518
  62. mlrun/db/filedb.py +0 -899
  63. mlrun/runtimes/sparkjob/spark2job.py +0 -59
  64. {mlrun-1.3.1rc5.dist-info → mlrun-1.4.0rc2.dist-info}/LICENSE +0 -0
  65. {mlrun-1.3.1rc5.dist-info → mlrun-1.4.0rc2.dist-info}/WHEEL +0 -0
  66. {mlrun-1.3.1rc5.dist-info → mlrun-1.4.0rc2.dist-info}/entry_points.txt +0 -0
  67. {mlrun-1.3.1rc5.dist-info → mlrun-1.4.0rc2.dist-info}/top_level.txt +0 -0
@@ -13,20 +13,30 @@
13
13
  # limitations under the License.
14
14
 
15
15
  import ast
16
+ import asyncio
17
+ import datetime
16
18
  import os
17
19
  import typing
18
20
 
21
+ from fastapi.concurrency import run_in_threadpool
22
+
23
+ import mlrun.api.db.base
24
+ import mlrun.api.db.session
25
+ import mlrun.api.schemas
26
+ import mlrun.api.utils.singletons.k8s
27
+ import mlrun.config
19
28
  import mlrun.lists
20
29
  import mlrun.model
21
30
  import mlrun.utils.helpers
31
+ from mlrun.utils import logger
22
32
 
23
- from .notification import NotificationBase, NotificationSeverity, NotificationTypes
33
+ from .notification import NotificationBase, NotificationTypes
24
34
 
25
35
 
26
36
  class NotificationPusher(object):
27
37
 
28
38
  messages = {
29
- "success": "Run completed",
39
+ "completed": "Run completed",
30
40
  "error": "Run failed",
31
41
  }
32
42
 
@@ -36,55 +46,163 @@ class NotificationPusher(object):
36
46
  self._notifications = {}
37
47
 
38
48
  for run in self._runs:
39
- for notification_config in run.get("spec", {}).get("notifications", []):
40
- if self._should_notify(run, notification_config):
41
- self._notification_data.append((run, notification_config))
42
-
43
- def push(self):
44
- for notification_data in self._notification_data:
45
- self._send_notification(
46
- self._load_notification(notification_data[1]), *notification_data
47
- )
49
+ if isinstance(run, dict):
50
+ run = mlrun.model.RunObject.from_dict(run)
51
+
52
+ for notification in run.spec.notifications:
53
+ if self._should_notify(run, notification):
54
+ self._notification_data.append((run, notification))
55
+
56
+ def push(
57
+ self,
58
+ db: mlrun.api.db.base.DBInterface = None,
59
+ ):
60
+ """
61
+ Asynchronously push notifications for all runs in the initialized runs list (if they should be pushed).
62
+ When running from a sync environment, the notifications will be pushed asynchronously however the function will
63
+ wait for all notifications to be pushed before returning.
64
+ """
65
+
66
+ if not len(self._notification_data):
67
+ return
68
+
69
+ async def _push():
70
+ tasks = []
71
+ for notification_data in self._notification_data:
72
+ tasks.append(
73
+ self._push_notification(
74
+ self._load_notification(*notification_data),
75
+ notification_data[0],
76
+ notification_data[1],
77
+ db,
78
+ )
79
+ )
80
+ await asyncio.gather(*tasks)
81
+
82
+ logger.debug(
83
+ "Pushing notifications", notifications_amount=len(self._notification_data)
84
+ )
85
+ main_event_loop = asyncio.get_event_loop()
86
+ if main_event_loop.is_running():
87
+
88
+ # If running from the api or from jupyter notebook, we are already in an event loop.
89
+ # We add the async push function to the loop and run it.
90
+ asyncio.run_coroutine_threadsafe(_push(), main_event_loop)
91
+ else:
92
+
93
+ # If running mlrun SDK locally (not from jupyter), there isn't necessarily an event loop.
94
+ # We create a new event loop and run the async push function in it.
95
+ main_event_loop.run_until_complete(_push())
48
96
 
49
97
  @staticmethod
50
98
  def _should_notify(
51
- run: typing.Union[mlrun.model.RunObject, dict], notification_config: dict
99
+ run: mlrun.model.RunObject,
100
+ notification: mlrun.model.Notification,
52
101
  ) -> bool:
53
- when_states = notification_config.get("when", [])
54
- condition = notification_config.get("condition", "")
55
- run_state = run.get("status", {}).get("state", "")
102
+ when_states = notification.when
103
+ condition = notification.condition
104
+ run_state = run.state()
105
+
106
+ # if the notification isn't pending, don't push it
107
+ if (
108
+ notification.status
109
+ and notification.status != mlrun.api.schemas.NotificationStatus.PENDING
110
+ ):
111
+ return False
56
112
 
57
113
  # if at least one condition is met, notify
58
114
  for when_state in when_states:
59
115
  if (
60
- when_state == "success"
61
- and run_state == "success"
116
+ when_state == run_state == "completed"
62
117
  and (not condition or ast.literal_eval(condition))
63
- ) or (when_state == "failure" and run_state == "error"):
118
+ ) or when_state == run_state == "error":
64
119
  return True
65
120
 
66
121
  return False
67
122
 
68
- def _load_notification(self, notification_config: dict) -> NotificationBase:
69
- params = notification_config.get("params", {})
123
+ def _load_notification(
124
+ self, run: mlrun.model.RunObject, notification: mlrun.model.Notification
125
+ ) -> NotificationBase:
126
+ name = notification.name
70
127
  notification_type = NotificationTypes(
71
- notification_config.get("type", "console")
128
+ notification.kind or NotificationTypes.console
72
129
  )
73
- if notification_type not in self._notifications:
130
+ notification_key = f"{run.metadata.uid}-{name or notification_type}"
131
+ if notification_key not in self._notifications:
74
132
  self._notifications[
75
- notification_type
76
- ] = notification_type.get_notification()(params)
133
+ notification_key
134
+ ] = notification_type.get_notification()(name, notification.params)
77
135
  else:
78
- self._notifications[notification_type].load_notification(params)
136
+ self._notifications[notification_key].load_notification(notification.params)
79
137
 
80
- return self._notifications[notification_type]
138
+ logger.debug(
139
+ "Loaded notification", notification=self._notifications[notification_key]
140
+ )
141
+ return self._notifications[notification_key]
142
+
143
+ async def _push_notification(
144
+ self,
145
+ notification: NotificationBase,
146
+ run: mlrun.model.RunObject,
147
+ notification_object: mlrun.model.Notification,
148
+ db: mlrun.api.db.base.DBInterface,
149
+ ):
150
+ message = self.messages.get(run.state(), "")
151
+ severity = (
152
+ notification_object.severity or mlrun.api.schemas.NotificationSeverity.INFO
153
+ )
154
+ logger.debug(
155
+ "Pushing notification",
156
+ notification=notification_object.to_dict(),
157
+ run_uid=run.metadata.uid,
158
+ )
159
+ try:
160
+ if asyncio.iscoroutinefunction(notification.push):
161
+ await notification.push(message, severity, [run.to_dict()])
162
+ else:
163
+ notification.push(message, severity, [run.to_dict()])
164
+
165
+ if mlrun.config.is_running_as_api():
166
+ await self._update_notification_status(
167
+ db,
168
+ run.metadata.uid,
169
+ run.metadata.project,
170
+ notification_object,
171
+ status=mlrun.api.schemas.NotificationStatus.SENT,
172
+ sent_time=datetime.datetime.now(tz=datetime.timezone.utc),
173
+ )
174
+ except Exception as exc:
175
+ if mlrun.config.is_running_as_api():
176
+ await self._update_notification_status(
177
+ db,
178
+ run.metadata.uid,
179
+ run.metadata.project,
180
+ notification_object,
181
+ status=mlrun.api.schemas.NotificationStatus.ERROR,
182
+ )
183
+ raise exc
81
184
 
82
- def _send_notification(
83
- self, notification: NotificationBase, run: dict, notification_config: dict
185
+ @staticmethod
186
+ async def _update_notification_status(
187
+ db: mlrun.api.db.base.DBInterface,
188
+ run_uid: str,
189
+ project: str,
190
+ notification: mlrun.model.Notification,
191
+ status: str = None,
192
+ sent_time: datetime.datetime = None,
84
193
  ):
85
- message = self.messages.get(run.get("status", {}).get("state", ""), "")
86
- severity = notification_config.get("severity", NotificationSeverity.INFO)
87
- notification.send(message, severity, [run])
194
+ db_session = mlrun.api.db.session.create_session()
195
+ notification.status = status or notification.status
196
+ notification.sent_time = sent_time or notification.sent_time
197
+
198
+ # store directly in db, no need to use crud as the secrets are already loaded
199
+ await run_in_threadpool(
200
+ db.store_run_notifications,
201
+ db_session,
202
+ [notification],
203
+ run_uid,
204
+ project,
205
+ )
88
206
 
89
207
 
90
208
  class CustomNotificationPusher(object):
@@ -97,13 +215,43 @@ class CustomNotificationPusher(object):
97
215
  def push(
98
216
  self,
99
217
  message: str,
100
- severity: typing.Union[NotificationSeverity, str] = NotificationSeverity.INFO,
218
+ severity: typing.Union[
219
+ mlrun.api.schemas.NotificationSeverity, str
220
+ ] = mlrun.api.schemas.NotificationSeverity.INFO,
221
+ runs: typing.Union[mlrun.lists.RunList, list] = None,
222
+ custom_html: str = None,
223
+ ):
224
+ async def _push():
225
+ tasks = []
226
+ for notification_type, notification in self._notifications.items():
227
+ if self.should_push_notification(notification_type):
228
+ tasks.append(
229
+ self._push_notification(
230
+ notification, message, severity, runs, custom_html
231
+ )
232
+ )
233
+ await asyncio.gather(*tasks)
234
+
235
+ main_event_loop = asyncio.get_event_loop()
236
+ if main_event_loop.is_running():
237
+ asyncio.run_coroutine_threadsafe(_push(), main_event_loop)
238
+ else:
239
+ main_event_loop.run_until_complete(_push())
240
+
241
+ @staticmethod
242
+ async def _push_notification(
243
+ notification: NotificationBase,
244
+ message: str,
245
+ severity: typing.Union[
246
+ mlrun.api.schemas.NotificationSeverity, str
247
+ ] = mlrun.api.schemas.NotificationSeverity.INFO,
101
248
  runs: typing.Union[mlrun.lists.RunList, list] = None,
102
249
  custom_html: str = None,
103
250
  ):
104
- for notification_type, notification in self._notifications.items():
105
- if self.should_send_notification(notification_type):
106
- notification.send(message, severity, runs, custom_html)
251
+ if asyncio.iscoroutinefunction(notification.push):
252
+ await notification.push(message, severity, runs, custom_html)
253
+ else:
254
+ notification.push(message, severity, runs, custom_html)
107
255
 
108
256
  def add_notification(
109
257
  self, notification_type: str, params: typing.Dict[str, str] = None
@@ -115,12 +263,12 @@ class CustomNotificationPusher(object):
115
263
  notification_type
116
264
  ).get_notification()(params)
117
265
 
118
- def should_send_notification(self, notification_type):
266
+ def should_push_notification(self, notification_type):
119
267
  notification = self._notifications.get(notification_type)
120
268
  if not notification or not notification.active:
121
269
  return False
122
270
 
123
- # get notification's inverse dependencies, and only send the notification if
271
+ # get notification's inverse dependencies, and only push the notification if
124
272
  # none of its inverse dependencies are being sent
125
273
  inverse_dependencies = NotificationTypes(
126
274
  notification_type
@@ -1,4 +1,4 @@
1
1
  {
2
- "git_commit": "b3de4b32ad5396aa395e94a0f46cb992619e9b28",
3
- "version": "1.3.1-rc5"
2
+ "git_commit": "11fee9f04e66041b9883f73dbdc61be0b4c6498b",
3
+ "version": "1.4.0-rc2"
4
4
  }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mlrun
3
- Version: 1.3.1rc5
3
+ Version: 1.4.0rc2
4
4
  Summary: Tracking and config of machine learning runs
5
5
  Home-page: https://github.com/mlrun/mlrun
6
6
  Author: Yaron Haviv
@@ -34,7 +34,7 @@ Requires-Dist: ipython (<9.0,>=7.0)
34
34
  Requires-Dist: nuclio-jupyter (~=0.9.9)
35
35
  Requires-Dist: numpy (<1.23.0,>=1.16.5)
36
36
  Requires-Dist: pandas (<1.5.0,~=1.2)
37
- Requires-Dist: pyarrow (<11,>=10)
37
+ Requires-Dist: pyarrow (<12,>=10.0)
38
38
  Requires-Dist: pyyaml (~=5.1)
39
39
  Requires-Dist: requests (~=2.22)
40
40
  Requires-Dist: sqlalchemy (~=1.4)
@@ -63,6 +63,7 @@ Requires-Dist: deprecated (~=1.2)
63
63
  Provides-Extra: all
64
64
  Requires-Dist: adlfs (~=2021.8.1) ; extra == 'all'
65
65
  Requires-Dist: aiobotocore (~=1.4.0) ; extra == 'all'
66
+ Requires-Dist: avro (~=1.11) ; extra == 'all'
66
67
  Requires-Dist: azure-core (~=1.24) ; extra == 'all'
67
68
  Requires-Dist: azure-identity (~=1.5) ; extra == 'all'
68
69
  Requires-Dist: azure-keyvault-secrets (~=4.2) ; extra == 'all'
@@ -102,6 +103,7 @@ Requires-Dist: bokeh (>=2.4.2,~=2.4) ; extra == 'bokeh'
102
103
  Provides-Extra: complete
103
104
  Requires-Dist: adlfs (~=2021.8.1) ; extra == 'complete'
104
105
  Requires-Dist: aiobotocore (~=1.4.0) ; extra == 'complete'
106
+ Requires-Dist: avro (~=1.11) ; extra == 'complete'
105
107
  Requires-Dist: azure-core (~=1.24) ; extra == 'complete'
106
108
  Requires-Dist: azure-identity (~=1.5) ; extra == 'complete'
107
109
  Requires-Dist: azure-keyvault-secrets (~=4.2) ; extra == 'complete'
@@ -121,6 +123,7 @@ Provides-Extra: complete-api
121
123
  Requires-Dist: adlfs (~=2021.8.1) ; extra == 'complete-api'
122
124
  Requires-Dist: aiobotocore (~=1.4.0) ; extra == 'complete-api'
123
125
  Requires-Dist: apscheduler (~=3.6) ; extra == 'complete-api'
126
+ Requires-Dist: avro (~=1.11) ; extra == 'complete-api'
124
127
  Requires-Dist: azure-core (~=1.24) ; extra == 'complete-api'
125
128
  Requires-Dist: azure-identity (~=1.5) ; extra == 'complete-api'
126
129
  Requires-Dist: azure-keyvault-secrets (~=4.2) ; extra == 'complete-api'
@@ -152,6 +155,7 @@ Provides-Extra: graphviz
152
155
  Requires-Dist: graphviz (~=0.20.0) ; extra == 'graphviz'
153
156
  Provides-Extra: kafka
154
157
  Requires-Dist: kafka-python (~=2.0) ; extra == 'kafka'
158
+ Requires-Dist: avro (~=1.11) ; extra == 'kafka'
155
159
  Provides-Extra: plotly
156
160
  Requires-Dist: plotly (<5.12.0,~=5.4) ; extra == 'plotly'
157
161
  Provides-Extra: redis
@@ -1,27 +1,27 @@
1
1
  mlrun/__init__.py,sha256=cCTbgyTFsXvEdaq1Cvwz8s8FE75YGIJKX58um-fnfFs,8727
2
- mlrun/__main__.py,sha256=7rP5R0xv1YziN-yfFqy9IJM1Z16vehUNPVz_PUU0zqQ,47778
3
- mlrun/builder.py,sha256=4PnePQzFy69RHgzFksdRNskExrjnmGCGPLXMHVPUdwM,24314
4
- mlrun/config.py,sha256=UbxmDWCDpIMZuPUANsmF0xl3_Ihey9s6K4gVn_SYfcM,49992
2
+ mlrun/__main__.py,sha256=7AXWZ6AYLQ1xGIHgrSnPORYU8ZERr3pHGsRdJpCxpHA,49967
3
+ mlrun/builder.py,sha256=5YKq67e3nHlVtxW0Z9f6j86qnrhclHEvy8OxmlDVyJ4,24965
4
+ mlrun/config.py,sha256=83S9K8pNvlIknMtpTNaVW0LGbFJ37qLtrF4CJHi6dtg,50570
5
5
  mlrun/errors.py,sha256=XEb1pxwy5Lzr9q0VT4z_SjP74jy37HFSmdd2hddWgvY,6780
6
- mlrun/execution.py,sha256=jL7GuRPa4ZHxroW7kGLtBFeiOzDQoPv3bHZ2BGGSaUo,38928
6
+ mlrun/execution.py,sha256=RMuw1D78GOWxDk3aQfFtFRZZ5maM4T7BiXaApoQA_6E,39096
7
7
  mlrun/features.py,sha256=pDUvV6HlkxZnUwW3lg7oq3vBwdcJQBprvdyGPNv57X8,15624
8
- mlrun/k8s_utils.py,sha256=5Ly-7Pgis6W1dHL1fOHSYkLcWEqZLdfGuDgDK-bsmIM,31384
8
+ mlrun/k8s_utils.py,sha256=fGObRopN5-7iS1TzIUzMVggN5-yb5wieLTDdesbhm-8,31688
9
9
  mlrun/kfpops.py,sha256=fCq9kqsIO5six8AmHkiRLngyDclRymd7V6U5YXnX_ek,29645
10
10
  mlrun/lists.py,sha256=yOKwpS71Fua08sV825Anth8aaR9H5bHZyV544YbnXj4,8360
11
- mlrun/model.py,sha256=hb7Zwbl9fXp6BAmYt-VBHZRMzhp3Ql8vKzHHqWgsShI,52194
11
+ mlrun/model.py,sha256=kxctSqX1Uqpy_YFd0kzMPppo5PamiM5o0sSd1JnADgk,53402
12
12
  mlrun/render.py,sha256=983QAYawKTFlwXLpUwGC1gWEjUQUFxl1lo8bPQuXIA0,11828
13
- mlrun/run.py,sha256=AoVyOqBTm1Hm3uIlSEkh_cqv0RuGsUFfBKpn085-w6I,64321
13
+ mlrun/run.py,sha256=ccokIwQ1yodQxVBieNl3x9GxDx-Ztsi3O6m0Lh9KCYs,64451
14
14
  mlrun/secrets.py,sha256=yboWaNO33RCXmopLL2bGCkDUbHuwJ7IgJaFv1lkoN_I,7731
15
15
  mlrun/api/__init__.py,sha256=B-yvMk7vTs3QqtlPkM4pnZk_B4QKTGnfNhYr2n4Z30M,571
16
16
  mlrun/api/alembic.ini,sha256=oeSJRHwBbF3c3-N_RJilcZD-diq3F-oPv21gDIkrZGs,2105
17
17
  mlrun/api/constants.py,sha256=fyTQXJe4sx4GK8vZxklivgJgaSyOftk_NezGKA1J-mo,685
18
18
  mlrun/api/initial_data.py,sha256=Zj9Oan9Qeg45AOv8Dfg3Gvsymuz5cFR7zgLskuxUTFs,23530
19
- mlrun/api/main.py,sha256=PKT5kdQTSZVKl8-miQwl--V0rc2HPCkuk_Zpn_EVqQM,24019
19
+ mlrun/api/main.py,sha256=1VtkWdILYXSY32i8DjO1Ost7_DrQN1tLO0CLTP9NWbo,26180
20
20
  mlrun/api/middlewares.py,sha256=VTW5VV7AGOigXf-ru2V3XSZzw_bMBr8j0uH2aMIGGfk,5235
21
21
  mlrun/api/api/__init__.py,sha256=B-yvMk7vTs3QqtlPkM4pnZk_B4QKTGnfNhYr2n4Z30M,571
22
22
  mlrun/api/api/api.py,sha256=suDQI8HL_zjtqaY7fBdm49SP73zJN2imdBiOh1hA4fQ,4267
23
23
  mlrun/api/api/deps.py,sha256=KTllUn0OHT-gGfnWPcz47QQwiHtxeHZBLEWMMbYWPBc,3143
24
- mlrun/api/api/utils.py,sha256=R2fVBlahNevk5IshtohBqibmS3Rnc4Ph3xViUoEKNfU,32788
24
+ mlrun/api/api/utils.py,sha256=ia6xAEdGHwL2Z6t8jhI0_qFX4BeHz-qFxlnoe6vqR5s,36224
25
25
  mlrun/api/api/endpoints/__init__.py,sha256=B-yvMk7vTs3QqtlPkM4pnZk_B4QKTGnfNhYr2n4Z30M,571
26
26
  mlrun/api/api/endpoints/artifacts.py,sha256=oGy-key8BmAUNWvCiOqAcatjV0pVd_0atcn8ZGftgjM,9458
27
27
  mlrun/api/api/endpoints/auth.py,sha256=8-vv61tPX_RFabJPPyXAWbSb8i3apcpbqJSs0GXINYM,1190
@@ -35,12 +35,12 @@ mlrun/api/api/endpoints/functions.py,sha256=dOTy57CyTSqFI7mOB7utl8JUG7pR9idQn18h
35
35
  mlrun/api/api/endpoints/grafana_proxy.py,sha256=NFgIpoxIXAmI_3bKXTNvC0Z0wEu7WcqsBH3zqfhbyZo,5798
36
36
  mlrun/api/api/endpoints/healthz.py,sha256=3UHtyOFBgUooSmpWGiErav3_yJh1ZrgGrtPEmBZGWrM,1335
37
37
  mlrun/api/api/endpoints/logs.py,sha256=1a73ZwNNMDZaaYRqFbL3XZ6OrK3dKCpQI7HC-QJxI78,2429
38
- mlrun/api/api/endpoints/marketplace.py,sha256=PXc5OftoSoILyHCgSgNdNBEh4JjR8PmcvTQ6uB3nYfo,8283
38
+ mlrun/api/api/endpoints/marketplace.py,sha256=FdgtlvewBVGJ6F5IFlffU6Q8eoVIgcxe82rjbnVRX34,10035
39
39
  mlrun/api/api/endpoints/model_endpoints.py,sha256=vlKqhQUJZISBWujGT3BQLWQD0aVyihrMcl8Fb-W8PXo,15724
40
40
  mlrun/api/api/endpoints/operations.py,sha256=Fxtp2jY3dlgzYG-2vm1AqNnpxQ-7WaJuibyKX569stg,3700
41
41
  mlrun/api/api/endpoints/pipelines.py,sha256=wV3ZvX7LPgb6bBsryXHXkwiiX_oxpK-Cwskj88W3KyE,9099
42
42
  mlrun/api/api/endpoints/projects.py,sha256=lFHvfDeeKdNIZ-DhmGKRSqQOuQuOWLu8a0uNay2tyDA,11392
43
- mlrun/api/api/endpoints/runs.py,sha256=2a_x6-IOLeQwhvLSH7dJOG3Xn-4aO2P4Vjt5T6J3cb8,8956
43
+ mlrun/api/api/endpoints/runs.py,sha256=WyMFtZKU79BhkYwcOyejXyK9D_YX7U7bc7fZwRBUxm0,9076
44
44
  mlrun/api/api/endpoints/runtime_resources.py,sha256=Eer8nrP8Hh0y-pXkYr0dOXL7wjw4leE9Q-cxOMdIw08,8988
45
45
  mlrun/api/api/endpoints/schedules.py,sha256=Yw3tZNnjfZBgwS-Rsx-i8i8dzi-UNsbfNNvja8eN41I,10579
46
46
  mlrun/api/api/endpoints/secrets.py,sha256=l6IzLPMEJr_e7wrTNxLQIn-x8LGBlxeV7diYSAD55t4,6057
@@ -49,36 +49,35 @@ mlrun/api/api/endpoints/tags.py,sha256=bnsWCKoOUnVHL42qqUzbXvs8gdmfT-8kcGwiT1svJ
49
49
  mlrun/api/api/endpoints/internal/__init__.py,sha256=Lq7QbwU5hFGCq6hzU28fA5t1soMesi7DVo99T21blU8,1203
50
50
  mlrun/api/api/endpoints/internal/config.py,sha256=kXnraXbXv029QZMMEjwvhsUWof69wTvFBLcRyB32JFc,1043
51
51
  mlrun/api/api/endpoints/internal/memory_reports.py,sha256=k9cA6NhvAPfA-CYRubpjSrhsHJ7Ig_wTFMIMTEZxS4E,1709
52
- mlrun/api/crud/__init__.py,sha256=WMo1AvY_XqJJQWd_9hgw0B35Rvnx50eN0uB4HRAms3E,1184
52
+ mlrun/api/crud/__init__.py,sha256=2ea5kCz3AGmRX2uRHCv2oRRIWX4LL0j7RPn8BVKjcTA,1225
53
53
  mlrun/api/crud/artifacts.py,sha256=p-CJZKokYwy2ej0K2vEp5EEy5xM-FD7ytSWMHBd7J9Y,5433
54
54
  mlrun/api/crud/client_spec.py,sha256=VapHAcFSKCmBq7AarJkpwoHns6fXLJ-VCEQcBuBczmU,7341
55
55
  mlrun/api/crud/clusterization_spec.py,sha256=wf9uiLb3DRwegDGlRu-dgfahoyp51bxtAuB8TEnklfc,1049
56
56
  mlrun/api/crud/feature_store.py,sha256=SAWhliY9UJAQbaJYKb7CmXTuVbovq3fDl-_5-RMxfxI,18449
57
57
  mlrun/api/crud/functions.py,sha256=pqCTL7rsHawfynV6DfqRrWKhnWxw1MNHJhLY_og6cJo,3550
58
58
  mlrun/api/crud/logs.py,sha256=r5JWMAtmxA9kIQ0RCi-DZG7njyh9GbmHL-2w_hu-r9M,9578
59
- mlrun/api/crud/marketplace.py,sha256=dDJG6puO_asotN8gRgkjwVXQwkLFR7MoTghAcb7TRY4,8180
59
+ mlrun/api/crud/marketplace.py,sha256=zS0rQexzKNA2Lhjfao2H_-O4fpzLqSD827x46E8qh8o,11769
60
+ mlrun/api/crud/notifications.py,sha256=aEIx2ByVQzHxdmjePiYXxzUpZA1yZ8YXhR-nvIbet3o,2751
60
61
  mlrun/api/crud/pipelines.py,sha256=aW0RDWAyzK0vnCzyuVLEHDsW-MY-Cy5RvvuqbUhh6ow,13982
61
62
  mlrun/api/crud/projects.py,sha256=uLLSMZD0Z8BLkm2naHdNyZK1XyF51IAGVqWN6ydI_9Y,13326
62
- mlrun/api/crud/runs.py,sha256=E_FP0tQcpBQbisVpDmGZ3Y-2Z0wzoQxkJ73V0ioNOZg,5931
63
+ mlrun/api/crud/runs.py,sha256=Vi6RshVl9RWYef8xPdPcpnx-Vw8SzSXanqlERrtXUpQ,6005
63
64
  mlrun/api/crud/runtime_resources.py,sha256=XJRxzrh0NKKBqQq-wXAXFTxWkEMqAX_t3buJsVYOfT8,5539
64
- mlrun/api/crud/secrets.py,sha256=_aIjtNOBI3fNM_2Tz0_W6UMM3gbMfapDFsBaQU7P_WU,19885
65
+ mlrun/api/crud/secrets.py,sha256=SvaOsSFfnk4OKGr-hXTv34XRoR7SOpdLbCxElgW9dVo,19921
65
66
  mlrun/api/crud/tags.py,sha256=TKi6u--McIdmcFEXNrbwgsX5wAaENil7FVwi8mnKqok,3265
66
67
  mlrun/api/crud/model_monitoring/__init__.py,sha256=CAW_Xhm94IVid0yos0tLQUd_UdCRYz-_2s_rAloZEZw,722
67
68
  mlrun/api/crud/model_monitoring/grafana.py,sha256=uyZOa7KsqCkDWdfcWnV8xg2vlrzmPOQX_rbQq2X9bZ0,14943
68
69
  mlrun/api/crud/model_monitoring/model_endpoints.py,sha256=VOpm83yvmgycy-pKzin3CcixgDVOFpitqJHE80RLICQ,40998
69
70
  mlrun/api/db/__init__.py,sha256=B-yvMk7vTs3QqtlPkM4pnZk_B4QKTGnfNhYr2n4Z30M,571
70
- mlrun/api/db/base.py,sha256=Kxj491ODRvO7X6sq5gl7oP1wPMPU38mbQPsgNYudTAQ,13684
71
+ mlrun/api/db/base.py,sha256=Cxseet80T_PPFxKA29vNGsMP7x1L3Y3FPU1LP38vTCw,14365
71
72
  mlrun/api/db/init_db.py,sha256=5WSrojwOh79O3guN_7IEi9wjqzKj3H74DU2xbGtrElk,870
72
- mlrun/api/db/session.py,sha256=g2-5rlAE9PENCro6KBMrsvk5IZPrfHdKgEjjcwtDMro,1226
73
- mlrun/api/db/filedb/__init__.py,sha256=B-yvMk7vTs3QqtlPkM4pnZk_B4QKTGnfNhYr2n4Z30M,571
74
- mlrun/api/db/filedb/db.py,sha256=iTehkcdD488diqx4oTng8AJcL2fsYKFJ61mdlMlhywg,14555
73
+ mlrun/api/db/session.py,sha256=_5DVL4YyGGFG9sbtHx_Bq2C1aHrZC5V8MS7TJfNeWIk,993
75
74
  mlrun/api/db/sqldb/__init__.py,sha256=B-yvMk7vTs3QqtlPkM4pnZk_B4QKTGnfNhYr2n4Z30M,571
76
- mlrun/api/db/sqldb/db.py,sha256=_i3NmUJcHm3p1NYqGzOavfrak8Vot69kI8A2nkR-IR4,136433
75
+ mlrun/api/db/sqldb/db.py,sha256=C4NUyVn5e1VR_N4sgfe8WPSD16P62zAsUY7t9jB9Lpg,142645
77
76
  mlrun/api/db/sqldb/helpers.py,sha256=j8VK-l_qZ5vLUjGkFK3D3fBgDgPmi-U8hU1MkMIAhC0,2340
78
77
  mlrun/api/db/sqldb/session.py,sha256=97QcZc7EOhypk3ZMl0F5k1ogsgK834S3SxCj3UNry-s,2542
79
78
  mlrun/api/db/sqldb/models/__init__.py,sha256=0cHZKMpzqkC6u3WGPEYE8zPcahY6KxBrK2pwkzTCCME,1063
80
- mlrun/api/db/sqldb/models/models_mysql.py,sha256=WOyZDnQRvvXPrPWqJoJ5x-HULSXPssVy3GPru6JAgIM,18687
81
- mlrun/api/db/sqldb/models/models_sqlite.py,sha256=8tHiSP5ruRjenfZzoDvjnp7kLD7wfEi3XhZx1iXPHd8,16908
79
+ mlrun/api/db/sqldb/models/models_mysql.py,sha256=ZRerU-oWljKFkzXZ7nTb22y-qWpX_RXxvDH_gFhcbK4,20624
80
+ mlrun/api/db/sqldb/models/models_sqlite.py,sha256=uMUkomR_YOa7d14g2XZcaIGtq1OlQ_fqkbOG9MbcVfE,18286
82
81
  mlrun/api/migrations_mysql/env.py,sha256=U5Fu1WLV5vggRYy4sa7d1ItJr1H3-T71BnkOw4ZjWIs,2906
83
82
  mlrun/api/migrations_mysql/versions/32bae1b0e29c_increase_timestamp_fields_precision.py,sha256=MF0DwcRcbyRXdWNeWieEWIu5zMpxZ5IQPmF__werbkU,4614
84
83
  mlrun/api/migrations_mysql/versions/4903aef6a91d_tag_foreign_key_and_cascades.py,sha256=BthqApYJLuzuHZEJfrOaERD8M-2FRGsZ3e5tRFvMk78,1936
@@ -87,6 +86,7 @@ mlrun/api/migrations_mysql/versions/88e656800d6a_add_requested_logs_column_and_i
87
86
  mlrun/api/migrations_mysql/versions/9d16de5f03a7_adding_data_versions_table.py,sha256=1U5dpO6k_SLNZ0MAd5AukDddcxp8eCUTEx-2o3b_U9k,1504
88
87
  mlrun/api/migrations_mysql/versions/b86f5b53f3d7_adding_name_and_updated_to_runs_table.py,sha256=lppZKpOBbGoyzP855Q8Y5hWfcqCzCjOlz-FefAqenUQ,1649
89
88
  mlrun/api/migrations_mysql/versions/c4af40b0bf61_init.py,sha256=CGh1ihmMJ4GNpDXNoiB9ksSe1P7PyrV3NqWTiq6GTIg,24057
89
+ mlrun/api/migrations_mysql/versions/c905d15bd91d_notifications.py,sha256=IU4QdjJrnqJK-fzf5SL3mtpXduTxieoog_HH9aahq3M,2457
90
90
  mlrun/api/migrations_mysql/versions/ee041e8fdaa0_adding_next_run_time_column_to_schedule_.py,sha256=18_SGHfgvNE6TcjsP2_bmqAjL3YI70B0J5-NojmxRr4,1351
91
91
  mlrun/api/migrations_sqlite/env.py,sha256=U5Fu1WLV5vggRYy4sa7d1ItJr1H3-T71BnkOw4ZjWIs,2906
92
92
  mlrun/api/migrations_sqlite/versions/11f8dd2dc9fe_init.py,sha256=Kp1VTDMqS72UMODn1GboBo-IwUEZ8IWuflxrBTbATj0,11473
@@ -96,6 +96,7 @@ mlrun/api/migrations_sqlite/versions/6401142f2d7c_adding_next_run_time_column_to
96
96
  mlrun/api/migrations_sqlite/versions/64d90a1a69bc_adding_background_tasks_table.py,sha256=pJqfbcEjG7I8yacspyFnbBZvVVpJ4mPLXc4VcJ8X1oQ,1767
97
97
  mlrun/api/migrations_sqlite/versions/803438ecd005_add_requested_logs_column_to_runs.py,sha256=3Q_PnbBjaD-04YfjH2MW4IUocOWVUfa-a1_Y-snzBHA,1360
98
98
  mlrun/api/migrations_sqlite/versions/863114f0c659_refactoring_feature_set.py,sha256=cNFtnxsL4tTnfZiEo3uhATcqmgU6aqh2jEf521G0jH8,1259
99
+ mlrun/api/migrations_sqlite/versions/959ae00528ad_notifications.py,sha256=Lth-_bXTG-8l-vUi_YxwfWdMVC6aJAKVHQnQ609GmsQ,2147
99
100
  mlrun/api/migrations_sqlite/versions/accf9fc83d38_adding_data_versions_table.py,sha256=Q7KfNsbnnPWhXUnLMmbGFZIaItOS_Hvr2bY_td-K3vw,1482
100
101
  mlrun/api/migrations_sqlite/versions/b68e8e897a28_schedule_labels.py,sha256=1indyv5TlsDK4haAC9xxNznRjXgqjNIjgfFOakgBpNo,1892
101
102
  mlrun/api/migrations_sqlite/versions/bcd0c1f9720c_adding_project_labels.py,sha256=JyUhI_H02D0fkBDZr3Hv4-KAiHEOL62z4-YE25ik5Rs,1882
@@ -106,7 +107,7 @@ mlrun/api/migrations_sqlite/versions/e1dd5983c06b_schedule_concurrency_limit.py,
106
107
  mlrun/api/migrations_sqlite/versions/e5594ed3ab53_adding_name_and_updated_to_runs_table.py,sha256=lQ0lPq6xZD59iupkbAo0wCV-otE0G9lmjEpqIBZEguA,1831
107
108
  mlrun/api/migrations_sqlite/versions/f4249b4ba6fa_adding_feature_vectors.py,sha256=AWkrtG6jWOMJHyLqR8jrmbp95Fk9qB6qhjjYLb1mezo,3936
108
109
  mlrun/api/migrations_sqlite/versions/f7b5a1a03629_adding_feature_labels.py,sha256=KrIm5pHwHlJr5e3DdtMcBiEjgbopOniWzDi9T1XTSHQ,2588
109
- mlrun/api/schemas/__init__.py,sha256=9qJuHKGc6nLZzUNuKZImwqMRXQSTwfrT_gB6l-SAhNQ,3962
110
+ mlrun/api/schemas/__init__.py,sha256=XwgaWHdXLIASbqnw7YPEfW43AO6PmHxJbzXaBZY7VzA,4029
110
111
  mlrun/api/schemas/artifact.py,sha256=gpAdViV_3TQ-W2KPPNvdOArEfQZdd427YUW9bml9vE4,2070
111
112
  mlrun/api/schemas/auth.py,sha256=9MnT6Ckuy8_kAI7edsAqwN9-wp3noh5xZlL40utYXqA,5311
112
113
  mlrun/api/schemas/background_task.py,sha256=RayGDZ3_KYCYVx-n7CgMNDQJQp78ajrb5unQW6wFzhU,1563
@@ -118,9 +119,10 @@ mlrun/api/schemas/frontend_spec.py,sha256=-kYKekdyrUAx-dOhhyvhh54y-KWV3bGfFAxqJQ
118
119
  mlrun/api/schemas/function.py,sha256=5Iy0aZYwXw9_vLSPBUwhuD_YMuQn95_11oX7DSTFIeo,3991
119
120
  mlrun/api/schemas/http.py,sha256=q9l7LBK1pIWlax2gHK9rPQfeugHjBMUrLDWAxdGxUII,715
120
121
  mlrun/api/schemas/k8s.py,sha256=R6Ufggp8MqA0lQ68AMsh_qiRcbsovaWKJg1a40XzcZg,1405
121
- mlrun/api/schemas/marketplace.py,sha256=BD0Gb_VFxcvJS7_6gQqxb524TL2ZPn9xwbUhwvleoTo,4258
122
+ mlrun/api/schemas/marketplace.py,sha256=fpvHrAkmtpJEu4-6UNtnvSQz_Rrb87en5VBMvLZFPok,4592
122
123
  mlrun/api/schemas/memory_reports.py,sha256=SlNJ-uya5RywEysm_IZMwF1t4j-zYsjOj8oPYwLRO08,920
123
124
  mlrun/api/schemas/model_endpoints.py,sha256=j1U0bqYSv_ytjsQ7ZM0qEk4ebUdk-1Yks3h9dNEJijo,12343
125
+ mlrun/api/schemas/notification.py,sha256=sCVgEsQUWANr4zxXtvTjS2lve8eaTKv3me7dy5zLoDI,894
124
126
  mlrun/api/schemas/object.py,sha256=bLMt30Kgch6_4Q_KML68NerU_HuTqW8K-4LUc8KfyVc,1965
125
127
  mlrun/api/schemas/pipeline.py,sha256=qT-4NW2vOXmLGxwbGhSPbmDRoeoOhCA2I-j52pop4dU,1194
126
128
  mlrun/api/schemas/project.py,sha256=EhGRhSa_Pzzy8cxl_vtu93v2bydX9VHo12rM5rCSeOY,3935
@@ -164,7 +166,7 @@ mlrun/api/utils/projects/remotes/leader.py,sha256=D0V41b5rcr-w4AgEOCp0THG7ve2v4B
164
166
  mlrun/api/utils/projects/remotes/nop_follower.py,sha256=lMnq7uZcNbNc4A3ghhTdYzJjSo6V3sYnyqnFTbzpbP0,4601
165
167
  mlrun/api/utils/projects/remotes/nop_leader.py,sha256=0sLDBZcGtacQwygS1p7GD--EGFLFWohOGFyXmIiy5x0,3801
166
168
  mlrun/api/utils/singletons/__init__.py,sha256=B-yvMk7vTs3QqtlPkM4pnZk_B4QKTGnfNhYr2n4Z30M,571
167
- mlrun/api/utils/singletons/db.py,sha256=4jzYXBZYHGjEARXCbHFwIcvlqW-05efUZVvrsnXiLf8,1439
169
+ mlrun/api/utils/singletons/db.py,sha256=y-v3JdLIHb_GtPvdzKH137jsflTav5TY9CafsSXfkN8,1202
168
170
  mlrun/api/utils/singletons/k8s.py,sha256=fxQuohr-iIGKQEAR6V5iZ3dka0438Tfm0xq_j2D5OGo,694
169
171
  mlrun/api/utils/singletons/logs_dir.py,sha256=zCALZ1N8IylkfvATfsbWfBtEPvWKl2AEQ2-QF-J0VWs,840
170
172
  mlrun/api/utils/singletons/project_member.py,sha256=1xlvJjbY-HvQuUV5rsQg9rMt-Y9MKU77Az5f98v-D28,1279
@@ -178,17 +180,17 @@ mlrun/artifacts/plots.py,sha256=0Jq5OgDB1srtUlcISF696E_q3S_D-mqeMe6Wyn1S6ZQ,1538
178
180
  mlrun/data_types/__init__.py,sha256=hBd2-QsTqesw3HUDoIUaUtCR1mWEcRc4V7Z1V8lNP0s,1087
179
181
  mlrun/data_types/data_types.py,sha256=xjsnUw144Lbkg4JqYLYym8qQpucYQUjphxay_BIc7VA,4647
180
182
  mlrun/data_types/infer.py,sha256=ErGpXigp8bG6hkPJfbJt8cJZxsZvj-bK0dLSiTlUYzk,5813
181
- mlrun/data_types/spark.py,sha256=f7ila08Hnckxs-RjhzubRbg2_ZzyNpvCV_Vrgak7yUM,9118
183
+ mlrun/data_types/spark.py,sha256=BVM_FeWh1mKYLu6QILYfZRCOGefQzRJ2t0LeHo-pqwA,9426
182
184
  mlrun/datastore/__init__.py,sha256=lEcQKc3_Q2dfK6CTg2hwlTH3IoKQg-xE0WeMOanmxfo,3300
183
185
  mlrun/datastore/azure_blob.py,sha256=XFBpXZfwMKvv0rrYVP2J6RDqziNPHW6KqCbsY-VLzto,6946
184
- mlrun/datastore/base.py,sha256=5njgvevYPBEAAKJ0AFAh-fzebietmifi4sNuFYWAxa0,17304
186
+ mlrun/datastore/base.py,sha256=5jODaKrJHSeCFQFHVBeREj3k9LaDLgyh5kW20-0ePGw,17575
185
187
  mlrun/datastore/datastore.py,sha256=l6CfmIYn7rdPQyRZ8kZu45cfyDZcDXDH5CwLKvsFlI8,7995
186
188
  mlrun/datastore/filestore.py,sha256=v9-BTJMgamGN_neoXNkIbNNr56UpgOewMEX70P8MTbc,3791
187
189
  mlrun/datastore/google_cloud_storage.py,sha256=9dtZt7Opytrra45urj6ObYa1fxf7UIOHXSoog4G9l7I,5114
188
190
  mlrun/datastore/inmem.py,sha256=o6Svv12k5PxJNT24nMgV9FBYEPCzD3OQzuuvU6OeCYY,2627
189
191
  mlrun/datastore/redis.py,sha256=pywWgjGJ51pmvKuwX1MI3ILWqh6WtgDs9igOQAhmIhc,4873
190
192
  mlrun/datastore/s3.py,sha256=fn1Yg5Rs33ugHlwTKvBfu_jMKqkSZWgHNw0ocQ5nO7A,7035
191
- mlrun/datastore/sources.py,sha256=89ckC7p5wmLdKCtZjSdWog6On97k8-JfhsUPKnRsucE,34025
193
+ mlrun/datastore/sources.py,sha256=HqcD7cmI5tL5vsIA31g6lQ9qKv-P_QFN9V5NiNUowxc,34023
192
194
  mlrun/datastore/spark_udf.py,sha256=LFICcRzj7Yx03ttgQZImodEXjOZVvkcQd0OKwHuMLCg,1402
193
195
  mlrun/datastore/store_resources.py,sha256=u60_0LGXbagkG2UIm2o2pntWioF4kPu7FLMd0tlrR-8,6889
194
196
  mlrun/datastore/targets.py,sha256=3pA6jyHPzEHwfoMEDK3SObDAnLakpZU2AcJ30URO0KQ,62054
@@ -196,18 +198,18 @@ mlrun/datastore/utils.py,sha256=WNKBhgG2w9xAviyieGCB6hTnESEYzCwzgjcjz6uaWC4,1660
196
198
  mlrun/datastore/v3io.py,sha256=ArEYq78irv5bwlRwcLeVfFJvcwtXEamGsZ2I0sVt7Qg,8097
197
199
  mlrun/datastore/wasbfs/__init__.py,sha256=4CK7vZeJmC4Ak9cJjG07cGnk7jlkBlpCxw-ANfbBmzk,1343
198
200
  mlrun/datastore/wasbfs/fs.py,sha256=DEZgwrmQSPeR93MNlC9OCwuU9wvTSmIM534p5ccQzAE,6152
199
- mlrun/db/__init__.py,sha256=4_UTWWoVZU5B2D70NLTjYlMM7GVmLofnPRo5nGzT7XY,2810
200
- mlrun/db/base.py,sha256=FR1LnEP0Y4UlarcxM6wki4HeYnL0raccPkt_2tkEngU,14796
201
- mlrun/db/filedb.py,sha256=c-mpjJL_hcx2paRPcb4XdoXGyX6Dlv17tMNdsjULVJY,28411
202
- mlrun/db/httpdb.py,sha256=7pa5nwfwsptKakNBOFCWI7TQ-J_VoU3wv97KHzkC7b0,128262
203
- mlrun/db/sqldb.py,sha256=CdiF5D2t3oQLtphKNUzBY4DJSY-ThGSxS5ks108uxIQ,24292
201
+ mlrun/db/__init__.py,sha256=HA6ahbEFrRd5I81eJQ1xrHmUch6JOy3JeEKMf7KrOTM,2816
202
+ mlrun/db/base.py,sha256=eOWjqPEVq6UnffIw4s9XM_ESakcaVxLJHZzMUI2bOGU,14771
203
+ mlrun/db/httpdb.py,sha256=OOgn0D6lPM1vHuzOM2oVpVTIGwHXD4HIoLCYNOHH1G4,129128
204
+ mlrun/db/nopdb.py,sha256=J_7mlHfF9rSwGK1WL12_f4ciUcrRD3ZZ48AYisaNBmQ,12257
205
+ mlrun/db/sqldb.py,sha256=sk2sJZpAAootYnTCDsUPo5JvPgqVSC6PanSODFelnh8,25370
204
206
  mlrun/feature_store/__init__.py,sha256=guoak0hQTMoE4YsWwyoyso0CYE9NSPoP0eUal4crfVA,1501
205
- mlrun/feature_store/api.py,sha256=2HGosxeChN_OZD04t3OX3x6pop1wPgJKcRze2mRgMRg,43335
206
- mlrun/feature_store/common.py,sha256=bFpPyFgGFuh-SwTl5AMUGD1mJr3GhVsFcDu-yIP5HAc,12807
207
+ mlrun/feature_store/api.py,sha256=N2Vr1Z_hoQudXbYZ4_WmjjwdYbllfrAP5n1vodqs3_U,43761
208
+ mlrun/feature_store/common.py,sha256=vgBs-jQKffjwOLNnOzrNnaU3yhzQTu-eh3X4yCy2ExQ,12807
207
209
  mlrun/feature_store/feature_set.py,sha256=SE6qCVpNCn2aImrVXRWLaE3SmD17iF49SOHj9uzltt4,47059
208
210
  mlrun/feature_store/feature_vector.py,sha256=hLOyejUK-itqZRzbqOQEQcijJHsJlypuHD7ZWQ6B5aE,21937
209
211
  mlrun/feature_store/ingestion.py,sha256=7qcBfNkDZsD4IXRdRN4OCSPIlpQDVo3WaO8pnAAYY6Q,11813
210
- mlrun/feature_store/steps.py,sha256=sqwY_IsUUA0ATNQryExjjzRwqgRKN4Ez66OktXVSoFY,23868
212
+ mlrun/feature_store/steps.py,sha256=khDqxTusXDtBNfS7ESZh-QEsWu3_8FTR5ep_AY_Nvdo,28635
211
213
  mlrun/feature_store/retrieval/__init__.py,sha256=2b2WoPmH4TqcSSJ2OQYSjsDIcUe1KA5DnG7-wkrIayM,1232
212
214
  mlrun/feature_store/retrieval/base.py,sha256=38n5qY60V-wvn5vAVSd4qQlfkMMTMchX0c2TdZ8XqqE,25911
213
215
  mlrun/feature_store/retrieval/dask_merger.py,sha256=-xRgRPWUblu3KtVhEoL0YXEAcgkZrSUykDe31xnEzRI,4261
@@ -323,23 +325,23 @@ mlrun/platforms/__init__.py,sha256=NNh9MSxgjdi7QftO3DHp4axQnBeO5IjxD8oR13_jp3A,2
323
325
  mlrun/platforms/iguazio.py,sha256=gPOXoIRGcUCNmyMOddeHQT9DXW3835kB9AduZm_S0E0,23113
324
326
  mlrun/platforms/other.py,sha256=DwqbdbMNlkC2nEl1yJ0jF9WZJzjVu2IVPTC3bQ_W9Y0,11852
325
327
  mlrun/projects/__init__.py,sha256=dsXSDyqBhLi8OOfpdjLJpYOwC2fy_Q_Ki95Bk6gVSwc,1153
326
- mlrun/projects/operations.py,sha256=RZAyhsi3VuqvJjA3gwknuSpWhM1BfOFsZ-lGX9fIXCQ,17302
327
- mlrun/projects/pipelines.py,sha256=6iYVViKMUaEfqGIrVgQdl4UjtbDHe0nzlNXkLKte8fo,37882
328
- mlrun/projects/project.py,sha256=I0ll0JGWf13OfEeA2XgHgSBigLHHpbCCQtBBlegTsRM,103146
329
- mlrun/runtimes/__init__.py,sha256=1rNfzU3G76BxDkqvTVVrxlQkhLDSmlzv838_56OID7E,8973
330
- mlrun/runtimes/base.py,sha256=M5bJyOLqhEfSlkOD49SCpd_wH1bd4dMZle_03otYiG4,107571
328
+ mlrun/projects/operations.py,sha256=rxxpSemZIp4_V6IC2gm2MnUH84aB4Q_7n_Y_BcbjK_c,17485
329
+ mlrun/projects/pipelines.py,sha256=845_9berjVxxGB2OHkuGO2m5xRI-69_cp7Y2aqb5t9U,37899
330
+ mlrun/projects/project.py,sha256=BP0hZ0DoflSkUNwJpp2eRVZvZwYen0DZkgSyw7AvCF0,104532
331
+ mlrun/runtimes/__init__.py,sha256=NpPeD7XxDNxmeOqLSEmb7tUN59cYZlvw-DnJxla_peE,8773
332
+ mlrun/runtimes/base.py,sha256=qYMiFbf3mAifyCnNzrlRAWhCNuds8Eh2SMEly0vJHf8,109502
331
333
  mlrun/runtimes/constants.py,sha256=Os_6YpWE8WMhigm1h3RKvn9Uo4LXNaEbA2xNSEDDEao,6689
332
334
  mlrun/runtimes/daskjob.py,sha256=Hol5_kzTfJBP4WN6orPlGSlSRDPec1HcBD8id_jSdPA,30403
333
335
  mlrun/runtimes/funcdoc.py,sha256=U5Hrkeo7i7CUnZFQ5g7-CyWMvXiQXPGrfsNdgsDAraQ,9190
334
- mlrun/runtimes/function.py,sha256=vKTRqXtHAm__vVvaUJVozzFWqCdLFzulYr0Yy8_ZiKM,69047
336
+ mlrun/runtimes/function.py,sha256=Px4WakU2rYBDrgl8_GtoeABZIoCjn7HIKNYiv-YEDf4,70153
335
337
  mlrun/runtimes/function_reference.py,sha256=ikxeXeFPAn7PpfYR1DPBRFc9MSXXFM34uH5z6iRTz9M,4911
336
338
  mlrun/runtimes/generators.py,sha256=WvXzsfZZWqxLV1ncZ-lzFHZH2ITK6ICROgDv2vfQUs4,6530
337
- mlrun/runtimes/kubejob.py,sha256=nNxXZWKgLLgDdOSPaetZUngnSIp-yK9YUmBtCMUUQPU,17034
339
+ mlrun/runtimes/kubejob.py,sha256=1ct6ox1cyWYSDk73VQctAEssArOPWpgr5-7Wnvm2R5o,16895
338
340
  mlrun/runtimes/local.py,sha256=gsLkfQSbvt1DjDuO6_9tjZC4AxOGBAypR3qJQomPqIY,18005
339
341
  mlrun/runtimes/nuclio.py,sha256=ih2iwrJieeEom3iW0yU99QG4_u_Bdv7VWgs1CK4Q1P8,2885
340
342
  mlrun/runtimes/pod.py,sha256=sWtw5wkme43VrQVEYDiU67uSC4zBbSyzqXZFYwWYewM,60648
341
343
  mlrun/runtimes/remotesparkjob.py,sha256=Lp2EN32GQ1rY_34MEepdUzRTg-AP-OKyUM7xcy0Npb8,7695
342
- mlrun/runtimes/serving.py,sha256=ylR-qQJe-EvMrHc3C9g7oYRi3WVDSnTAvFXezus3dtE,29852
344
+ mlrun/runtimes/serving.py,sha256=bgqd97gJmfeLqtKKyPphWg6XeptIJACEZRnPpRx2Bt4,29852
343
345
  mlrun/runtimes/utils.py,sha256=r1FGNRETsZykdsy_DNpbyvqxsVcTetYRdHg-aelFt1k,21249
344
346
  mlrun/runtimes/mpijob/__init__.py,sha256=E0oiOsSYsRBBR0HV6e_EGaL_j2_dYEJwAcICnF8mOYU,790
345
347
  mlrun/runtimes/mpijob/abstract.py,sha256=_6CCDl4FXNpDzg1qTiEQGaqXyblx4gXYquAdKIG0fk0,14782
@@ -347,9 +349,8 @@ mlrun/runtimes/mpijob/v1.py,sha256=o-ZDw3O0HOzTMZ3lI3gMjGG0NYY0Ux3RqL0Kz9K3eV4,1
347
349
  mlrun/runtimes/mpijob/v1alpha1.py,sha256=4rMpJk1C_gL6QtOmEFcgcmaCkHcor9mdKvIL46fEKFw,8460
348
350
  mlrun/runtimes/package/__init__.py,sha256=EHFvxDWnRkXqjmdv9Mj3O-nCYAFLbRsNgX5zR0ElwAk,673
349
351
  mlrun/runtimes/package/context_handler.py,sha256=5br30fRHHhWQJgSWF2zqf0M8XOxVr27ZkOFWVDgf4f0,27044
350
- mlrun/runtimes/sparkjob/__init__.py,sha256=cDzK8jEJvNsSSujDmEt03h1Mnlj7MUvdCEUXDNAb1wc,788
351
- mlrun/runtimes/sparkjob/abstract.py,sha256=o5ykIx4GkwLU2QoQNQS9oNm5qebB17sOVblbh0ZDjG8,35976
352
- mlrun/runtimes/sparkjob/spark2job.py,sha256=StWv5hk99pHslkIpOzz5T-szCYN2kkC20ixEdlD3yIA,2033
352
+ mlrun/runtimes/sparkjob/__init__.py,sha256=7damn-nBbM0unppemEuVwZxCAGwXq7EzXECMJ9AaRPY,751
353
+ mlrun/runtimes/sparkjob/abstract.py,sha256=NyHcddXo97s2S3hjHmDUoEDaGd8AjmKltd5PJTVd3BA,35869
353
354
  mlrun/runtimes/sparkjob/spark3job.py,sha256=JzwinNIiPXBapSC-gAsbhf81oouxhx41U5oQwoNeYhM,28722
354
355
  mlrun/serving/__init__.py,sha256=FOIyvEwEOH6QuJovcDrrP5VSdLeKoqummSlfhNMvFXg,1078
355
356
  mlrun/serving/merger.py,sha256=oRX6gJ3LUVeCJcTpJ1nwh4d1tk5FrSZshkXcH-y-dd4,6116
@@ -357,7 +358,7 @@ mlrun/serving/remote.py,sha256=HJS9bz5_mUuaKGsNbqRKpo-eVHKbc1fIEOEsECPmnko,18038
357
358
  mlrun/serving/routers.py,sha256=avhQ5cgogYA_TP_6kgzC_U2VQW24-yWWUXJGP449-Qg,55209
358
359
  mlrun/serving/server.py,sha256=ePfYiefH3HkNag5qHDzDyoowaNNMbjJ9YKpPS9wX9Xw,19005
359
360
  mlrun/serving/serving_wrapper.py,sha256=ivoSlFNuC92plPHRfMzHr-hdN-jGqxneGiufJdgoxVc,836
360
- mlrun/serving/states.py,sha256=b5pNgAQWW5o60acjgp5fLI24FaFVUBfdYwO1HOCbJTw,53922
361
+ mlrun/serving/states.py,sha256=7ykG0Q66OQvRF32nQDQGwkmVYEyHczCvNrQxneVdUdM,53940
361
362
  mlrun/serving/utils.py,sha256=1fLfn07R4-RlUcdUgYYwUTFF47NozQmV9BnZVbu4-lU,3468
362
363
  mlrun/serving/v1_serving.py,sha256=UF6Ydgyo-DuHZ4DkrEdNMQl5oopVaZqm4EfBMBSvhDY,11814
363
364
  mlrun/serving/v2_serving.py,sha256=uIKQnTITJozqk6WrmJhO0hKfjCl8FLYc_IpCEYt5elA,21441
@@ -366,7 +367,7 @@ mlrun/utils/async_http.py,sha256=AvI4a9D0frI6XxHvqnQ4AzEXopezo90zZHvsOAJJt6g,103
366
367
  mlrun/utils/azure_vault.py,sha256=atz9fIu1vfgWAND1g6flRQDhrX-xBxZ_6MOWm34Onh0,3456
367
368
  mlrun/utils/clones.py,sha256=lKgQeibQ3xQ9LH5bZTZCoYCXoOx_2mYNGD5A-OOxwAQ,6245
368
369
  mlrun/utils/db.py,sha256=SqDrvIpGX_qHs0MNx_PWQNRcUhHaKLngoHFKLW3m5j0,1662
369
- mlrun/utils/helpers.py,sha256=V7mWXFogvtNGPIrx_D7AdT7wNixCpU1XVniAHHQXZkA,41426
370
+ mlrun/utils/helpers.py,sha256=r128kqmGIHpDaPnSlnryLUmlqN81x0sPyjFvJs_SJ9o,41425
370
371
  mlrun/utils/http.py,sha256=FVgdYV8Np3TKbqszEtXrlgwqNyjScTMLAjJhlsWLifo,7093
371
372
  mlrun/utils/logger.py,sha256=O4pH45kdz0cO-e4eKeRxbZUIRLGn2X0BJcjSY9cWB04,5637
372
373
  mlrun/utils/model_monitoring.py,sha256=wS6T9KgG-XCB21MNc6edNODEqFBBqzi5bUgSvPpKt-c,7875
@@ -375,19 +376,19 @@ mlrun/utils/singleton.py,sha256=kV9HhbzdmXo8gGKBPdbHWspRDutlkKX1ZEn96xs_LRs,883
375
376
  mlrun/utils/v3io_clients.py,sha256=ekxhjfcUnjV8cejQYTQUHnhYOKHA4KekIdSaywydTdM,1319
376
377
  mlrun/utils/vault.py,sha256=1zr_3gkXoerYID_4Z5vYkBO9FeCKd43Qm-XlmGBk_Ok,9957
377
378
  mlrun/utils/notifications/__init__.py,sha256=CgWLxslSqhTH-tExi_UR4AT-ipjkGUF4gwf9mKcNua8,990
378
- mlrun/utils/notifications/notification_pusher.py,sha256=C5PZYwHPHmwnbES1zTVGKz4_wbX7cR3pDl1PDqjM4hA,7093
379
- mlrun/utils/notifications/notification/__init__.py,sha256=s7owPm6jGxuN_JBU0nFac6iD6BuLhEbnhq-NMF1TLf8,1833
380
- mlrun/utils/notifications/notification/base.py,sha256=dkUmwB1-o1qpFs9MCIOkYAZYsODelkU2xm1iRM3wJlU,2067
381
- mlrun/utils/notifications/notification/console.py,sha256=QCdulv9i8nCCYAA8ftmf22vvZwBp3SRBCKiB0v1WBQY,1901
382
- mlrun/utils/notifications/notification/git.py,sha256=qI5Kd4U0PX8vfIVT_yjBIrToiJYzCS-XvY96Xck2Nkc,4510
383
- mlrun/utils/notifications/notification/ipython.py,sha256=jsM_tTV3ZzXv5NoQN2anfZJDTYsk95NDYVQnWFc9Zow,1951
384
- mlrun/utils/notifications/notification/slack.py,sha256=wt6RlqJu9QC99Ki-3HNYmizYTyAnIVimFQ7bf-fYX2E,3650
379
+ mlrun/utils/notifications/notification_pusher.py,sha256=WdkBRLg_upmcInkwYcjRJkuRexKMaZ_a_47d0yMfhSs,12297
380
+ mlrun/utils/notifications/notification/__init__.py,sha256=iNF31hiEkenkp1VmJ4keyjixS17-gZ0oGuWNO7tlnm4,1803
381
+ mlrun/utils/notifications/notification/base.py,sha256=0q419xnXHH6raEcpR8j1uvBUn1jHcJmIAfjFNt2XkKQ,2162
382
+ mlrun/utils/notifications/notification/console.py,sha256=nzucPPOj3jFceJKZSV4UJLT0mu8V1yVqGUl3MbnlwZc,1962
383
+ mlrun/utils/notifications/notification/git.py,sha256=iXjjBbJMWA741Z6aRNpGGg8FjZC78jzS2uR9UYM0yHY,4733
384
+ mlrun/utils/notifications/notification/ipython.py,sha256=zP1jAE39Dn6rrbQIxi4R4iDhMLFBQ_GJrEtMMj8G80E,2012
385
+ mlrun/utils/notifications/notification/slack.py,sha256=QnXQvAMOe3GUUKnlrNy_fEtUEjdG8n80FDl4hYdqXyc,3736
385
386
  mlrun/utils/version/__init__.py,sha256=hwfJgGWYGWFpepVGI1GbuCPqqEFGRbgguJg5sC0v4TU,614
386
- mlrun/utils/version/version.json,sha256=OHSLfR0bhakvVW7se9O4rFHj0j5Crr1BNTKoUB7gEl8,88
387
+ mlrun/utils/version/version.json,sha256=hsn9H7rpi0XmRAbCXb0oM4t1uXJfVkQpYIiKVM_uoSA,88
387
388
  mlrun/utils/version/version.py,sha256=O4Q4kwtKlI73oK7oBPuz4SVkUI8BC11E9DJIKHT91kU,1970
388
- mlrun-1.3.1rc5.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
389
- mlrun-1.3.1rc5.dist-info/METADATA,sha256=gT36rvjdaIDRiVCXykY5DEACEaeNxECuyqjoFBuOBwo,16975
390
- mlrun-1.3.1rc5.dist-info/WHEEL,sha256=pkctZYzUS4AYVn6dJ-7367OJZivF2e8RA9b_ZBjif18,92
391
- mlrun-1.3.1rc5.dist-info/entry_points.txt,sha256=ZbXmb36B9JmK7EaleP8MIAbZSOQXQV0iwKR6si0HUWk,47
392
- mlrun-1.3.1rc5.dist-info/top_level.txt,sha256=NObLzw3maSF9wVrgSeYBv-fgnHkAJ1kEkh12DLdd5KM,6
393
- mlrun-1.3.1rc5.dist-info/RECORD,,
389
+ mlrun-1.4.0rc2.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
390
+ mlrun-1.4.0rc2.dist-info/METADATA,sha256=_at3cBifvsdJaad6mIL46mrg00ix_KEsCKQ8gb4b6ag,17177
391
+ mlrun-1.4.0rc2.dist-info/WHEEL,sha256=pkctZYzUS4AYVn6dJ-7367OJZivF2e8RA9b_ZBjif18,92
392
+ mlrun-1.4.0rc2.dist-info/entry_points.txt,sha256=ZbXmb36B9JmK7EaleP8MIAbZSOQXQV0iwKR6si0HUWk,47
393
+ mlrun-1.4.0rc2.dist-info/top_level.txt,sha256=NObLzw3maSF9wVrgSeYBv-fgnHkAJ1kEkh12DLdd5KM,6
394
+ mlrun-1.4.0rc2.dist-info/RECORD,,