zenml-nightly 0.83.1.dev20250710__py3-none-any.whl → 0.84.0.dev20250712__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (267) hide show
  1. zenml/VERSION +1 -1
  2. zenml/artifact_stores/base_artifact_store.py +51 -23
  3. zenml/artifacts/utils.py +3 -1
  4. zenml/cli/pipeline.py +13 -2
  5. zenml/constants.py +4 -0
  6. zenml/container_registries/base_container_registry.py +17 -5
  7. zenml/enums.py +9 -0
  8. zenml/integrations/aws/flavors/sagemaker_orchestrator_flavor.py +150 -117
  9. zenml/integrations/aws/flavors/sagemaker_step_operator_flavor.py +43 -42
  10. zenml/integrations/aws/orchestrators/sagemaker_orchestrator.py +16 -7
  11. zenml/integrations/azure/orchestrators/azureml_orchestrator.py +18 -12
  12. zenml/integrations/bentoml/flavors/bentoml_model_deployer_flavor.py +7 -1
  13. zenml/integrations/databricks/flavors/databricks_orchestrator_flavor.py +58 -23
  14. zenml/integrations/feast/flavors/feast_feature_store_flavor.py +18 -5
  15. zenml/integrations/gcp/flavors/vertex_experiment_tracker_flavor.py +10 -42
  16. zenml/integrations/gcp/flavors/vertex_orchestrator_flavor.py +99 -92
  17. zenml/integrations/gcp/google_credentials_mixin.py +13 -8
  18. zenml/integrations/gcp/orchestrators/vertex_orchestrator.py +18 -9
  19. zenml/integrations/huggingface/__init__.py +1 -1
  20. zenml/integrations/hyperai/flavors/hyperai_orchestrator_flavor.py +28 -30
  21. zenml/integrations/kaniko/flavors/kaniko_image_builder_flavor.py +56 -40
  22. zenml/integrations/kubeflow/flavors/kubeflow_orchestrator_flavor.py +59 -48
  23. zenml/integrations/kubernetes/flavors/kubernetes_orchestrator_flavor.py +159 -121
  24. zenml/integrations/kubernetes/flavors/kubernetes_step_operator_flavor.py +48 -33
  25. zenml/integrations/kubernetes/orchestrators/kubernetes_orchestrator.py +182 -1
  26. zenml/integrations/kubernetes/orchestrators/kubernetes_orchestrator_entrypoint.py +7 -3
  27. zenml/integrations/lightning/flavors/lightning_orchestrator_flavor.py +41 -25
  28. zenml/integrations/mlflow/flavors/mlflow_experiment_tracker_flavor.py +51 -44
  29. zenml/integrations/mlflow/flavors/mlflow_model_deployer_flavor.py +9 -4
  30. zenml/integrations/neptune/flavors/neptune_experiment_tracker_flavor.py +13 -12
  31. zenml/integrations/s3/flavors/s3_artifact_store_flavor.py +32 -7
  32. zenml/integrations/vllm/flavors/vllm_model_deployer_flavor.py +7 -1
  33. zenml/integrations/wandb/flavors/wandb_experiment_tracker_flavor.py +34 -25
  34. zenml/integrations/whylogs/flavors/whylogs_data_validator_flavor.py +14 -11
  35. zenml/logging/step_logging.py +8 -7
  36. zenml/models/v2/core/logs.py +2 -1
  37. zenml/models/v2/core/pipeline_run.py +0 -59
  38. zenml/orchestrators/base_orchestrator.py +7 -1
  39. zenml/pipelines/build_utils.py +2 -1
  40. zenml/stack/authentication_mixin.py +6 -5
  41. zenml/stack/flavor.py +5 -1
  42. zenml/utils/code_utils.py +2 -1
  43. zenml/utils/docker_utils.py +22 -0
  44. zenml/utils/io_utils.py +18 -0
  45. zenml/utils/pipeline_docker_image_builder.py +4 -1
  46. zenml/utils/run_utils.py +101 -8
  47. zenml/zen_server/dashboard/assets/{404-B5eko6XL.js → 404-B5cfnwZ1.js} +1 -1
  48. zenml/zen_server/dashboard/assets/{@radix-Cdvw4jJ8.js → @radix-C_LirfyT.js} +1 -1
  49. zenml/zen_server/dashboard/assets/{@react-router-DeDfXbUF.js → @react-router-BSsrkPOd.js} +1 -1
  50. zenml/zen_server/dashboard/assets/{@reactflow-B_iCtR7X.js → @reactflow-D9hglKLF.js} +2 -2
  51. zenml/zen_server/dashboard/assets/{@tanstack-5gTMR7G2.js → @tanstack-C0SeHZng.js} +1 -1
  52. zenml/zen_server/dashboard/assets/AlertDialogDropdownItem-druRNuO2.js +1 -0
  53. zenml/zen_server/dashboard/assets/ButtonGroup-SF2DlzHV.js +1 -0
  54. zenml/zen_server/dashboard/assets/{CodeSnippet-Ctplhzdc.js → CodeSnippet-D8iBqOVv.js} +1 -1
  55. zenml/zen_server/dashboard/assets/CollapsibleCard-D0-pQi1n.js +1 -0
  56. zenml/zen_server/dashboard/assets/{ComponentBadge-Cnecw3qz.js → ComponentBadge-mw2Ja_ON.js} +1 -1
  57. zenml/zen_server/dashboard/assets/ComponentIcon-BXgpt-jw.js +1 -0
  58. zenml/zen_server/dashboard/assets/{DeleteAlertDialog-DEI0YDzP.js → DeleteAlertDialog-BbyFVnVI.js} +1 -1
  59. zenml/zen_server/dashboard/assets/DialogItem-DeME0oSt.js +1 -0
  60. zenml/zen_server/dashboard/assets/{DisplayDate-8RESqe5H.js → DisplayDate-v3KW7oez.js} +1 -1
  61. zenml/zen_server/dashboard/assets/{EmptyState-CjrgDtVk.js → EmptyState-DG0m-CGv.js} +1 -1
  62. zenml/zen_server/dashboard/assets/Error-DcVLcrLs.js +1 -0
  63. zenml/zen_server/dashboard/assets/ExecutionStatus-C4tlFnlh.js +1 -0
  64. zenml/zen_server/dashboard/assets/{Helpbox-DtUG2Bf_.js → Helpbox-C-RGHz3S.js} +1 -1
  65. zenml/zen_server/dashboard/assets/{Infobox-CSBRrM6r.js → Infobox-DFCWPbMb.js} +1 -1
  66. zenml/zen_server/dashboard/assets/{LeftSideMenu-DPsCCK3z.js → LeftSideMenu-Czev0KCA.js} +1 -1
  67. zenml/zen_server/dashboard/assets/{Lock-CrIAdQo6.js → Lock-CRP5J_su.js} +1 -1
  68. zenml/zen_server/dashboard/assets/NestedCollapsible-CN9scBUn.js +1 -0
  69. zenml/zen_server/dashboard/assets/{NumberBox-DtCv7jh3.js → NumberBox-CoQjQYDJ.js} +1 -1
  70. zenml/zen_server/dashboard/assets/{Pagination-CWnEpSpN.js → Pagination-CcDD5yHh.js} +1 -1
  71. zenml/zen_server/dashboard/assets/Partials-DlMzfKgs.js +1 -0
  72. zenml/zen_server/dashboard/assets/{PasswordChecker-B88WjuCe.js → PasswordChecker-BZwoeQIm.js} +1 -1
  73. zenml/zen_server/dashboard/assets/{ProCta-CNyp04C8.js → ProCta-CU2ycJDo.js} +1 -1
  74. zenml/zen_server/dashboard/assets/ProviderIcon-BMAn9Jld.js +1 -0
  75. zenml/zen_server/dashboard/assets/ProviderRadio-D_q9tE3G.js +1 -0
  76. zenml/zen_server/dashboard/assets/RunsBody-BToytB8e.js +1 -0
  77. zenml/zen_server/dashboard/assets/{SearchField-BtUi6cYl.js → SearchField-D_0-uAPj.js} +1 -1
  78. zenml/zen_server/dashboard/assets/SecretTooltip-BcWMKb9f.js +1 -0
  79. zenml/zen_server/dashboard/assets/{SetPassword-BmbgL_ed.js → SetPassword-CaKVSqAL.js} +1 -1
  80. zenml/zen_server/dashboard/assets/{SheetHeader-DkH7aG9K.js → SheetHeader-7vwlsY_i.js} +1 -1
  81. zenml/zen_server/dashboard/assets/StackComponentList-s7eSfm8o.js +1 -0
  82. zenml/zen_server/dashboard/assets/StackList-Dt0FrIkM.js +1 -0
  83. zenml/zen_server/dashboard/assets/Tabs-B27AHUfo.js +1 -0
  84. zenml/zen_server/dashboard/assets/Tick-DDeDgTuT.js +1 -0
  85. zenml/zen_server/dashboard/assets/{UpdatePasswordSchemas-D_DCETSO.js → UpdatePasswordSchemas-Da5RndbV.js} +1 -1
  86. zenml/zen_server/dashboard/assets/{Wizard-BHvY75u_.js → Wizard-8aJzxUjb.js} +1 -1
  87. zenml/zen_server/dashboard/assets/WizardFooter-Bt7_UE14.js +1 -0
  88. zenml/zen_server/dashboard/assets/{all-pipeline-runs-query-DpKw9WL9.js → all-pipeline-runs-query-gorNNEaT.js} +1 -1
  89. zenml/zen_server/dashboard/assets/{arrow-left-MRXv5pAH.js → arrow-left-hcj2H8HY.js} +1 -1
  90. zenml/zen_server/dashboard/assets/bar-chart-square-check-9siI9icm.js +1 -0
  91. zenml/zen_server/dashboard/assets/{bulk-delete-CzYA--cC.js → bulk-delete-B5RTlnD_.js} +1 -1
  92. zenml/zen_server/dashboard/assets/{check-B9QMTa3f.js → check-D1bHMJkL.js} +1 -1
  93. zenml/zen_server/dashboard/assets/{check-circle-C4tYvbtw.js → check-circle-mnEgPhPF.js} +1 -1
  94. zenml/zen_server/dashboard/assets/{chevron-down-jbbQh82s.js → chevron-down-Z3nUe-0U.js} +1 -1
  95. zenml/zen_server/dashboard/assets/{chevron-right-double-Dgp_gEsp.js → chevron-right-double-CbRQKN4Q.js} +1 -1
  96. zenml/zen_server/dashboard/assets/{clock-B_mTG8PH.js → clock-BMjHXT3f.js} +1 -1
  97. zenml/zen_server/dashboard/assets/{code-browser-CiD8qkBx.js → code-browser-DftoiCIg.js} +1 -1
  98. zenml/zen_server/dashboard/assets/configuration-form-Yz8m0QIG.js +1 -0
  99. zenml/zen_server/dashboard/assets/constants-DeV48DuZ.js +1 -0
  100. zenml/zen_server/dashboard/assets/{create-stack-BpZrmKDu.js → create-stack-BruqH_6X.js} +1 -1
  101. zenml/zen_server/dashboard/assets/credit-card-CH1BHrXY.js +1 -0
  102. zenml/zen_server/dashboard/assets/dataflow-2-qHjWt7zp.js +1 -0
  103. zenml/zen_server/dashboard/assets/{delete-run-BkyDsKQc.js → delete-run-ibBtciMR.js} +1 -1
  104. zenml/zen_server/dashboard/assets/{expand-full-BPiXpch2.js → expand-full-CD4fFvM-.js} +1 -1
  105. zenml/zen_server/dashboard/assets/{eye-CbVlAYty.js → eye-CLNgIh_K.js} +1 -1
  106. zenml/zen_server/dashboard/assets/{file-text-Cd8wVfq5.js → file-text-CltVhgwZ.js} +1 -1
  107. zenml/zen_server/dashboard/assets/form-6aSt3tIl.js +1 -0
  108. zenml/zen_server/dashboard/assets/form-schemas-B9XgTS1V.js +1 -0
  109. zenml/zen_server/dashboard/assets/gradient_bg-BH8t8fi6.webp +0 -0
  110. zenml/zen_server/dashboard/assets/{help-Co6aedki.js → help-B0CvBhCm.js} +1 -1
  111. zenml/zen_server/dashboard/assets/icon-hDriJUXY.js +1 -0
  112. zenml/zen_server/dashboard/assets/{index-eoDB_1XX.js → index-B7CRNU8l.js} +1 -1
  113. zenml/zen_server/dashboard/assets/index-BQWlHo1Y.js +1 -0
  114. zenml/zen_server/dashboard/assets/{index-DWpiv-Ft.js → index-BRhKF2z-.js} +1 -1
  115. zenml/zen_server/dashboard/assets/{index-BgEfQ3_G.js → index-BacoJBEQ.js} +11 -11
  116. zenml/zen_server/dashboard/assets/{index-BBt0LDtR.js → index-dCcVgFNl.js} +1 -1
  117. zenml/zen_server/dashboard/assets/index-eggipFZS.css +1 -0
  118. zenml/zen_server/dashboard/assets/index-mA8kL088.js +14 -0
  119. zenml/zen_server/dashboard/assets/{index.es-C1gfATPn.js → index.es-DcVFDpJU.js} +1 -1
  120. zenml/zen_server/dashboard/assets/{index.esm-DhJo3mA6.js → index.esm-COnaHLSh.js} +1 -1
  121. zenml/zen_server/dashboard/assets/{info-QkbQz4QU.js → info-CyMih3vQ.js} +1 -1
  122. zenml/zen_server/dashboard/assets/{key-icon-C07HKw8z.js → key-icon-HOx2gazv.js} +1 -1
  123. zenml/zen_server/dashboard/assets/{layout-DBbfEFBe.js → layout-C5dgIReC.js} +1 -1
  124. zenml/zen_server/dashboard/assets/layout-CFLL6-CM.js +1 -0
  125. zenml/zen_server/dashboard/assets/{login-mutation-C1hvP_cX.js → login-mutation-CidpsqyH.js} +1 -1
  126. zenml/zen_server/dashboard/assets/{logs-CQKlJjo0.js → logs-DoLoTEfj.js} +1 -1
  127. zenml/zen_server/dashboard/assets/mail-C160gvB0.js +1 -0
  128. zenml/zen_server/dashboard/assets/message-chat-square-DLz6XmPS.js +1 -0
  129. zenml/zen_server/dashboard/assets/{package-miExReQl.js → package-BhYXGPxF.js} +1 -1
  130. zenml/zen_server/dashboard/assets/page-6huxSHEu.js +1 -0
  131. zenml/zen_server/dashboard/assets/page-7CJ4Wq3O.js +1 -0
  132. zenml/zen_server/dashboard/assets/page-8U20Tu_8.js +1 -0
  133. zenml/zen_server/dashboard/assets/{page-4zc4xPv2.js → page-BByayrO-.js} +2 -2
  134. zenml/zen_server/dashboard/assets/page-BCRXJXC9.js +1 -0
  135. zenml/zen_server/dashboard/assets/page-BK59rZvf.js +1 -0
  136. zenml/zen_server/dashboard/assets/page-BMpXak4U.js +1 -0
  137. zenml/zen_server/dashboard/assets/page-BTDi81N3.js +1 -0
  138. zenml/zen_server/dashboard/assets/{page-D-tJ_Y0a.js → page-BX67x4iL.js} +1 -1
  139. zenml/zen_server/dashboard/assets/page-Bjmcdg64.js +1 -0
  140. zenml/zen_server/dashboard/assets/page-BsAn8p4m.js +1 -0
  141. zenml/zen_server/dashboard/assets/{page-C2i-C7jv.js → page-BwjPRuaY.js} +1 -1
  142. zenml/zen_server/dashboard/assets/page-CDtSVkNc.js +1 -0
  143. zenml/zen_server/dashboard/assets/page-CEDU0L2T.js +1 -0
  144. zenml/zen_server/dashboard/assets/page-COJK90rG.js +1 -0
  145. zenml/zen_server/dashboard/assets/page-CY0LPcAJ.js +1 -0
  146. zenml/zen_server/dashboard/assets/page-C_XMn4GU.js +1 -0
  147. zenml/zen_server/dashboard/assets/page-Cb3KGsPK.js +22 -0
  148. zenml/zen_server/dashboard/assets/page-Cc8owYXQ.js +1 -0
  149. zenml/zen_server/dashboard/assets/{page-C3JfJxuR.js → page-CeGBDh1Q.js} +1 -1
  150. zenml/zen_server/dashboard/assets/page-CiGOVsj3.js +1 -0
  151. zenml/zen_server/dashboard/assets/page-CmLSFMkW.js +1 -0
  152. zenml/zen_server/dashboard/assets/page-CnfCptXq.js +1 -0
  153. zenml/zen_server/dashboard/assets/page-CvllZMBF.js +1 -0
  154. zenml/zen_server/dashboard/assets/page-CxzglV3-.js +1 -0
  155. zenml/zen_server/dashboard/assets/{page-rVhXI5ZO.js → page-D6cvOG8w.js} +1 -1
  156. zenml/zen_server/dashboard/assets/{page-BxeZrG_t.js → page-DDWW21kl.js} +1 -1
  157. zenml/zen_server/dashboard/assets/{page-DiHZK-1w.js → page-DF4FVxxW.js} +2 -2
  158. zenml/zen_server/dashboard/assets/page-DSZfclXt.js +1 -0
  159. zenml/zen_server/dashboard/assets/page-DVLez4R1.js +1 -0
  160. zenml/zen_server/dashboard/assets/page-DcXrWWWh.js +1 -0
  161. zenml/zen_server/dashboard/assets/page-Dg7-H_9i.js +1 -0
  162. zenml/zen_server/dashboard/assets/{page-BPQ66vR-.js → page-DgldL5UB.js} +2 -2
  163. zenml/zen_server/dashboard/assets/page-Dw7XuiSo.js +18 -0
  164. zenml/zen_server/dashboard/assets/{page-DOCOmmKn.js → page-FQxi1Otg.js} +1 -1
  165. zenml/zen_server/dashboard/assets/page-XrmOHHg7.js +1 -0
  166. zenml/zen_server/dashboard/assets/page-YdWnx9MX.js +1 -0
  167. zenml/zen_server/dashboard/assets/page-oRm7D4TC.js +1 -0
  168. zenml/zen_server/dashboard/assets/{page-uxjMX8Iq.js → page-q41JNDWO.js} +1 -1
  169. zenml/zen_server/dashboard/assets/page-x2GXC8sI.js +1 -0
  170. zenml/zen_server/dashboard/assets/page-z2FXP4GY.js +1 -0
  171. zenml/zen_server/dashboard/assets/{persist-CFPbMcJX.js → persist-BKKcL1Kp.js} +1 -1
  172. zenml/zen_server/dashboard/assets/{persist-BsdEtCkd.js → persist-DxiyfAax.js} +1 -1
  173. zenml/zen_server/dashboard/assets/{pipeline-CSUlkd50.js → pipeline-BJ8liDnl.js} +1 -1
  174. zenml/zen_server/dashboard/assets/{plus-Cl0_rCVF.js → plus-cI8zD2xh.js} +1 -1
  175. zenml/zen_server/dashboard/assets/primary-role-CPGHymjN.js +1 -0
  176. zenml/zen_server/dashboard/assets/{react-error-boundary.esm-7_MuhCay.js → react-error-boundary.esm-DoXxY4pT.js} +1 -1
  177. zenml/zen_server/dashboard/assets/{refresh-BcTM09NW.js → refresh-3EF2R7ja.js} +1 -1
  178. zenml/zen_server/dashboard/assets/{resource-tyes-list-79FqS3LY.js → resource-tyes-list-B5rkZcbc.js} +1 -1
  179. zenml/zen_server/dashboard/assets/resource-type-tooltip-E97WGqfk.js +1 -0
  180. zenml/zen_server/dashboard/assets/service-B9aVzfAF.js +2 -0
  181. zenml/zen_server/dashboard/assets/service-connectors-DL2-k_E2.js +1 -0
  182. zenml/zen_server/dashboard/assets/{sharedSchema-C_HkejsG.js → sharedSchema-DyUO09BR.js} +1 -1
  183. zenml/zen_server/dashboard/assets/slash-circle-D2Lb2FyR.js +1 -0
  184. zenml/zen_server/dashboard/assets/stack-detail-query-Bc4QKlWg.js +1 -0
  185. zenml/zen_server/dashboard/assets/{terminal-XFL_4QN-.js → terminal-BObrvDlO.js} +1 -1
  186. zenml/zen_server/dashboard/assets/{terminal-square-XFL_4QN-.js → terminal-square-BObrvDlO.js} +1 -1
  187. zenml/zen_server/dashboard/assets/{transform-CeZdrxDZ.js → transform-DFpKTKgF.js} +1 -1
  188. zenml/zen_server/dashboard/assets/{trash-DP6Tpp_E.js → trash-HKxXWbSG.js} +1 -1
  189. zenml/zen_server/dashboard/assets/{update-current-user-mutation-Ca-Lmwuj.js → update-current-user-mutation-DSyUyHVj.js} +1 -1
  190. zenml/zen_server/dashboard/assets/update-server-settings-mutation-CdM-Sdds.js +1 -0
  191. zenml/zen_server/dashboard/assets/{zod-XdS2h1ws.js → zod-DgEcN9jD.js} +1 -1
  192. zenml/zen_server/dashboard/index.html +7 -7
  193. zenml/zen_server/deploy/daemon/daemon_zen_server.py +4 -0
  194. zenml/zen_server/deploy/docker/docker_zen_server.py +2 -0
  195. zenml/zen_server/routers/runs_endpoints.py +20 -28
  196. zenml/zen_stores/migrations/versions/0.84.0_release.py +23 -0
  197. zenml/zen_stores/sql_zen_store.py +9 -3
  198. {zenml_nightly-0.83.1.dev20250710.dist-info → zenml_nightly-0.84.0.dev20250712.dist-info}/METADATA +9 -22
  199. {zenml_nightly-0.83.1.dev20250710.dist-info → zenml_nightly-0.84.0.dev20250712.dist-info}/RECORD +202 -195
  200. zenml/zen_server/dashboard/assets/AlertDialogDropdownItem-DsOmO1FH.js +0 -1
  201. zenml/zen_server/dashboard/assets/ButtonGroup-4sPZDv70.js +0 -1
  202. zenml/zen_server/dashboard/assets/CollapsibleCard-CBKenz9f.js +0 -1
  203. zenml/zen_server/dashboard/assets/ComponentIcon-CMiVW-O6.js +0 -1
  204. zenml/zen_server/dashboard/assets/DialogItem-CRCDpYU6.js +0 -1
  205. zenml/zen_server/dashboard/assets/Error-BG6f_WRd.js +0 -1
  206. zenml/zen_server/dashboard/assets/ExecutionStatus-BuhNAE9w.js +0 -1
  207. zenml/zen_server/dashboard/assets/NestedCollapsible-CMuDIJlp.js +0 -1
  208. zenml/zen_server/dashboard/assets/Partials-CfHD6OH5.js +0 -1
  209. zenml/zen_server/dashboard/assets/ProviderIcon-DHejyg7C.js +0 -1
  210. zenml/zen_server/dashboard/assets/ProviderRadio-tGtie8Gc.js +0 -1
  211. zenml/zen_server/dashboard/assets/RunsBody-mYwMcWWj.js +0 -1
  212. zenml/zen_server/dashboard/assets/SecretTooltip-B5u1UsQ9.js +0 -1
  213. zenml/zen_server/dashboard/assets/StackComponentList-Bi8BKqCu.js +0 -1
  214. zenml/zen_server/dashboard/assets/StackList-Cvxapo0p.js +0 -1
  215. zenml/zen_server/dashboard/assets/StackName-CFSZL8ec.js +0 -1
  216. zenml/zen_server/dashboard/assets/Tabs-D4dv48ry.js +0 -1
  217. zenml/zen_server/dashboard/assets/Tick-Qquvr4P3.js +0 -1
  218. zenml/zen_server/dashboard/assets/UsageReason-DhiUV1bu.js +0 -1
  219. zenml/zen_server/dashboard/assets/WizardFooter-FQm8y-jP.js +0 -1
  220. zenml/zen_server/dashboard/assets/configuration-form-DSoMMiPE.js +0 -1
  221. zenml/zen_server/dashboard/assets/constants-DTfsIqHy.js +0 -1
  222. zenml/zen_server/dashboard/assets/flyte-Cj-xy_8I.svg +0 -10
  223. zenml/zen_server/dashboard/assets/form-BgtamtJm.js +0 -1
  224. zenml/zen_server/dashboard/assets/form-schemas-dyDkAxXP.js +0 -1
  225. zenml/zen_server/dashboard/assets/gcp-B1I3Qvcx.js +0 -1
  226. zenml/zen_server/dashboard/assets/index-BfNISy0X.css +0 -1
  227. zenml/zen_server/dashboard/assets/layout-o1x87a3q.js +0 -1
  228. zenml/zen_server/dashboard/assets/metaflow-weOkWNyT.svg +0 -10
  229. zenml/zen_server/dashboard/assets/page-4xUZpMN0.js +0 -31
  230. zenml/zen_server/dashboard/assets/page-B0104V6C.js +0 -1
  231. zenml/zen_server/dashboard/assets/page-BNJsjvof.js +0 -1
  232. zenml/zen_server/dashboard/assets/page-BQgSZ2nH.js +0 -1
  233. zenml/zen_server/dashboard/assets/page-BXl2ZX6J.js +0 -1
  234. zenml/zen_server/dashboard/assets/page-C2A-2Cj_.js +0 -1
  235. zenml/zen_server/dashboard/assets/page-CESEqC2L.js +0 -1
  236. zenml/zen_server/dashboard/assets/page-CF8cTZ7l.js +0 -1
  237. zenml/zen_server/dashboard/assets/page-CKjsimVu.js +0 -1
  238. zenml/zen_server/dashboard/assets/page-COLzBwff.js +0 -1
  239. zenml/zen_server/dashboard/assets/page-COifg5fa.js +0 -1
  240. zenml/zen_server/dashboard/assets/page-CQeJuA8T.js +0 -1
  241. zenml/zen_server/dashboard/assets/page-CcjWEjre.js +0 -1
  242. zenml/zen_server/dashboard/assets/page-CefGLeWy.js +0 -1
  243. zenml/zen_server/dashboard/assets/page-CfxpV3j4.js +0 -1
  244. zenml/zen_server/dashboard/assets/page-ClcUzawe.js +0 -1
  245. zenml/zen_server/dashboard/assets/page-Ct_LB3zo.js +0 -1
  246. zenml/zen_server/dashboard/assets/page-D-ZWUMYY.js +0 -1
  247. zenml/zen_server/dashboard/assets/page-DHrvih9u.js +0 -1
  248. zenml/zen_server/dashboard/assets/page-DMhaHZDw.js +0 -1
  249. zenml/zen_server/dashboard/assets/page-DcQmxKLp.js +0 -1
  250. zenml/zen_server/dashboard/assets/page-Dh4GRWw5.js +0 -1
  251. zenml/zen_server/dashboard/assets/page-Dn7ZNapg.js +0 -1
  252. zenml/zen_server/dashboard/assets/page-Dy4vSQY7.js +0 -1
  253. zenml/zen_server/dashboard/assets/page-QrvWQwZb.js +0 -1
  254. zenml/zen_server/dashboard/assets/page-RF3Fup0q.js +0 -40
  255. zenml/zen_server/dashboard/assets/page-WuvCrN47.js +0 -1
  256. zenml/zen_server/dashboard/assets/page-_WnHBI1F.js +0 -1
  257. zenml/zen_server/dashboard/assets/page-ghjVNgVE.js +0 -1
  258. zenml/zen_server/dashboard/assets/page-iDsDiDXw.js +0 -1
  259. zenml/zen_server/dashboard/assets/resource-type-tooltip-BL9ZTRKi.js +0 -1
  260. zenml/zen_server/dashboard/assets/service-connectors-Q8h7-_rG.js +0 -1
  261. zenml/zen_server/dashboard/assets/service-k-9Vsb30.js +0 -2
  262. zenml/zen_server/dashboard/assets/stack-detail-query-CNmVZ0Bo.js +0 -1
  263. zenml/zen_server/dashboard/assets/type-guards-CNgPYg8l.js +0 -1
  264. zenml/zen_server/dashboard/assets/update-server-settings-mutation-Bwe3gUt4.js +0 -1
  265. {zenml_nightly-0.83.1.dev20250710.dist-info → zenml_nightly-0.84.0.dev20250712.dist-info}/LICENSE +0 -0
  266. {zenml_nightly-0.83.1.dev20250710.dist-info → zenml_nightly-0.84.0.dev20250712.dist-info}/WHEEL +0 -0
  267. {zenml_nightly-0.83.1.dev20250710.dist-info → zenml_nightly-0.84.0.dev20250712.dist-info}/entry_points.txt +0 -0
