mlrun 1.7.0rc6__py3-none-any.whl → 1.7.0rc9__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/__main__.py +2 -0
- mlrun/common/constants.py +6 -0
- mlrun/common/schemas/__init__.py +5 -0
- mlrun/common/schemas/api_gateway.py +8 -1
- mlrun/common/schemas/hub.py +7 -9
- mlrun/common/schemas/model_monitoring/__init__.py +4 -0
- mlrun/common/schemas/model_monitoring/constants.py +36 -19
- mlrun/{model_monitoring/stores/models/__init__.py → common/schemas/pagination.py} +9 -10
- mlrun/common/schemas/project.py +16 -10
- mlrun/common/types.py +7 -1
- mlrun/config.py +35 -10
- mlrun/data_types/data_types.py +4 -0
- mlrun/datastore/__init__.py +3 -7
- mlrun/datastore/alibaba_oss.py +130 -0
- mlrun/datastore/azure_blob.py +4 -5
- mlrun/datastore/base.py +22 -16
- mlrun/datastore/datastore.py +4 -0
- mlrun/datastore/datastore_profile.py +19 -1
- mlrun/datastore/google_cloud_storage.py +1 -1
- mlrun/datastore/snowflake_utils.py +43 -0
- mlrun/datastore/sources.py +11 -29
- mlrun/datastore/targets.py +131 -11
- mlrun/datastore/utils.py +10 -5
- mlrun/db/base.py +58 -6
- mlrun/db/httpdb.py +183 -77
- mlrun/db/nopdb.py +110 -0
- mlrun/feature_store/api.py +3 -2
- mlrun/feature_store/retrieval/spark_merger.py +27 -23
- mlrun/frameworks/tf_keras/callbacks/logging_callback.py +1 -1
- mlrun/frameworks/tf_keras/mlrun_interface.py +2 -2
- mlrun/kfpops.py +2 -5
- mlrun/launcher/base.py +1 -1
- mlrun/launcher/client.py +2 -2
- mlrun/model.py +1 -0
- mlrun/model_monitoring/__init__.py +1 -1
- mlrun/model_monitoring/api.py +104 -295
- mlrun/model_monitoring/controller.py +25 -25
- mlrun/model_monitoring/db/__init__.py +16 -0
- mlrun/model_monitoring/{stores → db/stores}/__init__.py +43 -34
- mlrun/model_monitoring/db/stores/base/__init__.py +15 -0
- mlrun/model_monitoring/{stores/model_endpoint_store.py → db/stores/base/store.py} +47 -6
- mlrun/model_monitoring/db/stores/sqldb/__init__.py +13 -0
- mlrun/model_monitoring/db/stores/sqldb/models/__init__.py +49 -0
- mlrun/model_monitoring/{stores → db/stores/sqldb}/models/base.py +76 -3
- mlrun/model_monitoring/db/stores/sqldb/models/mysql.py +68 -0
- mlrun/model_monitoring/{stores → db/stores/sqldb}/models/sqlite.py +13 -1
- mlrun/model_monitoring/db/stores/sqldb/sql_store.py +662 -0
- mlrun/model_monitoring/db/stores/v3io_kv/__init__.py +13 -0
- mlrun/model_monitoring/{stores/kv_model_endpoint_store.py → db/stores/v3io_kv/kv_store.py} +134 -3
- mlrun/model_monitoring/helpers.py +3 -3
- mlrun/model_monitoring/stream_processing.py +41 -9
- mlrun/model_monitoring/tracking_policy.py +7 -1
- mlrun/model_monitoring/writer.py +4 -36
- mlrun/projects/pipelines.py +14 -2
- mlrun/projects/project.py +141 -122
- mlrun/run.py +8 -2
- mlrun/runtimes/__init__.py +16 -0
- mlrun/runtimes/base.py +10 -1
- mlrun/runtimes/kubejob.py +26 -121
- mlrun/runtimes/nuclio/api_gateway.py +243 -66
- mlrun/runtimes/nuclio/application/application.py +79 -1
- mlrun/runtimes/nuclio/application/reverse_proxy.go +9 -1
- mlrun/runtimes/nuclio/function.py +14 -8
- mlrun/runtimes/nuclio/serving.py +30 -34
- mlrun/runtimes/pod.py +171 -0
- mlrun/runtimes/utils.py +0 -28
- mlrun/serving/remote.py +2 -3
- mlrun/serving/routers.py +4 -3
- mlrun/serving/server.py +5 -7
- mlrun/serving/states.py +40 -23
- mlrun/serving/v2_serving.py +4 -3
- mlrun/utils/helpers.py +34 -0
- mlrun/utils/http.py +1 -1
- mlrun/utils/retryer.py +1 -0
- mlrun/utils/version/version.json +2 -2
- {mlrun-1.7.0rc6.dist-info → mlrun-1.7.0rc9.dist-info}/METADATA +25 -16
- {mlrun-1.7.0rc6.dist-info → mlrun-1.7.0rc9.dist-info}/RECORD +81 -75
- mlrun/model_monitoring/batch.py +0 -933
- mlrun/model_monitoring/stores/models/mysql.py +0 -34
- mlrun/model_monitoring/stores/sql_model_endpoint_store.py +0 -382
- {mlrun-1.7.0rc6.dist-info → mlrun-1.7.0rc9.dist-info}/LICENSE +0 -0
- {mlrun-1.7.0rc6.dist-info → mlrun-1.7.0rc9.dist-info}/WHEEL +0 -0
- {mlrun-1.7.0rc6.dist-info → mlrun-1.7.0rc9.dist-info}/entry_points.txt +0 -0
- {mlrun-1.7.0rc6.dist-info → mlrun-1.7.0rc9.dist-info}/top_level.txt +0 -0
mlrun/serving/states.py
CHANGED
|
@@ -14,7 +14,6 @@
|
|
|
14
14
|
|
|
15
15
|
__all__ = ["TaskStep", "RouterStep", "RootFlowStep", "ErrorStep"]
|
|
16
16
|
|
|
17
|
-
import asyncio
|
|
18
17
|
import os
|
|
19
18
|
import pathlib
|
|
20
19
|
import traceback
|
|
@@ -591,7 +590,7 @@ class RouterStep(TaskStep):
|
|
|
591
590
|
|
|
592
591
|
kind = "router"
|
|
593
592
|
default_shape = "doubleoctagon"
|
|
594
|
-
_dict_fields = _task_step_fields + ["routes"]
|
|
593
|
+
_dict_fields = _task_step_fields + ["routes", "engine"]
|
|
595
594
|
_default_class = "mlrun.serving.ModelRouter"
|
|
596
595
|
|
|
597
596
|
def __init__(
|
|
@@ -604,6 +603,7 @@ class RouterStep(TaskStep):
|
|
|
604
603
|
function: str = None,
|
|
605
604
|
input_path: str = None,
|
|
606
605
|
result_path: str = None,
|
|
606
|
+
engine: str = None,
|
|
607
607
|
):
|
|
608
608
|
super().__init__(
|
|
609
609
|
class_name,
|
|
@@ -616,6 +616,8 @@ class RouterStep(TaskStep):
|
|
|
616
616
|
)
|
|
617
617
|
self._routes: ObjectDict = None
|
|
618
618
|
self.routes = routes
|
|
619
|
+
self.engine = engine
|
|
620
|
+
self._controller = None
|
|
619
621
|
|
|
620
622
|
def get_children(self):
|
|
621
623
|
"""get child steps (routes)"""
|
|
@@ -685,6 +687,33 @@ class RouterStep(TaskStep):
|
|
|
685
687
|
self._set_error_handler()
|
|
686
688
|
self._post_init(mode)
|
|
687
689
|
|
|
690
|
+
if self.engine == "async":
|
|
691
|
+
self._build_async_flow()
|
|
692
|
+
self._run_async_flow()
|
|
693
|
+
|
|
694
|
+
def _build_async_flow(self):
|
|
695
|
+
"""initialize and build the async/storey DAG"""
|
|
696
|
+
|
|
697
|
+
self.respond()
|
|
698
|
+
source, self._wait_for_result = _init_async_objects(self.context, [self])
|
|
699
|
+
source.to(self.async_object)
|
|
700
|
+
|
|
701
|
+
self._async_flow = source
|
|
702
|
+
|
|
703
|
+
def _run_async_flow(self):
|
|
704
|
+
self._controller = self._async_flow.run()
|
|
705
|
+
|
|
706
|
+
def run(self, event, *args, **kwargs):
|
|
707
|
+
if self._controller:
|
|
708
|
+
# async flow (using storey)
|
|
709
|
+
event._awaitable_result = None
|
|
710
|
+
resp = self._controller.emit(
|
|
711
|
+
event, return_awaitable_result=self._wait_for_result
|
|
712
|
+
)
|
|
713
|
+
return resp.await_result()
|
|
714
|
+
|
|
715
|
+
return super().run(event, *args, **kwargs)
|
|
716
|
+
|
|
688
717
|
def __getitem__(self, name):
|
|
689
718
|
return self._routes[name]
|
|
690
719
|
|
|
@@ -1205,18 +1234,9 @@ class FlowStep(BaseStep):
|
|
|
1205
1234
|
"""wait for completion of run in async flows"""
|
|
1206
1235
|
|
|
1207
1236
|
if self._controller:
|
|
1208
|
-
if
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
if hasattr(self._controller, "terminate"):
|
|
1212
|
-
await self._controller.terminate()
|
|
1213
|
-
return await self._controller.await_termination()
|
|
1214
|
-
|
|
1215
|
-
return terminate_and_await_termination()
|
|
1216
|
-
else:
|
|
1217
|
-
if hasattr(self._controller, "terminate"):
|
|
1218
|
-
self._controller.terminate()
|
|
1219
|
-
return self._controller.await_termination()
|
|
1237
|
+
if hasattr(self._controller, "terminate"):
|
|
1238
|
+
self._controller.terminate()
|
|
1239
|
+
return self._controller.await_termination()
|
|
1220
1240
|
|
|
1221
1241
|
def plot(self, filename=None, format=None, source=None, targets=None, **kw):
|
|
1222
1242
|
"""plot/save graph using graphviz
|
|
@@ -1504,21 +1524,18 @@ def _init_async_objects(context, steps):
|
|
|
1504
1524
|
endpoint = None
|
|
1505
1525
|
options = {}
|
|
1506
1526
|
options.update(step.options)
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
if stream_path.startswith("kafka://") or kafka_bootstrap_servers:
|
|
1511
|
-
topic, bootstrap_servers = parse_kafka_url(
|
|
1512
|
-
stream_path, kafka_bootstrap_servers
|
|
1513
|
-
)
|
|
1527
|
+
kafka_brokers = options.pop("kafka_brokers", None)
|
|
1528
|
+
if stream_path.startswith("kafka://") or kafka_brokers:
|
|
1529
|
+
topic, brokers = parse_kafka_url(stream_path, kafka_brokers)
|
|
1514
1530
|
|
|
1515
1531
|
kafka_producer_options = options.pop(
|
|
1516
|
-
"kafka_producer_options",
|
|
1532
|
+
"kafka_producer_options",
|
|
1533
|
+
options.pop("kafka_bootstrap_servers", None),
|
|
1517
1534
|
)
|
|
1518
1535
|
|
|
1519
1536
|
step._async_object = storey.KafkaTarget(
|
|
1520
1537
|
topic=topic,
|
|
1521
|
-
|
|
1538
|
+
brokers=brokers,
|
|
1522
1539
|
producer_options=kafka_producer_options,
|
|
1523
1540
|
context=context,
|
|
1524
1541
|
**options,
|
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
|
|
@@ -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
|
@@ -1405,6 +1405,18 @@ def as_number(field_name, field_value):
|
|
|
1405
1405
|
|
|
1406
1406
|
|
|
1407
1407
|
def filter_warnings(action, category):
|
|
1408
|
+
"""
|
|
1409
|
+
Decorator to filter warnings
|
|
1410
|
+
|
|
1411
|
+
Example::
|
|
1412
|
+
@filter_warnings("ignore", FutureWarning)
|
|
1413
|
+
def my_function():
|
|
1414
|
+
pass
|
|
1415
|
+
|
|
1416
|
+
:param action: one of "error", "ignore", "always", "default", "module", or "once"
|
|
1417
|
+
:param category: a class that the warning must be a subclass of
|
|
1418
|
+
"""
|
|
1419
|
+
|
|
1408
1420
|
def decorator(function):
|
|
1409
1421
|
def wrapper(*args, **kwargs):
|
|
1410
1422
|
# context manager that copies and, upon exit, restores the warnings filter and the showwarning() function.
|
|
@@ -1562,3 +1574,25 @@ def is_safe_path(base, filepath, is_symlink=False):
|
|
|
1562
1574
|
os.path.abspath(filepath) if not is_symlink else os.path.realpath(filepath)
|
|
1563
1575
|
)
|
|
1564
1576
|
return base == os.path.commonpath((base, resolved_filepath))
|
|
1577
|
+
|
|
1578
|
+
|
|
1579
|
+
def get_serving_spec():
|
|
1580
|
+
data = None
|
|
1581
|
+
|
|
1582
|
+
# we will have the serving spec in either mounted config map
|
|
1583
|
+
# or env depending on the size of the spec and configuration
|
|
1584
|
+
|
|
1585
|
+
try:
|
|
1586
|
+
with open(mlrun.common.constants.MLRUN_SERVING_SPEC_PATH) as f:
|
|
1587
|
+
data = f.read()
|
|
1588
|
+
except FileNotFoundError:
|
|
1589
|
+
pass
|
|
1590
|
+
|
|
1591
|
+
if data is None:
|
|
1592
|
+
data = os.environ.get("SERVING_SPEC_ENV", "")
|
|
1593
|
+
if not data:
|
|
1594
|
+
raise mlrun.errors.MLRunInvalidArgumentError(
|
|
1595
|
+
"Failed to find serving spec in env var or config file"
|
|
1596
|
+
)
|
|
1597
|
+
spec = json.loads(data)
|
|
1598
|
+
return spec
|
mlrun/utils/http.py
CHANGED
mlrun/utils/retryer.py
CHANGED
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.0rc9
|
|
4
4
|
Summary: Tracking and config of machine learning runs
|
|
5
5
|
Home-page: https://github.com/mlrun/mlrun
|
|
6
6
|
Author: Yaron Haviv
|
|
@@ -36,21 +36,24 @@ Requires-Dist: pyarrow <15,>=10.0
|
|
|
36
36
|
Requires-Dist: pyyaml ~=5.1
|
|
37
37
|
Requires-Dist: requests ~=2.31
|
|
38
38
|
Requires-Dist: tabulate ~=0.8.6
|
|
39
|
-
Requires-Dist: v3io ~=0.6.
|
|
40
|
-
Requires-Dist: pydantic
|
|
39
|
+
Requires-Dist: v3io ~=0.6.4
|
|
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
|
+
Provides-Extra: alibaba-oss
|
|
55
|
+
Requires-Dist: ossfs ==2023.12.0 ; extra == 'alibaba-oss'
|
|
56
|
+
Requires-Dist: oss2 ==2.18.1 ; extra == 'alibaba-oss'
|
|
54
57
|
Provides-Extra: all
|
|
55
58
|
Requires-Dist: adlfs ==2023.9.0 ; extra == 'all'
|
|
56
59
|
Requires-Dist: aiobotocore <2.8,>=2.5.0 ; extra == 'all'
|
|
@@ -63,7 +66,7 @@ Requires-Dist: boto3 <1.29.0,>=1.28.0 ; extra == 'all'
|
|
|
63
66
|
Requires-Dist: dask ~=2023.9.0 ; extra == 'all'
|
|
64
67
|
Requires-Dist: databricks-sdk ~=0.13.0 ; extra == 'all'
|
|
65
68
|
Requires-Dist: distributed ~=2023.9.0 ; extra == 'all'
|
|
66
|
-
Requires-Dist: gcsfs
|
|
69
|
+
Requires-Dist: gcsfs <2024.4,>=2023.9.2 ; extra == 'all'
|
|
67
70
|
Requires-Dist: google-cloud-bigquery[bqstorage,pandas] ==3.14.1 ; extra == 'all'
|
|
68
71
|
Requires-Dist: google-cloud-storage ==2.14.0 ; extra == 'all'
|
|
69
72
|
Requires-Dist: google-cloud ==0.34 ; extra == 'all'
|
|
@@ -71,17 +74,19 @@ Requires-Dist: graphviz ~=0.20.0 ; extra == 'all'
|
|
|
71
74
|
Requires-Dist: kafka-python ~=2.0 ; extra == 'all'
|
|
72
75
|
Requires-Dist: mlflow ~=2.8 ; extra == 'all'
|
|
73
76
|
Requires-Dist: msrest ~=0.6.21 ; extra == 'all'
|
|
77
|
+
Requires-Dist: oss2 ==2.18.1 ; extra == 'all'
|
|
78
|
+
Requires-Dist: ossfs ==2023.12.0 ; extra == 'all'
|
|
74
79
|
Requires-Dist: plotly <5.12.0,~=5.4 ; extra == 'all'
|
|
75
80
|
Requires-Dist: pyopenssl >=23 ; extra == 'all'
|
|
76
81
|
Requires-Dist: redis ~=4.3 ; extra == 'all'
|
|
77
|
-
Requires-Dist: s3fs
|
|
82
|
+
Requires-Dist: s3fs <2024.4,>=2023.9.2 ; extra == 'all'
|
|
78
83
|
Requires-Dist: sqlalchemy ~=1.4 ; extra == 'all'
|
|
79
84
|
Provides-Extra: api
|
|
80
85
|
Requires-Dist: uvicorn ~=0.27.1 ; extra == 'api'
|
|
81
86
|
Requires-Dist: dask-kubernetes ~=0.11.0 ; extra == 'api'
|
|
82
87
|
Requires-Dist: apscheduler <4,>=3.10.3 ; extra == 'api'
|
|
83
88
|
Requires-Dist: objgraph ~=3.6 ; extra == 'api'
|
|
84
|
-
Requires-Dist: igz-mgmt ~=0.1.
|
|
89
|
+
Requires-Dist: igz-mgmt ~=0.1.3 ; extra == 'api'
|
|
85
90
|
Requires-Dist: humanfriendly ~=10.0 ; extra == 'api'
|
|
86
91
|
Requires-Dist: fastapi ~=0.110.0 ; extra == 'api'
|
|
87
92
|
Requires-Dist: sqlalchemy ~=1.4 ; extra == 'api'
|
|
@@ -110,16 +115,18 @@ Requires-Dist: boto3 <1.29.0,>=1.28.0 ; extra == 'complete'
|
|
|
110
115
|
Requires-Dist: dask ~=2023.9.0 ; extra == 'complete'
|
|
111
116
|
Requires-Dist: databricks-sdk ~=0.13.0 ; extra == 'complete'
|
|
112
117
|
Requires-Dist: distributed ~=2023.9.0 ; extra == 'complete'
|
|
113
|
-
Requires-Dist: gcsfs
|
|
118
|
+
Requires-Dist: gcsfs <2024.4,>=2023.9.2 ; extra == 'complete'
|
|
114
119
|
Requires-Dist: google-cloud-bigquery[bqstorage,pandas] ==3.14.1 ; extra == 'complete'
|
|
115
120
|
Requires-Dist: graphviz ~=0.20.0 ; extra == 'complete'
|
|
116
121
|
Requires-Dist: kafka-python ~=2.0 ; extra == 'complete'
|
|
117
122
|
Requires-Dist: mlflow ~=2.8 ; extra == 'complete'
|
|
118
123
|
Requires-Dist: msrest ~=0.6.21 ; extra == 'complete'
|
|
124
|
+
Requires-Dist: oss2 ==2.18.1 ; extra == 'complete'
|
|
125
|
+
Requires-Dist: ossfs ==2023.12.0 ; extra == 'complete'
|
|
119
126
|
Requires-Dist: plotly <5.12.0,~=5.4 ; extra == 'complete'
|
|
120
127
|
Requires-Dist: pyopenssl >=23 ; extra == 'complete'
|
|
121
128
|
Requires-Dist: redis ~=4.3 ; extra == 'complete'
|
|
122
|
-
Requires-Dist: s3fs
|
|
129
|
+
Requires-Dist: s3fs <2024.4,>=2023.9.2 ; extra == 'complete'
|
|
123
130
|
Requires-Dist: sqlalchemy ~=1.4 ; extra == 'complete'
|
|
124
131
|
Provides-Extra: complete-api
|
|
125
132
|
Requires-Dist: adlfs ==2023.9.0 ; extra == 'complete-api'
|
|
@@ -136,20 +143,22 @@ Requires-Dist: dask ~=2023.9.0 ; extra == 'complete-api'
|
|
|
136
143
|
Requires-Dist: databricks-sdk ~=0.13.0 ; extra == 'complete-api'
|
|
137
144
|
Requires-Dist: distributed ~=2023.9.0 ; extra == 'complete-api'
|
|
138
145
|
Requires-Dist: fastapi ~=0.110.0 ; extra == 'complete-api'
|
|
139
|
-
Requires-Dist: gcsfs
|
|
146
|
+
Requires-Dist: gcsfs <2024.4,>=2023.9.2 ; extra == 'complete-api'
|
|
140
147
|
Requires-Dist: google-cloud-bigquery[bqstorage,pandas] ==3.14.1 ; extra == 'complete-api'
|
|
141
148
|
Requires-Dist: graphviz ~=0.20.0 ; extra == 'complete-api'
|
|
142
149
|
Requires-Dist: humanfriendly ~=10.0 ; extra == 'complete-api'
|
|
143
|
-
Requires-Dist: igz-mgmt ~=0.1.
|
|
150
|
+
Requires-Dist: igz-mgmt ~=0.1.3 ; extra == 'complete-api'
|
|
144
151
|
Requires-Dist: kafka-python ~=2.0 ; extra == 'complete-api'
|
|
145
152
|
Requires-Dist: mlflow ~=2.8 ; extra == 'complete-api'
|
|
146
153
|
Requires-Dist: msrest ~=0.6.21 ; extra == 'complete-api'
|
|
147
154
|
Requires-Dist: objgraph ~=3.6 ; extra == 'complete-api'
|
|
155
|
+
Requires-Dist: oss2 ==2.18.1 ; extra == 'complete-api'
|
|
156
|
+
Requires-Dist: ossfs ==2023.12.0 ; extra == 'complete-api'
|
|
148
157
|
Requires-Dist: plotly <5.12.0,~=5.4 ; extra == 'complete-api'
|
|
149
158
|
Requires-Dist: pymysql ~=1.0 ; extra == 'complete-api'
|
|
150
159
|
Requires-Dist: pyopenssl >=23 ; extra == 'complete-api'
|
|
151
160
|
Requires-Dist: redis ~=4.3 ; extra == 'complete-api'
|
|
152
|
-
Requires-Dist: s3fs
|
|
161
|
+
Requires-Dist: s3fs <2024.4,>=2023.9.2 ; extra == 'complete-api'
|
|
153
162
|
Requires-Dist: sqlalchemy ~=1.4 ; extra == 'complete-api'
|
|
154
163
|
Requires-Dist: timelength ~=1.1 ; extra == 'complete-api'
|
|
155
164
|
Requires-Dist: uvicorn ~=0.27.1 ; extra == 'complete-api'
|
|
@@ -165,7 +174,7 @@ Requires-Dist: google-cloud ==0.34 ; extra == 'google-cloud'
|
|
|
165
174
|
Provides-Extra: google-cloud-bigquery
|
|
166
175
|
Requires-Dist: google-cloud-bigquery[bqstorage,pandas] ==3.14.1 ; extra == 'google-cloud-bigquery'
|
|
167
176
|
Provides-Extra: google-cloud-storage
|
|
168
|
-
Requires-Dist: gcsfs
|
|
177
|
+
Requires-Dist: gcsfs <2024.4,>=2023.9.2 ; extra == 'google-cloud-storage'
|
|
169
178
|
Provides-Extra: graphviz
|
|
170
179
|
Requires-Dist: graphviz ~=0.20.0 ; extra == 'graphviz'
|
|
171
180
|
Provides-Extra: kafka
|
|
@@ -180,7 +189,7 @@ Requires-Dist: redis ~=4.3 ; extra == 'redis'
|
|
|
180
189
|
Provides-Extra: s3
|
|
181
190
|
Requires-Dist: boto3 <1.29.0,>=1.28.0 ; extra == 's3'
|
|
182
191
|
Requires-Dist: aiobotocore <2.8,>=2.5.0 ; extra == 's3'
|
|
183
|
-
Requires-Dist: s3fs
|
|
192
|
+
Requires-Dist: s3fs <2024.4,>=2023.9.2 ; extra == 's3'
|
|
184
193
|
Provides-Extra: sqlalchemy
|
|
185
194
|
Requires-Dist: sqlalchemy ~=1.4 ; extra == 'sqlalchemy'
|
|
186
195
|
|