zenml-nightly 0.82.1.dev20250527__py3-none-any.whl → 0.83.0.dev20250529__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 (316) 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/integrations/skypilot/flavors/skypilot_orchestrator_base_vm_config.py +45 -4
  15. zenml/integrations/skypilot/orchestrators/skypilot_base_vm_orchestrator.py +92 -84
  16. zenml/integrations/skypilot/orchestrators/skypilot_orchestrator_entrypoint.py +207 -179
  17. zenml/integrations/skypilot/utils.py +273 -0
  18. zenml/integrations/skypilot_aws/__init__.py +1 -2
  19. zenml/integrations/skypilot_azure/__init__.py +1 -2
  20. zenml/integrations/skypilot_gcp/__init__.py +9 -1
  21. zenml/integrations/skypilot_kubernetes/__init__.py +2 -3
  22. zenml/integrations/skypilot_lambda/__init__.py +1 -2
  23. zenml/login/web_login.py +1 -1
  24. zenml/model/model.py +13 -23
  25. zenml/models/__init__.py +39 -2
  26. zenml/models/v2/base/scoped.py +34 -15
  27. zenml/models/v2/core/artifact.py +10 -9
  28. zenml/models/v2/core/artifact_version.py +16 -16
  29. zenml/models/v2/core/logs.py +8 -50
  30. zenml/models/v2/core/model.py +10 -10
  31. zenml/models/v2/core/model_version.py +155 -88
  32. zenml/models/v2/core/pipeline.py +10 -11
  33. zenml/models/v2/core/pipeline_deployment.py +1 -9
  34. zenml/models/v2/core/pipeline_run.py +10 -17
  35. zenml/models/v2/core/run_template.py +10 -10
  36. zenml/models/v2/core/step_run.py +100 -16
  37. zenml/models/v2/core/tag.py +5 -4
  38. zenml/models/v2/misc/pipeline_run_dag.py +46 -0
  39. zenml/orchestrators/base_orchestrator.py +8 -19
  40. zenml/orchestrators/cache_utils.py +48 -1
  41. zenml/orchestrators/input_utils.py +35 -39
  42. zenml/orchestrators/step_launcher.py +1 -1
  43. zenml/orchestrators/step_run_utils.py +26 -10
  44. zenml/pipelines/pipeline_definition.py +3 -3
  45. zenml/pipelines/run_utils.py +2 -3
  46. zenml/service_connectors/service_connector.py +5 -1
  47. zenml/stack/stack_component.py +1 -4
  48. zenml/steps/step_context.py +1 -1
  49. zenml/utils/dashboard_utils.py +3 -3
  50. zenml/zen_server/auth.py +6 -3
  51. zenml/zen_server/dashboard/assets/{404-_AtuLtaX.js → 404-DmJUgorp.js} +1 -1
  52. zenml/zen_server/dashboard/assets/{@radix-C7hRs6Kx.js → @radix-Cdvw4jJ8.js} +1 -1
  53. zenml/zen_server/dashboard/assets/{@react-router-CNP6g_RL.js → @react-router-DeDfXbUF.js} +5 -5
  54. zenml/zen_server/dashboard/assets/{@reactflow-CQi1Z1Wq.js → @reactflow-8OCk19Fi.js} +1 -1
  55. zenml/zen_server/dashboard/assets/{@tanstack-CSxjHCME.js → @tanstack-5gTMR7G2.js} +4 -4
  56. zenml/zen_server/dashboard/assets/AlertDialogDropdownItem-CZW4QyWn.js +1 -0
  57. zenml/zen_server/dashboard/assets/ButtonGroup-DFWWFGUE.js +1 -0
  58. zenml/zen_server/dashboard/assets/{CodeSnippet-CvI6D0wx.js → CodeSnippet-D2HkkAGr.js} +1 -1
  59. zenml/zen_server/dashboard/assets/CollapsibleCard-CnS09ljw.js +1 -0
  60. zenml/zen_server/dashboard/assets/{ComponentBadge-DKw7Gndh.js → ComponentBadge-CDgdd0Ks.js} +1 -1
  61. zenml/zen_server/dashboard/assets/ComponentIcon-CbbOc7lb.js +1 -0
  62. zenml/zen_server/dashboard/assets/{DeleteAlertDialog-DVvXt-S6.js → DeleteAlertDialog-VIOMDLmx.js} +1 -1
  63. zenml/zen_server/dashboard/assets/DialogItem-ClFCqxEp.js +1 -0
  64. zenml/zen_server/dashboard/assets/{DisplayDate-CYVBBSgr.js → DisplayDate-8RESqe5H.js} +1 -1
  65. zenml/zen_server/dashboard/assets/{EmptyState-M1jafpg6.js → EmptyState-CjrgDtVk.js} +1 -1
  66. zenml/zen_server/dashboard/assets/{Error-BWaXP0VK.js → Error-CQzjbDcN.js} +1 -1
  67. zenml/zen_server/dashboard/assets/ExecutionStatus-CWreILP0.js +1 -0
  68. zenml/zen_server/dashboard/assets/{Helpbox-iE1xLmiZ.js → Helpbox-CiKxG5_X.js} +1 -1
  69. zenml/zen_server/dashboard/assets/Infobox-CGxFvqzi.js +1 -0
  70. zenml/zen_server/dashboard/assets/LeftSideMenu-DCsKdIjC.js +1 -0
  71. zenml/zen_server/dashboard/assets/{Lock-DW-0_M0o.js → Lock-CrIAdQo6.js} +1 -1
  72. zenml/zen_server/dashboard/assets/NestedCollapsible-3M4llYtH.js +1 -0
  73. zenml/zen_server/dashboard/assets/NumberBox-C0mQktmV.js +1 -0
  74. zenml/zen_server/dashboard/assets/Partials-DSjkttlz.js +1 -0
  75. zenml/zen_server/dashboard/assets/{PasswordChecker-lYTOtNom.js → PasswordChecker-B88WjuCe.js} +1 -1
  76. zenml/zen_server/dashboard/assets/ProCta-Dm5cWKpS.js +1 -0
  77. zenml/zen_server/dashboard/assets/{ProviderIcon-DLo7t1lo.js → ProviderIcon-DPwMR6nF.js} +1 -1
  78. zenml/zen_server/dashboard/assets/ProviderRadio-DEDNRgAb.js +1 -0
  79. zenml/zen_server/dashboard/assets/RunsBody-BRBn1e2O.js +1 -0
  80. zenml/zen_server/dashboard/assets/SearchField-DY6-UbRT.js +1 -0
  81. zenml/zen_server/dashboard/assets/SecretTooltip-CZTRnaCV.js +1 -0
  82. zenml/zen_server/dashboard/assets/{SetPassword-DR-EiLI5.js → SetPassword-BjNGDC5e.js} +1 -1
  83. zenml/zen_server/dashboard/assets/SheetHeader-CASpN2Lz.js +1 -0
  84. zenml/zen_server/dashboard/assets/StackComponentList-Be1pQt9m.js +1 -0
  85. zenml/zen_server/dashboard/assets/StackList-BdiR5DvR.js +1 -0
  86. zenml/zen_server/dashboard/assets/StackName-ojLC6xdl.js +1 -0
  87. zenml/zen_server/dashboard/assets/Tabs-DNSKblCM.js +1 -0
  88. zenml/zen_server/dashboard/assets/Tick-BPrWnNlN.js +1 -0
  89. zenml/zen_server/dashboard/assets/{UpdatePasswordSchemas-DbFEaezI.js → UpdatePasswordSchemas-CNfKDo2Q.js} +1 -1
  90. zenml/zen_server/dashboard/assets/UsageReason-Cb-mpV8M.js +1 -0
  91. zenml/zen_server/dashboard/assets/{Wizard-CMI6Ksgz.js → Wizard-Dg8Pmn5A.js} +1 -1
  92. zenml/zen_server/dashboard/assets/WizardFooter-BcNDIvlQ.js +1 -0
  93. zenml/zen_server/dashboard/assets/{all-pipeline-runs-query-BGASHYtF.js → all-pipeline-runs-query-DCdax7I5.js} +1 -1
  94. zenml/zen_server/dashboard/assets/{arrow-left-CwgF2MEM.js → arrow-left-MRXv5pAH.js} +1 -1
  95. zenml/zen_server/dashboard/assets/bulk-delete-C_kpIB9A.js +3 -0
  96. zenml/zen_server/dashboard/assets/{check-DK77doTf.js → check-B9QMTa3f.js} +1 -1
  97. zenml/zen_server/dashboard/assets/{check-circle-mvyzYvIW.js → check-circle-C4tYvbtw.js} +1 -1
  98. zenml/zen_server/dashboard/assets/{chevron-down-A-rmltmI.js → chevron-down-jbbQh82s.js} +1 -1
  99. zenml/zen_server/dashboard/assets/{chevron-right-double-uNWbJT-C.js → chevron-right-double-Dgp_gEsp.js} +1 -1
  100. zenml/zen_server/dashboard/assets/{clock-CPA5cYxq.js → clock-B_mTG8PH.js} +1 -1
  101. zenml/zen_server/dashboard/assets/{code-browser-j2EpcxIA.js → code-browser-CiD8qkBx.js} +1 -1
  102. zenml/zen_server/dashboard/assets/configuration-form-B2hmKGnF.js +1 -0
  103. zenml/zen_server/dashboard/assets/connectivity-4UKGMYnr.webp +0 -0
  104. zenml/zen_server/dashboard/assets/constants-1EZZxtay.js +1 -0
  105. zenml/zen_server/dashboard/assets/create-stack-TKmMtrkQ.js +1 -0
  106. zenml/zen_server/dashboard/assets/dates-Buh6SMo7.js +1 -0
  107. zenml/zen_server/dashboard/assets/delete-run-CCR9md_s.js +1 -0
  108. zenml/zen_server/dashboard/assets/eye-CbVlAYty.js +1 -0
  109. zenml/zen_server/dashboard/assets/{file-text-BdxZdjP_.js → file-text-Cd8wVfq5.js} +1 -1
  110. zenml/zen_server/dashboard/assets/form-DFJkaFDX.js +1 -0
  111. zenml/zen_server/dashboard/assets/form-schemas-CrznJVzA.js +1 -0
  112. zenml/zen_server/dashboard/assets/{gcp-CHNvgEss.js → gcp-B1I3Qvcx.js} +1 -1
  113. zenml/zen_server/dashboard/assets/{help-DyMolRxD.js → help-Co6aedki.js} +1 -1
  114. zenml/zen_server/dashboard/assets/index-BFqbGSck.js +308 -0
  115. zenml/zen_server/dashboard/assets/{index-CrhdX_qG.js → index-BjUu1mP4.js} +1 -1
  116. zenml/zen_server/dashboard/assets/{index-DR30v9MZ.js → index-DWpiv-Ft.js} +1 -1
  117. zenml/zen_server/dashboard/assets/index-DuhuqTCI.css +1 -0
  118. zenml/zen_server/dashboard/assets/index-U992soPJ.js +1 -0
  119. zenml/zen_server/dashboard/assets/index.es-C1gfATPn.js +14 -0
  120. zenml/zen_server/dashboard/assets/{index.esm-D7jFlf5N.js → index.esm-DhJo3mA6.js} +1 -1
  121. zenml/zen_server/dashboard/assets/info-QkbQz4QU.js +1 -0
  122. zenml/zen_server/dashboard/assets/{key-icon-DO4DPJHZ.js → key-icon-C07HKw8z.js} +1 -1
  123. zenml/zen_server/dashboard/assets/{layout-h3cbx8WZ.js → layout-DBbfEFBe.js} +1 -1
  124. zenml/zen_server/dashboard/assets/layout-Do9YI4QX.js +1 -0
  125. zenml/zen_server/dashboard/assets/login-mutation-D3tFP6Wm.js +1 -0
  126. zenml/zen_server/dashboard/assets/{logs-B5n0U7tB.js → logs-CQKlJjo0.js} +1 -1
  127. zenml/zen_server/dashboard/assets/{package-D1Mhqeh8.js → package-miExReQl.js} +1 -1
  128. zenml/zen_server/dashboard/assets/page-9RjCitFH.js +1 -0
  129. zenml/zen_server/dashboard/assets/page-B0PsXWiT.js +1 -0
  130. zenml/zen_server/dashboard/assets/page-BCrKmYIZ.js +1 -0
  131. zenml/zen_server/dashboard/assets/page-BcRI3-aR.js +29 -0
  132. zenml/zen_server/dashboard/assets/page-Be3R2uYn.js +1 -0
  133. zenml/zen_server/dashboard/assets/page-BgknnddT.js +1 -0
  134. zenml/zen_server/dashboard/assets/page-BrT0_zSJ.js +40 -0
  135. zenml/zen_server/dashboard/assets/page-Bs3W2FDi.js +1 -0
  136. zenml/zen_server/dashboard/assets/page-C210HcBA.js +1 -0
  137. zenml/zen_server/dashboard/assets/page-C6KaiZ_W.js +1 -0
  138. zenml/zen_server/dashboard/assets/page-CAJ8B0vb.js +1 -0
  139. zenml/zen_server/dashboard/assets/page-CAUYrfui.js +1 -0
  140. zenml/zen_server/dashboard/assets/page-CHxVhF3x.js +1 -0
  141. zenml/zen_server/dashboard/assets/{page-CSwZxZMQ.js → page-CN7lkvXr.js} +1 -1
  142. zenml/zen_server/dashboard/assets/page-CUaMMoPG.js +1 -0
  143. zenml/zen_server/dashboard/assets/page-Cal6XQ4U.js +1 -0
  144. zenml/zen_server/dashboard/assets/page-CdZCmszX.js +1 -0
  145. zenml/zen_server/dashboard/assets/page-ChGcZI_6.js +1 -0
  146. zenml/zen_server/dashboard/assets/page-CktmtZ8Z.js +1 -0
  147. zenml/zen_server/dashboard/assets/page-ClvmVesa.js +1 -0
  148. zenml/zen_server/dashboard/assets/page-CnbIYE80.js +1 -0
  149. zenml/zen_server/dashboard/assets/page-CoXzjeEY.js +1 -0
  150. zenml/zen_server/dashboard/assets/page-CtiuMP_r.js +1 -0
  151. zenml/zen_server/dashboard/assets/page-D9Hfx6GV.js +1 -0
  152. zenml/zen_server/dashboard/assets/page-D9iuB88h.js +1 -0
  153. zenml/zen_server/dashboard/assets/page-DCcuPZ8P.js +1 -0
  154. zenml/zen_server/dashboard/assets/page-DEohTSz6.js +1 -0
  155. zenml/zen_server/dashboard/assets/page-DJIGaUQ9.js +1 -0
  156. zenml/zen_server/dashboard/assets/page-DKK6ulgy.js +1 -0
  157. zenml/zen_server/dashboard/assets/page-DNjKHjnH.js +1 -0
  158. zenml/zen_server/dashboard/assets/page-DUK0Nd_1.js +1 -0
  159. zenml/zen_server/dashboard/assets/page-DUKbOhaD.js +1 -0
  160. zenml/zen_server/dashboard/assets/page-DYOucPtA.js +1 -0
  161. zenml/zen_server/dashboard/assets/page-DpqRelAy.js +1 -0
  162. zenml/zen_server/dashboard/assets/{page-ZfTtFicG.js → page-DwVPpCFg.js} +2 -2
  163. zenml/zen_server/dashboard/assets/page-XURWnYZP.js +1 -0
  164. zenml/zen_server/dashboard/assets/page-abw-2oeW.js +1 -0
  165. zenml/zen_server/dashboard/assets/page-akLcPcKw.js +1 -0
  166. zenml/zen_server/dashboard/assets/page-n9ejQ2V3.js +2 -0
  167. zenml/zen_server/dashboard/assets/page-sJjNT9xA.js +6 -0
  168. zenml/zen_server/dashboard/assets/{persist-UUym702q.js → persist-DWMWVP-y.js} +1 -1
  169. zenml/zen_server/dashboard/assets/{persist-D87V82eO.js → persist-Dec_w7aB.js} +1 -1
  170. zenml/zen_server/dashboard/assets/pipeline-CSUlkd50.js +1 -0
  171. zenml/zen_server/dashboard/assets/{plus-COjQg3AG.js → plus-Cl0_rCVF.js} +1 -1
  172. zenml/zen_server/dashboard/assets/{react-error-boundary.esm-fyoUBS25.js → react-error-boundary.esm-7_MuhCay.js} +1 -1
  173. zenml/zen_server/dashboard/assets/{refresh-CM5T3QeU.js → refresh-BcTM09NW.js} +1 -1
  174. zenml/zen_server/dashboard/assets/resource-tyes-list-o2LXiMay.js +1 -0
  175. zenml/zen_server/dashboard/assets/resource-type-tooltip-DwHrJstL.js +1 -0
  176. zenml/zen_server/dashboard/assets/service-connectors-DSEMwJ5A.js +1 -0
  177. zenml/zen_server/dashboard/assets/{service-BQ9KIhls.js → service-jxtvgks0.js} +2 -2
  178. zenml/zen_server/dashboard/assets/sharedSchema-BXzg0EZz.js +1 -0
  179. zenml/zen_server/dashboard/assets/stack-detail-query-Cm0fsgo-.js +1 -0
  180. zenml/zen_server/dashboard/assets/{terminal-square-DMtel8mb.js → terminal-XFL_4QN-.js} +1 -1
  181. zenml/zen_server/dashboard/assets/terminal-square-XFL_4QN-.js +1 -0
  182. zenml/zen_server/dashboard/assets/transform-CeZdrxDZ.js +1 -0
  183. zenml/zen_server/dashboard/assets/{trash-BWSZ7NRK.js → trash-DP6Tpp_E.js} +1 -1
  184. zenml/zen_server/dashboard/assets/type-guards-CNgPYg8l.js +1 -0
  185. zenml/zen_server/dashboard/assets/update-current-user-mutation-D5MjcQ6F.js +1 -0
  186. zenml/zen_server/dashboard/assets/update-server-settings-mutation-CmnxdxiK.js +1 -0
  187. zenml/zen_server/dashboard/assets/{zod-C0xYeTvL.js → zod-XdS2h1ws.js} +1 -1
  188. zenml/zen_server/dashboard/index.html +7 -7
  189. zenml/zen_server/rbac/utils.py +2 -2
  190. zenml/zen_server/routers/auth_endpoints.py +2 -2
  191. zenml/zen_server/routers/devices_endpoints.py +8 -5
  192. zenml/zen_server/routers/pipeline_deployments_endpoints.py +1 -1
  193. zenml/zen_server/routers/pipelines_endpoints.py +1 -1
  194. zenml/zen_server/routers/run_templates_endpoints.py +3 -3
  195. zenml/zen_server/routers/runs_endpoints.py +35 -0
  196. zenml/zen_server/template_execution/utils.py +6 -6
  197. zenml/zen_stores/dag_generator.py +171 -0
  198. zenml/zen_stores/migrations/versions/0.83.0_release.py +23 -0
  199. zenml/zen_stores/rest_zen_store.py +17 -3
  200. zenml/zen_stores/schemas/action_schemas.py +40 -4
  201. zenml/zen_stores/schemas/api_key_schemas.py +29 -1
  202. zenml/zen_stores/schemas/artifact_schemas.py +168 -48
  203. zenml/zen_stores/schemas/base_schemas.py +26 -1
  204. zenml/zen_stores/schemas/code_repository_schemas.py +46 -5
  205. zenml/zen_stores/schemas/component_schemas.py +44 -3
  206. zenml/zen_stores/schemas/device_schemas.py +43 -2
  207. zenml/zen_stores/schemas/event_source_schemas.py +41 -5
  208. zenml/zen_stores/schemas/flavor_schemas.py +42 -2
  209. zenml/zen_stores/schemas/model_schemas.py +113 -77
  210. zenml/zen_stores/schemas/pipeline_build_schemas.py +53 -4
  211. zenml/zen_stores/schemas/pipeline_deployment_schemas.py +53 -4
  212. zenml/zen_stores/schemas/pipeline_run_schemas.py +111 -47
  213. zenml/zen_stores/schemas/pipeline_schemas.py +41 -9
  214. zenml/zen_stores/schemas/run_template_schemas.py +75 -11
  215. zenml/zen_stores/schemas/schedule_schema.py +50 -5
  216. zenml/zen_stores/schemas/secret_schemas.py +39 -2
  217. zenml/zen_stores/schemas/service_connector_schemas.py +39 -2
  218. zenml/zen_stores/schemas/service_schemas.py +39 -4
  219. zenml/zen_stores/schemas/stack_schemas.py +47 -2
  220. zenml/zen_stores/schemas/step_run_schemas.py +89 -26
  221. zenml/zen_stores/schemas/tag_schemas.py +69 -5
  222. zenml/zen_stores/schemas/trigger_schemas.py +44 -5
  223. zenml/zen_stores/schemas/utils.py +25 -4
  224. zenml/zen_stores/sql_zen_store.py +471 -28
  225. zenml/zen_stores/zen_store_interface.py +9 -1
  226. {zenml_nightly-0.82.1.dev20250527.dist-info → zenml_nightly-0.83.0.dev20250529.dist-info}/METADATA +2 -2
  227. {zenml_nightly-0.82.1.dev20250527.dist-info → zenml_nightly-0.83.0.dev20250529.dist-info}/RECORD +230 -222
  228. zenml/zen_server/dashboard/assets/AlertDialogDropdownItem-BG7-Ki1L.js +0 -1
  229. zenml/zen_server/dashboard/assets/CollapsibleCard-D20FtrzC.js +0 -1
  230. zenml/zen_server/dashboard/assets/Commands-DGbAvMDk.js +0 -1
  231. zenml/zen_server/dashboard/assets/ComponentIcon-ils7uNAk.js +0 -1
  232. zenml/zen_server/dashboard/assets/CsvVizualization-DVN541XF.js +0 -15
  233. zenml/zen_server/dashboard/assets/DialogItem-BHWf3sIB.js +0 -1
  234. zenml/zen_server/dashboard/assets/ExecutionStatus-XrvT2r65.js +0 -1
  235. zenml/zen_server/dashboard/assets/Infobox-D9k5TFH4.js +0 -1
  236. zenml/zen_server/dashboard/assets/InlineAvatar-Cfz4WSLK.js +0 -1
  237. zenml/zen_server/dashboard/assets/MarkdownVisualization-URCyUPcZ.js +0 -14
  238. zenml/zen_server/dashboard/assets/NestedCollapsible-Dor-bi98.js +0 -1
  239. zenml/zen_server/dashboard/assets/NumberBox-D2A7ENHb.js +0 -1
  240. zenml/zen_server/dashboard/assets/Partials-DQJFw1yW.js +0 -1
  241. zenml/zen_server/dashboard/assets/ProBadge-Cp4hb1YT.js +0 -1
  242. zenml/zen_server/dashboard/assets/ProCta-EYoV9CvK.js +0 -1
  243. zenml/zen_server/dashboard/assets/ProviderRadio-BVDA-fAr.js +0 -1
  244. zenml/zen_server/dashboard/assets/RunSelector-BLuBYNJt.js +0 -1
  245. zenml/zen_server/dashboard/assets/RunsBody-W4WHf-sq.js +0 -1
  246. zenml/zen_server/dashboard/assets/SearchField-D-h6jXyg.js +0 -1
  247. zenml/zen_server/dashboard/assets/SecretTooltip-CePCL8kd.js +0 -1
  248. zenml/zen_server/dashboard/assets/StackList-CgmN5H-i.js +0 -1
  249. zenml/zen_server/dashboard/assets/Tabs-DxQ8PDOD.js +0 -1
  250. zenml/zen_server/dashboard/assets/Tick-CEsT3HPR.js +0 -1
  251. zenml/zen_server/dashboard/assets/UsageReason-DjI5qMje.js +0 -1
  252. zenml/zen_server/dashboard/assets/WizardFooter-CFBHFZas.js +0 -1
  253. zenml/zen_server/dashboard/assets/cloud-squares-DeRLMopf.svg +0 -43
  254. zenml/zen_server/dashboard/assets/configuration-form-BtI2Y4eX.js +0 -1
  255. zenml/zen_server/dashboard/assets/connectors-video-C9qY4syJ.svg +0 -21
  256. zenml/zen_server/dashboard/assets/constants-DP3ZEnXH.js +0 -1
  257. zenml/zen_server/dashboard/assets/create-stack-BJ6x5rzj.js +0 -1
  258. zenml/zen_server/dashboard/assets/dates-3pMLCNrD.js +0 -1
  259. zenml/zen_server/dashboard/assets/delete-run-DlSLEl5T.js +0 -1
  260. zenml/zen_server/dashboard/assets/docker-BuDBFEDL.js +0 -1
  261. zenml/zen_server/dashboard/assets/dots-horizontal-BGRJCPCs.js +0 -1
  262. zenml/zen_server/dashboard/assets/flavor-select-BnPxvQDN.js +0 -1
  263. zenml/zen_server/dashboard/assets/form-schemas-CbvoEUHr.js +0 -1
  264. zenml/zen_server/dashboard/assets/index-CFESYpe4.js +0 -1
  265. zenml/zen_server/dashboard/assets/index-CmLcvK2z.js +0 -1
  266. zenml/zen_server/dashboard/assets/index-CzX3ZYlI.css +0 -1
  267. zenml/zen_server/dashboard/assets/index-D2iSHVZq.js +0 -64
  268. zenml/zen_server/dashboard/assets/kubernetes-D6OUjwSK.js +0 -1
  269. zenml/zen_server/dashboard/assets/link-external-DUhCSKNm.js +0 -1
  270. zenml/zen_server/dashboard/assets/login-command-CkqxPtV3.js +0 -1
  271. zenml/zen_server/dashboard/assets/login-mutation-CXc-Klim.js +0 -1
  272. zenml/zen_server/dashboard/assets/not-found-olRU3fnu.js +0 -1
  273. zenml/zen_server/dashboard/assets/page-7keIM1V3.js +0 -1
  274. zenml/zen_server/dashboard/assets/page-B31neFwG.js +0 -1
  275. zenml/zen_server/dashboard/assets/page-B3zo4KYS.js +0 -1
  276. zenml/zen_server/dashboard/assets/page-BN3MHq1a.js +0 -1
  277. zenml/zen_server/dashboard/assets/page-BNgVExjN.js +0 -1
  278. zenml/zen_server/dashboard/assets/page-BPtvu74G.js +0 -1
  279. zenml/zen_server/dashboard/assets/page-BTIuG0ki.js +0 -2
  280. zenml/zen_server/dashboard/assets/page-BcQzleH6.js +0 -1
  281. zenml/zen_server/dashboard/assets/page-C05Jw4M2.js +0 -1
  282. zenml/zen_server/dashboard/assets/page-C28a7K8h.js +0 -1
  283. zenml/zen_server/dashboard/assets/page-C9WLk0X-.js +0 -1
  284. zenml/zen_server/dashboard/assets/page-CINMx64X.js +0 -1
  285. zenml/zen_server/dashboard/assets/page-CYrJbk7P.js +0 -1
  286. zenml/zen_server/dashboard/assets/page-Ce0cqLo3.js +0 -1
  287. zenml/zen_server/dashboard/assets/page-CgNsEkw-.js +0 -1
  288. zenml/zen_server/dashboard/assets/page-Ct2FUYuR.js +0 -1
  289. zenml/zen_server/dashboard/assets/page-D8G2B3Bu.js +0 -1
  290. zenml/zen_server/dashboard/assets/page-DL8a4_lg.js +0 -3
  291. zenml/zen_server/dashboard/assets/page-DMhYn1cF.js +0 -1
  292. zenml/zen_server/dashboard/assets/page-Dd_Yq-Uf.js +0 -6
  293. zenml/zen_server/dashboard/assets/page-DfSvqT8g.js +0 -1
  294. zenml/zen_server/dashboard/assets/page-Dt6ANUTx.js +0 -1
  295. zenml/zen_server/dashboard/assets/page-DtvTleaT.js +0 -1
  296. zenml/zen_server/dashboard/assets/page-DwfGTiVs.js +0 -1
  297. zenml/zen_server/dashboard/assets/page-JgomSTDc.js +0 -1
  298. zenml/zen_server/dashboard/assets/page-L84ig6HB.js +0 -1
  299. zenml/zen_server/dashboard/assets/page-Mabsn4QJ.js +0 -1
  300. zenml/zen_server/dashboard/assets/page-P04L5cm9.js +0 -1
  301. zenml/zen_server/dashboard/assets/page-PfhAnvq4.js +0 -1
  302. zenml/zen_server/dashboard/assets/page-WdRrlNt_.js +0 -1
  303. zenml/zen_server/dashboard/assets/page-cqJDDDeK.js +0 -1
  304. zenml/zen_server/dashboard/assets/page-k-Wxh9L_.js +0 -1
  305. zenml/zen_server/dashboard/assets/page-y-zV4n0c.js +0 -1
  306. zenml/zen_server/dashboard/assets/rocket-Cf-B-XOR.js +0 -1
  307. zenml/zen_server/dashboard/assets/settings_preview-0JLrRgHP.webp +0 -0
  308. zenml/zen_server/dashboard/assets/sharedSchema-Bse2agAf.js +0 -14
  309. zenml/zen_server/dashboard/assets/stack-detail-query-BAcZJrN3.js +0 -1
  310. zenml/zen_server/dashboard/assets/tick-circle-m94Aa6Zt.js +0 -1
  311. zenml/zen_server/dashboard/assets/tour-cover-BYfeen6M.webp +0 -0
  312. zenml/zen_server/dashboard/assets/type-guards-CaeD8wHO.js +0 -1
  313. zenml/zen_server/dashboard/assets/update-server-settings-mutation-DwMM1LJz.js +0 -1
  314. {zenml_nightly-0.82.1.dev20250527.dist-info → zenml_nightly-0.83.0.dev20250529.dist-info}/LICENSE +0 -0
  315. {zenml_nightly-0.82.1.dev20250527.dist-info → zenml_nightly-0.83.0.dev20250529.dist-info}/WHEEL +0 -0
  316. {zenml_nightly-0.82.1.dev20250527.dist-info → zenml_nightly-0.83.0.dev20250529.dist-info}/entry_points.txt +0 -0
