zenml-nightly 0.73.0.dev20250205__py3-none-any.whl → 0.74.0.dev20250207__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 (164) hide show
  1. zenml/VERSION +1 -1
  2. zenml/cli/utils.py +42 -53
  3. zenml/client.py +6 -2
  4. zenml/models/__init__.py +4 -2
  5. zenml/models/v2/base/filter.py +34 -11
  6. zenml/models/v2/base/scoped.py +4 -4
  7. zenml/models/v2/core/artifact.py +3 -3
  8. zenml/models/v2/core/artifact_version.py +22 -5
  9. zenml/models/v2/core/model.py +13 -3
  10. zenml/models/v2/core/model_version.py +13 -3
  11. zenml/models/v2/core/pipeline.py +11 -4
  12. zenml/models/v2/core/pipeline_run.py +20 -7
  13. zenml/models/v2/core/run_template.py +13 -3
  14. zenml/models/v2/core/step_run.py +9 -2
  15. zenml/pipelines/pipeline_definition.py +28 -12
  16. zenml/zen_server/dashboard/assets/{404-c8OuXDAT.js → 404-0leSZ7Vv.js} +1 -1
  17. zenml/zen_server/dashboard/assets/@radix-B7OY3d6N.js +85 -0
  18. zenml/zen_server/dashboard/assets/{@react-router-B3Z5rLr2.js → @react-router-CiF9laDg.js} +1 -1
  19. zenml/zen_server/dashboard/assets/@reactflow-DgwdIYyq.js +17 -0
  20. zenml/zen_server/dashboard/assets/@tanstack-W1pLDzVg.js +22 -0
  21. zenml/zen_server/dashboard/assets/{AlertDialogDropdownItem-8yPFDxEI.js → AlertDialogDropdownItem-BS4AoVte.js} +1 -1
  22. zenml/zen_server/dashboard/assets/CodeSnippet-CK2z-88v.js +9 -0
  23. zenml/zen_server/dashboard/assets/{CollapsibleCard-TiI4lId1.js → CollapsibleCard-BAuAdAje.js} +1 -1
  24. zenml/zen_server/dashboard/assets/{Commands-BcR2Arie.js → Commands-vjMqENS8.js} +1 -1
  25. zenml/zen_server/dashboard/assets/{ComponentBadge-BqQNUZgb.js → ComponentBadge-CNIM1NH_.js} +1 -1
  26. zenml/zen_server/dashboard/assets/{CopyButton-DCiXO3JC.js → CopyButton-BQf5nLgq.js} +1 -1
  27. zenml/zen_server/dashboard/assets/CsvVizualization-D77lRMYi.js +15 -0
  28. zenml/zen_server/dashboard/assets/{DeleteAlertDialog-DrPjHtXX.js → DeleteAlertDialog-CcDX1Hm_.js} +1 -1
  29. zenml/zen_server/dashboard/assets/{DialogItem-BYG7d_M2.js → DialogItem-L8-LNKgK.js} +1 -1
  30. zenml/zen_server/dashboard/assets/{DisplayDate-CDMUcQHS.js → DisplayDate-CZV8x8pB.js} +1 -1
  31. zenml/zen_server/dashboard/assets/{EmptyState-BzdlCwp3.js → EmptyState-C8-mkRwm.js} +1 -1
  32. zenml/zen_server/dashboard/assets/{Error-C1zbWr19.js → Error-DPRIglzA.js} +1 -1
  33. zenml/zen_server/dashboard/assets/{ExecutionStatus-Ct9srgHC.js → ExecutionStatus-DHmX6Vtj.js} +1 -1
  34. zenml/zen_server/dashboard/assets/{Helpbox-Bm_1Zx9f.js → Helpbox-DWOXAebr.js} +1 -1
  35. zenml/zen_server/dashboard/assets/{Infobox-OQdkCLSP.js → Infobox-Ls_918eD.js} +1 -1
  36. zenml/zen_server/dashboard/assets/{InlineAvatar-CQNjKoEQ.js → InlineAvatar-B9O7QxVo.js} +1 -1
  37. zenml/zen_server/dashboard/assets/{Lock-CYYy18Mm.js → Lock-6WGsAdiw.js} +1 -1
  38. zenml/zen_server/dashboard/assets/MarkdownVisualization-CPm4B45C.js +14 -0
  39. zenml/zen_server/dashboard/assets/{NestedCollapsible-DDgd2SGb.js → NestedCollapsible-CyUu7Vrm.js} +1 -1
  40. zenml/zen_server/dashboard/assets/{NumberBox-Dtp3J6g5.js → NumberBox-CqUodACv.js} +1 -1
  41. zenml/zen_server/dashboard/assets/{Partials-MD3e95Dk.js → Partials-CP_ZenWO.js} +1 -1
  42. zenml/zen_server/dashboard/assets/{PasswordChecker-B0nadgh6.js → PasswordChecker-Xh6Egpx9.js} +1 -1
  43. zenml/zen_server/dashboard/assets/ProBadge-DJCjz8Ox.js +1 -0
  44. zenml/zen_server/dashboard/assets/{ProCta-W2PEvNow.js → ProCta-BsYjjdUZ.js} +1 -1
  45. zenml/zen_server/dashboard/assets/{ProviderIcon-DfDUOeAy.js → ProviderIcon-C_XK4oaW.js} +1 -1
  46. zenml/zen_server/dashboard/assets/{ProviderRadio-B81Elxrc.js → ProviderRadio-C9z7SJnN.js} +1 -1
  47. zenml/zen_server/dashboard/assets/{RunSelector-DOXgdry5.js → RunSelector-C-YzhiVb.js} +1 -1
  48. zenml/zen_server/dashboard/assets/{RunsBody-Bnx2fxub.js → RunsBody-CNd_ej8-.js} +1 -1
  49. zenml/zen_server/dashboard/assets/{SearchField-Yjv-KRW4.js → SearchField-BYL1oNec.js} +1 -1
  50. zenml/zen_server/dashboard/assets/{SecretTooltip-EKpMlG2f.js → SecretTooltip-CYL2o5Gs.js} +1 -1
  51. zenml/zen_server/dashboard/assets/{SetPassword-CDLy57PZ.js → SetPassword-BnaLppIC.js} +1 -1
  52. zenml/zen_server/dashboard/assets/{StackList-DKQaLDo4.js → StackList-6XLpNMwt.js} +1 -1
  53. zenml/zen_server/dashboard/assets/{Tabs-B5E-o_h6.js → Tabs-BewshUAE.js} +1 -1
  54. zenml/zen_server/dashboard/assets/{Tick-DSYBiuXU.js → Tick-DHVI3HP0.js} +1 -1
  55. zenml/zen_server/dashboard/assets/{UpdatePasswordSchemas-HBNOeyoP.js → UpdatePasswordSchemas-CtzucewX.js} +1 -1
  56. zenml/zen_server/dashboard/assets/{UsageReason-DXtPS5nE.js → UsageReason-Bwhjhrv_.js} +1 -1
  57. zenml/zen_server/dashboard/assets/{WizardFooter-_1VSMZ_c.js → WizardFooter-CPk11vwc.js} +1 -1
  58. zenml/zen_server/dashboard/assets/{all-pipeline-runs-query-D0qDLdKB.js → all-pipeline-runs-query-Dh4L44hJ.js} +1 -1
  59. zenml/zen_server/dashboard/assets/{check-DloQpStc.js → check-BB0dVtdW.js} +1 -1
  60. zenml/zen_server/dashboard/assets/{check-circle-jNbX5-sR.js → check-circle-ByvKqRS_.js} +1 -1
  61. zenml/zen_server/dashboard/assets/{chevron-down-6JyMkfjR.js → chevron-down-DAWlSNuH.js} +1 -1
  62. zenml/zen_server/dashboard/assets/{chevron-right-double-D7ojK9Co.js → chevron-right-double-C5DtVuMS.js} +1 -1
  63. zenml/zen_server/dashboard/assets/clock-BWL9qBKt.js +1 -0
  64. zenml/zen_server/dashboard/assets/{code-browser-CUFUIHfp.js → code-browser-C6DP7a-M.js} +1 -1
  65. zenml/zen_server/dashboard/assets/{copy-C8XQA2Ug.js → copy-DmyMnHSy.js} +1 -1
  66. zenml/zen_server/dashboard/assets/{create-stack-7JzgAYAm.js → create-stack-BdNm_XEl.js} +1 -1
  67. zenml/zen_server/dashboard/assets/{delete-run-CUdtYFLl.js → delete-run-CUo7vxbD.js} +1 -1
  68. zenml/zen_server/dashboard/assets/{docker-BdA9vrnW.js → docker-C2dCztnc.js} +1 -1
  69. zenml/zen_server/dashboard/assets/{dots-horizontal-otGBOSDJ.js → dots-horizontal-C6QCz7jg.js} +1 -1
  70. zenml/zen_server/dashboard/assets/{form-schemas-B6PCV3Y4.js → form-schemas-B4cZxcUy.js} +1 -1
  71. zenml/zen_server/dashboard/assets/{gcp-CFtm4BA7.js → gcp-B1H0QrG5.js} +1 -1
  72. zenml/zen_server/dashboard/assets/{help-Cc9bBIJH.js → help-CgM5zwtY.js} +1 -1
  73. zenml/zen_server/dashboard/assets/index-4aOgYud0.js +1 -0
  74. zenml/zen_server/dashboard/assets/{index-CJ5IfeAl.js → index-6CSA2ij5.js} +1 -1
  75. zenml/zen_server/dashboard/assets/{index-Ceyzb1yI.js → index-BOeKQ3N4.js} +1 -1
  76. zenml/zen_server/dashboard/assets/{index-D4yoZ_gH.js → index-Cf1Ph5ra.js} +1 -1
  77. zenml/zen_server/dashboard/assets/index-D25WcEJJ.js +55 -0
  78. zenml/zen_server/dashboard/assets/index-apknmtn7.css +1 -0
  79. zenml/zen_server/dashboard/assets/index.esm-C5jC4e7W.js +1 -0
  80. zenml/zen_server/dashboard/assets/{key-icon-aH-QIa5R.js → key-icon-DuqxBBkq.js} +1 -1
  81. zenml/zen_server/dashboard/assets/{kubernetes-B2wmAJ1d.js → kubernetes-Bn54mlK-.js} +1 -1
  82. zenml/zen_server/dashboard/assets/{layout-BtHBmE4w.js → layout-Cj7MRWSi.js} +1 -1
  83. zenml/zen_server/dashboard/assets/{link-external-b9AXw_sW.js → link-external-CZxZlXqi.js} +1 -1
  84. zenml/zen_server/dashboard/assets/{login-mutation-BaeJ7MAg.js → login-mutation-EQPLh5Ne.js} +1 -1
  85. zenml/zen_server/dashboard/assets/{logs-WMSM52RF.js → logs-DYV_bf7Q.js} +1 -1
  86. zenml/zen_server/dashboard/assets/{not-found-MGptrNBk.js → not-found-DrxGMGNL.js} +1 -1
  87. zenml/zen_server/dashboard/assets/{package-C6uypY4h.js → package-MUwoWZFx.js} +1 -1
  88. zenml/zen_server/dashboard/assets/{page-C37IDa-Q.js → page-9AiMoKly.js} +1 -1
  89. zenml/zen_server/dashboard/assets/{page-yNh6PQKt.js → page-BF9z97Jf.js} +1 -1
  90. zenml/zen_server/dashboard/assets/{page-Aeu3v0MQ.js → page-BK6mVOKJ.js} +1 -1
  91. zenml/zen_server/dashboard/assets/{page-Ox-eC1ik.js → page-BK722dMv.js} +1 -1
  92. zenml/zen_server/dashboard/assets/{page-CbwI6emp.js → page-BNXv13PD.js} +1 -1
  93. zenml/zen_server/dashboard/assets/page-BmzgDMUV.js +1 -0
  94. zenml/zen_server/dashboard/assets/{page-Dv5lN2w7.js → page-BrUvz6Ag.js} +1 -1
  95. zenml/zen_server/dashboard/assets/{page-DyAuja95.js → page-Bt_6RgeM.js} +1 -1
  96. zenml/zen_server/dashboard/assets/{page-DKQ3wZgr.js → page-C2IJq-kV.js} +1 -1
  97. zenml/zen_server/dashboard/assets/{page-BhOXn-s9.js → page-C2KxJ-Cc.js} +1 -1
  98. zenml/zen_server/dashboard/assets/page-C9v0QDj8.js +2 -0
  99. zenml/zen_server/dashboard/assets/{page-CeNL9JWi.js → page-CHdCb7Xx.js} +1 -1
  100. zenml/zen_server/dashboard/assets/{page-CkPwPmLZ.js → page-CdQ_DdH1.js} +1 -1
  101. zenml/zen_server/dashboard/assets/page-ChFcVUFX.js +1 -0
  102. zenml/zen_server/dashboard/assets/{page-BXgXP-Qj.js → page-ChMOMdKd.js} +1 -1
  103. zenml/zen_server/dashboard/assets/{page-BbljjC-k.js → page-ChxtdsVY.js} +1 -1
  104. zenml/zen_server/dashboard/assets/{page-BXrtxEbw.js → page-Cj5NSnW5.js} +1 -1
  105. zenml/zen_server/dashboard/assets/{page-CXPc-HN1.js → page-Cz58X7s5.js} +2 -2
  106. zenml/zen_server/dashboard/assets/{page-D-KPzeQb.js → page-D-qjN5JP.js} +1 -1
  107. zenml/zen_server/dashboard/assets/{page-khp8QJ6b.js → page-D1jrbald.js} +1 -1
  108. zenml/zen_server/dashboard/assets/{page-CBiT2Ox9.js → page-DRYjt60M.js} +1 -1
  109. zenml/zen_server/dashboard/assets/{page-BKwwfTNy.js → page-De3oGQ3E.js} +1 -1
  110. zenml/zen_server/dashboard/assets/{page-BaUDR9Ri.js → page-DjO6yHuW.js} +1 -1
  111. zenml/zen_server/dashboard/assets/page-DzvVg_ZM.js +1 -0
  112. zenml/zen_server/dashboard/assets/{page-C4JpDeUM.js → page-JZ8WXQfh.js} +1 -1
  113. zenml/zen_server/dashboard/assets/{page-DbW8MfQ4.js → page-VUTBxySs.js} +1 -1
  114. zenml/zen_server/dashboard/assets/{page-CmJU3Gqo.js → page-YhLt4PLe.js} +1 -1
  115. zenml/zen_server/dashboard/assets/{page-CoFVtzhG.js → page-_ijqeiyw.js} +1 -1
  116. zenml/zen_server/dashboard/assets/page-ezpoc4vG.js +2 -0
  117. zenml/zen_server/dashboard/assets/{page-CB2_GdBA.js → page-fVsaiQi7.js} +1 -1
  118. zenml/zen_server/dashboard/assets/{page-Dvbq1BoF.js → page-q2kbm2x8.js} +1 -1
  119. zenml/zen_server/dashboard/assets/{page-BUjw8Tp1.js → page-qw7ivMVQ.js} +1 -1
  120. zenml/zen_server/dashboard/assets/{page-DzrdL2v1.js → page-y8flqx2D.js} +1 -1
  121. zenml/zen_server/dashboard/assets/{persist-K7AY0ju4.js → persist-CDPcIIlF.js} +1 -1
  122. zenml/zen_server/dashboard/assets/{persist-DBTFy--v.js → persist-Hxrm9o7f.js} +1 -1
  123. zenml/zen_server/dashboard/assets/{plus-tf1V2hTJ.js → plus-noRapLU5.js} +1 -1
  124. zenml/zen_server/dashboard/assets/react-error-boundary.esm-DOkSniBS.js +1 -0
  125. zenml/zen_server/dashboard/assets/{refresh-BjOeWlEq.js → refresh-Jr_advur.js} +1 -1
  126. zenml/zen_server/dashboard/assets/{rocket-DjT2cDvG.js → rocket-GOlMupOS.js} +1 -1
  127. zenml/zen_server/dashboard/assets/{service-BvOYLH5b.js → service-Db_ee3ql.js} +1 -1
  128. zenml/zen_server/dashboard/assets/sharedSchema-BE8kPXOv.js +14 -0
  129. zenml/zen_server/dashboard/assets/{stack-detail-query-DMJoxwgv.js → stack-detail-query-B2rvP4uR.js} +1 -1
  130. zenml/zen_server/dashboard/assets/{tick-circle-BEX_Tp4v.js → tick-circle-DKkiYi_R.js} +1 -1
  131. zenml/zen_server/dashboard/assets/{trash-arLUMWMS.js → trash-Dm8g1gZ8.js} +1 -1
  132. zenml/zen_server/dashboard/assets/{update-server-settings-mutation-ATZDNNZk.js → update-server-settings-mutation-Bgnr2Ssw.js} +1 -1
  133. zenml/zen_server/dashboard/assets/{url-BWJXzuI4.js → url-1R6qfphK.js} +1 -1
  134. zenml/zen_server/dashboard/assets/{zod-BwEbpOxH.js → zod-C2FdaFLe.js} +1 -1
  135. zenml/zen_server/dashboard/index.html +8 -8
  136. zenml/zen_stores/migrations/versions/0.74.0_release.py +23 -0
  137. zenml/zen_stores/schemas/artifact_schemas.py +31 -4
  138. zenml/zen_stores/schemas/model_schemas.py +31 -6
  139. zenml/zen_stores/schemas/pipeline_run_schemas.py +1 -1
  140. zenml/zen_stores/schemas/pipeline_schemas.py +35 -8
  141. zenml/zen_stores/schemas/run_template_schemas.py +42 -14
  142. {zenml_nightly-0.73.0.dev20250205.dist-info → zenml_nightly-0.74.0.dev20250207.dist-info}/METADATA +2 -2
  143. {zenml_nightly-0.73.0.dev20250205.dist-info → zenml_nightly-0.74.0.dev20250207.dist-info}/RECORD +148 -144
  144. zenml/zen_server/dashboard/assets/@radix-DeK6qiuw.js +0 -85
  145. zenml/zen_server/dashboard/assets/@reactflow-6JPoencd.js +0 -17
  146. zenml/zen_server/dashboard/assets/@tanstack-DT5WLu9C.js +0 -22
  147. zenml/zen_server/dashboard/assets/CodeSnippet-Qh1ae_DJ.js +0 -9
  148. zenml/zen_server/dashboard/assets/CsvVizualization-O9cVIaL8.js +0 -15
  149. zenml/zen_server/dashboard/assets/MarkdownVisualization-ylXaAxev.js +0 -14
  150. zenml/zen_server/dashboard/assets/ProBadge-D784iVNC.js +0 -1
  151. zenml/zen_server/dashboard/assets/index-B6U0OkEN.css +0 -1
  152. zenml/zen_server/dashboard/assets/index-CxO6541P.js +0 -55
  153. zenml/zen_server/dashboard/assets/index-Uu49AX48.js +0 -1
  154. zenml/zen_server/dashboard/assets/index.esm-Dy6Z9Ung.js +0 -1
  155. zenml/zen_server/dashboard/assets/page-BCgEdmhP.js +0 -1
  156. zenml/zen_server/dashboard/assets/page-DWWhxCoF.js +0 -1
  157. zenml/zen_server/dashboard/assets/page-I2B4Ocv8.js +0 -1
  158. zenml/zen_server/dashboard/assets/page-OdjGauvw.js +0 -2
  159. zenml/zen_server/dashboard/assets/sharedSchema-xJDsJNgJ.js +0 -14
  160. /zenml/zen_server/dashboard/assets/{@reactflow-C26Olbza.css → @reactflow-Fd0xVSp_.css} +0 -0
  161. /zenml/zen_server/dashboard/assets/{CodeSnippet-Bbx6fIb6.css → CodeSnippet-CK5CxKct.css} +0 -0
  162. {zenml_nightly-0.73.0.dev20250205.dist-info → zenml_nightly-0.74.0.dev20250207.dist-info}/LICENSE +0 -0
  163. {zenml_nightly-0.73.0.dev20250205.dist-info → zenml_nightly-0.74.0.dev20250207.dist-info}/WHEEL +0 -0
  164. {zenml_nightly-0.73.0.dev20250205.dist-info → zenml_nightly-0.74.0.dev20250207.dist-info}/entry_points.txt +0 -0
