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.
- zenml/VERSION +1 -1
- zenml/cli/base.py +6 -1
- zenml/cli/model.py +16 -36
- zenml/cli/server.py +8 -3
- zenml/client.py +20 -4
- zenml/client_lazy_loader.py +2 -0
- zenml/config/docker_settings.py +15 -2
- zenml/enums.py +3 -0
- zenml/event_hub/event_hub.py +1 -1
- zenml/integrations/bitbucket/plugins/event_sources/bitbucket_webhook_event_source.py +1 -1
- zenml/integrations/github/plugins/event_sources/github_webhook_event_source.py +1 -1
- zenml/integrations/kubernetes/flavors/kubernetes_orchestrator_flavor.py +3 -0
- zenml/integrations/kubernetes/orchestrators/kubernetes_orchestrator_entrypoint.py +37 -26
- zenml/integrations/skypilot/flavors/skypilot_orchestrator_base_vm_config.py +45 -4
- zenml/integrations/skypilot/orchestrators/skypilot_base_vm_orchestrator.py +92 -84
- zenml/integrations/skypilot/orchestrators/skypilot_orchestrator_entrypoint.py +207 -179
- zenml/integrations/skypilot/utils.py +273 -0
- zenml/integrations/skypilot_aws/__init__.py +1 -2
- zenml/integrations/skypilot_azure/__init__.py +1 -2
- zenml/integrations/skypilot_gcp/__init__.py +9 -1
- zenml/integrations/skypilot_kubernetes/__init__.py +2 -3
- zenml/integrations/skypilot_lambda/__init__.py +1 -2
- zenml/login/web_login.py +1 -1
- zenml/model/model.py +13 -23
- zenml/models/__init__.py +39 -2
- zenml/models/v2/base/scoped.py +34 -15
- zenml/models/v2/core/artifact.py +10 -9
- zenml/models/v2/core/artifact_version.py +16 -16
- zenml/models/v2/core/logs.py +8 -50
- zenml/models/v2/core/model.py +10 -10
- zenml/models/v2/core/model_version.py +155 -88
- zenml/models/v2/core/pipeline.py +10 -11
- zenml/models/v2/core/pipeline_deployment.py +1 -9
- zenml/models/v2/core/pipeline_run.py +10 -17
- zenml/models/v2/core/run_template.py +10 -10
- zenml/models/v2/core/step_run.py +100 -16
- zenml/models/v2/core/tag.py +5 -4
- zenml/models/v2/misc/pipeline_run_dag.py +46 -0
- zenml/orchestrators/base_orchestrator.py +8 -19
- zenml/orchestrators/cache_utils.py +48 -1
- zenml/orchestrators/input_utils.py +35 -39
- zenml/orchestrators/step_launcher.py +1 -1
- zenml/orchestrators/step_run_utils.py +26 -10
- zenml/pipelines/pipeline_definition.py +3 -3
- zenml/pipelines/run_utils.py +2 -3
- zenml/service_connectors/service_connector.py +5 -1
- zenml/stack/stack_component.py +1 -4
- zenml/steps/step_context.py +1 -1
- zenml/utils/dashboard_utils.py +3 -3
- zenml/zen_server/auth.py +6 -3
- zenml/zen_server/dashboard/assets/{404-_AtuLtaX.js → 404-DmJUgorp.js} +1 -1
- zenml/zen_server/dashboard/assets/{@radix-C7hRs6Kx.js → @radix-Cdvw4jJ8.js} +1 -1
- zenml/zen_server/dashboard/assets/{@react-router-CNP6g_RL.js → @react-router-DeDfXbUF.js} +5 -5
- zenml/zen_server/dashboard/assets/{@reactflow-CQi1Z1Wq.js → @reactflow-8OCk19Fi.js} +1 -1
- zenml/zen_server/dashboard/assets/{@tanstack-CSxjHCME.js → @tanstack-5gTMR7G2.js} +4 -4
- zenml/zen_server/dashboard/assets/AlertDialogDropdownItem-CZW4QyWn.js +1 -0
- zenml/zen_server/dashboard/assets/ButtonGroup-DFWWFGUE.js +1 -0
- zenml/zen_server/dashboard/assets/{CodeSnippet-CvI6D0wx.js → CodeSnippet-D2HkkAGr.js} +1 -1
- zenml/zen_server/dashboard/assets/CollapsibleCard-CnS09ljw.js +1 -0
- zenml/zen_server/dashboard/assets/{ComponentBadge-DKw7Gndh.js → ComponentBadge-CDgdd0Ks.js} +1 -1
- zenml/zen_server/dashboard/assets/ComponentIcon-CbbOc7lb.js +1 -0
- zenml/zen_server/dashboard/assets/{DeleteAlertDialog-DVvXt-S6.js → DeleteAlertDialog-VIOMDLmx.js} +1 -1
- zenml/zen_server/dashboard/assets/DialogItem-ClFCqxEp.js +1 -0
- zenml/zen_server/dashboard/assets/{DisplayDate-CYVBBSgr.js → DisplayDate-8RESqe5H.js} +1 -1
- zenml/zen_server/dashboard/assets/{EmptyState-M1jafpg6.js → EmptyState-CjrgDtVk.js} +1 -1
- zenml/zen_server/dashboard/assets/{Error-BWaXP0VK.js → Error-CQzjbDcN.js} +1 -1
- zenml/zen_server/dashboard/assets/ExecutionStatus-CWreILP0.js +1 -0
- zenml/zen_server/dashboard/assets/{Helpbox-iE1xLmiZ.js → Helpbox-CiKxG5_X.js} +1 -1
- zenml/zen_server/dashboard/assets/Infobox-CGxFvqzi.js +1 -0
- zenml/zen_server/dashboard/assets/LeftSideMenu-DCsKdIjC.js +1 -0
- zenml/zen_server/dashboard/assets/{Lock-DW-0_M0o.js → Lock-CrIAdQo6.js} +1 -1
- zenml/zen_server/dashboard/assets/NestedCollapsible-3M4llYtH.js +1 -0
- zenml/zen_server/dashboard/assets/NumberBox-C0mQktmV.js +1 -0
- zenml/zen_server/dashboard/assets/Partials-DSjkttlz.js +1 -0
- zenml/zen_server/dashboard/assets/{PasswordChecker-lYTOtNom.js → PasswordChecker-B88WjuCe.js} +1 -1
- zenml/zen_server/dashboard/assets/ProCta-Dm5cWKpS.js +1 -0
- zenml/zen_server/dashboard/assets/{ProviderIcon-DLo7t1lo.js → ProviderIcon-DPwMR6nF.js} +1 -1
- zenml/zen_server/dashboard/assets/ProviderRadio-DEDNRgAb.js +1 -0
- zenml/zen_server/dashboard/assets/RunsBody-BRBn1e2O.js +1 -0
- zenml/zen_server/dashboard/assets/SearchField-DY6-UbRT.js +1 -0
- zenml/zen_server/dashboard/assets/SecretTooltip-CZTRnaCV.js +1 -0
- zenml/zen_server/dashboard/assets/{SetPassword-DR-EiLI5.js → SetPassword-BjNGDC5e.js} +1 -1
- zenml/zen_server/dashboard/assets/SheetHeader-CASpN2Lz.js +1 -0
- zenml/zen_server/dashboard/assets/StackComponentList-Be1pQt9m.js +1 -0
- zenml/zen_server/dashboard/assets/StackList-BdiR5DvR.js +1 -0
- zenml/zen_server/dashboard/assets/StackName-ojLC6xdl.js +1 -0
- zenml/zen_server/dashboard/assets/Tabs-DNSKblCM.js +1 -0
- zenml/zen_server/dashboard/assets/Tick-BPrWnNlN.js +1 -0
- zenml/zen_server/dashboard/assets/{UpdatePasswordSchemas-DbFEaezI.js → UpdatePasswordSchemas-CNfKDo2Q.js} +1 -1
- zenml/zen_server/dashboard/assets/UsageReason-Cb-mpV8M.js +1 -0
- zenml/zen_server/dashboard/assets/{Wizard-CMI6Ksgz.js → Wizard-Dg8Pmn5A.js} +1 -1
- zenml/zen_server/dashboard/assets/WizardFooter-BcNDIvlQ.js +1 -0
- zenml/zen_server/dashboard/assets/{all-pipeline-runs-query-BGASHYtF.js → all-pipeline-runs-query-DCdax7I5.js} +1 -1
- zenml/zen_server/dashboard/assets/{arrow-left-CwgF2MEM.js → arrow-left-MRXv5pAH.js} +1 -1
- zenml/zen_server/dashboard/assets/bulk-delete-C_kpIB9A.js +3 -0
- zenml/zen_server/dashboard/assets/{check-DK77doTf.js → check-B9QMTa3f.js} +1 -1
- zenml/zen_server/dashboard/assets/{check-circle-mvyzYvIW.js → check-circle-C4tYvbtw.js} +1 -1
- zenml/zen_server/dashboard/assets/{chevron-down-A-rmltmI.js → chevron-down-jbbQh82s.js} +1 -1
- zenml/zen_server/dashboard/assets/{chevron-right-double-uNWbJT-C.js → chevron-right-double-Dgp_gEsp.js} +1 -1
- zenml/zen_server/dashboard/assets/{clock-CPA5cYxq.js → clock-B_mTG8PH.js} +1 -1
- zenml/zen_server/dashboard/assets/{code-browser-j2EpcxIA.js → code-browser-CiD8qkBx.js} +1 -1
- zenml/zen_server/dashboard/assets/configuration-form-B2hmKGnF.js +1 -0
- zenml/zen_server/dashboard/assets/connectivity-4UKGMYnr.webp +0 -0
- zenml/zen_server/dashboard/assets/constants-1EZZxtay.js +1 -0
- zenml/zen_server/dashboard/assets/create-stack-TKmMtrkQ.js +1 -0
- zenml/zen_server/dashboard/assets/dates-Buh6SMo7.js +1 -0
- zenml/zen_server/dashboard/assets/delete-run-CCR9md_s.js +1 -0
- zenml/zen_server/dashboard/assets/eye-CbVlAYty.js +1 -0
- zenml/zen_server/dashboard/assets/{file-text-BdxZdjP_.js → file-text-Cd8wVfq5.js} +1 -1
- zenml/zen_server/dashboard/assets/form-DFJkaFDX.js +1 -0
- zenml/zen_server/dashboard/assets/form-schemas-CrznJVzA.js +1 -0
- zenml/zen_server/dashboard/assets/{gcp-CHNvgEss.js → gcp-B1I3Qvcx.js} +1 -1
- zenml/zen_server/dashboard/assets/{help-DyMolRxD.js → help-Co6aedki.js} +1 -1
- zenml/zen_server/dashboard/assets/index-BFqbGSck.js +308 -0
- zenml/zen_server/dashboard/assets/{index-CrhdX_qG.js → index-BjUu1mP4.js} +1 -1
- zenml/zen_server/dashboard/assets/{index-DR30v9MZ.js → index-DWpiv-Ft.js} +1 -1
- zenml/zen_server/dashboard/assets/index-DuhuqTCI.css +1 -0
- zenml/zen_server/dashboard/assets/index-U992soPJ.js +1 -0
- zenml/zen_server/dashboard/assets/index.es-C1gfATPn.js +14 -0
- zenml/zen_server/dashboard/assets/{index.esm-D7jFlf5N.js → index.esm-DhJo3mA6.js} +1 -1
- zenml/zen_server/dashboard/assets/info-QkbQz4QU.js +1 -0
- zenml/zen_server/dashboard/assets/{key-icon-DO4DPJHZ.js → key-icon-C07HKw8z.js} +1 -1
- zenml/zen_server/dashboard/assets/{layout-h3cbx8WZ.js → layout-DBbfEFBe.js} +1 -1
- zenml/zen_server/dashboard/assets/layout-Do9YI4QX.js +1 -0
- zenml/zen_server/dashboard/assets/login-mutation-D3tFP6Wm.js +1 -0
- zenml/zen_server/dashboard/assets/{logs-B5n0U7tB.js → logs-CQKlJjo0.js} +1 -1
- zenml/zen_server/dashboard/assets/{package-D1Mhqeh8.js → package-miExReQl.js} +1 -1
- zenml/zen_server/dashboard/assets/page-9RjCitFH.js +1 -0
- zenml/zen_server/dashboard/assets/page-B0PsXWiT.js +1 -0
- zenml/zen_server/dashboard/assets/page-BCrKmYIZ.js +1 -0
- zenml/zen_server/dashboard/assets/page-BcRI3-aR.js +29 -0
- zenml/zen_server/dashboard/assets/page-Be3R2uYn.js +1 -0
- zenml/zen_server/dashboard/assets/page-BgknnddT.js +1 -0
- zenml/zen_server/dashboard/assets/page-BrT0_zSJ.js +40 -0
- zenml/zen_server/dashboard/assets/page-Bs3W2FDi.js +1 -0
- zenml/zen_server/dashboard/assets/page-C210HcBA.js +1 -0
- zenml/zen_server/dashboard/assets/page-C6KaiZ_W.js +1 -0
- zenml/zen_server/dashboard/assets/page-CAJ8B0vb.js +1 -0
- zenml/zen_server/dashboard/assets/page-CAUYrfui.js +1 -0
- zenml/zen_server/dashboard/assets/page-CHxVhF3x.js +1 -0
- zenml/zen_server/dashboard/assets/{page-CSwZxZMQ.js → page-CN7lkvXr.js} +1 -1
- zenml/zen_server/dashboard/assets/page-CUaMMoPG.js +1 -0
- zenml/zen_server/dashboard/assets/page-Cal6XQ4U.js +1 -0
- zenml/zen_server/dashboard/assets/page-CdZCmszX.js +1 -0
- zenml/zen_server/dashboard/assets/page-ChGcZI_6.js +1 -0
- zenml/zen_server/dashboard/assets/page-CktmtZ8Z.js +1 -0
- zenml/zen_server/dashboard/assets/page-ClvmVesa.js +1 -0
- zenml/zen_server/dashboard/assets/page-CnbIYE80.js +1 -0
- zenml/zen_server/dashboard/assets/page-CoXzjeEY.js +1 -0
- zenml/zen_server/dashboard/assets/page-CtiuMP_r.js +1 -0
- zenml/zen_server/dashboard/assets/page-D9Hfx6GV.js +1 -0
- zenml/zen_server/dashboard/assets/page-D9iuB88h.js +1 -0
- zenml/zen_server/dashboard/assets/page-DCcuPZ8P.js +1 -0
- zenml/zen_server/dashboard/assets/page-DEohTSz6.js +1 -0
- zenml/zen_server/dashboard/assets/page-DJIGaUQ9.js +1 -0
- zenml/zen_server/dashboard/assets/page-DKK6ulgy.js +1 -0
- zenml/zen_server/dashboard/assets/page-DNjKHjnH.js +1 -0
- zenml/zen_server/dashboard/assets/page-DUK0Nd_1.js +1 -0
- zenml/zen_server/dashboard/assets/page-DUKbOhaD.js +1 -0
- zenml/zen_server/dashboard/assets/page-DYOucPtA.js +1 -0
- zenml/zen_server/dashboard/assets/page-DpqRelAy.js +1 -0
- zenml/zen_server/dashboard/assets/{page-ZfTtFicG.js → page-DwVPpCFg.js} +2 -2
- zenml/zen_server/dashboard/assets/page-XURWnYZP.js +1 -0
- zenml/zen_server/dashboard/assets/page-abw-2oeW.js +1 -0
- zenml/zen_server/dashboard/assets/page-akLcPcKw.js +1 -0
- zenml/zen_server/dashboard/assets/page-n9ejQ2V3.js +2 -0
- zenml/zen_server/dashboard/assets/page-sJjNT9xA.js +6 -0
- zenml/zen_server/dashboard/assets/{persist-UUym702q.js → persist-DWMWVP-y.js} +1 -1
- zenml/zen_server/dashboard/assets/{persist-D87V82eO.js → persist-Dec_w7aB.js} +1 -1
- zenml/zen_server/dashboard/assets/pipeline-CSUlkd50.js +1 -0
- zenml/zen_server/dashboard/assets/{plus-COjQg3AG.js → plus-Cl0_rCVF.js} +1 -1
- zenml/zen_server/dashboard/assets/{react-error-boundary.esm-fyoUBS25.js → react-error-boundary.esm-7_MuhCay.js} +1 -1
- zenml/zen_server/dashboard/assets/{refresh-CM5T3QeU.js → refresh-BcTM09NW.js} +1 -1
- zenml/zen_server/dashboard/assets/resource-tyes-list-o2LXiMay.js +1 -0
- zenml/zen_server/dashboard/assets/resource-type-tooltip-DwHrJstL.js +1 -0
- zenml/zen_server/dashboard/assets/service-connectors-DSEMwJ5A.js +1 -0
- zenml/zen_server/dashboard/assets/{service-BQ9KIhls.js → service-jxtvgks0.js} +2 -2
- zenml/zen_server/dashboard/assets/sharedSchema-BXzg0EZz.js +1 -0
- zenml/zen_server/dashboard/assets/stack-detail-query-Cm0fsgo-.js +1 -0
- zenml/zen_server/dashboard/assets/{terminal-square-DMtel8mb.js → terminal-XFL_4QN-.js} +1 -1
- zenml/zen_server/dashboard/assets/terminal-square-XFL_4QN-.js +1 -0
- zenml/zen_server/dashboard/assets/transform-CeZdrxDZ.js +1 -0
- zenml/zen_server/dashboard/assets/{trash-BWSZ7NRK.js → trash-DP6Tpp_E.js} +1 -1
- zenml/zen_server/dashboard/assets/type-guards-CNgPYg8l.js +1 -0
- zenml/zen_server/dashboard/assets/update-current-user-mutation-D5MjcQ6F.js +1 -0
- zenml/zen_server/dashboard/assets/update-server-settings-mutation-CmnxdxiK.js +1 -0
- zenml/zen_server/dashboard/assets/{zod-C0xYeTvL.js → zod-XdS2h1ws.js} +1 -1
- zenml/zen_server/dashboard/index.html +7 -7
- zenml/zen_server/rbac/utils.py +2 -2
- zenml/zen_server/routers/auth_endpoints.py +2 -2
- zenml/zen_server/routers/devices_endpoints.py +8 -5
- zenml/zen_server/routers/pipeline_deployments_endpoints.py +1 -1
- zenml/zen_server/routers/pipelines_endpoints.py +1 -1
- zenml/zen_server/routers/run_templates_endpoints.py +3 -3
- zenml/zen_server/routers/runs_endpoints.py +35 -0
- zenml/zen_server/template_execution/utils.py +6 -6
- zenml/zen_stores/dag_generator.py +171 -0
- zenml/zen_stores/migrations/versions/0.83.0_release.py +23 -0
- zenml/zen_stores/rest_zen_store.py +17 -3
- zenml/zen_stores/schemas/action_schemas.py +40 -4
- zenml/zen_stores/schemas/api_key_schemas.py +29 -1
- zenml/zen_stores/schemas/artifact_schemas.py +168 -48
- zenml/zen_stores/schemas/base_schemas.py +26 -1
- zenml/zen_stores/schemas/code_repository_schemas.py +46 -5
- zenml/zen_stores/schemas/component_schemas.py +44 -3
- zenml/zen_stores/schemas/device_schemas.py +43 -2
- zenml/zen_stores/schemas/event_source_schemas.py +41 -5
- zenml/zen_stores/schemas/flavor_schemas.py +42 -2
- zenml/zen_stores/schemas/model_schemas.py +113 -77
- zenml/zen_stores/schemas/pipeline_build_schemas.py +53 -4
- zenml/zen_stores/schemas/pipeline_deployment_schemas.py +53 -4
- zenml/zen_stores/schemas/pipeline_run_schemas.py +111 -47
- zenml/zen_stores/schemas/pipeline_schemas.py +41 -9
- zenml/zen_stores/schemas/run_template_schemas.py +75 -11
- zenml/zen_stores/schemas/schedule_schema.py +50 -5
- zenml/zen_stores/schemas/secret_schemas.py +39 -2
- zenml/zen_stores/schemas/service_connector_schemas.py +39 -2
- zenml/zen_stores/schemas/service_schemas.py +39 -4
- zenml/zen_stores/schemas/stack_schemas.py +47 -2
- zenml/zen_stores/schemas/step_run_schemas.py +89 -26
- zenml/zen_stores/schemas/tag_schemas.py +69 -5
- zenml/zen_stores/schemas/trigger_schemas.py +44 -5
- zenml/zen_stores/schemas/utils.py +25 -4
- zenml/zen_stores/sql_zen_store.py +471 -28
- zenml/zen_stores/zen_store_interface.py +9 -1
- {zenml_nightly-0.82.1.dev20250527.dist-info → zenml_nightly-0.83.0.dev20250529.dist-info}/METADATA +2 -2
- {zenml_nightly-0.82.1.dev20250527.dist-info → zenml_nightly-0.83.0.dev20250529.dist-info}/RECORD +230 -222
- zenml/zen_server/dashboard/assets/AlertDialogDropdownItem-BG7-Ki1L.js +0 -1
- zenml/zen_server/dashboard/assets/CollapsibleCard-D20FtrzC.js +0 -1
- zenml/zen_server/dashboard/assets/Commands-DGbAvMDk.js +0 -1
- zenml/zen_server/dashboard/assets/ComponentIcon-ils7uNAk.js +0 -1
- zenml/zen_server/dashboard/assets/CsvVizualization-DVN541XF.js +0 -15
- zenml/zen_server/dashboard/assets/DialogItem-BHWf3sIB.js +0 -1
- zenml/zen_server/dashboard/assets/ExecutionStatus-XrvT2r65.js +0 -1
- zenml/zen_server/dashboard/assets/Infobox-D9k5TFH4.js +0 -1
- zenml/zen_server/dashboard/assets/InlineAvatar-Cfz4WSLK.js +0 -1
- zenml/zen_server/dashboard/assets/MarkdownVisualization-URCyUPcZ.js +0 -14
- zenml/zen_server/dashboard/assets/NestedCollapsible-Dor-bi98.js +0 -1
- zenml/zen_server/dashboard/assets/NumberBox-D2A7ENHb.js +0 -1
- zenml/zen_server/dashboard/assets/Partials-DQJFw1yW.js +0 -1
- zenml/zen_server/dashboard/assets/ProBadge-Cp4hb1YT.js +0 -1
- zenml/zen_server/dashboard/assets/ProCta-EYoV9CvK.js +0 -1
- zenml/zen_server/dashboard/assets/ProviderRadio-BVDA-fAr.js +0 -1
- zenml/zen_server/dashboard/assets/RunSelector-BLuBYNJt.js +0 -1
- zenml/zen_server/dashboard/assets/RunsBody-W4WHf-sq.js +0 -1
- zenml/zen_server/dashboard/assets/SearchField-D-h6jXyg.js +0 -1
- zenml/zen_server/dashboard/assets/SecretTooltip-CePCL8kd.js +0 -1
- zenml/zen_server/dashboard/assets/StackList-CgmN5H-i.js +0 -1
- zenml/zen_server/dashboard/assets/Tabs-DxQ8PDOD.js +0 -1
- zenml/zen_server/dashboard/assets/Tick-CEsT3HPR.js +0 -1
- zenml/zen_server/dashboard/assets/UsageReason-DjI5qMje.js +0 -1
- zenml/zen_server/dashboard/assets/WizardFooter-CFBHFZas.js +0 -1
- zenml/zen_server/dashboard/assets/cloud-squares-DeRLMopf.svg +0 -43
- zenml/zen_server/dashboard/assets/configuration-form-BtI2Y4eX.js +0 -1
- zenml/zen_server/dashboard/assets/connectors-video-C9qY4syJ.svg +0 -21
- zenml/zen_server/dashboard/assets/constants-DP3ZEnXH.js +0 -1
- zenml/zen_server/dashboard/assets/create-stack-BJ6x5rzj.js +0 -1
- zenml/zen_server/dashboard/assets/dates-3pMLCNrD.js +0 -1
- zenml/zen_server/dashboard/assets/delete-run-DlSLEl5T.js +0 -1
- zenml/zen_server/dashboard/assets/docker-BuDBFEDL.js +0 -1
- zenml/zen_server/dashboard/assets/dots-horizontal-BGRJCPCs.js +0 -1
- zenml/zen_server/dashboard/assets/flavor-select-BnPxvQDN.js +0 -1
- zenml/zen_server/dashboard/assets/form-schemas-CbvoEUHr.js +0 -1
- zenml/zen_server/dashboard/assets/index-CFESYpe4.js +0 -1
- zenml/zen_server/dashboard/assets/index-CmLcvK2z.js +0 -1
- zenml/zen_server/dashboard/assets/index-CzX3ZYlI.css +0 -1
- zenml/zen_server/dashboard/assets/index-D2iSHVZq.js +0 -64
- zenml/zen_server/dashboard/assets/kubernetes-D6OUjwSK.js +0 -1
- zenml/zen_server/dashboard/assets/link-external-DUhCSKNm.js +0 -1
- zenml/zen_server/dashboard/assets/login-command-CkqxPtV3.js +0 -1
- zenml/zen_server/dashboard/assets/login-mutation-CXc-Klim.js +0 -1
- zenml/zen_server/dashboard/assets/not-found-olRU3fnu.js +0 -1
- zenml/zen_server/dashboard/assets/page-7keIM1V3.js +0 -1
- zenml/zen_server/dashboard/assets/page-B31neFwG.js +0 -1
- zenml/zen_server/dashboard/assets/page-B3zo4KYS.js +0 -1
- zenml/zen_server/dashboard/assets/page-BN3MHq1a.js +0 -1
- zenml/zen_server/dashboard/assets/page-BNgVExjN.js +0 -1
- zenml/zen_server/dashboard/assets/page-BPtvu74G.js +0 -1
- zenml/zen_server/dashboard/assets/page-BTIuG0ki.js +0 -2
- zenml/zen_server/dashboard/assets/page-BcQzleH6.js +0 -1
- zenml/zen_server/dashboard/assets/page-C05Jw4M2.js +0 -1
- zenml/zen_server/dashboard/assets/page-C28a7K8h.js +0 -1
- zenml/zen_server/dashboard/assets/page-C9WLk0X-.js +0 -1
- zenml/zen_server/dashboard/assets/page-CINMx64X.js +0 -1
- zenml/zen_server/dashboard/assets/page-CYrJbk7P.js +0 -1
- zenml/zen_server/dashboard/assets/page-Ce0cqLo3.js +0 -1
- zenml/zen_server/dashboard/assets/page-CgNsEkw-.js +0 -1
- zenml/zen_server/dashboard/assets/page-Ct2FUYuR.js +0 -1
- zenml/zen_server/dashboard/assets/page-D8G2B3Bu.js +0 -1
- zenml/zen_server/dashboard/assets/page-DL8a4_lg.js +0 -3
- zenml/zen_server/dashboard/assets/page-DMhYn1cF.js +0 -1
- zenml/zen_server/dashboard/assets/page-Dd_Yq-Uf.js +0 -6
- zenml/zen_server/dashboard/assets/page-DfSvqT8g.js +0 -1
- zenml/zen_server/dashboard/assets/page-Dt6ANUTx.js +0 -1
- zenml/zen_server/dashboard/assets/page-DtvTleaT.js +0 -1
- zenml/zen_server/dashboard/assets/page-DwfGTiVs.js +0 -1
- zenml/zen_server/dashboard/assets/page-JgomSTDc.js +0 -1
- zenml/zen_server/dashboard/assets/page-L84ig6HB.js +0 -1
- zenml/zen_server/dashboard/assets/page-Mabsn4QJ.js +0 -1
- zenml/zen_server/dashboard/assets/page-P04L5cm9.js +0 -1
- zenml/zen_server/dashboard/assets/page-PfhAnvq4.js +0 -1
- zenml/zen_server/dashboard/assets/page-WdRrlNt_.js +0 -1
- zenml/zen_server/dashboard/assets/page-cqJDDDeK.js +0 -1
- zenml/zen_server/dashboard/assets/page-k-Wxh9L_.js +0 -1
- zenml/zen_server/dashboard/assets/page-y-zV4n0c.js +0 -1
- zenml/zen_server/dashboard/assets/rocket-Cf-B-XOR.js +0 -1
- zenml/zen_server/dashboard/assets/settings_preview-0JLrRgHP.webp +0 -0
- zenml/zen_server/dashboard/assets/sharedSchema-Bse2agAf.js +0 -14
- zenml/zen_server/dashboard/assets/stack-detail-query-BAcZJrN3.js +0 -1
- zenml/zen_server/dashboard/assets/tick-circle-m94Aa6Zt.js +0 -1
- zenml/zen_server/dashboard/assets/tour-cover-BYfeen6M.webp +0 -0
- zenml/zen_server/dashboard/assets/type-guards-CaeD8wHO.js +0 -1
- zenml/zen_server/dashboard/assets/update-server-settings-mutation-DwMM1LJz.js +0 -1
- {zenml_nightly-0.82.1.dev20250527.dist-info → zenml_nightly-0.83.0.dev20250529.dist-info}/LICENSE +0 -0
- {zenml_nightly-0.82.1.dev20250527.dist-info → zenml_nightly-0.83.0.dev20250529.dist-info}/WHEEL +0 -0
- {zenml_nightly-0.82.1.dev20250527.dist-info → zenml_nightly-0.83.0.dev20250529.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
|
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
|
-
|
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
|
-
|
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
|
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
|
-
|
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
|
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
|
-
|
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(
|
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()
|