mlrun 1.10.0rc18__py3-none-any.whl → 1.11.0rc16__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 (167) hide show
  1. mlrun/__init__.py +24 -3
  2. mlrun/__main__.py +0 -4
  3. mlrun/artifacts/dataset.py +2 -2
  4. mlrun/artifacts/document.py +6 -1
  5. mlrun/artifacts/llm_prompt.py +21 -15
  6. mlrun/artifacts/model.py +3 -3
  7. mlrun/artifacts/plots.py +1 -1
  8. mlrun/{model_monitoring/db/tsdb/tdengine → auth}/__init__.py +2 -3
  9. mlrun/auth/nuclio.py +89 -0
  10. mlrun/auth/providers.py +429 -0
  11. mlrun/auth/utils.py +415 -0
  12. mlrun/common/constants.py +14 -0
  13. mlrun/common/model_monitoring/helpers.py +123 -0
  14. mlrun/common/runtimes/constants.py +28 -0
  15. mlrun/common/schemas/__init__.py +14 -3
  16. mlrun/common/schemas/alert.py +2 -2
  17. mlrun/common/schemas/api_gateway.py +3 -0
  18. mlrun/common/schemas/auth.py +12 -10
  19. mlrun/common/schemas/client_spec.py +4 -0
  20. mlrun/common/schemas/constants.py +25 -0
  21. mlrun/common/schemas/frontend_spec.py +1 -8
  22. mlrun/common/schemas/function.py +34 -0
  23. mlrun/common/schemas/hub.py +33 -20
  24. mlrun/common/schemas/model_monitoring/__init__.py +2 -1
  25. mlrun/common/schemas/model_monitoring/constants.py +12 -15
  26. mlrun/common/schemas/model_monitoring/functions.py +13 -4
  27. mlrun/common/schemas/model_monitoring/model_endpoints.py +11 -0
  28. mlrun/common/schemas/pipeline.py +1 -1
  29. mlrun/common/schemas/secret.py +17 -2
  30. mlrun/common/secrets.py +95 -1
  31. mlrun/common/types.py +10 -10
  32. mlrun/config.py +69 -19
  33. mlrun/data_types/infer.py +2 -2
  34. mlrun/datastore/__init__.py +12 -5
  35. mlrun/datastore/azure_blob.py +162 -47
  36. mlrun/datastore/base.py +274 -10
  37. mlrun/datastore/datastore.py +7 -2
  38. mlrun/datastore/datastore_profile.py +84 -22
  39. mlrun/datastore/model_provider/huggingface_provider.py +225 -41
  40. mlrun/datastore/model_provider/mock_model_provider.py +87 -0
  41. mlrun/datastore/model_provider/model_provider.py +206 -74
  42. mlrun/datastore/model_provider/openai_provider.py +226 -66
  43. mlrun/datastore/s3.py +39 -18
  44. mlrun/datastore/sources.py +1 -1
  45. mlrun/datastore/store_resources.py +4 -4
  46. mlrun/datastore/storeytargets.py +17 -12
  47. mlrun/datastore/targets.py +1 -1
  48. mlrun/datastore/utils.py +25 -6
  49. mlrun/datastore/v3io.py +1 -1
  50. mlrun/db/base.py +63 -32
  51. mlrun/db/httpdb.py +373 -153
  52. mlrun/db/nopdb.py +54 -21
  53. mlrun/errors.py +4 -2
  54. mlrun/execution.py +66 -25
  55. mlrun/feature_store/api.py +1 -1
  56. mlrun/feature_store/common.py +1 -1
  57. mlrun/feature_store/feature_vector_utils.py +1 -1
  58. mlrun/feature_store/steps.py +8 -6
  59. mlrun/frameworks/_common/utils.py +3 -3
  60. mlrun/frameworks/_dl_common/loggers/logger.py +1 -1
  61. mlrun/frameworks/_dl_common/loggers/tensorboard_logger.py +2 -1
  62. mlrun/frameworks/_ml_common/loggers/mlrun_logger.py +1 -1
  63. mlrun/frameworks/_ml_common/utils.py +2 -1
  64. mlrun/frameworks/auto_mlrun/auto_mlrun.py +4 -3
  65. mlrun/frameworks/lgbm/mlrun_interfaces/mlrun_interface.py +2 -1
  66. mlrun/frameworks/onnx/dataset.py +2 -1
  67. mlrun/frameworks/onnx/mlrun_interface.py +2 -1
  68. mlrun/frameworks/pytorch/callbacks/logging_callback.py +5 -4
  69. mlrun/frameworks/pytorch/callbacks/mlrun_logging_callback.py +2 -1
  70. mlrun/frameworks/pytorch/callbacks/tensorboard_logging_callback.py +2 -1
  71. mlrun/frameworks/pytorch/utils.py +2 -1
  72. mlrun/frameworks/sklearn/metric.py +2 -1
  73. mlrun/frameworks/tf_keras/callbacks/logging_callback.py +5 -4
  74. mlrun/frameworks/tf_keras/callbacks/mlrun_logging_callback.py +2 -1
  75. mlrun/frameworks/tf_keras/callbacks/tensorboard_logging_callback.py +2 -1
  76. mlrun/hub/__init__.py +52 -0
  77. mlrun/hub/base.py +142 -0
  78. mlrun/hub/module.py +172 -0
  79. mlrun/hub/step.py +113 -0
  80. mlrun/k8s_utils.py +105 -16
  81. mlrun/launcher/base.py +15 -7
  82. mlrun/launcher/local.py +4 -1
  83. mlrun/model.py +14 -4
  84. mlrun/model_monitoring/__init__.py +0 -1
  85. mlrun/model_monitoring/api.py +65 -28
  86. mlrun/model_monitoring/applications/__init__.py +1 -1
  87. mlrun/model_monitoring/applications/base.py +299 -128
  88. mlrun/model_monitoring/applications/context.py +2 -4
  89. mlrun/model_monitoring/controller.py +132 -58
  90. mlrun/model_monitoring/db/_schedules.py +38 -29
  91. mlrun/model_monitoring/db/_stats.py +6 -16
  92. mlrun/model_monitoring/db/tsdb/__init__.py +9 -7
  93. mlrun/model_monitoring/db/tsdb/base.py +29 -9
  94. mlrun/model_monitoring/db/tsdb/preaggregate.py +234 -0
  95. mlrun/model_monitoring/db/tsdb/stream_graph_steps.py +63 -0
  96. mlrun/model_monitoring/db/tsdb/timescaledb/queries/timescaledb_metrics_queries.py +414 -0
  97. mlrun/model_monitoring/db/tsdb/timescaledb/queries/timescaledb_predictions_queries.py +376 -0
  98. mlrun/model_monitoring/db/tsdb/timescaledb/queries/timescaledb_results_queries.py +590 -0
  99. mlrun/model_monitoring/db/tsdb/timescaledb/timescaledb_connection.py +434 -0
  100. mlrun/model_monitoring/db/tsdb/timescaledb/timescaledb_connector.py +541 -0
  101. mlrun/model_monitoring/db/tsdb/timescaledb/timescaledb_operations.py +808 -0
  102. mlrun/model_monitoring/db/tsdb/timescaledb/timescaledb_schema.py +502 -0
  103. mlrun/model_monitoring/db/tsdb/timescaledb/timescaledb_stream.py +163 -0
  104. mlrun/model_monitoring/db/tsdb/timescaledb/timescaledb_stream_graph_steps.py +60 -0
  105. mlrun/model_monitoring/db/tsdb/timescaledb/utils/timescaledb_dataframe_processor.py +141 -0
  106. mlrun/model_monitoring/db/tsdb/timescaledb/utils/timescaledb_query_builder.py +585 -0
  107. mlrun/model_monitoring/db/tsdb/timescaledb/writer_graph_steps.py +73 -0
  108. mlrun/model_monitoring/db/tsdb/v3io/stream_graph_steps.py +20 -9
  109. mlrun/model_monitoring/db/tsdb/v3io/v3io_connector.py +235 -51
  110. mlrun/model_monitoring/features_drift_table.py +2 -1
  111. mlrun/model_monitoring/helpers.py +30 -6
  112. mlrun/model_monitoring/stream_processing.py +34 -28
  113. mlrun/model_monitoring/writer.py +224 -4
  114. mlrun/package/__init__.py +2 -1
  115. mlrun/platforms/__init__.py +0 -43
  116. mlrun/platforms/iguazio.py +8 -4
  117. mlrun/projects/operations.py +17 -11
  118. mlrun/projects/pipelines.py +2 -2
  119. mlrun/projects/project.py +187 -123
  120. mlrun/run.py +95 -21
  121. mlrun/runtimes/__init__.py +2 -186
  122. mlrun/runtimes/base.py +103 -25
  123. mlrun/runtimes/constants.py +225 -0
  124. mlrun/runtimes/daskjob.py +5 -2
  125. mlrun/runtimes/databricks_job/databricks_runtime.py +2 -1
  126. mlrun/runtimes/local.py +5 -2
  127. mlrun/runtimes/mounts.py +20 -2
  128. mlrun/runtimes/nuclio/__init__.py +12 -7
  129. mlrun/runtimes/nuclio/api_gateway.py +36 -6
  130. mlrun/runtimes/nuclio/application/application.py +339 -40
  131. mlrun/runtimes/nuclio/function.py +222 -72
  132. mlrun/runtimes/nuclio/serving.py +132 -42
  133. mlrun/runtimes/pod.py +213 -21
  134. mlrun/runtimes/utils.py +49 -9
  135. mlrun/secrets.py +99 -14
  136. mlrun/serving/__init__.py +2 -0
  137. mlrun/serving/remote.py +84 -11
  138. mlrun/serving/routers.py +26 -44
  139. mlrun/serving/server.py +138 -51
  140. mlrun/serving/serving_wrapper.py +6 -2
  141. mlrun/serving/states.py +997 -283
  142. mlrun/serving/steps.py +62 -0
  143. mlrun/serving/system_steps.py +149 -95
  144. mlrun/serving/v2_serving.py +9 -10
  145. mlrun/track/trackers/mlflow_tracker.py +29 -31
  146. mlrun/utils/helpers.py +292 -94
  147. mlrun/utils/http.py +9 -2
  148. mlrun/utils/notifications/notification/base.py +18 -0
  149. mlrun/utils/notifications/notification/git.py +3 -5
  150. mlrun/utils/notifications/notification/mail.py +39 -16
  151. mlrun/utils/notifications/notification/slack.py +2 -4
  152. mlrun/utils/notifications/notification/webhook.py +2 -5
  153. mlrun/utils/notifications/notification_pusher.py +3 -3
  154. mlrun/utils/version/version.json +2 -2
  155. mlrun/utils/version/version.py +3 -4
  156. {mlrun-1.10.0rc18.dist-info → mlrun-1.11.0rc16.dist-info}/METADATA +63 -74
  157. {mlrun-1.10.0rc18.dist-info → mlrun-1.11.0rc16.dist-info}/RECORD +161 -143
  158. mlrun/api/schemas/__init__.py +0 -259
  159. mlrun/db/auth_utils.py +0 -152
  160. mlrun/model_monitoring/db/tsdb/tdengine/schemas.py +0 -344
  161. mlrun/model_monitoring/db/tsdb/tdengine/stream_graph_steps.py +0 -75
  162. mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connection.py +0 -281
  163. mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connector.py +0 -1266
  164. {mlrun-1.10.0rc18.dist-info → mlrun-1.11.0rc16.dist-info}/WHEEL +0 -0
  165. {mlrun-1.10.0rc18.dist-info → mlrun-1.11.0rc16.dist-info}/entry_points.txt +0 -0
  166. {mlrun-1.10.0rc18.dist-info → mlrun-1.11.0rc16.dist-info}/licenses/LICENSE +0 -0
  167. {mlrun-1.10.0rc18.dist-info → mlrun-1.11.0rc16.dist-info}/top_level.txt +0 -0