@@ -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
- Attributes:
37
- main_studio_name: Main studio name.
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
- # Resources
54
- main_studio_name: Optional[str] = None
55
- machine_type: Optional[str] = None
56
- user_id: Optional[str] = SecretField(default=None)
57
- api_key: Optional[str] = SecretField(default=None)
58
- username: Optional[str] = None
59
- teamspace: Optional[str] = None
60
- organization: Optional[str] = None
61
- custom_commands: Optional[List[str]] = None
62
- synchronous: bool = True
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
- Attributes:
65
- experiment_name: The MLflow experiment name.
66
- nested: If `True`, will create a nested sub-run for the step.
67
- tags: Tags for the Mlflow run.
68
- """
69
-
70
- experiment_name: Optional[str] = None
71
- nested: bool = False
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] = None
106
- tracking_username: Optional[str] = SecretField(default=None)
107
- tracking_password: Optional[str] = SecretField(default=None)
108
- tracking_token: Optional[str] = SecretField(default=None)
109
- tracking_insecure_tls: bool = False
110
- databricks_host: Optional[str] = None
111
- enable_unity_catalog: bool = False
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
- Attributes:
32
- service_path: the path where the local MLflow deployment service
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] = None
50
- api_token: Optional[str] = SecretField(default=None)
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
- Attributes:
57
- tags: Tags for the Neptune run.
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(default=None)
68
- secret: Optional[str] = SecretField(default=None)
69
- token: Optional[str] = SecretField(default=None)
70
- client_kwargs: Optional[Dict[str, Any]] = None
71
- config_kwargs: Optional[Dict[str, Any]] = None
72
- s3_additional_kwargs: Optional[Dict[str, Any]] = None
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
- Attributes:
46
- run_name: The Wandb run name.
47
- tags: Tags for the Wandb run.
48
- settings: Settings for the Wandb run.
49
- enable_weave: Whether to enable Weave integration.
50
- """
51
-
52
- run_name: Optional[str] = None
53
- tags: List[str] = []
54
- settings: Dict[str, Any] = {}
55
- enable_weave: bool = False
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
- Attributes:
95
- entity: Name of an existing wandb entity.
96
- project_name: Name of an existing wandb project to log to.
97
- api_key: API key to should be authorized to log to the configured wandb
98
- entity and project.
99
- """
100
-
101
- api_key: str = SecretField()
102
- entity: Optional[str] = None
103
- project_name: Optional[str] = None
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
- Attributes:
34
- enable_whylabs: If set to `True` for a step, all the whylogs data
35
- profile views returned by the step will automatically be uploaded
36
- to the Whylabs platform if Whylabs credentials are configured.
37
- dataset_id: Dataset ID to use when uploading profiles to Whylabs.
38
- """
39
-
40
- enable_whylabs: bool = False
41
- dataset_id: Optional[str] = None
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(
@@ -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
- logs_uri_folder = os.path.join(logs_base_uri, log_key)
105
- if artifact_store.exists(logs_uri_folder):
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 {logs_uri_folder} already exists! Removing old log directory..."
108
+ f"Logs directory {logs_uri} already exists! Removing old log directory..."
108
109
  )
109
- artifact_store.rmtree(logs_uri_folder)
110
+ artifact_store.rmtree(logs_uri)
110
111
 
111
- artifact_store.makedirs(logs_uri_folder)
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
- return logs_uri
120
+
121
+ return sanitize_remote_path(logs_uri)
121
122
 
122
123
 
123
124
  def fetch_logs(
@@ -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
- source: str = Field(title="The source of the logs file")
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(self, run: "PipelineRunResponse") -> ExecutionStatus:
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
@@ -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
- Attributes:
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] = None
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):