@@ -5,14 +5,14 @@
5
5
  <link rel="icon" type="image/svg+xml" href="/favicon.ico" />
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
7
  <title>ZenML Dashboard</title>
8
- <script type="module" crossorigin src="/assets/index-CxO6541P.js"></script>
9
- <link rel="modulepreload" crossorigin href="/assets/@radix-DeK6qiuw.js">
10
- <link rel="modulepreload" crossorigin href="/assets/@tanstack-DT5WLu9C.js">
11
- <link rel="modulepreload" crossorigin href="/assets/@react-router-B3Z5rLr2.js">
12
- <link rel="modulepreload" crossorigin href="/assets/@reactflow-6JPoencd.js">
13
- <link rel="stylesheet" crossorigin href="/assets/@reactflow-C26Olbza.css">
14
- <link rel="stylesheet" crossorigin href="/assets/index-B6U0OkEN.css">
15
- <link rel="prefetch" href="/assets/inter-cyrillic-ext-400-normal-Dc4VJyIJ.woff2"><link rel="prefetch" href="/assets/inter-cyrillic-400-normal-BLGc9T1a.woff2"><link rel="prefetch" href="/assets/inter-greek-ext-400-normal-Bput3-QP.woff2"><link rel="prefetch" href="/assets/inter-greek-400-normal-DxZsaF_h.woff2"><link rel="prefetch" href="/assets/inter-vietnamese-400-normal-DMkecbls.woff2"><link rel="prefetch" href="/assets/inter-latin-ext-400-normal-hnt3BR84.woff2"><link rel="prefetch" href="/assets/inter-latin-400-normal-BOOGhInR.woff2"><link rel="prefetch" href="/assets/inter-cyrillic-ext-500-normal-BShVwWPj.woff2"><link rel="prefetch" href="/assets/inter-cyrillic-500-normal-D4Vwzodn.woff2"><link rel="prefetch" href="/assets/inter-greek-ext-500-normal-B6guLgqG.woff2"><link rel="prefetch" href="/assets/inter-greek-500-normal-CeQXL5ds.woff2"><link rel="prefetch" href="/assets/inter-vietnamese-500-normal-DOriooB6.woff2"><link rel="prefetch" href="/assets/inter-latin-ext-500-normal-CIS2RHJS.woff2"><link rel="prefetch" href="/assets/inter-latin-500-normal-D2bGa7uu.woff2"><link rel="prefetch" href="/assets/inter-cyrillic-ext-600-normal-CaqZN2hq.woff2"><link rel="prefetch" href="/assets/inter-cyrillic-600-normal-BGBWG807.woff2"><link rel="prefetch" href="/assets/inter-greek-ext-600-normal-Cnui8OiR.woff2"><link rel="prefetch" href="/assets/inter-greek-600-normal-Dhlb-90d.woff2"><link rel="prefetch" href="/assets/inter-latin-ext-600-normal-BnYJhD27.woff2"><link rel="prefetch" href="/assets/inter-latin-600-normal-D273HNI0.woff2"><link rel="prefetch" href="/assets/inter-vietnamese-600-normal-Cc8MFFhd.woff2"><link rel="prefetch" href="/assets/inter-cyrillic-ext-400-normal-BPnxn4xp.woff"><link rel="prefetch" href="/assets/inter-cyrillic-400-normal-ZzOtrSSW.woff"><link rel="prefetch" href="/assets/inter-greek-ext-400-normal-DCpCPQOf.woff"><link rel="prefetch" href="/assets/inter-greek-400-normal-BZzXV7-1.woff"><link rel="prefetch" href="/assets/inter-vietnamese-400-normal-BUNmGMP1.woff"><link rel="prefetch" href="/assets/inter-latin-ext-400-normal-C1t-h-pH.woff"><link rel="prefetch" href="/assets/inter-latin-400-normal-gitzw0hO.woff"><link rel="prefetch" href="/assets/inter-cyrillic-ext-500-normal-CUiC4oBV.woff"><link rel="prefetch" href="/assets/inter-cyrillic-500-normal-DH2hs3aW.woff"><link rel="prefetch" href="/assets/inter-greek-ext-500-normal-M2hEX8vc.woff"><link rel="prefetch" href="/assets/inter-greek-500-normal-d_eO-yCQ.woff"><link rel="prefetch" href="/assets/inter-vietnamese-500-normal-DQPw2Hwd.woff"><link rel="prefetch" href="/assets/inter-latin-ext-500-normal-UMdmhHu2.woff"><link rel="prefetch" href="/assets/inter-latin-500-normal-deR1Tlfd.woff"><link rel="prefetch" href="/assets/inter-cyrillic-ext-600-normal-Bt9VVOA-.woff"><link rel="prefetch" href="/assets/inter-cyrillic-600-normal-BuzJQFbW.woff"><link rel="prefetch" href="/assets/inter-greek-ext-600-normal-C9WLioJ8.woff"><link rel="prefetch" href="/assets/inter-greek-600-normal-CwicyhtI.woff"><link rel="prefetch" href="/assets/inter-latin-ext-600-normal-CAF0vJDd.woff"><link rel="prefetch" href="/assets/inter-vietnamese-600-normal-Cm6aH8_k.woff"><link rel="prefetch" href="/assets/inter-latin-600-normal-B5cFAncS.woff"><link rel="prefetch" href="/assets/cloud-squares-DeRLMopf.svg"><link rel="prefetch" href="/assets/mcp-Cb1aMeoq.webp"><link rel="prefetch" href="/assets/acp-DOsXjFc7.webp"><link rel="prefetch" href="/assets/settings_preview-0JLrRgHP.webp"><link rel="prefetch" href="/assets/upgrade-form-CwRHBuXB.webp"><link rel="prefetch" href="/assets/connectors-video-C9qY4syJ.svg"><link rel="prefetch" href="/assets/repos-video-D8kpu60k.svg"><link rel="prefetch" href="/assets/tour-cover-BYfeen6M.webp"><link rel="prefetch" href="/assets/adam-e-y0WnB_.webp"><link rel="prefetch" href="/assets/alex-DcCuDHPg.webp"><link rel="prefetch" href="/assets/baris-C0ZrZ10g.webp"><link rel="prefetch" href="/assets/hamza-NKKOZz1I.webp"><link rel="prefetch" href="/assets/stefan-B08Ftbba.webp"><link rel="prefetch" href="/assets/templates-1S_8WeSK.webp"><link rel="prefetch" href="/assets/flyte-Cj-xy_8I.svg"><link rel="prefetch" href="/assets/metaflow-weOkWNyT.svg"><link rel="prefetch" href="/assets/CodeSnippet-Bbx6fIb6.css"><link rel="prefetch" href="/assets/page-BXgXP-Qj.js"><link rel="prefetch" href="/assets/page-C4JpDeUM.js"><link rel="prefetch" href="/assets/page-CeNL9JWi.js"><link rel="prefetch" href="/assets/page-khp8QJ6b.js"><link rel="prefetch" href="/assets/page-CB2_GdBA.js"><link rel="prefetch" href="/assets/SetPassword-CDLy57PZ.js"><link rel="prefetch" href="/assets/login-mutation-BaeJ7MAg.js"><link rel="prefetch" href="/assets/page-CmJU3Gqo.js"><link rel="prefetch" href="/assets/page-BUjw8Tp1.js"><link rel="prefetch" href="/assets/page-OdjGauvw.js"><link rel="prefetch" href="/assets/not-found-MGptrNBk.js"><link rel="prefetch" href="/assets/page-CkPwPmLZ.js"><link rel="prefetch" href="/assets/page-BhOXn-s9.js"><link rel="prefetch" href="/assets/PasswordChecker-B0nadgh6.js"><link rel="prefetch" href="/assets/tick-circle-BEX_Tp4v.js"><link rel="prefetch" href="/assets/page-BCgEdmhP.js"><link rel="prefetch" href="/assets/page-BbljjC-k.js"><link rel="prefetch" href="/assets/page-CoFVtzhG.js"><link rel="prefetch" href="/assets/docker-BdA9vrnW.js"><link rel="prefetch" href="/assets/page-BXrtxEbw.js"><link rel="prefetch" href="/assets/Commands-BcR2Arie.js"><link rel="prefetch" href="/assets/page-D-KPzeQb.js"><link rel="prefetch" href="/assets/code-snippets-CqONne41.js"><link rel="prefetch" href="/assets/page-CXPc-HN1.js"><link rel="prefetch" href="/assets/SecretTooltip-EKpMlG2f.js"><link rel="prefetch" href="/assets/page-Dv5lN2w7.js"><link rel="prefetch" href="/assets/update-server-settings-mutation-ATZDNNZk.js"><link rel="prefetch" href="/assets/page-DKQ3wZgr.js"><link rel="prefetch" href="/assets/page-DzrdL2v1.js"><link rel="prefetch" href="/assets/dates-3pMLCNrD.js"><link rel="prefetch" href="/assets/key-icon-aH-QIa5R.js"><link rel="prefetch" href="/assets/service-BvOYLH5b.js"><link rel="prefetch" href="/assets/page-C37IDa-Q.js"><link rel="prefetch" href="/assets/page-DWWhxCoF.js"><link rel="prefetch" href="/assets/RunsBody-Bnx2fxub.js"><link rel="prefetch" href="/assets/RunSelector-DOXgdry5.js"><link rel="prefetch" href="/assets/delete-run-CUdtYFLl.js"><link rel="prefetch" href="/assets/DeleteAlertDialog-DrPjHtXX.js"><link rel="prefetch" href="/assets/Tabs-B5E-o_h6.js"><link rel="prefetch" href="/assets/all-pipeline-runs-query-D0qDLdKB.js"><link rel="prefetch" href="/assets/NestedCollapsible-DDgd2SGb.js"><link rel="prefetch" href="/assets/ExecutionStatus-Ct9srgHC.js"><link rel="prefetch" href="/assets/page-Ox-eC1ik.js"><link rel="prefetch" href="/assets/StackList-DKQaLDo4.js"><link rel="prefetch" href="/assets/DialogItem-BYG7d_M2.js"><link rel="prefetch" href="/assets/AlertDialogDropdownItem-8yPFDxEI.js"><link rel="prefetch" href="/assets/CollapsibleCard-TiI4lId1.js"><link rel="prefetch" href="/assets/CopyButton-DCiXO3JC.js"><link rel="prefetch" href="/assets/refresh-BjOeWlEq.js"><link rel="prefetch" href="/assets/SearchField-Yjv-KRW4.js"><link rel="prefetch" href="/assets/page-I2B4Ocv8.js"><link rel="prefetch" href="/assets/code-browser-CUFUIHfp.js"><link rel="prefetch" href="/assets/page-DbW8MfQ4.js"><link rel="prefetch" href="/assets/page-CBiT2Ox9.js"><link rel="prefetch" href="/assets/index-CJ5IfeAl.js"><link rel="prefetch" href="/assets/index-D4yoZ_gH.js"><link rel="prefetch" href="/assets/InlineAvatar-CQNjKoEQ.js"><link rel="prefetch" href="/assets/DisplayDate-CDMUcQHS.js"><link rel="prefetch" href="/assets/index-Uu49AX48.js"><link rel="prefetch" href="/assets/page-CbwI6emp.js"><link rel="prefetch" href="/assets/Lock-CYYy18Mm.js"><link rel="prefetch" href="/assets/components-Br2ezRib.js"><link rel="prefetch" href="/assets/trash-arLUMWMS.js"><link rel="prefetch" href="/assets/dots-horizontal-otGBOSDJ.js"><link rel="prefetch" href="/assets/create-stack-7JzgAYAm.js"><link rel="prefetch" href="/assets/page-BKwwfTNy.js"><link rel="prefetch" href="/assets/persist-DBTFy--v.js"><link rel="prefetch" href="/assets/Partials-MD3e95Dk.js"><link rel="prefetch" href="/assets/link-external-b9AXw_sW.js"><link rel="prefetch" href="/assets/logs-WMSM52RF.js"><link rel="prefetch" href="/assets/NumberBox-Dtp3J6g5.js"><link rel="prefetch" href="/assets/Infobox-OQdkCLSP.js"><link rel="prefetch" href="/assets/WizardFooter-_1VSMZ_c.js"><link rel="prefetch" href="/assets/ProviderRadio-B81Elxrc.js"><link rel="prefetch" href="/assets/persist-K7AY0ju4.js"><link rel="prefetch" href="/assets/ComponentBadge-BqQNUZgb.js"><link rel="prefetch" href="/assets/ProviderIcon-DfDUOeAy.js"><link rel="prefetch" href="/assets/sharedSchema-xJDsJNgJ.js"><link rel="prefetch" href="/assets/index-Ceyzb1yI.js"><link rel="prefetch" href="/assets/stack-detail-query-DMJoxwgv.js"><link rel="prefetch" href="/assets/layout-BtHBmE4w.js"><link rel="prefetch" href="/assets/page-BaUDR9Ri.js"><link rel="prefetch" href="/assets/Error-C1zbWr19.js"><link rel="prefetch" href="/assets/page-Dvbq1BoF.js"><link rel="prefetch" href="/assets/page-yNh6PQKt.js"><link rel="prefetch" href="/assets/ProBadge-D784iVNC.js"><link rel="prefetch" href="/assets/ProCta-W2PEvNow.js"><link rel="prefetch" href="/assets/login-command-CkqxPtV3.js"><link rel="prefetch" href="/assets/CodeSnippet-Qh1ae_DJ.js"><link rel="prefetch" href="/assets/copy-C8XQA2Ug.js"><link rel="prefetch" href="/assets/zod-BwEbpOxH.js"><link rel="prefetch" href="/assets/index.esm-Dy6Z9Ung.js"><link rel="prefetch" href="/assets/check-DloQpStc.js"><link rel="prefetch" href="/assets/check-circle-jNbX5-sR.js"><link rel="prefetch" href="/assets/form-schemas-B6PCV3Y4.js"><link rel="prefetch" href="/assets/EmptyState-BzdlCwp3.js"><link rel="prefetch" href="/assets/UsageReason-DXtPS5nE.js"><link rel="prefetch" href="/assets/url-BWJXzuI4.js"><link rel="prefetch" href="/assets/gcp-CFtm4BA7.js"><link rel="prefetch" href="/assets/kubernetes-B2wmAJ1d.js"><link rel="prefetch" href="/assets/rocket-DjT2cDvG.js"><link rel="prefetch" href="/assets/UpdatePasswordSchemas-HBNOeyoP.js"><link rel="prefetch" href="/assets/chevron-right-double-D7ojK9Co.js"><link rel="prefetch" href="/assets/plus-tf1V2hTJ.js"><link rel="prefetch" href="/assets/chevron-down-6JyMkfjR.js"><link rel="prefetch" href="/assets/Helpbox-Bm_1Zx9f.js"><link rel="prefetch" href="/assets/help-Cc9bBIJH.js"><link rel="prefetch" href="/assets/Tick-DSYBiuXU.js"><link rel="prefetch" href="/assets/package-C6uypY4h.js"><link rel="prefetch" href="/assets/page-DyAuja95.js"><link rel="prefetch" href="/assets/page-Aeu3v0MQ.js"><link rel="prefetch" href="/assets/404-c8OuXDAT.js"><link rel="prefetch" href="/assets/CsvVizualization-O9cVIaL8.js"><link rel="prefetch" href="/assets/MarkdownVisualization-ylXaAxev.js"></head>
8
+ <script type="module" crossorigin src="/assets/index-D25WcEJJ.js"></script>
9
+ <link rel="modulepreload" crossorigin href="/assets/@radix-B7OY3d6N.js">
10
+ <link rel="modulepreload" crossorigin href="/assets/@tanstack-W1pLDzVg.js">
11
+ <link rel="modulepreload" crossorigin href="/assets/@react-router-CiF9laDg.js">
12
+ <link rel="modulepreload" crossorigin href="/assets/@reactflow-DgwdIYyq.js">
13
+ <link rel="stylesheet" crossorigin href="/assets/@reactflow-Fd0xVSp_.css">
14
+ <link rel="stylesheet" crossorigin href="/assets/index-apknmtn7.css">
15
+ <link rel="prefetch" href="/assets/inter-cyrillic-ext-400-normal-Dc4VJyIJ.woff2"><link rel="prefetch" href="/assets/inter-cyrillic-400-normal-BLGc9T1a.woff2"><link rel="prefetch" href="/assets/inter-greek-ext-400-normal-Bput3-QP.woff2"><link rel="prefetch" href="/assets/inter-greek-400-normal-DxZsaF_h.woff2"><link rel="prefetch" href="/assets/inter-vietnamese-400-normal-DMkecbls.woff2"><link rel="prefetch" href="/assets/inter-latin-ext-400-normal-hnt3BR84.woff2"><link rel="prefetch" href="/assets/inter-latin-400-normal-BOOGhInR.woff2"><link rel="prefetch" href="/assets/inter-cyrillic-ext-500-normal-BShVwWPj.woff2"><link rel="prefetch" href="/assets/inter-cyrillic-500-normal-D4Vwzodn.woff2"><link rel="prefetch" href="/assets/inter-greek-ext-500-normal-B6guLgqG.woff2"><link rel="prefetch" href="/assets/inter-greek-500-normal-CeQXL5ds.woff2"><link rel="prefetch" href="/assets/inter-vietnamese-500-normal-DOriooB6.woff2"><link rel="prefetch" href="/assets/inter-latin-ext-500-normal-CIS2RHJS.woff2"><link rel="prefetch" href="/assets/inter-latin-500-normal-D2bGa7uu.woff2"><link rel="prefetch" href="/assets/inter-cyrillic-ext-600-normal-CaqZN2hq.woff2"><link rel="prefetch" href="/assets/inter-cyrillic-600-normal-BGBWG807.woff2"><link rel="prefetch" href="/assets/inter-greek-600-normal-Dhlb-90d.woff2"><link rel="prefetch" href="/assets/inter-greek-ext-600-normal-Cnui8OiR.woff2"><link rel="prefetch" href="/assets/inter-vietnamese-600-normal-Cc8MFFhd.woff2"><link rel="prefetch" href="/assets/inter-latin-600-normal-D273HNI0.woff2"><link rel="prefetch" href="/assets/inter-latin-ext-600-normal-BnYJhD27.woff2"><link rel="prefetch" href="/assets/inter-cyrillic-ext-400-normal-BPnxn4xp.woff"><link rel="prefetch" href="/assets/inter-cyrillic-400-normal-ZzOtrSSW.woff"><link rel="prefetch" href="/assets/inter-greek-ext-400-normal-DCpCPQOf.woff"><link rel="prefetch" href="/assets/inter-greek-400-normal-BZzXV7-1.woff"><link rel="prefetch" href="/assets/inter-vietnamese-400-normal-BUNmGMP1.woff"><link rel="prefetch" href="/assets/inter-latin-ext-400-normal-C1t-h-pH.woff"><link rel="prefetch" href="/assets/inter-cyrillic-ext-500-normal-CUiC4oBV.woff"><link rel="prefetch" href="/assets/inter-latin-400-normal-gitzw0hO.woff"><link rel="prefetch" href="/assets/inter-cyrillic-500-normal-DH2hs3aW.woff"><link rel="prefetch" href="/assets/inter-greek-ext-500-normal-M2hEX8vc.woff"><link rel="prefetch" href="/assets/inter-greek-500-normal-d_eO-yCQ.woff"><link rel="prefetch" href="/assets/inter-vietnamese-500-normal-DQPw2Hwd.woff"><link rel="prefetch" href="/assets/inter-latin-ext-500-normal-UMdmhHu2.woff"><link rel="prefetch" href="/assets/inter-latin-500-normal-deR1Tlfd.woff"><link rel="prefetch" href="/assets/inter-cyrillic-ext-600-normal-Bt9VVOA-.woff"><link rel="prefetch" href="/assets/inter-cyrillic-600-normal-BuzJQFbW.woff"><link rel="prefetch" href="/assets/inter-greek-600-normal-CwicyhtI.woff"><link rel="prefetch" href="/assets/inter-greek-ext-600-normal-C9WLioJ8.woff"><link rel="prefetch" href="/assets/inter-vietnamese-600-normal-Cm6aH8_k.woff"><link rel="prefetch" href="/assets/inter-latin-600-normal-B5cFAncS.woff"><link rel="prefetch" href="/assets/inter-latin-ext-600-normal-CAF0vJDd.woff"><link rel="prefetch" href="/assets/cloud-squares-DeRLMopf.svg"><link rel="prefetch" href="/assets/acp-DOsXjFc7.webp"><link rel="prefetch" href="/assets/mcp-Cb1aMeoq.webp"><link rel="prefetch" href="/assets/settings_preview-0JLrRgHP.webp"><link rel="prefetch" href="/assets/upgrade-form-CwRHBuXB.webp"><link rel="prefetch" href="/assets/connectors-video-C9qY4syJ.svg"><link rel="prefetch" href="/assets/repos-video-D8kpu60k.svg"><link rel="prefetch" href="/assets/tour-cover-BYfeen6M.webp"><link rel="prefetch" href="/assets/templates-1S_8WeSK.webp"><link rel="prefetch" href="/assets/adam-e-y0WnB_.webp"><link rel="prefetch" href="/assets/alex-DcCuDHPg.webp"><link rel="prefetch" href="/assets/baris-C0ZrZ10g.webp"><link rel="prefetch" href="/assets/hamza-NKKOZz1I.webp"><link rel="prefetch" href="/assets/stefan-B08Ftbba.webp"><link rel="prefetch" href="/assets/flyte-Cj-xy_8I.svg"><link rel="prefetch" href="/assets/metaflow-weOkWNyT.svg"><link rel="prefetch" href="/assets/CodeSnippet-CK5CxKct.css"><link rel="prefetch" href="/assets/page-ChMOMdKd.js"><link rel="prefetch" href="/assets/page-JZ8WXQfh.js"><link rel="prefetch" href="/assets/page-CHdCb7Xx.js"><link rel="prefetch" href="/assets/page-D1jrbald.js"><link rel="prefetch" href="/assets/page-fVsaiQi7.js"><link rel="prefetch" href="/assets/SetPassword-BnaLppIC.js"><link rel="prefetch" href="/assets/login-mutation-EQPLh5Ne.js"><link rel="prefetch" href="/assets/page-YhLt4PLe.js"><link rel="prefetch" href="/assets/page-qw7ivMVQ.js"><link rel="prefetch" href="/assets/page-C9v0QDj8.js"><link rel="prefetch" href="/assets/not-found-DrxGMGNL.js"><link rel="prefetch" href="/assets/page-CdQ_DdH1.js"><link rel="prefetch" href="/assets/page-C2KxJ-Cc.js"><link rel="prefetch" href="/assets/PasswordChecker-Xh6Egpx9.js"><link rel="prefetch" href="/assets/tick-circle-DKkiYi_R.js"><link rel="prefetch" href="/assets/page-DzvVg_ZM.js"><link rel="prefetch" href="/assets/page-ChxtdsVY.js"><link rel="prefetch" href="/assets/page-_ijqeiyw.js"><link rel="prefetch" href="/assets/docker-C2dCztnc.js"><link rel="prefetch" href="/assets/page-Cj5NSnW5.js"><link rel="prefetch" href="/assets/Commands-vjMqENS8.js"><link rel="prefetch" href="/assets/page-ezpoc4vG.js"><link rel="prefetch" href="/assets/react-error-boundary.esm-DOkSniBS.js"><link rel="prefetch" href="/assets/page-D-qjN5JP.js"><link rel="prefetch" href="/assets/code-snippets-CqONne41.js"><link rel="prefetch" href="/assets/page-Cz58X7s5.js"><link rel="prefetch" href="/assets/SecretTooltip-CYL2o5Gs.js"><link rel="prefetch" href="/assets/page-BrUvz6Ag.js"><link rel="prefetch" href="/assets/update-server-settings-mutation-Bgnr2Ssw.js"><link rel="prefetch" href="/assets/page-C2IJq-kV.js"><link rel="prefetch" href="/assets/page-y8flqx2D.js"><link rel="prefetch" href="/assets/dates-3pMLCNrD.js"><link rel="prefetch" href="/assets/key-icon-DuqxBBkq.js"><link rel="prefetch" href="/assets/service-Db_ee3ql.js"><link rel="prefetch" href="/assets/page-9AiMoKly.js"><link rel="prefetch" href="/assets/page-ChFcVUFX.js"><link rel="prefetch" href="/assets/RunsBody-CNd_ej8-.js"><link rel="prefetch" href="/assets/RunSelector-C-YzhiVb.js"><link rel="prefetch" href="/assets/delete-run-CUo7vxbD.js"><link rel="prefetch" href="/assets/DeleteAlertDialog-CcDX1Hm_.js"><link rel="prefetch" href="/assets/Tabs-BewshUAE.js"><link rel="prefetch" href="/assets/all-pipeline-runs-query-Dh4L44hJ.js"><link rel="prefetch" href="/assets/NestedCollapsible-CyUu7Vrm.js"><link rel="prefetch" href="/assets/ExecutionStatus-DHmX6Vtj.js"><link rel="prefetch" href="/assets/page-BK722dMv.js"><link rel="prefetch" href="/assets/StackList-6XLpNMwt.js"><link rel="prefetch" href="/assets/DialogItem-L8-LNKgK.js"><link rel="prefetch" href="/assets/AlertDialogDropdownItem-BS4AoVte.js"><link rel="prefetch" href="/assets/CollapsibleCard-BAuAdAje.js"><link rel="prefetch" href="/assets/CopyButton-BQf5nLgq.js"><link rel="prefetch" href="/assets/refresh-Jr_advur.js"><link rel="prefetch" href="/assets/SearchField-BYL1oNec.js"><link rel="prefetch" href="/assets/page-BmzgDMUV.js"><link rel="prefetch" href="/assets/code-browser-C6DP7a-M.js"><link rel="prefetch" href="/assets/clock-BWL9qBKt.js"><link rel="prefetch" href="/assets/page-VUTBxySs.js"><link rel="prefetch" href="/assets/page-DRYjt60M.js"><link rel="prefetch" href="/assets/index-6CSA2ij5.js"><link rel="prefetch" href="/assets/index-Cf1Ph5ra.js"><link rel="prefetch" href="/assets/InlineAvatar-B9O7QxVo.js"><link rel="prefetch" href="/assets/DisplayDate-CZV8x8pB.js"><link rel="prefetch" href="/assets/index-4aOgYud0.js"><link rel="prefetch" href="/assets/page-BNXv13PD.js"><link rel="prefetch" href="/assets/Lock-6WGsAdiw.js"><link rel="prefetch" href="/assets/components-Br2ezRib.js"><link rel="prefetch" href="/assets/trash-Dm8g1gZ8.js"><link rel="prefetch" href="/assets/dots-horizontal-C6QCz7jg.js"><link rel="prefetch" href="/assets/create-stack-BdNm_XEl.js"><link rel="prefetch" href="/assets/page-De3oGQ3E.js"><link rel="prefetch" href="/assets/persist-Hxrm9o7f.js"><link rel="prefetch" href="/assets/Partials-CP_ZenWO.js"><link rel="prefetch" href="/assets/logs-DYV_bf7Q.js"><link rel="prefetch" href="/assets/link-external-CZxZlXqi.js"><link rel="prefetch" href="/assets/NumberBox-CqUodACv.js"><link rel="prefetch" href="/assets/Infobox-Ls_918eD.js"><link rel="prefetch" href="/assets/WizardFooter-CPk11vwc.js"><link rel="prefetch" href="/assets/ProviderRadio-C9z7SJnN.js"><link rel="prefetch" href="/assets/persist-CDPcIIlF.js"><link rel="prefetch" href="/assets/ComponentBadge-CNIM1NH_.js"><link rel="prefetch" href="/assets/ProviderIcon-C_XK4oaW.js"><link rel="prefetch" href="/assets/sharedSchema-BE8kPXOv.js"><link rel="prefetch" href="/assets/index-BOeKQ3N4.js"><link rel="prefetch" href="/assets/stack-detail-query-B2rvP4uR.js"><link rel="prefetch" href="/assets/layout-Cj7MRWSi.js"><link rel="prefetch" href="/assets/page-DjO6yHuW.js"><link rel="prefetch" href="/assets/Error-DPRIglzA.js"><link rel="prefetch" href="/assets/page-q2kbm2x8.js"><link rel="prefetch" href="/assets/login-command-CkqxPtV3.js"><link rel="prefetch" href="/assets/CodeSnippet-CK2z-88v.js"><link rel="prefetch" href="/assets/copy-DmyMnHSy.js"><link rel="prefetch" href="/assets/zod-C2FdaFLe.js"><link rel="prefetch" href="/assets/index.esm-C5jC4e7W.js"><link rel="prefetch" href="/assets/ProCta-BsYjjdUZ.js"><link rel="prefetch" href="/assets/check-BB0dVtdW.js"><link rel="prefetch" href="/assets/check-circle-ByvKqRS_.js"><link rel="prefetch" href="/assets/form-schemas-B4cZxcUy.js"><link rel="prefetch" href="/assets/EmptyState-C8-mkRwm.js"><link rel="prefetch" href="/assets/UsageReason-Bwhjhrv_.js"><link rel="prefetch" href="/assets/url-1R6qfphK.js"><link rel="prefetch" href="/assets/gcp-B1H0QrG5.js"><link rel="prefetch" href="/assets/kubernetes-Bn54mlK-.js"><link rel="prefetch" href="/assets/rocket-GOlMupOS.js"><link rel="prefetch" href="/assets/UpdatePasswordSchemas-CtzucewX.js"><link rel="prefetch" href="/assets/chevron-right-double-C5DtVuMS.js"><link rel="prefetch" href="/assets/plus-noRapLU5.js"><link rel="prefetch" href="/assets/chevron-down-DAWlSNuH.js"><link rel="prefetch" href="/assets/Helpbox-DWOXAebr.js"><link rel="prefetch" href="/assets/help-CgM5zwtY.js"><link rel="prefetch" href="/assets/Tick-DHVI3HP0.js"><link rel="prefetch" href="/assets/package-MUwoWZFx.js"><link rel="prefetch" href="/assets/ProBadge-DJCjz8Ox.js"><link rel="prefetch" href="/assets/page-BF9z97Jf.js"><link rel="prefetch" href="/assets/page-Bt_6RgeM.js"><link rel="prefetch" href="/assets/page-BK6mVOKJ.js"><link rel="prefetch" href="/assets/404-0leSZ7Vv.js"><link rel="prefetch" href="/assets/CsvVizualization-D77lRMYi.js"><link rel="prefetch" href="/assets/MarkdownVisualization-CPm4B45C.js"></head>
16
16
  <body>
