zenml-nightly 0.82.1.dev20250527__py3-none-any.whl → 0.82.1.dev20250528__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 (306) hide show
  1. zenml/VERSION +1 -1
  2. zenml/cli/base.py +6 -1
  3. zenml/cli/model.py +16 -36
  4. zenml/cli/server.py +8 -3
  5. zenml/client.py +20 -4
  6. zenml/client_lazy_loader.py +2 -0
  7. zenml/config/docker_settings.py +15 -2
  8. zenml/enums.py +3 -0
  9. zenml/event_hub/event_hub.py +1 -1
  10. zenml/integrations/bitbucket/plugins/event_sources/bitbucket_webhook_event_source.py +1 -1
  11. zenml/integrations/github/plugins/event_sources/github_webhook_event_source.py +1 -1
  12. zenml/integrations/kubernetes/flavors/kubernetes_orchestrator_flavor.py +3 -0
  13. zenml/integrations/kubernetes/orchestrators/kubernetes_orchestrator_entrypoint.py +37 -26
  14. zenml/login/web_login.py +1 -1
  15. zenml/model/model.py +13 -23
  16. zenml/models/__init__.py +39 -2
  17. zenml/models/v2/base/scoped.py +34 -15
  18. zenml/models/v2/core/artifact.py +10 -9
  19. zenml/models/v2/core/artifact_version.py +16 -16
  20. zenml/models/v2/core/logs.py +8 -50
  21. zenml/models/v2/core/model.py +10 -10
  22. zenml/models/v2/core/model_version.py +155 -88
  23. zenml/models/v2/core/pipeline.py +10 -11
  24. zenml/models/v2/core/pipeline_deployment.py +1 -9
  25. zenml/models/v2/core/pipeline_run.py +10 -17
  26. zenml/models/v2/core/run_template.py +10 -10
  27. zenml/models/v2/core/step_run.py +100 -16
  28. zenml/models/v2/core/tag.py +5 -4
  29. zenml/models/v2/misc/pipeline_run_dag.py +46 -0
  30. zenml/orchestrators/base_orchestrator.py +8 -19
  31. zenml/orchestrators/cache_utils.py +48 -1
  32. zenml/orchestrators/input_utils.py +35 -39
  33. zenml/orchestrators/step_launcher.py +1 -1
  34. zenml/orchestrators/step_run_utils.py +26 -10
  35. zenml/pipelines/pipeline_definition.py +3 -3
  36. zenml/pipelines/run_utils.py +2 -3
  37. zenml/service_connectors/service_connector.py +5 -1
  38. zenml/stack/stack_component.py +1 -4
  39. zenml/steps/step_context.py +1 -1
  40. zenml/utils/dashboard_utils.py +3 -3
  41. zenml/zen_server/auth.py +6 -3
  42. zenml/zen_server/dashboard/assets/{404-_AtuLtaX.js → 404-DmJUgorp.js} +1 -1
  43. zenml/zen_server/dashboard/assets/{@radix-C7hRs6Kx.js → @radix-Cdvw4jJ8.js} +1 -1
  44. zenml/zen_server/dashboard/assets/{@react-router-CNP6g_RL.js → @react-router-DeDfXbUF.js} +5 -5
  45. zenml/zen_server/dashboard/assets/{@reactflow-CQi1Z1Wq.js → @reactflow-8OCk19Fi.js} +1 -1
  46. zenml/zen_server/dashboard/assets/{@tanstack-CSxjHCME.js → @tanstack-5gTMR7G2.js} +4 -4
  47. zenml/zen_server/dashboard/assets/AlertDialogDropdownItem-CZW4QyWn.js +1 -0
  48. zenml/zen_server/dashboard/assets/ButtonGroup-DFWWFGUE.js +1 -0
  49. zenml/zen_server/dashboard/assets/{CodeSnippet-CvI6D0wx.js → CodeSnippet-D2HkkAGr.js} +1 -1
  50. zenml/zen_server/dashboard/assets/CollapsibleCard-CnS09ljw.js +1 -0
  51. zenml/zen_server/dashboard/assets/{ComponentBadge-DKw7Gndh.js → ComponentBadge-CDgdd0Ks.js} +1 -1
  52. zenml/zen_server/dashboard/assets/ComponentIcon-CbbOc7lb.js +1 -0
  53. zenml/zen_server/dashboard/assets/{DeleteAlertDialog-DVvXt-S6.js → DeleteAlertDialog-VIOMDLmx.js} +1 -1
  54. zenml/zen_server/dashboard/assets/DialogItem-ClFCqxEp.js +1 -0
  55. zenml/zen_server/dashboard/assets/{DisplayDate-CYVBBSgr.js → DisplayDate-8RESqe5H.js} +1 -1
  56. zenml/zen_server/dashboard/assets/{EmptyState-M1jafpg6.js → EmptyState-CjrgDtVk.js} +1 -1
  57. zenml/zen_server/dashboard/assets/{Error-BWaXP0VK.js → Error-CQzjbDcN.js} +1 -1
  58. zenml/zen_server/dashboard/assets/ExecutionStatus-CWreILP0.js +1 -0
  59. zenml/zen_server/dashboard/assets/{Helpbox-iE1xLmiZ.js → Helpbox-CiKxG5_X.js} +1 -1
  60. zenml/zen_server/dashboard/assets/Infobox-CGxFvqzi.js +1 -0
  61. zenml/zen_server/dashboard/assets/LeftSideMenu-DCsKdIjC.js +1 -0
  62. zenml/zen_server/dashboard/assets/{Lock-DW-0_M0o.js → Lock-CrIAdQo6.js} +1 -1
  63. zenml/zen_server/dashboard/assets/NestedCollapsible-3M4llYtH.js +1 -0
  64. zenml/zen_server/dashboard/assets/NumberBox-C0mQktmV.js +1 -0
  65. zenml/zen_server/dashboard/assets/Partials-DSjkttlz.js +1 -0
  66. zenml/zen_server/dashboard/assets/{PasswordChecker-lYTOtNom.js → PasswordChecker-B88WjuCe.js} +1 -1
  67. zenml/zen_server/dashboard/assets/ProCta-Dm5cWKpS.js +1 -0
  68. zenml/zen_server/dashboard/assets/{ProviderIcon-DLo7t1lo.js → ProviderIcon-DPwMR6nF.js} +1 -1
  69. zenml/zen_server/dashboard/assets/ProviderRadio-DEDNRgAb.js +1 -0
  70. zenml/zen_server/dashboard/assets/RunsBody-BRBn1e2O.js +1 -0
  71. zenml/zen_server/dashboard/assets/SearchField-DY6-UbRT.js +1 -0
  72. zenml/zen_server/dashboard/assets/SecretTooltip-CZTRnaCV.js +1 -0
  73. zenml/zen_server/dashboard/assets/{SetPassword-DR-EiLI5.js → SetPassword-BjNGDC5e.js} +1 -1
  74. zenml/zen_server/dashboard/assets/SheetHeader-CASpN2Lz.js +1 -0
  75. zenml/zen_server/dashboard/assets/StackComponentList-Be1pQt9m.js +1 -0
  76. zenml/zen_server/dashboard/assets/StackList-BdiR5DvR.js +1 -0
  77. zenml/zen_server/dashboard/assets/StackName-ojLC6xdl.js +1 -0
  78. zenml/zen_server/dashboard/assets/Tabs-DNSKblCM.js +1 -0
  79. zenml/zen_server/dashboard/assets/Tick-BPrWnNlN.js +1 -0
  80. zenml/zen_server/dashboard/assets/{UpdatePasswordSchemas-DbFEaezI.js → UpdatePasswordSchemas-CNfKDo2Q.js} +1 -1
  81. zenml/zen_server/dashboard/assets/UsageReason-Cb-mpV8M.js +1 -0
  82. zenml/zen_server/dashboard/assets/{Wizard-CMI6Ksgz.js → Wizard-Dg8Pmn5A.js} +1 -1
  83. zenml/zen_server/dashboard/assets/WizardFooter-BcNDIvlQ.js +1 -0
  84. zenml/zen_server/dashboard/assets/{all-pipeline-runs-query-BGASHYtF.js → all-pipeline-runs-query-DCdax7I5.js} +1 -1
  85. zenml/zen_server/dashboard/assets/{arrow-left-CwgF2MEM.js → arrow-left-MRXv5pAH.js} +1 -1
  86. zenml/zen_server/dashboard/assets/bulk-delete-C_kpIB9A.js +3 -0
  87. zenml/zen_server/dashboard/assets/{check-DK77doTf.js → check-B9QMTa3f.js} +1 -1
  88. zenml/zen_server/dashboard/assets/{check-circle-mvyzYvIW.js → check-circle-C4tYvbtw.js} +1 -1
  89. zenml/zen_server/dashboard/assets/{chevron-down-A-rmltmI.js → chevron-down-jbbQh82s.js} +1 -1
  90. zenml/zen_server/dashboard/assets/{chevron-right-double-uNWbJT-C.js → chevron-right-double-Dgp_gEsp.js} +1 -1
  91. zenml/zen_server/dashboard/assets/{clock-CPA5cYxq.js → clock-B_mTG8PH.js} +1 -1
  92. zenml/zen_server/dashboard/assets/{code-browser-j2EpcxIA.js → code-browser-CiD8qkBx.js} +1 -1
  93. zenml/zen_server/dashboard/assets/configuration-form-B2hmKGnF.js +1 -0
  94. zenml/zen_server/dashboard/assets/connectivity-4UKGMYnr.webp +0 -0
  95. zenml/zen_server/dashboard/assets/constants-1EZZxtay.js +1 -0
  96. zenml/zen_server/dashboard/assets/create-stack-TKmMtrkQ.js +1 -0
  97. zenml/zen_server/dashboard/assets/dates-Buh6SMo7.js +1 -0
  98. zenml/zen_server/dashboard/assets/delete-run-CCR9md_s.js +1 -0
  99. zenml/zen_server/dashboard/assets/eye-CbVlAYty.js +1 -0
  100. zenml/zen_server/dashboard/assets/{file-text-BdxZdjP_.js → file-text-Cd8wVfq5.js} +1 -1
  101. zenml/zen_server/dashboard/assets/form-DFJkaFDX.js +1 -0
  102. zenml/zen_server/dashboard/assets/form-schemas-CrznJVzA.js +1 -0
  103. zenml/zen_server/dashboard/assets/{gcp-CHNvgEss.js → gcp-B1I3Qvcx.js} +1 -1
  104. zenml/zen_server/dashboard/assets/{help-DyMolRxD.js → help-Co6aedki.js} +1 -1
  105. zenml/zen_server/dashboard/assets/index-BFqbGSck.js +308 -0
  106. zenml/zen_server/dashboard/assets/{index-CrhdX_qG.js → index-BjUu1mP4.js} +1 -1
  107. zenml/zen_server/dashboard/assets/{index-DR30v9MZ.js → index-DWpiv-Ft.js} +1 -1
  108. zenml/zen_server/dashboard/assets/index-DuhuqTCI.css +1 -0
  109. zenml/zen_server/dashboard/assets/index-U992soPJ.js +1 -0
  110. zenml/zen_server/dashboard/assets/index.es-C1gfATPn.js +14 -0
  111. zenml/zen_server/dashboard/assets/{index.esm-D7jFlf5N.js → index.esm-DhJo3mA6.js} +1 -1
  112. zenml/zen_server/dashboard/assets/info-QkbQz4QU.js +1 -0
  113. zenml/zen_server/dashboard/assets/{key-icon-DO4DPJHZ.js → key-icon-C07HKw8z.js} +1 -1
  114. zenml/zen_server/dashboard/assets/{layout-h3cbx8WZ.js → layout-DBbfEFBe.js} +1 -1
  115. zenml/zen_server/dashboard/assets/layout-Do9YI4QX.js +1 -0
  116. zenml/zen_server/dashboard/assets/login-mutation-D3tFP6Wm.js +1 -0
  117. zenml/zen_server/dashboard/assets/{logs-B5n0U7tB.js → logs-CQKlJjo0.js} +1 -1
  118. zenml/zen_server/dashboard/assets/{package-D1Mhqeh8.js → package-miExReQl.js} +1 -1
  119. zenml/zen_server/dashboard/assets/page-9RjCitFH.js +1 -0
  120. zenml/zen_server/dashboard/assets/page-B0PsXWiT.js +1 -0
  121. zenml/zen_server/dashboard/assets/page-BCrKmYIZ.js +1 -0
  122. zenml/zen_server/dashboard/assets/page-BcRI3-aR.js +29 -0
  123. zenml/zen_server/dashboard/assets/page-Be3R2uYn.js +1 -0
  124. zenml/zen_server/dashboard/assets/page-BgknnddT.js +1 -0
  125. zenml/zen_server/dashboard/assets/page-BrT0_zSJ.js +40 -0
  126. zenml/zen_server/dashboard/assets/page-Bs3W2FDi.js +1 -0
  127. zenml/zen_server/dashboard/assets/page-C210HcBA.js +1 -0
  128. zenml/zen_server/dashboard/assets/page-C6KaiZ_W.js +1 -0
  129. zenml/zen_server/dashboard/assets/page-CAJ8B0vb.js +1 -0
  130. zenml/zen_server/dashboard/assets/page-CAUYrfui.js +1 -0
  131. zenml/zen_server/dashboard/assets/page-CHxVhF3x.js +1 -0
  132. zenml/zen_server/dashboard/assets/{page-CSwZxZMQ.js → page-CN7lkvXr.js} +1 -1
  133. zenml/zen_server/dashboard/assets/page-CUaMMoPG.js +1 -0
  134. zenml/zen_server/dashboard/assets/page-Cal6XQ4U.js +1 -0
  135. zenml/zen_server/dashboard/assets/page-CdZCmszX.js +1 -0
  136. zenml/zen_server/dashboard/assets/page-ChGcZI_6.js +1 -0
  137. zenml/zen_server/dashboard/assets/page-CktmtZ8Z.js +1 -0
  138. zenml/zen_server/dashboard/assets/page-ClvmVesa.js +1 -0
  139. zenml/zen_server/dashboard/assets/page-CnbIYE80.js +1 -0
  140. zenml/zen_server/dashboard/assets/page-CoXzjeEY.js +1 -0
  141. zenml/zen_server/dashboard/assets/page-CtiuMP_r.js +1 -0
  142. zenml/zen_server/dashboard/assets/page-D9Hfx6GV.js +1 -0
  143. zenml/zen_server/dashboard/assets/page-D9iuB88h.js +1 -0
  144. zenml/zen_server/dashboard/assets/page-DCcuPZ8P.js +1 -0
  145. zenml/zen_server/dashboard/assets/page-DEohTSz6.js +1 -0
  146. zenml/zen_server/dashboard/assets/page-DJIGaUQ9.js +1 -0
  147. zenml/zen_server/dashboard/assets/page-DKK6ulgy.js +1 -0
  148. zenml/zen_server/dashboard/assets/page-DNjKHjnH.js +1 -0
  149. zenml/zen_server/dashboard/assets/page-DUK0Nd_1.js +1 -0
  150. zenml/zen_server/dashboard/assets/page-DUKbOhaD.js +1 -0
  151. zenml/zen_server/dashboard/assets/page-DYOucPtA.js +1 -0
  152. zenml/zen_server/dashboard/assets/page-DpqRelAy.js +1 -0
  153. zenml/zen_server/dashboard/assets/{page-ZfTtFicG.js → page-DwVPpCFg.js} +2 -2
  154. zenml/zen_server/dashboard/assets/page-XURWnYZP.js +1 -0
  155. zenml/zen_server/dashboard/assets/page-abw-2oeW.js +1 -0
  156. zenml/zen_server/dashboard/assets/page-akLcPcKw.js +1 -0
  157. zenml/zen_server/dashboard/assets/page-n9ejQ2V3.js +2 -0
  158. zenml/zen_server/dashboard/assets/page-sJjNT9xA.js +6 -0
  159. zenml/zen_server/dashboard/assets/{persist-UUym702q.js → persist-DWMWVP-y.js} +1 -1
  160. zenml/zen_server/dashboard/assets/{persist-D87V82eO.js → persist-Dec_w7aB.js} +1 -1
  161. zenml/zen_server/dashboard/assets/pipeline-CSUlkd50.js +1 -0
  162. zenml/zen_server/dashboard/assets/{plus-COjQg3AG.js → plus-Cl0_rCVF.js} +1 -1
  163. zenml/zen_server/dashboard/assets/{react-error-boundary.esm-fyoUBS25.js → react-error-boundary.esm-7_MuhCay.js} +1 -1
  164. zenml/zen_server/dashboard/assets/{refresh-CM5T3QeU.js → refresh-BcTM09NW.js} +1 -1
  165. zenml/zen_server/dashboard/assets/resource-tyes-list-o2LXiMay.js +1 -0
  166. zenml/zen_server/dashboard/assets/resource-type-tooltip-DwHrJstL.js +1 -0
  167. zenml/zen_server/dashboard/assets/service-connectors-DSEMwJ5A.js +1 -0
  168. zenml/zen_server/dashboard/assets/{service-BQ9KIhls.js → service-jxtvgks0.js} +2 -2
  169. zenml/zen_server/dashboard/assets/sharedSchema-BXzg0EZz.js +1 -0
  170. zenml/zen_server/dashboard/assets/stack-detail-query-Cm0fsgo-.js +1 -0
  171. zenml/zen_server/dashboard/assets/{terminal-square-DMtel8mb.js → terminal-XFL_4QN-.js} +1 -1
  172. zenml/zen_server/dashboard/assets/terminal-square-XFL_4QN-.js +1 -0
  173. zenml/zen_server/dashboard/assets/transform-CeZdrxDZ.js +1 -0
  174. zenml/zen_server/dashboard/assets/{trash-BWSZ7NRK.js → trash-DP6Tpp_E.js} +1 -1
  175. zenml/zen_server/dashboard/assets/type-guards-CNgPYg8l.js +1 -0
  176. zenml/zen_server/dashboard/assets/update-current-user-mutation-D5MjcQ6F.js +1 -0
  177. zenml/zen_server/dashboard/assets/update-server-settings-mutation-CmnxdxiK.js +1 -0
  178. zenml/zen_server/dashboard/assets/{zod-C0xYeTvL.js → zod-XdS2h1ws.js} +1 -1
  179. zenml/zen_server/dashboard/index.html +7 -7
  180. zenml/zen_server/rbac/utils.py +2 -2
  181. zenml/zen_server/routers/auth_endpoints.py +2 -2
  182. zenml/zen_server/routers/devices_endpoints.py +8 -5
  183. zenml/zen_server/routers/pipeline_deployments_endpoints.py +1 -1
  184. zenml/zen_server/routers/pipelines_endpoints.py +1 -1
  185. zenml/zen_server/routers/run_templates_endpoints.py +3 -3
  186. zenml/zen_server/routers/runs_endpoints.py +35 -0
  187. zenml/zen_server/template_execution/utils.py +6 -6
  188. zenml/zen_stores/dag_generator.py +171 -0
  189. zenml/zen_stores/rest_zen_store.py +17 -3
  190. zenml/zen_stores/schemas/action_schemas.py +40 -4
  191. zenml/zen_stores/schemas/api_key_schemas.py +29 -1
  192. zenml/zen_stores/schemas/artifact_schemas.py +168 -48
  193. zenml/zen_stores/schemas/base_schemas.py +26 -1
  194. zenml/zen_stores/schemas/code_repository_schemas.py +46 -5
  195. zenml/zen_stores/schemas/component_schemas.py +44 -3
  196. zenml/zen_stores/schemas/device_schemas.py +43 -2
  197. zenml/zen_stores/schemas/event_source_schemas.py +41 -5
  198. zenml/zen_stores/schemas/flavor_schemas.py +42 -2
  199. zenml/zen_stores/schemas/model_schemas.py +113 -77
  200. zenml/zen_stores/schemas/pipeline_build_schemas.py +53 -4
  201. zenml/zen_stores/schemas/pipeline_deployment_schemas.py +53 -4
  202. zenml/zen_stores/schemas/pipeline_run_schemas.py +111 -47
  203. zenml/zen_stores/schemas/pipeline_schemas.py +41 -9
  204. zenml/zen_stores/schemas/run_template_schemas.py +75 -11
  205. zenml/zen_stores/schemas/schedule_schema.py +50 -5
  206. zenml/zen_stores/schemas/secret_schemas.py +39 -2
  207. zenml/zen_stores/schemas/service_connector_schemas.py +39 -2
  208. zenml/zen_stores/schemas/service_schemas.py +39 -4
  209. zenml/zen_stores/schemas/stack_schemas.py +47 -2
  210. zenml/zen_stores/schemas/step_run_schemas.py +89 -26
  211. zenml/zen_stores/schemas/tag_schemas.py +69 -5
  212. zenml/zen_stores/schemas/trigger_schemas.py +44 -5
  213. zenml/zen_stores/schemas/utils.py +25 -4
  214. zenml/zen_stores/sql_zen_store.py +471 -28
  215. zenml/zen_stores/zen_store_interface.py +9 -1
  216. {zenml_nightly-0.82.1.dev20250527.dist-info → zenml_nightly-0.82.1.dev20250528.dist-info}/METADATA +1 -1
  217. {zenml_nightly-0.82.1.dev20250527.dist-info → zenml_nightly-0.82.1.dev20250528.dist-info}/RECORD +220 -214
  218. zenml/zen_server/dashboard/assets/AlertDialogDropdownItem-BG7-Ki1L.js +0 -1
  219. zenml/zen_server/dashboard/assets/CollapsibleCard-D20FtrzC.js +0 -1
  220. zenml/zen_server/dashboard/assets/Commands-DGbAvMDk.js +0 -1
  221. zenml/zen_server/dashboard/assets/ComponentIcon-ils7uNAk.js +0 -1
  222. zenml/zen_server/dashboard/assets/CsvVizualization-DVN541XF.js +0 -15
  223. zenml/zen_server/dashboard/assets/DialogItem-BHWf3sIB.js +0 -1
  224. zenml/zen_server/dashboard/assets/ExecutionStatus-XrvT2r65.js +0 -1
  225. zenml/zen_server/dashboard/assets/Infobox-D9k5TFH4.js +0 -1
  226. zenml/zen_server/dashboard/assets/InlineAvatar-Cfz4WSLK.js +0 -1
  227. zenml/zen_server/dashboard/assets/MarkdownVisualization-URCyUPcZ.js +0 -14
  228. zenml/zen_server/dashboard/assets/NestedCollapsible-Dor-bi98.js +0 -1
  229. zenml/zen_server/dashboard/assets/NumberBox-D2A7ENHb.js +0 -1
  230. zenml/zen_server/dashboard/assets/Partials-DQJFw1yW.js +0 -1
  231. zenml/zen_server/dashboard/assets/ProBadge-Cp4hb1YT.js +0 -1
  232. zenml/zen_server/dashboard/assets/ProCta-EYoV9CvK.js +0 -1
  233. zenml/zen_server/dashboard/assets/ProviderRadio-BVDA-fAr.js +0 -1
  234. zenml/zen_server/dashboard/assets/RunSelector-BLuBYNJt.js +0 -1
  235. zenml/zen_server/dashboard/assets/RunsBody-W4WHf-sq.js +0 -1
  236. zenml/zen_server/dashboard/assets/SearchField-D-h6jXyg.js +0 -1
  237. zenml/zen_server/dashboard/assets/SecretTooltip-CePCL8kd.js +0 -1
  238. zenml/zen_server/dashboard/assets/StackList-CgmN5H-i.js +0 -1
  239. zenml/zen_server/dashboard/assets/Tabs-DxQ8PDOD.js +0 -1
  240. zenml/zen_server/dashboard/assets/Tick-CEsT3HPR.js +0 -1
  241. zenml/zen_server/dashboard/assets/UsageReason-DjI5qMje.js +0 -1
  242. zenml/zen_server/dashboard/assets/WizardFooter-CFBHFZas.js +0 -1
  243. zenml/zen_server/dashboard/assets/cloud-squares-DeRLMopf.svg +0 -43
  244. zenml/zen_server/dashboard/assets/configuration-form-BtI2Y4eX.js +0 -1
  245. zenml/zen_server/dashboard/assets/connectors-video-C9qY4syJ.svg +0 -21
  246. zenml/zen_server/dashboard/assets/constants-DP3ZEnXH.js +0 -1
  247. zenml/zen_server/dashboard/assets/create-stack-BJ6x5rzj.js +0 -1
  248. zenml/zen_server/dashboard/assets/dates-3pMLCNrD.js +0 -1
  249. zenml/zen_server/dashboard/assets/delete-run-DlSLEl5T.js +0 -1
  250. zenml/zen_server/dashboard/assets/docker-BuDBFEDL.js +0 -1
  251. zenml/zen_server/dashboard/assets/dots-horizontal-BGRJCPCs.js +0 -1
  252. zenml/zen_server/dashboard/assets/flavor-select-BnPxvQDN.js +0 -1
  253. zenml/zen_server/dashboard/assets/form-schemas-CbvoEUHr.js +0 -1
  254. zenml/zen_server/dashboard/assets/index-CFESYpe4.js +0 -1
  255. zenml/zen_server/dashboard/assets/index-CmLcvK2z.js +0 -1
  256. zenml/zen_server/dashboard/assets/index-CzX3ZYlI.css +0 -1
  257. zenml/zen_server/dashboard/assets/index-D2iSHVZq.js +0 -64
  258. zenml/zen_server/dashboard/assets/kubernetes-D6OUjwSK.js +0 -1
  259. zenml/zen_server/dashboard/assets/link-external-DUhCSKNm.js +0 -1
  260. zenml/zen_server/dashboard/assets/login-command-CkqxPtV3.js +0 -1
  261. zenml/zen_server/dashboard/assets/login-mutation-CXc-Klim.js +0 -1
  262. zenml/zen_server/dashboard/assets/not-found-olRU3fnu.js +0 -1
  263. zenml/zen_server/dashboard/assets/page-7keIM1V3.js +0 -1
  264. zenml/zen_server/dashboard/assets/page-B31neFwG.js +0 -1
  265. zenml/zen_server/dashboard/assets/page-B3zo4KYS.js +0 -1
  266. zenml/zen_server/dashboard/assets/page-BN3MHq1a.js +0 -1
  267. zenml/zen_server/dashboard/assets/page-BNgVExjN.js +0 -1
  268. zenml/zen_server/dashboard/assets/page-BPtvu74G.js +0 -1
  269. zenml/zen_server/dashboard/assets/page-BTIuG0ki.js +0 -2
  270. zenml/zen_server/dashboard/assets/page-BcQzleH6.js +0 -1
  271. zenml/zen_server/dashboard/assets/page-C05Jw4M2.js +0 -1
  272. zenml/zen_server/dashboard/assets/page-C28a7K8h.js +0 -1
  273. zenml/zen_server/dashboard/assets/page-C9WLk0X-.js +0 -1
  274. zenml/zen_server/dashboard/assets/page-CINMx64X.js +0 -1
  275. zenml/zen_server/dashboard/assets/page-CYrJbk7P.js +0 -1
  276. zenml/zen_server/dashboard/assets/page-Ce0cqLo3.js +0 -1
  277. zenml/zen_server/dashboard/assets/page-CgNsEkw-.js +0 -1
  278. zenml/zen_server/dashboard/assets/page-Ct2FUYuR.js +0 -1
  279. zenml/zen_server/dashboard/assets/page-D8G2B3Bu.js +0 -1
  280. zenml/zen_server/dashboard/assets/page-DL8a4_lg.js +0 -3
  281. zenml/zen_server/dashboard/assets/page-DMhYn1cF.js +0 -1
  282. zenml/zen_server/dashboard/assets/page-Dd_Yq-Uf.js +0 -6
  283. zenml/zen_server/dashboard/assets/page-DfSvqT8g.js +0 -1
  284. zenml/zen_server/dashboard/assets/page-Dt6ANUTx.js +0 -1
  285. zenml/zen_server/dashboard/assets/page-DtvTleaT.js +0 -1
  286. zenml/zen_server/dashboard/assets/page-DwfGTiVs.js +0 -1
  287. zenml/zen_server/dashboard/assets/page-JgomSTDc.js +0 -1
  288. zenml/zen_server/dashboard/assets/page-L84ig6HB.js +0 -1
  289. zenml/zen_server/dashboard/assets/page-Mabsn4QJ.js +0 -1
  290. zenml/zen_server/dashboard/assets/page-P04L5cm9.js +0 -1
  291. zenml/zen_server/dashboard/assets/page-PfhAnvq4.js +0 -1
  292. zenml/zen_server/dashboard/assets/page-WdRrlNt_.js +0 -1
  293. zenml/zen_server/dashboard/assets/page-cqJDDDeK.js +0 -1
  294. zenml/zen_server/dashboard/assets/page-k-Wxh9L_.js +0 -1
  295. zenml/zen_server/dashboard/assets/page-y-zV4n0c.js +0 -1
  296. zenml/zen_server/dashboard/assets/rocket-Cf-B-XOR.js +0 -1
  297. zenml/zen_server/dashboard/assets/settings_preview-0JLrRgHP.webp +0 -0
  298. zenml/zen_server/dashboard/assets/sharedSchema-Bse2agAf.js +0 -14
  299. zenml/zen_server/dashboard/assets/stack-detail-query-BAcZJrN3.js +0 -1
  300. zenml/zen_server/dashboard/assets/tick-circle-m94Aa6Zt.js +0 -1
  301. zenml/zen_server/dashboard/assets/tour-cover-BYfeen6M.webp +0 -0
  302. zenml/zen_server/dashboard/assets/type-guards-CaeD8wHO.js +0 -1
  303. zenml/zen_server/dashboard/assets/update-server-settings-mutation-DwMM1LJz.js +0 -1
  304. {zenml_nightly-0.82.1.dev20250527.dist-info → zenml_nightly-0.82.1.dev20250528.dist-info}/LICENSE +0 -0
  305. {zenml_nightly-0.82.1.dev20250527.dist-info → zenml_nightly-0.82.1.dev20250528.dist-info}/WHEEL +0 -0
  306. {zenml_nightly-0.82.1.dev20250527.dist-info → zenml_nightly-0.82.1.dev20250528.dist-info}/entry_points.txt +0 -0
