zenml-nightly 0.66.0.dev20240923__py3-none-any.whl → 0.66.0.dev20240928__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.
Files changed (154) hide show
  1. zenml/VERSION +1 -1
  2. zenml/cli/__init__.py +7 -0
  3. zenml/cli/base.py +2 -2
  4. zenml/cli/pipeline.py +21 -0
  5. zenml/cli/utils.py +14 -11
  6. zenml/client.py +68 -3
  7. zenml/config/step_configurations.py +0 -5
  8. zenml/constants.py +3 -0
  9. zenml/enums.py +2 -0
  10. zenml/integrations/__init__.py +1 -0
  11. zenml/integrations/aws/flavors/sagemaker_orchestrator_flavor.py +76 -7
  12. zenml/integrations/aws/orchestrators/sagemaker_orchestrator.py +370 -115
  13. zenml/integrations/azure/__init__.py +6 -2
  14. zenml/integrations/azure/orchestrators/azureml_orchestrator.py +157 -4
  15. zenml/integrations/constants.py +1 -0
  16. zenml/integrations/deepchecks/__init__.py +1 -1
  17. zenml/integrations/deepchecks/data_validators/deepchecks_data_validator.py +55 -14
  18. zenml/integrations/deepchecks/validation_checks.py +62 -5
  19. zenml/integrations/gcp/orchestrators/vertex_orchestrator.py +207 -18
  20. zenml/integrations/lightning/__init__.py +1 -1
  21. zenml/integrations/lightning/flavors/lightning_orchestrator_flavor.py +9 -0
  22. zenml/integrations/lightning/orchestrators/lightning_orchestrator.py +18 -17
  23. zenml/integrations/lightning/orchestrators/lightning_orchestrator_entrypoint.py +2 -6
  24. zenml/integrations/mlflow/steps/mlflow_registry.py +2 -0
  25. zenml/integrations/skypilot/orchestrators/skypilot_base_vm_orchestrator.py +38 -26
  26. zenml/integrations/skypilot_kubernetes/__init__.py +52 -0
  27. zenml/integrations/skypilot_kubernetes/flavors/__init__.py +26 -0
  28. zenml/integrations/skypilot_kubernetes/flavors/skypilot_orchestrator_kubernetes_vm_flavor.py +125 -0
  29. zenml/integrations/skypilot_kubernetes/orchestrators/__init__.py +25 -0
  30. zenml/integrations/skypilot_kubernetes/orchestrators/skypilot_kubernetes_vm_orchestrator.py +74 -0
  31. zenml/integrations/tensorboard/visualizers/tensorboard_visualizer.py +1 -1
  32. zenml/models/v2/base/filter.py +315 -149
  33. zenml/models/v2/base/scoped.py +5 -2
  34. zenml/models/v2/core/artifact_version.py +69 -8
  35. zenml/models/v2/core/model.py +43 -6
  36. zenml/models/v2/core/model_version.py +49 -1
  37. zenml/models/v2/core/model_version_artifact.py +18 -3
  38. zenml/models/v2/core/model_version_pipeline_run.py +18 -4
  39. zenml/models/v2/core/pipeline.py +108 -1
  40. zenml/models/v2/core/pipeline_run.py +172 -21
  41. zenml/models/v2/core/run_template.py +53 -1
  42. zenml/models/v2/core/stack.py +33 -5
  43. zenml/models/v2/core/step_run.py +7 -0
  44. zenml/new/pipelines/pipeline.py +4 -0
  45. zenml/new/pipelines/run_utils.py +4 -1
  46. zenml/orchestrators/base_orchestrator.py +41 -12
  47. zenml/stack/stack.py +11 -2
  48. zenml/utils/env_utils.py +54 -1
  49. zenml/utils/string_utils.py +50 -0
  50. zenml/zen_server/cloud_utils.py +33 -8
  51. zenml/zen_server/dashboard/assets/{404-iO8vpun1.js → 404-Y50hSt65.js} +1 -1
  52. zenml/zen_server/dashboard/assets/{@reactflow-B6kq9fJZ.js → @reactflow-ytavUpwh.js} +1 -1
  53. zenml/zen_server/dashboard/assets/AlertDialogDropdownItem-xLR9a1iw.js +1 -0
  54. zenml/zen_server/dashboard/assets/{CodeSnippet-DNWdQmbo.js → CodeSnippet-IxXNxUDa.js} +2 -2
  55. zenml/zen_server/dashboard/assets/{CollapsibleCard-B2OVjWYE.js → CollapsibleCard-BhutZbBL.js} +1 -1
  56. zenml/zen_server/dashboard/assets/{Commands-DsoaVElZ.js → Commands-Bf-rd1z8.js} +1 -1
  57. zenml/zen_server/dashboard/assets/ComponentBadge-gKR1OIwG.js +1 -0
  58. zenml/zen_server/dashboard/assets/{CopyButton-BqE_-PHO.js → CopyButton-DcFHidFJ.js} +1 -1
  59. zenml/zen_server/dashboard/assets/{CsvVizualization-Dyasr2jU.js → CsvVizualization-QSbjrfxw.js} +1 -1
  60. zenml/zen_server/dashboard/assets/{DialogItem-Cz1VLRwa.js → DialogItem-Cd3HqST4.js} +1 -1
  61. zenml/zen_server/dashboard/assets/{Error-DorJD_va.js → Error-BhwdmqK7.js} +1 -1
  62. zenml/zen_server/dashboard/assets/{ExecutionStatus-CIfQTutR.js → ExecutionStatus-D6r6aK8J.js} +1 -1
  63. zenml/zen_server/dashboard/assets/{Helpbox-CmfvtNeq.js → Helpbox-0pBpTwTm.js} +1 -1
  64. zenml/zen_server/dashboard/assets/Infobox-BTK_EUKT.js +1 -0
  65. zenml/zen_server/dashboard/assets/{InlineAvatar-Ds2ZFHPc.js → InlineAvatar-CA3DFMcM.js} +1 -1
  66. zenml/zen_server/dashboard/assets/Partials-QLOZw624.js +1 -0
  67. zenml/zen_server/dashboard/assets/{ProviderIcon-BOQJgapd.js → ProviderIcon-C16CCIN4.js} +1 -1
  68. zenml/zen_server/dashboard/assets/{ProviderRadio-BsYBw9YA.js → ProviderRadio-D3FuCHf3.js} +1 -1
  69. zenml/zen_server/dashboard/assets/{SearchField-W3GXpLlI.js → SearchField-BzmfxS0L.js} +1 -1
  70. zenml/zen_server/dashboard/assets/SecretTooltip-BaMwHF-Q.js +1 -0
  71. zenml/zen_server/dashboard/assets/{SetPassword-B-0a8UCj.js → SetPassword-DuIC65H9.js} +1 -1
  72. zenml/zen_server/dashboard/assets/{Tick-i1DYsVcX.js → Tick-DJTCF0Re.js} +1 -1
  73. zenml/zen_server/dashboard/assets/{UpdatePasswordSchemas-C6Zb7ASL.js → UpdatePasswordSchemas-CUm-DMpw.js} +1 -1
  74. zenml/zen_server/dashboard/assets/UsageReason-CKw0juLF.js +1 -0
  75. zenml/zen_server/dashboard/assets/{WizardFooter-BHbO7zOa.js → WizardFooter-Cv9ApYWU.js} +1 -1
  76. zenml/zen_server/dashboard/assets/{all-pipeline-runs-query-BBEe6I9-.js → all-pipeline-runs-query-BA3R2Sey.js} +1 -1
  77. zenml/zen_server/dashboard/assets/{cloud-only-BuP4Kt_7.js → cloud-only-BB4BVa6E.js} +1 -1
  78. zenml/zen_server/dashboard/assets/{create-stack-B2x2d4r1.js → create-stack-F29xAUEx.js} +1 -1
  79. zenml/zen_server/dashboard/assets/delete-run-CP0pcJ3U.js +1 -0
  80. zenml/zen_server/dashboard/assets/{form-schemas-Bap0f854.js → form-schemas-BKXwSDK2.js} +1 -1
  81. zenml/zen_server/dashboard/assets/index-BhJ6ZJxv.css +1 -0
  82. zenml/zen_server/dashboard/assets/{index-B9wVwe7u.js → index-Ci0nJ8EZ.js} +5 -5
  83. zenml/zen_server/dashboard/assets/{index-DFi8BroH.js → index-D-mtoBj3.js} +1 -1
  84. zenml/zen_server/dashboard/assets/{login-mutation-DwxUz8VA.js → login-mutation-ax6iL2Mb.js} +1 -1
  85. zenml/zen_server/dashboard/assets/{not-found-D5i9DunU.js → not-found-DbjllLY_.js} +1 -1
  86. zenml/zen_server/dashboard/assets/{page-oS4hqS8M.js → page-3qPX9WYH.js} +1 -1
  87. zenml/zen_server/dashboard/assets/{page-iwoJnwPv.js → page-6mfzecin.js} +1 -1
  88. zenml/zen_server/dashboard/assets/{page-DGMa3ZQL.js → page-8kYmrh0B.js} +1 -1
  89. zenml/zen_server/dashboard/assets/page-B1n7_W7z.js +1 -0
  90. zenml/zen_server/dashboard/assets/page-BDg1F-Ug.js +6 -0
  91. zenml/zen_server/dashboard/assets/{page-xQG6GmFJ.js → page-BXarY9K2.js} +1 -1
  92. zenml/zen_server/dashboard/assets/page-BZZhLo2u.js +1 -0
  93. zenml/zen_server/dashboard/assets/page-Bbf_oBjn.js +1 -0
  94. zenml/zen_server/dashboard/assets/page-BjjuBvZG.js +9 -0
  95. zenml/zen_server/dashboard/assets/{page-J0s8Sq3N.js → page-BukXK1Aa.js} +1 -1
  96. zenml/zen_server/dashboard/assets/page-CHaQkFK5.js +1 -0
  97. zenml/zen_server/dashboard/assets/{page-BitfWsiW.js → page-CKHNAq7z.js} +1 -1
  98. zenml/zen_server/dashboard/assets/{page-DE03uZZR.js → page-CS0SYFK8.js} +1 -1
  99. zenml/zen_server/dashboard/assets/{page-WCQ659by.js → page-CvKnNK1S.js} +1 -1
  100. zenml/zen_server/dashboard/assets/{page-CrSdkteO.js → page-DGM1CbYT.js} +2 -2
  101. zenml/zen_server/dashboard/assets/{page-DQGCHKrQ.js → page-DMSLXKGT.js} +1 -1
  102. zenml/zen_server/dashboard/assets/page-DOmIZ2ra.js +1 -0
  103. zenml/zen_server/dashboard/assets/{page-DgM-N9RL.js → page-DRfcRK1w.js} +1 -1
  104. zenml/zen_server/dashboard/assets/page-DYVmJ9_w.js +3 -0
  105. zenml/zen_server/dashboard/assets/{page-BiF8hLbO.js → page-DcTjHmYZ.js} +1 -1
  106. zenml/zen_server/dashboard/assets/page-DuqYMYmH.js +1 -0
  107. zenml/zen_server/dashboard/assets/page-Dwow2doB.js +1 -0
  108. zenml/zen_server/dashboard/assets/{page-DQdwZZ9x.js → page-HkVBdZl6.js} +1 -1
  109. zenml/zen_server/dashboard/assets/{page-bimkItOg.js → page-MAXyfXBq.js} +1 -1
  110. zenml/zen_server/dashboard/assets/page-miU2rhYG.js +1 -0
  111. zenml/zen_server/dashboard/assets/page-p0BhSAWx.js +1 -0
  112. zenml/zen_server/dashboard/assets/{page-DFCK65G9.js → page-uORspyRu.js} +1 -1
  113. zenml/zen_server/dashboard/assets/persist-BxIR2XZs.js +1 -0
  114. zenml/zen_server/dashboard/assets/{persist-xsYgVtR1.js → persist-CfJMar_k.js} +1 -1
  115. zenml/zen_server/dashboard/assets/sharedSchema-vub0rii3.js +14 -0
  116. zenml/zen_server/dashboard/assets/stack-detail-query-DQcyzG-2.js +1 -0
  117. zenml/zen_server/dashboard/assets/tick-circle-m-hJG8i9.js +1 -0
  118. zenml/zen_server/dashboard/assets/{update-server-settings-mutation-DNqmQXDM.js → update-server-settings-mutation-FGVP7X2U.js} +1 -1
  119. zenml/zen_server/dashboard/assets/{url-DwbuKk1b.js → url-CbAPzsmT.js} +1 -1
  120. zenml/zen_server/dashboard/index.html +4 -4
  121. zenml/zen_server/dashboard_legacy/asset-manifest.json +4 -4
  122. zenml/zen_server/dashboard_legacy/index.html +1 -1
  123. zenml/zen_server/dashboard_legacy/{precache-manifest.290b95d5b43efa3368b3dc63d20c4782.js → precache-manifest.6d320abb70db612019dda6c4948e7a90.js} +4 -4
  124. zenml/zen_server/dashboard_legacy/service-worker.js +1 -1
  125. zenml/zen_server/dashboard_legacy/static/js/{main.840d1bf0.chunk.js → main.fa9299d5.chunk.js} +2 -2
  126. zenml/zen_server/dashboard_legacy/static/js/{main.840d1bf0.chunk.js.map → main.fa9299d5.chunk.js.map} +1 -1
  127. zenml/zen_server/routers/runs_endpoints.py +89 -3
  128. zenml/zen_stores/sql_zen_store.py +1 -0
  129. {zenml_nightly-0.66.0.dev20240923.dist-info → zenml_nightly-0.66.0.dev20240928.dist-info}/METADATA +8 -1
  130. {zenml_nightly-0.66.0.dev20240923.dist-info → zenml_nightly-0.66.0.dev20240928.dist-info}/RECORD +133 -125
  131. zenml/zen_server/dashboard/assets/AlertDialogDropdownItem-BXeSvmMY.js +0 -1
  132. zenml/zen_server/dashboard/assets/EditSecretDialog-Du423_3U.js +0 -1
  133. zenml/zen_server/dashboard/assets/Infobox-BL9NOS37.js +0 -1
  134. zenml/zen_server/dashboard/assets/Partials-DX-8iEa1.js +0 -1
  135. zenml/zen_server/dashboard/assets/UsageReason-CCnzmwS8.js +0 -1
  136. zenml/zen_server/dashboard/assets/index-6DYjZgDn.css +0 -1
  137. zenml/zen_server/dashboard/assets/page-BFuJICXM.js +0 -9
  138. zenml/zen_server/dashboard/assets/page-CDOQLrPC.js +0 -1
  139. zenml/zen_server/dashboard/assets/page-CEJWu1YO.js +0 -1
  140. zenml/zen_server/dashboard/assets/page-CIbehp7V.js +0 -1
  141. zenml/zen_server/dashboard/assets/page-CLiRGfWo.js +0 -1
  142. zenml/zen_server/dashboard/assets/page-CV44mQn9.js +0 -1
  143. zenml/zen_server/dashboard/assets/page-D5F3DJjm.js +0 -1
  144. zenml/zen_server/dashboard/assets/page-DI-qTWrm.js +0 -1
  145. zenml/zen_server/dashboard/assets/page-Dt8VgzbE.js +0 -1
  146. zenml/zen_server/dashboard/assets/page-oSqx9dkH.js +0 -1
  147. zenml/zen_server/dashboard/assets/page-p3GqEAUW.js +0 -1
  148. zenml/zen_server/dashboard/assets/page-qvcUVPE-.js +0 -1
  149. zenml/zen_server/dashboard/assets/persist-mEZN_fgH.js +0 -1
  150. zenml/zen_server/dashboard/assets/sharedSchema-BfZcy7aP.js +0 -14
  151. zenml/zen_server/dashboard/assets/stack-detail-query-CU4egfhp.js +0 -1
  152. {zenml_nightly-0.66.0.dev20240923.dist-info → zenml_nightly-0.66.0.dev20240928.dist-info}/LICENSE +0 -0
  153. {zenml_nightly-0.66.0.dev20240923.dist-info → zenml_nightly-0.66.0.dev20240928.dist-info}/WHEEL +0 -0
  154. {zenml_nightly-0.66.0.dev20240923.dist-info → zenml_nightly-0.66.0.dev20240928.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
- return verify_permissions_and_get_entity(
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()
@@ -973,6 +973,7 @@ class SqlZenStore(BaseZenStore):
973
973
  ValueError: if the filtered page number is out of bounds.
974
974
  RuntimeError: if the schema does not have a `to_model` method.
975
975
  """
976
+ query = query.distinct()
976
977
  query = filter_model.apply_filter(query=query, table=table)
977
978
  query = query.distinct()
978
979
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: zenml-nightly
3
- Version: 0.66.0.dev20240923
3
+ Version: 0.66.0.dev20240928
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)