zenml-nightly 0.66.0.dev20240924__py3-none-any.whl → 0.66.0.dev20240926__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.
- zenml/VERSION +1 -1
- zenml/cli/__init__.py +7 -0
- zenml/cli/pipeline.py +21 -0
- zenml/constants.py +3 -0
- zenml/integrations/__init__.py +1 -0
- zenml/integrations/aws/orchestrators/sagemaker_orchestrator.py +288 -71
- zenml/integrations/azure/orchestrators/azureml_orchestrator.py +157 -4
- zenml/integrations/constants.py +1 -0
- zenml/integrations/deepchecks/__init__.py +1 -1
- zenml/integrations/deepchecks/data_validators/deepchecks_data_validator.py +55 -14
- zenml/integrations/deepchecks/validation_checks.py +62 -5
- zenml/integrations/gcp/orchestrators/vertex_orchestrator.py +207 -18
- zenml/integrations/lightning/__init__.py +1 -1
- zenml/integrations/lightning/flavors/lightning_orchestrator_flavor.py +9 -0
- zenml/integrations/lightning/orchestrators/lightning_orchestrator.py +18 -17
- zenml/integrations/lightning/orchestrators/lightning_orchestrator_entrypoint.py +2 -6
- zenml/integrations/mlflow/steps/mlflow_registry.py +2 -0
- zenml/integrations/skypilot/orchestrators/skypilot_base_vm_orchestrator.py +38 -26
- zenml/integrations/skypilot_kubernetes/__init__.py +52 -0
- zenml/integrations/skypilot_kubernetes/flavors/__init__.py +26 -0
- zenml/integrations/skypilot_kubernetes/flavors/skypilot_orchestrator_kubernetes_vm_flavor.py +125 -0
- zenml/integrations/skypilot_kubernetes/orchestrators/__init__.py +25 -0
- zenml/integrations/skypilot_kubernetes/orchestrators/skypilot_kubernetes_vm_orchestrator.py +74 -0
- zenml/models/v2/core/pipeline_run.py +62 -1
- zenml/new/pipelines/run_utils.py +4 -1
- zenml/orchestrators/base_orchestrator.py +41 -12
- zenml/stack/stack.py +11 -2
- zenml/zen_server/cloud_utils.py +33 -8
- zenml/zen_server/dashboard/assets/{404-iO8vpun1.js → 404-CMnKjD-L.js} +1 -1
- zenml/zen_server/dashboard/assets/{@reactflow-B6kq9fJZ.js → @reactflow-CEC2f0cl.js} +1 -1
- zenml/zen_server/dashboard/assets/AlertDialogDropdownItem-BqM1UpCD.js +1 -0
- zenml/zen_server/dashboard/assets/{CodeSnippet-DNWdQmbo.js → CodeSnippet-DRy_0J4D.js} +2 -2
- zenml/zen_server/dashboard/assets/{CollapsibleCard-B2OVjWYE.js → CollapsibleCard-lE-75Zob.js} +1 -1
- zenml/zen_server/dashboard/assets/{Commands-DsoaVElZ.js → Commands-CVx2RAoT.js} +1 -1
- zenml/zen_server/dashboard/assets/{CopyButton-BqE_-PHO.js → CopyButton-C_yRGWuP.js} +1 -1
- zenml/zen_server/dashboard/assets/{CsvVizualization-Dyasr2jU.js → CsvVizualization-Dd0P02Iz.js} +1 -1
- zenml/zen_server/dashboard/assets/{DialogItem-Cz1VLRwa.js → DialogItem-BCrc2wIk.js} +1 -1
- zenml/zen_server/dashboard/assets/{Error-DorJD_va.js → Error-BuMJbG-M.js} +1 -1
- zenml/zen_server/dashboard/assets/{ExecutionStatus-CIfQTutR.js → ExecutionStatus-fIulMG4w.js} +1 -1
- zenml/zen_server/dashboard/assets/{Helpbox-CmfvtNeq.js → Helpbox-CJAp4kbv.js} +1 -1
- zenml/zen_server/dashboard/assets/Infobox-CC70zvGO.js +1 -0
- zenml/zen_server/dashboard/assets/{InlineAvatar-Ds2ZFHPc.js → InlineAvatar-C3QXdFW1.js} +1 -1
- zenml/zen_server/dashboard/assets/{Partials-DX-8iEa1.js → Partials-Cb8lrNsi.js} +1 -1
- zenml/zen_server/dashboard/assets/{ProviderIcon-BOQJgapd.js → ProviderIcon-C9BuYVSN.js} +1 -1
- zenml/zen_server/dashboard/assets/{ProviderRadio-BsYBw9YA.js → ProviderRadio-GYc9PJtG.js} +1 -1
- zenml/zen_server/dashboard/assets/{SearchField-W3GXpLlI.js → SearchField-BeF1yR7M.js} +1 -1
- zenml/zen_server/dashboard/assets/SecretTooltip-DgVWrPxX.js +1 -0
- zenml/zen_server/dashboard/assets/{SetPassword-B-0a8UCj.js → SetPassword-nAhHddXW.js} +1 -1
- zenml/zen_server/dashboard/assets/{Tick-i1DYsVcX.js → Tick-C5ZVvNRQ.js} +1 -1
- zenml/zen_server/dashboard/assets/{UpdatePasswordSchemas-C6Zb7ASL.js → UpdatePasswordSchemas-7KFsDbKb.js} +1 -1
- zenml/zen_server/dashboard/assets/UsageReason-DL5NL_ZD.js +1 -0
- zenml/zen_server/dashboard/assets/{WizardFooter-BHbO7zOa.js → WizardFooter-CgvFSppz.js} +1 -1
- zenml/zen_server/dashboard/assets/{all-pipeline-runs-query-BBEe6I9-.js → all-pipeline-runs-query-DAPSF_74.js} +1 -1
- zenml/zen_server/dashboard/assets/{cloud-only-BuP4Kt_7.js → cloud-only-CxoNxh86.js} +1 -1
- zenml/zen_server/dashboard/assets/{create-stack-B2x2d4r1.js → create-stack-BfgeXFuV.js} +1 -1
- zenml/zen_server/dashboard/assets/delete-run-OkGmZQ5G.js +1 -0
- zenml/zen_server/dashboard/assets/{form-schemas-Bap0f854.js → form-schemas-C09PrQUJ.js} +1 -1
- zenml/zen_server/dashboard/assets/{index-DFi8BroH.js → index-CLT4K7oC.js} +1 -1
- zenml/zen_server/dashboard/assets/{index-B9wVwe7u.js → index-D0bJjaey.js} +3 -3
- zenml/zen_server/dashboard/assets/index-PcI3Xw77.css +1 -0
- zenml/zen_server/dashboard/assets/{login-mutation-DwxUz8VA.js → login-mutation-CB45FHbP.js} +1 -1
- zenml/zen_server/dashboard/assets/{not-found-D5i9DunU.js → not-found-NtCUfXiV.js} +1 -1
- zenml/zen_server/dashboard/assets/page-AvcQe_oR.js +1 -0
- zenml/zen_server/dashboard/assets/page-B6DccgPa.js +1 -0
- zenml/zen_server/dashboard/assets/{page-xQG6GmFJ.js → page-B7DTiwhv.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-CIbehp7V.js → page-B7LduaiG.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-CEJWu1YO.js → page-B8WlhDq6.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-BitfWsiW.js → page-BIhP9udn.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-DE03uZZR.js → page-BLS9bXB8.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-DFCK65G9.js → page-BYXn4SXu.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-bimkItOg.js → page-Bfvwt3AB.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-D5F3DJjm.js → page-BipKr1Pt.js} +1 -1
- zenml/zen_server/dashboard/assets/page-BwG4f5qc.js +1 -0
- zenml/zen_server/dashboard/assets/page-C1c_unjg.js +9 -0
- zenml/zen_server/dashboard/assets/{page-DQdwZZ9x.js → page-C25tiRdj.js} +1 -1
- zenml/zen_server/dashboard/assets/page-CIATsAA7.js +1 -0
- zenml/zen_server/dashboard/assets/{page-iwoJnwPv.js → page-CKUVhcYr.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-BiF8hLbO.js → page-CXLwze-m.js} +1 -1
- zenml/zen_server/dashboard/assets/page-D7TD0k_A.js +1 -0
- zenml/zen_server/dashboard/assets/{page-CDOQLrPC.js → page-DIlOQjGU.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-DGMa3ZQL.js → page-DJ31Huvj.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-J0s8Sq3N.js → page-DOqsdVzG.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-DQGCHKrQ.js → page-DUapawuM.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-WCQ659by.js → page-Dd3jZyrf.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-CrSdkteO.js → page-DyZzYHWA.js} +2 -2
- zenml/zen_server/dashboard/assets/page-L_xNBh_5.js +3 -0
- zenml/zen_server/dashboard/assets/{page-oS4hqS8M.js → page-VsrKiIdF.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-DgM-N9RL.js → page-ioO58ULo.js} +1 -1
- zenml/zen_server/dashboard/assets/page-kalpiPZz.js +6 -0
- zenml/zen_server/dashboard/assets/{persist-xsYgVtR1.js → persist-ChKZVcn3.js} +1 -1
- zenml/zen_server/dashboard/assets/{persist-mEZN_fgH.js → persist-DodaLO0k.js} +1 -1
- zenml/zen_server/dashboard/assets/{sharedSchema-BfZcy7aP.js → sharedSchema-BvRWAv-c.js} +1 -1
- zenml/zen_server/dashboard/assets/{stack-detail-query-CU4egfhp.js → stack-detail-query-C9XwNP1E.js} +1 -1
- zenml/zen_server/dashboard/assets/tick-circle-m-hJG8i9.js +1 -0
- zenml/zen_server/dashboard/assets/{update-server-settings-mutation-DNqmQXDM.js → update-server-settings-mutation-DJDefwqW.js} +1 -1
- zenml/zen_server/dashboard/assets/{url-DwbuKk1b.js → url-DdWrpIhi.js} +1 -1
- zenml/zen_server/dashboard/index.html +4 -4
- zenml/zen_server/dashboard_legacy/asset-manifest.json +4 -4
- zenml/zen_server/dashboard_legacy/index.html +1 -1
- zenml/zen_server/dashboard_legacy/{precache-manifest.290b95d5b43efa3368b3dc63d20c4782.js → precache-manifest.4f9db97de1b48fd5944e8a766c1300fe.js} +4 -4
- zenml/zen_server/dashboard_legacy/service-worker.js +1 -1
- zenml/zen_server/dashboard_legacy/static/js/{main.840d1bf0.chunk.js → main.0fdd4aad.chunk.js} +2 -2
- zenml/zen_server/dashboard_legacy/static/js/{main.840d1bf0.chunk.js.map → main.0fdd4aad.chunk.js.map} +1 -1
- zenml/zen_server/routers/runs_endpoints.py +89 -3
- {zenml_nightly-0.66.0.dev20240924.dist-info → zenml_nightly-0.66.0.dev20240926.dist-info}/METADATA +8 -1
- {zenml_nightly-0.66.0.dev20240924.dist-info → zenml_nightly-0.66.0.dev20240926.dist-info}/RECORD +109 -102
- zenml/zen_server/dashboard/assets/AlertDialogDropdownItem-BXeSvmMY.js +0 -1
- zenml/zen_server/dashboard/assets/EditSecretDialog-Du423_3U.js +0 -1
- zenml/zen_server/dashboard/assets/Infobox-BL9NOS37.js +0 -1
- zenml/zen_server/dashboard/assets/UsageReason-CCnzmwS8.js +0 -1
- zenml/zen_server/dashboard/assets/index-6DYjZgDn.css +0 -1
- zenml/zen_server/dashboard/assets/page-BFuJICXM.js +0 -9
- zenml/zen_server/dashboard/assets/page-CLiRGfWo.js +0 -1
- zenml/zen_server/dashboard/assets/page-CV44mQn9.js +0 -1
- zenml/zen_server/dashboard/assets/page-DI-qTWrm.js +0 -1
- zenml/zen_server/dashboard/assets/page-Dt8VgzbE.js +0 -1
- zenml/zen_server/dashboard/assets/page-oSqx9dkH.js +0 -1
- zenml/zen_server/dashboard/assets/page-p3GqEAUW.js +0 -1
- zenml/zen_server/dashboard/assets/page-qvcUVPE-.js +0 -1
- {zenml_nightly-0.66.0.dev20240924.dist-info → zenml_nightly-0.66.0.dev20240926.dist-info}/LICENSE +0 -0
- {zenml_nightly-0.66.0.dev20240924.dist-info → zenml_nightly-0.66.0.dev20240926.dist-info}/WHEEL +0 -0
- {zenml_nightly-0.66.0.dev20240924.dist-info → zenml_nightly-0.66.0.dev20240926.dist-info}/entry_points.txt +0 -0
@@ -22,13 +22,15 @@ from zenml.constants import (
|
|
22
22
|
API,
|
23
23
|
GRAPH,
|
24
24
|
PIPELINE_CONFIGURATION,
|
25
|
+
REFRESH,
|
25
26
|
RUNS,
|
26
27
|
STATUS,
|
27
28
|
STEPS,
|
28
29
|
VERSION_1,
|
29
30
|
)
|
30
|
-
from zenml.enums import ExecutionStatus
|
31
|
+
from zenml.enums import ExecutionStatus, StackComponentType
|
31
32
|
from zenml.lineage_graph.lineage_graph import LineageGraph
|
33
|
+
from zenml.logger import get_logger
|
32
34
|
from zenml.models import (
|
33
35
|
Page,
|
34
36
|
PipelineRunFilter,
|
@@ -45,7 +47,8 @@ from zenml.zen_server.rbac.endpoint_utils import (
|
|
45
47
|
verify_permissions_and_list_entities,
|
46
48
|
verify_permissions_and_update_entity,
|
47
49
|
)
|
48
|
-
from zenml.zen_server.rbac.models import ResourceType
|
50
|
+
from zenml.zen_server.rbac.models import Action, ResourceType
|
51
|
+
from zenml.zen_server.rbac.utils import verify_permission_for_model
|
49
52
|
from zenml.zen_server.utils import (
|
50
53
|
handle_exceptions,
|
51
54
|
make_dependable,
|
@@ -59,6 +62,9 @@ router = APIRouter(
|
|
59
62
|
)
|
60
63
|
|
61
64
|
|
65
|
+
logger = get_logger(__name__)
|
66
|
+
|
67
|
+
|
62
68
|
@router.get(
|
63
69
|
"",
|
64
70
|
response_model=Page[PipelineRunResponse],
|
@@ -99,6 +105,7 @@ def list_runs(
|
|
99
105
|
def get_run(
|
100
106
|
run_id: UUID,
|
101
107
|
hydrate: bool = True,
|
108
|
+
refresh_status: bool = False,
|
102
109
|
_: AuthContext = Security(authorize),
|
103
110
|
) -> PipelineRunResponse:
|
104
111
|
"""Get a specific pipeline run using its ID.
|
@@ -107,13 +114,47 @@ def get_run(
|
|
107
114
|
run_id: ID of the pipeline run to get.
|
108
115
|
hydrate: Flag deciding whether to hydrate the output model(s)
|
109
116
|
by including metadata fields in the response.
|
117
|
+
refresh_status: Flag deciding whether we should try to refresh
|
118
|
+
the status of the pipeline run using its orchestrator.
|
110
119
|
|
111
120
|
Returns:
|
112
121
|
The pipeline run.
|
122
|
+
|
123
|
+
Raises:
|
124
|
+
RuntimeError: If the stack or the orchestrator of the run is deleted.
|
113
125
|
"""
|
114
|
-
|
126
|
+
run = verify_permissions_and_get_entity(
|
115
127
|
id=run_id, get_method=zen_store().get_run, hydrate=hydrate
|
116
128
|
)
|
129
|
+
if refresh_status:
|
130
|
+
try:
|
131
|
+
# Check the stack and its orchestrator
|
132
|
+
if run.stack is not None:
|
133
|
+
orchestrators = run.stack.components.get(
|
134
|
+
StackComponentType.ORCHESTRATOR, []
|
135
|
+
)
|
136
|
+
if orchestrators:
|
137
|
+
verify_permission_for_model(
|
138
|
+
model=orchestrators[0], action=Action.READ
|
139
|
+
)
|
140
|
+
else:
|
141
|
+
raise RuntimeError(
|
142
|
+
f"The orchestrator, the run '{run.id}' was executed "
|
143
|
+
"with, is deleted."
|
144
|
+
)
|
145
|
+
else:
|
146
|
+
raise RuntimeError(
|
147
|
+
f"The stack, the run '{run.id}' was executed on, is deleted."
|
148
|
+
)
|
149
|
+
|
150
|
+
run = run.refresh_run_status()
|
151
|
+
|
152
|
+
except Exception as e:
|
153
|
+
logger.warning(
|
154
|
+
"An error occurred while refreshing the status of the "
|
155
|
+
f"pipeline run: {e}"
|
156
|
+
)
|
157
|
+
return run
|
117
158
|
|
118
159
|
|
119
160
|
@router.put(
|
@@ -267,3 +308,48 @@ def get_run_status(
|
|
267
308
|
id=run_id, get_method=zen_store().get_run, hydrate=False
|
268
309
|
)
|
269
310
|
return run.status
|
311
|
+
|
312
|
+
|
313
|
+
@router.get(
|
314
|
+
"/{run_id}" + REFRESH,
|
315
|
+
responses={401: error_response, 404: error_response, 422: error_response},
|
316
|
+
)
|
317
|
+
@handle_exceptions
|
318
|
+
def refresh_run_status(
|
319
|
+
run_id: UUID,
|
320
|
+
_: AuthContext = Security(authorize),
|
321
|
+
) -> None:
|
322
|
+
"""Refreshes the status of a specific pipeline run.
|
323
|
+
|
324
|
+
Args:
|
325
|
+
run_id: ID of the pipeline run to refresh.
|
326
|
+
|
327
|
+
Raises:
|
328
|
+
RuntimeError: If the stack or the orchestrator of the run is deleted.
|
329
|
+
"""
|
330
|
+
# Verify access to the run
|
331
|
+
run = verify_permissions_and_get_entity(
|
332
|
+
id=run_id,
|
333
|
+
get_method=zen_store().get_run,
|
334
|
+
hydrate=True,
|
335
|
+
)
|
336
|
+
|
337
|
+
# Check the stack and its orchestrator
|
338
|
+
if run.stack is not None:
|
339
|
+
orchestrators = run.stack.components.get(
|
340
|
+
StackComponentType.ORCHESTRATOR, []
|
341
|
+
)
|
342
|
+
if orchestrators:
|
343
|
+
verify_permission_for_model(
|
344
|
+
model=orchestrators[0], action=Action.READ
|
345
|
+
)
|
346
|
+
else:
|
347
|
+
raise RuntimeError(
|
348
|
+
f"The orchestrator, the run '{run.id}' was executed with, is "
|
349
|
+
"deleted."
|
350
|
+
)
|
351
|
+
else:
|
352
|
+
raise RuntimeError(
|
353
|
+
f"The stack, the run '{run.id}' was executed on, is deleted."
|
354
|
+
)
|
355
|
+
run.refresh_run_status()
|
{zenml_nightly-0.66.0.dev20240924.dist-info → zenml_nightly-0.66.0.dev20240926.dist-info}/METADATA
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: zenml-nightly
|
3
|
-
Version: 0.66.0.
|
3
|
+
Version: 0.66.0.dev20240926
|
4
4
|
Summary: ZenML: Write production-ready ML code.
|
5
5
|
Home-page: https://zenml.io
|
6
6
|
License: Apache-2.0
|
@@ -24,6 +24,7 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
24
24
|
Classifier: Topic :: System :: Distributed Computing
|
25
25
|
Classifier: Typing :: Typed
|
26
26
|
Provides-Extra: adlfs
|
27
|
+
Provides-Extra: azureml
|
27
28
|
Provides-Extra: connectors-aws
|
28
29
|
Provides-Extra: connectors-azure
|
29
30
|
Provides-Extra: connectors-gcp
|
@@ -32,6 +33,7 @@ Provides-Extra: dev
|
|
32
33
|
Provides-Extra: gcsfs
|
33
34
|
Provides-Extra: mlstacks
|
34
35
|
Provides-Extra: s3fs
|
36
|
+
Provides-Extra: sagemaker
|
35
37
|
Provides-Extra: secrets-aws
|
36
38
|
Provides-Extra: secrets-azure
|
37
39
|
Provides-Extra: secrets-gcp
|
@@ -39,10 +41,12 @@ Provides-Extra: secrets-hashicorp
|
|
39
41
|
Provides-Extra: server
|
40
42
|
Provides-Extra: templates
|
41
43
|
Provides-Extra: terraform
|
44
|
+
Provides-Extra: vertex
|
42
45
|
Requires-Dist: Jinja2 ; extra == "server"
|
43
46
|
Requires-Dist: adlfs (>=2021.10.0) ; extra == "adlfs"
|
44
47
|
Requires-Dist: alembic (>=1.8.1,<1.9.0)
|
45
48
|
Requires-Dist: aws-profile-manager (>=0.5.0) ; extra == "connectors-aws"
|
49
|
+
Requires-Dist: azure-ai-ml (==1.18.0) ; extra == "azureml"
|
46
50
|
Requires-Dist: azure-identity (>=1.4.0) ; extra == "secrets-azure" or extra == "connectors-azure"
|
47
51
|
Requires-Dist: azure-keyvault-secrets (>=4.0.0) ; extra == "secrets-azure"
|
48
52
|
Requires-Dist: azure-mgmt-containerregistry (>=10.0.0) ; extra == "connectors-azure"
|
@@ -63,6 +67,7 @@ Requires-Dist: docker (>=7.1.0,<7.2.0)
|
|
63
67
|
Requires-Dist: fastapi (>=0.100,<=0.110) ; extra == "server"
|
64
68
|
Requires-Dist: gcsfs (>=2022.11.0) ; extra == "gcsfs"
|
65
69
|
Requires-Dist: gitpython (>=3.1.18,<4.0.0)
|
70
|
+
Requires-Dist: google-cloud-aiplatform (>=1.34.0) ; extra == "vertex"
|
66
71
|
Requires-Dist: google-cloud-artifact-registry (>=1.11.3) ; extra == "connectors-gcp"
|
67
72
|
Requires-Dist: google-cloud-container (>=2.21.0) ; extra == "connectors-gcp"
|
68
73
|
Requires-Dist: google-cloud-secret-manager (>=2.12.5) ; extra == "secrets-gcp"
|
@@ -72,6 +77,7 @@ Requires-Dist: hypothesis (>=6.43.1,<7.0.0) ; extra == "dev"
|
|
72
77
|
Requires-Dist: importlib_metadata (<=7.0.0) ; python_version < "3.10"
|
73
78
|
Requires-Dist: ipinfo (>=4.4.3) ; extra == "server"
|
74
79
|
Requires-Dist: jinja2-time (>=0.2.0,<0.3.0) ; extra == "templates"
|
80
|
+
Requires-Dist: kfp (>=2.6.0) ; extra == "vertex"
|
75
81
|
Requires-Dist: kubernetes (>=18.20.0) ; extra == "connectors-kubernetes" or extra == "connectors-aws" or extra == "connectors-gcp" or extra == "connectors-azure"
|
76
82
|
Requires-Dist: maison (<2.0) ; extra == "dev"
|
77
83
|
Requires-Dist: mike (>=1.1.2,<2.0.0) ; extra == "dev"
|
@@ -105,6 +111,7 @@ Requires-Dist: pyyaml-include (<2.0) ; extra == "templates"
|
|
105
111
|
Requires-Dist: rich[jupyter] (>=12.0.0)
|
106
112
|
Requires-Dist: ruff (>=0.1.7) ; extra == "templates" or extra == "dev"
|
107
113
|
Requires-Dist: s3fs (>=2022.11.0) ; extra == "s3fs"
|
114
|
+
Requires-Dist: sagemaker (>=2.117.0) ; extra == "sagemaker"
|
108
115
|
Requires-Dist: secure (>=0.3.0,<0.4.0) ; extra == "server"
|
109
116
|
Requires-Dist: setuptools
|
110
117
|
Requires-Dist: sqlalchemy (>=2.0.0,<3.0.0)
|