zenml-nightly 0.82.1.dev20250526__py3-none-any.whl → 0.82.1.dev20250528__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (311) hide show
  1. zenml/VERSION +1 -1
  2. zenml/artifacts/utils.py +8 -0
  3. zenml/cli/base.py +6 -1
  4. zenml/cli/model.py +16 -36
  5. zenml/cli/server.py +8 -3
  6. zenml/client.py +20 -4
  7. zenml/client_lazy_loader.py +2 -0
  8. zenml/config/docker_settings.py +15 -2
  9. zenml/enums.py +3 -0
  10. zenml/event_hub/event_hub.py +1 -1
  11. zenml/integrations/bitbucket/plugins/event_sources/bitbucket_webhook_event_source.py +1 -1
  12. zenml/integrations/github/plugins/event_sources/github_webhook_event_source.py +1 -1
  13. zenml/integrations/kubernetes/flavors/kubernetes_orchestrator_flavor.py +3 -0
  14. zenml/integrations/kubernetes/orchestrators/kubernetes_orchestrator_entrypoint.py +37 -26
  15. zenml/logging/step_logging.py +17 -4
  16. zenml/login/web_login.py +1 -1
  17. zenml/model/model.py +13 -23
  18. zenml/models/__init__.py +39 -2
  19. zenml/models/v2/base/scoped.py +34 -15
  20. zenml/models/v2/core/artifact.py +10 -9
  21. zenml/models/v2/core/artifact_version.py +16 -16
  22. zenml/models/v2/core/logs.py +8 -50
  23. zenml/models/v2/core/model.py +10 -10
  24. zenml/models/v2/core/model_version.py +155 -88
  25. zenml/models/v2/core/pipeline.py +10 -11
  26. zenml/models/v2/core/pipeline_deployment.py +1 -9
  27. zenml/models/v2/core/pipeline_run.py +10 -17
  28. zenml/models/v2/core/run_template.py +10 -10
  29. zenml/models/v2/core/step_run.py +100 -16
  30. zenml/models/v2/core/tag.py +5 -4
  31. zenml/models/v2/misc/pipeline_run_dag.py +46 -0
  32. zenml/orchestrators/base_orchestrator.py +8 -19
  33. zenml/orchestrators/cache_utils.py +48 -1
  34. zenml/orchestrators/input_utils.py +35 -39
  35. zenml/orchestrators/step_launcher.py +1 -1
  36. zenml/orchestrators/step_run_utils.py +26 -10
  37. zenml/pipelines/pipeline_definition.py +3 -3
  38. zenml/pipelines/run_utils.py +2 -3
  39. zenml/service_connectors/service_connector.py +5 -1
  40. zenml/stack/stack_component.py +1 -4
  41. zenml/steps/step_context.py +1 -1
  42. zenml/utils/dashboard_utils.py +3 -3
  43. zenml/zen_server/auth.py +6 -3
  44. zenml/zen_server/cloud_utils.py +2 -2
  45. zenml/zen_server/dashboard/assets/{404-_AtuLtaX.js → 404-DmJUgorp.js} +1 -1
  46. zenml/zen_server/dashboard/assets/{@radix-C7hRs6Kx.js → @radix-Cdvw4jJ8.js} +1 -1
  47. zenml/zen_server/dashboard/assets/{@react-router-CNP6g_RL.js → @react-router-DeDfXbUF.js} +5 -5
  48. zenml/zen_server/dashboard/assets/{@reactflow-CQi1Z1Wq.js → @reactflow-8OCk19Fi.js} +1 -1
  49. zenml/zen_server/dashboard/assets/{@tanstack-CSxjHCME.js → @tanstack-5gTMR7G2.js} +4 -4
  50. zenml/zen_server/dashboard/assets/AlertDialogDropdownItem-CZW4QyWn.js +1 -0
  51. zenml/zen_server/dashboard/assets/ButtonGroup-DFWWFGUE.js +1 -0
  52. zenml/zen_server/dashboard/assets/{CodeSnippet-CvI6D0wx.js → CodeSnippet-D2HkkAGr.js} +1 -1
  53. zenml/zen_server/dashboard/assets/CollapsibleCard-CnS09ljw.js +1 -0
  54. zenml/zen_server/dashboard/assets/{ComponentBadge-DKw7Gndh.js → ComponentBadge-CDgdd0Ks.js} +1 -1
  55. zenml/zen_server/dashboard/assets/ComponentIcon-CbbOc7lb.js +1 -0
  56. zenml/zen_server/dashboard/assets/{DeleteAlertDialog-DVvXt-S6.js → DeleteAlertDialog-VIOMDLmx.js} +1 -1
  57. zenml/zen_server/dashboard/assets/DialogItem-ClFCqxEp.js +1 -0
  58. zenml/zen_server/dashboard/assets/{DisplayDate-CYVBBSgr.js → DisplayDate-8RESqe5H.js} +1 -1
  59. zenml/zen_server/dashboard/assets/{EmptyState-M1jafpg6.js → EmptyState-CjrgDtVk.js} +1 -1
  60. zenml/zen_server/dashboard/assets/{Error-BWaXP0VK.js → Error-CQzjbDcN.js} +1 -1
  61. zenml/zen_server/dashboard/assets/ExecutionStatus-CWreILP0.js +1 -0
  62. zenml/zen_server/dashboard/assets/{Helpbox-iE1xLmiZ.js → Helpbox-CiKxG5_X.js} +1 -1
  63. zenml/zen_server/dashboard/assets/Infobox-CGxFvqzi.js +1 -0
  64. zenml/zen_server/dashboard/assets/LeftSideMenu-DCsKdIjC.js +1 -0
  65. zenml/zen_server/dashboard/assets/{Lock-DW-0_M0o.js → Lock-CrIAdQo6.js} +1 -1
  66. zenml/zen_server/dashboard/assets/NestedCollapsible-3M4llYtH.js +1 -0
  67. zenml/zen_server/dashboard/assets/NumberBox-C0mQktmV.js +1 -0
  68. zenml/zen_server/dashboard/assets/Partials-DSjkttlz.js +1 -0
  69. zenml/zen_server/dashboard/assets/{PasswordChecker-lYTOtNom.js → PasswordChecker-B88WjuCe.js} +1 -1
  70. zenml/zen_server/dashboard/assets/ProCta-Dm5cWKpS.js +1 -0
  71. zenml/zen_server/dashboard/assets/{ProviderIcon-DLo7t1lo.js → ProviderIcon-DPwMR6nF.js} +1 -1
  72. zenml/zen_server/dashboard/assets/ProviderRadio-DEDNRgAb.js +1 -0
  73. zenml/zen_server/dashboard/assets/RunsBody-BRBn1e2O.js +1 -0
  74. zenml/zen_server/dashboard/assets/SearchField-DY6-UbRT.js +1 -0
  75. zenml/zen_server/dashboard/assets/SecretTooltip-CZTRnaCV.js +1 -0
  76. zenml/zen_server/dashboard/assets/{SetPassword-DR-EiLI5.js → SetPassword-BjNGDC5e.js} +1 -1
  77. zenml/zen_server/dashboard/assets/SheetHeader-CASpN2Lz.js +1 -0
  78. zenml/zen_server/dashboard/assets/StackComponentList-Be1pQt9m.js +1 -0
  79. zenml/zen_server/dashboard/assets/StackList-BdiR5DvR.js +1 -0
  80. zenml/zen_server/dashboard/assets/StackName-ojLC6xdl.js +1 -0
  81. zenml/zen_server/dashboard/assets/Tabs-DNSKblCM.js +1 -0
  82. zenml/zen_server/dashboard/assets/Tick-BPrWnNlN.js +1 -0
  83. zenml/zen_server/dashboard/assets/{UpdatePasswordSchemas-DbFEaezI.js → UpdatePasswordSchemas-CNfKDo2Q.js} +1 -1
  84. zenml/zen_server/dashboard/assets/UsageReason-Cb-mpV8M.js +1 -0
  85. zenml/zen_server/dashboard/assets/{Wizard-CMI6Ksgz.js → Wizard-Dg8Pmn5A.js} +1 -1
  86. zenml/zen_server/dashboard/assets/WizardFooter-BcNDIvlQ.js +1 -0
  87. zenml/zen_server/dashboard/assets/{all-pipeline-runs-query-BGASHYtF.js → all-pipeline-runs-query-DCdax7I5.js} +1 -1
  88. zenml/zen_server/dashboard/assets/{arrow-left-CwgF2MEM.js → arrow-left-MRXv5pAH.js} +1 -1
  89. zenml/zen_server/dashboard/assets/bulk-delete-C_kpIB9A.js +3 -0
  90. zenml/zen_server/dashboard/assets/{check-DK77doTf.js → check-B9QMTa3f.js} +1 -1
  91. zenml/zen_server/dashboard/assets/{check-circle-mvyzYvIW.js → check-circle-C4tYvbtw.js} +1 -1
  92. zenml/zen_server/dashboard/assets/{chevron-down-A-rmltmI.js → chevron-down-jbbQh82s.js} +1 -1
  93. zenml/zen_server/dashboard/assets/{chevron-right-double-uNWbJT-C.js → chevron-right-double-Dgp_gEsp.js} +1 -1
  94. zenml/zen_server/dashboard/assets/{clock-CPA5cYxq.js → clock-B_mTG8PH.js} +1 -1
  95. zenml/zen_server/dashboard/assets/{code-browser-j2EpcxIA.js → code-browser-CiD8qkBx.js} +1 -1
  96. zenml/zen_server/dashboard/assets/configuration-form-B2hmKGnF.js +1 -0
  97. zenml/zen_server/dashboard/assets/connectivity-4UKGMYnr.webp +0 -0
  98. zenml/zen_server/dashboard/assets/constants-1EZZxtay.js +1 -0
  99. zenml/zen_server/dashboard/assets/create-stack-TKmMtrkQ.js +1 -0
  100. zenml/zen_server/dashboard/assets/dates-Buh6SMo7.js +1 -0
  101. zenml/zen_server/dashboard/assets/delete-run-CCR9md_s.js +1 -0
  102. zenml/zen_server/dashboard/assets/eye-CbVlAYty.js +1 -0
  103. zenml/zen_server/dashboard/assets/{file-text-BdxZdjP_.js → file-text-Cd8wVfq5.js} +1 -1
  104. zenml/zen_server/dashboard/assets/form-DFJkaFDX.js +1 -0
  105. zenml/zen_server/dashboard/assets/form-schemas-CrznJVzA.js +1 -0
  106. zenml/zen_server/dashboard/assets/{gcp-CHNvgEss.js → gcp-B1I3Qvcx.js} +1 -1
  107. zenml/zen_server/dashboard/assets/{help-DyMolRxD.js → help-Co6aedki.js} +1 -1
  108. zenml/zen_server/dashboard/assets/index-BFqbGSck.js +308 -0
  109. zenml/zen_server/dashboard/assets/{index-CrhdX_qG.js → index-BjUu1mP4.js} +1 -1
  110. zenml/zen_server/dashboard/assets/{index-DR30v9MZ.js → index-DWpiv-Ft.js} +1 -1
  111. zenml/zen_server/dashboard/assets/index-DuhuqTCI.css +1 -0
  112. zenml/zen_server/dashboard/assets/index-U992soPJ.js +1 -0
  113. zenml/zen_server/dashboard/assets/index.es-C1gfATPn.js +14 -0
  114. zenml/zen_server/dashboard/assets/{index.esm-D7jFlf5N.js → index.esm-DhJo3mA6.js} +1 -1
  115. zenml/zen_server/dashboard/assets/info-QkbQz4QU.js +1 -0
  116. zenml/zen_server/dashboard/assets/{key-icon-DO4DPJHZ.js → key-icon-C07HKw8z.js} +1 -1
  117. zenml/zen_server/dashboard/assets/{layout-h3cbx8WZ.js → layout-DBbfEFBe.js} +1 -1
  118. zenml/zen_server/dashboard/assets/layout-Do9YI4QX.js +1 -0
  119. zenml/zen_server/dashboard/assets/login-mutation-D3tFP6Wm.js +1 -0
  120. zenml/zen_server/dashboard/assets/{logs-B5n0U7tB.js → logs-CQKlJjo0.js} +1 -1
  121. zenml/zen_server/dashboard/assets/{package-D1Mhqeh8.js → package-miExReQl.js} +1 -1
  122. zenml/zen_server/dashboard/assets/page-9RjCitFH.js +1 -0
  123. zenml/zen_server/dashboard/assets/page-B0PsXWiT.js +1 -0
  124. zenml/zen_server/dashboard/assets/page-BCrKmYIZ.js +1 -0
  125. zenml/zen_server/dashboard/assets/page-BcRI3-aR.js +29 -0
  126. zenml/zen_server/dashboard/assets/page-Be3R2uYn.js +1 -0
  127. zenml/zen_server/dashboard/assets/page-BgknnddT.js +1 -0
  128. zenml/zen_server/dashboard/assets/page-BrT0_zSJ.js +40 -0
  129. zenml/zen_server/dashboard/assets/page-Bs3W2FDi.js +1 -0
  130. zenml/zen_server/dashboard/assets/page-C210HcBA.js +1 -0
  131. zenml/zen_server/dashboard/assets/page-C6KaiZ_W.js +1 -0
  132. zenml/zen_server/dashboard/assets/page-CAJ8B0vb.js +1 -0
  133. zenml/zen_server/dashboard/assets/page-CAUYrfui.js +1 -0
  134. zenml/zen_server/dashboard/assets/page-CHxVhF3x.js +1 -0
  135. zenml/zen_server/dashboard/assets/{page-CSwZxZMQ.js → page-CN7lkvXr.js} +1 -1
  136. zenml/zen_server/dashboard/assets/page-CUaMMoPG.js +1 -0
  137. zenml/zen_server/dashboard/assets/page-Cal6XQ4U.js +1 -0
  138. zenml/zen_server/dashboard/assets/page-CdZCmszX.js +1 -0
  139. zenml/zen_server/dashboard/assets/page-ChGcZI_6.js +1 -0
  140. zenml/zen_server/dashboard/assets/page-CktmtZ8Z.js +1 -0
  141. zenml/zen_server/dashboard/assets/page-ClvmVesa.js +1 -0
  142. zenml/zen_server/dashboard/assets/page-CnbIYE80.js +1 -0
  143. zenml/zen_server/dashboard/assets/page-CoXzjeEY.js +1 -0
  144. zenml/zen_server/dashboard/assets/page-CtiuMP_r.js +1 -0
  145. zenml/zen_server/dashboard/assets/page-D9Hfx6GV.js +1 -0
  146. zenml/zen_server/dashboard/assets/page-D9iuB88h.js +1 -0
  147. zenml/zen_server/dashboard/assets/page-DCcuPZ8P.js +1 -0
  148. zenml/zen_server/dashboard/assets/page-DEohTSz6.js +1 -0
  149. zenml/zen_server/dashboard/assets/page-DJIGaUQ9.js +1 -0
  150. zenml/zen_server/dashboard/assets/page-DKK6ulgy.js +1 -0
  151. zenml/zen_server/dashboard/assets/page-DNjKHjnH.js +1 -0
  152. zenml/zen_server/dashboard/assets/page-DUK0Nd_1.js +1 -0
  153. zenml/zen_server/dashboard/assets/page-DUKbOhaD.js +1 -0
  154. zenml/zen_server/dashboard/assets/page-DYOucPtA.js +1 -0
  155. zenml/zen_server/dashboard/assets/page-DpqRelAy.js +1 -0
  156. zenml/zen_server/dashboard/assets/{page-ZfTtFicG.js → page-DwVPpCFg.js} +2 -2
  157. zenml/zen_server/dashboard/assets/page-XURWnYZP.js +1 -0
  158. zenml/zen_server/dashboard/assets/page-abw-2oeW.js +1 -0
  159. zenml/zen_server/dashboard/assets/page-akLcPcKw.js +1 -0
  160. zenml/zen_server/dashboard/assets/page-n9ejQ2V3.js +2 -0
  161. zenml/zen_server/dashboard/assets/page-sJjNT9xA.js +6 -0
  162. zenml/zen_server/dashboard/assets/{persist-UUym702q.js → persist-DWMWVP-y.js} +1 -1
  163. zenml/zen_server/dashboard/assets/{persist-D87V82eO.js → persist-Dec_w7aB.js} +1 -1
  164. zenml/zen_server/dashboard/assets/pipeline-CSUlkd50.js +1 -0
  165. zenml/zen_server/dashboard/assets/{plus-COjQg3AG.js → plus-Cl0_rCVF.js} +1 -1
  166. zenml/zen_server/dashboard/assets/{react-error-boundary.esm-fyoUBS25.js → react-error-boundary.esm-7_MuhCay.js} +1 -1
  167. zenml/zen_server/dashboard/assets/{refresh-CM5T3QeU.js → refresh-BcTM09NW.js} +1 -1
  168. zenml/zen_server/dashboard/assets/resource-tyes-list-o2LXiMay.js +1 -0
  169. zenml/zen_server/dashboard/assets/resource-type-tooltip-DwHrJstL.js +1 -0
  170. zenml/zen_server/dashboard/assets/service-connectors-DSEMwJ5A.js +1 -0
  171. zenml/zen_server/dashboard/assets/{service-BQ9KIhls.js → service-jxtvgks0.js} +2 -2
  172. zenml/zen_server/dashboard/assets/sharedSchema-BXzg0EZz.js +1 -0
  173. zenml/zen_server/dashboard/assets/stack-detail-query-Cm0fsgo-.js +1 -0
  174. zenml/zen_server/dashboard/assets/{terminal-square-DMtel8mb.js → terminal-XFL_4QN-.js} +1 -1
  175. zenml/zen_server/dashboard/assets/terminal-square-XFL_4QN-.js +1 -0
  176. zenml/zen_server/dashboard/assets/transform-CeZdrxDZ.js +1 -0
  177. zenml/zen_server/dashboard/assets/{trash-BWSZ7NRK.js → trash-DP6Tpp_E.js} +1 -1
  178. zenml/zen_server/dashboard/assets/type-guards-CNgPYg8l.js +1 -0
  179. zenml/zen_server/dashboard/assets/update-current-user-mutation-D5MjcQ6F.js +1 -0
  180. zenml/zen_server/dashboard/assets/update-server-settings-mutation-CmnxdxiK.js +1 -0
  181. zenml/zen_server/dashboard/assets/{zod-C0xYeTvL.js → zod-XdS2h1ws.js} +1 -1
  182. zenml/zen_server/dashboard/index.html +7 -7
  183. zenml/zen_server/rbac/utils.py +2 -2
  184. zenml/zen_server/rbac/zenml_cloud_rbac.py +4 -3
  185. zenml/zen_server/routers/auth_endpoints.py +2 -2
  186. zenml/zen_server/routers/devices_endpoints.py +8 -5
  187. zenml/zen_server/routers/pipeline_deployments_endpoints.py +1 -1
  188. zenml/zen_server/routers/pipelines_endpoints.py +1 -1
  189. zenml/zen_server/routers/run_templates_endpoints.py +3 -3
  190. zenml/zen_server/routers/runs_endpoints.py +35 -0
  191. zenml/zen_server/routers/steps_endpoints.py +3 -0
  192. zenml/zen_server/template_execution/utils.py +6 -6
  193. zenml/zen_stores/dag_generator.py +171 -0
  194. zenml/zen_stores/rest_zen_store.py +17 -3
  195. zenml/zen_stores/schemas/action_schemas.py +40 -4
  196. zenml/zen_stores/schemas/api_key_schemas.py +29 -1
  197. zenml/zen_stores/schemas/artifact_schemas.py +168 -48
  198. zenml/zen_stores/schemas/base_schemas.py +26 -1
  199. zenml/zen_stores/schemas/code_repository_schemas.py +46 -5
  200. zenml/zen_stores/schemas/component_schemas.py +44 -3
  201. zenml/zen_stores/schemas/device_schemas.py +43 -2
  202. zenml/zen_stores/schemas/event_source_schemas.py +41 -5
  203. zenml/zen_stores/schemas/flavor_schemas.py +42 -2
  204. zenml/zen_stores/schemas/model_schemas.py +113 -77
  205. zenml/zen_stores/schemas/pipeline_build_schemas.py +53 -4
  206. zenml/zen_stores/schemas/pipeline_deployment_schemas.py +53 -4
  207. zenml/zen_stores/schemas/pipeline_run_schemas.py +111 -47
  208. zenml/zen_stores/schemas/pipeline_schemas.py +41 -9
  209. zenml/zen_stores/schemas/run_template_schemas.py +75 -11
  210. zenml/zen_stores/schemas/schedule_schema.py +50 -5
  211. zenml/zen_stores/schemas/secret_schemas.py +39 -2
  212. zenml/zen_stores/schemas/service_connector_schemas.py +39 -2
  213. zenml/zen_stores/schemas/service_schemas.py +39 -4
  214. zenml/zen_stores/schemas/stack_schemas.py +47 -2
  215. zenml/zen_stores/schemas/step_run_schemas.py +89 -26
  216. zenml/zen_stores/schemas/tag_schemas.py +69 -5
  217. zenml/zen_stores/schemas/trigger_schemas.py +44 -5
  218. zenml/zen_stores/schemas/utils.py +25 -4
  219. zenml/zen_stores/sql_zen_store.py +471 -28
  220. zenml/zen_stores/zen_store_interface.py +9 -1
  221. {zenml_nightly-0.82.1.dev20250526.dist-info → zenml_nightly-0.82.1.dev20250528.dist-info}/METADATA +1 -1
  222. {zenml_nightly-0.82.1.dev20250526.dist-info → zenml_nightly-0.82.1.dev20250528.dist-info}/RECORD +225 -219
  223. zenml/zen_server/dashboard/assets/AlertDialogDropdownItem-BG7-Ki1L.js +0 -1
  224. zenml/zen_server/dashboard/assets/CollapsibleCard-D20FtrzC.js +0 -1
  225. zenml/zen_server/dashboard/assets/Commands-DGbAvMDk.js +0 -1
  226. zenml/zen_server/dashboard/assets/ComponentIcon-ils7uNAk.js +0 -1
  227. zenml/zen_server/dashboard/assets/CsvVizualization-DVN541XF.js +0 -15
  228. zenml/zen_server/dashboard/assets/DialogItem-BHWf3sIB.js +0 -1
  229. zenml/zen_server/dashboard/assets/ExecutionStatus-XrvT2r65.js +0 -1
  230. zenml/zen_server/dashboard/assets/Infobox-D9k5TFH4.js +0 -1
  231. zenml/zen_server/dashboard/assets/InlineAvatar-Cfz4WSLK.js +0 -1
  232. zenml/zen_server/dashboard/assets/MarkdownVisualization-URCyUPcZ.js +0 -14
  233. zenml/zen_server/dashboard/assets/NestedCollapsible-Dor-bi98.js +0 -1
  234. zenml/zen_server/dashboard/assets/NumberBox-D2A7ENHb.js +0 -1
  235. zenml/zen_server/dashboard/assets/Partials-DQJFw1yW.js +0 -1
  236. zenml/zen_server/dashboard/assets/ProBadge-Cp4hb1YT.js +0 -1
  237. zenml/zen_server/dashboard/assets/ProCta-EYoV9CvK.js +0 -1
  238. zenml/zen_server/dashboard/assets/ProviderRadio-BVDA-fAr.js +0 -1
  239. zenml/zen_server/dashboard/assets/RunSelector-BLuBYNJt.js +0 -1
  240. zenml/zen_server/dashboard/assets/RunsBody-W4WHf-sq.js +0 -1
  241. zenml/zen_server/dashboard/assets/SearchField-D-h6jXyg.js +0 -1
  242. zenml/zen_server/dashboard/assets/SecretTooltip-CePCL8kd.js +0 -1
  243. zenml/zen_server/dashboard/assets/StackList-CgmN5H-i.js +0 -1
  244. zenml/zen_server/dashboard/assets/Tabs-DxQ8PDOD.js +0 -1
  245. zenml/zen_server/dashboard/assets/Tick-CEsT3HPR.js +0 -1
  246. zenml/zen_server/dashboard/assets/UsageReason-DjI5qMje.js +0 -1
  247. zenml/zen_server/dashboard/assets/WizardFooter-CFBHFZas.js +0 -1
  248. zenml/zen_server/dashboard/assets/cloud-squares-DeRLMopf.svg +0 -43
  249. zenml/zen_server/dashboard/assets/configuration-form-BtI2Y4eX.js +0 -1
  250. zenml/zen_server/dashboard/assets/connectors-video-C9qY4syJ.svg +0 -21
  251. zenml/zen_server/dashboard/assets/constants-DP3ZEnXH.js +0 -1
  252. zenml/zen_server/dashboard/assets/create-stack-BJ6x5rzj.js +0 -1
  253. zenml/zen_server/dashboard/assets/dates-3pMLCNrD.js +0 -1
  254. zenml/zen_server/dashboard/assets/delete-run-DlSLEl5T.js +0 -1
  255. zenml/zen_server/dashboard/assets/docker-BuDBFEDL.js +0 -1
  256. zenml/zen_server/dashboard/assets/dots-horizontal-BGRJCPCs.js +0 -1
  257. zenml/zen_server/dashboard/assets/flavor-select-BnPxvQDN.js +0 -1
  258. zenml/zen_server/dashboard/assets/form-schemas-CbvoEUHr.js +0 -1
  259. zenml/zen_server/dashboard/assets/index-CFESYpe4.js +0 -1
  260. zenml/zen_server/dashboard/assets/index-CmLcvK2z.js +0 -1
  261. zenml/zen_server/dashboard/assets/index-CzX3ZYlI.css +0 -1
  262. zenml/zen_server/dashboard/assets/index-D2iSHVZq.js +0 -64
  263. zenml/zen_server/dashboard/assets/kubernetes-D6OUjwSK.js +0 -1
  264. zenml/zen_server/dashboard/assets/link-external-DUhCSKNm.js +0 -1
  265. zenml/zen_server/dashboard/assets/login-command-CkqxPtV3.js +0 -1
  266. zenml/zen_server/dashboard/assets/login-mutation-CXc-Klim.js +0 -1
  267. zenml/zen_server/dashboard/assets/not-found-olRU3fnu.js +0 -1
  268. zenml/zen_server/dashboard/assets/page-7keIM1V3.js +0 -1
  269. zenml/zen_server/dashboard/assets/page-B31neFwG.js +0 -1
  270. zenml/zen_server/dashboard/assets/page-B3zo4KYS.js +0 -1
  271. zenml/zen_server/dashboard/assets/page-BN3MHq1a.js +0 -1
  272. zenml/zen_server/dashboard/assets/page-BNgVExjN.js +0 -1
  273. zenml/zen_server/dashboard/assets/page-BPtvu74G.js +0 -1
  274. zenml/zen_server/dashboard/assets/page-BTIuG0ki.js +0 -2
  275. zenml/zen_server/dashboard/assets/page-BcQzleH6.js +0 -1
  276. zenml/zen_server/dashboard/assets/page-C05Jw4M2.js +0 -1
  277. zenml/zen_server/dashboard/assets/page-C28a7K8h.js +0 -1
  278. zenml/zen_server/dashboard/assets/page-C9WLk0X-.js +0 -1
  279. zenml/zen_server/dashboard/assets/page-CINMx64X.js +0 -1
  280. zenml/zen_server/dashboard/assets/page-CYrJbk7P.js +0 -1
  281. zenml/zen_server/dashboard/assets/page-Ce0cqLo3.js +0 -1
  282. zenml/zen_server/dashboard/assets/page-CgNsEkw-.js +0 -1
  283. zenml/zen_server/dashboard/assets/page-Ct2FUYuR.js +0 -1
  284. zenml/zen_server/dashboard/assets/page-D8G2B3Bu.js +0 -1
  285. zenml/zen_server/dashboard/assets/page-DL8a4_lg.js +0 -3
  286. zenml/zen_server/dashboard/assets/page-DMhYn1cF.js +0 -1
  287. zenml/zen_server/dashboard/assets/page-Dd_Yq-Uf.js +0 -6
  288. zenml/zen_server/dashboard/assets/page-DfSvqT8g.js +0 -1
  289. zenml/zen_server/dashboard/assets/page-Dt6ANUTx.js +0 -1
  290. zenml/zen_server/dashboard/assets/page-DtvTleaT.js +0 -1
  291. zenml/zen_server/dashboard/assets/page-DwfGTiVs.js +0 -1
  292. zenml/zen_server/dashboard/assets/page-JgomSTDc.js +0 -1
  293. zenml/zen_server/dashboard/assets/page-L84ig6HB.js +0 -1
  294. zenml/zen_server/dashboard/assets/page-Mabsn4QJ.js +0 -1
  295. zenml/zen_server/dashboard/assets/page-P04L5cm9.js +0 -1
  296. zenml/zen_server/dashboard/assets/page-PfhAnvq4.js +0 -1
  297. zenml/zen_server/dashboard/assets/page-WdRrlNt_.js +0 -1
  298. zenml/zen_server/dashboard/assets/page-cqJDDDeK.js +0 -1
  299. zenml/zen_server/dashboard/assets/page-k-Wxh9L_.js +0 -1
  300. zenml/zen_server/dashboard/assets/page-y-zV4n0c.js +0 -1
  301. zenml/zen_server/dashboard/assets/rocket-Cf-B-XOR.js +0 -1
  302. zenml/zen_server/dashboard/assets/settings_preview-0JLrRgHP.webp +0 -0
  303. zenml/zen_server/dashboard/assets/sharedSchema-Bse2agAf.js +0 -14
  304. zenml/zen_server/dashboard/assets/stack-detail-query-BAcZJrN3.js +0 -1
  305. zenml/zen_server/dashboard/assets/tick-circle-m94Aa6Zt.js +0 -1
  306. zenml/zen_server/dashboard/assets/tour-cover-BYfeen6M.webp +0 -0
  307. zenml/zen_server/dashboard/assets/type-guards-CaeD8wHO.js +0 -1
  308. zenml/zen_server/dashboard/assets/update-server-settings-mutation-DwMM1LJz.js +0 -1
  309. {zenml_nightly-0.82.1.dev20250526.dist-info → zenml_nightly-0.82.1.dev20250528.dist-info}/LICENSE +0 -0
  310. {zenml_nightly-0.82.1.dev20250526.dist-info → zenml_nightly-0.82.1.dev20250528.dist-info}/WHEEL +0 -0
  311. {zenml_nightly-0.82.1.dev20250526.dist-info → zenml_nightly-0.82.1.dev20250528.dist-info}/entry_points.txt +0 -0