@@ -34,17 +34,18 @@ class MailNotification(base.NotificationBase):
34
34
 
35
35
  boolean_params = ["use_tls", "start_tls", "validate_certs"]
36
36
 
37
+ optional_auth_params = ["username", "password"]
38
+
37
39
  required_params = [
38
40
  "server_host",
39
41
  "server_port",
40
42
  "sender_address",
41
- "username",
42
- "password",
43
43
  "email_addresses",
44
44
  ] + boolean_params
45
45
 
46
46
  @classmethod
47
47
  def validate_params(cls, params):
48
+ cls._enrich_params(params)
48
49
  for required_param in cls.required_params:
49
50
  if required_param not in params:
50
51
  raise ValueError(
@@ -57,6 +58,13 @@ class MailNotification(base.NotificationBase):
57
58
  f"Parameter '{boolean_param}' must be a boolean for MailNotification"
58
59
  )
59
60
 
61
+ # Allow no auth, username only, or username + password
62
+ # Some SMTP servers allow username without password
63
+ if params["password"] and not params["username"]:
64
+ raise ValueError(
65
+ "Parameter 'username' is required when 'password' is provided for MailNotification"
66
+ )
67
+
60
68
  cls._validate_emails(params)
61
69
 
62
70
  async def push(
@@ -78,6 +86,8 @@ class MailNotification(base.NotificationBase):
78
86
  )
