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
@@ -807,14 +807,20 @@ class SagemakerOrchestrator(ContainerizedOrchestrator):
|
|
807
807
|
settings=settings,
|
808
808
|
)
|
809
809
|
|
810
|
-
def fetch_status(
|
810
|
+
def fetch_status(
|
811
|
+
self, run: "PipelineRunResponse", include_steps: bool = False
|
812
|
+
) -> Tuple[
|
813
|
+
Optional[ExecutionStatus], Optional[Dict[str, ExecutionStatus]]
|
814
|
+
]:
|
811
815
|
"""Refreshes the status of a specific pipeline run.
|
812
816
|
|
813
817
|
Args:
|
814
818
|
run: The run that was executed by this orchestrator.
|
819
|
+
include_steps: Whether to fetch steps
|
815
820
|
|
816
821
|
Returns:
|
817
|
-
|
822
|
+
A tuple of (pipeline_status, step_statuses_dict).
|
823
|
+
Step statuses are not supported for SageMaker, so step_statuses_dict will always be None.
|
818
824
|
|
819
825
|
Raises:
|
820
826
|
AssertionError: If the run was not executed by to this orchestrator.
|
@@ -855,18 +861,21 @@ class SagemakerOrchestrator(ContainerizedOrchestrator):
|
|
855
861
|
# Map the potential outputs to ZenML ExecutionStatus. Potential values:
|
856
862
|
# https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribePipelineExecution.html
|
857
863
|
if status == "Executing":
|
858
|
-
|
864
|
+
pipeline_status = ExecutionStatus.RUNNING
|
859
865
|
elif status == "Stopping":
|
860
|
-
|
866
|
+
pipeline_status = ExecutionStatus.STOPPING
|
861
867
|
elif status == "Stopped":
|
862
|
-
|
868
|
+
pipeline_status = ExecutionStatus.STOPPED
|
863
869
|
elif status == "Failed":
|
864
|
-
|
870
|
+
pipeline_status = ExecutionStatus.FAILED
|
865
871
|
elif status == "Succeeded":
|
866
|
-
|
872
|
+
pipeline_status = ExecutionStatus.COMPLETED
|
867
873
|
else:
|
868
874
|
raise ValueError("Unknown status for the pipeline execution.")
|
869
875
|
|
876
|
+
# SageMaker doesn't support step-level status fetching yet
|
877
|
+
return pipeline_status, None
|
878
|
+
|
870
879
|
def compute_metadata(
|
871
880
|
self,
|
872
881
|
execution_arn: str,
|
@@ -451,14 +451,20 @@ class AzureMLOrchestrator(ContainerizedOrchestrator):
|
|
451
451
|
)
|
452
452
|
return {}
|
453
453
|
|
454
|
-
def fetch_status(
|
454
|
+
def fetch_status(
|
455
|
+
self, run: "PipelineRunResponse", include_steps: bool = False
|
456
|
+
) -> Tuple[
|
457
|
+
Optional[ExecutionStatus], Optional[Dict[str, ExecutionStatus]]
|
458
|
+
]:
|
455
459
|
"""Refreshes the status of a specific pipeline run.
|
456
460
|
|
457
461
|
Args:
|
458
462
|
run: The run that was executed by this orchestrator.
|
463
|
+
include_steps: Whether to fetch steps (not supported for AzureML).
|
459
464
|
|
460
465
|
Returns:
|
461
|
-
|
466
|
+
A tuple of (pipeline_status, step_statuses_dict).
|
467
|
+
Step statuses are not supported for AzureML, so step_statuses_dict will always be None.
|
462
468
|
|
463
469
|
Raises:
|
464
470
|
AssertionError: If the run was not executed by to this orchestrator.
|
@@ -512,23 +518,23 @@ class AzureMLOrchestrator(ContainerizedOrchestrator):
|
|
512
518
|
"Preparing",
|
513
519
|
"Queued",
|
514
520
|
]:
|
515
|
-
|
521
|
+
pipeline_status = ExecutionStatus.INITIALIZING
|
516
522
|
elif status in ["Running", "Finalizing"]:
|
517
|
-
|
523
|
+
pipeline_status = ExecutionStatus.RUNNING
|
518
524
|
elif status == "CancelRequested":
|
519
|
-
|
525
|
+
pipeline_status = ExecutionStatus.STOPPING
|
520
526
|
elif status == "Canceled":
|
521
|
-
|
522
|
-
elif status in [
|
523
|
-
|
524
|
-
"NotResponding",
|
525
|
-
]:
|
526
|
-
return ExecutionStatus.FAILED
|
527
|
+
pipeline_status = ExecutionStatus.STOPPED
|
528
|
+
elif status in ["Failed", "NotResponding"]:
|
529
|
+
pipeline_status = ExecutionStatus.FAILED
|
527
530
|
elif status == "Completed":
|
528
|
-
|
531
|
+
pipeline_status = ExecutionStatus.COMPLETED
|
529
532
|
else:
|
530
533
|
raise ValueError("Unknown status for the pipeline job.")
|
531
534
|
|
535
|
+
# AzureML doesn't support step-level status fetching yet
|
536
|
+
return pipeline_status, None
|
537
|
+
|
532
538
|
def compute_metadata(self, job: Any) -> Dict[str, MetadataType]:
|
533
539
|
"""Generate run metadata based on the generated AzureML PipelineJob.
|
534
540
|
|
@@ -15,6 +15,8 @@
|
|
15
15
|
|
16
16
|
from typing import TYPE_CHECKING, Optional, Type
|
17
17
|
|
18
|
+
from pydantic import Field
|
19
|
+
|
18
20
|
from zenml.integrations.bentoml import BENTOML_MODEL_DEPLOYER_FLAVOR
|
19
21
|
from zenml.model_deployers.base_model_deployer import (
|
20
22
|
BaseModelDeployerConfig,
|
@@ -28,7 +30,11 @@ if TYPE_CHECKING:
|
|
28
30
|
class BentoMLModelDeployerConfig(BaseModelDeployerConfig):
|
29
31
|
"""Configuration for the BentoMLModelDeployer."""
|
30
32
|
|
31
|
-
service_path: str =
|
33
|
+
service_path: str = Field(
|
34
|
+
"",
|
35
|
+
description="Path to the BentoML service directory. "
|
36
|
+
"If not provided, a default service path will be used.",
|
37
|
+
)
|
32
38
|
|
33
39
|
|
34
40
|
class BentoMLModelDeployerFlavor(BaseModelDeployerFlavor):
|
@@ -15,6 +15,8 @@
|
|
15
15
|
|
16
16
|
from typing import TYPE_CHECKING, Dict, Optional, Tuple, Type
|
17
17
|
|
18
|
+
from pydantic import Field
|
19
|
+
|
18
20
|
from zenml.config.base_settings import BaseSettings
|
19
21
|
from zenml.integrations.databricks import DATABRICKS_ORCHESTRATOR_FLAVOR
|
20
22
|
from zenml.logger import get_logger
|
@@ -42,31 +44,64 @@ class DatabricksAvailabilityType(StrEnum):
|
|
42
44
|
class DatabricksOrchestratorSettings(BaseSettings):
|
43
45
|
"""Databricks orchestrator base settings.
|
44
46
|
|
45
|
-
|
46
|
-
|
47
|
-
num_workers: Number of workers.
|
48
|
-
node_type_id: Node type id.
|
49
|
-
policy_id: Policy id.
|
50
|
-
autotermination_minutes: Autotermination minutes.
|
51
|
-
autoscale: Autoscale.
|
52
|
-
single_user_name: Single user name.
|
53
|
-
spark_conf: Spark configuration.
|
54
|
-
spark_env_vars: Spark environment variables.
|
55
|
-
schedule_timezone: Schedule timezone.
|
47
|
+
Configuration for Databricks cluster and Spark execution settings.
|
48
|
+
Field descriptions are defined inline using Field() descriptors.
|
56
49
|
"""
|
57
50
|
|
58
|
-
#
|
59
|
-
spark_version: Optional[str] =
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
51
|
+
# Cluster Configuration
|
52
|
+
spark_version: Optional[str] = Field(
|
53
|
+
default=None,
|
54
|
+
description="Apache Spark version for the Databricks cluster. "
|
55
|
+
"Uses workspace default if not specified. Example: '3.2.x-scala2.12'",
|
56
|
+
)
|
57
|
+
num_workers: Optional[int] = Field(
|
58
|
+
default=None,
|
59
|
+
description="Fixed number of worker nodes. Cannot be used with autoscaling.",
|
60
|
+
)
|
61
|
+
node_type_id: Optional[str] = Field(
|
62
|
+
default=None,
|
63
|
+
description="Databricks node type identifier. "
|
64
|
+
"Refer to Databricks documentation for available instance types. "
|
65
|
+
"Example: 'i3.xlarge'",
|
66
|
+
)
|
67
|
+
policy_id: Optional[str] = Field(
|
68
|
+
default=None,
|
69
|
+
description="Databricks cluster policy ID for governance and cost control.",
|
70
|
+
)
|
71
|
+
autotermination_minutes: Optional[int] = Field(
|
72
|
+
default=None,
|
73
|
+
description="Minutes of inactivity before automatic cluster termination. "
|
74
|
+
"Helps control costs by shutting down idle clusters.",
|
75
|
+
)
|
76
|
+
autoscale: Tuple[int, int] = Field(
|
77
|
+
default=(0, 1),
|
78
|
+
description="Cluster autoscaling bounds as (min_workers, max_workers). "
|
79
|
+
"Automatically adjusts cluster size based on workload.",
|
80
|
+
)
|
81
|
+
single_user_name: Optional[str] = Field(
|
82
|
+
default=None,
|
83
|
+
description="Databricks username for single-user cluster access mode.",
|
84
|
+
)
|
85
|
+
spark_conf: Optional[Dict[str, str]] = Field(
|
86
|
+
default=None,
|
87
|
+
description="Custom Spark configuration properties as key-value pairs. "
|
88
|
+
"Example: {'spark.sql.adaptive.enabled': 'true', 'spark.sql.adaptive.coalescePartitions.enabled': 'true'}",
|
89
|
+
)
|
90
|
+
spark_env_vars: Optional[Dict[str, str]] = Field(
|
91
|
+
default=None,
|
92
|
+
description="Environment variables for the Spark driver and executors. "
|
93
|
+
"Example: {'SPARK_WORKER_MEMORY': '4g', 'SPARK_DRIVER_MEMORY': '2g'}",
|
94
|
+
)
|
95
|
+
schedule_timezone: Optional[str] = Field(
|
96
|
+
default=None,
|
97
|
+
description="Timezone for scheduled pipeline execution. "
|
98
|
+
"Uses IANA timezone format (e.g., 'America/New_York').",
|
99
|
+
)
|
100
|
+
availability_type: Optional[DatabricksAvailabilityType] = Field(
|
101
|
+
default=None,
|
102
|
+
description="Instance availability type: ON_DEMAND (guaranteed), SPOT (cost-optimized), "
|
103
|
+
"or SPOT_WITH_FALLBACK (spot with on-demand backup).",
|
104
|
+
)
|
70
105
|
|
71
106
|
|
72
107
|
class DatabricksOrchestratorConfig(
|
@@ -15,6 +15,8 @@
|
|
15
15
|
|
16
16
|
from typing import TYPE_CHECKING, Optional, Type
|
17
17
|
|
18
|
+
from pydantic import Field
|
19
|
+
|
18
20
|
from zenml.feature_stores.base_feature_store import (
|
19
21
|
BaseFeatureStoreConfig,
|
20
22
|
BaseFeatureStoreFlavor,
|
@@ -26,11 +28,22 @@ if TYPE_CHECKING:
|
|
26
28
|
|
27
29
|
|
28
30
|
class FeastFeatureStoreConfig(BaseFeatureStoreConfig):
|
29
|
-
"""Config for Feast feature store.
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
31
|
+
"""Config for Feast feature store.
|
32
|
+
|
33
|
+
Configuration for connecting to Feast feature stores.
|
34
|
+
Field descriptions are defined inline using Field() descriptors.
|
35
|
+
"""
|
36
|
+
|
37
|
+
online_host: str = Field(
|
38
|
+
default="localhost",
|
39
|
+
description="Online feature store host address (typically Redis server).",
|
40
|
+
)
|
41
|
+
online_port: int = Field(
|
42
|
+
default=6379, description="Online feature store port number."
|
43
|
+
)
|
44
|
+
feast_repo: str = Field(
|
45
|
+
description="Local filesystem path to the Feast repository with feature definitions."
|
46
|
+
)
|
34
47
|
|
35
48
|
@property
|
36
49
|
def is_local(self) -> bool:
|
@@ -16,7 +16,7 @@
|
|
16
16
|
import re
|
17
17
|
from typing import TYPE_CHECKING, Any, Dict, Optional, Type, Union
|
18
18
|
|
19
|
-
from pydantic import field_validator
|
19
|
+
from pydantic import Field, field_validator
|
20
20
|
|
21
21
|
from zenml.config.base_settings import BaseSettings
|
22
22
|
from zenml.experiment_trackers.base_experiment_tracker import (
|
@@ -40,15 +40,15 @@ if TYPE_CHECKING:
|
|
40
40
|
|
41
41
|
|
42
42
|
class VertexExperimentTrackerSettings(BaseSettings):
|
43
|
-
"""Settings for the VertexAI experiment tracker.
|
43
|
+
"""Settings for the VertexAI experiment tracker."""
|
44
44
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
45
|
+
experiment: Optional[str] = Field(
|
46
|
+
None, description="The VertexAI experiment name."
|
47
|
+
)
|
48
|
+
experiment_tensorboard: Optional[Union[str, bool]] = Field(
|
49
|
+
None,
|
50
|
+
description="The VertexAI experiment tensorboard instance to use.",
|
51
|
+
)
|
52
52
|
|
53
53
|
@field_validator("experiment", mode="before")
|
54
54
|
def _validate_experiment(cls, value: str) -> str:
|
@@ -76,39 +76,7 @@ class VertexExperimentTrackerConfig(
|
|
76
76
|
GoogleCredentialsConfigMixin,
|
77
77
|
VertexExperimentTrackerSettings,
|
78
78
|
):
|
79
|
-
"""Config for the VertexAI experiment tracker.
|
80
|
-
|
81
|
-
Attributes:
|
82
|
-
location: Optional. The default location to use when making API calls. If not
|
83
|
-
set defaults to us-central1.
|
84
|
-
staging_bucket: Optional. The default staging bucket to use to stage artifacts
|
85
|
-
when making API calls. In the form gs://...
|
86
|
-
network:
|
87
|
-
Optional. The full name of the Compute Engine network to which jobs
|
88
|
-
and resources should be peered. E.g. "projects/12345/global/networks/myVPC".
|
89
|
-
Private services access must already be configured for the network.
|
90
|
-
If specified, all eligible jobs and resources created will be peered
|
91
|
-
with this VPC.
|
92
|
-
encryption_spec_key_name:
|
93
|
-
Optional. The Cloud KMS resource identifier of the customer
|
94
|
-
managed encryption key used to protect a resource. Has the
|
95
|
-
form:
|
96
|
-
``projects/my-project/locations/my-region/keyRings/my-kr/cryptoKeys/my-key``.
|
97
|
-
The key needs to be in the same region as where the compute
|
98
|
-
resource is created.
|
99
|
-
api_endpoint (str):
|
100
|
-
Optional. The desired API endpoint,
|
101
|
-
e.g., us-central1-aiplatform.googleapis.com
|
102
|
-
api_key (str):
|
103
|
-
Optional. The API key to use for service calls.
|
104
|
-
NOTE: Not all services support API keys.
|
105
|
-
api_transport (str):
|
106
|
-
Optional. The transport method which is either 'grpc' or 'rest'.
|
107
|
-
NOTE: "rest" transport functionality is currently in a
|
108
|
-
beta state (preview).
|
109
|
-
request_metadata:
|
110
|
-
Optional. Additional gRPC metadata to send with every client request.
|
111
|
-
"""
|
79
|
+
"""Config for the VertexAI experiment tracker."""
|
112
80
|
|
113
81
|
location: Optional[str] = None
|
114
82
|
staging_bucket: Optional[str] = None
|
@@ -15,6 +15,8 @@
|
|
15
15
|
|
16
16
|
from typing import TYPE_CHECKING, Dict, Optional, Tuple, Type
|
17
17
|
|
18
|
+
from pydantic import Field
|
19
|
+
|
18
20
|
from zenml.config.base_settings import BaseSettings
|
19
21
|
from zenml.integrations.gcp import (
|
20
22
|
GCP_RESOURCE_TYPE,
|
@@ -36,35 +38,37 @@ if TYPE_CHECKING:
|
|
36
38
|
|
37
39
|
|
38
40
|
class VertexOrchestratorSettings(BaseSettings):
|
39
|
-
"""Settings for the Vertex 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
|
-
|
67
|
-
custom_job_parameters: Optional[VertexCustomJobParameters] =
|
41
|
+
"""Settings for the Vertex orchestrator."""
|
42
|
+
|
43
|
+
labels: Dict[str, str] = Field(
|
44
|
+
default_factory=dict,
|
45
|
+
description="Labels to assign to the pipeline job. "
|
46
|
+
"Example: {'environment': 'production', 'team': 'ml-ops'}",
|
47
|
+
)
|
48
|
+
synchronous: bool = Field(
|
49
|
+
True,
|
50
|
+
description="If `True`, the client running a pipeline using this "
|
51
|
+
"orchestrator waits until all steps finish running. If `False`, "
|
52
|
+
"the client returns immediately and the pipeline is executed "
|
53
|
+
"asynchronously.",
|
54
|
+
)
|
55
|
+
node_selector_constraint: Optional[Tuple[str, str]] = Field(
|
56
|
+
None,
|
57
|
+
description="Each constraint is a key-value pair label. For the container "
|
58
|
+
"to be eligible to run on a node, the node must have each of the "
|
59
|
+
"constraints appeared as labels. For example, a GPU type can be provided "
|
60
|
+
"by ('cloud.google.com/gke-accelerator', 'NVIDIA_TESLA_T4')."
|
61
|
+
"Hint: the selected region (location) must provide the requested accelerator"
|
62
|
+
"(see https://cloud.google.com/compute/docs/gpus/gpu-regions-zones).",
|
63
|
+
)
|
64
|
+
pod_settings: Optional[KubernetesPodSettings] = Field(
|
65
|
+
None,
|
66
|
+
description="Pod settings to apply to the orchestrator and step pods.",
|
67
|
+
)
|
68
|
+
|
69
|
+
custom_job_parameters: Optional[VertexCustomJobParameters] = Field(
|
70
|
+
None, description="Custom parameters for the Vertex AI custom job."
|
71
|
+
)
|
68
72
|
|
69
73
|
_node_selector_deprecation = (
|
70
74
|
deprecation_utils.deprecate_pydantic_attributes(
|
@@ -78,71 +82,74 @@ class VertexOrchestratorConfig(
|
|
78
82
|
GoogleCredentialsConfigMixin,
|
79
83
|
VertexOrchestratorSettings,
|
80
84
|
):
|
81
|
-
"""Configuration for the Vertex orchestrator.
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
can be a number (integer value for number of CPUs) as string,
|
122
|
-
or a number followed by "m", which means 1/1000. You can specify
|
123
|
-
at most 96 CPUs.
|
124
|
-
(see. https://cloud.google.com/vertex-ai/docs/pipelines/machine-types)
|
125
|
-
memory_limit: The maximum memory limit for this operator. This string
|
126
|
-
value can be a number, or a number followed by "K" (kilobyte),
|
127
|
-
"M" (megabyte), or "G" (gigabyte). At most 624GB is supported.
|
128
|
-
gpu_limit: The GPU limit (positive number) for the operator.
|
129
|
-
For more information about GPU resources, see:
|
130
|
-
https://cloud.google.com/vertex-ai/docs/training/configure-compute#specifying_gpus
|
131
|
-
"""
|
132
|
-
|
133
|
-
location: str
|
134
|
-
pipeline_root: Optional[str] = None
|
135
|
-
encryption_spec_key_name: Optional[str] = None
|
136
|
-
workload_service_account: Optional[str] = None
|
137
|
-
network: Optional[str] = None
|
138
|
-
private_service_connect: Optional[str] = None
|
85
|
+
"""Configuration for the Vertex orchestrator."""
|
86
|
+
|
87
|
+
location: str = Field(
|
88
|
+
...,
|
89
|
+
description="Name of GCP region where the pipeline job will be executed. "
|
90
|
+
"Vertex AI Pipelines is available in specific regions: "
|
91
|
+
"https://cloud.google.com/vertex-ai/docs/general/locations#feature-availability",
|
92
|
+
)
|
93
|
+
pipeline_root: Optional[str] = Field(
|
94
|
+
None,
|
95
|
+
description="A Cloud Storage URI that will be used by the Vertex AI Pipelines. "
|
96
|
+
"If not provided but the artifact store in the stack is a GCPArtifactStore, "
|
97
|
+
"then a subdirectory of the artifact store will be used.",
|
98
|
+
)
|
99
|
+
encryption_spec_key_name: Optional[str] = Field(
|
100
|
+
None,
|
101
|
+
description="The Cloud KMS resource identifier of the customer managed "
|
102
|
+
"encryption key used to protect the job. Has the form: "
|
103
|
+
"projects/<PROJECT>/locations/<REGION>/keyRings/<KR>/cryptoKeys/<KEY>. "
|
104
|
+
"The key needs to be in the same region as where the compute resource is created.",
|
105
|
+
)
|
106
|
+
workload_service_account: Optional[str] = Field(
|
107
|
+
None,
|
108
|
+
description="The service account for workload run-as account. Users submitting "
|
109
|
+
"jobs must have act-as permission on this run-as account. If not provided, "
|
110
|
+
"the Compute Engine default service account for the GCP project is used.",
|
111
|
+
)
|
112
|
+
network: Optional[str] = Field(
|
113
|
+
None,
|
114
|
+
description="The full name of the Compute Engine Network to which the job "
|
115
|
+
"should be peered. For example, 'projects/12345/global/networks/myVPC'. "
|
116
|
+
"If not provided, the job will not be peered with any network.",
|
117
|
+
)
|
118
|
+
private_service_connect: Optional[str] = Field(
|
119
|
+
None,
|
120
|
+
description="The full name of a Private Service Connect endpoint to which "
|
121
|
+
"the job should be peered. For example, "
|
122
|
+
"'projects/12345/regions/us-central1/networkAttachments/NETWORK_ATTACHMENT_NAME'. "
|
123
|
+
"If not provided, the job will not be peered with any private service connect endpoint.",
|
124
|
+
)
|
139
125
|
|
140
126
|
# Deprecated
|
141
|
-
cpu_limit: Optional[str] =
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
127
|
+
cpu_limit: Optional[str] = Field(
|
128
|
+
None,
|
129
|
+
description="DEPRECATED: The maximum CPU limit for this operator. "
|
130
|
+
"Use custom_job_parameters or pod_settings instead.",
|
131
|
+
)
|
132
|
+
memory_limit: Optional[str] = Field(
|
133
|
+
None,
|
134
|
+
description="DEPRECATED: The maximum memory limit for this operator. "
|
135
|
+
"Use custom_job_parameters or pod_settings instead.",
|
136
|
+
)
|
137
|
+
gpu_limit: Optional[int] = Field(
|
138
|
+
None,
|
139
|
+
description="DEPRECATED: The GPU limit for the operator. "
|
140
|
+
"Use custom_job_parameters or pod_settings instead.",
|
141
|
+
)
|
142
|
+
function_service_account: Optional[str] = Field(
|
143
|
+
None,
|
144
|
+
description="DEPRECATED: The service account for cloud function run-as account, "
|
145
|
+
"for scheduled pipelines. This functionality is no longer supported.",
|
146
|
+
)
|
147
|
+
scheduler_service_account: Optional[str] = Field(
|
148
|
+
None,
|
149
|
+
description="DEPRECATED: The service account used by the Google Cloud Scheduler "
|
150
|
+
"to trigger and authenticate to the pipeline Cloud Function on a schedule. "
|
151
|
+
"This functionality is no longer supported.",
|
152
|
+
)
|
146
153
|
|
147
154
|
_resource_deprecation = deprecation_utils.deprecate_pydantic_attributes(
|
148
155
|
"cpu_limit",
|
@@ -15,6 +15,8 @@
|
|
15
15
|
|
16
16
|
from typing import TYPE_CHECKING, Optional, Tuple, cast
|
17
17
|
|
18
|
+
from pydantic import Field
|
19
|
+
|
18
20
|
from zenml.logger import get_logger
|
19
21
|
from zenml.stack.stack_component import StackComponent, StackComponentConfig
|
20
22
|
|
@@ -28,16 +30,19 @@ logger = get_logger(__name__)
|
|
28
30
|
class GoogleCredentialsConfigMixin(StackComponentConfig):
|
29
31
|
"""Config mixin for Google Cloud Platform credentials.
|
30
32
|
|
31
|
-
|
32
|
-
|
33
|
-
the environment.
|
34
|
-
service_account_path: path to the service account credentials file to be
|
35
|
-
used for authentication. If not provided, the default credentials
|
36
|
-
will be used.
|
33
|
+
Provides common GCP authentication configuration for stack components.
|
34
|
+
Field descriptions are defined inline using Field() descriptors.
|
37
35
|
"""
|
38
36
|
|
39
|
-
project: Optional[str] =
|
40
|
-
|
37
|
+
project: Optional[str] = Field(
|
38
|
+
default=None,
|
39
|
+
description="Google Cloud Project ID. Auto-detected from environment if not specified.",
|
40
|
+
)
|
41
|
+
service_account_path: Optional[str] = Field(
|
42
|
+
default=None,
|
43
|
+
description="Path to service account JSON key file for authentication. "
|
44
|
+
"Uses Application Default Credentials if not provided.",
|
45
|
+
)
|
41
46
|
|
42
47
|
|
43
48
|
class GoogleCredentialsMixin(StackComponent):
|