@@ -15,12 +15,14 @@
15
15
 
16
16
  import json
17
17
  from datetime import datetime
18
- from typing import TYPE_CHECKING, Any, Dict, List, Optional
18
+ from typing import TYPE_CHECKING, Any, Dict, List, Optional, Sequence
19
19
  from uuid import UUID
20
20
 
21
21
  from pydantic import ConfigDict
22
22
  from sqlalchemy import TEXT, Column, String, UniqueConstraint
23
23
  from sqlalchemy.dialects.mysql import MEDIUMTEXT
24
+ from sqlalchemy.orm import joinedload
25
+ from sqlalchemy.sql.base import ExecutableOption
24
26
  from sqlmodel import Field, Relationship, SQLModel
25
27
 
26
28
  from zenml.config.pipeline_configurations import PipelineConfiguration
@@ -53,7 +55,10 @@ from zenml.zen_stores.schemas.pipeline_run_schemas import PipelineRunSchema
53
55
  from zenml.zen_stores.schemas.project_schemas import ProjectSchema
54
56
  from zenml.zen_stores.schemas.schema_utils import build_foreign_key_field
55
57
  from zenml.zen_stores.schemas.user_schemas import UserSchema
56
- from zenml.zen_stores.schemas.utils import RunMetadataInterface
58
+ from zenml.zen_stores.schemas.utils import (
59
+ RunMetadataInterface,
60
+ jl_arg,
61
+ )
57
62
 
