zenml-nightly 0.83.1.dev20250710__py3-none-any.whl → 0.84.0.dev20250712__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 (267) hide show
  1. zenml/VERSION +1 -1
  2. zenml/artifact_stores/base_artifact_store.py +51 -23
  3. zenml/artifacts/utils.py +3 -1
  4. zenml/cli/pipeline.py +13 -2
  5. zenml/constants.py +4 -0
  6. zenml/container_registries/base_container_registry.py +17 -5
  7. zenml/enums.py +9 -0
  8. zenml/integrations/aws/flavors/sagemaker_orchestrator_flavor.py +150 -117
  9. zenml/integrations/aws/flavors/sagemaker_step_operator_flavor.py +43 -42
  10. zenml/integrations/aws/orchestrators/sagemaker_orchestrator.py +16 -7
  11. zenml/integrations/azure/orchestrators/azureml_orchestrator.py +18 -12
  12. zenml/integrations/bentoml/flavors/bentoml_model_deployer_flavor.py +7 -1
  13. zenml/integrations/databricks/flavors/databricks_orchestrator_flavor.py +58 -23
  14. zenml/integrations/feast/flavors/feast_feature_store_flavor.py +18 -5
  15. zenml/integrations/gcp/flavors/vertex_experiment_tracker_flavor.py +10 -42
  16. zenml/integrations/gcp/flavors/vertex_orchestrator_flavor.py +99 -92
  17. zenml/integrations/gcp/google_credentials_mixin.py +13 -8
  18. zenml/integrations/gcp/orchestrators/vertex_orchestrator.py +18 -9
  19. zenml/integrations/huggingface/__init__.py +1 -1
  20. zenml/integrations/hyperai/flavors/hyperai_orchestrator_flavor.py +28 -30
  21. zenml/integrations/kaniko/flavors/kaniko_image_builder_flavor.py +56 -40
  22. zenml/integrations/kubeflow/flavors/kubeflow_orchestrator_flavor.py +59 -48
  23. zenml/integrations/kubernetes/flavors/kubernetes_orchestrator_flavor.py +159 -121
  24. zenml/integrations/kubernetes/flavors/kubernetes_step_operator_flavor.py +48 -33
  25. zenml/integrations/kubernetes/orchestrators/kubernetes_orchestrator.py +182 -1
  26. zenml/integrations/kubernetes/orchestrators/kubernetes_orchestrator_entrypoint.py +7 -3
  27. zenml/integrations/lightning/flavors/lightning_orchestrator_flavor.py +41 -25
  28. zenml/integrations/mlflow/flavors/mlflow_experiment_tracker_flavor.py +51 -44
  29. zenml/integrations/mlflow/flavors/mlflow_model_deployer_flavor.py +9 -4
  30. zenml/integrations/neptune/flavors/neptune_experiment_tracker_flavor.py +13 -12
  31. zenml/integrations/s3/flavors/s3_artifact_store_flavor.py +32 -7
  32. zenml/integrations/vllm/flavors/vllm_model_deployer_flavor.py +7 -1
  33. zenml/integrations/wandb/flavors/wandb_experiment_tracker_flavor.py +34 -25
  34. zenml/integrations/whylogs/flavors/whylogs_data_validator_flavor.py +14 -11
  35. zenml/logging/step_logging.py +8 -7
  36. zenml/models/v2/core/logs.py +2 -1
  37. zenml/models/v2/core/pipeline_run.py +0 -59
  38. zenml/orchestrators/base_orchestrator.py +7 -1
  39. zenml/pipelines/build_utils.py +2 -1
  40. zenml/stack/authentication_mixin.py +6 -5
  41. zenml/stack/flavor.py +5 -1
  42. zenml/utils/code_utils.py +2 -1
  43. zenml/utils/docker_utils.py +22 -0
  44. zenml/utils/io_utils.py +18 -0
  45. zenml/utils/pipeline_docker_image_builder.py +4 -1
  46. zenml/utils/run_utils.py +101 -8
  47. zenml/zen_server/dashboard/assets/{404-B5eko6XL.js → 404-B5cfnwZ1.js} +1 -1
  48. zenml/zen_server/dashboard/assets/{@radix-Cdvw4jJ8.js → @radix-C_LirfyT.js} +1 -1
  49. zenml/zen_server/dashboard/assets/{@react-router-DeDfXbUF.js → @react-router-BSsrkPOd.js} +1 -1
  50. zenml/zen_server/dashboard/assets/{@reactflow-B_iCtR7X.js → @reactflow-D9hglKLF.js} +2 -2
  51. zenml/zen_server/dashboard/assets/{@tanstack-5gTMR7G2.js → @tanstack-C0SeHZng.js} +1 -1
  52. zenml/zen_server/dashboard/assets/AlertDialogDropdownItem-druRNuO2.js +1 -0
  53. zenml/zen_server/dashboard/assets/ButtonGroup-SF2DlzHV.js +1 -0
  54. zenml/zen_server/dashboard/assets/{CodeSnippet-Ctplhzdc.js → CodeSnippet-D8iBqOVv.js} +1 -1
  55. zenml/zen_server/dashboard/assets/CollapsibleCard-D0-pQi1n.js +1 -0
  56. zenml/zen_server/dashboard/assets/{ComponentBadge-Cnecw3qz.js → ComponentBadge-mw2Ja_ON.js} +1 -1
  57. zenml/zen_server/dashboard/assets/ComponentIcon-BXgpt-jw.js +1 -0
  58. zenml/zen_server/dashboard/assets/{DeleteAlertDialog-DEI0YDzP.js → DeleteAlertDialog-BbyFVnVI.js} +1 -1
  59. zenml/zen_server/dashboard/assets/DialogItem-DeME0oSt.js +1 -0
  60. zenml/zen_server/dashboard/assets/{DisplayDate-8RESqe5H.js → DisplayDate-v3KW7oez.js} +1 -1
  61. zenml/zen_server/dashboard/assets/{EmptyState-CjrgDtVk.js → EmptyState-DG0m-CGv.js} +1 -1
  62. zenml/zen_server/dashboard/assets/Error-DcVLcrLs.js +1 -0
  63. zenml/zen_server/dashboard/assets/ExecutionStatus-C4tlFnlh.js +1 -0
  64. zenml/zen_server/dashboard/assets/{Helpbox-DtUG2Bf_.js → Helpbox-C-RGHz3S.js} +1 -1
  65. zenml/zen_server/dashboard/assets/{Infobox-CSBRrM6r.js → Infobox-DFCWPbMb.js} +1 -1
  66. zenml/zen_server/dashboard/assets/{LeftSideMenu-DPsCCK3z.js → LeftSideMenu-Czev0KCA.js} +1 -1
  67. zenml/zen_server/dashboard/assets/{Lock-CrIAdQo6.js → Lock-CRP5J_su.js} +1 -1
  68. zenml/zen_server/dashboard/assets/NestedCollapsible-CN9scBUn.js +1 -0
  69. zenml/zen_server/dashboard/assets/{NumberBox-DtCv7jh3.js → NumberBox-CoQjQYDJ.js} +1 -1
  70. zenml/zen_server/dashboard/assets/{Pagination-CWnEpSpN.js → Pagination-CcDD5yHh.js} +1 -1
  71. zenml/zen_server/dashboard/assets/Partials-DlMzfKgs.js +1 -0
  72. zenml/zen_server/dashboard/assets/{PasswordChecker-B88WjuCe.js → PasswordChecker-BZwoeQIm.js} +1 -1
  73. zenml/zen_server/dashboard/assets/{ProCta-CNyp04C8.js → ProCta-CU2ycJDo.js} +1 -1
  74. zenml/zen_server/dashboard/assets/ProviderIcon-BMAn9Jld.js +1 -0
  75. zenml/zen_server/dashboard/assets/ProviderRadio-D_q9tE3G.js +1 -0
  76. zenml/zen_server/dashboard/assets/RunsBody-BToytB8e.js +1 -0
  77. zenml/zen_server/dashboard/assets/{SearchField-BtUi6cYl.js → SearchField-D_0-uAPj.js} +1 -1
  78. zenml/zen_server/dashboard/assets/SecretTooltip-BcWMKb9f.js +1 -0
  79. zenml/zen_server/dashboard/assets/{SetPassword-BmbgL_ed.js → SetPassword-CaKVSqAL.js} +1 -1
  80. zenml/zen_server/dashboard/assets/{SheetHeader-DkH7aG9K.js → SheetHeader-7vwlsY_i.js} +1 -1
  81. zenml/zen_server/dashboard/assets/StackComponentList-s7eSfm8o.js +1 -0
  82. zenml/zen_server/dashboard/assets/StackList-Dt0FrIkM.js +1 -0
  83. zenml/zen_server/dashboard/assets/Tabs-B27AHUfo.js +1 -0
  84. zenml/zen_server/dashboard/assets/Tick-DDeDgTuT.js +1 -0
  85. zenml/zen_server/dashboard/assets/{UpdatePasswordSchemas-D_DCETSO.js → UpdatePasswordSchemas-Da5RndbV.js} +1 -1
  86. zenml/zen_server/dashboard/assets/{Wizard-BHvY75u_.js → Wizard-8aJzxUjb.js} +1 -1
  87. zenml/zen_server/dashboard/assets/WizardFooter-Bt7_UE14.js +1 -0
  88. zenml/zen_server/dashboard/assets/{all-pipeline-runs-query-DpKw9WL9.js → all-pipeline-runs-query-gorNNEaT.js} +1 -1
  89. zenml/zen_server/dashboard/assets/{arrow-left-MRXv5pAH.js → arrow-left-hcj2H8HY.js} +1 -1
  90. zenml/zen_server/dashboard/assets/bar-chart-square-check-9siI9icm.js +1 -0
  91. zenml/zen_server/dashboard/assets/{bulk-delete-CzYA--cC.js → bulk-delete-B5RTlnD_.js} +1 -1
  92. zenml/zen_server/dashboard/assets/{check-B9QMTa3f.js → check-D1bHMJkL.js} +1 -1
  93. zenml/zen_server/dashboard/assets/{check-circle-C4tYvbtw.js → check-circle-mnEgPhPF.js} +1 -1
  94. zenml/zen_server/dashboard/assets/{chevron-down-jbbQh82s.js → chevron-down-Z3nUe-0U.js} +1 -1
  95. zenml/zen_server/dashboard/assets/{chevron-right-double-Dgp_gEsp.js → chevron-right-double-CbRQKN4Q.js} +1 -1
  96. zenml/zen_server/dashboard/assets/{clock-B_mTG8PH.js → clock-BMjHXT3f.js} +1 -1
  97. zenml/zen_server/dashboard/assets/{code-browser-CiD8qkBx.js → code-browser-DftoiCIg.js} +1 -1
  98. zenml/zen_server/dashboard/assets/configuration-form-Yz8m0QIG.js +1 -0
  99. zenml/zen_server/dashboard/assets/constants-DeV48DuZ.js +1 -0
  100. zenml/zen_server/dashboard/assets/{create-stack-BpZrmKDu.js → create-stack-BruqH_6X.js} +1 -1
  101. zenml/zen_server/dashboard/assets/credit-card-CH1BHrXY.js +1 -0
  102. zenml/zen_server/dashboard/assets/dataflow-2-qHjWt7zp.js +1 -0
  103. zenml/zen_server/dashboard/assets/{delete-run-BkyDsKQc.js → delete-run-ibBtciMR.js} +1 -1
  104. zenml/zen_server/dashboard/assets/{expand-full-BPiXpch2.js → expand-full-CD4fFvM-.js} +1 -1
  105. zenml/zen_server/dashboard/assets/{eye-CbVlAYty.js → eye-CLNgIh_K.js} +1 -1
  106. zenml/zen_server/dashboard/assets/{file-text-Cd8wVfq5.js → file-text-CltVhgwZ.js} +1 -1
  107. zenml/zen_server/dashboard/assets/form-6aSt3tIl.js +1 -0
  108. zenml/zen_server/dashboard/assets/form-schemas-B9XgTS1V.js +1 -0
  109. zenml/zen_server/dashboard/assets/gradient_bg-BH8t8fi6.webp +0 -0
  110. zenml/zen_server/dashboard/assets/{help-Co6aedki.js → help-B0CvBhCm.js} +1 -1
  111. zenml/zen_server/dashboard/assets/icon-hDriJUXY.js +1 -0
  112. zenml/zen_server/dashboard/assets/{index-eoDB_1XX.js → index-B7CRNU8l.js} +1 -1
  113. zenml/zen_server/dashboard/assets/index-BQWlHo1Y.js +1 -0
  114. zenml/zen_server/dashboard/assets/{index-DWpiv-Ft.js → index-BRhKF2z-.js} +1 -1
  115. zenml/zen_server/dashboard/assets/{index-BgEfQ3_G.js → index-BacoJBEQ.js} +11 -11
  116. zenml/zen_server/dashboard/assets/{index-BBt0LDtR.js → index-dCcVgFNl.js} +1 -1
  117. zenml/zen_server/dashboard/assets/index-eggipFZS.css +1 -0
  118. zenml/zen_server/dashboard/assets/index-mA8kL088.js +14 -0
  119. zenml/zen_server/dashboard/assets/{index.es-C1gfATPn.js → index.es-DcVFDpJU.js} +1 -1
  120. zenml/zen_server/dashboard/assets/{index.esm-DhJo3mA6.js → index.esm-COnaHLSh.js} +1 -1
  121. zenml/zen_server/dashboard/assets/{info-QkbQz4QU.js → info-CyMih3vQ.js} +1 -1
  122. zenml/zen_server/dashboard/assets/{key-icon-C07HKw8z.js → key-icon-HOx2gazv.js} +1 -1
  123. zenml/zen_server/dashboard/assets/{layout-DBbfEFBe.js → layout-C5dgIReC.js} +1 -1
  124. zenml/zen_server/dashboard/assets/layout-CFLL6-CM.js +1 -0
  125. zenml/zen_server/dashboard/assets/{login-mutation-C1hvP_cX.js → login-mutation-CidpsqyH.js} +1 -1
  126. zenml/zen_server/dashboard/assets/{logs-CQKlJjo0.js → logs-DoLoTEfj.js} +1 -1
  127. zenml/zen_server/dashboard/assets/mail-C160gvB0.js +1 -0
  128. zenml/zen_server/dashboard/assets/message-chat-square-DLz6XmPS.js +1 -0
  129. zenml/zen_server/dashboard/assets/{package-miExReQl.js → package-BhYXGPxF.js} +1 -1
  130. zenml/zen_server/dashboard/assets/page-6huxSHEu.js +1 -0
  131. zenml/zen_server/dashboard/assets/page-7CJ4Wq3O.js +1 -0
  132. zenml/zen_server/dashboard/assets/page-8U20Tu_8.js +1 -0
  133. zenml/zen_server/dashboard/assets/{page-4zc4xPv2.js → page-BByayrO-.js} +2 -2
  134. zenml/zen_server/dashboard/assets/page-BCRXJXC9.js +1 -0
  135. zenml/zen_server/dashboard/assets/page-BK59rZvf.js +1 -0
  136. zenml/zen_server/dashboard/assets/page-BMpXak4U.js +1 -0
  137. zenml/zen_server/dashboard/assets/page-BTDi81N3.js +1 -0
  138. zenml/zen_server/dashboard/assets/{page-D-tJ_Y0a.js → page-BX67x4iL.js} +1 -1
  139. zenml/zen_server/dashboard/assets/page-Bjmcdg64.js +1 -0
  140. zenml/zen_server/dashboard/assets/page-BsAn8p4m.js +1 -0
  141. zenml/zen_server/dashboard/assets/{page-C2i-C7jv.js → page-BwjPRuaY.js} +1 -1
  142. zenml/zen_server/dashboard/assets/page-CDtSVkNc.js +1 -0
  143. zenml/zen_server/dashboard/assets/page-CEDU0L2T.js +1 -0
  144. zenml/zen_server/dashboard/assets/page-COJK90rG.js +1 -0
  145. zenml/zen_server/dashboard/assets/page-CY0LPcAJ.js +1 -0
  146. zenml/zen_server/dashboard/assets/page-C_XMn4GU.js +1 -0
  147. zenml/zen_server/dashboard/assets/page-Cb3KGsPK.js +22 -0
  148. zenml/zen_server/dashboard/assets/page-Cc8owYXQ.js +1 -0
  149. zenml/zen_server/dashboard/assets/{page-C3JfJxuR.js → page-CeGBDh1Q.js} +1 -1
  150. zenml/zen_server/dashboard/assets/page-CiGOVsj3.js +1 -0
  151. zenml/zen_server/dashboard/assets/page-CmLSFMkW.js +1 -0
  152. zenml/zen_server/dashboard/assets/page-CnfCptXq.js +1 -0
  153. zenml/zen_server/dashboard/assets/page-CvllZMBF.js +1 -0
  154. zenml/zen_server/dashboard/assets/page-CxzglV3-.js +1 -0
  155. zenml/zen_server/dashboard/assets/{page-rVhXI5ZO.js → page-D6cvOG8w.js} +1 -1
  156. zenml/zen_server/dashboard/assets/{page-BxeZrG_t.js → page-DDWW21kl.js} +1 -1
  157. zenml/zen_server/dashboard/assets/{page-DiHZK-1w.js → page-DF4FVxxW.js} +2 -2
  158. zenml/zen_server/dashboard/assets/page-DSZfclXt.js +1 -0
  159. zenml/zen_server/dashboard/assets/page-DVLez4R1.js +1 -0
  160. zenml/zen_server/dashboard/assets/page-DcXrWWWh.js +1 -0
  161. zenml/zen_server/dashboard/assets/page-Dg7-H_9i.js +1 -0
  162. zenml/zen_server/dashboard/assets/{page-BPQ66vR-.js → page-DgldL5UB.js} +2 -2
  163. zenml/zen_server/dashboard/assets/page-Dw7XuiSo.js +18 -0
  164. zenml/zen_server/dashboard/assets/{page-DOCOmmKn.js → page-FQxi1Otg.js} +1 -1
  165. zenml/zen_server/dashboard/assets/page-XrmOHHg7.js +1 -0
  166. zenml/zen_server/dashboard/assets/page-YdWnx9MX.js +1 -0
  167. zenml/zen_server/dashboard/assets/page-oRm7D4TC.js +1 -0
  168. zenml/zen_server/dashboard/assets/{page-uxjMX8Iq.js → page-q41JNDWO.js} +1 -1
  169. zenml/zen_server/dashboard/assets/page-x2GXC8sI.js +1 -0
  170. zenml/zen_server/dashboard/assets/page-z2FXP4GY.js +1 -0
  171. zenml/zen_server/dashboard/assets/{persist-CFPbMcJX.js → persist-BKKcL1Kp.js} +1 -1
  172. zenml/zen_server/dashboard/assets/{persist-BsdEtCkd.js → persist-DxiyfAax.js} +1 -1
  173. zenml/zen_server/dashboard/assets/{pipeline-CSUlkd50.js → pipeline-BJ8liDnl.js} +1 -1
  174. zenml/zen_server/dashboard/assets/{plus-Cl0_rCVF.js → plus-cI8zD2xh.js} +1 -1
  175. zenml/zen_server/dashboard/assets/primary-role-CPGHymjN.js +1 -0
  176. zenml/zen_server/dashboard/assets/{react-error-boundary.esm-7_MuhCay.js → react-error-boundary.esm-DoXxY4pT.js} +1 -1
  177. zenml/zen_server/dashboard/assets/{refresh-BcTM09NW.js → refresh-3EF2R7ja.js} +1 -1
  178. zenml/zen_server/dashboard/assets/{resource-tyes-list-79FqS3LY.js → resource-tyes-list-B5rkZcbc.js} +1 -1
  179. zenml/zen_server/dashboard/assets/resource-type-tooltip-E97WGqfk.js +1 -0
  180. zenml/zen_server/dashboard/assets/service-B9aVzfAF.js +2 -0
  181. zenml/zen_server/dashboard/assets/service-connectors-DL2-k_E2.js +1 -0
  182. zenml/zen_server/dashboard/assets/{sharedSchema-C_HkejsG.js → sharedSchema-DyUO09BR.js} +1 -1
  183. zenml/zen_server/dashboard/assets/slash-circle-D2Lb2FyR.js +1 -0
  184. zenml/zen_server/dashboard/assets/stack-detail-query-Bc4QKlWg.js +1 -0
  185. zenml/zen_server/dashboard/assets/{terminal-XFL_4QN-.js → terminal-BObrvDlO.js} +1 -1
  186. zenml/zen_server/dashboard/assets/{terminal-square-XFL_4QN-.js → terminal-square-BObrvDlO.js} +1 -1
  187. zenml/zen_server/dashboard/assets/{transform-CeZdrxDZ.js → transform-DFpKTKgF.js} +1 -1
  188. zenml/zen_server/dashboard/assets/{trash-DP6Tpp_E.js → trash-HKxXWbSG.js} +1 -1
  189. zenml/zen_server/dashboard/assets/{update-current-user-mutation-Ca-Lmwuj.js → update-current-user-mutation-DSyUyHVj.js} +1 -1
  190. zenml/zen_server/dashboard/assets/update-server-settings-mutation-CdM-Sdds.js +1 -0
  191. zenml/zen_server/dashboard/assets/{zod-XdS2h1ws.js → zod-DgEcN9jD.js} +1 -1
  192. zenml/zen_server/dashboard/index.html +7 -7
  193. zenml/zen_server/deploy/daemon/daemon_zen_server.py +4 -0
  194. zenml/zen_server/deploy/docker/docker_zen_server.py +2 -0
  195. zenml/zen_server/routers/runs_endpoints.py +20 -28
  196. zenml/zen_stores/migrations/versions/0.84.0_release.py +23 -0
  197. zenml/zen_stores/sql_zen_store.py +9 -3
  198. {zenml_nightly-0.83.1.dev20250710.dist-info → zenml_nightly-0.84.0.dev20250712.dist-info}/METADATA +9 -22
  199. {zenml_nightly-0.83.1.dev20250710.dist-info → zenml_nightly-0.84.0.dev20250712.dist-info}/RECORD +202 -195
  200. zenml/zen_server/dashboard/assets/AlertDialogDropdownItem-DsOmO1FH.js +0 -1
  201. zenml/zen_server/dashboard/assets/ButtonGroup-4sPZDv70.js +0 -1
  202. zenml/zen_server/dashboard/assets/CollapsibleCard-CBKenz9f.js +0 -1
  203. zenml/zen_server/dashboard/assets/ComponentIcon-CMiVW-O6.js +0 -1
  204. zenml/zen_server/dashboard/assets/DialogItem-CRCDpYU6.js +0 -1
  205. zenml/zen_server/dashboard/assets/Error-BG6f_WRd.js +0 -1
  206. zenml/zen_server/dashboard/assets/ExecutionStatus-BuhNAE9w.js +0 -1
  207. zenml/zen_server/dashboard/assets/NestedCollapsible-CMuDIJlp.js +0 -1
  208. zenml/zen_server/dashboard/assets/Partials-CfHD6OH5.js +0 -1
  209. zenml/zen_server/dashboard/assets/ProviderIcon-DHejyg7C.js +0 -1
  210. zenml/zen_server/dashboard/assets/ProviderRadio-tGtie8Gc.js +0 -1
  211. zenml/zen_server/dashboard/assets/RunsBody-mYwMcWWj.js +0 -1
  212. zenml/zen_server/dashboard/assets/SecretTooltip-B5u1UsQ9.js +0 -1
  213. zenml/zen_server/dashboard/assets/StackComponentList-Bi8BKqCu.js +0 -1
  214. zenml/zen_server/dashboard/assets/StackList-Cvxapo0p.js +0 -1
  215. zenml/zen_server/dashboard/assets/StackName-CFSZL8ec.js +0 -1
  216. zenml/zen_server/dashboard/assets/Tabs-D4dv48ry.js +0 -1
  217. zenml/zen_server/dashboard/assets/Tick-Qquvr4P3.js +0 -1
  218. zenml/zen_server/dashboard/assets/UsageReason-DhiUV1bu.js +0 -1
  219. zenml/zen_server/dashboard/assets/WizardFooter-FQm8y-jP.js +0 -1
  220. zenml/zen_server/dashboard/assets/configuration-form-DSoMMiPE.js +0 -1
  221. zenml/zen_server/dashboard/assets/constants-DTfsIqHy.js +0 -1
  222. zenml/zen_server/dashboard/assets/flyte-Cj-xy_8I.svg +0 -10
  223. zenml/zen_server/dashboard/assets/form-BgtamtJm.js +0 -1
  224. zenml/zen_server/dashboard/assets/form-schemas-dyDkAxXP.js +0 -1
  225. zenml/zen_server/dashboard/assets/gcp-B1I3Qvcx.js +0 -1
  226. zenml/zen_server/dashboard/assets/index-BfNISy0X.css +0 -1
  227. zenml/zen_server/dashboard/assets/layout-o1x87a3q.js +0 -1
  228. zenml/zen_server/dashboard/assets/metaflow-weOkWNyT.svg +0 -10
  229. zenml/zen_server/dashboard/assets/page-4xUZpMN0.js +0 -31
  230. zenml/zen_server/dashboard/assets/page-B0104V6C.js +0 -1
  231. zenml/zen_server/dashboard/assets/page-BNJsjvof.js +0 -1
  232. zenml/zen_server/dashboard/assets/page-BQgSZ2nH.js +0 -1
  233. zenml/zen_server/dashboard/assets/page-BXl2ZX6J.js +0 -1
  234. zenml/zen_server/dashboard/assets/page-C2A-2Cj_.js +0 -1
  235. zenml/zen_server/dashboard/assets/page-CESEqC2L.js +0 -1
  236. zenml/zen_server/dashboard/assets/page-CF8cTZ7l.js +0 -1
  237. zenml/zen_server/dashboard/assets/page-CKjsimVu.js +0 -1
  238. zenml/zen_server/dashboard/assets/page-COLzBwff.js +0 -1
  239. zenml/zen_server/dashboard/assets/page-COifg5fa.js +0 -1
  240. zenml/zen_server/dashboard/assets/page-CQeJuA8T.js +0 -1
  241. zenml/zen_server/dashboard/assets/page-CcjWEjre.js +0 -1
  242. zenml/zen_server/dashboard/assets/page-CefGLeWy.js +0 -1
  243. zenml/zen_server/dashboard/assets/page-CfxpV3j4.js +0 -1
  244. zenml/zen_server/dashboard/assets/page-ClcUzawe.js +0 -1
  245. zenml/zen_server/dashboard/assets/page-Ct_LB3zo.js +0 -1
  246. zenml/zen_server/dashboard/assets/page-D-ZWUMYY.js +0 -1
  247. zenml/zen_server/dashboard/assets/page-DHrvih9u.js +0 -1
  248. zenml/zen_server/dashboard/assets/page-DMhaHZDw.js +0 -1
  249. zenml/zen_server/dashboard/assets/page-DcQmxKLp.js +0 -1
  250. zenml/zen_server/dashboard/assets/page-Dh4GRWw5.js +0 -1
  251. zenml/zen_server/dashboard/assets/page-Dn7ZNapg.js +0 -1
  252. zenml/zen_server/dashboard/assets/page-Dy4vSQY7.js +0 -1
  253. zenml/zen_server/dashboard/assets/page-QrvWQwZb.js +0 -1
  254. zenml/zen_server/dashboard/assets/page-RF3Fup0q.js +0 -40
  255. zenml/zen_server/dashboard/assets/page-WuvCrN47.js +0 -1
  256. zenml/zen_server/dashboard/assets/page-_WnHBI1F.js +0 -1
  257. zenml/zen_server/dashboard/assets/page-ghjVNgVE.js +0 -1
  258. zenml/zen_server/dashboard/assets/page-iDsDiDXw.js +0 -1
  259. zenml/zen_server/dashboard/assets/resource-type-tooltip-BL9ZTRKi.js +0 -1
  260. zenml/zen_server/dashboard/assets/service-connectors-Q8h7-_rG.js +0 -1
  261. zenml/zen_server/dashboard/assets/service-k-9Vsb30.js +0 -2
  262. zenml/zen_server/dashboard/assets/stack-detail-query-CNmVZ0Bo.js +0 -1
  263. zenml/zen_server/dashboard/assets/type-guards-CNgPYg8l.js +0 -1
  264. zenml/zen_server/dashboard/assets/update-server-settings-mutation-Bwe3gUt4.js +0 -1
  265. {zenml_nightly-0.83.1.dev20250710.dist-info → zenml_nightly-0.84.0.dev20250712.dist-info}/LICENSE +0 -0
  266. {zenml_nightly-0.83.1.dev20250710.dist-info → zenml_nightly-0.84.0.dev20250712.dist-info}/WHEEL +0 -0
  267. {zenml_nightly-0.83.1.dev20250710.dist-info → zenml_nightly-0.84.0.dev20250712.dist-info}/entry_points.txt +0 -0
