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
@@ -29,6 +29,7 @@ from pydantic import ConfigDict, Field, field_validator
29
29
 
30
30
  from zenml.constants import STR_FIELD_MAX_LENGTH, TEXT_FIELD_MAX_LENGTH
31
31
  from zenml.enums import ArtifactType, ModelStages
32
+ from zenml.logger import get_logger
32
33
  from zenml.metadata.metadata_types import MetadataType
33
34
  from zenml.models.v2.base.base import BaseUpdate
34
35
  from zenml.models.v2.base.page import Page
@@ -44,6 +45,7 @@ from zenml.models.v2.base.scoped import (
44
45
  )
45
46
  from zenml.models.v2.core.service import ServiceResponse
46
47
  from zenml.models.v2.core.tag import TagResponse
48
+ from zenml.utils import pagination_utils
47
49
 
48
50
  if TYPE_CHECKING:
49
51
  from sqlalchemy.sql.elements import ColumnElement
@@ -59,6 +61,8 @@ if TYPE_CHECKING:
59
61
  AnySchema = TypeVar("AnySchema", bound=BaseSchema)
60
62
 
61
63
 
64
+ logger = get_logger(__name__)
65
+
62
66
  # ------------------ Request Model ------------------
63
67
 
64
68
 
@@ -151,25 +155,6 @@ class ModelVersionResponseBody(ProjectScopedResponseBody):
151
155
  model: "ModelResponse" = Field(
152
156
  description="The model containing version",
153
157
  )
154
- model_artifact_ids: Dict[str, Dict[str, UUID]] = Field(
155
- description="Model artifacts linked to the model version",
156
- default={},
157
- )
158
- data_artifact_ids: Dict[str, Dict[str, UUID]] = Field(
159
- description="Data artifacts linked to the model version",
160
- default={},
161
- )
162
- deployment_artifact_ids: Dict[str, Dict[str, UUID]] = Field(
163
- description="Deployment artifacts linked to the model version",
164
- default={},
165
- )
166
- pipeline_run_ids: Dict[str, UUID] = Field(
167
- description="Pipeline runs linked to the model version",
168
- default={},
169
- )
170
- tags: List[TagResponse] = Field(
171
- title="Tags associated with the model version", default=[]
172
- )
173
158
 
174
159
  # TODO: In Pydantic v2, the `model_` is a protected namespaces for all
175
160
  # fields defined under base models. If not handled, this raises a warning.
@@ -200,6 +185,9 @@ class ModelVersionResponseResources(ProjectScopedResponseResources):
200
185
  services: Page[ServiceResponse] = Field(
201
186
  description="Services linked to the model version",
202
187
  )
188
+ tags: List[TagResponse] = Field(
189
+ title="Tags associated with the model version", default=[]
190
+ )
203
191
 
204
192
 
