zenml-nightly 0.60.0.dev20240627__py3-none-any.whl → 0.61.0.dev20240711__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 (210) hide show
  1. README.md +30 -9
  2. RELEASE_NOTES.md +34 -0
  3. zenml/VERSION +1 -1
  4. zenml/analytics/enums.py +3 -0
  5. zenml/cli/__init__.py +28 -0
  6. zenml/cli/artifact.py +1 -2
  7. zenml/cli/integration.py +9 -8
  8. zenml/cli/server.py +6 -0
  9. zenml/cli/stack.py +797 -39
  10. zenml/cli/stack_components.py +7 -0
  11. zenml/cli/text_utils.py +35 -1
  12. zenml/cli/utils.py +127 -10
  13. zenml/client.py +23 -14
  14. zenml/config/docker_settings.py +8 -5
  15. zenml/constants.py +5 -1
  16. zenml/container_registries/base_container_registry.py +1 -0
  17. zenml/enums.py +6 -0
  18. zenml/event_hub/event_hub.py +5 -8
  19. zenml/integrations/aws/__init__.py +1 -0
  20. zenml/integrations/azure/__init__.py +1 -0
  21. zenml/integrations/deepchecks/__init__.py +1 -0
  22. zenml/integrations/discord/__init__.py +1 -0
  23. zenml/integrations/evidently/__init__.py +1 -0
  24. zenml/integrations/facets/__init__.py +1 -0
  25. zenml/integrations/feast/__init__.py +1 -0
  26. zenml/integrations/gcp/__init__.py +3 -1
  27. zenml/integrations/gcp/service_connectors/gcp_service_connector.py +203 -44
  28. zenml/integrations/huggingface/__init__.py +1 -0
  29. zenml/integrations/integration.py +24 -0
  30. zenml/integrations/kubeflow/__init__.py +3 -0
  31. zenml/integrations/kubeflow/flavors/kubeflow_orchestrator_flavor.py +1 -1
  32. zenml/integrations/kubeflow/orchestrators/kubeflow_orchestrator.py +0 -1
  33. zenml/integrations/kubernetes/__init__.py +3 -1
  34. zenml/integrations/kubernetes/orchestrators/kube_utils.py +4 -1
  35. zenml/integrations/label_studio/annotators/label_studio_annotator.py +1 -0
  36. zenml/integrations/langchain/__init__.py +1 -0
  37. zenml/integrations/mlflow/__init__.py +3 -1
  38. zenml/integrations/neural_prophet/__init__.py +1 -0
  39. zenml/integrations/polars/__init__.py +1 -0
  40. zenml/integrations/prodigy/__init__.py +1 -0
  41. zenml/integrations/pycaret/__init__.py +6 -0
  42. zenml/integrations/registry.py +37 -0
  43. zenml/integrations/s3/artifact_stores/s3_artifact_store.py +17 -6
  44. zenml/integrations/seldon/__init__.py +1 -0
  45. zenml/integrations/seldon/model_deployers/seldon_model_deployer.py +1 -0
  46. zenml/integrations/skypilot/flavors/skypilot_orchestrator_base_vm_config.py +2 -2
  47. zenml/integrations/skypilot/orchestrators/skypilot_base_vm_orchestrator.py +1 -1
  48. zenml/integrations/skypilot/orchestrators/skypilot_orchestrator_entrypoint.py +2 -2
  49. zenml/integrations/skypilot_aws/__init__.py +2 -1
  50. zenml/integrations/skypilot_azure/__init__.py +1 -1
  51. zenml/integrations/skypilot_gcp/__init__.py +1 -1
  52. zenml/integrations/skypilot_lambda/__init__.py +1 -1
  53. zenml/integrations/skypilot_lambda/flavors/skypilot_orchestrator_lambda_vm_flavor.py +1 -1
  54. zenml/integrations/slack/__init__.py +1 -0
  55. zenml/integrations/tekton/__init__.py +1 -0
  56. zenml/integrations/tensorboard/__init__.py +0 -1
  57. zenml/integrations/tensorflow/__init__.py +18 -6
  58. zenml/integrations/wandb/__init__.py +1 -0
  59. zenml/models/__init__.py +9 -0
  60. zenml/models/v2/core/component.py +18 -0
  61. zenml/models/v2/core/model.py +1 -2
  62. zenml/models/v2/core/service_connector.py +17 -0
  63. zenml/models/v2/core/stack.py +31 -0
  64. zenml/models/v2/misc/full_stack.py +97 -0
  65. zenml/models/v2/misc/stack_deployment.py +66 -0
  66. zenml/new/pipelines/pipeline.py +1 -1
  67. zenml/orchestrators/input_utils.py +3 -6
  68. zenml/stack/stack.py +3 -6
  69. zenml/stack_deployments/__init__.py +14 -0
  70. zenml/stack_deployments/aws_stack_deployment.py +289 -0
  71. zenml/stack_deployments/stack_deployment.py +130 -0
  72. zenml/stack_deployments/utils.py +40 -0
  73. zenml/utils/function_utils.py +1 -1
  74. zenml/utils/pagination_utils.py +7 -5
  75. zenml/utils/pipeline_docker_image_builder.py +97 -68
  76. zenml/utils/pydantic_utils.py +6 -5
  77. zenml/zen_server/cloud_utils.py +18 -3
  78. zenml/zen_server/dashboard/assets/{404-C1mcUujL.js → 404-DpJaNHKF.js} +1 -1
  79. zenml/zen_server/dashboard/assets/@radix-CFOkMR_E.js +85 -0
  80. zenml/zen_server/dashboard/assets/{@react-router-DYovave8.js → @react-router-CO-OsFwI.js} +2 -2
  81. zenml/zen_server/dashboard/assets/{@reactflow-DYIyhCfd.js → @reactflow-DJfzkHO1.js} +2 -2
  82. zenml/zen_server/dashboard/assets/@tanstack-DYiOyJUL.js +22 -0
  83. zenml/zen_server/dashboard/assets/AwarenessChannel-BYDLT2xC.js +1 -0
  84. zenml/zen_server/dashboard/assets/{CodeSnippet-WEzpO0az.js → CodeSnippet-BkOuRmyq.js} +2 -2
  85. zenml/zen_server/dashboard/assets/Commands-ZvWR1BRs.js +1 -0
  86. zenml/zen_server/dashboard/assets/CopyButton-DVwLkafa.js +2 -0
  87. zenml/zen_server/dashboard/assets/{CsvVizualization-Bx931j4U.js → CsvVizualization-C2IiqX4I.js} +7 -7
  88. zenml/zen_server/dashboard/assets/DisplayDate-DYgIjlDF.js +1 -0
  89. zenml/zen_server/dashboard/assets/EmptyState-BMLnFVlB.js +1 -0
  90. zenml/zen_server/dashboard/assets/Error-CqX0VqW_.js +1 -0
  91. zenml/zen_server/dashboard/assets/ExecutionStatus-BoLUXR9t.js +1 -0
  92. zenml/zen_server/dashboard/assets/Helpbox-LFydyVwh.js +1 -0
  93. zenml/zen_server/dashboard/assets/Infobox-DnENC0sh.js +1 -0
  94. zenml/zen_server/dashboard/assets/InlineAvatar-CbJtYr0t.js +1 -0
  95. zenml/zen_server/dashboard/assets/{MarkdownVisualization-DsB2QZiK.js → MarkdownVisualization-xp3hhULl.js} +2 -2
  96. zenml/zen_server/dashboard/assets/Pagination-DEbVUupy.js +1 -0
  97. zenml/zen_server/dashboard/assets/PasswordChecker-DUveqlva.js +1 -0
  98. zenml/zen_server/dashboard/assets/SetPassword-BYBdbQDo.js +1 -0
  99. zenml/zen_server/dashboard/assets/SuccessStep-Nx743hll.js +1 -0
  100. zenml/zen_server/dashboard/assets/{UpdatePasswordSchemas-CKrd3UZz.js → UpdatePasswordSchemas-DF9gSzE0.js} +1 -1
  101. zenml/zen_server/dashboard/assets/{aws-t0gKCj_R.js → aws-BgKTfTfx.js} +1 -1
  102. zenml/zen_server/dashboard/assets/{check-circle-BVvhm5dy.js → check-circle-i56092KI.js} +1 -1
  103. zenml/zen_server/dashboard/assets/{chevron-down-zcvCWmyP.js → chevron-down-D_ZlKMqH.js} +1 -1
  104. zenml/zen_server/dashboard/assets/{chevron-right-double-CJ50E9Gr.js → chevron-right-double-BiEMg7rd.js} +1 -1
  105. zenml/zen_server/dashboard/assets/cloud-only-DVbIeckv.js +1 -0
  106. zenml/zen_server/dashboard/assets/{copy-BRhQz3j-.js → copy-BXNk6BjL.js} +1 -1
  107. zenml/zen_server/dashboard/assets/{database-CRRnyFWh.js → database-1xWSgZfO.js} +1 -1
  108. zenml/zen_server/dashboard/assets/{docker-BAonhm6G.js → docker-CQMVm_4d.js} +1 -1
  109. zenml/zen_server/dashboard/assets/{file-text-CbVERUON.js → file-text-CqD_iu6l.js} +1 -1
  110. zenml/zen_server/dashboard/assets/{help-B8rqCvqn.js → help-bu_DgLKI.js} +1 -1
  111. zenml/zen_server/dashboard/assets/index-C_CrU4vI.js +1 -0
  112. zenml/zen_server/dashboard/assets/index-DK1ynKjA.js +55 -0
  113. zenml/zen_server/dashboard/assets/index-inApY3KQ.css +1 -0
  114. zenml/zen_server/dashboard/assets/index-rK_Wuy2W.js +1 -0
  115. zenml/zen_server/dashboard/assets/index.esm-Corw4lXQ.js +1 -0
  116. zenml/zen_server/dashboard/assets/{login-mutation-Bk2tn324.js → login-mutation-BUnVASxp.js} +1 -1
  117. zenml/zen_server/dashboard/assets/not-found-B4VnX8gK.js +1 -0
  118. zenml/zen_server/dashboard/assets/package-CsUhPmou.js +1 -0
  119. zenml/zen_server/dashboard/assets/{page-D12Rvf0j.js → page-3efNCDeb.js} +2 -2
  120. zenml/zen_server/dashboard/assets/page-7zTHbhhI.js +1 -0
  121. zenml/zen_server/dashboard/assets/page-BEs6jK71.js +1 -0
  122. zenml/zen_server/dashboard/assets/page-BpSqIf4B.js +1 -0
  123. zenml/zen_server/dashboard/assets/{page-8vRWJ5b8.js → page-Bx6o0ARS.js} +1 -1
  124. zenml/zen_server/dashboard/assets/page-C43QGHTt.js +9 -0
  125. zenml/zen_server/dashboard/assets/page-CR0OG7ss.js +1 -0
  126. zenml/zen_server/dashboard/assets/{page-CBuSUrE9.js → page-CRTJ0UuR.js} +1 -1
  127. zenml/zen_server/dashboard/assets/page-CUZIGO-3.js +1 -0
  128. zenml/zen_server/dashboard/assets/page-CaopxiU1.js +1 -0
  129. zenml/zen_server/dashboard/assets/{page-CCtCgG-x.js → page-Cx67M0QT.js} +1 -1
  130. zenml/zen_server/dashboard/assets/page-D7Z399xy.js +1 -0
  131. zenml/zen_server/dashboard/assets/page-D93kd7Xj.js +1 -0
  132. zenml/zen_server/dashboard/assets/{page-Dw9-aJV6.js → page-DKlIdAe5.js} +1 -1
  133. zenml/zen_server/dashboard/assets/{page-COafKNbw.js → page-DMOYZppS.js} +1 -1
  134. zenml/zen_server/dashboard/assets/page-DMsSn3dv.js +2 -0
  135. zenml/zen_server/dashboard/assets/{page-C6v3o0Qj.js → page-Dc_7KMQE.js} +1 -1
  136. zenml/zen_server/dashboard/assets/page-DvCvroOM.js +1 -0
  137. zenml/zen_server/dashboard/assets/page-Hus2pr9T.js +1 -0
  138. zenml/zen_server/dashboard/assets/page-JyfeDUfu.js +1 -0
  139. zenml/zen_server/dashboard/assets/{page-CH26py0a.js → page-Sxn82W-5.js} +1 -1
  140. zenml/zen_server/dashboard/assets/page-TKXERe16.js +1 -0
  141. zenml/zen_server/dashboard/assets/page-Xu8JEjSU.js +1 -0
  142. zenml/zen_server/dashboard/assets/{play-circle-DK5QMJyp.js → play-circle-CNtZKDnW.js} +1 -1
  143. zenml/zen_server/dashboard/assets/plus-DOeLmm7C.js +1 -0
  144. zenml/zen_server/dashboard/assets/{terminal-B2ovgWuz.js → terminal-By9cErXc.js} +1 -1
  145. zenml/zen_server/dashboard/assets/{update-server-settings-mutation-bKxf7U9h.js → update-server-settings-mutation-CR8e3Sir.js} +1 -1
  146. zenml/zen_server/dashboard/assets/{url-CgvM-IVM.js → url-DuQMeqYA.js} +1 -1
  147. zenml/zen_server/dashboard/assets/{zod-DrZvVLjd.js → zod-BhoGpZ63.js} +1 -1
  148. zenml/zen_server/dashboard/index.html +7 -7
  149. zenml/zen_server/dashboard_legacy/asset-manifest.json +4 -4
  150. zenml/zen_server/dashboard_legacy/index.html +1 -1
  151. zenml/zen_server/dashboard_legacy/{precache-manifest.e7c29295aae591541ef59d1734d79387.js → precache-manifest.c8c57fb0d2132b1d3c2119e776b7dfb3.js} +4 -4
  152. zenml/zen_server/dashboard_legacy/service-worker.js +1 -1
  153. zenml/zen_server/dashboard_legacy/static/js/{main.53857d8b.chunk.js → main.382439a7.chunk.js} +2 -2
  154. zenml/zen_server/dashboard_legacy/static/js/{main.53857d8b.chunk.js.map → main.382439a7.chunk.js.map} +1 -1
  155. zenml/zen_server/deploy/helm/Chart.yaml +1 -1
  156. zenml/zen_server/deploy/helm/README.md +2 -2
  157. zenml/zen_server/feature_gate/zenml_cloud_feature_gate.py +11 -5
  158. zenml/zen_server/pipeline_deployment/utils.py +57 -44
  159. zenml/zen_server/rbac/zenml_cloud_rbac.py +11 -5
  160. zenml/zen_server/routers/stack_deployment_endpoints.py +144 -0
  161. zenml/zen_server/routers/workspaces_endpoints.py +64 -0
  162. zenml/zen_server/zen_server_api.py +2 -0
  163. zenml/zen_stores/migrations/utils.py +1 -1
  164. zenml/zen_stores/migrations/versions/0.61.0_release.py +23 -0
  165. zenml/zen_stores/migrations/versions/0d707865f404_adding_labels_to_stacks.py +30 -0
  166. zenml/zen_stores/rest_zen_store.py +117 -0
  167. zenml/zen_stores/schemas/stack_schemas.py +10 -0
  168. zenml/zen_stores/schemas/step_run_schemas.py +27 -11
  169. zenml/zen_stores/sql_zen_store.py +283 -0
  170. zenml/zen_stores/zen_store_interface.py +79 -0
  171. {zenml_nightly-0.60.0.dev20240627.dist-info → zenml_nightly-0.61.0.dev20240711.dist-info}/METADATA +32 -10
  172. {zenml_nightly-0.60.0.dev20240627.dist-info → zenml_nightly-0.61.0.dev20240711.dist-info}/RECORD +175 -161
  173. zenml/zen_server/dashboard/assets/@radix-C9DBgJhe.js +0 -77
  174. zenml/zen_server/dashboard/assets/@tanstack-CEbkxrhX.js +0 -30
  175. zenml/zen_server/dashboard/assets/AwarenessChannel-B2KR83Tr.js +0 -1
  176. zenml/zen_server/dashboard/assets/Cards-DSEdjsk8.js +0 -1
  177. zenml/zen_server/dashboard/assets/Commands-CTlhyic5.js +0 -1
  178. zenml/zen_server/dashboard/assets/CopyButton-CTrzKmUO.js +0 -2
  179. zenml/zen_server/dashboard/assets/DisplayDate-BdguISQF.js +0 -1
  180. zenml/zen_server/dashboard/assets/EmptyState-BkooiGtL.js +0 -1
  181. zenml/zen_server/dashboard/assets/Error-4sKxHad4.js +0 -1
  182. zenml/zen_server/dashboard/assets/Helpbox-DW21i5LD.js +0 -1
  183. zenml/zen_server/dashboard/assets/Infobox-C7bf70VS.js +0 -1
  184. zenml/zen_server/dashboard/assets/InlineAvatar-Dxrtafpg.js +0 -1
  185. zenml/zen_server/dashboard/assets/PageHeader-B0pUife2.js +0 -1
  186. zenml/zen_server/dashboard/assets/Pagination-B9WG_9cJ.js +0 -1
  187. zenml/zen_server/dashboard/assets/PasswordChecker-DSLBp7Vl.js +0 -1
  188. zenml/zen_server/dashboard/assets/SetPassword-CiNhT15a.js +0 -1
  189. zenml/zen_server/dashboard/assets/SuccessStep-CykrFndS.js +0 -1
  190. zenml/zen_server/dashboard/assets/cloud-only-Bkawp7CJ.js +0 -1
  191. zenml/zen_server/dashboard/assets/index-BawkpTlr.js +0 -55
  192. zenml/zen_server/dashboard/assets/index-CRmm7QhS.css +0 -1
  193. zenml/zen_server/dashboard/assets/index.esm-F7nqy9zY.js +0 -1
  194. zenml/zen_server/dashboard/assets/not-found-BAuhP4Jb.js +0 -1
  195. zenml/zen_server/dashboard/assets/page--5YvAHg3.js +0 -1
  196. zenml/zen_server/dashboard/assets/page-B0RAq4s_.js +0 -1
  197. zenml/zen_server/dashboard/assets/page-BePtEPHl.js +0 -1
  198. zenml/zen_server/dashboard/assets/page-C1pra1Bc.js +0 -9
  199. zenml/zen_server/dashboard/assets/page-CSs4C9jL.js +0 -1
  200. zenml/zen_server/dashboard/assets/page-Cf2XSej0.js +0 -1
  201. zenml/zen_server/dashboard/assets/page-ClPUAE_f.js +0 -1
  202. zenml/zen_server/dashboard/assets/page-D8pf2vis.js +0 -1
  203. zenml/zen_server/dashboard/assets/page-DHKMmIQH.js +0 -1
  204. zenml/zen_server/dashboard/assets/page-DMZ0VOda.js +0 -1
  205. zenml/zen_server/dashboard/assets/page-Dcg-yQv_.js +0 -1
  206. zenml/zen_server/dashboard/assets/page-DoAK5FSB.js +0 -1
  207. zenml/zen_server/dashboard/assets/page-iXiDqE0J.js +0 -2
  208. {zenml_nightly-0.60.0.dev20240627.dist-info → zenml_nightly-0.61.0.dev20240711.dist-info}/LICENSE +0 -0
  209. {zenml_nightly-0.60.0.dev20240627.dist-info → zenml_nightly-0.61.0.dev20240711.dist-info}/WHEEL +0 -0
  210. {zenml_nightly-0.60.0.dev20240627.dist-info → zenml_nightly-0.61.0.dev20240711.dist-info}/entry_points.txt +0 -0