17
17
  <div id="root"></div>
18
18
  </body>
@@ -0,0 +1,23 @@
1
+ """Release [0.74.0].
2
+
3
+ Revision ID: 0.74.0
4
+ Revises: 4d5524b92a30
5
+ Create Date: 2025-02-06 08:10:51.286515
6
+
7
+ """
8
+
9
+ # revision identifiers, used by Alembic.
10
+ revision = "0.74.0"
11
+ down_revision = "4d5524b92a30"
12
+ branch_labels = None
13
+ depends_on = None
14
+
15
+
16
+ def upgrade() -> None:
17
+ """Upgrade database schema and/or data, creating a new revision."""
18
+ pass
19
+
20
+
21
+ def downgrade() -> None:
22
+ """Downgrade database schema and/or data back to the previous revision."""
23
+ pass
@@ -18,7 +18,8 @@ from uuid import UUID
18
18
 
19
19
  from pydantic import ValidationError
20
20
  from sqlalchemy import TEXT, Column, UniqueConstraint
21
- from sqlmodel import Field, Relationship
21
+ from sqlalchemy.orm import object_session
22
+ from sqlmodel import Field, Relationship, desc, select
22
23
 
23
24
  from zenml.config.source import Source
24
25
  from zenml.enums import (
@@ -90,6 +91,32 @@ class ArtifactSchema(NamedSchema, table=True):
90
91
  ),
