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.
- zenml/VERSION +1 -1
- zenml/artifact_stores/base_artifact_store.py +51 -23
- zenml/artifacts/utils.py +3 -1
- zenml/cli/pipeline.py +13 -2
- zenml/constants.py +4 -0
- zenml/container_registries/base_container_registry.py +17 -5
- zenml/enums.py +9 -0
- zenml/integrations/aws/flavors/sagemaker_orchestrator_flavor.py +150 -117
- zenml/integrations/aws/flavors/sagemaker_step_operator_flavor.py +43 -42
- zenml/integrations/aws/orchestrators/sagemaker_orchestrator.py +16 -7
- zenml/integrations/azure/orchestrators/azureml_orchestrator.py +18 -12
- zenml/integrations/bentoml/flavors/bentoml_model_deployer_flavor.py +7 -1
- zenml/integrations/databricks/flavors/databricks_orchestrator_flavor.py +58 -23
- zenml/integrations/feast/flavors/feast_feature_store_flavor.py +18 -5
- zenml/integrations/gcp/flavors/vertex_experiment_tracker_flavor.py +10 -42
- zenml/integrations/gcp/flavors/vertex_orchestrator_flavor.py +99 -92
- zenml/integrations/gcp/google_credentials_mixin.py +13 -8
- zenml/integrations/gcp/orchestrators/vertex_orchestrator.py +18 -9
- zenml/integrations/huggingface/__init__.py +1 -1
- zenml/integrations/hyperai/flavors/hyperai_orchestrator_flavor.py +28 -30
- zenml/integrations/kaniko/flavors/kaniko_image_builder_flavor.py +56 -40
- zenml/integrations/kubeflow/flavors/kubeflow_orchestrator_flavor.py +59 -48
- zenml/integrations/kubernetes/flavors/kubernetes_orchestrator_flavor.py +159 -121
- zenml/integrations/kubernetes/flavors/kubernetes_step_operator_flavor.py +48 -33
- zenml/integrations/kubernetes/orchestrators/kubernetes_orchestrator.py +182 -1
- zenml/integrations/kubernetes/orchestrators/kubernetes_orchestrator_entrypoint.py +7 -3
- zenml/integrations/lightning/flavors/lightning_orchestrator_flavor.py +41 -25
- zenml/integrations/mlflow/flavors/mlflow_experiment_tracker_flavor.py +51 -44
- zenml/integrations/mlflow/flavors/mlflow_model_deployer_flavor.py +9 -4
- zenml/integrations/neptune/flavors/neptune_experiment_tracker_flavor.py +13 -12
- zenml/integrations/s3/flavors/s3_artifact_store_flavor.py +32 -7
- zenml/integrations/vllm/flavors/vllm_model_deployer_flavor.py +7 -1
- zenml/integrations/wandb/flavors/wandb_experiment_tracker_flavor.py +34 -25
- zenml/integrations/whylogs/flavors/whylogs_data_validator_flavor.py +14 -11
- zenml/logging/step_logging.py +8 -7
- zenml/models/v2/core/logs.py +2 -1
- zenml/models/v2/core/pipeline_run.py +0 -59
- zenml/orchestrators/base_orchestrator.py +7 -1
- zenml/pipelines/build_utils.py +2 -1
- zenml/stack/authentication_mixin.py +6 -5
- zenml/stack/flavor.py +5 -1
- zenml/utils/code_utils.py +2 -1
- zenml/utils/docker_utils.py +22 -0
- zenml/utils/io_utils.py +18 -0
- zenml/utils/pipeline_docker_image_builder.py +4 -1
- zenml/utils/run_utils.py +101 -8
- zenml/zen_server/dashboard/assets/{404-B5eko6XL.js → 404-B5cfnwZ1.js} +1 -1
- zenml/zen_server/dashboard/assets/{@radix-Cdvw4jJ8.js → @radix-C_LirfyT.js} +1 -1
- zenml/zen_server/dashboard/assets/{@react-router-DeDfXbUF.js → @react-router-BSsrkPOd.js} +1 -1
- zenml/zen_server/dashboard/assets/{@reactflow-B_iCtR7X.js → @reactflow-D9hglKLF.js} +2 -2
- zenml/zen_server/dashboard/assets/{@tanstack-5gTMR7G2.js → @tanstack-C0SeHZng.js} +1 -1
- zenml/zen_server/dashboard/assets/AlertDialogDropdownItem-druRNuO2.js +1 -0
- zenml/zen_server/dashboard/assets/ButtonGroup-SF2DlzHV.js +1 -0
- zenml/zen_server/dashboard/assets/{CodeSnippet-Ctplhzdc.js → CodeSnippet-D8iBqOVv.js} +1 -1
- zenml/zen_server/dashboard/assets/CollapsibleCard-D0-pQi1n.js +1 -0
- zenml/zen_server/dashboard/assets/{ComponentBadge-Cnecw3qz.js → ComponentBadge-mw2Ja_ON.js} +1 -1
- zenml/zen_server/dashboard/assets/ComponentIcon-BXgpt-jw.js +1 -0
- zenml/zen_server/dashboard/assets/{DeleteAlertDialog-DEI0YDzP.js → DeleteAlertDialog-BbyFVnVI.js} +1 -1
- zenml/zen_server/dashboard/assets/DialogItem-DeME0oSt.js +1 -0
- zenml/zen_server/dashboard/assets/{DisplayDate-8RESqe5H.js → DisplayDate-v3KW7oez.js} +1 -1
- zenml/zen_server/dashboard/assets/{EmptyState-CjrgDtVk.js → EmptyState-DG0m-CGv.js} +1 -1
- zenml/zen_server/dashboard/assets/Error-DcVLcrLs.js +1 -0
- zenml/zen_server/dashboard/assets/ExecutionStatus-C4tlFnlh.js +1 -0
- zenml/zen_server/dashboard/assets/{Helpbox-DtUG2Bf_.js → Helpbox-C-RGHz3S.js} +1 -1
- zenml/zen_server/dashboard/assets/{Infobox-CSBRrM6r.js → Infobox-DFCWPbMb.js} +1 -1
- zenml/zen_server/dashboard/assets/{LeftSideMenu-DPsCCK3z.js → LeftSideMenu-Czev0KCA.js} +1 -1
- zenml/zen_server/dashboard/assets/{Lock-CrIAdQo6.js → Lock-CRP5J_su.js} +1 -1
- zenml/zen_server/dashboard/assets/NestedCollapsible-CN9scBUn.js +1 -0
- zenml/zen_server/dashboard/assets/{NumberBox-DtCv7jh3.js → NumberBox-CoQjQYDJ.js} +1 -1
- zenml/zen_server/dashboard/assets/{Pagination-CWnEpSpN.js → Pagination-CcDD5yHh.js} +1 -1
- zenml/zen_server/dashboard/assets/Partials-DlMzfKgs.js +1 -0
- zenml/zen_server/dashboard/assets/{PasswordChecker-B88WjuCe.js → PasswordChecker-BZwoeQIm.js} +1 -1
- zenml/zen_server/dashboard/assets/{ProCta-CNyp04C8.js → ProCta-CU2ycJDo.js} +1 -1
- zenml/zen_server/dashboard/assets/ProviderIcon-BMAn9Jld.js +1 -0
- zenml/zen_server/dashboard/assets/ProviderRadio-D_q9tE3G.js +1 -0
- zenml/zen_server/dashboard/assets/RunsBody-BToytB8e.js +1 -0
- zenml/zen_server/dashboard/assets/{SearchField-BtUi6cYl.js → SearchField-D_0-uAPj.js} +1 -1
- zenml/zen_server/dashboard/assets/SecretTooltip-BcWMKb9f.js +1 -0
- zenml/zen_server/dashboard/assets/{SetPassword-BmbgL_ed.js → SetPassword-CaKVSqAL.js} +1 -1
- zenml/zen_server/dashboard/assets/{SheetHeader-DkH7aG9K.js → SheetHeader-7vwlsY_i.js} +1 -1
- zenml/zen_server/dashboard/assets/StackComponentList-s7eSfm8o.js +1 -0
- zenml/zen_server/dashboard/assets/StackList-Dt0FrIkM.js +1 -0
- zenml/zen_server/dashboard/assets/Tabs-B27AHUfo.js +1 -0
- zenml/zen_server/dashboard/assets/Tick-DDeDgTuT.js +1 -0
- zenml/zen_server/dashboard/assets/{UpdatePasswordSchemas-D_DCETSO.js → UpdatePasswordSchemas-Da5RndbV.js} +1 -1
- zenml/zen_server/dashboard/assets/{Wizard-BHvY75u_.js → Wizard-8aJzxUjb.js} +1 -1
- zenml/zen_server/dashboard/assets/WizardFooter-Bt7_UE14.js +1 -0
- zenml/zen_server/dashboard/assets/{all-pipeline-runs-query-DpKw9WL9.js → all-pipeline-runs-query-gorNNEaT.js} +1 -1
- zenml/zen_server/dashboard/assets/{arrow-left-MRXv5pAH.js → arrow-left-hcj2H8HY.js} +1 -1
- zenml/zen_server/dashboard/assets/bar-chart-square-check-9siI9icm.js +1 -0
- zenml/zen_server/dashboard/assets/{bulk-delete-CzYA--cC.js → bulk-delete-B5RTlnD_.js} +1 -1
- zenml/zen_server/dashboard/assets/{check-B9QMTa3f.js → check-D1bHMJkL.js} +1 -1
- zenml/zen_server/dashboard/assets/{check-circle-C4tYvbtw.js → check-circle-mnEgPhPF.js} +1 -1
- zenml/zen_server/dashboard/assets/{chevron-down-jbbQh82s.js → chevron-down-Z3nUe-0U.js} +1 -1
- zenml/zen_server/dashboard/assets/{chevron-right-double-Dgp_gEsp.js → chevron-right-double-CbRQKN4Q.js} +1 -1
- zenml/zen_server/dashboard/assets/{clock-B_mTG8PH.js → clock-BMjHXT3f.js} +1 -1
- zenml/zen_server/dashboard/assets/{code-browser-CiD8qkBx.js → code-browser-DftoiCIg.js} +1 -1
- zenml/zen_server/dashboard/assets/configuration-form-Yz8m0QIG.js +1 -0
- zenml/zen_server/dashboard/assets/constants-DeV48DuZ.js +1 -0
- zenml/zen_server/dashboard/assets/{create-stack-BpZrmKDu.js → create-stack-BruqH_6X.js} +1 -1
- zenml/zen_server/dashboard/assets/credit-card-CH1BHrXY.js +1 -0
- zenml/zen_server/dashboard/assets/dataflow-2-qHjWt7zp.js +1 -0
- zenml/zen_server/dashboard/assets/{delete-run-BkyDsKQc.js → delete-run-ibBtciMR.js} +1 -1
- zenml/zen_server/dashboard/assets/{expand-full-BPiXpch2.js → expand-full-CD4fFvM-.js} +1 -1
- zenml/zen_server/dashboard/assets/{eye-CbVlAYty.js → eye-CLNgIh_K.js} +1 -1
- zenml/zen_server/dashboard/assets/{file-text-Cd8wVfq5.js → file-text-CltVhgwZ.js} +1 -1
- zenml/zen_server/dashboard/assets/form-6aSt3tIl.js +1 -0
- zenml/zen_server/dashboard/assets/form-schemas-B9XgTS1V.js +1 -0
- zenml/zen_server/dashboard/assets/gradient_bg-BH8t8fi6.webp +0 -0
- zenml/zen_server/dashboard/assets/{help-Co6aedki.js → help-B0CvBhCm.js} +1 -1
- zenml/zen_server/dashboard/assets/icon-hDriJUXY.js +1 -0
- zenml/zen_server/dashboard/assets/{index-eoDB_1XX.js → index-B7CRNU8l.js} +1 -1
- zenml/zen_server/dashboard/assets/index-BQWlHo1Y.js +1 -0
- zenml/zen_server/dashboard/assets/{index-DWpiv-Ft.js → index-BRhKF2z-.js} +1 -1
- zenml/zen_server/dashboard/assets/{index-BgEfQ3_G.js → index-BacoJBEQ.js} +11 -11
- zenml/zen_server/dashboard/assets/{index-BBt0LDtR.js → index-dCcVgFNl.js} +1 -1
- zenml/zen_server/dashboard/assets/index-eggipFZS.css +1 -0
- zenml/zen_server/dashboard/assets/index-mA8kL088.js +14 -0
- zenml/zen_server/dashboard/assets/{index.es-C1gfATPn.js → index.es-DcVFDpJU.js} +1 -1
- zenml/zen_server/dashboard/assets/{index.esm-DhJo3mA6.js → index.esm-COnaHLSh.js} +1 -1
- zenml/zen_server/dashboard/assets/{info-QkbQz4QU.js → info-CyMih3vQ.js} +1 -1
- zenml/zen_server/dashboard/assets/{key-icon-C07HKw8z.js → key-icon-HOx2gazv.js} +1 -1
- zenml/zen_server/dashboard/assets/{layout-DBbfEFBe.js → layout-C5dgIReC.js} +1 -1
- zenml/zen_server/dashboard/assets/layout-CFLL6-CM.js +1 -0
- zenml/zen_server/dashboard/assets/{login-mutation-C1hvP_cX.js → login-mutation-CidpsqyH.js} +1 -1
- zenml/zen_server/dashboard/assets/{logs-CQKlJjo0.js → logs-DoLoTEfj.js} +1 -1
- zenml/zen_server/dashboard/assets/mail-C160gvB0.js +1 -0
- zenml/zen_server/dashboard/assets/message-chat-square-DLz6XmPS.js +1 -0
- zenml/zen_server/dashboard/assets/{package-miExReQl.js → package-BhYXGPxF.js} +1 -1
- zenml/zen_server/dashboard/assets/page-6huxSHEu.js +1 -0
- zenml/zen_server/dashboard/assets/page-7CJ4Wq3O.js +1 -0
- zenml/zen_server/dashboard/assets/page-8U20Tu_8.js +1 -0
- zenml/zen_server/dashboard/assets/{page-4zc4xPv2.js → page-BByayrO-.js} +2 -2
- zenml/zen_server/dashboard/assets/page-BCRXJXC9.js +1 -0
- zenml/zen_server/dashboard/assets/page-BK59rZvf.js +1 -0
- zenml/zen_server/dashboard/assets/page-BMpXak4U.js +1 -0
- zenml/zen_server/dashboard/assets/page-BTDi81N3.js +1 -0
- zenml/zen_server/dashboard/assets/{page-D-tJ_Y0a.js → page-BX67x4iL.js} +1 -1
- zenml/zen_server/dashboard/assets/page-Bjmcdg64.js +1 -0
- zenml/zen_server/dashboard/assets/page-BsAn8p4m.js +1 -0
- zenml/zen_server/dashboard/assets/{page-C2i-C7jv.js → page-BwjPRuaY.js} +1 -1
- zenml/zen_server/dashboard/assets/page-CDtSVkNc.js +1 -0
- zenml/zen_server/dashboard/assets/page-CEDU0L2T.js +1 -0
- zenml/zen_server/dashboard/assets/page-COJK90rG.js +1 -0
- zenml/zen_server/dashboard/assets/page-CY0LPcAJ.js +1 -0
- zenml/zen_server/dashboard/assets/page-C_XMn4GU.js +1 -0
- zenml/zen_server/dashboard/assets/page-Cb3KGsPK.js +22 -0
- zenml/zen_server/dashboard/assets/page-Cc8owYXQ.js +1 -0
- zenml/zen_server/dashboard/assets/{page-C3JfJxuR.js → page-CeGBDh1Q.js} +1 -1
- zenml/zen_server/dashboard/assets/page-CiGOVsj3.js +1 -0
- zenml/zen_server/dashboard/assets/page-CmLSFMkW.js +1 -0
- zenml/zen_server/dashboard/assets/page-CnfCptXq.js +1 -0
- zenml/zen_server/dashboard/assets/page-CvllZMBF.js +1 -0
- zenml/zen_server/dashboard/assets/page-CxzglV3-.js +1 -0
- zenml/zen_server/dashboard/assets/{page-rVhXI5ZO.js → page-D6cvOG8w.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-BxeZrG_t.js → page-DDWW21kl.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-DiHZK-1w.js → page-DF4FVxxW.js} +2 -2
- zenml/zen_server/dashboard/assets/page-DSZfclXt.js +1 -0
- zenml/zen_server/dashboard/assets/page-DVLez4R1.js +1 -0
- zenml/zen_server/dashboard/assets/page-DcXrWWWh.js +1 -0
- zenml/zen_server/dashboard/assets/page-Dg7-H_9i.js +1 -0
- zenml/zen_server/dashboard/assets/{page-BPQ66vR-.js → page-DgldL5UB.js} +2 -2
- zenml/zen_server/dashboard/assets/page-Dw7XuiSo.js +18 -0
- zenml/zen_server/dashboard/assets/{page-DOCOmmKn.js → page-FQxi1Otg.js} +1 -1
- zenml/zen_server/dashboard/assets/page-XrmOHHg7.js +1 -0
- zenml/zen_server/dashboard/assets/page-YdWnx9MX.js +1 -0
- zenml/zen_server/dashboard/assets/page-oRm7D4TC.js +1 -0
- zenml/zen_server/dashboard/assets/{page-uxjMX8Iq.js → page-q41JNDWO.js} +1 -1
- zenml/zen_server/dashboard/assets/page-x2GXC8sI.js +1 -0
- zenml/zen_server/dashboard/assets/page-z2FXP4GY.js +1 -0
- zenml/zen_server/dashboard/assets/{persist-CFPbMcJX.js → persist-BKKcL1Kp.js} +1 -1
- zenml/zen_server/dashboard/assets/{persist-BsdEtCkd.js → persist-DxiyfAax.js} +1 -1
- zenml/zen_server/dashboard/assets/{pipeline-CSUlkd50.js → pipeline-BJ8liDnl.js} +1 -1
- zenml/zen_server/dashboard/assets/{plus-Cl0_rCVF.js → plus-cI8zD2xh.js} +1 -1
- zenml/zen_server/dashboard/assets/primary-role-CPGHymjN.js +1 -0
- zenml/zen_server/dashboard/assets/{react-error-boundary.esm-7_MuhCay.js → react-error-boundary.esm-DoXxY4pT.js} +1 -1
- zenml/zen_server/dashboard/assets/{refresh-BcTM09NW.js → refresh-3EF2R7ja.js} +1 -1
- zenml/zen_server/dashboard/assets/{resource-tyes-list-79FqS3LY.js → resource-tyes-list-B5rkZcbc.js} +1 -1
- zenml/zen_server/dashboard/assets/resource-type-tooltip-E97WGqfk.js +1 -0
- zenml/zen_server/dashboard/assets/service-B9aVzfAF.js +2 -0
- zenml/zen_server/dashboard/assets/service-connectors-DL2-k_E2.js +1 -0
- zenml/zen_server/dashboard/assets/{sharedSchema-C_HkejsG.js → sharedSchema-DyUO09BR.js} +1 -1
- zenml/zen_server/dashboard/assets/slash-circle-D2Lb2FyR.js +1 -0
- zenml/zen_server/dashboard/assets/stack-detail-query-Bc4QKlWg.js +1 -0
- zenml/zen_server/dashboard/assets/{terminal-XFL_4QN-.js → terminal-BObrvDlO.js} +1 -1
- zenml/zen_server/dashboard/assets/{terminal-square-XFL_4QN-.js → terminal-square-BObrvDlO.js} +1 -1
- zenml/zen_server/dashboard/assets/{transform-CeZdrxDZ.js → transform-DFpKTKgF.js} +1 -1
- zenml/zen_server/dashboard/assets/{trash-DP6Tpp_E.js → trash-HKxXWbSG.js} +1 -1
- zenml/zen_server/dashboard/assets/{update-current-user-mutation-Ca-Lmwuj.js → update-current-user-mutation-DSyUyHVj.js} +1 -1
- zenml/zen_server/dashboard/assets/update-server-settings-mutation-CdM-Sdds.js +1 -0
- zenml/zen_server/dashboard/assets/{zod-XdS2h1ws.js → zod-DgEcN9jD.js} +1 -1
- zenml/zen_server/dashboard/index.html +7 -7
- zenml/zen_server/deploy/daemon/daemon_zen_server.py +4 -0
- zenml/zen_server/deploy/docker/docker_zen_server.py +2 -0
- zenml/zen_server/routers/runs_endpoints.py +20 -28
- zenml/zen_stores/migrations/versions/0.84.0_release.py +23 -0
- zenml/zen_stores/sql_zen_store.py +9 -3
- {zenml_nightly-0.83.1.dev20250710.dist-info → zenml_nightly-0.84.0.dev20250712.dist-info}/METADATA +9 -22
- {zenml_nightly-0.83.1.dev20250710.dist-info → zenml_nightly-0.84.0.dev20250712.dist-info}/RECORD +202 -195
- zenml/zen_server/dashboard/assets/AlertDialogDropdownItem-DsOmO1FH.js +0 -1
- zenml/zen_server/dashboard/assets/ButtonGroup-4sPZDv70.js +0 -1
- zenml/zen_server/dashboard/assets/CollapsibleCard-CBKenz9f.js +0 -1
- zenml/zen_server/dashboard/assets/ComponentIcon-CMiVW-O6.js +0 -1
- zenml/zen_server/dashboard/assets/DialogItem-CRCDpYU6.js +0 -1
- zenml/zen_server/dashboard/assets/Error-BG6f_WRd.js +0 -1
- zenml/zen_server/dashboard/assets/ExecutionStatus-BuhNAE9w.js +0 -1
- zenml/zen_server/dashboard/assets/NestedCollapsible-CMuDIJlp.js +0 -1
- zenml/zen_server/dashboard/assets/Partials-CfHD6OH5.js +0 -1
- zenml/zen_server/dashboard/assets/ProviderIcon-DHejyg7C.js +0 -1
- zenml/zen_server/dashboard/assets/ProviderRadio-tGtie8Gc.js +0 -1
- zenml/zen_server/dashboard/assets/RunsBody-mYwMcWWj.js +0 -1
- zenml/zen_server/dashboard/assets/SecretTooltip-B5u1UsQ9.js +0 -1
- zenml/zen_server/dashboard/assets/StackComponentList-Bi8BKqCu.js +0 -1
- zenml/zen_server/dashboard/assets/StackList-Cvxapo0p.js +0 -1
- zenml/zen_server/dashboard/assets/StackName-CFSZL8ec.js +0 -1
- zenml/zen_server/dashboard/assets/Tabs-D4dv48ry.js +0 -1
- zenml/zen_server/dashboard/assets/Tick-Qquvr4P3.js +0 -1
- zenml/zen_server/dashboard/assets/UsageReason-DhiUV1bu.js +0 -1
- zenml/zen_server/dashboard/assets/WizardFooter-FQm8y-jP.js +0 -1
- zenml/zen_server/dashboard/assets/configuration-form-DSoMMiPE.js +0 -1
- zenml/zen_server/dashboard/assets/constants-DTfsIqHy.js +0 -1
- zenml/zen_server/dashboard/assets/flyte-Cj-xy_8I.svg +0 -10
- zenml/zen_server/dashboard/assets/form-BgtamtJm.js +0 -1
- zenml/zen_server/dashboard/assets/form-schemas-dyDkAxXP.js +0 -1
- zenml/zen_server/dashboard/assets/gcp-B1I3Qvcx.js +0 -1
- zenml/zen_server/dashboard/assets/index-BfNISy0X.css +0 -1
- zenml/zen_server/dashboard/assets/layout-o1x87a3q.js +0 -1
- zenml/zen_server/dashboard/assets/metaflow-weOkWNyT.svg +0 -10
- zenml/zen_server/dashboard/assets/page-4xUZpMN0.js +0 -31
- zenml/zen_server/dashboard/assets/page-B0104V6C.js +0 -1
- zenml/zen_server/dashboard/assets/page-BNJsjvof.js +0 -1
- zenml/zen_server/dashboard/assets/page-BQgSZ2nH.js +0 -1
- zenml/zen_server/dashboard/assets/page-BXl2ZX6J.js +0 -1
- zenml/zen_server/dashboard/assets/page-C2A-2Cj_.js +0 -1
- zenml/zen_server/dashboard/assets/page-CESEqC2L.js +0 -1
- zenml/zen_server/dashboard/assets/page-CF8cTZ7l.js +0 -1
- zenml/zen_server/dashboard/assets/page-CKjsimVu.js +0 -1
- zenml/zen_server/dashboard/assets/page-COLzBwff.js +0 -1
- zenml/zen_server/dashboard/assets/page-COifg5fa.js +0 -1
- zenml/zen_server/dashboard/assets/page-CQeJuA8T.js +0 -1
- zenml/zen_server/dashboard/assets/page-CcjWEjre.js +0 -1
- zenml/zen_server/dashboard/assets/page-CefGLeWy.js +0 -1
- zenml/zen_server/dashboard/assets/page-CfxpV3j4.js +0 -1
- zenml/zen_server/dashboard/assets/page-ClcUzawe.js +0 -1
- zenml/zen_server/dashboard/assets/page-Ct_LB3zo.js +0 -1
- zenml/zen_server/dashboard/assets/page-D-ZWUMYY.js +0 -1
- zenml/zen_server/dashboard/assets/page-DHrvih9u.js +0 -1
- zenml/zen_server/dashboard/assets/page-DMhaHZDw.js +0 -1
- zenml/zen_server/dashboard/assets/page-DcQmxKLp.js +0 -1
- zenml/zen_server/dashboard/assets/page-Dh4GRWw5.js +0 -1
- zenml/zen_server/dashboard/assets/page-Dn7ZNapg.js +0 -1
- zenml/zen_server/dashboard/assets/page-Dy4vSQY7.js +0 -1
- zenml/zen_server/dashboard/assets/page-QrvWQwZb.js +0 -1
- zenml/zen_server/dashboard/assets/page-RF3Fup0q.js +0 -40
- zenml/zen_server/dashboard/assets/page-WuvCrN47.js +0 -1
- zenml/zen_server/dashboard/assets/page-_WnHBI1F.js +0 -1
- zenml/zen_server/dashboard/assets/page-ghjVNgVE.js +0 -1
- zenml/zen_server/dashboard/assets/page-iDsDiDXw.js +0 -1
- zenml/zen_server/dashboard/assets/resource-type-tooltip-BL9ZTRKi.js +0 -1
- zenml/zen_server/dashboard/assets/service-connectors-Q8h7-_rG.js +0 -1
- zenml/zen_server/dashboard/assets/service-k-9Vsb30.js +0 -2
- zenml/zen_server/dashboard/assets/stack-detail-query-CNmVZ0Bo.js +0 -1
- zenml/zen_server/dashboard/assets/type-guards-CNgPYg8l.js +0 -1
- zenml/zen_server/dashboard/assets/update-server-settings-mutation-Bwe3gUt4.js +0 -1
- {zenml_nightly-0.83.1.dev20250710.dist-info → zenml_nightly-0.84.0.dev20250712.dist-info}/LICENSE +0 -0
- {zenml_nightly-0.83.1.dev20250710.dist-info → zenml_nightly-0.84.0.dev20250712.dist-info}/WHEEL +0 -0
- {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(
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
962
|
+
pipeline_status = ExecutionStatus.RUNNING
|
957
963
|
elif status == PipelineState.PIPELINE_STATE_SUCCEEDED:
|
958
|
-
|
964
|
+
pipeline_status = ExecutionStatus.COMPLETED
|
959
965
|
elif status == PipelineState.PIPELINE_STATE_CANCELLING:
|
960
|
-
|
966
|
+
pipeline_status = ExecutionStatus.STOPPING
|
961
967
|
elif status == PipelineState.PIPELINE_STATE_CANCELLED:
|
962
|
-
|
968
|
+
pipeline_status = ExecutionStatus.STOPPED
|
963
969
|
elif status == PipelineState.PIPELINE_STATE_FAILED:
|
964
|
-
|
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]:
|
@@ -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
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
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
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
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
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
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
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
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
|