79
87
  self.params["body"] = runs_html
80
88
 
89
+ self._enrich_params(self.params)
90
+
81
91
  if message_body_override:
82
92
  self.params["body"] = message_body_override.replace(
83
93
  "{{ runs }}", runs_html
@@ -122,7 +132,7 @@ class MailNotification(base.NotificationBase):
122
132
  def _validate_emails(cls, params):
123
133
  cls._validate_email_address(params["sender_address"])
124
134
 
125
- if not isinstance(params["email_addresses"], (str, list)):
135
+ if not isinstance(params["email_addresses"], str | list):
126
136
  raise ValueError(
127
137
  "Parameter 'email_addresses' must be a string or a list of strings"
128
138
  )
@@ -147,8 +157,8 @@ class MailNotification(base.NotificationBase):
147
157
  sender_address: str,
148
158
  server_host: str,
149
159
  server_port: int,
150
- username: str,
151
- password: str,
160
+ username: typing.Optional[str],
161
+ password: typing.Optional[str],
152
162
  use_tls: bool,
153
163
  start_tls: bool,
154
164
  validate_certs: bool,
@@ -163,14 +173,27 @@ class MailNotification(base.NotificationBase):
163
173
  message["Subject"] = subject
164
174
  message.attach(MIMEText(body, "html"))
165
175
 
166
- # Send the email
167
- await aiosmtplib.send(
168
- message,
169
- hostname=server_host,
170
- port=server_port,
171
- username=username,
172
- password=password,
173
- use_tls=use_tls,
174
- validate_certs=validate_certs,
175
- start_tls=start_tls,
176
- )
176
+ send_kwargs = {
177
+ "hostname": server_host,
178
+ "port": server_port,
179
+ "use_tls": use_tls,
180
+ "validate_certs": validate_certs,
181
+ "start_tls": start_tls,
182
+ }
183
+
184
+ # Only include auth parameters when provided to avoid forcing SMTP AUTH
185
+ if username is not None:
186
+ send_kwargs["username"] = username
187
+ if password is not None:
188
+ send_kwargs["password"] = password
189
+
190
+ await aiosmtplib.send(message, **send_kwargs)
191
+
192
+ @staticmethod
193
+ def _enrich_params(params):
194
+ # if username/password are not provided or empty strings, set them to None.
195
+ # this ensures consistent behavior in _send_email and avoids
196
+ # forcing SMTP auth when the server does not require authentication.
197
+ for param in ["username", "password"]:
198
+ if param not in params or not params[param]:
199
+ params[param] = None
@@ -14,14 +14,12 @@
14
14
 
15
15
  import typing
16
16
 
17
- import aiohttp
18
-
19
17
  import mlrun.common.runtimes.constants as runtimes_constants
20
18
  import mlrun.common.schemas
21
19
  import mlrun.lists
22
20
  import mlrun.utils.helpers
23
21
 
24
- from .base import NotificationBase
22
+ from .base import NotificationBase, TimedHTTPClient
25
23
 
26
24
 
27
25
  class SlackNotification(NotificationBase):
@@ -67,7 +65,7 @@ class SlackNotification(NotificationBase):
67
65
 
68
66
  data = self._generate_slack_data(message, severity, runs, alert, event_data)
69
67
 
70
- async with aiohttp.ClientSession() as session:
68
+ async with TimedHTTPClient().session() as session:
71
69
  async with session.post(webhook, json=data) as response:
72
70
  response.raise_for_status()
73
71
 
@@ -15,14 +15,13 @@
15
15
  import re
16
16
  import typing
17
17
 
18
- import aiohttp
19
18
  import orjson
20
19
 
21
20
  import mlrun.common.schemas
22
21
  import mlrun.lists
23
22
  import mlrun.utils.helpers
24
23
 
25
- from .base import NotificationBase
24
+ from .base import NotificationBase, TimedHTTPClient
26
25
 
27
26
 
28
27
  class WebhookNotification(NotificationBase):
@@ -87,9 +86,7 @@ class WebhookNotification(NotificationBase):
87
86
  # we automatically handle it as `ssl=None` for their convenience.
88
87
  verify_ssl = verify_ssl and None if url.startswith("https") else None
89
88
 
90
- async with aiohttp.ClientSession(
91
- json_serialize=self._encoder,
92
- ) as session:
89
+ async with TimedHTTPClient().session(json_serialize=self._encoder) as session:
93
90
  response = await getattr(session, method)(
94
91
  url,
95
92
  headers=headers,
@@ -308,7 +308,7 @@ class NotificationPusher(_NotificationPusherBase):
308
308
  and retry_count >= max_retries
309
309
  ):
310
310
  message += (
311
- "\nRetry limit reached run has failed after all retry attempts."
311
+ "\nRetry limit reached - run has failed after all retry attempts."
312
312
  )
313
313
 
314
314
  severity = (
@@ -347,7 +347,7 @@ class NotificationPusher(_NotificationPusherBase):
347
347
  run_uid=run.metadata.uid,
348
348
  )
349
349
  update_notification_status_kwargs["sent_time"] = datetime.datetime.now(
350
- tz=datetime.timezone.utc
350
+ tz=datetime.UTC
351
351
  )
352
352
  except Exception as exc:
353
353
  logger.warning(
@@ -397,7 +397,7 @@ class NotificationPusher(_NotificationPusherBase):
397
397
  run_uid=run.metadata.uid,
398
398
  )
399
399
  update_notification_status_kwargs["sent_time"] = datetime.datetime.now(
400
- tz=datetime.timezone.utc
400
+ tz=datetime.UTC
401
401
  )
402
402
 
403
403
  except Exception as exc:
@@ -1,4 +1,4 @@
1
1
  {
2
- "git_commit": "ef58f2d7ada676ba266aaf084b7a46714b95ba4e",
3
- "version": "1.10.0-rc18"
2
+ "git_commit": "160a94f1532940f8a7d039ed5488912c27098edf",
3
+ "version": "1.11.0-rc16"
4
4
  }
@@ -14,7 +14,7 @@
14
14
 
15
15
  import json
16
16
  import sys
17
- from importlib.resources import read_text
17
+ from importlib.resources import files
18
18
 
19
19
  import mlrun.utils
20
20
  from mlrun.utils.singleton import Singleton
@@ -37,9 +37,8 @@ class Version(metaclass=Singleton):
37
37
  self.version_info = {"git_commit": "unknown", "version": "0.0.0+unstable"}
38
38
  self.python_version = self._resolve_python_version()
39
39
  try:
40
- self.version_info = json.loads(
41
- read_text("mlrun.utils.version", "version.json")
42
- )
40
+ with (files("mlrun.utils.version") / "version.json").open("r") as read_text:
41
+ self.version_info = json.loads(read_text.read())
43
42
  except Exception:
44
43
  mlrun.utils.logger.warning(
45
44
  "Failed resolving version info. Ignoring and using defaults"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mlrun
3
- Version: 1.10.0rc18
3
+ Version: 1.11.0rc16
4
4
  Summary: Tracking and config of machine learning runs
5
5
  Home-page: https://github.com/mlrun/mlrun
6
6
  Author: Yaron Haviv
@@ -13,22 +13,22 @@ Classifier: Operating System :: POSIX :: Linux
13
13
  Classifier: Operating System :: Microsoft :: Windows
14
14
  Classifier: Operating System :: MacOS
15
15
  Classifier: Programming Language :: Python :: 3
16
- Classifier: Programming Language :: Python :: 3.9
17
16
  Classifier: Programming Language :: Python :: 3.11
18
17
  Classifier: Programming Language :: Python
19
18
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
20
19
  Classifier: Topic :: Software Development :: Libraries
21
- Requires-Python: >=3.9, <3.12
20
+ Requires-Python: >=3.11, <3.12
22
21
  Description-Content-Type: text/markdown
23
22
  License-File: LICENSE
24
- Requires-Dist: urllib3<1.27,>=1.26.9
23
+ Requires-Dist: urllib3~=2.6
24
+ Requires-Dist: v3io-frames~=0.13.11
25
25
  Requires-Dist: GitPython>=3.1.41,~=3.1
26
26
  Requires-Dist: aiohttp~=3.11
27
27
  Requires-Dist: aiohttp-retry~=2.9
28
28
  Requires-Dist: click~=8.1
29
29
  Requires-Dist: nest-asyncio~=1.0
30
30
  Requires-Dist: ipython~=8.10
31
- Requires-Dist: nuclio-jupyter~=0.11.2
31
+ Requires-Dist: nuclio-jupyter~=0.13.0
32
32
  Requires-Dist: numpy<1.27.0,>=1.26.4
33
33
  Requires-Dist: pandas<2.2,>=1.2
34
34
  Requires-Dist: pyarrow<18,>=10.0
@@ -38,31 +38,31 @@ Requires-Dist: tabulate~=0.8.6
38
38
  Requires-Dist: v3io~=0.7.0
39
39
  Requires-Dist: pydantic>=1.10.15
40
40
  Requires-Dist: mergedeep~=1.3
41
- Requires-Dist: v3io-frames~=0.10.14; python_version < "3.11"
42
- Requires-Dist: v3io-frames>=0.13.0; python_version >= "3.11"
43
41
  Requires-Dist: semver~=3.0
44
42
  Requires-Dist: dependency-injector~=4.41
45
- Requires-Dist: fsspec<2024.7,>=2023.9.2
43
+ Requires-Dist: fsspec<=2025.7.0,>=2025.5.1
46
44
  Requires-Dist: v3iofs~=0.1.17
47
- Requires-Dist: storey~=1.10.9
45
+ Requires-Dist: storey~=1.11.5
48
46
  Requires-Dist: inflection~=0.5.0
49
47
  Requires-Dist: python-dotenv~=1.0
50
48
  Requires-Dist: setuptools>=75.2
51
49
  Requires-Dist: deprecated~=1.2
52
50
  Requires-Dist: jinja2>=3.1.6,~=3.1
53
51
  Requires-Dist: orjson<4,>=3.9.15
54
- Requires-Dist: mlrun-pipelines-kfp-common~=0.5.8
55
- Requires-Dist: mlrun-pipelines-kfp-v1-8~=0.5.7
52
+ Requires-Dist: mlrun-pipelines-kfp-common~=0.6.0
53
+ Requires-Dist: mlrun-pipelines-kfp-v1-8~=0.6.0
56
54
  Requires-Dist: docstring_parser~=0.16
57
55
  Requires-Dist: aiosmtplib~=3.0
56
+ Requires-Dist: deepdiff<9.0.0,>=8.6.1
57
+ Requires-Dist: pyjwt~=2.10
58
58
  Provides-Extra: s3
59
59
  Requires-Dist: boto3<1.36,>=1.28.0; extra == "s3"
60
60
  Requires-Dist: aiobotocore<2.16,>=2.5.0; extra == "s3"
61
- Requires-Dist: s3fs<2024.7,>=2023.9.2; extra == "s3"
61
+ Requires-Dist: s3fs<=2025.7.0,>=2025.5.1; extra == "s3"
62
62
  Provides-Extra: azure-blob-storage
63
63
  Requires-Dist: msrest~=0.6.21; extra == "azure-blob-storage"
64
64
  Requires-Dist: azure-core~=1.24; extra == "azure-blob-storage"
65
- Requires-Dist: adlfs==2023.9.0; extra == "azure-blob-storage"
65
+ Requires-Dist: adlfs==2024.12.0; extra == "azure-blob-storage"
66
66
  Requires-Dist: pyopenssl>=23; extra == "azure-blob-storage"
67
67
  Provides-Extra: azure-key-vault
68
68
  Requires-Dist: azure-identity~=1.5; extra == "azure-key-vault"
@@ -77,42 +77,40 @@ Requires-Dist: google-cloud-storage==2.14.0; extra == "google-cloud"
77
77
  Requires-Dist: google-cloud-bigquery[bqstorage,pandas]==3.14.1; extra == "google-cloud"
78
78
  Requires-Dist: google-cloud-bigquery-storage~=2.17; extra == "google-cloud"
79
79
  Requires-Dist: google-cloud==0.34; extra == "google-cloud"
80
- Requires-Dist: gcsfs<2024.7,>=2023.9.2; extra == "google-cloud"
80
+ Requires-Dist: gcsfs<=2025.7.0,>=2025.5.1; extra == "google-cloud"
81
81
  Provides-Extra: kafka
82
82
  Requires-Dist: kafka-python~=2.1.0; extra == "kafka"
83
83
  Requires-Dist: avro~=1.11; extra == "kafka"
84
84
  Provides-Extra: redis
85
85
  Requires-Dist: redis~=4.3; extra == "redis"
86
- Provides-Extra: mlflow
87
- Requires-Dist: mlflow~=2.22; extra == "mlflow"
88
86
  Provides-Extra: databricks-sdk
89
87
  Requires-Dist: databricks-sdk~=0.20.0; extra == "databricks-sdk"
90
88
  Provides-Extra: sqlalchemy
91
89
  Requires-Dist: sqlalchemy~=2.0; extra == "sqlalchemy"
92
90
  Provides-Extra: dask
93
- Requires-Dist: dask~=2024.12.1; python_version >= "3.11" and extra == "dask"
94
- Requires-Dist: distributed~=2024.12.1; python_version >= "3.11" and extra == "dask"
95
- Requires-Dist: dask~=2023.12.1; python_version < "3.11" and extra == "dask"
96
- Requires-Dist: distributed~=2023.12.1; python_version < "3.11" and extra == "dask"
91
+ Requires-Dist: dask==2024.8; extra == "dask"
92
+ Requires-Dist: distributed==2024.8; extra == "dask"
97
93
  Provides-Extra: alibaba-oss
98
- Requires-Dist: ossfs==2023.12.0; extra == "alibaba-oss"
99
- Requires-Dist: oss2==2.18.1; extra == "alibaba-oss"
100
- Provides-Extra: tdengine
101
- Requires-Dist: taos-ws-py==0.3.2; extra == "tdengine"
94
+ Requires-Dist: ossfs==2025.5.0; extra == "alibaba-oss"
95
+ Requires-Dist: oss2==2.18.4; extra == "alibaba-oss"
96
+ Provides-Extra: timescaledb
97
+ Requires-Dist: psycopg[binary,pool]~=3.2; extra == "timescaledb"
102
98
  Provides-Extra: snowflake
103
99
  Requires-Dist: snowflake-connector-python~=3.7; extra == "snowflake"
104
100
  Provides-Extra: dev-postgres
105
101
  Requires-Dist: pytest-mock-resources[postgres]~=2.12; extra == "dev-postgres"
106
102
  Provides-Extra: kfp18
107
- Requires-Dist: mlrun_pipelines_kfp_v1_8[kfp]>=0.5.0; python_version < "3.11" and extra == "kfp18"
103
+ Requires-Dist: mlrun_pipelines_kfp_v1_8[kfp]~=0.6.0; extra == "kfp18"
104
+ Provides-Extra: mlflow
105
+ Requires-Dist: mlflow~=3.0; extra == "mlflow"
108
106
  Provides-Extra: api
109
107
  Requires-Dist: uvicorn~=0.32.1; extra == "api"
110
108
  Requires-Dist: dask-kubernetes~=0.11.0; extra == "api"
111
109
  Requires-Dist: apscheduler<4,>=3.11; extra == "api"
112
110
  Requires-Dist: objgraph~=3.6; extra == "api"
113
- Requires-Dist: igz-mgmt~=0.4.1; extra == "api"
111
+ Requires-Dist: igz-mgmt~=0.4.2; extra == "api"
114
112
  Requires-Dist: humanfriendly~=10.0; extra == "api"
115
- Requires-Dist: fastapi~=0.115.6; extra == "api"
113
+ Requires-Dist: fastapi~=0.120.0; extra == "api"
116
114
  Requires-Dist: sqlalchemy~=2.0; extra == "api"
117
115
  Requires-Dist: sqlalchemy-utils~=0.41.2; extra == "api"
118
116
  Requires-Dist: pymysql~=1.1; extra == "api"
@@ -122,72 +120,65 @@ Requires-Dist: timelength~=1.1; extra == "api"
122
120
  Requires-Dist: memray~=1.12; sys_platform != "win32" and extra == "api"
123
121
  Requires-Dist: aiosmtplib~=3.0; extra == "api"
124
122
  Requires-Dist: pydantic<2,>=1; extra == "api"
125
- Requires-Dist: mlrun-pipelines-kfp-v1-8~=0.5.7; extra == "api"
126
- Requires-Dist: grpcio~=1.70.0; extra == "api"
123
+ Requires-Dist: mlrun-pipelines-kfp-v1-8~=0.6.0; extra == "api"
127
124
  Provides-Extra: all
128
- Requires-Dist: adlfs==2023.9.0; extra == "all"
125
+ Requires-Dist: adlfs==2024.12.0; extra == "all"
129
126
  Requires-Dist: aiobotocore<2.16,>=2.5.0; extra == "all"
130
127
  Requires-Dist: avro~=1.11; extra == "all"
131
128
  Requires-Dist: azure-core~=1.24; extra == "all"
132
129
  Requires-Dist: azure-identity~=1.5; extra == "all"
133
130
  Requires-Dist: azure-keyvault-secrets~=4.2; extra == "all"
134
131
  Requires-Dist: boto3<1.36,>=1.28.0; extra == "all"
135
- Requires-Dist: dask~=2023.12.1; python_version < "3.11" and extra == "all"
136
- Requires-Dist: dask~=2024.12.1; python_version >= "3.11" and extra == "all"
132
+ Requires-Dist: dask==2024.8; extra == "all"
137
133
  Requires-Dist: databricks-sdk~=0.20.0; extra == "all"
138
- Requires-Dist: distributed~=2023.12.1; python_version < "3.11" and extra == "all"
139
- Requires-Dist: distributed~=2024.12.1; python_version >= "3.11" and extra == "all"
140
- Requires-Dist: gcsfs<2024.7,>=2023.9.2; extra == "all"
134
+ Requires-Dist: distributed==2024.8; extra == "all"
135
+ Requires-Dist: gcsfs<=2025.7.0,>=2025.5.1; extra == "all"
141
136
  Requires-Dist: google-cloud-bigquery-storage~=2.17; extra == "all"
142
137
  Requires-Dist: google-cloud-bigquery[bqstorage,pandas]==3.14.1; extra == "all"
143
138
  Requires-Dist: google-cloud-storage==2.14.0; extra == "all"
144
139
  Requires-Dist: google-cloud==0.34; extra == "all"
145
140
  Requires-Dist: graphviz~=0.20.0; extra == "all"
146
141
  Requires-Dist: kafka-python~=2.1.0; extra == "all"
147
- Requires-Dist: mlflow~=2.22; extra == "all"
148
142
  Requires-Dist: msrest~=0.6.21; extra == "all"
149
- Requires-Dist: oss2==2.18.1; extra == "all"
150
- Requires-Dist: ossfs==2023.12.0; extra == "all"
143
+ Requires-Dist: oss2==2.18.4; extra == "all"
144
+ Requires-Dist: ossfs==2025.5.0; extra == "all"
151
145
  Requires-Dist: plotly~=5.23; extra == "all"
146
+ Requires-Dist: psycopg[binary,pool]~=3.2; extra == "all"
152
147
  Requires-Dist: pyopenssl>=23; extra == "all"
153
148
  Requires-Dist: redis~=4.3; extra == "all"
154
- Requires-Dist: s3fs<2024.7,>=2023.9.2; extra == "all"
149
+ Requires-Dist: s3fs<=2025.7.0,>=2025.5.1; extra == "all"
155
150
  Requires-Dist: snowflake-connector-python~=3.7; extra == "all"
156
151
  Requires-Dist: sqlalchemy~=2.0; extra == "all"
157
- Requires-Dist: taos-ws-py==0.3.2; extra == "all"
158
152
  Provides-Extra: complete
159
- Requires-Dist: adlfs==2023.9.0; extra == "complete"
153
+ Requires-Dist: adlfs==2024.12.0; extra == "complete"
160
154
  Requires-Dist: aiobotocore<2.16,>=2.5.0; extra == "complete"
161
155
  Requires-Dist: avro~=1.11; extra == "complete"
162
156
  Requires-Dist: azure-core~=1.24; extra == "complete"
163
157
  Requires-Dist: azure-identity~=1.5; extra == "complete"
164
158
  Requires-Dist: azure-keyvault-secrets~=4.2; extra == "complete"
165
159
  Requires-Dist: boto3<1.36,>=1.28.0; extra == "complete"
166
- Requires-Dist: dask~=2023.12.1; python_version < "3.11" and extra == "complete"
167
- Requires-Dist: dask~=2024.12.1; python_version >= "3.11" and extra == "complete"
160
+ Requires-Dist: dask==2024.8; extra == "complete"
168
161
  Requires-Dist: databricks-sdk~=0.20.0; extra == "complete"
169
- Requires-Dist: distributed~=2023.12.1; python_version < "3.11" and extra == "complete"
170
- Requires-Dist: distributed~=2024.12.1; python_version >= "3.11" and extra == "complete"
171
- Requires-Dist: gcsfs<2024.7,>=2023.9.2; extra == "complete"
162
+ Requires-Dist: distributed==2024.8; extra == "complete"
163
+ Requires-Dist: gcsfs<=2025.7.0,>=2025.5.1; extra == "complete"
172
164
  Requires-Dist: google-cloud-bigquery-storage~=2.17; extra == "complete"
173
165
  Requires-Dist: google-cloud-bigquery[bqstorage,pandas]==3.14.1; extra == "complete"
174
166
  Requires-Dist: google-cloud-storage==2.14.0; extra == "complete"
175
167
  Requires-Dist: google-cloud==0.34; extra == "complete"
176
168
  Requires-Dist: graphviz~=0.20.0; extra == "complete"
177
169
  Requires-Dist: kafka-python~=2.1.0; extra == "complete"
178
- Requires-Dist: mlflow~=2.22; extra == "complete"
179
170
  Requires-Dist: msrest~=0.6.21; extra == "complete"
180
- Requires-Dist: oss2==2.18.1; extra == "complete"
181
- Requires-Dist: ossfs==2023.12.0; extra == "complete"
171
+ Requires-Dist: oss2==2.18.4; extra == "complete"
172
+ Requires-Dist: ossfs==2025.5.0; extra == "complete"
182
173
  Requires-Dist: plotly~=5.23; extra == "complete"
174
+ Requires-Dist: psycopg[binary,pool]~=3.2; extra == "complete"
183
175
  Requires-Dist: pyopenssl>=23; extra == "complete"
184
176
  Requires-Dist: redis~=4.3; extra == "complete"
185
- Requires-Dist: s3fs<2024.7,>=2023.9.2; extra == "complete"
177
+ Requires-Dist: s3fs<=2025.7.0,>=2025.5.1; extra == "complete"
186
178
  Requires-Dist: snowflake-connector-python~=3.7; extra == "complete"
187
179
  Requires-Dist: sqlalchemy~=2.0; extra == "complete"
188
- Requires-Dist: taos-ws-py==0.3.2; extra == "complete"
189
180
  Provides-Extra: complete-api
190
- Requires-Dist: adlfs==2023.9.0; extra == "complete-api"
181
+ Requires-Dist: adlfs==2024.12.0; extra == "complete-api"
191
182
  Requires-Dist: aiobotocore<2.16,>=2.5.0; extra == "complete-api"
192
183
  Requires-Dist: aiosmtplib~=3.0; extra == "complete-api"
193
184
  Requires-Dist: alembic~=1.14; extra == "complete-api"
@@ -198,40 +189,36 @@ Requires-Dist: azure-identity~=1.5; extra == "complete-api"
198
189
  Requires-Dist: azure-keyvault-secrets~=4.2; extra == "complete-api"
199
190
  Requires-Dist: boto3<1.36,>=1.28.0; extra == "complete-api"
200
191
  Requires-Dist: dask-kubernetes~=0.11.0; extra == "complete-api"
201
- Requires-Dist: dask~=2023.12.1; python_version < "3.11" and extra == "complete-api"
202
- Requires-Dist: dask~=2024.12.1; python_version >= "3.11" and extra == "complete-api"
192
+ Requires-Dist: dask==2024.8; extra == "complete-api"
203
193
  Requires-Dist: databricks-sdk~=0.20.0; extra == "complete-api"
204
- Requires-Dist: distributed~=2023.12.1; python_version < "3.11" and extra == "complete-api"
205
- Requires-Dist: distributed~=2024.12.1; python_version >= "3.11" and extra == "complete-api"
206
- Requires-Dist: fastapi~=0.115.6; extra == "complete-api"
207
- Requires-Dist: gcsfs<2024.7,>=2023.9.2; extra == "complete-api"
194
+ Requires-Dist: distributed==2024.8; extra == "complete-api"
195
+ Requires-Dist: fastapi~=0.120.0; extra == "complete-api"
196
+ Requires-Dist: gcsfs<=2025.7.0,>=2025.5.1; extra == "complete-api"
208
197
  Requires-Dist: google-cloud-bigquery-storage~=2.17; extra == "complete-api"
209
198
  Requires-Dist: google-cloud-bigquery[bqstorage,pandas]==3.14.1; extra == "complete-api"
210
199
  Requires-Dist: google-cloud-storage==2.14.0; extra == "complete-api"
211
200
  Requires-Dist: google-cloud==0.34; extra == "complete-api"
212
201
  Requires-Dist: graphviz~=0.20.0; extra == "complete-api"
213
- Requires-Dist: grpcio~=1.70.0; extra == "complete-api"
214
202
  Requires-Dist: humanfriendly~=10.0; extra == "complete-api"
215
- Requires-Dist: igz-mgmt~=0.4.1; extra == "complete-api"
203
+ Requires-Dist: igz-mgmt~=0.4.2; extra == "complete-api"
216
204
  Requires-Dist: kafka-python~=2.1.0; extra == "complete-api"
217
205
  Requires-Dist: memray~=1.12; sys_platform != "win32" and extra == "complete-api"
218
- Requires-Dist: mlflow~=2.22; extra == "complete-api"
219
- Requires-Dist: mlrun-pipelines-kfp-v1-8~=0.5.7; extra == "complete-api"
206
+ Requires-Dist: mlrun-pipelines-kfp-v1-8~=0.6.0; extra == "complete-api"
220
207
  Requires-Dist: msrest~=0.6.21; extra == "complete-api"
221
208
  Requires-Dist: objgraph~=3.6; extra == "complete-api"
222
- Requires-Dist: oss2==2.18.1; extra == "complete-api"
223
- Requires-Dist: ossfs==2023.12.0; extra == "complete-api"
209
+ Requires-Dist: oss2==2.18.4; extra == "complete-api"
210
+ Requires-Dist: ossfs==2025.5.0; extra == "complete-api"
224
211
  Requires-Dist: plotly~=5.23; extra == "complete-api"
225
212
  Requires-Dist: psycopg2-binary~=2.9; extra == "complete-api"
213
+ Requires-Dist: psycopg[binary,pool]~=3.2; extra == "complete-api"
226
214
  Requires-Dist: pydantic<2,>=1; extra == "complete-api"
227
215
  Requires-Dist: pymysql~=1.1; extra == "complete-api"
228
216
  Requires-Dist: pyopenssl>=23; extra == "complete-api"
229
217
  Requires-Dist: redis~=4.3; extra == "complete-api"
230
- Requires-Dist: s3fs<2024.7,>=2023.9.2; extra == "complete-api"
218
+ Requires-Dist: s3fs<=2025.7.0,>=2025.5.1; extra == "complete-api"
231
219
  Requires-Dist: snowflake-connector-python~=3.7; extra == "complete-api"
232
220
  Requires-Dist: sqlalchemy-utils~=0.41.2; extra == "complete-api"
233
221
  Requires-Dist: sqlalchemy~=2.0; extra == "complete-api"
234
- Requires-Dist: taos-ws-py==0.3.2; extra == "complete-api"
235
222
  Requires-Dist: timelength~=1.1; extra == "complete-api"
236
223
  Requires-Dist: uvicorn~=0.32.1; extra == "complete-api"
237
224
  Dynamic: author
@@ -278,7 +265,7 @@ MLRun is an open source AI orchestration platform for quickly building and manag
278
265
  MLRun significantly reduces engineering efforts, time to production, and computation resources.
279
266
  With MLRun, you can choose any IDE on your local machine or on the cloud. MLRun breaks the silos between data, ML, software, and DevOps/MLOps teams, enabling collaboration and fast continuous improvements.
280
267
 
281
- Get started with the MLRun [**Tutorials and Examples**](https://docs.mlrun.org/en/stable/tutorials/index.html) and the [**Installation and setup guide**](https://docs.mlrun.org/en/stable/install.html), or read about the [**MLRun Architecture**](https://docs.mlrun.org/en/stable/architecture.html).
268
+ Get started with the MLRun [**Tutorials and Examples**](https://docs.mlrun.org/en/stable/tutorials/index.html) and the [**Set up your client environment**](https://docs.mlrun.org/en/stable/setup-guide.md), or read about the [**MLRun Architecture**](https://docs.mlrun.org/en/stable/architecture.html).
282
269
 
283
270
  This page explains how MLRun addresses the [**gen AI tasks**](#genai-tasks), [**MLOps tasks**](#mlops-tasks), and presents the [**MLRun core components**](#core-components).
284
271
 
@@ -299,8 +286,8 @@ Removing inappropriate data at an early stage saves resources that would otherwi
299
286
 
300
287
 
301
288
  **Docs:**
302
- [Using LLMs to process unstructured data](https://docs.mlrun.org/en/stable/genai/data-mgmt/unstructured-data.html)
303
- [Vector databases](https://docs.mlrun.org/en/stable/genai/data-mgmt/vector-databases.html)
289
+ [Using LLMs to process unstructured data](https://docs.mlrun.org/en/stable/genai/data-mgmt/unstructured-data.html),
290
+ [Vector databases](https://docs.mlrun.org/en/stable/genai/data-mgmt/vector-databases.html),
304
291
  [Guardrails for data management](https://docs.mlrun.org/en/stable/genai/data-mgmt/guardrails-data.html)
305
292
  **Demo:**
306
293
  [Call center demo](https://github.com/mlrun/demo-call-center)
@@ -314,7 +301,8 @@ preprocess (prepare) the data, run the training pipeline, and evaluate the model
314
301
  **Docs:**
315
302
  [Working with RAG](https://docs.mlrun.org/en/stable/genai/development/working-with-rag.html), [Evalating LLMs](https://docs.mlrun.org/en/stable/genai/development/evaluating-llms.html), [Fine tuning LLMS](https://docs.mlrun.org/en/stable/genai/development/fine-tuning-llms.html)
316
303
  **Demos:**
317
- [Call center demo](https://github.com/mlrun/demo-call-center), [Build & deploy custom (fine-tuned) LLM models and applications](https://github.com/mlrun/demo-llm-tuning/blob/main), [Interactive bot demo using LLMs](https://github.com/mlrun/demo-llm-bot/blob/main)
304
+ [Call center demo](https://github.com/mlrun/demo-call-center),
305
+ [Banking agent demo](https://github.com/mlrun/demo-banking-agent)
318
306
  **Video:**
319
307
  [Call center](https://youtu.be/YycMbxRgLBA)
320
308
 
@@ -328,9 +316,10 @@ inferring results using one or more models, and driving actions.
328
316
  **Docs:**
329
317
  [Serving gen AI models](https://docs.mlrun.org/en/stable/genai/deployment/genai_serving.html), [GPU utilization](https://docs.mlrun.org/en/stable/genai/deployment/gpu_utilization.html), [Gen AI realtime serving graph](https://docs.mlrun.org/en/stable/genai/deployment/genai_serving_graph.html)
330
318
  **Tutorial:**
331
- [Deploy LLM using MLRun](https://docs.mlrun.org/en/stable/tutorials/genai_01_basic_tutorial.html)
319
+ [Deploy LLM using MLRun](https://docs.mlrun.org/en/stable/tutorials/genai-01-basic-tutorial.html)
332
320
  **Demos:**
333
- [Call center demo](https://github.com/mlrun/demo-call-center), [Build & deploy custom(fine-tuned)LLM models and applications](https://github.com/mlrun/demo-llm-tuning/blob/main), [Interactive bot demo using LLMs](https://github.com/mlrun/demo-llm-bot/blob/main)
321
+ [Call center demo](https://github.com/mlrun/demo-call-center),
322
+ [Banking agent demo](https://github.com/mlrun/demo-banking-agent)
334
323
  **Video:**
335
324
  [Call center](https://youtu.be/YycMbxRgLBA)
336
325
 
@@ -343,9 +332,9 @@ Collect production data, metadata, and metrics to tune the model and application
343
332
  **Docs:**
344
333
  [Model monitoring <monitoring](https://docs.mlrun.org/en/stable/concepts/monitoring.html), [Alerts and notifications](https://docs.mlrun.org/en/stable/concepts/alerts-notifications.html)
345
334
  **Tutorials:**
346
- [Deploy LLM using MLRun](https://docs.mlrun.org/en/stable/tutorials/genai_01_basic_tutorial.html), [Model monitoring using LLM](https://docs.mlrun.org/en/stable/tutorials/genai-02-monitoring-llm.html)
335
+ [Deploy LLM using MLRun](https://docs.mlrun.org/en/stable/tutorials/genai-01-basic-tutorial.html), [Model monitoring using LLM](https://docs.mlrun.org/en/stable/tutorials/genai-02-monitoring-llm.html)
347
336
  **Demo:**
348
- [Build & deploy custom (fine-tuned) LLM models and applications](https://github.com/mlrun/demo-llm-tuning/blob/main)
337
+ [Banking agent demo](https://github.com/mlrun/demo-banking-agent)
349
338
 
350
339
 
351
340
  <a id="mlops-tasks"></a>