91
92
  )
92
93
 
94
+ @property
95
+ def latest_version(self) -> Optional["ArtifactVersionSchema"]:
96
+ """Fetch the latest version for this artifact.
97
+
98
+ Raises:
99
+ RuntimeError: If no session for the schema exists.
100
+
101
+ Returns:
102
+ The latest version for this artifact.
103
+ """
104
+ if session := object_session(self):
105
+ return (
106
+ session.execute(
107
+ select(ArtifactVersionSchema)
108
+ .where(ArtifactVersionSchema.artifact_id == self.id)
109
+ .order_by(desc(ArtifactVersionSchema.created))
110
+ .limit(1)
111
+ )
112
+ .scalars()
113
+ .one_or_none()
114
+ )
115
+ else:
116
+ raise RuntimeError(
117
+ "Missing DB session to fetch latest version for artifact."
118
+ )
119
+
93
120
  @classmethod
94
121
  def from_request(
95
122
  cls,
@@ -127,9 +154,9 @@ class ArtifactSchema(NamedSchema, table=True):
127
154
  The created `ArtifactResponse`.
128
155
  """
129
156
  latest_id, latest_name = None, None
130
- if self.versions:
131
- latest_version = max(self.versions, key=lambda x: x.created)
132
- latest_id, latest_name = latest_version.id, latest_version.version
157
+ if latest_version := self.latest_version:
158
+ latest_id = latest_version.id
159
+ latest_name = latest_version.version
133
160
 
134
161
  # Create the body of the model
135
162
  body = ArtifactResponseBody(
@@ -24,7 +24,8 @@ from sqlalchemy import (
24
24
  Column,
25
25
  UniqueConstraint,
26
26
  )
27
- from sqlmodel import Field, Relationship
27
+ from sqlalchemy.orm import object_session
28
+ from sqlmodel import Field, Relationship, desc, select
28
29
 
29
30
  from zenml.enums import (
30
31
  ArtifactType,
@@ -126,6 +127,32 @@ class ModelSchema(NamedSchema, table=True):
126
127
  sa_relationship_kwargs={"cascade": "delete"},
127
128
  )
128
129
 
130
+ @property
131
+ def latest_version(self) -> Optional["ModelVersionSchema"]:
132
+ """Fetch the latest version for this model.
133
+
134
+ Raises:
135
+ RuntimeError: If no session for the schema exists.
136
+
137
+ Returns:
138
+ The latest version for this model.
139
+ """
140
+ if session := object_session(self):
141
+ return (
142
+ session.execute(
143
+ select(ModelVersionSchema)
144
+ .where(ModelVersionSchema.model_id == self.id)
145
+ .order_by(desc(ModelVersionSchema.number))
146
+ .limit(1)
147
+ )
148
+ .scalars()
149
+ .one_or_none()
150
+ )
151
+ else:
152
+ raise RuntimeError(
153
+ "Missing DB session to fetch latest version for model."
154
+ )
155
+
129
156
  @classmethod
130
157
  def from_request(cls, model_request: ModelRequest) -> "ModelSchema":
131
158
  """Convert an `ModelRequest` to an `ModelSchema`.
@@ -169,11 +196,9 @@ class ModelSchema(NamedSchema, table=True):
169
196
  """
170
197
  tags = [tag.to_model() for tag in self.tags]
171
198
 
172
- if self.model_versions:
173
- version_numbers = [mv.number for mv in self.model_versions]
174
- latest_version_idx = version_numbers.index(max(version_numbers))
175
- latest_version_name = self.model_versions[latest_version_idx].name
176
- latest_version_id = self.model_versions[latest_version_idx].id
199
+ if latest_version := self.latest_version:
200
+ latest_version_name = latest_version.name
201
+ latest_version_id = latest_version.id
177
202
  else:
178
203
  latest_version_name = None
179
204
  latest_version_id = None
@@ -208,7 +208,7 @@ class PipelineRunSchema(NamedSchema, RunMetadataInterface, table=True):
208
208
  stack: Optional["StackSchema"] = Relationship()
209
209
  build: Optional["PipelineBuildSchema"] = Relationship()
210
210
  schedule: Optional["ScheduleSchema"] = Relationship()
211
- pipeline: Optional["PipelineSchema"] = Relationship(back_populates="runs")
211
+ pipeline: Optional["PipelineSchema"] = Relationship()
212
212
  trigger_execution: Optional["TriggerExecutionSchema"] = Relationship()
213
213
 
214
214
  services: List["ServiceSchema"] = Relationship(
@@ -17,7 +17,8 @@ from typing import TYPE_CHECKING, Any, List, Optional
17
17
  from uuid import UUID
18
18
 
19
19
  from sqlalchemy import TEXT, Column, UniqueConstraint
20
- from sqlmodel import Field, Relationship
20
+ from sqlalchemy.orm import object_session
21
+ from sqlmodel import Field, Relationship, desc, select
21
22
 
22
23
  from zenml.enums import TaggableResourceTypes
23
24
  from zenml.models import (
@@ -85,10 +86,6 @@ class PipelineSchema(NamedSchema, table=True):
85
86
  schedules: List["ScheduleSchema"] = Relationship(
86
87
  back_populates="pipeline",
87
88
  )
88
- runs: List["PipelineRunSchema"] = Relationship(
89
- back_populates="pipeline",
90
- sa_relationship_kwargs={"order_by": "PipelineRunSchema.created"},
91
- )
92
89
  builds: List["PipelineBuildSchema"] = Relationship(
93
90
  back_populates="pipeline"
94
91
  )
@@ -105,6 +102,34 @@ class PipelineSchema(NamedSchema, table=True):
105
102
  ),
106
103
  )
107
104
 
105
+ @property
106
+ def latest_run(self) -> Optional["PipelineRunSchema"]:
107
+ """Fetch the latest run for this pipeline.
108
+
109
+ Raises:
110
+ RuntimeError: If no session for the schema exists.
111
+
112
+ Returns:
113
+ The latest run for this pipeline.
114
+ """
115
+ from zenml.zen_stores.schemas import PipelineRunSchema
116
+
117
+ if session := object_session(self):
118
+ return (
119
+ session.execute(
120
+ select(PipelineRunSchema)
121
+ .where(PipelineRunSchema.pipeline_id == self.id)
122
+ .order_by(desc(PipelineRunSchema.created))
123
+ .limit(1)
124
+ )
125
+ .scalars()
126
+ .one_or_none()
127
+ )
128
+ else:
129
+ raise RuntimeError(
130
+ "Missing DB session to fetch latest run for pipeline."
131
+ )
132
+
108
133
  @classmethod
109
134
  def from_request(
110
135
  cls,
@@ -141,10 +166,12 @@ class PipelineSchema(NamedSchema, table=True):
141
166
  Returns:
142
167
  The created PipelineResponse.
143
168
  """
169
+ latest_run = self.latest_run
170
+
144
171
  body = PipelineResponseBody(
145
172
  user=self.user.to_model() if self.user else None,
146
- latest_run_id=self.runs[-1].id if self.runs else None,
147
- latest_run_status=self.runs[-1].status if self.runs else None,
173
+ latest_run_id=latest_run.id if latest_run else None,
174
+ latest_run_status=latest_run.status if latest_run else None,
148
175
  created=self.created,
149
176
  updated=self.updated,
150
177
  )
@@ -158,7 +185,7 @@ class PipelineSchema(NamedSchema, table=True):
158
185
 
159
186
  resources = None
160
187
  if include_resources:
161
- latest_run_user = self.runs[-1].user if self.runs else None
188
+ latest_run_user = latest_run.user if latest_run else None
162
189
 
163
190
  resources = PipelineResponseResources(
164
191
  latest_run_user=latest_run_user.to_model()
@@ -18,7 +18,8 @@ from uuid import UUID
18
18
 
19
19
  from sqlalchemy import Column, String, UniqueConstraint
20
20
  from sqlalchemy.dialects.mysql import MEDIUMTEXT
21
- from sqlmodel import Field, Relationship
21
+ from sqlalchemy.orm import object_session
22
+ from sqlmodel import Field, Relationship, col, desc, select
22
23
 
23
24
  from zenml.constants import MEDIUMTEXT_MAX_LENGTH
24
25
  from zenml.enums import TaggableResourceTypes
@@ -99,17 +100,6 @@ class RunTemplateSchema(BaseSchema, table=True):
99
100
  }
100
101
  )