@@ -106,9 +106,7 @@ class ProjectScopedRequest(UserScopedRequest):
106
106
  class UserScopedResponseBody(BaseDatedResponseBody):
107
107
  """Base user-owned body."""
108
108
 
109
- user: Optional["UserResponse"] = Field(
110
- title="The user who created this resource.", default=None
111
- )
109
+ user_id: Optional[UUID] = Field(title="The user id.", default=None)
112
110
 
113
111
 
114
112
  class UserScopedResponseMetadata(BaseResponseMetadata):
@@ -118,6 +116,10 @@ class UserScopedResponseMetadata(BaseResponseMetadata):
118
116
  class UserScopedResponseResources(BaseResponseResources):
119
117
  """Base class for all resource models associated with the user."""
120
118
 
119
+ user: Optional["UserResponse"] = Field(
120
+ title="The user who created this resource.", default=None
121
+ )
122
+
121
123
 
122
124
  UserBody = TypeVar("UserBody", bound=UserScopedResponseBody)
123
125
  UserMetadata = TypeVar("UserMetadata", bound=UserScopedResponseMetadata)
@@ -141,19 +143,28 @@ class UserScopedResponse(
141
143
  The analytics metadata.
142
144
  """
143
145
  metadata = super().get_analytics_metadata()
144
- if self.user is not None:
145
- metadata["user_id"] = self.user.id
146
+ if user_id := self.user_id:
147
+ metadata["user_id"] = user_id
146
148
  return metadata
147
149
 
148
150
  # Body and metadata properties
151
+ @property
152
+ def user_id(self) -> Optional[UUID]:
153
+ """The user ID property.
154
+
155
+ Returns:
156
+ the value of the property.
157
+ """
158
+ return self.get_body().user_id
159
+
149
160
  @property
150
161
  def user(self) -> Optional["UserResponse"]:
151
- """The `user` property.
162
+ """The user property.
152
163
 
153
164
  Returns:
154
165
  the value of the property.
155
166
  """
156
- return self.get_body().user
167
+ return self.get_resources().user
157
168
 
158
169
 
159
170
  class UserScopedFilter(BaseFilter):
@@ -289,12 +300,12 @@ class UserScopedFilter(BaseFilter):
289
300
  class ProjectScopedResponseBody(UserScopedResponseBody):
290
301
  """Base project-scoped body."""
291
302
 
303
+ project_id: UUID = Field(title="The project id.")
304
+
292
305
 
293
306
  class ProjectScopedResponseMetadata(UserScopedResponseMetadata):
294
307
  """Base project-scoped metadata."""
295
308
 
296
- project: "ProjectResponse" = Field(title="The project of this resource.")
297
-
298
309
 
299
310
  class ProjectScopedResponseResources(UserScopedResponseResources):
300
311
  """Base project-scoped resources."""
@@ -318,8 +329,6 @@ class ProjectScopedResponse(
318
329
  Used as a base class for all domain models that are project-scoped.
319
330
  """
320
331
 
321
- project_id: UUID = Field(title="The project id.")
322
-
323
332
  # Analytics
324
333
  def get_analytics_metadata(self) -> Dict[str, Any]:
325
334
  """Fetches the analytics metadata for project scoped models.
@@ -328,11 +337,19 @@ class ProjectScopedResponse(
328
337
  The analytics metadata.
329
338
  """
330
339
  metadata = super().get_analytics_metadata()
331
- if self.project is not None:
332
- metadata["project_id"] = self.project.id
340
+ metadata["project_id"] = self.project_id
333
341
  return metadata
334
342
 
335
- # Body and metadata properties
343
+ @property
344
+ def project_id(self) -> UUID:
345
+ """The project ID property.
346
+
347
+ Returns:
348
+ the value of the property.
349
+ """
350
+ return self.get_body().project_id
351
+
352
+ # Helper
336
353
  @property
337
354
  def project(self) -> "ProjectResponse":
338
355
  """The project property.
@@ -340,7 +357,9 @@ class ProjectScopedResponse(
340
357
  Returns:
341
358
  the value of the property.
342
359
  """
343
- return self.get_metadata().project
360
+ from zenml.client import Client
361
+
362
+ return Client().get_project(self.project_id)
344
363
 
345
364
 
346
365
  # ---------------------- Filter Models ----------------------
@@ -87,12 +87,6 @@ class ArtifactUpdate(BaseUpdate):
87
87
  class ArtifactResponseBody(ProjectScopedResponseBody):
88
88
  """Response body for artifacts."""
89
89
 
90
- tags: List[TagResponse] = Field(
91
- title="Tags associated with the model",
92
- )
93
- latest_version_name: Optional[str] = None
94
- latest_version_id: Optional[UUID] = None
95
-
96
90
 
97
91
  class ArtifactResponseMetadata(ProjectScopedResponseMetadata):
98
92
  """Response metadata for artifacts."""
@@ -106,6 +100,13 @@ class ArtifactResponseMetadata(ProjectScopedResponseMetadata):
106
100
  class ArtifactResponseResources(ProjectScopedResponseResources):
107
101
  """Class for all resource models associated with the Artifact Entity."""
108
102
 
103
+ tags: List[TagResponse] = Field(
104
+ title="Tags associated with the artifact.",
105
+ )
106
+ # TODO: maybe move these back to body or figure out a better solution
107
+ latest_version_name: Optional[str] = None
108
+ latest_version_id: Optional[UUID] = None
109
+
109
110
 
110
111
  class ArtifactResponse(
111
112
  ProjectScopedResponse[
@@ -139,7 +140,7 @@ class ArtifactResponse(
139
140
  Returns:
140
141
  the value of the property.
141
142
  """
142
- return self.get_body().tags
143
+ return self.get_resources().tags
143
144
 
144
145
  @property
145
146
  def latest_version_name(self) -> Optional[str]:
@@ -148,7 +149,7 @@ class ArtifactResponse(
148
149
  Returns:
149
150
  the value of the property.
150
151
  """
151
- return self.get_body().latest_version_name
152
+ return self.get_resources().latest_version_name
152
153
 
153
154
  @property
154
155
  def latest_version_id(self) -> Optional[UUID]:
@@ -157,7 +158,7 @@ class ArtifactResponse(
157
158
  Returns:
158
159
  the value of the property.
159
160
  """
160
- return self.get_body().latest_version_id
161
+ return self.get_resources().latest_version_id
161
162
 
162
163
  @property
163
164
  def has_custom_name(self) -> bool:
@@ -194,13 +194,6 @@ class ArtifactVersionResponseBody(ProjectScopedResponseBody):
194
194
  data_type: SourceWithValidator = Field(
195
195
  title="Data type of the artifact.",
196
196
  )
197
- tags: List[TagResponse] = Field(
198
- title="Tags associated with the model",
199
- )
200
- producer_pipeline_run_id: Optional[UUID] = Field(
201
- title="The ID of the pipeline run that generated this artifact version.",
202
- default=None,
203
- )
204
197
  save_type: ArtifactSaveType = Field(
205
198
  title="The save type of the artifact version.",
206
199
  )
@@ -234,10 +227,6 @@ class ArtifactVersionResponseBody(ProjectScopedResponseBody):
234
227
  class ArtifactVersionResponseMetadata(ProjectScopedResponseMetadata):
235
228
  """Response metadata for artifact versions."""
236
229
 
237
- producer_step_run_id: Optional[UUID] = Field(
238
- title="ID of the step run that produced this artifact.",
239
- default=None,
240
- )
241
230
  visualizations: Optional[List["ArtifactVisualizationResponse"]] = Field(
242
231
  default=None, title="Visualizations of the artifact."
243
232
  )
@@ -249,6 +238,18 @@ class ArtifactVersionResponseMetadata(ProjectScopedResponseMetadata):
249
238
  class ArtifactVersionResponseResources(ProjectScopedResponseResources):
250
239
  """Class for all resource models associated with the artifact version entity."""
251
240
 
241
+ tags: List[TagResponse] = Field(
242
+ title="Tags associated with the artifact version.",
243
+ )
244
+ producer_step_run_id: Optional[UUID] = Field(
245
+ title="ID of the step run that produced this artifact.",
246
+ default=None,
247
+ )
248
+ producer_pipeline_run_id: Optional[UUID] = Field(
249
+ title="The ID of the pipeline run that generated this artifact version.",
250
+ default=None,
251
+ )
252
+
252
253
 
253
254
  class ArtifactVersionResponse(
254
255
  ProjectScopedResponse[
@@ -280,7 +281,7 @@ class ArtifactVersionResponse(
280
281
  return self.get_body().artifact
281
282
 
282
283
  @property
283
- def version(self) -> Union[str, int]:
284
+ def version(self) -> str:
284
285
  """The `version` property.
285
286
 
286
287
  Returns:
@@ -313,7 +314,7 @@ class ArtifactVersionResponse(
313
314
  Returns:
314
315
  the value of the property.
315
316
  """
316
- return self.get_body().tags
317
+ return self.get_resources().tags
317
318
 
318
319
  @property
319
320
  def producer_pipeline_run_id(self) -> Optional[UUID]:
@@ -322,7 +323,7 @@ class ArtifactVersionResponse(
322
323
  Returns:
323
324
  the value of the property.
324
325
  """
325
- return self.get_body().producer_pipeline_run_id
326
+ return self.get_resources().producer_pipeline_run_id
326
327
 
327
328
  @property
328
329
  def save_type(self) -> ArtifactSaveType:
@@ -349,7 +350,7 @@ class ArtifactVersionResponse(
349
350
  Returns:
350
351
  the value of the property.
351
352
  """
352
- return self.get_metadata().producer_step_run_id
353
+ return self.get_resources().producer_step_run_id
353
354
 
354
355
  @property
355
356
  def visualizations(
@@ -710,7 +711,6 @@ class LazyArtifactVersionResponse(ArtifactVersionResponse):
710
711
  """
711
712
 
712
713
  id: Optional[UUID] = None # type: ignore[assignment]
713
- project_id: Optional[UUID] = None # type: ignore[assignment]
714
714
  lazy_load_name: Optional[str] = None
715
715
  lazy_load_version: Optional[str] = None
716
716
  lazy_load_model_name: str
@@ -13,12 +13,12 @@
13
13
  # permissions and limitations under the License.
14
14
  """Models representing logs."""
15
15
 
16
- from typing import Any, Optional, Union
16
+ from typing import Any, Optional
17
17
  from uuid import UUID
18
18
 
19
19
  from pydantic import Field, field_validator
20
20
 
21
- from zenml.constants import STR_FIELD_MAX_LENGTH, TEXT_FIELD_MAX_LENGTH
21
+ from zenml.constants import TEXT_FIELD_MAX_LENGTH
22
22
  from zenml.models.v2.base.base import (
23
23
  BaseDatedResponseBody,
24
24
  BaseIdentifiedResponse,
@@ -60,27 +60,6 @@ class LogsRequest(BaseRequest):
60
60
  )
61
61
  return value
62
62
 
63
- @field_validator("artifact_store_id")
64
- @classmethod
65
- def str_field_max_length_check(cls, value: Any) -> Any:
66
- """Checks if the length of the value exceeds the maximum text length.
67
-
68
- Args:
69
- value: the value set in the field
70
-
71
- Returns:
72
- the value itself.
73
-
74
- Raises:
75
- AssertionError: if the length of the field is longer than the
76
- maximum threshold.
77
- """
78
- assert len(str(value)) < STR_FIELD_MAX_LENGTH, (
79
- "The length of the value for this field can not "
80
- f"exceed {STR_FIELD_MAX_LENGTH}"
81
- )
82
- return value
83
-
84
63
 
85
64
  # ------------------ Update Model ------------------
86
65
 
@@ -101,41 +80,20 @@ class LogsResponseBody(BaseDatedResponseBody):
101
80
  class LogsResponseMetadata(BaseResponseMetadata):
102
81
  """Response metadata for logs."""
103
82
 
104
- step_run_id: Optional[Union[str, UUID]] = Field(
83
+ step_run_id: Optional[UUID] = Field(
105
84
  title="Step ID to associate the logs with.",
106
85
  default=None,
107
86
  description="When this is set, pipeline_run_id should be set to None.",
108
- union_mode="left_to_right",
109
87
  )
110
- pipeline_run_id: Optional[Union[str, UUID]] = Field(
88
+ pipeline_run_id: Optional[UUID] = Field(
111
89
  title="Pipeline run ID to associate the logs with.",
112
90
  default=None,
113
91
  description="When this is set, step_run_id should be set to None.",
114
- union_mode="left_to_right",
115
92
  )
116
- artifact_store_id: Union[str, UUID] = Field(
93
+ artifact_store_id: UUID = Field(
117
94
  title="The artifact store ID to associate the logs with.",
118
- union_mode="left_to_right",
119
95
  )
120
96
 
121
- @field_validator("artifact_store_id")
122
- @classmethod
123
- def str_field_max_length_check(cls, value: Any) -> Any:
124
- """Checks if the length of the value exceeds the maximum text length.
125
-
126
- Args:
127
- value: the value set in the field
128
-
129
- Returns:
130
- the value itself.
131
-
132
- Raises:
133
- AssertionError: if the length of the field is longer than the
134
- maximum threshold.
135
- """
136
- assert len(str(value)) < STR_FIELD_MAX_LENGTH
137
- return value
138
-
139
97
 
140
98
  class LogsResponseResources(BaseResponseResources):
141
99
  """Class for all resource models associated with the Logs entity."""
@@ -169,7 +127,7 @@ class LogsResponse(
169
127
  return self.get_body().uri
170
128
 
171
129
  @property
172
- def step_run_id(self) -> Optional[Union[str, UUID]]:
130
+ def step_run_id(self) -> Optional[UUID]:
173
131
  """The `step_run_id` property.
174
132
 
175
133
  Returns:
@@ -178,7 +136,7 @@ class LogsResponse(
178
136
  return self.get_metadata().step_run_id
179
137
 
180
138
  @property
181
- def pipeline_run_id(self) -> Optional[Union[str, UUID]]:
139
+ def pipeline_run_id(self) -> Optional[UUID]:
182
140
  """The `pipeline_run_id` property.
183
141
 
184
142
  Returns:
@@ -187,7 +145,7 @@ class LogsResponse(
187
145
  return self.get_metadata().pipeline_run_id
188
146
 
189
147
  @property
190
- def artifact_store_id(self) -> Union[str, UUID]:
148
+ def artifact_store_id(self) -> UUID:
191
149
  """The `artifact_store_id` property.
192
150
 
193
151
  Returns:
@@ -132,12 +132,6 @@ class ModelUpdate(BaseUpdate):
132
132
  class ModelResponseBody(ProjectScopedResponseBody):
133
133
  """Response body for models."""
134
134
 
135
- tags: List["TagResponse"] = Field(
136
- title="Tags associated with the model",
137
- )
138
- latest_version_name: Optional[str] = None
139
- latest_version_id: Optional[UUID] = None
140
-
141
135
 
142
136
  class ModelResponseMetadata(ProjectScopedResponseMetadata):
143
137
  """Response metadata for models."""
@@ -186,6 +180,12 @@ class ModelResponseMetadata(ProjectScopedResponseMetadata):
186
180
  class ModelResponseResources(ProjectScopedResponseResources):
187
181
  """Class for all resource models associated with the model entity."""
188
182
 
183
+ tags: List["TagResponse"] = Field(
184
+ title="Tags associated with the model",
185
+ )
186
+ latest_version_name: Optional[str] = None
187
+ latest_version_id: Optional[UUID] = None
188
+
189
189
 
190
190
  class ModelResponse(
191
191
  ProjectScopedResponse[
@@ -217,7 +217,7 @@ class ModelResponse(
217
217
  Returns:
218
218
  the value of the property.
219
219
  """
220
- return self.get_body().tags
220
+ return self.get_resources().tags
221
221
 
222
222
  @property
223
223
  def latest_version_name(self) -> Optional[str]:
@@ -226,7 +226,7 @@ class ModelResponse(
226
226
  Returns:
227
227
  the value of the property.
228
228
  """
229
- return self.get_body().latest_version_name
229
+ return self.get_resources().latest_version_name
230
230
 
231
231
  @property
232
232
  def latest_version_id(self) -> Optional[UUID]:
@@ -235,7 +235,7 @@ class ModelResponse(
235
235
  Returns:
236
236
  the value of the property.
237
237
  """
238
- return self.get_body().latest_version_id
238
+ return self.get_resources().latest_version_id
239
239
 
240
240
  @property
241
241
  def license(self) -> Optional[str]:
@@ -323,7 +323,7 @@ class ModelResponse(
323
323
  model_versions = depaginate(
324
324
  client.list_model_versions,
325
325
  model_name_or_id=self.id,
326
- project=self.project.id,
326
+ project=self.project_id,
327
327
  )
328
328
  return [
329
329
  mv.to_model_class(suppress_class_validation_warnings=True)