mlrun 1.7.0rc7__py3-none-any.whl → 1.7.0rc11__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.
- mlrun/__init__.py +1 -0
- mlrun/__main__.py +2 -0
- mlrun/artifacts/model.py +29 -25
- mlrun/common/schemas/__init__.py +4 -0
- mlrun/common/schemas/alert.py +122 -0
- mlrun/common/schemas/api_gateway.py +8 -1
- mlrun/common/schemas/auth.py +4 -0
- mlrun/common/schemas/client_spec.py +1 -0
- mlrun/common/schemas/hub.py +7 -9
- mlrun/common/schemas/model_monitoring/constants.py +4 -2
- mlrun/{datastore/helpers.py → common/schemas/pagination.py} +11 -3
- mlrun/common/schemas/project.py +15 -10
- mlrun/config.py +35 -13
- mlrun/datastore/__init__.py +3 -7
- mlrun/datastore/base.py +6 -5
- mlrun/datastore/datastore_profile.py +19 -1
- mlrun/datastore/snowflake_utils.py +43 -0
- mlrun/datastore/sources.py +18 -30
- mlrun/datastore/targets.py +140 -12
- mlrun/datastore/utils.py +10 -5
- mlrun/datastore/v3io.py +27 -50
- mlrun/db/base.py +88 -2
- mlrun/db/httpdb.py +314 -41
- mlrun/db/nopdb.py +142 -0
- mlrun/execution.py +21 -14
- mlrun/feature_store/api.py +9 -5
- mlrun/feature_store/feature_set.py +39 -23
- mlrun/feature_store/feature_vector.py +2 -1
- mlrun/feature_store/retrieval/spark_merger.py +27 -23
- mlrun/feature_store/steps.py +30 -19
- mlrun/features.py +4 -13
- mlrun/frameworks/auto_mlrun/auto_mlrun.py +2 -2
- mlrun/frameworks/lgbm/__init__.py +1 -1
- mlrun/frameworks/lgbm/callbacks/callback.py +2 -4
- mlrun/frameworks/lgbm/model_handler.py +1 -1
- mlrun/frameworks/pytorch/__init__.py +2 -2
- mlrun/frameworks/sklearn/__init__.py +1 -1
- mlrun/frameworks/tf_keras/__init__.py +1 -1
- mlrun/frameworks/tf_keras/callbacks/logging_callback.py +1 -1
- mlrun/frameworks/tf_keras/mlrun_interface.py +2 -2
- mlrun/frameworks/xgboost/__init__.py +1 -1
- mlrun/kfpops.py +2 -5
- mlrun/launcher/base.py +1 -1
- mlrun/launcher/client.py +2 -2
- mlrun/model.py +2 -2
- mlrun/model_monitoring/application.py +11 -2
- mlrun/model_monitoring/applications/histogram_data_drift.py +3 -3
- mlrun/model_monitoring/controller.py +2 -3
- mlrun/model_monitoring/helpers.py +3 -1
- mlrun/model_monitoring/stream_processing.py +0 -1
- mlrun/model_monitoring/writer.py +32 -0
- mlrun/package/packagers_manager.py +1 -0
- mlrun/platforms/__init__.py +1 -1
- mlrun/platforms/other.py +1 -1
- mlrun/projects/operations.py +11 -4
- mlrun/projects/pipelines.py +1 -1
- mlrun/projects/project.py +180 -73
- mlrun/run.py +77 -41
- mlrun/runtimes/__init__.py +16 -0
- mlrun/runtimes/base.py +4 -1
- mlrun/runtimes/kubejob.py +26 -121
- mlrun/runtimes/mpijob/abstract.py +8 -8
- mlrun/runtimes/nuclio/api_gateway.py +58 -8
- mlrun/runtimes/nuclio/application/application.py +79 -1
- mlrun/runtimes/nuclio/application/reverse_proxy.go +9 -1
- mlrun/runtimes/nuclio/function.py +20 -13
- mlrun/runtimes/nuclio/serving.py +11 -10
- mlrun/runtimes/pod.py +148 -3
- mlrun/runtimes/utils.py +0 -28
- mlrun/secrets.py +6 -2
- mlrun/serving/remote.py +2 -3
- mlrun/serving/routers.py +7 -4
- mlrun/serving/server.py +1 -1
- mlrun/serving/states.py +14 -38
- mlrun/serving/v2_serving.py +8 -7
- mlrun/utils/helpers.py +1 -1
- mlrun/utils/http.py +1 -1
- mlrun/utils/notifications/notification/base.py +12 -0
- mlrun/utils/notifications/notification/console.py +2 -0
- mlrun/utils/notifications/notification/git.py +3 -1
- mlrun/utils/notifications/notification/ipython.py +2 -0
- mlrun/utils/notifications/notification/slack.py +41 -13
- mlrun/utils/notifications/notification/webhook.py +11 -1
- mlrun/utils/retryer.py +3 -2
- mlrun/utils/version/version.json +2 -2
- {mlrun-1.7.0rc7.dist-info → mlrun-1.7.0rc11.dist-info}/METADATA +15 -15
- {mlrun-1.7.0rc7.dist-info → mlrun-1.7.0rc11.dist-info}/RECORD +91 -89
- {mlrun-1.7.0rc7.dist-info → mlrun-1.7.0rc11.dist-info}/LICENSE +0 -0
- {mlrun-1.7.0rc7.dist-info → mlrun-1.7.0rc11.dist-info}/WHEEL +0 -0
- {mlrun-1.7.0rc7.dist-info → mlrun-1.7.0rc11.dist-info}/entry_points.txt +0 -0
- {mlrun-1.7.0rc7.dist-info → mlrun-1.7.0rc11.dist-info}/top_level.txt +0 -0
mlrun/serving/v2_serving.py
CHANGED
|
@@ -21,6 +21,7 @@ import mlrun.common.model_monitoring
|
|
|
21
21
|
import mlrun.common.schemas.model_monitoring
|
|
22
22
|
from mlrun.artifacts import ModelArtifact # noqa: F401
|
|
23
23
|
from mlrun.config import config
|
|
24
|
+
from mlrun.errors import err_to_str
|
|
24
25
|
from mlrun.utils import logger, now_date
|
|
25
26
|
|
|
26
27
|
from ..common.helpers import parse_versioned_object_uri
|
|
@@ -62,11 +63,11 @@ class V2ModelServer(StepToDict):
|
|
|
62
63
|
class MyClass(V2ModelServer):
|
|
63
64
|
def load(self):
|
|
64
65
|
# load and initialize the model and/or other elements
|
|
65
|
-
model_file, extra_data = self.get_model(suffix=
|
|
66
|
+
model_file, extra_data = self.get_model(suffix=".pkl")
|
|
66
67
|
self.model = load(open(model_file, "rb"))
|
|
67
68
|
|
|
68
69
|
def predict(self, request):
|
|
69
|
-
events = np.array(request[
|
|
70
|
+
events = np.array(request["inputs"])
|
|
70
71
|
dmatrix = xgb.DMatrix(events)
|
|
71
72
|
result: xgb.DMatrix = self.model.predict(dmatrix)
|
|
72
73
|
return {"outputs": result.tolist()}
|
|
@@ -175,9 +176,9 @@ class V2ModelServer(StepToDict):
|
|
|
175
176
|
::
|
|
176
177
|
|
|
177
178
|
def load(self):
|
|
178
|
-
model_file, extra_data = self.get_model(suffix=
|
|
179
|
+
model_file, extra_data = self.get_model(suffix=".pkl")
|
|
179
180
|
self.model = load(open(model_file, "rb"))
|
|
180
|
-
categories = extra_data[
|
|
181
|
+
categories = extra_data["categories"].as_df()
|
|
181
182
|
|
|
182
183
|
Parameters
|
|
183
184
|
----------
|
|
@@ -523,7 +524,7 @@ def _init_endpoint_record(
|
|
|
523
524
|
graph_server.function_uri
|
|
524
525
|
)
|
|
525
526
|
except Exception as e:
|
|
526
|
-
logger.error("Failed to parse function URI", exc=e)
|
|
527
|
+
logger.error("Failed to parse function URI", exc=err_to_str(e))
|
|
527
528
|
return None
|
|
528
529
|
|
|
529
530
|
# Generating version model value based on the model name and model version
|
|
@@ -576,9 +577,9 @@ def _init_endpoint_record(
|
|
|
576
577
|
)
|
|
577
578
|
|
|
578
579
|
except Exception as e:
|
|
579
|
-
logger.error("Failed to create endpoint record", exc=e)
|
|
580
|
+
logger.error("Failed to create endpoint record", exc=err_to_str(e))
|
|
580
581
|
|
|
581
582
|
except Exception as e:
|
|
582
|
-
logger.error("Failed to retrieve model endpoint object", exc=e)
|
|
583
|
+
logger.error("Failed to retrieve model endpoint object", exc=err_to_str(e))
|
|
583
584
|
|
|
584
585
|
return uid
|
mlrun/utils/helpers.py
CHANGED
mlrun/utils/http.py
CHANGED
|
@@ -44,6 +44,8 @@ class NotificationBase:
|
|
|
44
44
|
] = mlrun.common.schemas.NotificationSeverity.INFO,
|
|
45
45
|
runs: typing.Union[mlrun.lists.RunList, list] = None,
|
|
46
46
|
custom_html: str = None,
|
|
47
|
+
alert: mlrun.common.schemas.AlertConfig = None,
|
|
48
|
+
event_data: mlrun.common.schemas.Event = None,
|
|
47
49
|
):
|
|
48
50
|
raise NotImplementedError()
|
|
49
51
|
|
|
@@ -61,6 +63,8 @@ class NotificationBase:
|
|
|
61
63
|
] = mlrun.common.schemas.NotificationSeverity.INFO,
|
|
62
64
|
runs: typing.Union[mlrun.lists.RunList, list] = None,
|
|
63
65
|
custom_html: str = None,
|
|
66
|
+
alert: mlrun.common.schemas.AlertConfig = None,
|
|
67
|
+
event_data: mlrun.common.schemas.Event = None,
|
|
64
68
|
) -> str:
|
|
65
69
|
if custom_html:
|
|
66
70
|
return custom_html
|
|
@@ -68,6 +72,14 @@ class NotificationBase:
|
|
|
68
72
|
if self.name:
|
|
69
73
|
message = f"{self.name}: {message}"
|
|
70
74
|
|
|
75
|
+
if alert:
|
|
76
|
+
if not event_data:
|
|
77
|
+
return f"[{severity}] {message}"
|
|
78
|
+
return (
|
|
79
|
+
f"[{severity}] {message} for project {alert.project} "
|
|
80
|
+
f"UID {event_data.entity.id}. Value {event_data.value}"
|
|
81
|
+
)
|
|
82
|
+
|
|
71
83
|
if not runs:
|
|
72
84
|
return f"[{severity}] {message}"
|
|
73
85
|
|
|
@@ -36,6 +36,8 @@ class ConsoleNotification(NotificationBase):
|
|
|
36
36
|
] = mlrun.common.schemas.NotificationSeverity.INFO,
|
|
37
37
|
runs: typing.Union[mlrun.lists.RunList, list] = None,
|
|
38
38
|
custom_html: str = None,
|
|
39
|
+
alert: mlrun.common.schemas.AlertConfig = None,
|
|
40
|
+
event_data: mlrun.common.schemas.Event = None,
|
|
39
41
|
):
|
|
40
42
|
severity = self._resolve_severity(severity)
|
|
41
43
|
print(f"[{severity}] {message}")
|
|
@@ -38,6 +38,8 @@ class GitNotification(NotificationBase):
|
|
|
38
38
|
] = mlrun.common.schemas.NotificationSeverity.INFO,
|
|
39
39
|
runs: typing.Union[mlrun.lists.RunList, list] = None,
|
|
40
40
|
custom_html: str = None,
|
|
41
|
+
alert: mlrun.common.schemas.AlertConfig = None,
|
|
42
|
+
event_data: mlrun.common.schemas.Event = None,
|
|
41
43
|
):
|
|
42
44
|
git_repo = self.params.get("repo", None)
|
|
43
45
|
git_issue = self.params.get("issue", None)
|
|
@@ -50,7 +52,7 @@ class GitNotification(NotificationBase):
|
|
|
50
52
|
server = self.params.get("server", None)
|
|
51
53
|
gitlab = self.params.get("gitlab", False)
|
|
52
54
|
await self._pr_comment(
|
|
53
|
-
self._get_html(message, severity, runs, custom_html),
|
|
55
|
+
self._get_html(message, severity, runs, custom_html, alert, event_data),
|
|
54
56
|
git_repo,
|
|
55
57
|
git_issue,
|
|
56
58
|
merge_request=git_merge_request,
|
|
@@ -53,6 +53,8 @@ class IPythonNotification(NotificationBase):
|
|
|
53
53
|
] = mlrun.common.schemas.NotificationSeverity.INFO,
|
|
54
54
|
runs: typing.Union[mlrun.lists.RunList, list] = None,
|
|
55
55
|
custom_html: str = None,
|
|
56
|
+
alert: mlrun.common.schemas.AlertConfig = None,
|
|
57
|
+
event_data: mlrun.common.schemas.Event = None,
|
|
56
58
|
):
|
|
57
59
|
if not self._ipython:
|
|
58
60
|
mlrun.utils.helpers.logger.debug(
|
|
@@ -42,6 +42,8 @@ class SlackNotification(NotificationBase):
|
|
|
42
42
|
] = mlrun.common.schemas.NotificationSeverity.INFO,
|
|
43
43
|
runs: typing.Union[mlrun.lists.RunList, list] = None,
|
|
44
44
|
custom_html: str = None,
|
|
45
|
+
alert: mlrun.common.schemas.AlertConfig = None,
|
|
46
|
+
event_data: mlrun.common.schemas.Event = None,
|
|
45
47
|
):
|
|
46
48
|
webhook = self.params.get("webhook", None) or mlrun.get_secret_or_env(
|
|
47
49
|
"SLACK_WEBHOOK"
|
|
@@ -53,7 +55,7 @@ class SlackNotification(NotificationBase):
|
|
|
53
55
|
)
|
|
54
56
|
return
|
|
55
57
|
|
|
56
|
-
data = self._generate_slack_data(message, severity, runs)
|
|
58
|
+
data = self._generate_slack_data(message, severity, runs, alert, event_data)
|
|
57
59
|
|
|
58
60
|
async with aiohttp.ClientSession() as session:
|
|
59
61
|
async with session.post(webhook, json=data) as response:
|
|
@@ -66,12 +68,14 @@ class SlackNotification(NotificationBase):
|
|
|
66
68
|
mlrun.common.schemas.NotificationSeverity, str
|
|
67
69
|
] = mlrun.common.schemas.NotificationSeverity.INFO,
|
|
68
70
|
runs: typing.Union[mlrun.lists.RunList, list] = None,
|
|
71
|
+
alert: mlrun.common.schemas.AlertConfig = None,
|
|
72
|
+
event_data: mlrun.common.schemas.Event = None,
|
|
69
73
|
) -> dict:
|
|
70
74
|
data = {
|
|
71
75
|
"blocks": [
|
|
72
76
|
{
|
|
73
|
-
"type": "
|
|
74
|
-
"text":
|
|
77
|
+
"type": "header",
|
|
78
|
+
"text": {"type": "plain_text", "text": f"[{severity}] {message}"},
|
|
75
79
|
},
|
|
76
80
|
]
|
|
77
81
|
}
|
|
@@ -80,22 +84,46 @@ class SlackNotification(NotificationBase):
|
|
|
80
84
|
{"type": "section", "text": self._get_slack_row(self.name)}
|
|
81
85
|
)
|
|
82
86
|
|
|
83
|
-
if
|
|
84
|
-
|
|
87
|
+
if alert:
|
|
88
|
+
fields = self._get_alert_fields(alert, event_data)
|
|
85
89
|
|
|
86
|
-
|
|
87
|
-
|
|
90
|
+
for i in range(len(fields)):
|
|
91
|
+
data["blocks"].append({"type": "section", "text": fields[i]})
|
|
92
|
+
else:
|
|
93
|
+
if not runs:
|
|
94
|
+
return data
|
|
95
|
+
|
|
96
|
+
if isinstance(runs, list):
|
|
97
|
+
runs = mlrun.lists.RunList(runs)
|
|
88
98
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
99
|
+
fields = [self._get_slack_row("*Runs*"), self._get_slack_row("*Results*")]
|
|
100
|
+
for run in runs:
|
|
101
|
+
fields.append(self._get_run_line(run))
|
|
102
|
+
fields.append(self._get_run_result(run))
|
|
93
103
|
|
|
94
|
-
|
|
95
|
-
|
|
104
|
+
for i in range(0, len(fields), 8):
|
|
105
|
+
data["blocks"].append({"type": "section", "fields": fields[i : i + 8]})
|
|
96
106
|
|
|
97
107
|
return data
|
|
98
108
|
|
|
109
|
+
def _get_alert_fields(
|
|
110
|
+
self,
|
|
111
|
+
alert: mlrun.common.schemas.AlertConfig,
|
|
112
|
+
event_data: mlrun.common.schemas.Event,
|
|
113
|
+
) -> list:
|
|
114
|
+
line = [
|
|
115
|
+
self._get_slack_row(f":bell: {alert.name} alert has occurred"),
|
|
116
|
+
self._get_slack_row(f"*Project:*\n{alert.project}"),
|
|
117
|
+
self._get_slack_row(f"*UID:*\n{event_data.entity.id}"),
|
|
118
|
+
]
|
|
119
|
+
if event_data.value is not None:
|
|
120
|
+
line.append(self._get_slack_row(f"*Event data:*\n{event_data.value}"))
|
|
121
|
+
|
|
122
|
+
if url := mlrun.utils.helpers.get_ui_url(alert.project, event_data.entity.id):
|
|
123
|
+
line.append(self._get_slack_row(f"*Overview:*\n<{url}|*Job overview*>"))
|
|
124
|
+
|
|
125
|
+
return line
|
|
126
|
+
|
|
99
127
|
def _get_run_line(self, run: dict) -> dict:
|
|
100
128
|
meta = run["metadata"]
|
|
101
129
|
url = mlrun.utils.helpers.get_ui_url(meta.get("project"), meta.get("uid"))
|
|
@@ -36,6 +36,8 @@ class WebhookNotification(NotificationBase):
|
|
|
36
36
|
] = mlrun.common.schemas.NotificationSeverity.INFO,
|
|
37
37
|
runs: typing.Union[mlrun.lists.RunList, list] = None,
|
|
38
38
|
custom_html: str = None,
|
|
39
|
+
alert: mlrun.common.schemas.AlertConfig = None,
|
|
40
|
+
event_data: mlrun.common.schemas.Event = None,
|
|
39
41
|
):
|
|
40
42
|
url = self.params.get("url", None)
|
|
41
43
|
method = self.params.get("method", "post").lower()
|
|
@@ -46,9 +48,17 @@ class WebhookNotification(NotificationBase):
|
|
|
46
48
|
request_body = {
|
|
47
49
|
"message": message,
|
|
48
50
|
"severity": severity,
|
|
49
|
-
"runs": runs,
|
|
50
51
|
}
|
|
51
52
|
|
|
53
|
+
if runs:
|
|
54
|
+
request_body["runs"] = runs
|
|
55
|
+
|
|
56
|
+
if alert:
|
|
57
|
+
request_body["alert"] = alert.dict()
|
|
58
|
+
if event_data:
|
|
59
|
+
request_body["value"] = event_data.value
|
|
60
|
+
request_body["id"] = event_data.entity.id
|
|
61
|
+
|
|
52
62
|
if custom_html:
|
|
53
63
|
request_body["custom_html"] = custom_html
|
|
54
64
|
|
mlrun/utils/retryer.py
CHANGED
|
@@ -117,7 +117,7 @@ class Retryer:
|
|
|
117
117
|
self._raise_last_exception()
|
|
118
118
|
|
|
119
119
|
def _prepare(self):
|
|
120
|
-
self.start_time = time.
|
|
120
|
+
self.start_time = time.monotonic()
|
|
121
121
|
self.last_exception = None
|
|
122
122
|
|
|
123
123
|
# Check if backoff is just a simple interval
|
|
@@ -138,6 +138,7 @@ class Retryer:
|
|
|
138
138
|
except mlrun.errors.MLRunFatalFailureError as exc:
|
|
139
139
|
raise exc.original_exception
|
|
140
140
|
except Exception as exc:
|
|
141
|
+
self.last_exception = exc
|
|
141
142
|
return (
|
|
142
143
|
None,
|
|
143
144
|
self.last_exception,
|
|
@@ -172,7 +173,7 @@ class Retryer:
|
|
|
172
173
|
) from self.last_exception
|
|
173
174
|
|
|
174
175
|
def _timeout_exceeded(self, next_interval=None):
|
|
175
|
-
now = time.
|
|
176
|
+
now = time.monotonic()
|
|
176
177
|
if next_interval:
|
|
177
178
|
now = now + next_interval
|
|
178
179
|
return self.timeout is not None and now >= self.start_time + self.timeout
|
mlrun/utils/version/version.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: mlrun
|
|
3
|
-
Version: 1.7.
|
|
3
|
+
Version: 1.7.0rc11
|
|
4
4
|
Summary: Tracking and config of machine learning runs
|
|
5
5
|
Home-page: https://github.com/mlrun/mlrun
|
|
6
6
|
Author: Yaron Haviv
|
|
@@ -37,20 +37,20 @@ Requires-Dist: pyyaml ~=5.1
|
|
|
37
37
|
Requires-Dist: requests ~=2.31
|
|
38
38
|
Requires-Dist: tabulate ~=0.8.6
|
|
39
39
|
Requires-Dist: v3io ~=0.6.4
|
|
40
|
-
Requires-Dist: pydantic
|
|
40
|
+
Requires-Dist: pydantic <1.10.15,>=1.10.8
|
|
41
41
|
Requires-Dist: mergedeep ~=1.3
|
|
42
42
|
Requires-Dist: v3io-frames ~=0.10.12
|
|
43
43
|
Requires-Dist: semver ~=3.0
|
|
44
44
|
Requires-Dist: dependency-injector ~=4.41
|
|
45
|
-
Requires-Dist: fsspec
|
|
45
|
+
Requires-Dist: fsspec <2024.4,>=2023.9.2
|
|
46
46
|
Requires-Dist: v3iofs ~=0.1.17
|
|
47
|
-
Requires-Dist: storey ~=1.7.
|
|
47
|
+
Requires-Dist: storey ~=1.7.7
|
|
48
48
|
Requires-Dist: inflection ~=0.5.0
|
|
49
49
|
Requires-Dist: python-dotenv ~=0.17.0
|
|
50
50
|
Requires-Dist: setuptools ~=69.1
|
|
51
51
|
Requires-Dist: deprecated ~=1.2
|
|
52
52
|
Requires-Dist: jinja2 >=3.1.3,~=3.1
|
|
53
|
-
Requires-Dist: orjson
|
|
53
|
+
Requires-Dist: orjson <4,>=3.9.15
|
|
54
54
|
Provides-Extra: alibaba-oss
|
|
55
55
|
Requires-Dist: ossfs ==2023.12.0 ; extra == 'alibaba-oss'
|
|
56
56
|
Requires-Dist: oss2 ==2.18.1 ; extra == 'alibaba-oss'
|
|
@@ -66,7 +66,7 @@ Requires-Dist: boto3 <1.29.0,>=1.28.0 ; extra == 'all'
|
|
|
66
66
|
Requires-Dist: dask ~=2023.9.0 ; extra == 'all'
|
|
67
67
|
Requires-Dist: databricks-sdk ~=0.13.0 ; extra == 'all'
|
|
68
68
|
Requires-Dist: distributed ~=2023.9.0 ; extra == 'all'
|
|
69
|
-
Requires-Dist: gcsfs
|
|
69
|
+
Requires-Dist: gcsfs <2024.4,>=2023.9.2 ; extra == 'all'
|
|
70
70
|
Requires-Dist: google-cloud-bigquery[bqstorage,pandas] ==3.14.1 ; extra == 'all'
|
|
71
71
|
Requires-Dist: google-cloud-storage ==2.14.0 ; extra == 'all'
|
|
72
72
|
Requires-Dist: google-cloud ==0.34 ; extra == 'all'
|
|
@@ -79,14 +79,14 @@ Requires-Dist: ossfs ==2023.12.0 ; extra == 'all'
|
|
|
79
79
|
Requires-Dist: plotly <5.12.0,~=5.4 ; extra == 'all'
|
|
80
80
|
Requires-Dist: pyopenssl >=23 ; extra == 'all'
|
|
81
81
|
Requires-Dist: redis ~=4.3 ; extra == 'all'
|
|
82
|
-
Requires-Dist: s3fs
|
|
82
|
+
Requires-Dist: s3fs <2024.4,>=2023.9.2 ; extra == 'all'
|
|
83
83
|
Requires-Dist: sqlalchemy ~=1.4 ; extra == 'all'
|
|
84
84
|
Provides-Extra: api
|
|
85
85
|
Requires-Dist: uvicorn ~=0.27.1 ; extra == 'api'
|
|
86
86
|
Requires-Dist: dask-kubernetes ~=0.11.0 ; extra == 'api'
|
|
87
87
|
Requires-Dist: apscheduler <4,>=3.10.3 ; extra == 'api'
|
|
88
88
|
Requires-Dist: objgraph ~=3.6 ; extra == 'api'
|
|
89
|
-
Requires-Dist: igz-mgmt ~=0.1.
|
|
89
|
+
Requires-Dist: igz-mgmt ~=0.1.3 ; extra == 'api'
|
|
90
90
|
Requires-Dist: humanfriendly ~=10.0 ; extra == 'api'
|
|
91
91
|
Requires-Dist: fastapi ~=0.110.0 ; extra == 'api'
|
|
92
92
|
Requires-Dist: sqlalchemy ~=1.4 ; extra == 'api'
|
|
@@ -115,7 +115,7 @@ Requires-Dist: boto3 <1.29.0,>=1.28.0 ; extra == 'complete'
|
|
|
115
115
|
Requires-Dist: dask ~=2023.9.0 ; extra == 'complete'
|
|
116
116
|
Requires-Dist: databricks-sdk ~=0.13.0 ; extra == 'complete'
|
|
117
117
|
Requires-Dist: distributed ~=2023.9.0 ; extra == 'complete'
|
|
118
|
-
Requires-Dist: gcsfs
|
|
118
|
+
Requires-Dist: gcsfs <2024.4,>=2023.9.2 ; extra == 'complete'
|
|
119
119
|
Requires-Dist: google-cloud-bigquery[bqstorage,pandas] ==3.14.1 ; extra == 'complete'
|
|
120
120
|
Requires-Dist: graphviz ~=0.20.0 ; extra == 'complete'
|
|
121
121
|
Requires-Dist: kafka-python ~=2.0 ; extra == 'complete'
|
|
@@ -126,7 +126,7 @@ Requires-Dist: ossfs ==2023.12.0 ; extra == 'complete'
|
|
|
126
126
|
Requires-Dist: plotly <5.12.0,~=5.4 ; extra == 'complete'
|
|
127
127
|
Requires-Dist: pyopenssl >=23 ; extra == 'complete'
|
|
128
128
|
Requires-Dist: redis ~=4.3 ; extra == 'complete'
|
|
129
|
-
Requires-Dist: s3fs
|
|
129
|
+
Requires-Dist: s3fs <2024.4,>=2023.9.2 ; extra == 'complete'
|
|
130
130
|
Requires-Dist: sqlalchemy ~=1.4 ; extra == 'complete'
|
|
131
131
|
Provides-Extra: complete-api
|
|
132
132
|
Requires-Dist: adlfs ==2023.9.0 ; extra == 'complete-api'
|
|
@@ -143,11 +143,11 @@ Requires-Dist: dask ~=2023.9.0 ; extra == 'complete-api'
|
|
|
143
143
|
Requires-Dist: databricks-sdk ~=0.13.0 ; extra == 'complete-api'
|
|
144
144
|
Requires-Dist: distributed ~=2023.9.0 ; extra == 'complete-api'
|
|
145
145
|
Requires-Dist: fastapi ~=0.110.0 ; extra == 'complete-api'
|
|
146
|
-
Requires-Dist: gcsfs
|
|
146
|
+
Requires-Dist: gcsfs <2024.4,>=2023.9.2 ; extra == 'complete-api'
|
|
147
147
|
Requires-Dist: google-cloud-bigquery[bqstorage,pandas] ==3.14.1 ; extra == 'complete-api'
|
|
148
148
|
Requires-Dist: graphviz ~=0.20.0 ; extra == 'complete-api'
|
|
149
149
|
Requires-Dist: humanfriendly ~=10.0 ; extra == 'complete-api'
|
|
150
|
-
Requires-Dist: igz-mgmt ~=0.1.
|
|
150
|
+
Requires-Dist: igz-mgmt ~=0.1.3 ; extra == 'complete-api'
|
|
151
151
|
Requires-Dist: kafka-python ~=2.0 ; extra == 'complete-api'
|
|
152
152
|
Requires-Dist: mlflow ~=2.8 ; extra == 'complete-api'
|
|
153
153
|
Requires-Dist: msrest ~=0.6.21 ; extra == 'complete-api'
|
|
@@ -158,7 +158,7 @@ Requires-Dist: plotly <5.12.0,~=5.4 ; extra == 'complete-api'
|
|
|
158
158
|
Requires-Dist: pymysql ~=1.0 ; extra == 'complete-api'
|
|
159
159
|
Requires-Dist: pyopenssl >=23 ; extra == 'complete-api'
|
|
160
160
|
Requires-Dist: redis ~=4.3 ; extra == 'complete-api'
|
|
161
|
-
Requires-Dist: s3fs
|
|
161
|
+
Requires-Dist: s3fs <2024.4,>=2023.9.2 ; extra == 'complete-api'
|
|
162
162
|
Requires-Dist: sqlalchemy ~=1.4 ; extra == 'complete-api'
|
|
163
163
|
Requires-Dist: timelength ~=1.1 ; extra == 'complete-api'
|
|
164
164
|
Requires-Dist: uvicorn ~=0.27.1 ; extra == 'complete-api'
|
|
@@ -174,7 +174,7 @@ Requires-Dist: google-cloud ==0.34 ; extra == 'google-cloud'
|
|
|
174
174
|
Provides-Extra: google-cloud-bigquery
|
|
175
175
|
Requires-Dist: google-cloud-bigquery[bqstorage,pandas] ==3.14.1 ; extra == 'google-cloud-bigquery'
|
|
176
176
|
Provides-Extra: google-cloud-storage
|
|
177
|
-
Requires-Dist: gcsfs
|
|
177
|
+
Requires-Dist: gcsfs <2024.4,>=2023.9.2 ; extra == 'google-cloud-storage'
|
|
178
178
|
Provides-Extra: graphviz
|
|
179
179
|
Requires-Dist: graphviz ~=0.20.0 ; extra == 'graphviz'
|
|
180
180
|
Provides-Extra: kafka
|
|
@@ -189,7 +189,7 @@ Requires-Dist: redis ~=4.3 ; extra == 'redis'
|
|
|
189
189
|
Provides-Extra: s3
|
|
190
190
|
Requires-Dist: boto3 <1.29.0,>=1.28.0 ; extra == 's3'
|
|
191
191
|
Requires-Dist: aiobotocore <2.8,>=2.5.0 ; extra == 's3'
|
|
192
|
-
Requires-Dist: s3fs
|
|
192
|
+
Requires-Dist: s3fs <2024.4,>=2023.9.2 ; extra == 's3'
|
|
193
193
|
Provides-Extra: sqlalchemy
|
|
194
194
|
Requires-Dist: sqlalchemy ~=1.4 ; extra == 'sqlalchemy'
|
|
195
195
|
|