101
102
 
102
- runs: List["PipelineRunSchema"] = Relationship(
103
- sa_relationship_kwargs={
104
- "primaryjoin": "RunTemplateSchema.id==PipelineDeploymentSchema.template_id",
105
- "secondaryjoin": "PipelineDeploymentSchema.id==PipelineRunSchema.deployment_id",
106
- "secondary": "pipeline_deployment",
107
- "cascade": "delete",
108
- "viewonly": True,
109
- "order_by": "PipelineRunSchema.created",
110
- }
111
- )
112
-
113
103
  tags: List["TagSchema"] = Relationship(
114
104
  sa_relationship_kwargs=dict(
115
105
  primaryjoin=f"and_(foreign(TagResourceSchema.resource_type)=='{TaggableResourceTypes.RUN_TEMPLATE.value}', foreign(TagResourceSchema.resource_id)==RunTemplateSchema.id)",
@@ -120,6 +110,42 @@ class RunTemplateSchema(BaseSchema, table=True):
120
110
  ),
121
111
  )
122
112
 
113
+ @property
114
+ def latest_run(self) -> Optional["PipelineRunSchema"]:
115
+ """Fetch the latest run for this template.
116
+
117
+ Raises:
118
+ RuntimeError: If no session for the schema exists.
119
+
120
+ Returns:
121
+ The latest run for this template.
122
+ """
123
+ from zenml.zen_stores.schemas import (
124
+ PipelineDeploymentSchema,
125
+ PipelineRunSchema,
126
+ )
127
+
128
+ if session := object_session(self):
129
+ return (
130
+ session.execute(
131
+ select(PipelineRunSchema)
132
+ .join(
133
+ PipelineDeploymentSchema,
134
+ col(PipelineDeploymentSchema.id)
135
+ == col(PipelineRunSchema.deployment_id),
136
+ )
137
+ .where(PipelineDeploymentSchema.template_id == self.id)
138
+ .order_by(desc(PipelineRunSchema.created))
139
+ .limit(1)
140
+ )
141
+ .scalars()
142
+ .one_or_none()
143
+ )
144
+ else:
145
+ raise RuntimeError(
146
+ "Missing DB session to fetch latest run for template."
147
+ )
148
+
123
149
  @classmethod
