zenml-nightly 0.61.0.dev20240712__py3-none-any.whl → 0.62.0.dev20240726__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 (152) hide show
  1. README.md +2 -2
  2. RELEASE_NOTES.md +40 -0
  3. zenml/VERSION +1 -1
  4. zenml/__init__.py +2 -0
  5. zenml/cli/stack.py +114 -248
  6. zenml/cli/stack_components.py +5 -3
  7. zenml/constants.py +3 -0
  8. zenml/enums.py +16 -0
  9. zenml/integrations/__init__.py +1 -0
  10. zenml/integrations/azure/__init__.py +2 -2
  11. zenml/integrations/constants.py +1 -0
  12. zenml/integrations/databricks/__init__.py +52 -0
  13. zenml/integrations/databricks/flavors/__init__.py +30 -0
  14. zenml/integrations/databricks/flavors/databricks_model_deployer_flavor.py +118 -0
  15. zenml/integrations/databricks/flavors/databricks_orchestrator_flavor.py +147 -0
  16. zenml/integrations/databricks/model_deployers/__init__.py +20 -0
  17. zenml/integrations/databricks/model_deployers/databricks_model_deployer.py +249 -0
  18. zenml/integrations/databricks/orchestrators/__init__.py +20 -0
  19. zenml/integrations/databricks/orchestrators/databricks_orchestrator.py +497 -0
  20. zenml/integrations/databricks/orchestrators/databricks_orchestrator_entrypoint_config.py +97 -0
  21. zenml/integrations/databricks/services/__init__.py +19 -0
  22. zenml/integrations/databricks/services/databricks_deployment.py +407 -0
  23. zenml/integrations/databricks/utils/__init__.py +14 -0
  24. zenml/integrations/databricks/utils/databricks_utils.py +87 -0
  25. zenml/integrations/great_expectations/data_validators/ge_data_validator.py +12 -8
  26. zenml/integrations/huggingface/materializers/huggingface_datasets_materializer.py +88 -3
  27. zenml/integrations/huggingface/steps/accelerate_runner.py +1 -7
  28. zenml/integrations/kubernetes/orchestrators/kubernetes_orchestrator.py +1 -13
  29. zenml/integrations/kubernetes/orchestrators/manifest_utils.py +22 -4
  30. zenml/integrations/kubernetes/pod_settings.py +4 -0
  31. zenml/integrations/lightgbm/__init__.py +1 -0
  32. zenml/integrations/mlflow/__init__.py +1 -1
  33. zenml/integrations/mlflow/model_registries/mlflow_model_registry.py +6 -2
  34. zenml/integrations/mlflow/services/mlflow_deployment.py +1 -1
  35. zenml/integrations/skypilot_azure/__init__.py +1 -3
  36. zenml/integrations/skypilot_lambda/__init__.py +1 -1
  37. zenml/logging/step_logging.py +34 -35
  38. zenml/materializers/built_in_materializer.py +1 -1
  39. zenml/materializers/cloudpickle_materializer.py +1 -1
  40. zenml/model/model.py +1 -1
  41. zenml/models/v2/core/component.py +29 -0
  42. zenml/models/v2/core/server_settings.py +0 -20
  43. zenml/models/v2/misc/full_stack.py +32 -0
  44. zenml/models/v2/misc/stack_deployment.py +5 -0
  45. zenml/new/pipelines/run_utils.py +1 -1
  46. zenml/orchestrators/__init__.py +4 -0
  47. zenml/orchestrators/step_launcher.py +1 -0
  48. zenml/orchestrators/wheeled_orchestrator.py +147 -0
  49. zenml/service_connectors/service_connector_utils.py +408 -0
  50. zenml/stack_deployments/azure_stack_deployment.py +179 -0
  51. zenml/stack_deployments/gcp_stack_deployment.py +13 -4
  52. zenml/stack_deployments/stack_deployment.py +10 -0
  53. zenml/stack_deployments/utils.py +4 -0
  54. zenml/steps/base_step.py +7 -5
  55. zenml/utils/function_utils.py +1 -1
  56. zenml/utils/pipeline_docker_image_builder.py +8 -0
  57. zenml/utils/source_utils.py +4 -1
  58. zenml/zen_server/dashboard/assets/{404-DpJaNHKF.js → 404-B_YdvmwS.js} +1 -1
  59. zenml/zen_server/dashboard/assets/{@reactflow-DJfzkHO1.js → @reactflow-l_1hUr1S.js} +1 -1
  60. zenml/zen_server/dashboard/assets/{AwarenessChannel-BYDLT2xC.js → AwarenessChannel-CFg5iX4Z.js} +1 -1
  61. zenml/zen_server/dashboard/assets/{CodeSnippet-BkOuRmyq.js → CodeSnippet-Dvkx_82E.js} +1 -1
  62. zenml/zen_server/dashboard/assets/CollapsibleCard-opiuBHHc.js +1 -0
  63. zenml/zen_server/dashboard/assets/{Commands-ZvWR1BRs.js → Commands-DoN1xrEq.js} +1 -1
  64. zenml/zen_server/dashboard/assets/{CopyButton-DVwLkafa.js → CopyButton-Cr7xYEPb.js} +1 -1
  65. zenml/zen_server/dashboard/assets/{CsvVizualization-C2IiqX4I.js → CsvVizualization-Ck-nZ43m.js} +3 -3
  66. zenml/zen_server/dashboard/assets/{Error-CqX0VqW_.js → Error-kLtljEOM.js} +1 -1
  67. zenml/zen_server/dashboard/assets/{ExecutionStatus-BoLUXR9t.js → ExecutionStatus-DguLLgTK.js} +1 -1
  68. zenml/zen_server/dashboard/assets/{Helpbox-LFydyVwh.js → Helpbox-BXUMP21n.js} +1 -1
  69. zenml/zen_server/dashboard/assets/{Infobox-DnENC0sh.js → Infobox-DSt0O-dm.js} +1 -1
  70. zenml/zen_server/dashboard/assets/{InlineAvatar-CbJtYr0t.js → InlineAvatar-xsrsIGE-.js} +1 -1
  71. zenml/zen_server/dashboard/assets/Pagination-C6X-mifw.js +1 -0
  72. zenml/zen_server/dashboard/assets/{SetPassword-BYBdbQDo.js → SetPassword-BXGTWiwj.js} +1 -1
  73. zenml/zen_server/dashboard/assets/{SuccessStep-Nx743hll.js → SuccessStep-DZC60t0x.js} +1 -1
  74. zenml/zen_server/dashboard/assets/{UpdatePasswordSchemas-DF9gSzE0.js → UpdatePasswordSchemas-DGvwFWO1.js} +1 -1
  75. zenml/zen_server/dashboard/assets/{chevron-right-double-BiEMg7rd.js → chevron-right-double-CZBOf6JM.js} +1 -1
  76. zenml/zen_server/dashboard/assets/cloud-only-C_yFCAkP.js +1 -0
  77. zenml/zen_server/dashboard/assets/index-BczVOqUf.js +55 -0
  78. zenml/zen_server/dashboard/assets/index-EpMIKgrI.css +1 -0
  79. zenml/zen_server/dashboard/assets/{login-mutation-BUnVASxp.js → login-mutation-CrHrndTI.js} +1 -1
  80. zenml/zen_server/dashboard/assets/logs-D8k8BVFf.js +1 -0
  81. zenml/zen_server/dashboard/assets/{not-found-B4VnX8gK.js → not-found-DYa4pC-C.js} +1 -1
  82. zenml/zen_server/dashboard/assets/{package-CsUhPmou.js → package-B3fWP-Dh.js} +1 -1
  83. zenml/zen_server/dashboard/assets/page-1h_sD1jz.js +1 -0
  84. zenml/zen_server/dashboard/assets/{page-Sxn82W-5.js → page-1iL8aMqs.js} +1 -1
  85. zenml/zen_server/dashboard/assets/{page-DMOYZppS.js → page-2grKx_MY.js} +1 -1
  86. zenml/zen_server/dashboard/assets/page-5NCOHOsy.js +1 -0
  87. zenml/zen_server/dashboard/assets/{page-JyfeDUfu.js → page-8a4UMKXZ.js} +1 -1
  88. zenml/zen_server/dashboard/assets/{page-Bx6o0ARS.js → page-B6h3iaHJ.js} +1 -1
  89. zenml/zen_server/dashboard/assets/page-BDns21Iz.js +1 -0
  90. zenml/zen_server/dashboard/assets/{page-3efNCDeb.js → page-BhgCDInH.js} +2 -2
  91. zenml/zen_server/dashboard/assets/{page-DKlIdAe5.js → page-Bi-wtWiO.js} +2 -2
  92. zenml/zen_server/dashboard/assets/{page-7zTHbhhI.js → page-BkeAAYwp.js} +1 -1
  93. zenml/zen_server/dashboard/assets/{page-CRTJ0UuR.js → page-BkuQDIf-.js} +1 -1
  94. zenml/zen_server/dashboard/assets/page-BnaevhnB.js +1 -0
  95. zenml/zen_server/dashboard/assets/{page-BEs6jK71.js → page-Bq0YxkLV.js} +1 -1
  96. zenml/zen_server/dashboard/assets/page-Bs2F4eoD.js +2 -0
  97. zenml/zen_server/dashboard/assets/{page-CUZIGO-3.js → page-C6-UGEbH.js} +1 -1
  98. zenml/zen_server/dashboard/assets/{page-Xu8JEjSU.js → page-CCNRIt_f.js} +1 -1
  99. zenml/zen_server/dashboard/assets/{page-DvCvroOM.js → page-CHNxpz3n.js} +1 -1
  100. zenml/zen_server/dashboard/assets/{page-BpSqIf4B.js → page-DgorQFqi.js} +1 -1
  101. zenml/zen_server/dashboard/assets/page-K8ebxVIs.js +1 -0
  102. zenml/zen_server/dashboard/assets/{page-Cx67M0QT.js → page-MFQyIJd3.js} +1 -1
  103. zenml/zen_server/dashboard/assets/page-TgCF0P_U.js +1 -0
  104. zenml/zen_server/dashboard/assets/page-ZnCEe-eK.js +9 -0
  105. zenml/zen_server/dashboard/assets/{page-Dc_7KMQE.js → page-uA5prJGY.js} +1 -1
  106. zenml/zen_server/dashboard/assets/persist-D7HJNBWx.js +1 -0
  107. zenml/zen_server/dashboard/assets/plus-C8WOyCzt.js +1 -0
  108. zenml/zen_server/dashboard/assets/stack-detail-query-Cficsl6d.js +1 -0
  109. zenml/zen_server/dashboard/assets/update-server-settings-mutation-7d8xi1tS.js +1 -0
  110. zenml/zen_server/dashboard/assets/{url-DuQMeqYA.js → url-D7mAQGUM.js} +1 -1
  111. zenml/zen_server/dashboard/index.html +4 -4
  112. zenml/zen_server/dashboard_legacy/asset-manifest.json +4 -4
  113. zenml/zen_server/dashboard_legacy/index.html +1 -1
  114. zenml/zen_server/dashboard_legacy/{precache-manifest.c8c57fb0d2132b1d3c2119e776b7dfb3.js → precache-manifest.12246c7548e71e2c4438e496360de80c.js} +4 -4
  115. zenml/zen_server/dashboard_legacy/service-worker.js +1 -1
  116. zenml/zen_server/dashboard_legacy/static/js/main.3b27024b.chunk.js +2 -0
  117. zenml/zen_server/dashboard_legacy/static/js/{main.382439a7.chunk.js.map → main.3b27024b.chunk.js.map} +1 -1
  118. zenml/zen_server/deploy/helm/Chart.yaml +1 -1
  119. zenml/zen_server/deploy/helm/README.md +2 -2
  120. zenml/zen_server/rbac/utils.py +10 -2
  121. zenml/zen_server/routers/devices_endpoints.py +4 -1
  122. zenml/zen_server/routers/server_endpoints.py +29 -2
  123. zenml/zen_server/routers/service_connectors_endpoints.py +57 -0
  124. zenml/zen_server/routers/steps_endpoints.py +2 -1
  125. zenml/zen_stores/migrations/versions/0.62.0_release.py +23 -0
  126. zenml/zen_stores/migrations/versions/b4fca5241eea_migrate_onboarding_state.py +167 -0
  127. zenml/zen_stores/rest_zen_store.py +4 -0
  128. zenml/zen_stores/schemas/component_schemas.py +14 -0
  129. zenml/zen_stores/schemas/server_settings_schemas.py +23 -11
  130. zenml/zen_stores/sql_zen_store.py +151 -1
  131. {zenml_nightly-0.61.0.dev20240712.dist-info → zenml_nightly-0.62.0.dev20240726.dist-info}/METADATA +5 -5
  132. {zenml_nightly-0.61.0.dev20240712.dist-info → zenml_nightly-0.62.0.dev20240726.dist-info}/RECORD +135 -115
  133. zenml/zen_server/dashboard/assets/Pagination-DEbVUupy.js +0 -1
  134. zenml/zen_server/dashboard/assets/chevron-down-D_ZlKMqH.js +0 -1
  135. zenml/zen_server/dashboard/assets/cloud-only-DVbIeckv.js +0 -1
  136. zenml/zen_server/dashboard/assets/index-C_CrU4vI.js +0 -1
  137. zenml/zen_server/dashboard/assets/index-DK1ynKjA.js +0 -55
  138. zenml/zen_server/dashboard/assets/index-inApY3KQ.css +0 -1
  139. zenml/zen_server/dashboard/assets/page-C43QGHTt.js +0 -9
  140. zenml/zen_server/dashboard/assets/page-CR0OG7ss.js +0 -1
  141. zenml/zen_server/dashboard/assets/page-CaopxiU1.js +0 -1
  142. zenml/zen_server/dashboard/assets/page-D7Z399xy.js +0 -1
  143. zenml/zen_server/dashboard/assets/page-D93kd7Xj.js +0 -1
  144. zenml/zen_server/dashboard/assets/page-DMsSn3dv.js +0 -2
  145. zenml/zen_server/dashboard/assets/page-Hus2pr9T.js +0 -1
  146. zenml/zen_server/dashboard/assets/page-TKXERe16.js +0 -1
  147. zenml/zen_server/dashboard/assets/plus-DOeLmm7C.js +0 -1
  148. zenml/zen_server/dashboard/assets/update-server-settings-mutation-CR8e3Sir.js +0 -1
  149. zenml/zen_server/dashboard_legacy/static/js/main.382439a7.chunk.js +0 -2
  150. {zenml_nightly-0.61.0.dev20240712.dist-info → zenml_nightly-0.62.0.dev20240726.dist-info}/LICENSE +0 -0
  151. {zenml_nightly-0.61.0.dev20240712.dist-info → zenml_nightly-0.62.0.dev20240726.dist-info}/WHEEL +0 -0
  152. {zenml_nightly-0.61.0.dev20240712.dist-info → zenml_nightly-0.62.0.dev20240726.dist-info}/entry_points.txt +0 -0
