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
@@ -15,6 +15,8 @@
|
|
15
15
|
|
16
16
|
from typing import TYPE_CHECKING, List, Optional, Type
|
17
17
|
|
18
|
+
from pydantic import Field
|
19
|
+
|
18
20
|
from zenml.config.base_settings import BaseSettings
|
19
21
|
from zenml.integrations.lightning import LIGHTNING_ORCHESTRATOR_FLAVOR
|
20
22
|
from zenml.logger import get_logger
|
@@ -33,33 +35,47 @@ logger = get_logger(__name__)
|
|
33
35
|
class LightningOrchestratorSettings(BaseSettings):
|
34
36
|
"""Lightning orchestrator base settings.
|
35
37
|
|
36
|
-
|
37
|
-
|
38
|
-
machine_type: Machine type.
|
39
|
-
user_id: User id.
|
40
|
-
api_key: api_key.
|
41
|
-
username: Username.
|
42
|
-
teamspace: Teamspace.
|
43
|
-
organization: Organization.
|
44
|
-
custom_commands: Custom commands to run.
|
45
|
-
synchronous: If `True`, the client running a pipeline using this
|
46
|
-
orchestrator waits until all steps finish running. If `False`,
|
47
|
-
the client returns immediately and the pipeline is executed
|
48
|
-
asynchronously. Defaults to `True`. This setting only
|
49
|
-
has an effect when specified on the pipeline and will be ignored if
|
50
|
-
specified on steps.
|
38
|
+
Configuration for executing pipelines on Lightning AI platform.
|
39
|
+
Field descriptions are defined inline using Field() descriptors.
|
51
40
|
"""
|
52
41
|
|
53
|
-
#
|
54
|
-
main_studio_name: Optional[str] =
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
42
|
+
# Lightning AI Platform Configuration
|
43
|
+
main_studio_name: Optional[str] = Field(
|
44
|
+
default=None,
|
45
|
+
description="Lightning AI studio instance name where the pipeline will execute.",
|
46
|
+
)
|
47
|
+
machine_type: Optional[str] = Field(
|
48
|
+
default=None,
|
49
|
+
description="Compute instance type for pipeline execution. "
|
50
|
+
"Refer to Lightning AI documentation for available options.",
|
51
|
+
)
|
52
|
+
user_id: Optional[str] = SecretField(
|
53
|
+
default=None, description="Lightning AI user ID for authentication."
|
54
|
+
)
|
55
|
+
api_key: Optional[str] = SecretField(
|
56
|
+
default=None,
|
57
|
+
description="Lightning AI API key for platform authentication.",
|
58
|
+
)
|
59
|
+
username: Optional[str] = Field(
|
60
|
+
default=None, description="Lightning AI platform username."
|
61
|
+
)
|
62
|
+
teamspace: Optional[str] = Field(
|
63
|
+
default=None,
|
64
|
+
description="Lightning AI teamspace for collaborative pipeline execution.",
|
65
|
+
)
|
66
|
+
organization: Optional[str] = Field(
|
67
|
+
default=None,
|
68
|
+
description="Lightning AI organization name for enterprise accounts.",
|
69
|
+
)
|
70
|
+
custom_commands: Optional[List[str]] = Field(
|
71
|
+
default=None,
|
72
|
+
description="Additional shell commands to execute in the Lightning AI environment.",
|
73
|
+
)
|
74
|
+
synchronous: bool = Field(
|
75
|
+
default=True,
|
76
|
+
description="Whether to wait for pipeline completion. "
|
77
|
+
"When `False`, execution continues asynchronously after submission.",
|
78
|
+
)
|
63
79
|
|
64
80
|
|
65
81
|
class LightningOrchestratorConfig(
|
@@ -15,7 +15,7 @@
|
|
15
15
|
|
16
16
|
from typing import TYPE_CHECKING, Any, Dict, Optional, Type
|
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.experiment_trackers.base_experiment_tracker import (
|
@@ -59,56 +59,63 @@ def is_databricks_tracking_uri(tracking_uri: str) -> bool:
|
|
59
59
|
|
60
60
|
|
61
61
|
class MLFlowExperimentTrackerSettings(BaseSettings):
|
62
|
-
"""Settings for the MLflow experiment tracker.
|
62
|
+
"""Settings for the MLflow experiment tracker."""
|
63
63
|
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
tags: Dict[str, Any] =
|
64
|
+
experiment_name: Optional[str] = Field(
|
65
|
+
None,
|
66
|
+
description="The MLflow experiment name to use for tracking runs.",
|
67
|
+
)
|
68
|
+
nested: bool = Field(
|
69
|
+
False,
|
70
|
+
description="If `True`, will create a nested sub-run for the step.",
|
71
|
+
)
|
72
|
+
tags: Dict[str, Any] = Field(
|
73
|
+
default_factory=dict,
|
74
|
+
description="Tags to attach to the MLflow run for categorization and filtering.",
|
75
|
+
)
|
73
76
|
|
74
77
|
|
75
78
|
class MLFlowExperimentTrackerConfig(
|
76
79
|
BaseExperimentTrackerConfig, MLFlowExperimentTrackerSettings
|
77
80
|
):
|
78
|
-
"""Config for the MLflow experiment tracker.
|
79
|
-
|
80
|
-
Attributes:
|
81
|
-
tracking_uri: The uri of the mlflow tracking server. If no uri is set,
|
82
|
-
your stack must contain a `LocalArtifactStore` and ZenML will
|
83
|
-
point MLflow to a subdirectory of your artifact store instead.
|
84
|
-
tracking_username: Username for authenticating with the MLflow
|
85
|
-
tracking server. When a remote tracking uri is specified,
|
86
|
-
either `tracking_token` or `tracking_username` and
|
87
|
-
`tracking_password` must be specified.
|
88
|
-
tracking_password: Password for authenticating with the MLflow
|
89
|
-
tracking server. When a remote tracking uri is specified,
|
90
|
-
either `tracking_token` or `tracking_username` and
|
91
|
-
`tracking_password` must be specified.
|
92
|
-
tracking_token: Token for authenticating with the MLflow
|
93
|
-
tracking server. When a remote tracking uri is specified,
|
94
|
-
either `tracking_token` or `tracking_username` and
|
95
|
-
`tracking_password` must be specified.
|
96
|
-
tracking_insecure_tls: Skips verification of TLS connection to the
|
97
|
-
MLflow tracking server if set to `True`.
|
98
|
-
databricks_host: The host of the Databricks workspace with the MLflow
|
99
|
-
managed server to connect to. This is only required if
|
100
|
-
`tracking_uri` value is set to `"databricks"`.
|
101
|
-
enable_unity_catalog: If `True`, will enable the Databricks Unity Catalog for
|
102
|
-
logging and registering models.
|
103
|
-
"""
|
81
|
+
"""Config for the MLflow experiment tracker."""
|
104
82
|
|
105
|
-
tracking_uri: Optional[str] =
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
83
|
+
tracking_uri: Optional[str] = Field(
|
84
|
+
None,
|
85
|
+
description="The URI of the MLflow tracking server. If no URI is set, "
|
86
|
+
"your stack must contain a LocalArtifactStore and ZenML will point "
|
87
|
+
"MLflow to a subdirectory of your artifact store instead.",
|
88
|
+
)
|
89
|
+
tracking_username: Optional[str] = SecretField(
|
90
|
+
default=None,
|
91
|
+
description="Username for authenticating with the MLflow tracking server. "
|
92
|
+
"Required when using a remote tracking URI along with tracking_password.",
|
93
|
+
)
|
94
|
+
tracking_password: Optional[str] = SecretField(
|
95
|
+
default=None,
|
96
|
+
description="Password for authenticating with the MLflow tracking server. "
|
97
|
+
"Required when using a remote tracking URI along with tracking_username.",
|
98
|
+
)
|
99
|
+
tracking_token: Optional[str] = SecretField(
|
100
|
+
default=None,
|
101
|
+
description="Token for authenticating with the MLflow tracking server. "
|
102
|
+
"Alternative to username/password authentication for remote tracking URIs.",
|
103
|
+
)
|
104
|
+
tracking_insecure_tls: bool = Field(
|
105
|
+
False,
|
106
|
+
description="Skips verification of TLS connection to the MLflow tracking "
|
107
|
+
"server if set to `True`. Use with caution in production environments.",
|
108
|
+
)
|
109
|
+
databricks_host: Optional[str] = Field(
|
110
|
+
None,
|
111
|
+
description="The host of the Databricks workspace with the MLflow managed "
|
112
|
+
"server to connect to. Required when tracking_uri is set to 'databricks'.",
|
113
|
+
)
|
114
|
+
enable_unity_catalog: bool = Field(
|
115
|
+
False,
|
116
|
+
description="If `True`, will enable the Databricks Unity Catalog for "
|
117
|
+
"logging and registering models.",
|
118
|
+
)
|
112
119
|
|
113
120
|
@model_validator(mode="after")
|
114
121
|
def _ensure_authentication_if_necessary(
|
@@ -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.mlflow import MLFLOW_MODEL_DEPLOYER_FLAVOR
|
19
21
|
from zenml.model_deployers.base_model_deployer import (
|
20
22
|
BaseModelDeployerConfig,
|
@@ -28,12 +30,15 @@ if TYPE_CHECKING:
|
|
28
30
|
class MLFlowModelDeployerConfig(BaseModelDeployerConfig):
|
29
31
|
"""Configuration for the MLflow model deployer.
|
30
32
|
|
31
|
-
|
32
|
-
|
33
|
-
configuration, PID and log files are stored.
|
33
|
+
Configuration for local MLflow model serving.
|
34
|
+
Field descriptions are defined inline using Field() descriptors.
|
34
35
|
"""
|
35
36
|
|
36
|
-
service_path: str =
|
37
|
+
service_path: str = Field(
|
38
|
+
default="",
|
39
|
+
description="Local directory for MLflow deployment service files "
|
40
|
+
"(configuration, PID, and logs). Uses temp directory if empty.",
|
41
|
+
)
|
37
42
|
|
38
43
|
@property
|
39
44
|
def is_local(self) -> bool:
|
@@ -21,6 +21,8 @@ __all__ = [
|
|
21
21
|
|
22
22
|
from typing import TYPE_CHECKING, Optional, Set, Type
|
23
23
|
|
24
|
+
from pydantic import Field
|
25
|
+
|
24
26
|
from zenml.config.base_settings import BaseSettings
|
25
27
|
from zenml.experiment_trackers.base_experiment_tracker import (
|
26
28
|
BaseExperimentTrackerConfig,
|
@@ -40,24 +42,23 @@ class NeptuneExperimentTrackerConfig(BaseExperimentTrackerConfig):
|
|
40
42
|
|
41
43
|
If attributes are left as None, the neptune.init_run() method
|
42
44
|
will try to find the relevant values in the environment
|
43
|
-
|
44
|
-
Attributes:
|
45
|
-
project: name of the Neptune project you want to log the metadata to
|
46
|
-
api_token: your Neptune API token
|
47
45
|
"""
|
48
46
|
|
49
|
-
project: Optional[str] =
|
50
|
-
|
47
|
+
project: Optional[str] = Field(
|
48
|
+
None,
|
49
|
+
description="Name of the Neptune project you want to log the metadata to.",
|
50
|
+
)
|
51
|
+
api_token: Optional[str] = SecretField(
|
52
|
+
default=None, description="Your Neptune API token for authentication."
|
53
|
+
)
|
51
54
|
|
52
55
|
|
53
56
|
class NeptuneExperimentTrackerSettings(BaseSettings):
|
54
|
-
"""Settings for the Neptune experiment tracker.
|
57
|
+
"""Settings for the Neptune experiment tracker."""
|
55
58
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
tags: Set[str] = set()
|
59
|
+
tags: Set[str] = Field(
|
60
|
+
default_factory=set, description="Tags for the Neptune run."
|
61
|
+
)
|
61
62
|
|
62
63
|
|
63
64
|
class NeptuneExperimentTrackerFlavor(BaseExperimentTrackerFlavor):
|
@@ -24,7 +24,7 @@ from typing import (
|
|
24
24
|
Type,
|
25
25
|
)
|
26
26
|
|
27
|
-
from pydantic import field_validator
|
27
|
+
from pydantic import Field, field_validator
|
28
28
|
|
29
29
|
from zenml.artifact_stores import (
|
30
30
|
BaseArtifactStoreConfig,
|
@@ -64,12 +64,37 @@ class S3ArtifactStoreConfig(
|
|
64
64
|
|
65
65
|
SUPPORTED_SCHEMES: ClassVar[Set[str]] = {"s3://"}
|
66
66
|
|
67
|
-
key: Optional[str] = SecretField(
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
67
|
+
key: Optional[str] = SecretField(
|
68
|
+
default=None,
|
69
|
+
description="AWS access key ID for authentication. "
|
70
|
+
"If not provided, credentials will be inferred from the environment.",
|
71
|
+
)
|
72
|
+
secret: Optional[str] = SecretField(
|
73
|
+
default=None,
|
74
|
+
description="AWS secret access key for authentication. "
|
75
|
+
"If not provided, credentials will be inferred from the environment.",
|
76
|
+
)
|
77
|
+
token: Optional[str] = SecretField(
|
78
|
+
default=None,
|
79
|
+
description="AWS session token for temporary credentials. "
|
80
|
+
"If not provided, credentials will be inferred from the environment.",
|
81
|
+
)
|
82
|
+
client_kwargs: Optional[Dict[str, Any]] = Field(
|
83
|
+
None,
|
84
|
+
description="Additional keyword arguments to pass to the S3 client. "
|
85
|
+
"For example, to connect to a custom S3-compatible endpoint: "
|
86
|
+
"{'endpoint_url': 'http://minio:9000'}",
|
87
|
+
)
|
88
|
+
config_kwargs: Optional[Dict[str, Any]] = Field(
|
89
|
+
None,
|
90
|
+
description="Additional keyword arguments to pass to the S3 client configuration. "
|
91
|
+
"For example: {'region_name': 'us-west-2', 'signature_version': 's3v4'}",
|
92
|
+
)
|
93
|
+
s3_additional_kwargs: Optional[Dict[str, Any]] = Field(
|
94
|
+
None,
|
95
|
+
description="Additional keyword arguments for S3 operations. "
|
96
|
+
"For example: {'ACL': 'bucket-owner-full-control'}",
|
97
|
+
)
|
73
98
|
|
74
99
|
_bucket: Optional[str] = None
|
75
100
|
|
@@ -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.vllm import VLLM_MODEL_DEPLOYER
|
19
21
|
from zenml.model_deployers.base_model_deployer import (
|
20
22
|
BaseModelDeployerConfig,
|
@@ -28,7 +30,11 @@ if TYPE_CHECKING:
|
|
28
30
|
class VLLMModelDeployerConfig(BaseModelDeployerConfig):
|
29
31
|
"""Configuration for vLLM Inference model deployer."""
|
30
32
|
|
31
|
-
service_path: str =
|
33
|
+
service_path: str = Field(
|
34
|
+
"",
|
35
|
+
description="The path where the local vLLM deployment service "
|
36
|
+
"configuration, PID and log files are stored.",
|
37
|
+
)
|
32
38
|
|
33
39
|
|
34
40
|
class VLLMModelDeployerFlavor(BaseModelDeployerFlavor):
|
@@ -23,7 +23,7 @@ from typing import (
|
|
23
23
|
cast,
|
24
24
|
)
|
25
25
|
|
26
|
-
from pydantic import BaseModel, field_validator
|
26
|
+
from pydantic import BaseModel, Field, field_validator
|
27
27
|
|
28
28
|
from zenml.config.base_settings import BaseSettings
|
29
29
|
from zenml.experiment_trackers.base_experiment_tracker import (
|
@@ -40,19 +40,24 @@ if TYPE_CHECKING:
|
|
40
40
|
|
41
41
|
|
42
42
|
class WandbExperimentTrackerSettings(BaseSettings):
|
43
|
-
"""Settings for the Wandb experiment tracker.
|
43
|
+
"""Settings for the Wandb experiment tracker."""
|
44
44
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
45
|
+
run_name: Optional[str] = Field(
|
46
|
+
None,
|
47
|
+
description="The Wandb run name to use for tracking experiments."
|
48
|
+
)
|
49
|
+
tags: List[str] = Field(
|
50
|
+
default_factory=list,
|
51
|
+
description="Tags to attach to the Wandb run for categorization and filtering."
|
52
|
+
)
|
53
|
+
settings: Dict[str, Any] = Field(
|
54
|
+
default_factory=dict,
|
55
|
+
description="Additional settings for the Wandb run configuration."
|
56
|
+
)
|
57
|
+
enable_weave: bool = Field(
|
58
|
+
False,
|
59
|
+
description="Whether to enable Weave integration for enhanced experiment tracking."
|
60
|
+
)
|
56
61
|
|
57
62
|
@field_validator("settings", mode="before")
|
58
63
|
@classmethod
|
@@ -89,18 +94,22 @@ class WandbExperimentTrackerSettings(BaseSettings):
|
|
89
94
|
class WandbExperimentTrackerConfig(
|
90
95
|
BaseExperimentTrackerConfig, WandbExperimentTrackerSettings
|
91
96
|
):
|
92
|
-
"""Config for the Wandb experiment tracker.
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
project_name: Optional[str] =
|
97
|
+
"""Config for the Wandb experiment tracker."""
|
98
|
+
|
99
|
+
api_key: str = SecretField(
|
100
|
+
description="API key that should be authorized to log to the configured "
|
101
|
+
"Wandb entity and project. Required for authentication."
|
102
|
+
)
|
103
|
+
entity: Optional[str] = Field(
|
104
|
+
None,
|
105
|
+
description="Name of an existing Wandb entity (team or user account) "
|
106
|
+
"to log experiments to."
|
107
|
+
)
|
108
|
+
project_name: Optional[str] = Field(
|
109
|
+
None,
|
110
|
+
description="Name of an existing Wandb project to log experiments to. "
|
111
|
+
"If not specified, a default project will be used."
|
112
|
+
)
|
104
113
|
|
105
114
|
|
106
115
|
class WandbExperimentTrackerFlavor(BaseExperimentTrackerFlavor):
|
@@ -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.config.base_settings import BaseSettings
|
19
21
|
from zenml.data_validators.base_data_validator import (
|
20
22
|
BaseDataValidatorConfig,
|
@@ -28,17 +30,18 @@ if TYPE_CHECKING:
|
|
28
30
|
|
29
31
|
|
30
32
|
class WhylogsDataValidatorSettings(BaseSettings):
|
31
|
-
"""Settings for the Whylogs data validator.
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
33
|
+
"""Settings for the Whylogs data validator."""
|
34
|
+
|
35
|
+
enable_whylabs: bool = Field(
|
36
|
+
False,
|
37
|
+
description="If set to `True` for a step, all the whylogs data "
|
38
|
+
"profile views returned by the step will automatically be uploaded "
|
39
|
+
"to the Whylabs platform if Whylabs credentials are configured.",
|
40
|
+
)
|
41
|
+
dataset_id: Optional[str] = Field(
|
42
|
+
None,
|
43
|
+
description="Dataset ID to use when uploading profiles to Whylabs.",
|
44
|
+
)
|
42
45
|
|
43
46
|
|
44
47
|
class WhylogsDataValidatorConfig(
|
zenml/logging/step_logging.py
CHANGED
@@ -49,6 +49,7 @@ from zenml.models import (
|
|
49
49
|
PipelineDeploymentResponse,
|
50
50
|
PipelineRunUpdate,
|
51
51
|
)
|
52
|
+
from zenml.utils.io_utils import sanitize_remote_path
|
52
53
|
from zenml.utils.time_utils import utc_now
|
53
54
|
from zenml.zen_stores.base_zen_store import BaseZenStore
|
54
55
|
|
@@ -101,15 +102,14 @@ def prepare_logs_uri(
|
|
101
102
|
|
102
103
|
# Delete the file if it already exists
|
103
104
|
if artifact_store.config.IS_IMMUTABLE_FILESYSTEM:
|
104
|
-
|
105
|
-
if artifact_store.exists(
|
105
|
+
logs_uri = os.path.join(logs_base_uri, log_key)
|
106
|
+
if artifact_store.exists(logs_uri):
|
106
107
|
logger.warning(
|
107
|
-
f"Logs directory {
|
108
|
+
f"Logs directory {logs_uri} already exists! Removing old log directory..."
|
108
109
|
)
|
109
|
-
artifact_store.rmtree(
|
110
|
+
artifact_store.rmtree(logs_uri)
|
110
111
|
|
111
|
-
artifact_store.makedirs(
|
112
|
-
return logs_uri_folder
|
112
|
+
artifact_store.makedirs(logs_uri)
|
113
113
|
else:
|
114
114
|
logs_uri = os.path.join(logs_base_uri, f"{log_key}{LOGS_EXTENSION}")
|
115
115
|
if artifact_store.exists(logs_uri):
|
@@ -117,7 +117,8 @@ def prepare_logs_uri(
|
|
117
117
|
f"Logs file {logs_uri} already exists! Removing old log file..."
|
118
118
|
)
|
119
119
|
artifact_store.remove(logs_uri)
|
120
|
-
|
120
|
+
|
121
|
+
return sanitize_remote_path(logs_uri)
|
121
122
|
|
122
123
|
|
123
124
|
def fetch_logs(
|
zenml/models/v2/core/logs.py
CHANGED
@@ -34,7 +34,8 @@ class LogsRequest(BaseRequest):
|
|
34
34
|
"""Request model for logs."""
|
35
35
|
|
36
36
|
uri: str = Field(title="The uri of the logs file")
|
37
|
-
|
37
|
+
# TODO: Remove default value when not supporting clients <0.84.0 anymore
|
38
|
+
source: str = Field(default="", title="The source of the logs file")
|
38
39
|
artifact_store_id: UUID = Field(
|
39
40
|
title="The artifact store ID to associate the logs with.",
|
40
41
|
)
|
@@ -24,7 +24,6 @@ from typing import (
|
|
24
24
|
Type,
|
25
25
|
TypeVar,
|
26
26
|
Union,
|
27
|
-
cast,
|
28
27
|
)
|
29
28
|
from uuid import UUID
|
30
29
|
|
@@ -333,64 +332,6 @@ class PipelineRunResponse(
|
|
333
332
|
|
334
333
|
return get_artifacts_versions_of_pipeline_run(self, only_produced=True)
|
335
334
|
|
336
|
-
def refresh_run_status(self) -> "PipelineRunResponse":
|
337
|
-
"""Method to refresh the status of a run if it is initializing/running.
|
338
|
-
|
339
|
-
Returns:
|
340
|
-
The updated pipeline.
|
341
|
-
|
342
|
-
Raises:
|
343
|
-
ValueError: If the stack of the run response is None.
|
344
|
-
"""
|
345
|
-
if self.status in [
|
346
|
-
ExecutionStatus.INITIALIZING,
|
347
|
-
ExecutionStatus.RUNNING,
|
348
|
-
]:
|
349
|
-
# Check if the stack still accessible
|
350
|
-
if self.stack is None:
|
351
|
-
raise ValueError(
|
352
|
-
"The stack that this pipeline run response was executed on"
|
353
|
-
"is either not accessible or has been deleted."
|
354
|
-
)
|
355
|
-
|
356
|
-
# Create the orchestrator instance
|
357
|
-
from zenml.enums import StackComponentType
|
358
|
-
from zenml.orchestrators.base_orchestrator import BaseOrchestrator
|
359
|
-
from zenml.stack.stack_component import StackComponent
|
360
|
-
|
361
|
-
# Check if the stack still accessible
|
362
|
-
orchestrator_list = self.stack.components.get(
|
363
|
-
StackComponentType.ORCHESTRATOR, []
|
364
|
-
)
|
365
|
-
if len(orchestrator_list) == 0:
|
366
|
-
raise ValueError(
|
367
|
-
"The orchestrator that this pipeline run response was "
|
368
|
-
"executed with is either not accessible or has been deleted."
|
369
|
-
)
|
370
|
-
|
371
|
-
orchestrator = cast(
|
372
|
-
BaseOrchestrator,
|
373
|
-
StackComponent.from_model(
|
374
|
-
component_model=orchestrator_list[0]
|
375
|
-
),
|
376
|
-
)
|
377
|
-
|
378
|
-
# Fetch the status
|
379
|
-
status = orchestrator.fetch_status(run=self)
|
380
|
-
|
381
|
-
# If it is different from the current status, update it
|
382
|
-
if status != self.status:
|
383
|
-
from zenml.client import Client
|
384
|
-
from zenml.models import PipelineRunUpdate
|
385
|
-
|
386
|
-
client = Client()
|
387
|
-
return client.zen_store.update_run(
|
388
|
-
run_id=self.id,
|
389
|
-
run_update=PipelineRunUpdate(status=status),
|
390
|
-
)
|
391
|
-
|
392
|
-
return self
|
393
|
-
|
394
335
|
# Body and metadata properties
|
395
336
|
@property
|
396
337
|
def status(self) -> ExecutionStatus:
|
@@ -22,6 +22,7 @@ from typing import (
|
|
22
22
|
Dict,
|
23
23
|
Iterator,
|
24
24
|
Optional,
|
25
|
+
Tuple,
|
25
26
|
Type,
|
26
27
|
cast,
|
27
28
|
)
|
@@ -443,11 +444,16 @@ class BaseOrchestrator(StackComponent, ABC):
|
|
443
444
|
"""Cleans up the active run."""
|
444
445
|
self._active_deployment = None
|
445
446
|
|
446
|
-
def fetch_status(
|
447
|
+
def fetch_status(
|
448
|
+
self, run: "PipelineRunResponse", include_steps: bool = False
|
449
|
+
) -> Tuple[
|
450
|
+
Optional[ExecutionStatus], Optional[Dict[str, ExecutionStatus]]
|
451
|
+
]:
|
447
452
|
"""Refreshes the status of a specific pipeline run.
|
448
453
|
|
449
454
|
Args:
|
450
455
|
run: A pipeline run response to fetch its status.
|
456
|
+
include_steps: If True, also fetch the status of individual steps.
|
451
457
|
|
452
458
|
Raises:
|
453
459
|
NotImplementedError: If any orchestrator inheriting from the base
|
zenml/pipelines/build_utils.py
CHANGED
@@ -38,7 +38,7 @@ from zenml.models import (
|
|
38
38
|
StackResponse,
|
39
39
|
)
|
40
40
|
from zenml.stack import Stack
|
41
|
-
from zenml.utils import source_utils
|
41
|
+
from zenml.utils import docker_utils, source_utils
|
42
42
|
from zenml.utils.pipeline_docker_image_builder import (
|
43
43
|
PipelineDockerImageBuilder,
|
44
44
|
)
|
@@ -378,6 +378,7 @@ def create_pipeline_build(
|
|
378
378
|
if build_config.step_name:
|
379
379
|
tag += f"-{build_config.step_name}"
|
380
380
|
tag += f"-{build_config.key}"
|
381
|
+
tag = docker_utils.sanitize_tag(tag)
|
381
382
|
|
382
383
|
include_files = build_config.should_include_files(
|
383
384
|
code_repository=code_repository,
|
@@ -15,7 +15,7 @@
|
|
15
15
|
|
16
16
|
from typing import Optional, Type, TypeVar, cast
|
17
17
|
|
18
|
-
from pydantic import BaseModel
|
18
|
+
from pydantic import BaseModel, Field
|
19
19
|
|
20
20
|
from zenml.client import Client
|
21
21
|
from zenml.models import SecretResponse
|
@@ -30,12 +30,13 @@ class AuthenticationConfigMixin(StackComponentConfig):
|
|
30
30
|
Any stack component that implements `AuthenticationMixin` should have a
|
31
31
|
config that inherits from this class.
|
32
32
|
|
33
|
-
|
34
|
-
authentication_secret: Name of the secret that stores the
|
35
|
-
authentication credentials.
|
33
|
+
Field descriptions are defined inline using Field() descriptors.
|
36
34
|
"""
|
37
35
|
|
38
|
-
authentication_secret: Optional[str] =
|
36
|
+
authentication_secret: Optional[str] = Field(
|
37
|
+
default=None,
|
38
|
+
description="Name of the ZenML secret containing authentication credentials.",
|
39
|
+
)
|
39
40
|
|
40
41
|
|
41
42
|
class AuthenticationMixin(StackComponent):
|