58
63
  if TYPE_CHECKING:
59
64
  from zenml.zen_stores.schemas.artifact_schemas import ArtifactVersionSchema
@@ -185,6 +190,55 @@ class StepRunSchema(NamedSchema, RunMetadataInterface, table=True):
185
190
 
186
191
  model_config = ConfigDict(protected_namespaces=()) # type: ignore[assignment]
187
192
 
193
+ @classmethod
194
+ def get_query_options(
195
+ cls,
196
+ include_metadata: bool = False,
197
+ include_resources: bool = False,
198
+ **kwargs: Any,
199
+ ) -> Sequence[ExecutableOption]:
200
+ """Get the query options for the schema.
201
+
202
+ Args:
203
+ include_metadata: Whether metadata will be included when converting
204
+ the schema to a model.
205
+ include_resources: Whether resources will be included when
206
+ converting the schema to a model.
207
+ **kwargs: Keyword arguments to allow schema specific logic
208
+
209
+ Returns:
210
+ A list of query options.
211
+ """
212
+ from zenml.zen_stores.schemas import ModelVersionSchema
213
+
214
+ options = [
215
+ joinedload(jl_arg(StepRunSchema.deployment)),
216
+ joinedload(jl_arg(StepRunSchema.pipeline_run)),
217
+ ]
218
+
219
+ if include_metadata:
220
+ options.extend(
221
+ [
222
+ joinedload(jl_arg(StepRunSchema.logs)),
223
+ # joinedload(jl_arg(StepRunSchema.parents)),
224
+ # joinedload(jl_arg(StepRunSchema.run_metadata)),
225
+ ]
226
+ )
227
+
228
+ if include_resources:
229
+ options.extend(
230
+ [
231
+ joinedload(jl_arg(StepRunSchema.model_version)).joinedload(
232
+ jl_arg(ModelVersionSchema.model), innerjoin=True
233
+ ),
234
+ joinedload(jl_arg(StepRunSchema.user)),
235
+ # joinedload(jl_arg(StepRunSchema.input_artifacts)),
236
+ # joinedload(jl_arg(StepRunSchema.output_artifacts)),
237
+ ]
238
+ )
239
+
240
+ return options
241
+
188
242
  @classmethod