README.md CHANGED
@@ -133,9 +133,36 @@ if __name__ == "__main__":
133
133
 
134
134
  ![Running a ZenML pipeline](/docs/book/.gitbook/assets/readme_basic_pipeline.gif)
135
135
 
136
- ### Deploy workloads easily on your production infrastructure
136
+ ### Easily provision an MLOps stack or reuse your existing infrastructure
137
137
 
138
- The framework is a gentle entry point for practitioners to build complex ML pipelines with little knowledge required of the underlying infrastructure complexity. ZenML pipelines can be run on AWS, GCP, Azure, Airflow, Kubeflow and even on Kubernetes without having to change any code or know underlying internals.
138
+ The framework is a gentle entry point for practitioners to build complex ML pipelines with little knowledge required of the underlying infrastructure complexity. ZenML pipelines can be run on AWS, GCP, Azure, Airflow, Kubeflow and even on Kubernetes without having to change any code or know underlying internals.
139
+
140
+ ZenML provides different features to aid people to get started quickly on a remote setting as well. If you want to deploy a remote stack from scratch on your selected cloud provider, you can use the 1-click deployment feature either through the dashboard:
141
+
142
+ ![Running a ZenML pipeline](/docs/book/.gitbook/assets/one-click-deployment.gif)
143
+
144
+ Or, through our CLI command:
145
+
146
+ ```bash
147
+ zenml stack deploy --provider aws
148
+ ```
149
+
150
+ Alternatively, if the necessary pieces of infrastructure is already deployed, you can register a cloud stack seamlessly through the stack wizard:
151
+
152
+ ```bash
153
+ zenml stack register <STACK_NAME> --provider aws
154
+ ```
155
+
156
+ Read more about [ZenML stacks](https://docs.zenml.io/user-guide/production-guide/understand-stacks).
157
+
158
+ ### Run workloads easily on your production infrastructure
159
+
160
+ Once you have your MLOps stack configured, you can easily run workloads on it:
161
+
162
+ ```bash
163
+ zenml stack set <STACK_NAME>
164
+ python run.py
165
+ ```
139
166
 
140
167
  ```python
141
168
  from zenml.config import ResourceSettings, DockerSettings
@@ -150,14 +177,8 @@ def training(...):
150
177
  ...
151
178
  ```
152
179
 
153
- ```bash
154
- zenml stack set k8s # Set a stack with kubernetes orchestrator
155
- python run.py
156
- ```
157
-
158
180
  ![Workloads with ZenML](/docs/book/.gitbook/assets/readme_compute.gif)
159
181
 
160
-
161
182
  ### Track models, pipeline, and artifacts
162
183
 
163
184
  Create a complete lineage of who, where, and what data and models are produced.
@@ -306,7 +327,7 @@ the Apache License Version 2.0.
306
327
  <a href="https://github.com/zenml-io/zenml-projects">Projects Showcase</a>
307
328
  <br />
308
329
  <br />
309
- 🎉 Version 0.60.0 is out. Check out the release notes
330
+ 🎉 Version 0.61.0 is out. Check out the release notes
310
331
  <a href="https://github.com/zenml-io/zenml/releases">here</a>.
311
332
  <br />
312
333
  🖥️ Download our VS Code Extension <a href="https://marketplace.visualstudio.com/items?itemName=ZenML.zenml-vscode">here</a>.
RELEASE_NOTES.md CHANGED
@@ -1,4 +1,38 @@
1
1
  <!-- markdown-link-check-disable -->
2
+ # 0.61.0
3
+
4
+ This release comes with a new and easy way to deploy an AWS ZenML stack from the dashboard and the CLI. Give it a try by going to the `Stacks` section in the dashboard or running the `zenml stack deploy` command!
5
+
6
+ We hope this makes it super easy for existing and new users to set up the infrastructure required to run ZenML pipelines on the cloud in one click.
7
+
8
+ Note: Only a simple AWS stack using Skypilot supported for now but GCP + Azure to come!
9
+
10
+ Additionally, this release includes improvements to our documentation and bugfixes for some integrations.
11
+
12
+ ## What's Changed
13
+
14
+ * Add latest zenml version to migration testing scripts by @htahir1 in https://github.com/zenml-io/zenml/pull/2811
15
+ * Add service connector support for Google Artifact Registry by @stefannica in https://github.com/zenml-io/zenml/pull/2771
16
+ * Update order in which requirements are installed by @schustmi in https://github.com/zenml-io/zenml/pull/2341
17
+ * Add installation instructions for Macs running on Apple Silicon by @strickvl in https://github.com/zenml-io/zenml/pull/2774
18
+ * Added docs for trigger interface by @htahir1 in https://github.com/zenml-io/zenml/pull/2806
19
+ * Update triggers docs with information on previously-run pipelines by @strickvl in https://github.com/zenml-io/zenml/pull/2820
20
+ * Bump kfp version in GCP integration for pydantic2.0 by @wjayesh in https://github.com/zenml-io/zenml/pull/2824
21
+ * Use shared cloud connection to reduce M2M token usage by @schustmi in https://github.com/zenml-io/zenml/pull/2817
22
+ * Fail pipeline run if error happens during deployment by @schustmi in https://github.com/zenml-io/zenml/pull/2818
23
+ * Login to dockerhub to solve rate limiting by @schustmi in https://github.com/zenml-io/zenml/pull/2828
24
+ * Stack wizard CLI + Endpoints by @avishniakov in https://github.com/zenml-io/zenml/pull/2808
25
+ * In-browser assisted full cloud stack deployments by @stefannica in https://github.com/zenml-io/zenml/pull/2816
26
+ * Fix Kubeflow v2 integration by @wjayesh in https://github.com/zenml-io/zenml/pull/2829
27
+ * fix skypilot jobs failing on VMs (sky bumped to 0.6.0) by @wjayesh in https://github.com/zenml-io/zenml/pull/2815
28
+ * Fix unicode decode errors in k8s pod logs read operation by @wjayesh in https://github.com/zenml-io/zenml/pull/2807
29
+ * Small improvements and bug fixes by @schustmi in https://github.com/zenml-io/zenml/pull/2821
30
+ * TF tests + various integration (un)install improvements by @avishniakov in https://github.com/zenml-io/zenml/pull/2791
31
+ * Fixed bug in the MacOS version check by @strickvl in https://github.com/zenml-io/zenml/pull/2819
32
+ * Remove prefix for analytics labels by @schustmi in https://github.com/zenml-io/zenml/pull/2831
33
+
34
+
35
+ **Full Changelog**: https://github.com/zenml-io/zenml/compare/0.60.0...0.61.0
2
36
 
3
37
  # 0.60.0
4
38
 
zenml/VERSION CHANGED
@@ -1 +1 @@
1
- 0.60.0.dev20240627
1
+ 0.61.0.dev20240711
zenml/analytics/enums.py CHANGED
@@ -85,6 +85,9 @@ class AnalyticsEvent(str, Enum):
85
85
  DEPLOY_STACK_COMPONENT = "Stack component deployed"
86
86
  DESTROY_STACK_COMPONENT = "Stack component destroyed"
87
87
 
88
+ # Full stack infrastructure deployment
89
+ DEPLOY_FULL_STACK = "Full stack deployed"
90
+
88
91
  # Tag created
89
92
  CREATED_TAG = "Tag created"
90
93
 
zenml/cli/__init__.py CHANGED
@@ -1411,6 +1411,34 @@ zenml stack register STACK_NAME \
1411
1411
  Each corresponding argument should be the name, id or even the first few letters
1412
1412
  of the id that uniquely identify the artifact store or orchestrator.
1413
1413
 
1414
+ To create a new stack using the new service connector with a set of minimal components,
1415
+ use the following command:
1416
+
1417
+ ```bash
1418
+ zenml stack register STACK_NAME \
1419
+ -p CLOUD_PROVIDER
1420
+ ```
1421
+
1422
+ To create a new stack using the existing service connector with a set of minimal components,
1423
+ use the following command:
1424
+
1425
+ ```bash
1426
+ zenml stack register STACK_NAME \
1427
+ -sc SERVICE_CONNECTOR_NAME
1428
+ ```
1429
+
1430
+ To create a new stack using the existing service connector with existing components (
1431
+ important, that the components are already registered in the service connector), use the
1432
+ following command:
1433
+
1434
+ ```bash
1435
+ zenml stack register STACK_NAME \
1436
+ -sc SERVICE_CONNECTOR_NAME \
1437
+ -a ARTIFACT_STORE_NAME \
1438
+ -o ORCHESTRATOR_NAME \
1439
+ ...
1440
+ ```
1441
+
1414
1442
  If you want to immediately set this newly created stack as your active stack,
1415
1443
  simply pass along the `--set` flag.
1416
1444
 
zenml/cli/artifact.py CHANGED
@@ -13,7 +13,6 @@
13
13
  # permissions and limitations under the License.
14
14
  """CLI functionality to interact with artifacts."""
15
15
 
16
- from functools import partial
17
16
  from typing import Any, Dict, List, Optional
18
17
 
19
18
  import click
@@ -258,7 +257,7 @@ def prune_artifacts(
258
257
  """
259
258
  client = Client()
260
259
  unused_artifact_versions = depaginate(
261
- partial(client.list_artifact_versions, only_unused=True)
260
+ client.list_artifact_versions, only_unused=True
262
261
  )
263
262
 
264
263
  if not unused_artifact_versions:
zenml/cli/integration.py CHANGED
@@ -263,13 +263,6 @@ def install(
263
263
  # no integrations specified, use all registered integrations
264
264
  integrations = set(integration_registry.integrations.keys())
265
265
 
266
- # TODO: remove once python 3.11 gcp integration issue is resolved
267
- if sys.version_info >= (3, 11) and "gcp" in integrations:
268
- warning(
269
- "We are aware of dependency resolution issues when using "
270
- "Python 3.11.x with the GCP integration. For now, please use "
271
- "Python 3.10 or lower instead while we work on a fix."
272
- )
273
266
  for i in ignore_integration:
274
267
  try:
275
268
  integrations.remove(i)
@@ -278,6 +271,14 @@ def install(
278
271
  f"Integration {i} does not exist. Available integrations: "
279
272
  f"{list(integration_registry.integrations.keys())}"
280
273
  )
274
+ # TODO: remove once python 3.8 is deprecated
275
+ if sys.version_info.minor == 8 and "tensorflow" in integrations:
276
+ warning(
277
+ "Python 3.8 with TensorFlow is not fully compatible with "
278
+ "Pydantic 2 requirements. Consider upgrading to a "
279
+ "higher Python version if you would like to use the "
280
+ "Tensorflow integration."
281
+ )
281
282
 
282
283
  requirements = []
283
284
  integrations_to_install = []
@@ -360,7 +361,7 @@ def uninstall(
360
361
  try:
361
362
  if integration_registry.is_installed(integration_name):
362
363
  requirements += (
363
- integration_registry.select_integration_requirements(
364
+ integration_registry.select_uninstall_requirements(
364
365
  integration_name
365
366
  )
366
367
  )
zenml/cli/server.py CHANGED
@@ -170,6 +170,12 @@ def up(
170
170
  else:
171
171
  pass
172
172
  provider = ServerProviderType.LOCAL
173
+ if cli_utils.requires_mac_env_var_warning():
174
+ cli_utils.error(
175
+ "The `OBJC_DISABLE_INITIALIZE_FORK_SAFETY` environment variable "
176
+ "is recommended to run the ZenML server locally on a Mac. "
177
+ "Please set it to `YES` and try again."
178
+ )
173
179
 
174
180
  os.environ[ENV_ZENML_LOCAL_SERVER] = str(True)
175
181