@@ -893,14 +893,20 @@ class VertexOrchestrator(ContainerizedOrchestrator, GoogleCredentialsMixin):
893
893
 
894
894
  return dynamic_component
895
895
 
896
- def fetch_status(self, run: "PipelineRunResponse") -> ExecutionStatus:
896
+ def fetch_status(
897
+ self, run: "PipelineRunResponse", include_steps: bool = False
898
+ ) -> Tuple[
899
+ Optional[ExecutionStatus], Optional[Dict[str, ExecutionStatus]]
900
+ ]:
897
901
  """Refreshes the status of a specific pipeline run.
898
902
 
899
903
  Args:
900
904
  run: The run that was executed by this orchestrator.
905
+ include_steps: Whether to fetch steps.
901
906
 
902
907
  Returns:
903
- the actual status of the pipeline job.
908
+ A tuple of (pipeline_status, step_statuses_dict).
909
+ Step statuses are not supported for Vertex, so step_statuses_dict will always be None.
904
910
 
905
911
  Raises:
906
912
  AssertionError: If the run was not executed by to this orchestrator.
@@ -943,28 +949,31 @@ class VertexOrchestrator(ContainerizedOrchestrator, GoogleCredentialsMixin):
943
949
  # Map the potential outputs to ZenML ExecutionStatus. Potential values:
944
950
  # https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker/client/describe_pipeline_execution.html#
945
951
  if status == PipelineState.PIPELINE_STATE_UNSPECIFIED:
946
- return run.status
952
+ pipeline_status = run.status
947
953
  elif status in [
948
954
  PipelineState.PIPELINE_STATE_QUEUED,
949
955
  PipelineState.PIPELINE_STATE_PENDING,
950
956
  ]:
951
- return ExecutionStatus.INITIALIZING
957
+ pipeline_status = ExecutionStatus.INITIALIZING
952
958
  elif status in [
953
959
  PipelineState.PIPELINE_STATE_RUNNING,
954
960
  PipelineState.PIPELINE_STATE_PAUSED,
955
961
  ]:
956
- return ExecutionStatus.RUNNING
962
+ pipeline_status = ExecutionStatus.RUNNING
957
963
  elif status == PipelineState.PIPELINE_STATE_SUCCEEDED:
958
- return ExecutionStatus.COMPLETED
964
+ pipeline_status = ExecutionStatus.COMPLETED
959
965
  elif status == PipelineState.PIPELINE_STATE_CANCELLING:
960
- return ExecutionStatus.STOPPING
966
+ pipeline_status = ExecutionStatus.STOPPING
961
967
  elif status == PipelineState.PIPELINE_STATE_CANCELLED:
962
- return ExecutionStatus.STOPPED
968
+ pipeline_status = ExecutionStatus.STOPPED
963
969
  elif status == PipelineState.PIPELINE_STATE_FAILED:
964
- return ExecutionStatus.FAILED
970
+ pipeline_status = ExecutionStatus.FAILED
965
971
  else:
966
972
  raise ValueError("Unknown status for the pipeline job.")
967
973
 
974
+ # Vertex doesn't support step-level status fetching yet
975
+ return pipeline_status, None
976
+
968
977
  def compute_metadata(
969
978
  self, job: aiplatform.PipelineJob
970
979
  ) -> Dict[str, MetadataType]:
@@ -49,7 +49,7 @@ class HuggingfaceIntegration(Integration):
49
49
  A list of requirements.
50
50
  """