189
243
  def from_request(
190
244
  cls, request: StepRunRequest, deployment_id: Optional[UUID]
@@ -234,22 +288,6 @@ class StepRunSchema(NamedSchema, RunMetadataInterface, table=True):
234
288
  Raises:
235
289
  ValueError: In case the step run configuration is missing.
236
290
  """
237
- input_artifacts = {
238
- artifact.name: StepRunInputResponse(
239
- input_type=StepRunInputArtifactType(artifact.type),
240
- **artifact.artifact_version.to_model().model_dump(),
241
- )
242
- for artifact in self.input_artifacts
243
- }
244
-
245
- output_artifacts: Dict[str, List["ArtifactVersionResponse"]] = {}
246
- for artifact in self.output_artifacts:
247
- if artifact.name not in output_artifacts:
248
- output_artifacts[artifact.name] = []
249
- output_artifacts[artifact.name].append(
250
- artifact.artifact_version.to_model()
251
- )
252
-
253
291
  step = None
254
292
  if self.deployment is not None:
255
293
  step_configurations = json.loads(
@@ -284,20 +322,19 @@ class StepRunSchema(NamedSchema, RunMetadataInterface, table=True):
284
322
  )
285
323
 
286
324
  body = StepRunResponseBody(
287
- user=self.user.to_model() if self.user else None,
325
+ user_id=self.user_id,
326
+ project_id=self.project_id,
288
327
  status=ExecutionStatus(self.status),
289
328
  start_time=self.start_time,
290
329
  end_time=self.end_time,
291
- inputs=input_artifacts,
292
- outputs=output_artifacts,
293
330
  created=self.created,
294
331
  updated=self.updated,
295
332
  model_version_id=self.model_version_id,
333
+ substitutions=step.config.substitutions,
296
334
  )
297
335
  metadata = None
298
336
  if include_metadata:
299
337
  metadata = StepRunResponseMetadata(
300
- project=self.project.to_model(),
301
338
  config=step.config,
302
339
  spec=step.spec,
303
340
  cache_key=self.cache_key,
@@ -318,11 +355,33 @@ class StepRunSchema(NamedSchema, RunMetadataInterface, table=True):
318
355
  if self.model_version:
319
356
  model_version = self.model_version.to_model()
320
357
 
321
- resources = StepRunResponseResources(model_version=model_version)
358
+ input_artifacts: Dict[str, List[StepRunInputResponse]] = {}
359
+ for input_artifact in self.input_artifacts:
360
+ if input_artifact.name not in input_artifacts:
361
+ input_artifacts[input_artifact.name] = []
362
+ step_run_input = StepRunInputResponse(
363
+ input_type=StepRunInputArtifactType(input_artifact.type),
364
+ **input_artifact.artifact_version.to_model().model_dump(),
365
+ )
366
+ input_artifacts[input_artifact.name].append(step_run_input)
367
+
368
+ output_artifacts: Dict[str, List["ArtifactVersionResponse"]] = {}
369
+ for output_artifact in self.output_artifacts:
370
+ if output_artifact.name not in output_artifacts:
371
+ output_artifacts[output_artifact.name] = []
372
+ output_artifacts[output_artifact.name].append(
373
+ output_artifact.artifact_version.to_model()
374
+ )
375
+
376
+ resources = StepRunResponseResources(
377
+ user=self.user.to_model() if self.user else None,
378
+ model_version=model_version,
379
+ inputs=input_artifacts,
380
+ outputs=output_artifacts,
381
+ )
322
382
 
323
383
  return StepRunResponse(
324
384
  id=self.id,
325
- project_id=self.project_id,
326
385
  name=self.name,
327
386
  body=body,
328
387
  metadata=metadata,
@@ -410,7 +469,10 @@ class StepRunInputArtifactSchema(SQLModel, table=True):
410
469
 
411
470
  # Relationships
412
471
  step_run: "StepRunSchema" = Relationship(back_populates="input_artifacts")
413
- artifact_version: "ArtifactVersionSchema" = Relationship()
472
+ artifact_version: "ArtifactVersionSchema" = Relationship(
473
+ back_populates="input_of_step_runs",
474
+ sa_relationship_kwargs={"lazy": "joined"},
475
+ )
414
476
 
415
477
 
416
478
  class StepRunOutputArtifactSchema(SQLModel, table=True):
@@ -446,5 +508,6 @@ class StepRunOutputArtifactSchema(SQLModel, table=True):
446
508
  # Relationship
447
509
  step_run: "StepRunSchema" = Relationship(back_populates="output_artifacts")
448
510
  artifact_version: "ArtifactVersionSchema" = Relationship(
449
- back_populates="output_of_step_runs"
511
+ back_populates="output_of_step_runs",
512
+ sa_relationship_kwargs={"lazy": "joined"},
450
513
  )
@@ -13,11 +13,13 @@
13
13
  # permissions and limitations under the License.
14
14
  """SQLModel implementation of tag tables."""
15
15
 
16
- from typing import Any, List, Optional
16
+ from typing import Any, List, Optional, Sequence
17
17
  from uuid import UUID
18
18
 
19
19
  from sqlalchemy import VARCHAR, Column, UniqueConstraint
20
- from sqlmodel import Field, Relationship
20
+ from sqlalchemy.orm import joinedload, noload, object_session
21
+ from sqlalchemy.sql.base import ExecutableOption
22
+ from sqlmodel import Field, Relationship, col, func, select
21
23
 
22
24
  from zenml.enums import ColorVariants, TaggableResourceTypes
23
25
  from zenml.models import (
@@ -28,6 +30,7 @@ from zenml.models import (
28
30
  TagResponse,
29
31
  TagResponseBody,
30
32
  TagResponseMetadata,
33
+ TagResponseResources,
31
34
  TagUpdate,
32
35
  )
33
36
  from zenml.utils.time_utils import utc_now
@@ -37,6 +40,7 @@ from zenml.zen_stores.schemas.schema_utils import (
37
40
  build_index,
38
41
  )
39
42
  from zenml.zen_stores.schemas.user_schemas import UserSchema
43
+ from zenml.zen_stores.schemas.utils import jl_arg
40
44
 
41
45
 
42
46
  class TagSchema(NamedSchema, table=True):
@@ -68,6 +72,57 @@ class TagSchema(NamedSchema, table=True):
68
72
  sa_relationship_kwargs={"overlaps": "tags", "cascade": "delete"},
69
73
  )
70
74
 
75
+ @classmethod
76
+ def get_query_options(
77
+ cls,
78
+ include_metadata: bool = False,
79
+ include_resources: bool = False,
80
+ **kwargs: Any,
81
+ ) -> Sequence[ExecutableOption]:
82
+ """Get the query options for the schema.
83
+
84
+ Args:
85
+ include_metadata: Whether metadata will be included when converting
86
+ the schema to a model.
87
+ include_resources: Whether resources will be included when
88
+ converting the schema to a model.
89
+ **kwargs: Keyword arguments to allow schema specific logic
90
+
91
+ Returns:
92
+ A list of query options.
93
+ """
94
+ options = []
95
+
96
+ if include_resources:
97
+ options.extend([joinedload(jl_arg(TagSchema.user))])
98
+
99
+ return options
100
+
101
+ @property
102
+ def tagged_count(self) -> int:
103
+ """Fetch the number of resources tagged with this tag.
104
+
105
+ Raises:
106
+ RuntimeError: If no session for the schema exists.
107
+
108
+ Returns:
109
+ The number of resources tagged with this tag.
110
+ """
111
+ from zenml.zen_stores.schemas import TagResourceSchema
112
+
113
+ if session := object_session(self):
114
+ count = session.scalar(
115
+ select(func.count(col(TagResourceSchema.id)))
116
+ .where(TagResourceSchema.tag_id == self.id)
117
+ .options(noload("*"))
118
+ )
119
+
120
+ return int(count) if count else 0
121
+ else:
122
+ raise RuntimeError(
123
+ "Missing DB session to fetch tagged count for tag."
124
+ )
125
+
71
126
  @classmethod
72
127
  def from_request(cls, request: TagRequest) -> "TagSchema":
73
128
  """Convert an `TagRequest` to an `TagSchema`.
@@ -104,19 +159,28 @@ class TagSchema(NamedSchema, table=True):
104
159
  """
105
160
  metadata = None
106
161
  if include_metadata:
107
- metadata = TagResponseMetadata()
162
+ metadata = TagResponseMetadata(
163
+ tagged_count=self.tagged_count,
164
+ )
165
+
166
+ resources = None
167
+ if include_resources:
168
+ resources = TagResponseResources(
169
+ user=self.user.to_model() if self.user else None,
170
+ )
171
+
108
172
  return TagResponse(
109
173
  id=self.id,
110
174
  name=self.name,
111
175
  body=TagResponseBody(
112
- user=self.user.to_model() if self.user else None,
176
+ user_id=self.user_id,
113
177
  created=self.created,
114
178
  updated=self.updated,
115
179
  color=ColorVariants(self.color),
116
180
  exclusive=self.exclusive,
117
- tagged_count=len(self.links),
118
181
  ),
119
182
  metadata=metadata,
183
+ resources=resources,
120
184
  )
121
185
 
122
186
  def update(self, update: TagUpdate) -> "TagSchema":
@@ -15,10 +15,12 @@
15
15
 
16
16
  import base64
17
17
  import json
18
- from typing import Any, List, Optional, cast
18
+ from typing import Any, List, Optional, Sequence, cast
19
19
  from uuid import UUID
20
20
 
21
21
  from sqlalchemy import TEXT, Column, UniqueConstraint
22
+ from sqlalchemy.orm import joinedload
23
+ from sqlalchemy.sql.base import ExecutableOption
22
24
  from sqlmodel import Field, Relationship
23
25
 
24
26
  from zenml.config.schedule import Schedule
@@ -44,7 +46,10 @@ from zenml.zen_stores.schemas.event_source_schemas import EventSourceSchema
44
46
  from zenml.zen_stores.schemas.project_schemas import ProjectSchema
45
47
  from zenml.zen_stores.schemas.schema_utils import build_foreign_key_field
46
48
  from zenml.zen_stores.schemas.user_schemas import UserSchema
47
- from zenml.zen_stores.schemas.utils import get_page_from_list
49
+ from zenml.zen_stores.schemas.utils import (
50
+ get_page_from_list,
51
+ jl_arg,
52
+ )
48
53
 
49
54
 
50
55
  class TriggerSchema(NamedSchema, table=True):
@@ -118,6 +123,40 @@ class TriggerSchema(NamedSchema, table=True):
118
123
  description: str = Field(sa_column=Column(TEXT, nullable=True))
119
124
  is_active: bool = Field(nullable=False)
120
125
 
126
+ @classmethod
127
+ def get_query_options(
128
+ cls,
129
+ include_metadata: bool = False,
130
+ include_resources: bool = False,
131
+ **kwargs: Any,
132
+ ) -> Sequence[ExecutableOption]:
133
+ """Get the query options for the schema.
134
+
135
+ Args:
136
+ include_metadata: Whether metadata will be included when converting
137
+ the schema to a model.
138
+ include_resources: Whether resources will be included when
139
+ converting the schema to a model.
140
+ **kwargs: Keyword arguments to allow schema specific logic
141
+
142
+ Returns:
143
+ A list of query options.
144
+ """
145
+ options = [
146
+ joinedload(jl_arg(TriggerSchema.action), innerjoin=True),
147
+ joinedload(jl_arg(TriggerSchema.event_source), innerjoin=True),
148
+ ]
149
+
150
+ if include_resources:
151
+ options.extend(
152
+ [
153
+ joinedload(jl_arg(TriggerSchema.user)),
154
+ # joinedload(jl_arg(TriggerSchema.executions)),
155
+ ]
156
+ )
157
+
158
+ return options
159
+
121
160
  def update(self, trigger_update: "TriggerUpdate") -> "TriggerSchema":
122
161
  """Updates a trigger schema with a trigger update model.
123
162
 
@@ -192,7 +231,8 @@ class TriggerSchema(NamedSchema, table=True):
192
231
  from zenml.models import TriggerExecutionResponse
193
232
 
194
233
  body = TriggerResponseBody(
195
- user=self.user.to_model() if self.user else None,
234
+ user_id=self.user_id,
235
+ project_id=self.project_id,
196
236
  created=self.created,
197
237
  updated=self.updated,
198
238
  action_flavor=self.action.flavor,
@@ -208,7 +248,6 @@ class TriggerSchema(NamedSchema, table=True):
208
248
  metadata = None
209
249
  if include_metadata:
210
250
  metadata = TriggerResponseMetadata(
211
- project=self.project.to_model(),
212
251
  event_filter=json.loads(
213
252
  base64.b64decode(self.event_filter).decode()
214
253
  ),
@@ -231,6 +270,7 @@ class TriggerSchema(NamedSchema, table=True):
231
270
  ),
232
271
  )
233
272
  resources = TriggerResponseResources(
273
+ user=self.user.to_model() if self.user else None,
234
274
  action=self.action.to_model(),
235
275
  event_source=self.event_source.to_model()
236
276
  if self.event_source
@@ -239,7 +279,6 @@ class TriggerSchema(NamedSchema, table=True):
239
279
  )
240
280
  return TriggerResponse(
241
281
  id=self.id,
242
- project_id=self.project_id,
243
282
  name=self.name,
244
283
  body=body,
245
284
  metadata=metadata,
@@ -15,8 +15,9 @@
15
15
 
16
16
  import json
17
17
  import math
18
- from typing import Dict, List, Type, TypeVar
18
+ from typing import Any, Dict, List, Type, TypeVar, cast
19
19
 
20
+ from sqlalchemy.orm import InstrumentedAttribute
20
21
  from sqlmodel import Relationship
21
22
 
22
23
  from zenml.metadata.metadata_types import MetadataType
@@ -26,6 +27,18 @@ from zenml.zen_stores.schemas.base_schemas import BaseSchema
26
27
  S = TypeVar("S", bound=BaseSchema)
27
28
 
28
29
 
30
+ def jl_arg(column: Any) -> InstrumentedAttribute[Any]:
31
+ """Cast a SQLModel column to a joinedload argument.
32
+
33
+ Args:
34
+ column: The column.
35
+
36
+ Returns:
37
+ The column cast to a joinedload argument.
38
+ """
39
+ return cast(InstrumentedAttribute[Any], column)
40
+
41
+
29
42
  def get_page_from_list(
30
43
  items_list: List[S],
31
44
  response_model: Type[BaseResponse], # type: ignore[type-arg]
@@ -77,9 +90,14 @@ class RunMetadataInterface:
77
90
 
78
91
  run_metadata = Relationship()
79
92
 
80
- def fetch_metadata_collection(self) -> Dict[str, List[RunMetadataEntry]]:
93
+ def fetch_metadata_collection(
94
+ self, **kwargs: Any
95
+ ) -> Dict[str, List[RunMetadataEntry]]:
81
96
  """Fetches all the metadata entries related to the entity.
82
97
 
98
+ Args:
99
+ **kwargs: Keyword arguments.
100
+
83
101
  Returns:
84
102
  A dictionary, where the key is the key of the metadata entry
85
103
  and the values represent the list of entries with this key.
@@ -98,14 +116,17 @@ class RunMetadataInterface:
98
116
 
99
117
  return metadata_collection
100
118
 
101
- def fetch_metadata(self) -> Dict[str, MetadataType]:
119
+ def fetch_metadata(self, **kwargs: Any) -> Dict[str, MetadataType]:
102
120
  """Fetches the latest metadata entry related to the entity.
103
121
 
122
+ Args:
123
+ **kwargs: Keyword arguments to pass to the metadata collection.
124
+
104
125
  Returns:
105
126
  A dictionary, where the key is the key of the metadata entry
106
127
  and the values represent the latest entry with this key.
107
128
  """
108
- metadata_collection = self.fetch_metadata_collection()
129
+ metadata_collection = self.fetch_metadata_collection(**kwargs)
109
130
  return {
110
131
  k: sorted(v, key=lambda x: x.created, reverse=True)[0].value
111
132
  for k, v in metadata_collection.items()