205
193
  class ModelVersionResponse(
@@ -244,42 +232,6 @@ class ModelVersionResponse(
244
232
  """
245
233
  return self.get_body().model
246
234
 
247
- @property
248
- def model_artifact_ids(self) -> Dict[str, Dict[str, UUID]]:
249
- """The `model_artifact_ids` property.
250
-
251
- Returns:
252
- the value of the property.
253
- """
254
- return self.get_body().model_artifact_ids
255
-
256
- @property
257
- def data_artifact_ids(self) -> Dict[str, Dict[str, UUID]]:
258
- """The `data_artifact_ids` property.
259
-
260
- Returns:
261
- the value of the property.
262
- """
263
- return self.get_body().data_artifact_ids
264
-
265
- @property
266
- def deployment_artifact_ids(self) -> Dict[str, Dict[str, UUID]]:
267
- """The `deployment_artifact_ids` property.
268
-
269
- Returns:
270
- the value of the property.
271
- """
272
- return self.get_body().deployment_artifact_ids
273
-
274
- @property
275
- def pipeline_run_ids(self) -> Dict[str, UUID]:
276
- """The `pipeline_run_ids` property.
277
-
278
- Returns:
279
- the value of the property.
280
- """
281
- return self.get_body().pipeline_run_ids
282
-
283
235
  @property
284
236
  def tags(self) -> List[TagResponse]:
285
237
  """The `tags` property.
@@ -287,7 +239,7 @@ class ModelVersionResponse(
287
239
  Returns:
288
240
  the value of the property.
289
241
  """
290
- return self.get_body().tags
242
+ return self.get_resources().tags
291
243
 
292
244
  @property
293
245
  def description(self) -> Optional[str]:
@@ -360,14 +312,86 @@ class ModelVersionResponse(
360
312
  Dictionary of model artifacts with versions as
361
313
  Dict[str, Dict[str, ArtifactResponse]]
362
314
  """
315
+ logger.warning(
316
+ "ModelVersionResponse.model_artifacts is deprecated and will be "
317
+ "removed in a future release."
318
+ )
363
319
  from zenml.client import Client
364
320
 
321
+ artifact_versions = pagination_utils.depaginate(
322
+ Client().list_artifact_versions,
323
+ model_version_id=self.id,
324
+ type=ArtifactType.MODEL,
325
+ project=self.project_id,
326
+ )
327
+
328
+ result: Dict[str, Dict[str, "ArtifactVersionResponse"]] = {}
329
+ for artifact_version in artifact_versions:
330
+ result.setdefault(artifact_version.name, {})
331
+ result[artifact_version.name][artifact_version.version] = (
332
+ artifact_version
333
+ )
334
+
335
+ return result
336
+
337
+ @property
338
+ def data_artifact_ids(self) -> Dict[str, Dict[str, UUID]]:
339
+ """Data artifacts linked to this model version.
340
+
341
+ Returns:
342
+ Data artifacts linked to this model version.
343
+ """
344
+ logger.warning(
345
+ "ModelVersionResponse.data_artifact_ids is deprecated and will "
346
+ "be removed in a future release."
347
+ )
348
+
365
349
  return {
366
- name: {
367
- version: Client().get_artifact_version(a)
368
- for version, a in self.model_artifact_ids[name].items()
350
+ artifact_name: {
351
+ version_name: version_response.id
352
+ for version_name, version_response in artifact_versions.items()
369
353
  }
370
- for name in self.model_artifact_ids
354
+ for artifact_name, artifact_versions in self.data_artifacts.items()
355
+ }
356
+
357
+ @property
358
+ def model_artifact_ids(self) -> Dict[str, Dict[str, UUID]]:
359
+ """Model artifacts linked to this model version.
360
+
361
+ Returns:
362
+ Model artifacts linked to this model version.
363
+ """
364
+ logger.warning(
365
+ "ModelVersionResponse.model_artifact_ids is deprecated and will "
366
+ "be removed in a future release."
367
+ )
368
+
369
+ return {
370
+ artifact_name: {
371
+ version_name: version_response.id
372
+ for version_name, version_response in artifact_versions.items()
373
+ }
374
+ for artifact_name, artifact_versions in self.model_artifacts.items()
375
+ }
376
+
377
+ @property
378
+ def deployment_artifact_ids(self) -> Dict[str, Dict[str, UUID]]:
379
+ """Deployment artifacts linked to this model version.
380
+
381
+ Returns:
382
+ Deployment artifacts linked to this model version.
383
+ """
384
+ logger.warning(
385
+ "ModelVersionResponse.deployment_artifact_ids is deprecated and "
386
+ "will be removed in a future release."
387
+ )
388
+
389
+ return {
390
+ artifact_name: {
391
+ version_name: version_response.id
392
+ for version_name, version_response in artifact_versions.items()
393
+ }
394
+ for artifact_name, artifact_versions in self.deployment_artifacts.items()
371
395
  }
372
396
 
373
397
  @property
@@ -380,15 +404,28 @@ class ModelVersionResponse(
380
404
  Dictionary of data artifacts with versions as
381
405
  Dict[str, Dict[str, ArtifactResponse]]
382
406
  """
407
+ logger.warning(
408
+ "ModelVersionResponse.data_artifacts is deprecated and will be "
409
+ "removed in a future release."
410
+ )
411
+
383
412
  from zenml.client import Client
384
413
 
385
- return {
386
- name: {
387
- version: Client().get_artifact_version(a)
388
- for version, a in self.data_artifact_ids[name].items()
389
- }
390
- for name in self.data_artifact_ids
391
- }
414
+ artifact_versions = pagination_utils.depaginate(
415
+ Client().list_artifact_versions,
416
+ model_version_id=self.id,
417
+ type=ArtifactType.DATA,
418
+ project=self.project_id,
419
+ )
420
+
421
+ result: Dict[str, Dict[str, "ArtifactVersionResponse"]] = {}
422
+ for artifact_version in artifact_versions:
423
+ result.setdefault(artifact_version.name, {})
424
+ result[artifact_version.name][artifact_version.version] = (
425
+ artifact_version
426
+ )
427
+
428
+ return result
392
429
 
393
430
  @property
394
431
  def deployment_artifacts(
@@ -400,14 +437,49 @@ class ModelVersionResponse(
400
437
  Dictionary of deployment artifacts with versions as
401
438
  Dict[str, Dict[str, ArtifactResponse]]
402
439
  """
440
+ logger.warning(
441
+ "ModelVersionResponse.deployment_artifacts is deprecated and will "
442
+ "be removed in a future release."
443
+ )
444
+
445
+ from zenml.client import Client
446
+
447
+ artifact_versions = pagination_utils.depaginate(
448
+ Client().list_artifact_versions,
449
+ model_version_id=self.id,
450
+ type=ArtifactType.SERVICE,
451
+ project=self.project_id,
452
+ )
453
+
454
+ result: Dict[str, Dict[str, "ArtifactVersionResponse"]] = {}
455
+ for artifact_version in artifact_versions:
456
+ result.setdefault(artifact_version.name, {})
457
+ result[artifact_version.name][artifact_version.version] = (
458
+ artifact_version
459
+ )
460
+
461
+ return result
462
+
463
+ @property
464
+ def pipeline_run_ids(self) -> Dict[str, UUID]:
465
+ """Pipeline runs linked to this model version.
466
+
467
+ Returns:
468
+ Pipeline runs linked to this model version.
469
+ """
470
+ logger.warning(
471
+ "ModelVersionResponse.pipeline_run_ids is deprecated and will be "
472
+ "removed in a future release."
473
+ )
474
+
403
475
  from zenml.client import Client
404
476
 
405
477
  return {
406
- name: {
407
- version: Client().get_artifact_version(a)
408
- for version, a in self.deployment_artifact_ids[name].items()
409
- }
410
- for name in self.deployment_artifact_ids
478
+ link.pipeline_run.name: link.pipeline_run.id
479
+ for link in pagination_utils.depaginate(
480
+ Client().list_model_version_pipeline_run_links,
481
+ model_version_id=self.id,
482
+ )
411
483
  }
412
484
 
413
485
  @property
@@ -417,11 +489,19 @@ class ModelVersionResponse(
417
489
  Returns:
418
490
  Dictionary of Pipeline Runs as PipelineRunResponseModel
419
491
  """
492
+ logger.warning(
493
+ "ModelVersionResponse.pipeline_runs is deprecated and will be "
494
+ "removed in a future release."
495
+ )
496
+
420
497
  from zenml.client import Client
421
498
 
422
499
  return {
423
- name: Client().get_pipeline_run(pr)
424
- for name, pr in self.pipeline_run_ids.items()
500
+ link.pipeline_run.name: link.pipeline_run
501
+ for link in pagination_utils.depaginate(
502
+ Client().list_model_version_pipeline_run_links,
503
+ model_version_id=self.id,
504
+ )
425
505
  }
426
506
 
427
507
  def _get_linked_object(
@@ -450,6 +530,7 @@ class ModelVersionResponse(
450
530
  version=version,
451
531
  model_version_id=self.id,
452
532
  type=type,
533
+ project=self.project_id,
453
534
  hydrate=True,
454
535
  )
455
536
 
@@ -525,19 +606,6 @@ class ModelVersionResponse(
525
606
  """
526
607
  return self._get_linked_object(name, version, ArtifactType.SERVICE)
527
608
 
528
- def get_pipeline_run(self, name: str) -> "PipelineRunResponse":
529
- """Get pipeline run linked to this version.
530
-
531
- Args:
532
- name: The name of the pipeline run to retrieve.
533
-
534
- Returns:
535
- PipelineRun as PipelineRunResponseModel
536
- """
537
- from zenml.client import Client
538
-
539
- return Client().get_pipeline_run(self.pipeline_run_ids[name])
540
-
541
609
  def set_stage(
542
610
  self, stage: Union[str, ModelStages], force: bool = False
543
611
  ) -> None:
@@ -638,7 +706,6 @@ class ModelVersionFilter(
638
706
  custom_filters = super().get_custom_filters(table)
639
707
 
640
708
  if self.model:
641
- value, operator = self._resolve_operator(self.model)
642
709
  model_filter = and_(
643
710
  ModelVersionSchema.model_id == ModelSchema.id, # type: ignore[arg-type]
644
711
  self.generate_name_or_id_query_conditions(
@@ -98,15 +98,6 @@ class PipelineUpdate(BaseUpdate):
98
98
  class PipelineResponseBody(ProjectScopedResponseBody):
99
99
  """Response body for pipelines."""
100
100
 
101
- latest_run_id: Optional[UUID] = Field(
102
- default=None,
103
- title="The ID of the latest run of the pipeline.",
104
- )
105
- latest_run_status: Optional[ExecutionStatus] = Field(
106
- default=None,
107
- title="The status of the latest run of the pipeline.",
108
- )
109
-
110
101
 
111
102
  class PipelineResponseMetadata(ProjectScopedResponseMetadata):
112
103
  """Response metadata for pipelines."""
@@ -124,6 +115,14 @@ class PipelineResponseResources(ProjectScopedResponseResources):
124
115
  default=None,
125
116
  title="The user that created the latest run of this pipeline.",
126
117
  )
118
+ latest_run_id: Optional[UUID] = Field(
119
+ default=None,
120
+ title="The ID of the latest run of the pipeline.",
121
+ )
122
+ latest_run_status: Optional[ExecutionStatus] = Field(
123
+ default=None,
124
+ title="The status of the latest run of the pipeline.",
125
+ )
127
126
  tags: List[TagResponse] = Field(
128
127
  title="Tags associated with the pipeline.",
129
128
  )
@@ -233,7 +232,7 @@ class PipelineResponse(
233
232
  Returns:
234
233
  the value of the property.
235
234
  """
236
- return self.get_body().latest_run_id
235
+ return self.get_resources().latest_run_id
237
236
 
238
237
  @property
239
238
  def latest_run_status(self) -> Optional[ExecutionStatus]:
@@ -242,7 +241,7 @@ class PipelineResponse(
242
241
  Returns:
243
242
  the value of the property.
244
243
  """
245
- return self.get_body().latest_run_status
244
+ return self.get_resources().latest_run_status
246
245
 
247
246
  @property
248
247
  def tags(self) -> List[TagResponse]:
@@ -13,7 +13,7 @@
13
13
  # permissions and limitations under the License.
14
14
  """Models representing pipeline deployments."""
15
15
 
16
- from typing import Any, Dict, Optional, TypeVar, Union
16
+ from typing import Any, Dict, Optional, Union
17
17
  from uuid import UUID
18
18
 
19
19
  from pydantic import Field
@@ -22,7 +22,6 @@ from zenml.config.pipeline_configurations import PipelineConfiguration
22
22
  from zenml.config.pipeline_spec import PipelineSpec
23
23
  from zenml.config.step_configurations import Step
24
24
  from zenml.models.v2.base.base import BaseZenModel
25
- from zenml.models.v2.base.page import Page
26
25
  from zenml.models.v2.base.scoped import (
27
26
  ProjectScopedFilter,
28
27
  ProjectScopedRequest,
@@ -41,9 +40,6 @@ from zenml.models.v2.core.pipeline_build import (
41
40
  )
42
41
  from zenml.models.v2.core.schedule import ScheduleResponse
43
42
  from zenml.models.v2.core.stack import StackResponse
44
- from zenml.models.v2.core.trigger import TriggerResponse
45
-
46
- TriggerPage = TypeVar("TriggerPage", bound=Page[TriggerResponse])
47
43
 
48
44
  # ------------------ Request Model ------------------
49
45
 
@@ -189,10 +185,6 @@ class PipelineDeploymentResponseMetadata(ProjectScopedResponseMetadata):
189
185
  class PipelineDeploymentResponseResources(ProjectScopedResponseResources):
190
186
  """Class for all resource models associated with the pipeline deployment entity."""
191
187
 
192
- triggers: TriggerPage = Field( # type: ignore[valid-type]
193
- title="The triggers configured with this event source.",
194
- )
195
-
196
188
 
197
189
  class PipelineDeploymentResponse(
198
190
  ProjectScopedResponse[
@@ -48,6 +48,7 @@ from zenml.models.v2.base.scoped import (
48
48
  from zenml.models.v2.core.logs import LogsRequest
49
49
  from zenml.models.v2.core.model_version import ModelVersionResponse
50
50
  from zenml.models.v2.core.tag import TagResponse
51
+ from zenml.utils import pagination_utils
51
52
  from zenml.utils.tag_utils import Tag
52
53
 
53
54
  if TYPE_CHECKING:
@@ -193,9 +194,6 @@ class PipelineRunResponseMetadata(ProjectScopedResponseMetadata):
193
194
  default={},
194
195
  title="Metadata associated with this pipeline run.",
195
196
  )
196
- steps: Dict[str, "StepRunResponse"] = Field(
197
- default={}, title="The steps of this run."
198
- )
199
197
  config: PipelineConfiguration = Field(
200
198
  title="The pipeline configuration used for this pipeline run.",
201
199
  )
@@ -238,10 +236,6 @@ class PipelineRunResponseMetadata(ProjectScopedResponseMetadata):
238
236
  default=False,
239
237
  description="Whether a template can be created from this run.",
240
238
  )
241
- step_substitutions: Dict[str, Dict[str, str]] = Field(
242
- title="Substitutions used in the step runs of this pipeline run.",
243
- default_factory=dict,
244
- )
245
239
 
246
240
 
247
241
  class PipelineRunResponseResources(ProjectScopedResponseResources):
@@ -472,7 +466,15 @@ class PipelineRunResponse(
472
466
  Returns:
473
467
  the value of the property.
474
468
  """
475
- return self.get_metadata().steps
469
+ from zenml.client import Client
470
+
471
+ return {
472
+ step.name: step
473
+ for step in pagination_utils.depaginate(
474
+ Client().list_run_steps,
475
+ pipeline_run_id=self.id,
476
+ )
477
+ }
476
478
 
477
479
  @property
478
480
  def config(self) -> PipelineConfiguration:
@@ -555,15 +557,6 @@ class PipelineRunResponse(
555
557
  """
556
558
  return self.get_metadata().is_templatable
557
559
 
558
- @property
559
- def step_substitutions(self) -> Dict[str, Dict[str, str]]:
560
- """The `step_substitutions` property.
561
-
562
- Returns:
563
- the value of the property.
564
- """
565
- return self.get_metadata().step_substitutions
566
-
567
560
  @property
568
561
  def model_version(self) -> Optional[ModelVersionResponse]:
569
562
  """The `model_version` property.
@@ -130,14 +130,6 @@ class RunTemplateResponseBody(ProjectScopedResponseBody):
130
130
  default=False,
131
131
  title="Whether the run template is hidden.",
132
132
  )
133
- latest_run_id: Optional[UUID] = Field(
134
- default=None,
135
- title="The ID of the latest run of the run template.",
136
- )
137
- latest_run_status: Optional[ExecutionStatus] = Field(
138
- default=None,
139
- title="The status of the latest run of the run template.",
140
- )
141
133
 
142
134
 
143
135
  class RunTemplateResponseMetadata(ProjectScopedResponseMetadata):
@@ -179,6 +171,14 @@ class RunTemplateResponseResources(ProjectScopedResponseResources):
179
171
  tags: List[TagResponse] = Field(
180
172
  title="Tags associated with the run template.",
181
173
  )
174
+ latest_run_id: Optional[UUID] = Field(
175
+ default=None,
176
+ title="The ID of the latest run of the run template.",
177
+ )
178
+ latest_run_status: Optional[ExecutionStatus] = Field(
179
+ default=None,
180
+ title="The status of the latest run of the run template.",
181
+ )
182
182
 
183
183
 
184
184
  class RunTemplateResponse(
@@ -233,7 +233,7 @@ class RunTemplateResponse(
233
233
  Returns:
234
234
  the value of the property.
235
235
  """
236
- return self.get_body().latest_run_id
236
+ return self.get_resources().latest_run_id
237
237
 
238
238
  @property
239
239
  def latest_run_status(self) -> Optional[ExecutionStatus]:
@@ -242,7 +242,7 @@ class RunTemplateResponse(
242
242
  Returns:
243
243
  the value of the property.
244
244
  """
245
- return self.get_body().latest_run_status
245
+ return self.get_resources().latest_run_status
246
246
 
247
247
  @property
248
248
  def description(self) -> Optional[str]: