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
@@ -1,2 +0,0 @@
1
- import{j as e,c as D}from"./@tanstack-CEbkxrhX.js";import{F as q,R as G}from"./Cards-DSEdjsk8.js";import{B as L,aC as W,s as P,u as C,ap as B,aD as S,av as $,v as y,h as U,w as k,aq as V,ar as J,as as K,at as Q,au as N,ay as h,aE as u,c as z,S as _,aF as A,aG as R,aH as v,aI as b,aJ as w,aK as T,aw as Y}from"./index-BawkpTlr.js";import{S as I}from"./chevron-down-zcvCWmyP.js";import{r as d}from"./@radix-C9DBgJhe.js";import{u as X}from"./update-server-settings-mutation-bKxf7U9h.js";import{b as ee,S as te,a as se}from"./aws-t0gKCj_R.js";import{H as f}from"./Helpbox-DW21i5LD.js";import{C as n}from"./CodeSnippet-WEzpO0az.js";import{H as re}from"./help-B8rqCvqn.js";import"./file-text-CbVERUON.js";import"./terminal-B2ovgWuz.js";import"./@react-router-DYovave8.js";import"./@reactflow-DYIyhCfd.js";import"./copy-BRhQz3j-.js";function ae(){return e.jsx(L,{className:"flex flex-col-reverse items-stretch overflow-hidden md:flex-row",children:e.jsxs("div",{className:"w-full px-7 py-5 md:w-2/3",children:[e.jsx("h2",{className:"text-display-xs font-semibold",children:"Welcome to ZenML"}),e.jsx("p",{className:"mt-2 text-text-lg text-theme-text-secondary",children:"You successfully installed the ZenML dashboard. Now you can get started with your new ZenML server."})]})})}const M=t=>d.createElement("svg",{viewBox:"0 0 24 24",fill:"black",xmlns:"http://www.w3.org/2000/svg",...t},d.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M20.7071 5.29289C21.0976 5.68342 21.0976 6.31658 20.7071 6.70711L9.70711 17.7071C9.31658 18.0976 8.68342 18.0976 8.29289 17.7071L3.29289 12.7071C2.90237 12.3166 2.90237 11.6834 3.29289 11.2929C3.68342 10.9024 4.31658 10.9024 4.70711 11.2929L9 15.5858L19.2929 5.29289C19.6834 4.90237 20.3166 4.90237 20.7071 5.29289Z"}));function E({tickClasses:t,...r}){return e.jsx(W,{...r,children:e.jsx(M,{className:P("h-4 w-4 fill-success-300",t)})})}function j({completed:t,title:r,children:s,itemName:a,active:c=!0}){const[o,x]=d.useState(!1),i=D(),{data:l}=C({throwOnError:!0}),{mutate:p}=X({onSuccess:()=>{i.invalidateQueries({queryKey:B()})}});function g(Z){var O;const H={...(O=l==null?void 0:l.metadata)==null?void 0:O.onboarding_state,[a]:Z};p({onboarding_state:H})}return e.jsx(S,{open:o,onOpenChange:x,children:e.jsxs("div",{className:"flex w-full flex-col gap-3",children:[e.jsxs("div",{className:"flex w-full justify-between gap-2",children:[t?e.jsx("button",{onClick:()=>g(!1),children:e.jsx(E,{className:"shrink-0"})}):e.jsx($,{className:"shrink-0"}),e.jsx(y,{className:"w-full",children:e.jsx(ne,{title:r,completed:t})}),e.jsxs("div",{className:"flex items-center gap-1",children:[!t&&c&&e.jsxs(U,{onClick:()=>g(!0),className:"items-center whitespace-nowrap",intent:"primary",emphasis:"subtle",children:[e.jsx(M,{className:"h-5 w-5 fill-primary-600"})," ",e.jsx("span",{children:"Mark as done"})]}),e.jsx(y,{children:e.jsx(I,{className:` ${o?"":"-rotate-90"} h-5 w-5 shrink-0 rounded-md fill-neutral-500`})})]})]}),s&&e.jsx(k,{children:e.jsxs("div",{className:"flex w-full items-center gap-2",children:[e.jsx("div",{className:"w-[28px] shrink-0"}),e.jsx("div",{className:"w-full min-w-0 flex-1",children:s})]})})]})})}function ne({completed:t,title:r}){return e.jsx("div",{className:"flex w-full items-center justify-between gap-2",children:e.jsx("div",{className:"flex w-full items-center",children:e.jsx("div",{className:`font-semibold ${t?"text-theme-text-tertiary line-through decoration-theme-text-tertiary":""}
2
- `,children:r})})})}const ce=t=>d.createElement("svg",{viewBox:"0 0 24 24",fill:"black",xmlns:"http://www.w3.org/2000/svg",...t},d.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M5.24923 9.14303C6.0632 6.17816 8.7764 4 12 4C15.2236 4 17.9368 6.17816 18.7508 9.14303C21.1861 9.70961 23 11.8925 23 14.5C23 17.5376 20.5376 20 17.5 20H6.5C3.46243 20 1 17.5376 1 14.5C1 11.8925 2.8139 9.70961 5.24923 9.14303ZM12 6C9.51785 6 7.45643 7.80968 7.0665 10.1816C6.99268 10.6306 6.62505 10.9731 6.17196 11.0151C4.39329 11.1798 3 12.6778 3 14.5C3 16.433 4.567 18 6.5 18H17.5C19.433 18 21 16.433 21 14.5C21 12.6778 19.6067 11.1798 17.828 11.0151C17.375 10.9731 17.0073 10.6306 16.9335 10.1816C16.5436 7.80968 14.4822 6 12 6Z"}));function F({displayOther:t=!1,setValue:r,value:s,id:a}){return e.jsxs(V,{value:s,onValueChange:r,children:[e.jsx(J,{id:a,className:"w-[125px] border border-neutral-300 px-2 text-left text-text-md",children:e.jsx(K,{placeholder:"Select your Provider"})}),e.jsxs(Q,{className:"",children:[e.jsx(N,{value:"aws",children:e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(ee,{className:"h-5 w-5"}),"AWS"]})}),e.jsxs(N,{value:"gcp",children:[" ",e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(te,{className:"h-5 w-5"}),"GCP"]})]}),e.jsx(N,{value:"azure",children:e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(se,{className:"h-5 w-5"}),"Azure"]})}),t&&e.jsx(N,{value:"other",children:e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(ce,{className:"h-5 w-5 stroke-neutral-400"}),"Other"]})})]})]})}function ie(){return e.jsx(e.Fragment,{children:e.jsxs("div",{className:"space-y-1",children:[e.jsxs("p",{className:"text-text-sm text-theme-text-secondary",children:["Create a AWS service connector using the IAM Method"," ",e.jsx(m,{href:"https://docs.zenml.io/how-to/auth-management/aws-service-connector#aws-iam-role"})]}),e.jsx(n,{wrap:!0,codeClasses:"whitespace-pre-wrap",code:"AWS_PROFILE=<AWS_PROFILE> zenml service-connector register cloud_connector --type aws --auto-configure"})]})})}function le(){return e.jsx(e.Fragment,{children:e.jsxs("div",{className:"space-y-1",children:[e.jsxs("p",{className:"text-text-sm text-theme-text-secondary",children:["Create a GCP service connector using the Service Account Method"," ",e.jsx(m,{href:"https://docs.zenml.io/how-to/auth-management/gcp-service-connector#gcp-service-account"})]}),e.jsx(n,{wrap:!0,codeClasses:"whitespace-pre-wrap",code:"zenml service-connector register cloud_connector --type gcp --auth-method service-account --service_account_json=@<PATH_TO_SERVICE_ACCOUNT_JSON> --project-id=<PROJECT_ID> --generate_temporary_tokens=False"})]})})}function oe(){return e.jsx(e.Fragment,{children:e.jsxs("div",{className:"space-y-1",children:[e.jsxs("p",{className:"text-text-sm text-theme-text-secondary",children:["Create an Azure service connector using the Service Principal Method"," ",e.jsx(m,{href:"https://docs.zenml.io/how-to/auth-management/azure-service-connector#azure-service-principal"})]}),e.jsx(n,{wrap:!0,codeClasses:"whitespace-pre-wrap",code:"zenml service-connector register cloud_connector --type azure --auth-method service-principal --tenant_id=<TENANT_ID> --client_id=<CLIENT_ID> --client_secret=<CLIENT_SECRET>"})]})})}function de(t){switch(t){case"gcp":return e.jsx(le,{});case"aws":return e.jsx(ie,{});case"azure":return e.jsx(oe,{})}}function me(){return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-text-sm text-theme-text-secondary",children:"Install the AWS CLI on your machine"}),e.jsx("div",{className:"inline-block",children:e.jsx("a",{target:"_blank",rel:"noopener noreferrer",className:h({intent:"primary",emphasis:"subtle",size:"md"}),href:"https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html",children:"How to install the AWS CLI"})})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsxs("p",{className:"text-text-sm text-theme-text-secondary",children:["Create a AWS bucket or identify an existing one"," ",e.jsx("span",{className:"text-theme-text-tertiary",children:"(Optional)"})," ",e.jsx(m,{href:"https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/create-bucket.html"})]}),e.jsx(n,{wrap:!0,codeClasses:"whitespace-pre-wrap",code:"aws s3api create-bucket --bucket your-bucket-name --region your-region-name"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-text-sm text-theme-text-secondary",children:"Install the S3 ZenML integration"}),e.jsx(n,{wrap:!0,codeClasses:"whitespace-pre-wrap",code:"zenml integration install s3 -y"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-text-sm text-theme-text-secondary",children:"Register the artifact store"}),e.jsx(n,{wrap:!0,codeClasses:"whitespace-pre-wrap",code:"zenml artifact-store register cloud_artifact_store -f s3 --path=s3://bucket-name --connector <CONNECTOR_ID>"})]})]})}function xe(){return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-text-sm text-theme-text-secondary",children:"Install the Google Cloud CLI on your machine"}),e.jsx("div",{className:"inline-block",children:e.jsx("a",{target:"_blank",rel:"noopener noreferrer",className:h({intent:"primary",emphasis:"subtle",size:"md"}),href:"https://cloud.google.com/sdk/docs/install-sdk",children:"How to install the Google Cloud CLI"})})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsxs("p",{className:"text-text-sm text-theme-text-secondary",children:["Create a GCP bucket or identify an existing one"," ",e.jsx("span",{className:"text-theme-text-tertiary",children:"(Optional)"})," ",e.jsx(m,{href:"https://cloud.google.com/storage/docs/creating-buckets"})]}),e.jsx(n,{wrap:!0,codeClasses:"whitespace-pre-wrap",code:"gsutil mb gs://your-bucket-name"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-text-sm text-theme-text-secondary",children:"Install the GCP ZenML integration "}),e.jsx(n,{wrap:!0,codeClasses:"whitespace-pre-wrap",code:"zenml integration install gcp -y"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-text-sm text-theme-text-secondary",children:"Register the artifact store"}),e.jsx(n,{wrap:!0,codeClasses:"whitespace-pre-wrap",code:"zenml artifact-store register cloud_artifact_store -f gcp --path=gs://bucket-name --connector <CONNECTOR_ID>"})]})]})}function pe(){return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-text-sm text-theme-text-secondary",children:"Install the Azure CLI on your machine"}),e.jsx("div",{className:"inline-block",children:e.jsx("a",{target:"_blank",rel:"noopener noreferrer",className:h({intent:"primary",emphasis:"subtle",size:"md"}),href:"https://learn.microsoft.com/en-us/cli/azure/install-azure-cli",children:"How to install the Azure CLI"})})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsxs("p",{className:"text-text-sm text-theme-text-secondary",children:["Create a Azure bucket or identify an existing one"," ",e.jsx("span",{className:"text-theme-text-tertiary",children:"(Optional)"})," ",e.jsx(m,{href:"https://learn.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-portal"})]}),e.jsx(n,{wrap:!0,codeClasses:"truncate",code:"az storage container create --name your-bucket-name --account-name your-storage-account"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsxs("p",{className:"text-text-sm text-theme-text-secondary",children:["Install the Azure ZenML integration"," "]}),e.jsx(n,{wrap:!0,codeClasses:"whitespace-pre-wrap",code:"zenml integration install azure -y"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-text-sm text-theme-text-secondary",children:"Register the artifact store"}),e.jsx(n,{wrap:!0,codeClasses:"whitespace-pre-wrap",code:"zenml artifact-store register cloud_artifact_store -f azure --path=az://container-name --connector <CONNECTOR_ID>"})]})]})}function he(){return e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-text-sm text-theme-text-secondary",children:"Create a remote artifact in any environment following our guides."}),e.jsx("div",{className:"inline-block",children:e.jsx("a",{target:"_blank",rel:"noopener noreferrer",className:h({intent:"primary",emphasis:"subtle",size:"md"}),href:"https://docs.zenml.io/how-to/stack-deployment/implement-a-custom-stack-component",children:"How to create a custom artifact store"})})]})}function ue(t){switch(t){case"gcp":return e.jsx(xe,{});case"aws":return e.jsx(me,{});case"azure":return e.jsx(pe,{});case"other":return e.jsx(he,{})}}function je({onboardingState:t,active:r}){const[s,a]=d.useState("aws"),c="create_service_connector",o=u(t||{},c);return e.jsxs(j,{active:r,completed:!!o,title:"Create a service connector",itemName:c,children:[e.jsxs("p",{className:"mb-3",children:["A service connector grants users of your ZenML tenant the ability to access components like your artifact store"," ",e.jsx(m,{href:"https://docs.zenml.io/user-guide/production-guide/remote-storage#configuring-permissions-with-your-first-service-connector"})]}),e.jsxs("div",{className:"space-y-5",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("label",{htmlFor:"artifact-store-provider",className:"text-text-sm text-theme-text-secondary",children:"Select your cloud provider"}),e.jsx(F,{id:"artifact-store-provider",value:s,setValue:a})]}),de(s),e.jsx("div",{children:e.jsx(f,{link:"https://docs.zenml.io/user-guide/production-guide/remote-storage#configuring-permissions-with-your-first-service-connector"})})]})]})}function ge({onboardingState:t,active:r}){const[s,a]=d.useState("aws"),c="create_remote_artifact_store",o=u(t||{},c);return e.jsxs(j,{itemName:c,completed:!!o,title:"Create an artifact store",active:r,children:[e.jsxs("p",{className:"mb-3",children:["Configuring a remote artifact store will version your pipeline's data directly in your cloud provider"," ",e.jsx(m,{href:"https://docs.zenml.io/user-guide/production-guide/remote-storage"})]}),e.jsxs("div",{className:"space-y-5",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("label",{htmlFor:"artifact-store-provider",className:"text-text-sm text-theme-text-secondary",children:"Select your cloud provider"}),e.jsx(F,{displayOther:!0,id:"artifact-store-provider",value:s,setValue:a})]}),ue(s),e.jsx("div",{children:e.jsx(f,{link:"https://docs.zenml.io/user-guide/production-guide/remote-storage"})})]})]})}function fe({onboardingState:t,active:r}){const s="create_remote_stack",a=u(t||{},s);return e.jsxs(j,{itemName:s,completed:!!a,title:"Create a new stack",active:r,children:[e.jsxs("p",{className:"mb-3",children:["A stack configures how a pipeline is executed"," ",e.jsx(m,{href:"https://docs.zenml.io/user-guide/production-guide/understand-stacks"})]}),e.jsxs("div",{className:"space-y-5",children:[e.jsxs("div",{children:[e.jsx("p",{className:"mb-1 text-text-sm text-theme-text-secondary",children:"Download the quickstart example to your local machine"}),e.jsx(n,{codeClasses:"whitespace-pre-wrap",code:"zenml stack register local_with_remote_storage -o default -a cloud_artifact_store"})]}),e.jsx(f,{link:"https://docs.zenml.io/user-guide/production-guide/understand-stacks"})]})]})}function Ne({active:t,onboardingState:r}){const s="run_remote_pipeline",a=u(r||{},s);return e.jsx(j,{itemName:s,completed:!!a,title:"Run the pipeline in the new stack",active:t,children:e.jsxs("div",{className:"space-y-5",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-text-sm text-theme-text-secondary",children:"Set the new stack"}),e.jsx(n,{wrap:!0,codeClasses:"whitespace-pre-wrap",code:"zenml stack set local_with_remote_storage"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-text-sm text-theme-text-secondary",children:"Run the pipeline"}),e.jsx(n,{wrap:!0,codeClasses:"whitespace-pre-wrap",code:"python run.py --training-pipeline"})]}),e.jsx("div",{children:e.jsx(f,{link:"https://docs.zenml.io/user-guide/production-guide/understand-stacks"})})]})})}function m({href:t}){return e.jsx("a",{href:t,rel:"noopener noreferrer",target:"_blank",className:"link text-text-sm font-semibold text-theme-text-brand",children:"Learn more"})}function ve(){const{isError:t,isPending:r,data:s}=C({throwOnError:!0}),a=z(),[c,o]=d.useState(!0);if(r||a.isPending)return e.jsx(_,{className:"h-[200px] w-full"});if(t||a.isError)return null;const x=A(R(a.data.deployment_type||"other")),i=v(s),l=b(i,x)===x.length,p=b(i,w),g=p/w.length*100;return e.jsx(e.Fragment,{children:e.jsxs(S,{onOpenChange:o,open:c,className:P("rounded-md border border-theme-border-moderate bg-theme-surface-primary"),children:[e.jsxs(y,{className:"flex w-full items-center justify-between gap-[10px] p-3",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[g>=100?e.jsx(E,{className:"h-7 w-7",tickClasses:"w-[28px] h-[28px]"}):e.jsx(T,{value:g,children:e.jsxs("span",{className:"absolute text-text-xs font-semibold",children:[p,"/",w.length]})}),e.jsxs("div",{className:"text-left",children:[e.jsxs("p",{className:"text-text-md font-semibold",children:["Production Setup"," ",e.jsx("span",{className:"text-text-md font-medium text-theme-text-secondary",children:"(10 min)"})]}),e.jsx("p",{className:"text-theme-text-secondary",children:l?"Level up your skills in a production setting.":e.jsx("span",{className:"text-primary-400",children:"Complete the Starter Setup to enable the production setup."})})]})]}),e.jsx(I,{className:` ${c?"":"-rotate-90"} h-5 w-5 shrink-0 rounded-md fill-neutral-500 transition-transform duration-200 hover:bg-neutral-200`})]}),e.jsx(k,{className:"border-t border-theme-border-moderate p-5",children:e.jsxs("ul",{className:"divide-y divide-theme-border-moderate",children:[e.jsx("li",{className:"py-5 first:pt-0 last:pb-0",children:e.jsx(je,{onboardingState:i,active:l})}),e.jsx("li",{className:"py-5 first:pt-0 last:pb-0",children:e.jsx(ge,{onboardingState:i,active:l})}),e.jsx("li",{className:"py-5 first:pt-0 last:pb-0",children:e.jsx(fe,{onboardingState:i,active:l})}),e.jsx("li",{className:"py-5 first:pt-0 last:pb-0",children:e.jsx(Ne,{onboardingState:i,active:l})})]})})]})})}function ye({onboardingState:t}){const{data:r}=z({throwOnError:!0}),s="connect_zenml",a=u(t||{},s);return e.jsx(j,{itemName:s,completed:!!a,title:"Connect to ZenML",children:e.jsxs("div",{className:"flex flex-col gap-5",children:[e.jsxs("div",{children:[e.jsx("p",{className:"mb-1 text-text-sm text-theme-text-secondary",children:"Install ZenML"}),e.jsx(n,{code:`pip install "zenml==${r?r.version:e.jsx(_,{className:"w-7"})}"`})]}),e.jsxs("div",{children:[e.jsx("p",{className:"mb-1 text-text-sm text-theme-text-secondary",children:"Login to your ZenML Cloud tenant"}),e.jsx(n,{code:`zenml connect --url ${window.location.origin}`})]}),e.jsx(f,{link:"https://docs.zenml.io/user-guide/production-guide/deploying-zenml#connecting-to-a-deployed-zenml"})]})})}function we({onboardingState:t}){const r="run_first_pipeline",s=u(t||{},r);return e.jsx(j,{itemName:r,completed:!!s,title:"Run your first pipeline",children:e.jsxs("div",{className:"flex flex-col gap-5",children:[e.jsxs("div",{children:[e.jsx("p",{className:"mb-1 text-text-sm text-theme-text-secondary",children:"Download the quickstart example to your local machine"}),e.jsx(n,{code:"git clone --depth 1 https://github.com/zenml-io/zenml.git && cd zenml/examples/quickstart"})]}),e.jsxs("div",{children:[e.jsx("p",{className:"mb-1 text-text-sm text-theme-text-secondary",children:"Initialize ZenML in the current directory"}),e.jsx(n,{code:"zenml init"})]}),e.jsxs("div",{children:[e.jsx("p",{className:"mb-1 text-text-sm text-theme-text-secondary",children:"Install the remaining requirements apart from ZenML"}),e.jsx(n,{code:"pip install -r requirements.txt"})]}),e.jsxs("div",{children:[e.jsxs("p",{className:"mb-1 text-text-sm text-theme-text-secondary",children:["Run the training pipeline.",e.jsx("br",{}),"Once it is running, your dashboard will show all the details of the associated run, models, and artifacts."]}),e.jsx(n,{code:"python run.py --training-pipeline"})]}),e.jsxs(L,{className:"flex w-full flex-wrap items-center justify-between gap-y-1 p-2",children:[e.jsxs("div",{className:"flex items-center gap-[10px]",children:[e.jsx("div",{className:"flex h-7 w-7 items-center justify-center rounded-sm bg-teal-25",children:e.jsx(re,{className:"h-5 w-5 fill-teal-400"})}),e.jsx("p",{children:"Do you need help?"})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("a",{target:"_blank",rel:"noopener noreferrer",className:h({intent:"secondary",emphasis:"subtle",size:"md"}),href:"https://github.com/zenml-io/zenml/blob/main/examples/quickstart/README.md",children:"Open the Readme"}),e.jsx("a",{target:"_blank",rel:"noopener noreferrer",className:h({intent:"primary",emphasis:"subtle",size:"md"}),href:"https://docs.zenml.io/user-guide/starter-guide/create-an-ml-pipeline",children:"Browse our docs"})]})]})]})})}function be(){const{isError:t,isPending:r,data:s}=C({throwOnError:!0}),a=z(),[c,o]=d.useState(!0);if(r||a.isPending)return e.jsx(_,{className:"h-[200px] w-full"});if(t||a.isError)return null;const x=R(a.data.deployment_type||"other"),i=A(x),l=b(v(s),i),p=l/i.length*100;return e.jsxs(S,{open:c,onOpenChange:o,className:"rounded-md border border-theme-border-moderate bg-theme-surface-primary",children:[e.jsxs(y,{className:"flex w-full items-center justify-between gap-[10px] p-3",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[p>=100?e.jsx(E,{className:"h-7 w-7",tickClasses:"w-[28px] h-[28px]"}):e.jsx(T,{value:p,children:e.jsxs("span",{className:"absolute text-text-xs font-semibold",children:[l,"/",i.length]})}),e.jsxs("div",{className:"text-left",children:[e.jsxs("p",{className:"text-text-xl font-semibold",children:["Starter Setup"," ",e.jsx("span",{className:"text-text-md font-medium text-theme-text-secondary",children:"(2 min)"})]}),e.jsx("p",{className:"text-theme-text-secondary",children:"Follow these steps to make sure your client is connected and run your first MLOps pipeline with ZenML"})]})]}),e.jsx(I,{className:` ${c?"":"-rotate-90"} h-5 w-5 shrink-0 rounded-md fill-neutral-500 transition-transform duration-200 hover:bg-neutral-200`})]}),e.jsx(k,{className:"border-t border-theme-border-moderate p-5",children:e.jsxs("ul",{className:"divide-y divide-theme-border-moderate",children:[!x&&e.jsx("li",{className:"py-5 first:pt-0 last:pb-0",children:e.jsx(ye,{onboardingState:v(s)})}),e.jsx("li",{className:"py-5 first:pt-0 last:pb-0",children:e.jsx(we,{onboardingState:v(s)})})]})})]})}function Ze(){const{setTourState:t,tourState:{tourActive:r}}=Y();return d.useEffect(()=>{r&&t(s=>({...s,run:!0,stepIndex:s.stepIndex}))},[r]),e.jsxs("div",{className:"layout-container grid grid-cols-4 gap-5 py-5",children:[e.jsxs("div",{className:"col-span-4 space-y-5 lg:col-span-3",children:[e.jsx(ae,{}),e.jsx(be,{}),e.jsx(ve,{})]}),e.jsxs("div",{className:"col-span-4 space-y-5 lg:col-span-1",children:[e.jsx(q,{}),e.jsx(G,{})]})]})}export{Ze as default};