@@ -33,6 +33,7 @@ from typing import (
33
33
  NoReturn,
34
34
  Optional,
35
35
  Sequence,
36
+ Set,
36
37
  Tuple,
37
38
  Type,
38
39
  TypeVar,
@@ -107,6 +108,7 @@ from zenml.enums import (
107
108
  ExecutionStatus,
108
109
  LoggingLevels,
109
110
  ModelStages,
111
+ OnboardingStep,
110
112
  SecretScope,
111
113
  SecretsStoreType,
112
114
  SorterOps,
@@ -284,6 +286,7 @@ from zenml.service_connectors.service_connector_registry import (
284
286
  service_connector_registry,
285
287
  )
286
288
  from zenml.stack.flavor_registry import FlavorRegistry
289
+ from zenml.stack_deployments.utils import get_stack_deployment_class
287
290
  from zenml.utils import uuid_utils
288
291
  from zenml.utils.enum_utils import StrEnum
289
292
  from zenml.utils.networking_utils import (
@@ -797,6 +800,7 @@ class SqlZenStore(BaseZenStore):
797
800
  _secrets_store: Optional[BaseSecretsStore] = None
798
801
  _backup_secrets_store: Optional[BaseSecretsStore] = None
799
802
  _should_send_user_enriched_events: bool = False
803
+ _cached_onboarding_state: Optional[Set[str]] = None
800
804
 
801
805
  @property
802
806
  def secrets_store(self) -> "BaseSecretsStore":
@@ -1688,6 +1692,60 @@ class SqlZenStore(BaseZenStore):
1688
1692
 
1689
1693
  return settings.to_model(include_metadata=True)
1690
1694
 
1695
+ def get_onboarding_state(self) -> List[str]:
1696
+ """Get the server onboarding state.
1697
+
1698
+ Returns:
1699
+ The server onboarding state.
1700
+ """
1701
+ with Session(self.engine) as session:
1702
+ settings = self._get_server_settings(session=session)
1703
+ if settings.onboarding_state:
1704
+ self._cached_onboarding_state = set(
1705
+ json.loads(settings.onboarding_state)
1706
+ )
1707
+ return list(self._cached_onboarding_state)
1708
+ else:
1709
+ return []
1710
+
1711
+ def _update_onboarding_state(
1712
+ self, completed_steps: Set[str], session: Session
1713
+ ) -> None:
1714
+ """Update the server onboarding state.
1715
+
1716
+ Args:
1717
+ completed_steps: Newly completed onboarding steps.
1718
+ session: DB session.
1719
+ """
1720
+ if self._cached_onboarding_state and completed_steps.issubset(
1721
+ self._cached_onboarding_state
1722
+ ):
1723
+ # All the onboarding steps are already completed, no need to query
1724
+ # the DB
1725
+ return
1726
+
1727
+ settings = self._get_server_settings(session=session)
1728
+ settings.update_onboarding_state(completed_steps=completed_steps)
1729
+ session.add(settings)
1730
+ session.commit()
1731
+ session.refresh(settings)
1732
+
1733
+ assert settings.onboarding_state
1734
+ self._cached_onboarding_state = set(
1735
+ json.loads(settings.onboarding_state)
1736
+ )
1737
+
1738
+ def update_onboarding_state(self, completed_steps: Set[str]) -> None:
1739
+ """Update the server onboarding state.
1740
+
1741
+ Args:
1742
+ completed_steps: Newly completed onboarding steps.
1743
+ """
1744
+ with Session(self.engine) as session:
1745
+ self._update_onboarding_state(
1746
+ completed_steps=completed_steps, session=session
1747
+ )
1748
+
1691
1749
  def activate_server(
1692
1750
  self, request: ServerActivationRequest
1693
1751
  ) -> Optional[UserResponse]:
@@ -3128,6 +3186,29 @@ class SqlZenStore(BaseZenStore):
3128
3186
  "found."
3129
3187
  )
3130
3188
 
3189
+ # warn about skypilot regions, if needed
3190
+ if component.flavor in {"vm_gcp", "vm_azure"}:
3191
+ stack_deployment_class = get_stack_deployment_class(
3192
+ StackDeploymentProvider.GCP
3193
+ if component.flavor == "vm_gcp"
3194
+ else StackDeploymentProvider.AZURE
3195
+ )
3196
+ skypilot_regions = (
3197
+ stack_deployment_class.skypilot_default_regions().values()
3198
+ )
3199
+ if (
3200
+ component.configuration.get("region", None)
3201
+ and component.configuration["region"]
3202
+ not in skypilot_regions
3203
+ ):
3204
+ logger.warning(
3205
+ f"Region `{component.configuration['region']}` is not enabled in Skypilot "
3206
+ f"by default. Supported regions by default are: {skypilot_regions}. "
3207
+ "Check the Skypilot documentation to learn how to enable regions rather "
3208
+ "than default ones. (If you have already extended your configuration - "
3209
+ "simply ignore this warning)"
3210
+ )
3211
+
3131
3212
  # Create the component
3132
3213
  new_component = StackComponentSchema(
3133
3214
  name=component.name,
@@ -6156,6 +6237,7 @@ class SqlZenStore(BaseZenStore):
6156
6237
 
6157
6238
  connector = new_service_connector.to_model(include_metadata=True)
6158
6239
  self._populate_connector_type(connector)
6240
+
6159
6241
  return connector
6160
6242
 
6161
6243
  def get_service_connector(
@@ -6931,6 +7013,16 @@ class SqlZenStore(BaseZenStore):
6931
7013
  session.commit()
6932
7014
  session.refresh(new_stack_schema)
6933
7015
 
7016
+ for component in defined_components:
7017
+ if component.type == StackComponentType.ORCHESTRATOR:
7018
+ if component.flavor not in {"local", "local_docker"}:
7019
+ self._update_onboarding_state(
7020
+ completed_steps={
7021
+ OnboardingStep.STACK_WITH_REMOTE_ORCHESTRATOR_CREATED
7022
+ },
7023
+ session=session,
7024
+ )
7025
+
6934
7026
  return new_stack_schema.to_model(include_metadata=True)
6935
7027
 
6936
7028
  def create_full_stack(self, full_stack: FullStackRequest) -> StackResponse:
@@ -6964,9 +7056,44 @@ class SqlZenStore(BaseZenStore):
6964
7056
  # Service Connectors
6965
7057
  service_connectors: List[ServiceConnectorResponse] = []
6966
7058
 
7059
+ need_to_generate_permanent_tokens = False
7060
+ orchestrator_component = full_stack.components[
7061
+ StackComponentType.ORCHESTRATOR
7062
+ ]
7063
+ if isinstance(orchestrator_component, UUID):
7064
+ orchestrator = self.get_stack_component(
7065
+ orchestrator_component,
7066
+ hydrate=False,
7067
+ )
7068
+ need_to_generate_permanent_tokens = (
7069
+ orchestrator.flavor.startswith("vm_")
7070
+ )
7071
+ else:
7072
+ need_to_generate_permanent_tokens = (
7073
+ orchestrator_component.flavor.startswith("vm_")
7074
+ )
7075
+
6967
7076
  for connector_id_or_info in full_stack.service_connectors:
6968
7077
  # Fetch an existing service connector
6969
7078
  if isinstance(connector_id_or_info, UUID):
7079
+ existing_service_connector = self.get_service_connector(
7080
+ connector_id_or_info
7081
+ )
7082
+ if need_to_generate_permanent_tokens:
7083
+ if (
7084
+ existing_service_connector.configuration.get(
7085
+ "generate_temporary_tokens", None
7086
+ )
7087
+ is not False
7088
+ ):
7089
+ self.update_service_connector(
7090
+ existing_service_connector.id,
7091
+ ServiceConnectorUpdate(
7092
+ configuration=existing_service_connector.configuration.update(
7093
+ {"generate_temporary_tokens": False}
7094
+ )
7095
+ ),
7096
+ )
6970
7097
  service_connectors.append(
6971
7098
  self.get_service_connector(connector_id_or_info)
6972
7099
  )
@@ -6979,7 +7106,11 @@ class SqlZenStore(BaseZenStore):
6979
7106
  name=connector_name,
6980
7107
  connector_type=connector_id_or_info.type,
6981
7108
  auth_method=connector_id_or_info.auth_method,
6982
- configuration=connector_id_or_info.configuration,
7109
+ configuration=connector_id_or_info.configuration.update(
7110
+ {
7111
+ "generate_temporary_tokens": not need_to_generate_permanent_tokens
7112
+ }
7113
+ ),
6983
7114
  user=full_stack.user,
6984
7115
  workspace=full_stack.workspace,
6985
7116
  labels={
@@ -7965,6 +8096,25 @@ class SqlZenStore(BaseZenStore):
7965
8096
  "duration_seconds": duration_seconds,
7966
8097
  **stack_metadata,
7967
8098
  }
8099
+
8100
+ completed_onboarding_steps: Set[str] = {
8101
+ OnboardingStep.PIPELINE_RUN,
8102
+ OnboardingStep.STARTER_SETUP_COMPLETED,
8103
+ }
8104
+ if stack_metadata["orchestrator"] not in {
8105
+ "local",
8106
+ "local_docker",
8107
+ }:
8108
+ completed_onboarding_steps.update(
8109
+ {
8110
+ OnboardingStep.PIPELINE_RUN_WITH_REMOTE_ORCHESTRATOR,
8111
+ OnboardingStep.PRODUCTION_SETUP_COMPLETED,
8112
+ }
8113
+ )
8114
+
8115
+ self._update_onboarding_state(
8116
+ completed_steps=completed_onboarding_steps, session=session
8117
+ )
7968
8118
  pipeline_run.update(run_update)
7969
8119
  session.add(pipeline_run)
7970
8120
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: zenml-nightly
3
- Version: 0.61.0.dev20240712
3
+ Version: 0.62.0.dev20240726
4
4
  Summary: ZenML: Write production-ready ML code.
5
5
  Home-page: https://zenml.io
6
6
  License: Apache-2.0
@@ -59,7 +59,7 @@ Requires-Dist: copier (>=8.1.0) ; extra == "templates"
59
59
  Requires-Dist: coverage[toml] (>=5.5,<6.0) ; extra == "dev"
60
60
  Requires-Dist: darglint (>=1.8.1,<2.0.0) ; extra == "dev"
61
61
  Requires-Dist: distro (>=1.6.0,<2.0.0)
62
- Requires-Dist: docker (>=6.1.0,<6.2.0)
62
+ Requires-Dist: docker (>=7.1.0,<7.2.0)
63
63
  Requires-Dist: fastapi (>=0.100,<=0.110) ; extra == "server"
64
64
  Requires-Dist: gcsfs (>=2022.11.0) ; extra == "gcsfs"
65
65
  Requires-Dist: gitpython (>=3.1.18,<4.0.0)
@@ -83,6 +83,7 @@ Requires-Dist: mlstacks (==0.9.0) ; extra == "mlstacks"
83
83
  Requires-Dist: mypy (==1.7.1) ; extra == "dev"
84
84
  Requires-Dist: numpy (<2.0.0)
85
85
  Requires-Dist: orjson (>=3.10.0,<3.11.0) ; extra == "server"
86
+ Requires-Dist: packaging (>=24.1)
86
87
  Requires-Dist: pandas (>=1.1.5)
87
88
  Requires-Dist: passlib[bcrypt] (>=1.7.4,<1.8.0)
88
89
  Requires-Dist: psutil (>=5.0.0)
@@ -104,7 +105,6 @@ Requires-Dist: python-multipart (>=0.0.9,<0.1.0) ; extra == "server"
104
105
  Requires-Dist: python-terraform (>=0.10.1,<0.11.0) ; extra == "terraform"
105
106
  Requires-Dist: pyyaml (>=6.0.1)
106
107
  Requires-Dist: pyyaml-include (<2.0) ; extra == "templates"
107
- Requires-Dist: requests (<2.32.0)
108
108
  Requires-Dist: rich[jupyter] (>=12.0.0)
109
109
  Requires-Dist: ruff (>=0.1.7) ; extra == "templates" or extra == "dev"
110
110
  Requires-Dist: s3fs (>=2022.11.0) ; extra == "s3fs"
@@ -458,7 +458,7 @@ the Apache License Version 2.0.
458
458
  ·
459
459
  <a href="https://github.com/zenml-io/zenml/issues">Report Bug</a>
460
460
  ·
461
- <a href="https://zenml.io/cloud">Sign up for ZenML Pro</a>
461
+ <a href="https://zenml.io/pro">Sign up for ZenML Pro</a>
462
462
  ·
463
463
  <a href="https://www.zenml.io/blog">Read Blog</a>
464
464
  ·
@@ -467,7 +467,7 @@ the Apache License Version 2.0.
467
467
  <a href="https://github.com/zenml-io/zenml-projects">Projects Showcase</a>
468
468
  <br />
469
469
  <br />
470
- 🎉 Version 0.61.0 is out. Check out the release notes
470
+ 🎉 Version 0.62.0 is out. Check out the release notes
471
471
  <a href="https://github.com/zenml-io/zenml/releases">here</a>.
472
472
  <br />
473
473
  🖥️ Download our VS Code Extension <a href="https://marketplace.visualstudio.com/items?itemName=ZenML.zenml-vscode">here</a>.