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.
- zenml/VERSION +1 -1
- zenml/artifacts/utils.py +8 -0
- 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/logging/step_logging.py +17 -4
- 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/cloud_utils.py +2 -2
- 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/rbac/zenml_cloud_rbac.py +4 -3
- 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/routers/steps_endpoints.py +3 -0
- zenml/zen_server/template_execution/utils.py +6 -6
- zenml/zen_stores/dag_generator.py +171 -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.dev20250526.dist-info → zenml_nightly-0.82.1.dev20250528.dist-info}/METADATA +1 -1
- {zenml_nightly-0.82.1.dev20250526.dist-info → zenml_nightly-0.82.1.dev20250528.dist-info}/RECORD +225 -219
- 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.dev20250526.dist-info → zenml_nightly-0.82.1.dev20250528.dist-info}/LICENSE +0 -0
- {zenml_nightly-0.82.1.dev20250526.dist-info → zenml_nightly-0.82.1.dev20250528.dist-info}/WHEEL +0 -0
- {zenml_nightly-0.82.1.dev20250526.dist-info → zenml_nightly-0.82.1.dev20250528.dist-info}/entry_points.txt +0 -0
@@ -13,12 +13,13 @@
|
|
13
13
|
# permissions and limitations under the License.
|
14
14
|
"""SQLModel implementation of run template tables."""
|
15
15
|
|
16
|
-
from typing import TYPE_CHECKING, Any, List, Optional
|
16
|
+
from typing import TYPE_CHECKING, Any, List, Optional, Sequence
|
17
17
|
from uuid import UUID
|
18
18
|
|
19
19
|
from sqlalchemy import Column, String, UniqueConstraint
|
20
20
|
from sqlalchemy.dialects.mysql import MEDIUMTEXT
|
21
|
-
from sqlalchemy.orm import object_session
|
21
|
+
from sqlalchemy.orm import joinedload, object_session
|
22
|
+
from sqlalchemy.sql.base import ExecutableOption
|
22
23
|
from sqlmodel import Field, Relationship, col, desc, select
|
23
24
|
|
24
25
|
from zenml.constants import MEDIUMTEXT_MAX_LENGTH
|
@@ -36,6 +37,7 @@ from zenml.zen_stores.schemas.base_schemas import NamedSchema
|
|
36
37
|
from zenml.zen_stores.schemas.project_schemas import ProjectSchema
|
37
38
|
from zenml.zen_stores.schemas.schema_utils import build_foreign_key_field
|
38
39
|
from zenml.zen_stores.schemas.user_schemas import UserSchema
|
40
|
+
from zenml.zen_stores.schemas.utils import jl_arg
|
39
41
|
|
40
42
|
if TYPE_CHECKING:
|
41
43
|
from zenml.zen_stores.schemas.pipeline_deployment_schemas import (
|
@@ -116,6 +118,68 @@ class RunTemplateSchema(NamedSchema, table=True):
|
|
116
118
|
),
|
117
119
|
)
|
118
120
|
|
121
|
+
@classmethod
|
122
|
+
def get_query_options(
|
123
|
+
cls,
|
124
|
+
include_metadata: bool = False,
|
125
|
+
include_resources: bool = False,
|
126
|
+
**kwargs: Any,
|
127
|
+
) -> Sequence[ExecutableOption]:
|
128
|
+
"""Get the query options for the schema.
|
129
|
+
|
130
|
+
Args:
|
131
|
+
include_metadata: Whether metadata will be included when converting
|
132
|
+
the schema to a model.
|
133
|
+
include_resources: Whether resources will be included when
|
134
|
+
converting the schema to a model.
|
135
|
+
**kwargs: Keyword arguments to allow schema specific logic
|
136
|
+
|
137
|
+
Returns:
|
138
|
+
A list of query options.
|
139
|
+
"""
|
140
|
+
from zenml.zen_stores.schemas import PipelineDeploymentSchema
|
141
|
+
|
142
|
+
options = [
|
143
|
+
joinedload(jl_arg(RunTemplateSchema.source_deployment)).joinedload(
|
144
|
+
jl_arg(PipelineDeploymentSchema.build)
|
145
|
+
),
|
146
|
+
]
|
147
|
+
|
148
|
+
if include_metadata or include_resources:
|
149
|
+
options.extend(
|
150
|
+
[
|
151
|
+
joinedload(
|
152
|
+
jl_arg(RunTemplateSchema.source_deployment)
|
153
|
+
).joinedload(jl_arg(PipelineDeploymentSchema.pipeline)),
|
154
|
+
joinedload(
|
155
|
+
jl_arg(RunTemplateSchema.source_deployment)
|
156
|
+
).joinedload(
|
157
|
+
jl_arg(PipelineDeploymentSchema.code_reference)
|
158
|
+
),
|
159
|
+
]
|
160
|
+
)
|
161
|
+
if include_metadata:
|
162
|
+
options.extend(
|
163
|
+
[
|
164
|
+
joinedload(
|
165
|
+
jl_arg(RunTemplateSchema.source_deployment)
|
166
|
+
).joinedload(jl_arg(PipelineDeploymentSchema.stack)),
|
167
|
+
joinedload(
|
168
|
+
jl_arg(RunTemplateSchema.source_deployment)
|
169
|
+
).joinedload(jl_arg(PipelineDeploymentSchema.schedule)),
|
170
|
+
]
|
171
|
+
)
|
172
|
+
|
173
|
+
if include_resources:
|
174
|
+
options.extend(
|
175
|
+
[
|
176
|
+
joinedload(jl_arg(RunTemplateSchema.user)),
|
177
|
+
# joinedload(jl_arg(RunTemplateSchema.tags)),
|
178
|
+
]
|
179
|
+
)
|
180
|
+
|
181
|
+
return options
|
182
|
+
|
119
183
|
@property
|
120
184
|
def latest_run(self) -> Optional["PipelineRunSchema"]:
|
121
185
|
"""Fetch the latest run for this template.
|
@@ -216,20 +280,17 @@ class RunTemplateSchema(NamedSchema, table=True):
|
|
216
280
|
self.source_deployment
|
217
281
|
and self.source_deployment.build
|
218
282
|
and not self.source_deployment.build.is_local
|
219
|
-
and self.source_deployment.build.
|
283
|
+
and self.source_deployment.build.stack_id
|
220
284
|
):
|
221
285
|
runnable = True
|
222
286
|
|
223
|
-
latest_run = self.latest_run
|
224
|
-
|
225
287
|
body = RunTemplateResponseBody(
|
226
|
-
|
288
|
+
user_id=self.user_id,
|
289
|
+
project_id=self.project_id,
|
227
290
|
created=self.created,
|
228
291
|
updated=self.updated,
|
229
292
|
runnable=runnable,
|
230
293
|
hidden=self.hidden,
|
231
|
-
latest_run_id=latest_run.id if latest_run else None,
|
232
|
-
latest_run_status=latest_run.status if latest_run else None,
|
233
294
|
)
|
234
295
|
|
235
296
|
metadata = None
|
@@ -247,7 +308,7 @@ class RunTemplateSchema(NamedSchema, table=True):
|
|
247
308
|
|
248
309
|
if (
|
249
310
|
self.source_deployment.build
|
250
|
-
and self.source_deployment.build.
|
311
|
+
and self.source_deployment.build.stack_id
|
251
312
|
):
|
252
313
|
config_template = template_utils.generate_config_template(
|
253
314
|
deployment=self.source_deployment
|
@@ -257,7 +318,6 @@ class RunTemplateSchema(NamedSchema, table=True):
|
|
257
318
|
)
|
258
319
|
|
259
320
|
metadata = RunTemplateResponseMetadata(
|
260
|
-
project=self.project.to_model(),
|
261
321
|
description=self.description,
|
262
322
|
pipeline_spec=pipeline_spec,
|
263
323
|
config_template=config_template,
|
@@ -287,7 +347,10 @@ class RunTemplateSchema(NamedSchema, table=True):
|
|
287
347
|
build = None
|
288
348
|
code_reference = None
|
289
349
|
|
350
|
+
latest_run = self.latest_run
|
351
|
+
|
290
352
|
resources = RunTemplateResponseResources(
|
353
|
+
user=self.user.to_model() if self.user else None,
|
291
354
|
source_deployment=self.source_deployment.to_model()
|
292
355
|
if self.source_deployment
|
293
356
|
else None,
|
@@ -295,11 +358,12 @@ class RunTemplateSchema(NamedSchema, table=True):
|
|
295
358
|
build=build,
|
296
359
|
code_reference=code_reference,
|
297
360
|
tags=[tag.to_model() for tag in self.tags],
|
361
|
+
latest_run_id=latest_run.id if latest_run else None,
|
362
|
+
latest_run_status=latest_run.status if latest_run else None,
|
298
363
|
)
|
299
364
|
|
300
365
|
return RunTemplateResponse(
|
301
366
|
id=self.id,
|
302
|
-
project_id=self.project_id,
|
303
367
|
name=self.name,
|
304
368
|
body=body,
|
305
369
|
metadata=metadata,
|
@@ -14,10 +14,12 @@
|
|
14
14
|
"""SQL Model Implementations for Pipeline Schedules."""
|
15
15
|
|
16
16
|
from datetime import datetime, timedelta
|
17
|
-
from typing import TYPE_CHECKING, Any, List, Optional
|
17
|
+
from typing import TYPE_CHECKING, Any, List, Optional, Sequence
|
18
18
|
from uuid import UUID
|
19
19
|
|
20
20
|
from sqlalchemy import UniqueConstraint
|
21
|
+
from sqlalchemy.orm import joinedload
|
22
|
+
from sqlalchemy.sql.base import ExecutableOption
|
21
23
|
from sqlmodel import Field, Relationship
|
22
24
|
|
23
25
|
from zenml.enums import MetadataResourceTypes
|
@@ -26,6 +28,7 @@ from zenml.models import (
|
|
26
28
|
ScheduleResponse,
|
27
29
|
ScheduleResponseBody,
|
28
30
|
ScheduleResponseMetadata,
|
31
|
+
ScheduleResponseResources,
|
29
32
|
ScheduleUpdate,
|
30
33
|
)
|
31
34
|
from zenml.utils.time_utils import utc_now
|
@@ -35,7 +38,10 @@ from zenml.zen_stores.schemas.pipeline_schemas import PipelineSchema
|
|
35
38
|
from zenml.zen_stores.schemas.project_schemas import ProjectSchema
|
36
39
|
from zenml.zen_stores.schemas.schema_utils import build_foreign_key_field
|
37
40
|
from zenml.zen_stores.schemas.user_schemas import UserSchema
|
38
|
-
from zenml.zen_stores.schemas.utils import
|
41
|
+
from zenml.zen_stores.schemas.utils import (
|
42
|
+
RunMetadataInterface,
|
43
|
+
jl_arg,
|
44
|
+
)
|
39
45
|
|
40
46
|
if TYPE_CHECKING:
|
41
47
|
from zenml.zen_stores.schemas.pipeline_deployment_schemas import (
|
@@ -120,6 +126,39 @@ class ScheduleSchema(NamedSchema, RunMetadataInterface, table=True):
|
|
120
126
|
catchup: bool
|
121
127
|
run_once_start_time: Optional[datetime] = Field(nullable=True)
|
122
128
|
|
129
|
+
@classmethod
|
130
|
+
def get_query_options(
|
131
|
+
cls,
|
132
|
+
include_metadata: bool = False,
|
133
|
+
include_resources: bool = False,
|
134
|
+
**kwargs: Any,
|
135
|
+
) -> Sequence[ExecutableOption]:
|
136
|
+
"""Get the query options for the schema.
|
137
|
+
|
138
|
+
Args:
|
139
|
+
include_metadata: Whether metadata will be included when converting
|
140
|
+
the schema to a model.
|
141
|
+
include_resources: Whether resources will be included when
|
142
|
+
converting the schema to a model.
|
143
|
+
**kwargs: Keyword arguments to allow schema specific logic
|
144
|
+
|
145
|
+
Returns:
|
146
|
+
A list of query options.
|
147
|
+
"""
|
148
|
+
options = []
|
149
|
+
|
150
|
+
# if include_metadata:
|
151
|
+
# options.extend(
|
152
|
+
# [
|
153
|
+
# joinedload(jl_arg(ScheduleSchema.run_metadata)),
|
154
|
+
# ]
|
155
|
+
# )
|
156
|
+
|
157
|
+
if include_resources:
|
158
|
+
options.extend([joinedload(jl_arg(ScheduleSchema.user))])
|
159
|
+
|
160
|
+
return options
|
161
|
+
|
123
162
|
@classmethod
|
124
163
|
def from_request(
|
125
164
|
cls, schedule_request: ScheduleRequest
|
@@ -189,7 +228,8 @@ class ScheduleSchema(NamedSchema, RunMetadataInterface, table=True):
|
|
189
228
|
interval_second = None
|
190
229
|
|
191
230
|
body = ScheduleResponseBody(
|
192
|
-
|
231
|
+
user_id=self.user_id,
|
232
|
+
project_id=self.project_id,
|
193
233
|
active=self.active,
|
194
234
|
cron_expression=self.cron_expression,
|
195
235
|
start_time=self.start_time,
|
@@ -203,16 +243,21 @@ class ScheduleSchema(NamedSchema, RunMetadataInterface, table=True):
|
|
203
243
|
metadata = None
|
204
244
|
if include_metadata:
|
205
245
|
metadata = ScheduleResponseMetadata(
|
206
|
-
project=self.project.to_model(),
|
207
246
|
pipeline_id=self.pipeline_id,
|
208
247
|
orchestrator_id=self.orchestrator_id,
|
209
248
|
run_metadata=self.fetch_metadata(),
|
210
249
|
)
|
211
250
|
|
251
|
+
resources = None
|
252
|
+
if include_resources:
|
253
|
+
resources = ScheduleResponseResources(
|
254
|
+
user=self.user.to_model() if self.user else None,
|
255
|
+
)
|
256
|
+
|
212
257
|
return ScheduleResponse(
|
213
258
|
id=self.id,
|
214
|
-
project_id=self.project_id,
|
215
259
|
name=self.name,
|
216
260
|
body=body,
|
217
261
|
metadata=metadata,
|
262
|
+
resources=resources,
|
218
263
|
)
|
@@ -15,10 +15,12 @@
|
|
15
15
|
|
16
16
|
import base64
|
17
17
|
import json
|
18
|
-
from typing import Any, Dict, Optional, cast
|
18
|
+
from typing import Any, Dict, 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 sqlalchemy_utils.types.encrypted.encrypted_type import (
|
23
25
|
AesGcmEngine,
|
24
26
|
InvalidCiphertextError,
|
@@ -31,12 +33,14 @@ from zenml.models import (
|
|
31
33
|
SecretResponse,
|
32
34
|
SecretResponseBody,
|
33
35
|
SecretResponseMetadata,
|
36
|
+
SecretResponseResources,
|
34
37
|
SecretUpdate,
|
35
38
|
)
|
36
39
|
from zenml.utils.time_utils import utc_now
|
37
40
|
from zenml.zen_stores.schemas.base_schemas import NamedSchema
|
38
41
|
from zenml.zen_stores.schemas.schema_utils import build_foreign_key_field
|
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 SecretDecodeError(Exception):
|
@@ -75,6 +79,32 @@ class SecretSchema(NamedSchema, table=True):
|
|
75
79
|
)
|
76
80
|
user: "UserSchema" = Relationship(back_populates="secrets")
|
77
81
|
|
82
|
+
@classmethod
|
83
|
+
def get_query_options(
|
84
|
+
cls,
|
85
|
+
include_metadata: bool = False,
|
86
|
+
include_resources: bool = False,
|
87
|
+
**kwargs: Any,
|
88
|
+
) -> Sequence[ExecutableOption]:
|
89
|
+
"""Get the query options for the schema.
|
90
|
+
|
91
|
+
Args:
|
92
|
+
include_metadata: Whether metadata will be included when converting
|
93
|
+
the schema to a model.
|
94
|
+
include_resources: Whether resources will be included when
|
95
|
+
converting the schema to a model.
|
96
|
+
**kwargs: Keyword arguments to allow schema specific logic
|
97
|
+
|
98
|
+
Returns:
|
99
|
+
A list of query options.
|
100
|
+
"""
|
101
|
+
options = []
|
102
|
+
|
103
|
+
if include_resources:
|
104
|
+
options.extend([joinedload(jl_arg(SecretSchema.user))])
|
105
|
+
|
106
|
+
return options
|
107
|
+
|
78
108
|
@classmethod
|
79
109
|
def _dump_secret_values(
|
80
110
|
cls, values: Dict[str, str], encryption_engine: Optional[AesGcmEngine]
|
@@ -225,11 +255,17 @@ class SecretSchema(NamedSchema, table=True):
|
|
225
255
|
if include_metadata:
|
226
256
|
metadata = SecretResponseMetadata()
|
227
257
|
|
258
|
+
resources = None
|
259
|
+
if include_resources:
|
260
|
+
resources = SecretResponseResources(
|
261
|
+
user=self.user.to_model() if self.user else None,
|
262
|
+
)
|
263
|
+
|
228
264
|
# Don't load the secret values implicitly in the secret. The
|
229
265
|
# SQL secret store will call `get_secret_values` to load the
|
230
266
|
# values separately if SQL is used as the secrets store.
|
231
267
|
body = SecretResponseBody(
|
232
|
-
|
268
|
+
user_id=self.user_id,
|
233
269
|
created=self.created,
|
234
270
|
updated=self.updated,
|
235
271
|
private=self.private,
|
@@ -239,6 +275,7 @@ class SecretSchema(NamedSchema, table=True):
|
|
239
275
|
name=self.name,
|
240
276
|
body=body,
|
241
277
|
metadata=metadata,
|
278
|
+
resources=resources,
|
242
279
|
)
|
243
280
|
|
244
281
|
def get_secret_values(
|
@@ -16,10 +16,12 @@
|
|
16
16
|
import base64
|
17
17
|
import json
|
18
18
|
from datetime import datetime
|
19
|
-
from typing import TYPE_CHECKING, Any, Dict, List, Optional, cast
|
19
|
+
from typing import TYPE_CHECKING, Any, Dict, List, Optional, Sequence, cast
|
20
20
|
from uuid import UUID
|
21
21
|
|
22
22
|
from sqlalchemy import TEXT, Column, UniqueConstraint
|
23
|
+
from sqlalchemy.orm import joinedload
|
24
|
+
from sqlalchemy.sql.base import ExecutableOption
|
23
25
|
from sqlmodel import Field, Relationship
|
24
26
|
|
25
27
|
from zenml.models import (
|
@@ -27,12 +29,14 @@ from zenml.models import (
|
|
27
29
|
ServiceConnectorResponse,
|
28
30
|
ServiceConnectorResponseBody,
|
29
31
|
ServiceConnectorResponseMetadata,
|
32
|
+
ServiceConnectorResponseResources,
|
30
33
|
ServiceConnectorUpdate,
|
31
34
|
)
|
32
35
|
from zenml.utils.time_utils import utc_now
|
33
36
|
from zenml.zen_stores.schemas.base_schemas import NamedSchema
|
34
37
|
from zenml.zen_stores.schemas.schema_utils import build_foreign_key_field
|
35
38
|
from zenml.zen_stores.schemas.user_schemas import UserSchema
|
39
|
+
from zenml.zen_stores.schemas.utils import jl_arg
|
36
40
|
|
37
41
|
if TYPE_CHECKING:
|
38
42
|
from zenml.zen_stores.schemas.component_schemas import StackComponentSchema
|
@@ -77,6 +81,32 @@ class ServiceConnectorSchema(NamedSchema, table=True):
|
|
77
81
|
back_populates="connector",
|
78
82
|
)
|
79
83
|
|
84
|
+
@classmethod
|
85
|
+
def get_query_options(
|
86
|
+
cls,
|
87
|
+
include_metadata: bool = False,
|
88
|
+
include_resources: bool = False,
|
89
|
+
**kwargs: Any,
|
90
|
+
) -> Sequence[ExecutableOption]:
|
91
|
+
"""Get the query options for the schema.
|
92
|
+
|
93
|
+
Args:
|
94
|
+
include_metadata: Whether metadata will be included when converting
|
95
|
+
the schema to a model.
|
96
|
+
include_resources: Whether resources will be included when
|
97
|
+
converting the schema to a model.
|
98
|
+
**kwargs: Keyword arguments to allow schema specific logic
|
99
|
+
|
100
|
+
Returns:
|
101
|
+
A list of query options.
|
102
|
+
"""
|
103
|
+
options = []
|
104
|
+
|
105
|
+
if include_resources:
|
106
|
+
options.extend([joinedload(jl_arg(ServiceConnectorSchema.user))])
|
107
|
+
|
108
|
+
return options
|
109
|
+
|
80
110
|
@property
|
81
111
|
def resource_types_list(self) -> List[str]:
|
82
112
|
"""Returns the resource types as a list.
|
@@ -241,7 +271,7 @@ class ServiceConnectorSchema(NamedSchema, table=True):
|
|
241
271
|
A `ServiceConnectorModel`
|
242
272
|
"""
|
243
273
|
body = ServiceConnectorResponseBody(
|
244
|
-
|
274
|
+
user_id=self.user_id,
|
245
275
|
created=self.created,
|
246
276
|
updated=self.updated,
|
247
277
|
description=self.description,
|
@@ -265,9 +295,16 @@ class ServiceConnectorSchema(NamedSchema, table=True):
|
|
265
295
|
expiration_seconds=self.expiration_seconds,
|
266
296
|
labels=self.labels_dict,
|
267
297
|
)
|
298
|
+
resources = None
|
299
|
+
if include_resources:
|
300
|
+
resources = ServiceConnectorResponseResources(
|
301
|
+
user=self.user.to_model() if self.user else None,
|
302
|
+
)
|
303
|
+
|
268
304
|
return ServiceConnectorResponse(
|
269
305
|
id=self.id,
|
270
306
|
name=self.name,
|
271
307
|
body=body,
|
272
308
|
metadata=metadata,
|
309
|
+
resources=resources,
|
273
310
|
)
|
@@ -15,11 +15,13 @@
|
|
15
15
|
|
16
16
|
import base64
|
17
17
|
import json
|
18
|
-
from typing import Any, Optional
|
18
|
+
from typing import Any, Optional, Sequence
|
19
19
|
from uuid import UUID
|
20
20
|
|
21
21
|
from pydantic import ConfigDict
|
22
22
|
from sqlalchemy import TEXT, Column
|
23
|
+
from sqlalchemy.orm import joinedload
|
24
|
+
from sqlalchemy.sql.base import ExecutableOption
|
23
25
|
from sqlmodel import Field, Relationship
|
24
26
|
|
25
27
|
from zenml.models.v2.core.service import (
|
@@ -38,6 +40,7 @@ from zenml.zen_stores.schemas.pipeline_run_schemas import PipelineRunSchema
|
|
38
40
|
from zenml.zen_stores.schemas.project_schemas import ProjectSchema
|
39
41
|
from zenml.zen_stores.schemas.schema_utils import build_foreign_key_field
|
40
42
|
from zenml.zen_stores.schemas.user_schemas import UserSchema
|
43
|
+
from zenml.zen_stores.schemas.utils import jl_arg
|
41
44
|
|
42
45
|
|
43
46
|
class ServiceSchema(NamedSchema, table=True):
|
@@ -117,6 +120,38 @@ class ServiceSchema(NamedSchema, table=True):
|
|
117
120
|
# careful we might overwrite some fields protected by pydantic.
|
118
121
|
model_config = ConfigDict(protected_namespaces=()) # type: ignore[assignment]
|
119
122
|
|
123
|
+
@classmethod
|
124
|
+
def get_query_options(
|
125
|
+
cls,
|
126
|
+
include_metadata: bool = False,
|
127
|
+
include_resources: bool = False,
|
128
|
+
**kwargs: Any,
|
129
|
+
) -> Sequence[ExecutableOption]:
|
130
|
+
"""Get the query options for the schema.
|
131
|
+
|
132
|
+
Args:
|
133
|
+
include_metadata: Whether metadata will be included when converting
|
134
|
+
the schema to a model.
|
135
|
+
include_resources: Whether resources will be included when
|
136
|
+
converting the schema to a model.
|
137
|
+
**kwargs: Keyword arguments to allow schema specific logic
|
138
|
+
|
139
|
+
Returns:
|
140
|
+
A list of query options.
|
141
|
+
"""
|
142
|
+
options = []
|
143
|
+
|
144
|
+
if include_resources:
|
145
|
+
options.extend(
|
146
|
+
[
|
147
|
+
joinedload(jl_arg(ServiceSchema.user)),
|
148
|
+
joinedload(jl_arg(ServiceSchema.model_version)),
|
149
|
+
joinedload(jl_arg(ServiceSchema.pipeline_run)),
|
150
|
+
]
|
151
|
+
)
|
152
|
+
|
153
|
+
return options
|
154
|
+
|
120
155
|
def to_model(
|
121
156
|
self,
|
122
157
|
include_metadata: bool = False,
|
@@ -134,7 +169,8 @@ class ServiceSchema(NamedSchema, table=True):
|
|
134
169
|
The created `ServiceResponse`.
|
135
170
|
"""
|
136
171
|
body = ServiceResponseBody(
|
137
|
-
|
172
|
+
user_id=self.user_id,
|
173
|
+
project_id=self.project_id,
|
138
174
|
created=self.created,
|
139
175
|
updated=self.updated,
|
140
176
|
service_type=json.loads(self.service_type),
|
@@ -146,7 +182,6 @@ class ServiceSchema(NamedSchema, table=True):
|
|
146
182
|
metadata = None
|
147
183
|
if include_metadata:
|
148
184
|
metadata = ServiceResponseMetadata(
|
149
|
-
project=self.project.to_model(),
|
150
185
|
service_source=self.service_source,
|
151
186
|
config=json.loads(base64.b64decode(self.config).decode()),
|
152
187
|
status=json.loads(base64.b64decode(self.status).decode())
|
@@ -162,6 +197,7 @@ class ServiceSchema(NamedSchema, table=True):
|
|
162
197
|
resources = None
|
163
198
|
if include_resources:
|
164
199
|
resources = ServiceResponseResources(
|
200
|
+
user=self.user.to_model() if self.user else None,
|
165
201
|
model_version=self.model_version.to_model()
|
166
202
|
if self.model_version
|
167
203
|
else None,
|
@@ -171,7 +207,6 @@ class ServiceSchema(NamedSchema, table=True):
|
|
171
207
|
)
|
172
208
|
return ServiceResponse(
|
173
209
|
id=self.id,
|
174
|
-
project_id=self.project_id,
|
175
210
|
name=self.name,
|
176
211
|
body=body,
|
177
212
|
metadata=metadata,
|
@@ -15,22 +15,26 @@
|
|
15
15
|
|
16
16
|
import base64
|
17
17
|
import json
|
18
|
-
from typing import TYPE_CHECKING, Any, List, Optional
|
18
|
+
from typing import TYPE_CHECKING, Any, List, Optional, Sequence
|
19
19
|
from uuid import UUID
|
20
20
|
|
21
21
|
from sqlalchemy import UniqueConstraint
|
22
|
+
from sqlalchemy.orm import joinedload
|
23
|
+
from sqlalchemy.sql.base import ExecutableOption
|
22
24
|
from sqlmodel import Field, Relationship, SQLModel
|
23
25
|
|
24
26
|
from zenml.models import (
|
25
27
|
StackResponse,
|
26
28
|
StackResponseBody,
|
27
29
|
StackResponseMetadata,
|
30
|
+
StackResponseResources,
|
28
31
|
StackUpdate,
|
29
32
|
)
|
30
33
|
from zenml.utils.time_utils import utc_now
|
31
34
|
from zenml.zen_stores.schemas.base_schemas import NamedSchema
|
32
35
|
from zenml.zen_stores.schemas.schema_utils import build_foreign_key_field
|
33
36
|
from zenml.zen_stores.schemas.user_schemas import UserSchema
|
37
|
+
from zenml.zen_stores.schemas.utils import jl_arg
|
34
38
|
|
35
39
|
if TYPE_CHECKING:
|
36
40
|
from zenml.zen_stores.schemas.component_schemas import (
|
@@ -106,6 +110,41 @@ class StackSchema(NamedSchema, table=True):
|
|
106
110
|
back_populates="stack",
|
107
111
|
)
|
108
112
|
|
113
|
+
@classmethod
|
114
|
+
def get_query_options(
|
115
|
+
cls,
|
116
|
+
include_metadata: bool = False,
|
117
|
+
include_resources: bool = False,
|
118
|
+
**kwargs: Any,
|
119
|
+
) -> Sequence[ExecutableOption]:
|
120
|
+
"""Get the query options for the schema.
|
121
|
+
|
122
|
+
Args:
|
123
|
+
include_metadata: Whether metadata will be included when converting
|
124
|
+
the schema to a model.
|
125
|
+
include_resources: Whether resources will be included when
|
126
|
+
converting the schema to a model.
|
127
|
+
**kwargs: Keyword arguments to allow schema specific logic
|
128
|
+
|
129
|
+
Returns:
|
130
|
+
A list of query options.
|
131
|
+
"""
|
132
|
+
options = []
|
133
|
+
|
134
|
+
# if include_metadata:
|
135
|
+
# options.extend(
|
136
|
+
# [
|
137
|
+
# joinedload(jl_arg(StackSchema.components)).joinedload(
|
138
|
+
# jl_arg(StackComponentSchema.flavor_schema)
|
139
|
+
# ),
|
140
|
+
# ]
|
141
|
+
# )
|
142
|
+
|
143
|
+
if include_resources:
|
144
|
+
options.extend([joinedload(jl_arg(StackSchema.user))])
|
145
|
+
|
146
|
+
return options
|
147
|
+
|
109
148
|
def update(
|
110
149
|
self,
|
111
150
|
stack_update: "StackUpdate",
|
@@ -152,7 +191,7 @@ class StackSchema(NamedSchema, table=True):
|
|
152
191
|
The converted model.
|
153
192
|
"""
|
154
193
|
body = StackResponseBody(
|
155
|
-
|
194
|
+
user_id=self.user_id,
|
156
195
|
created=self.created,
|
157
196
|
updated=self.updated,
|
158
197
|
)
|
@@ -166,10 +205,16 @@ class StackSchema(NamedSchema, table=True):
|
|
166
205
|
else None,
|
167
206
|
description=self.description,
|
168
207
|
)
|
208
|
+
resources = None
|
209
|
+
if include_resources:
|
210
|
+
resources = StackResponseResources(
|
211
|
+
user=self.user.to_model() if self.user else None,
|
212
|
+
)
|
169
213
|
|
170
214
|
return StackResponse(
|
171
215
|
id=self.id,
|
172
216
|
name=self.name,
|
173
217
|
body=body,
|
174
218
|
metadata=metadata,
|
219
|
+
resources=resources,
|
175
220
|
)
|