zenml/VERSION CHANGED
@@ -1 +1 @@
1
- 0.82.1.dev20250527
1
+ 0.82.1.dev20250528
zenml/cli/base.py CHANGED
@@ -610,6 +610,11 @@ def info(
610
610
 
611
611
  store_cfg = gc.store_configuration
612
612
 
613
+ try:
614
+ active_project = client.active_project
615
+ except RuntimeError:
616
+ active_project = None
617
+
613
618
  user_info = {
614
619
  "zenml_local_version": zenml_version,
615
620
  "zenml_server_version": store_info.version,
@@ -622,7 +627,7 @@ def info(
622
627
  "python_version": environment.python_version(),
623
628
  "environment": get_environment(),
624
629
  "system_info": environment.get_system_info(),
625
- "active_project": client.active_project.name,
630
+ "active_project": active_project.name if active_project else None,
626
631
  "active_stack": client.active_stack_model.name,
627
632
  "active_user": client.active_user.name,
628
633
  "telemetry_status": "enabled" if gc.analytics_opt_in else "disabled",
zenml/cli/model.py CHANGED
@@ -68,12 +68,6 @@ def _model_version_to_print(
68
68
  "stage": model_version.stage,
69
69
  "run_metadata": model_version.run_metadata,
70
70
  "tags": [t.name for t in model_version.tags],
71
- "data_artifacts_count": len(model_version.data_artifact_ids),
72
- "model_artifacts_count": len(model_version.model_artifact_ids),
73
- "deployment_artifacts_count": len(
74
- model_version.deployment_artifact_ids
75
- ),
76
- "pipeline_runs_count": len(model_version.pipeline_run_ids),
77
71
  "updated": model_version.updated.date(),
78
72
  }
79
73
 
@@ -601,21 +595,6 @@ def _print_artifacts_links_generic(
601
595
  else "model artifacts"
602
596
  )
603
597
 
604
- if (
605
- (only_data_artifacts and not model_version.data_artifact_ids)
606
- or (
607
- only_deployment_artifacts
608
- and not model_version.deployment_artifact_ids
609
- )
610
- or (only_model_artifacts and not model_version.model_artifact_ids)
611
- ):
612
- cli_utils.declare(f"No {type_} linked to the model version found.")
613
- return
614
-
615
- cli_utils.title(
616
- f"{type_} linked to the model version `{model_version.name}[{model_version.number}]`:"
617
- )
618
-
619
598
  links = Client().list_model_version_artifact_links(
620
599
  model_version_id=model_version.id,
621
600
  only_data_artifacts=only_data_artifacts,
@@ -624,6 +603,13 @@ def _print_artifacts_links_generic(
624
603
  **kwargs,
625
604
  )
626
605
 
606
+ if not links:
607
+ cli_utils.declare(f"No {type_} linked to the model version found.")
608
+ return
609
+
610
+ cli_utils.title(
611
+ f"{type_} linked to the model version `{model_version.name}[{model_version.number}]`:"
612
+ )
627
613
  cli_utils.print_pydantic_models(
628
614
  links,
629
615
  columns=["artifact_version", "created"],
@@ -732,29 +718,23 @@ def list_model_version_pipeline_runs(
732
718
  model_name: The ID or name of the model containing version.
733
719
  model_version: The name, number or ID of the model version. If not
734
720
  provided, the latest version is used.
735
- **kwargs: Keyword arguments to filter models.
721
+ **kwargs: Keyword arguments to filter runs.
736
722
  """
737
723
  model_version_response_model = Client().get_model_version(
738
724
  model_name_or_id=model_name,
739
725
  model_version_name_or_number_or_id=model_version,
740
726
  )
741
727
 
742
- if not model_version_response_model.pipeline_run_ids:
743
- cli_utils.declare("No pipeline runs attached to model version found.")
744
- return
745
- cli_utils.title(
746
- f"Pipeline runs linked to the model version `{model_version_response_model.name}[{model_version_response_model.number}]`:"
747
- )
748
-
749
- links = Client().list_model_version_pipeline_run_links(
728
+ runs = Client().list_model_version_pipeline_run_links(
750
729
  model_version_id=model_version_response_model.id,
751
730
  **kwargs,
752
731
  )
753
732
 
754
- cli_utils.print_pydantic_models(
755
- links,
756
- columns=[
757
- "pipeline_run",
758
- "created",
759
- ],
733
+ if not runs:
734
+ cli_utils.declare("No pipeline runs attached to model version found.")
735
+ return
736
+
737
+ cli_utils.title(
738
+ f"Pipeline runs linked to the model version `{model_version_response_model.name}[{model_version_response_model.number}]`:"
760
739
  )
740
+ cli_utils.print_pydantic_models(runs)
zenml/cli/server.py CHANGED
@@ -268,9 +268,14 @@ def status() -> None:
268
268
  # Write about the active entities
269
269
  scope = "repository" if client.uses_local_configuration else "global"
270
270
  cli_utils.declare(f" The active user is: '{client.active_user.name}'")
271
- cli_utils.declare(
272
- f" The active project is: '{client.active_project.name}'"
273
- )
271
+
272
+ try:
273
+ cli_utils.declare(
274
+ f" The active project is: '{client.active_project.name}' ({scope})"
275
+ )
276
+ except RuntimeError:
277
+ cli_utils.declare(" No active project set.")
278
+
274
279
  cli_utils.declare(
275
280
  f" The active stack is: '{client.active_stack_model.name}' ({scope})"
276
281
  )
zenml/client.py CHANGED
@@ -2573,7 +2573,7 @@ class Client(metaclass=ClientMetaClass):
2573
2573
  self.list_run_templates,
2574
2574
  pipeline_id=pipeline.id,
2575
2575
  stack_id=stack.id if stack else None,
2576
- project=project or pipeline.project.id,
2576
+ project=project or pipeline.project_id,
2577
2577
  )
2578
2578
 
2579
2579
  for template in templates:
@@ -3855,6 +3855,7 @@ class Client(metaclass=ClientMetaClass):
3855
3855
  allow_name_prefix_match: bool = True,
3856
3856
  project: Optional[Union[str, UUID]] = None,
3857
3857
  hydrate: bool = True,
3858
+ include_full_metadata: bool = False,
3858
3859
  ) -> PipelineRunResponse:
3859
3860
  """Gets a pipeline run by name, ID, or prefix.
3860
3861
 
@@ -3864,6 +3865,8 @@ class Client(metaclass=ClientMetaClass):
3864
3865
  project: The project name/ID to filter by.
3865
3866
  hydrate: Flag deciding whether to hydrate the output model(s)
3866
3867
  by including metadata fields in the response.
3868
+ include_full_metadata: If True, include metadata of all steps in
3869
+ the response.
3867
3870
 
3868
3871
  Returns:
3869
3872
  The pipeline run.
@@ -3875,6 +3878,7 @@ class Client(metaclass=ClientMetaClass):
3875
3878
  allow_name_prefix_match=allow_name_prefix_match,
3876
3879
  project=project,
3877
3880
  hydrate=hydrate,
3881
+ include_full_metadata=include_full_metadata,
3878
3882
  )
3879
3883
 
3880
3884
  def list_pipeline_runs(
@@ -3913,6 +3917,7 @@ class Client(metaclass=ClientMetaClass):
3913
3917
  stack: Optional[Union[UUID, str]] = None,
3914
3918
  stack_component: Optional[Union[UUID, str]] = None,
3915
3919
  hydrate: bool = False,
3920
+ include_full_metadata: bool = False,
3916
3921
  ) -> Page[PipelineRunResponse]:
3917
3922
  """List all pipeline runs.
3918
3923
 
@@ -3953,6 +3958,8 @@ class Client(metaclass=ClientMetaClass):
3953
3958
  stack_component: Filter by stack component name/ID.
3954
3959
  hydrate: Flag deciding whether to hydrate the output model(s)
3955
3960
  by including metadata fields in the response.
3961
+ include_full_metadata: If True, include metadata of all steps in
3962
+ the response.
3956
3963
 
3957
3964
  Returns:
3958
3965
  A page with Pipeline Runs fitting the filter description
@@ -3995,6 +4002,7 @@ class Client(metaclass=ClientMetaClass):
3995
4002
  return self.zen_store.list_runs(
3996
4003
  runs_filter_model=runs_filter_model,
3997
4004
  hydrate=hydrate,
4005
+ include_full_metadata=include_full_metadata,
3998
4006
  )
3999
4007
 
4000
4008
  def delete_pipeline_run(
@@ -6368,7 +6376,7 @@ class Client(metaclass=ClientMetaClass):
6368
6376
  model_version=ModelVersionRequest(
6369
6377
  name=name,
6370
6378
  description=description,
6371
- project=model.project.id,
6379
+ project=model.project_id,
6372
6380
  model=model.id,
6373
6381
  tags=tags,
6374
6382
  )
@@ -6623,7 +6631,7 @@ class Client(metaclass=ClientMetaClass):
6623
6631
  if not is_valid_uuid(model_name_or_id):
6624
6632
  model = self.get_model(model_name_or_id, project=project)
6625
6633
  model_name_or_id = model.id
6626
- project = project or model.project.id
6634
+ project = project or model.project_id
6627
6635
  if not is_valid_uuid(version_name_or_id):
6628
6636
  version_name_or_id = self.get_model_version(
6629
6637
  model_name_or_id, version_name_or_id, project=project
@@ -7032,6 +7040,7 @@ class Client(metaclass=ClientMetaClass):
7032
7040
  allow_name_prefix_match: bool = True,
7033
7041
  project: Optional[Union[str, UUID]] = None,
7034
7042
  hydrate: bool = True,
7043
+ **kwargs: Any,
7035
7044
  ) -> AnyResponse:
7036
7045
  """Fetches an entity using the id, name, or partial id/name.
7037
7046
 
@@ -7044,6 +7053,8 @@ class Client(metaclass=ClientMetaClass):
7044
7053
  hydrate: Flag deciding whether to hydrate the output model(s)
7045
7054
  by including metadata fields in the response.
7046
7055
  project: The project name/ID to filter by.
7056
+ **kwargs: Additional keyword arguments to pass to the get and list
7057
+ methods.
7047
7058
 
7048
7059
  Returns:
7049
7060
  The entity with the given name, id or partial id.
@@ -7058,13 +7069,14 @@ class Client(metaclass=ClientMetaClass):
7058
7069
 
7059
7070
  # First interpret as full UUID
7060
7071
  if is_valid_uuid(name_id_or_prefix):
7061
- return get_method(name_id_or_prefix, hydrate=hydrate)
7072
+ return get_method(name_id_or_prefix, hydrate=hydrate, **kwargs)
7062
7073
 
7063
7074
  # If not a UUID, try to find by name
7064
7075
  assert not isinstance(name_id_or_prefix, UUID)
7065
7076
  list_kwargs: Dict[str, Any] = dict(
7066
7077
  name=f"equals:{name_id_or_prefix}",
7067
7078
  hydrate=hydrate,
7079
+ **kwargs,
7068
7080
  )
7069
7081
  scope = ""
7070
7082
  if project:
@@ -7182,6 +7194,7 @@ class Client(metaclass=ClientMetaClass):
7182
7194
  allow_name_prefix_match: bool,
7183
7195
  project: Optional[Union[str, UUID]] = None,
7184
7196
  hydrate: bool = True,
7197
+ **kwargs: Any,
7185
7198
  ) -> AnyResponse:
7186
7199
  """Fetches an entity using a partial ID or name.
7187
7200
 
@@ -7193,6 +7206,8 @@ class Client(metaclass=ClientMetaClass):
7193
7206
  hydrate: Flag deciding whether to hydrate the output model(s)
7194
7207
  by including metadata fields in the response.
7195
7208
  project: The project name/ID to filter by.
7209
+ **kwargs: Additional keyword arguments to pass to the get and list
7210
+ methods.
7196
7211
 
7197
7212
  Returns:
7198
7213
  The entity with the given partial ID or name.
@@ -7206,6 +7221,7 @@ class Client(metaclass=ClientMetaClass):
7206
7221
  "logical_operator": LogicalOperators.OR,
7207
7222
  "id": f"startswith:{partial_id_or_name}",
7208
7223
  "hydrate": hydrate,
7224
+ **kwargs,
7209
7225
  }
7210
7226
  if allow_name_prefix_match:
7211
7227
  list_method_args["name"] = f"startswith:{partial_id_or_name}"
@@ -14,6 +14,7 @@
14
14
  """Lazy loading functionality for Client methods."""
15
15
 
16
16
  import contextlib
17
+ import functools
17
18
  from typing import TYPE_CHECKING, Any, Callable, Dict, List, Optional, Type
18
19
 
19
20
  from pydantic import BaseModel, Field
@@ -188,6 +189,7 @@ def evaluate_all_lazy_load_args_in_client_methods(
188
189
  def _evaluate_args(
189
190
  func: Callable[..., Any], is_instance_method: bool
190
191
  ) -> Any:
192
+ @functools.wraps(func)
191
193
  def _inner(*args: Any, **kwargs: Any) -> Any:
192
194
  args_ = list(args)
193
195
  if not is_instance_method:
@@ -72,6 +72,9 @@ class DockerBuildConfig(BaseModel):
72
72
  dockerignore: Optional[str] = None
73
73
 
74
74
 
75
+ _docker_settings_warnings_logged = []
76
+
77
+
75
78
  class DockerSettings(BaseSettings):
76
79
  """Settings for building Docker images to run ZenML pipelines.
77
80
 
@@ -372,6 +375,9 @@ class DockerSettings(BaseSettings):
372
375
  if isinstance(
373
376
  self.replicate_local_python_environment,
374
377
  (str, list, PythonEnvironmentExportMethod),
378
+ ) and (
379
+ "replicate_local_python_environment"
380
+ not in _docker_settings_warnings_logged
375
381
  ):
376
382
  logger.warning(
377
383
  "Specifying a command (`%s`) for "
@@ -383,7 +389,9 @@ class DockerSettings(BaseSettings):
383
389
  "file, use `DockerSettings.pyproject_path` and "
384
390
  "`DockerSettings.pyproject_export_command` instead."
385
391
  )
386
-
392
+ _docker_settings_warnings_logged.append(
393
+ "replicate_local_python_environment"
394
+ )
387
395
  return self
388
396
 
389
397
  @model_validator(mode="before")
@@ -400,7 +408,11 @@ class DockerSettings(BaseSettings):
400
408
  Returns:
401
409
  The validated settings values.
402
410
  """
403
- if "python_package_installer" not in data:
411
+ if (
412
+ "python_package_installer" not in data
413
+ and "python_package_installer"
414
+ not in _docker_settings_warnings_logged
415
+ ):
404
416
  logger.warning(
405
417
  "In a future release, the default Python package installer "
406
418
  "used by ZenML to build container images for your "
@@ -409,6 +421,7 @@ class DockerSettings(BaseSettings):
409
421
  "`python_package_installer=PythonPackageInstaller.PIP` "
410
422
  "in your DockerSettings."
411
423
  )
424
+ _docker_settings_warnings_logged.append("python_package_installer")
412
425
  return data
413
426
 
414
427
  model_config = ConfigDict(
zenml/enums.py CHANGED
@@ -408,6 +408,8 @@ class OnboardingStep(StrEnum):
408
408
  DEVICE_VERIFIED = "device_verified"
409
409
  PROJECT_CREATED = "project_created"
410
410
  PIPELINE_RUN = "pipeline_run"
411
+ SECOND_PIPELINE_RUN = "second_pipeline_run"
412
+ THIRD_PIPELINE_RUN = "third_pipeline_run"
411
413
  STARTER_SETUP_COMPLETED = "starter_setup_completed"
412
414
  STACK_WITH_REMOTE_ORCHESTRATOR_CREATED = (
413
415
  "stack_with_remote_orchestrator_created"
@@ -422,6 +424,7 @@ class OnboardingStep(StrEnum):
422
424
  "pipeline_run_with_remote_artifact_store"
423
425
  )
424
426
  PRODUCTION_SETUP_COMPLETED = "production_setup_completed"
427
+ PRO_ONBOARDING_COMPLETED = "pro_onboarding_completed"
425
428
 
426
429
 
427
430
  class StackDeploymentProvider(StrEnum):
@@ -126,7 +126,7 @@ class InternalEventHub(BaseEventHub):
126
126
  triggers: List[TriggerResponse] = depaginate(
127
127
  self.zen_store.list_triggers,
128
128
  trigger_filter_model=TriggerFilter(
129
- project=event_source.project.id,
129
+ project=event_source.project_id,
130
130
  event_source_id=event_source.id,
131
131
  is_active=True,
132
132
  ),
@@ -326,7 +326,7 @@ class BitbucketWebhookEventSourceHandler(BaseWebhookEventSourceHandler):
326
326
  config: Event source configuration instantiated from the response.
327
327
  """
328
328
  assert isinstance(config, BitbucketWebhookEventSourceConfiguration)
329
- assert event_source.user is not None, (
329
+ assert event_source.user_id is not None, (
330
330
  "User is not set for event source"
331
331
  )
332
332
 
@@ -352,7 +352,7 @@ class GithubWebhookEventSourceHandler(BaseWebhookEventSourceHandler):
352
352
  config: Event source configuration instantiated from the response.
353
353
  """
354
354
  assert isinstance(config, GithubWebhookEventSourceConfiguration)
355
- assert event_source.user is not None, (
355
+ assert event_source.user_id is not None, (
356
356
  "User is not set for event source"
357
357
  )
358
358
 
@@ -67,6 +67,8 @@ class KubernetesOrchestratorSettings(BaseSettings):
67
67
  ttl_seconds_after_finished: The amount of seconds to keep finished jobs
68
68
  before deleting them. This only applies to jobs created when
69
69
  scheduling a pipeline.
70
+ prevent_orchestrator_pod_caching: If `True`, the orchestrator pod will
71
+ not try to compute cached steps before starting the step pods.
70
72
  """
71
73
 
72
74
  synchronous: bool = True
@@ -85,6 +87,7 @@ class KubernetesOrchestratorSettings(BaseSettings):
85
87
  successful_jobs_history_limit: Optional[NonNegativeInt] = None
86
88
  failed_jobs_history_limit: Optional[NonNegativeInt] = None
87
89
  ttl_seconds_after_finished: Optional[NonNegativeInt] = None
90
+ prevent_orchestrator_pod_caching: bool = False
88
91
 
89
92
 
90
93
  class KubernetesOrchestratorConfig(
@@ -74,23 +74,37 @@ def main() -> None:
74
74
  orchestrator_pod_name = socket.gethostname()
75
75
 
76
76
  client = Client()
77
+ active_stack = client.active_stack
78
+ orchestrator = active_stack.orchestrator
79
+ assert isinstance(orchestrator, KubernetesOrchestrator)
77
80
 
78
- deployment_config = client.get_deployment(args.deployment_id)
81
+ deployment = client.get_deployment(args.deployment_id)
82
+ pipeline_settings = cast(
83
+ KubernetesOrchestratorSettings,
84
+ orchestrator.get_settings(deployment),
85
+ )
79
86
 
80
- pipeline_dag = {
81
- step_name: step.spec.upstream_steps
82
- for step_name, step in deployment_config.step_configurations.items()
83
- }
84
87
  step_command = StepEntrypointConfiguration.get_entrypoint_command()
85
88
 
86
- active_stack = client.active_stack
89
+ if args.run_id and not pipeline_settings.prevent_orchestrator_pod_caching:
90
+ from zenml.orchestrators import cache_utils
91
+
92
+ run_required = (
93
+ cache_utils.create_cached_step_runs_and_prune_deployment(
94
+ deployment=deployment,
95
+ pipeline_run=client.get_pipeline_run(args.run_id),
96
+ stack=active_stack,
97
+ )
98
+ )
99
+
100
+ if not run_required:
101
+ return
102
+
87
103
  mount_local_stores = active_stack.orchestrator.config.is_local
88
104
 
89
105
  # Get a Kubernetes client from the active Kubernetes orchestrator, but
90
106
  # override the `incluster` setting to `True` since we are running inside
91
107
  # the Kubernetes cluster.
92
- orchestrator = active_stack.orchestrator
93
- assert isinstance(orchestrator, KubernetesOrchestrator)
94
108
  kube_client = orchestrator.get_kube_client(incluster=True)
95
109
  core_api = k8s_client.CoreV1Api(kube_client)
96
110
 
@@ -121,7 +135,7 @@ def main() -> None:
121
135
  Raises:
122
136
  Exception: If the pod fails to start.
123
137
  """
124
- step_config = deployment_config.step_configurations[step_name].config
138
+ step_config = deployment.step_configurations[step_name].config
125
139
  settings = step_config.settings.get("orchestrator.kubernetes", None)
126
140
  settings = KubernetesOrchestratorSettings.model_validate(
127
141
  settings.model_dump() if settings else {}
@@ -147,10 +161,10 @@ def main() -> None:
147
161
  )
148
162
 
149
163
  image = KubernetesOrchestrator.get_image(
150
- deployment=deployment_config, step_name=step_name
164
+ deployment=deployment, step_name=step_name
151
165
  )
152
166
  step_args = StepEntrypointConfiguration.get_entrypoint_arguments(
153
- step_name=step_name, deployment_id=deployment_config.id
167
+ step_name=step_name, deployment_id=deployment.id
154
168
  )
155
169
 
156
170
  # We set some default minimum memory resource requests for the step pod
@@ -165,9 +179,7 @@ def main() -> None:
165
179
 
166
180
  if orchestrator.config.pass_zenml_token_as_secret:
167
181
  env.pop("ZENML_STORE_API_TOKEN", None)
168
- secret_name = orchestrator.get_token_secret_name(
169
- deployment_config.id
170
- )
182
+ secret_name = orchestrator.get_token_secret_name(deployment.id)
171
183
  pod_settings.env.append(
172
184
  {
173
185
  "name": "ZENML_STORE_API_TOKEN",
@@ -184,7 +196,7 @@ def main() -> None:
184
196
  pod_manifest = build_pod_manifest(
185
197
  pod_name=pod_name,
186
198
  run_name=args.run_name,
187
- pipeline_name=deployment_config.pipeline_configuration.name,
199
+ pipeline_name=deployment.pipeline_configuration.name,
188
200
  image_name=image,
189
201
  command=step_command,
190
202
  args=step_args,
@@ -251,8 +263,8 @@ def main() -> None:
251
263
 
252
264
  pipeline_runs = client.list_pipeline_runs(
253
265
  hydrate=True,
254
- project=deployment_config.project.id,
255
- deployment_id=deployment_config.id,
266
+ project=deployment.project_id,
267
+ deployment_id=deployment.id,
256
268
  **list_args,
257
269
  )
258
270
  if not len(pipeline_runs):
@@ -298,27 +310,26 @@ def main() -> None:
298
310
  parallel_node_startup_waiting_period = (
299
311
  orchestrator.config.parallel_step_startup_waiting_period or 0.0
300
312
  )
301
- settings = cast(
302
- KubernetesOrchestratorSettings,
303
- orchestrator.get_settings(deployment_config),
304
- )
313
+
314
+ pipeline_dag = {
315
+ step_name: step.spec.upstream_steps
316
+ for step_name, step in deployment.step_configurations.items()
317
+ }
305
318
  try:
306
319
  ThreadedDagRunner(
307
320
  dag=pipeline_dag,
308
321
  run_fn=run_step_on_kubernetes,
309
322
  finalize_fn=finalize_run,
310
323
  parallel_node_startup_waiting_period=parallel_node_startup_waiting_period,
311
- max_parallelism=settings.max_parallelism,
324
+ max_parallelism=pipeline_settings.max_parallelism,
312
325
  ).run()
313
326
  logger.info("Orchestration pod completed.")
314
327
  finally:
315
328
  if (
316
329
  orchestrator.config.pass_zenml_token_as_secret
317
- and deployment_config.schedule is None
330
+ and deployment.schedule is None
318
331
  ):
319
- secret_name = orchestrator.get_token_secret_name(
320
- deployment_config.id
321
- )
332
+ secret_name = orchestrator.get_token_secret_name(deployment.id)
322
333
  try:
323
334
  kube_utils.delete_secret(
324
335
  core_api=core_api,
zenml/login/web_login.py CHANGED
@@ -239,7 +239,7 @@ def web_login(
239
239
  else:
240
240
  # There was another error with the request
241
241
  raise AuthorizationException(
242
- f"Error: {response.status_code} {response.json()['error']}"
242
+ f"Error: {response.status_code} {response.text}"
243
243
  )
244
244
 
245
245
  # Save the token in the credentials store
zenml/model/model.py CHANGED
@@ -29,6 +29,7 @@ from zenml.enums import MetadataResourceTypes, ModelStages
29
29
  from zenml.exceptions import EntityExistsError
30
30
  from zenml.logger import get_logger
31
31
  from zenml.pipelines.pipeline_context import get_pipeline_context
32
+ from zenml.utils import pagination_utils
32
33
  from zenml.utils.pydantic_utils import before_validator_handler
33
34
  from zenml.utils.string_utils import format_name_template
34
35
 
@@ -38,7 +39,6 @@ if TYPE_CHECKING:
38
39
  ArtifactVersionResponse,
39
40
  ModelResponse,
40
41
  ModelVersionResponse,
41
- PipelineRunResponse,
42
42
  )
43
43
 
44
44
  logger = get_logger(__name__)
@@ -303,17 +303,6 @@ class Model(BaseModel):
303
303
  version=version,
304
304
  )
305
305
 
306
- def get_pipeline_run(self, name: str) -> "PipelineRunResponse":
307
- """Get pipeline run linked to this version.
308
-
309
- Args:
310
- name: The name of the pipeline run to retrieve.
311
-
312
- Returns:
313
- PipelineRun as PipelineRunResponse
314
- """
315
- return self._get_or_create_model_version().get_pipeline_run(name=name)
316
-
317
306
  def set_stage(
318
307
  self, stage: Union[str, ModelStages], force: bool = False
319
308
  ) -> None:
@@ -431,19 +420,20 @@ class Model(BaseModel):
431
420
 
432
421
  client = Client()
433
422
 
423
+ mv = self._get_or_create_model_version()
424
+
434
425
  if not only_link and delete_from_artifact_store:
435
- mv = self._get_model_version()
436
- artifact_responses = mv.data_artifacts
437
- artifact_responses.update(mv.model_artifacts)
438
- artifact_responses.update(mv.deployment_artifacts)
439
-
440
- for artifact_ in artifact_responses.values():
441
- for artifact_response_ in artifact_.values():
442
- client._delete_artifact_from_artifact_store(
443
- artifact_version=artifact_response_
444
- )
426
+ artifact_versions = pagination_utils.depaginate(
427
+ client.list_artifact_versions,
428
+ model_version_id=mv.id,
429
+ project=mv.project_id,
430
+ )
431
+ for artifact_version in artifact_versions:
432
+ client._delete_artifact_from_artifact_store(
433
+ artifact_version=artifact_version
434
+ )
445
435
 
446
- client.delete_all_model_version_artifact_links(self.id, only_link)
436
+ client.delete_all_model_version_artifact_links(mv.id, only_link)
447
437
 
448
438
  def _lazy_artifact_get(
449
439
  self,