51
51
  requirements = [
52
- "datasets>=2.16.0",
52
+ "datasets>=2.16.0,<4.0.0",
53
53
  "huggingface_hub>0.19.0",
54
54
  "accelerate",
55
55
  "bitsandbytes>=0.41.3",
@@ -15,6 +15,8 @@
15
15
 
16
16
  from typing import TYPE_CHECKING, Dict, Optional, Type
17
17
 
18
+ from pydantic import Field
19
+
18
20
  from zenml.config.base_settings import BaseSettings
19
21
  from zenml.integrations.hyperai import HYPERAI_RESOURCE_TYPE
20
22
  from zenml.logger import get_logger
@@ -31,42 +33,38 @@ logger = get_logger(__name__)
31
33
 
32
34
 
33
35
  class HyperAIOrchestratorSettings(BaseSettings):
34
- """HyperAI orchestrator settings.
35
-
36
- Attributes:
37
- mounts_from_to: A dictionary mapping from paths on the HyperAI instance
38
- to paths within the Docker container. This allows users to mount
39
- directories from the HyperAI instance into the Docker container that runs
40
- on it.
41
- """
36
+ """HyperAI orchestrator settings."""
42
37
 
43
- mounts_from_to: Dict[str, str] = {}
38
+ mounts_from_to: Dict[str, str] = Field(
39
+ default_factory=dict,
40
+ description="A dictionary mapping from paths on the HyperAI instance "
41
+ "to paths within the Docker container. This allows users to mount "
42
+ "directories from the HyperAI instance into the Docker container.",
43
+ )
44
44
 
45
45
 
46
46
  class HyperAIOrchestratorConfig(
47
47
  BaseOrchestratorConfig, HyperAIOrchestratorSettings
48
48
  ):
49
- """Configuration for the HyperAI orchestrator.
50
-
51
- Attributes:
52
- container_registry_autologin: If True, the orchestrator will attempt to
53
- automatically log in to the container registry specified in the stack
54
- configuration on the HyperAI instance. This is useful if the container
55
- registry requires authentication and the HyperAI instance has not been
56
- manually logged in to the container registry. Defaults to `False`.
57
- automatic_cleanup_pipeline_files: If True, the orchestrator will
58
- automatically clean up old pipeline files that are on the HyperAI
59
- instance. Pipeline files will be cleaned up if they are 7 days old or
60
- older. Defaults to `True`.
61
- gpu_enabled_in_container: If True, the orchestrator will enable GPU
62
- support in the Docker container that runs on the HyperAI instance.
63
- Defaults to `True`.
64
-
65
- """
66
-
67
- container_registry_autologin: bool = False
68
- automatic_cleanup_pipeline_files: bool = True
69
- gpu_enabled_in_container: bool = True
49
+ """Configuration for the HyperAI orchestrator."""
50
+
51
+ container_registry_autologin: bool = Field(
52
+ False,
53
+ description="If True, the orchestrator will attempt to automatically "
54
+ "log in to the container registry specified in the stack configuration "
55
+ "on the HyperAI instance.",
56
+ )
57
+ automatic_cleanup_pipeline_files: bool = Field(
58
+ True,
59
+ description="If True, the orchestrator will automatically clean up old "
60
+ "pipeline files that are on the HyperAI instance. Pipeline files will "
61
+ "be cleaned up if they are 7 days old or older.",
62
+ )
63
+ gpu_enabled_in_container: bool = Field(
64
+ True,
65
+ description="If True, the orchestrator will enable GPU support in the "
66
+ "Docker container that runs on the HyperAI instance.",
67
+ )
70
68
 
71
69
  @property
72
70
  def is_remote(self) -> bool:
@@ -15,7 +15,7 @@
15
15
 
16
16
  from typing import TYPE_CHECKING, Any, Dict, List, Optional, Type
17
17
 
18
- from pydantic import PositiveInt
18
+ from pydantic import Field, PositiveInt
19
19
 
20
20
  from zenml.image_builders import BaseImageBuilderConfig, BaseImageBuilderFlavor
21
21
  from zenml.integrations.kaniko import KANIKO_IMAGE_BUILDER_FLAVOR
@@ -39,47 +39,63 @@ class KanikoImageBuilderConfig(BaseImageBuilderConfig):
39
39
  configure secrets and environment variables so that the Kaniko build
40
40
  container is able to push to the container registry (and optionally access
41
41
  the artifact store to upload the build context).
42
-
43
- Attributes:
44
- kubernetes_context: The Kubernetes context in which to run the Kaniko
45
- pod.
46
- kubernetes_namespace: The Kubernetes namespace in which to run the
47
- Kaniko pod. This namespace will not be created and must already
48
- exist.
49
- executor_image: The image of the Kaniko executor to use.
50
- pod_running_timeout: The timeout to wait until the pod is running
51
- in seconds. Defaults to `300`.
52
- env: `env` section of the Kubernetes container spec.
53
- env_from: `envFrom` section of the Kubernetes container spec.
54
- volume_mounts: `volumeMounts` section of the Kubernetes container spec.
55
- volumes: `volumes` section of the Kubernetes pod spec.
56
- service_account_name: Name of the Kubernetes service account to use.
57
- store_context_in_artifact_store: If `True`, the build context will be
58
- stored in the artifact store. If `False`, the build context will be
59
- streamed over stdin of the `kubectl` process that runs the build.
60
- In case the artifact store is used, the container running the build
61
- needs read access to the artifact store.
62
- executor_args: Additional arguments to forward to the Kaniko executor.
63
- See https://github.com/GoogleContainerTools/kaniko#additional-flags
64
- for a full list of available arguments.
65
- Example: `["--compressed-caching=false"]`
66
-
67
42
  """
68
43
 
69
- kubernetes_context: str
70
- kubernetes_namespace: str = "zenml-kaniko"
71
- executor_image: str = DEFAULT_KANIKO_EXECUTOR_IMAGE
72
- pod_running_timeout: PositiveInt = DEFAULT_KANIKO_POD_RUNNING_TIMEOUT
73
-
74
- env: List[Dict[str, Any]] = []
75
- env_from: List[Dict[str, Any]] = []
76
- volume_mounts: List[Dict[str, Any]] = []
77
- volumes: List[Dict[str, Any]] = []
78
- service_account_name: Optional[str] = None
79
-
80
- store_context_in_artifact_store: bool = False
81
-
82
- executor_args: List[str] = []
44
+ kubernetes_context: str = Field(
45
+ ...,
46
+ description="The Kubernetes context in which to run the Kaniko pod.",
47
+ )
48
+ kubernetes_namespace: str = Field(
49
+ "zenml-kaniko",
50
+ description="The Kubernetes namespace in which to run the Kaniko pod. "
51
+ "This namespace will not be created and must already exist.",
52
+ )
53
+ executor_image: str = Field(
54
+ DEFAULT_KANIKO_EXECUTOR_IMAGE,
55
+ description="The image of the Kaniko executor to use for building container images.",
56
+ )
57
+ pod_running_timeout: PositiveInt = Field(
58
+ DEFAULT_KANIKO_POD_RUNNING_TIMEOUT,
59
+ description="The timeout to wait until the pod is running in seconds.",
60
+ )
61
+
62
+ env: List[Dict[str, Any]] = Field(
63
+ default_factory=list,
64
+ description="Environment variables section of the Kubernetes container spec. "
65
+ "Used to configure secrets and environment variables for registry access.",
66
+ )
67
+ env_from: List[Dict[str, Any]] = Field(
68
+ default_factory=list,
69
+ description="EnvFrom section of the Kubernetes container spec. "
70
+ "Used to load environment variables from ConfigMaps or Secrets.",
71
+ )
72
+ volume_mounts: List[Dict[str, Any]] = Field(
73
+ default_factory=list,
74
+ description="VolumeMounts section of the Kubernetes container spec. "
75
+ "Used to mount volumes containing credentials or other data.",
76
+ )
77
+ volumes: List[Dict[str, Any]] = Field(
78
+ default_factory=list,
79
+ description="Volumes section of the Kubernetes pod spec. "
80
+ "Used to define volumes for credentials or other data.",
81
+ )
82
+ service_account_name: Optional[str] = Field(
83
+ None,
84
+ description="Name of the Kubernetes service account to use for the Kaniko pod. "
85
+ "This service account should have the necessary permissions for building and pushing images.",
86
+ )
87
+
88
+ store_context_in_artifact_store: bool = Field(
89
+ False,
90
+ description="If `True`, the build context will be stored in the artifact store. "
91
+ "If `False`, the build context will be streamed over stdin of the kubectl process.",
92
+ )
93
+
94
+ executor_args: List[str] = Field(
95
+ default_factory=list,
96
+ description="Additional arguments to forward to the Kaniko executor. "
97
+ "See Kaniko documentation for available flags, e.g. ['--compressed-caching=false'].",
98
+ )
83
99
 
84
100
 
85
101
  class KanikoImageBuilderFlavor(BaseImageBuilderFlavor):
@@ -15,7 +15,7 @@
15
15
 
16
16
  from typing import TYPE_CHECKING, Any, Dict, List, Optional, Type, cast
17
17
 
18
- from pydantic import model_validator
18
+ from pydantic import Field, model_validator
19
19
 
20
20
  from zenml.config.base_settings import BaseSettings
21
21
  from zenml.constants import KUBERNETES_CLUSTER_RESOURCE_TYPE
@@ -36,34 +36,43 @@ DEFAULT_KFP_UI_PORT = 8080
36
36
 
37
37
 
38
38
  class KubeflowOrchestratorSettings(BaseSettings):
39
- """Settings for the Kubeflow orchestrator.
40
-
41
- Attributes:
42
- synchronous: If `True`, the client running a pipeline using this
43
- orchestrator waits until all steps finish running. If `False`,
44
- the client returns immediately and the pipeline is executed
45
- asynchronously. Defaults to `True`. This setting only
46
- has an effect when specified on the pipeline and will be ignored if
47
- specified on steps.
48
- timeout: How many seconds to wait for synchronous runs.
49
- client_args: Arguments to pass when initializing the KFP client.
50
- client_username: Username to generate a session cookie for the kubeflow client. Both `client_username`
51
- and `client_password` need to be set together.
52
- client_password: Password to generate a session cookie for the kubeflow client. Both `client_username`
53
- and `client_password` need to be set together.
54
- user_namespace: The user namespace to use when creating experiments
55
- and runs.
56
- pod_settings: Pod settings to apply.
57
- """
58
-
59
- synchronous: bool = True
60
- timeout: int = 1200
61
-
62
- client_args: Dict[str, Any] = {}
63
- client_username: Optional[str] = SecretField(default=None)
64
- client_password: Optional[str] = SecretField(default=None)
65
- user_namespace: Optional[str] = None
66
- pod_settings: Optional[KubernetesPodSettings] = None
39
+ """Settings for the Kubeflow orchestrator."""
40
+
41
+ synchronous: bool = Field(
42
+ True,
43
+ description="If `True`, the client running a pipeline using this "
44
+ "orchestrator waits until all steps finish running. If `False`, "
45
+ "the client returns immediately and the pipeline is executed "
46
+ "asynchronously.",
47
+ )
48
+ timeout: int = Field(
49
+ 1200, description="How many seconds to wait for synchronous runs."
50
+ )
51
+
52
+ client_args: Dict[str, Any] = Field(
53
+ default_factory=dict,
54
+ description="Arguments to pass when initializing the KFP client. "
55
+ "Example: {'host': 'https://kubeflow.example.com', 'client_id': 'kubeflow-oidc-authservice', 'existing_token': 'your-auth-token'}",
56
+ )
57
+ client_username: Optional[str] = SecretField(
58
+ default=None,
59
+ description="Username to generate a session cookie for the kubeflow client. "
60
+ "Both `client_username` and `client_password` need to be set together.",
61
+ )
62
+ client_password: Optional[str] = SecretField(
63
+ default=None,
64
+ description="Password to generate a session cookie for the kubeflow client. "
65
+ "Both `client_username` and `client_password` need to be set together.",
66
+ )
67
+ user_namespace: Optional[str] = Field(
68
+ None,
69
+ description="The user namespace to use when creating experiments and runs. "
70
+ "Example: 'my-experiments' or 'team-alpha'",
71
+ )
72
+ pod_settings: Optional[KubernetesPodSettings] = Field(
73
+ None,
74
+ description="Pod settings to apply to the orchestrator and step pods.",
75
+ )
67
76
 
68
77
  @model_validator(mode="before")
69
78
  @classmethod
@@ -131,25 +140,27 @@ class KubeflowOrchestratorSettings(BaseSettings):
131
140
  class KubeflowOrchestratorConfig(
132
141
  BaseOrchestratorConfig, KubeflowOrchestratorSettings
133
142
  ):
134
- """Configuration for the Kubeflow orchestrator.
135
-
136
- Attributes:
137
- kubeflow_hostname: The hostname to use to talk to the Kubeflow Pipelines
138
- API. If not set, the hostname will be derived from the Kubernetes
139
- API proxy. Mandatory when connecting to a multi-tenant Kubeflow
140
- Pipelines deployment.
141
- kubeflow_namespace: The Kubernetes namespace in which Kubeflow
142
- Pipelines is deployed. Defaults to `kubeflow`.
143
- kubernetes_context: Name of a kubernetes context to run
144
- pipelines in. Not applicable when connecting to a multi-tenant
145
- Kubeflow Pipelines deployment (i.e. when `kubeflow_hostname` is
146
- set) or if the stack component is linked to a Kubernetes service
147
- connector.
148
- """
149
-
150
- kubeflow_hostname: Optional[str] = None
151
- kubeflow_namespace: str = "kubeflow"
152
- kubernetes_context: Optional[str] = None # TODO: Potential setting
143
+ """Configuration for the Kubeflow orchestrator."""
144
+
145
+ kubeflow_hostname: Optional[str] = Field(
146
+ None,
147
+ description="The hostname to use to talk to the Kubeflow Pipelines API. "
148
+ "If not set, the hostname will be derived from the Kubernetes API proxy. "
149
+ "Mandatory when connecting to a multi-tenant Kubeflow Pipelines deployment. "
150
+ "Example: 'https://kubeflow.example.com' or 'kubeflow.company.com'",
151
+ )
152
+ kubeflow_namespace: str = Field(
153
+ "kubeflow",
154
+ description="The Kubernetes namespace in which Kubeflow Pipelines is deployed.",
155
+ )
156
+ kubernetes_context: Optional[str] = Field(
157
+ None,
158
+ description="Name of a kubernetes context to run pipelines in. "
159
+ "Not applicable when connecting to a multi-tenant Kubeflow Pipelines "
160
+ "deployment (i.e. when `kubeflow_hostname` is set) or if the stack "
161
+ "component is linked to a Kubernetes service connector. "
162
+ "Example: 'my-cluster' or 'production-cluster'",
163
+ )
153
164
 
154
165
  @model_validator(mode="before")
155
166
  @classmethod