124
150
  def from_request(
125
151
  cls,
@@ -184,13 +210,15 @@ class RunTemplateSchema(BaseSchema, table=True):
184
210
  ):
185
211
  runnable = True
186
212
 
213
+ latest_run = self.latest_run
214
+
187
215
  body = RunTemplateResponseBody(
188
216
  user=self.user.to_model() if self.user else None,
189
217
  created=self.created,
190
218
  updated=self.updated,
191
219
  runnable=runnable,
192
- latest_run_id=self.runs[-1].id if self.runs else None,
193
- latest_run_status=self.runs[-1].status if self.runs else None,
220
+ latest_run_id=latest_run.id if latest_run else None,
221
+ latest_run_status=latest_run.status if latest_run else None,
194
222
  )
195
223
 
196
224
  metadata = None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: zenml-nightly
3
- Version: 0.73.0.dev20250205
3
+ Version: 0.74.0.dev20250207
4
4
  Summary: ZenML: Write production-ready ML code.
5
5
  License: Apache-2.0
6
6
  Keywords: machine learning,production,pipeline,mlops,devops
@@ -477,7 +477,7 @@ the Apache License Version 2.0.
477
477
  <a href="https://github.com/zenml-io/zenml-projects">Projects Showcase</a>
478
478
  <br />
479
479
  <br />
480
- 🎉 Version 0.73.0 is out. Check out the release notes
480
+ 🎉 Version 0.74.0 is out. Check out the release notes
481
481
  <a href="https://github.com/zenml-io/zenml/releases">here</a>.
482
482
  <br />
483
483
  🖥️ Download our VS Code Extension <a href="https://marketplace.visualstudio.com/items?itemName=ZenML.zenml-vscode">here</a>.