zenml-nightly 0.66.0.dev20240928__py3-none-any.whl → 0.68.1.dev20241102__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.
- README.md +18 -12
- RELEASE_NOTES.md +236 -0
- zenml/VERSION +1 -1
- zenml/__init__.py +5 -10
- zenml/analytics/context.py +16 -1
- zenml/analytics/enums.py +0 -13
- zenml/analytics/utils.py +18 -7
- zenml/artifact_stores/base_artifact_store.py +11 -0
- zenml/artifacts/artifact_config.py +19 -65
- zenml/artifacts/external_artifact.py +7 -53
- zenml/artifacts/external_artifact_config.py +21 -40
- zenml/artifacts/load_directory_materializer.py +91 -0
- zenml/artifacts/utils.py +204 -145
- zenml/cli/__init__.py +62 -127
- zenml/cli/base.py +8 -8
- zenml/cli/integration.py +0 -9
- zenml/cli/login.py +951 -0
- zenml/cli/pipeline.py +1 -1
- zenml/cli/served_model.py +8 -1
- zenml/cli/server.py +462 -577
- zenml/cli/service_accounts.py +4 -4
- zenml/cli/stack.py +78 -569
- zenml/cli/stack_components.py +5 -594
- zenml/cli/user_management.py +0 -12
- zenml/cli/utils.py +24 -142
- zenml/client.py +57 -40
- zenml/client_lazy_loader.py +29 -12
- zenml/config/compiler.py +7 -11
- zenml/config/global_config.py +9 -0
- zenml/config/pipeline_configurations.py +2 -1
- zenml/config/pipeline_run_configuration.py +2 -1
- zenml/config/server_config.py +7 -5
- zenml/config/step_configurations.py +2 -0
- zenml/constants.py +6 -42
- zenml/enums.py +1 -4
- zenml/environment.py +1 -315
- zenml/exceptions.py +12 -41
- zenml/hooks/hook_validators.py +1 -8
- zenml/integrations/airflow/orchestrators/airflow_orchestrator.py +2 -3
- zenml/integrations/argilla/__init__.py +1 -1
- zenml/integrations/argilla/annotators/argilla_annotator.py +234 -89
- zenml/integrations/argilla/flavors/argilla_annotator_flavor.py +10 -5
- zenml/integrations/aws/flavors/sagemaker_orchestrator_flavor.py +9 -5
- zenml/integrations/aws/orchestrators/sagemaker_orchestrator.py +15 -2
- zenml/integrations/aws/service_connectors/aws_service_connector.py +6 -0
- zenml/integrations/azure/flavors/azureml_orchestrator_flavor.py +5 -4
- zenml/integrations/azure/orchestrators/azureml_orchestrator.py +1 -1
- zenml/integrations/bentoml/model_deployers/bentoml_model_deployer.py +85 -19
- zenml/integrations/bentoml/services/__init__.py +15 -4
- zenml/integrations/bentoml/services/bentoml_container_deployment.py +399 -0
- zenml/integrations/bentoml/services/{bentoml_deployment.py → bentoml_local_deployment.py} +81 -40
- zenml/{steps/base_parameters.py → integrations/bentoml/services/deployment_type.py} +8 -5
- zenml/integrations/bentoml/steps/bento_builder.py +1 -0
- zenml/integrations/bentoml/steps/bentoml_deployer.py +93 -41
- zenml/integrations/github/code_repositories/github_code_repository.py +1 -1
- zenml/integrations/gitlab/code_repositories/gitlab_code_repository.py +6 -1
- zenml/integrations/huggingface/__init__.py +1 -6
- zenml/integrations/kaniko/image_builders/kaniko_image_builder.py +3 -3
- zenml/integrations/lightning/orchestrators/lightning_orchestrator.py +3 -3
- zenml/integrations/lightning/orchestrators/lightning_orchestrator_entrypoint.py +2 -2
- zenml/integrations/mlflow/experiment_trackers/mlflow_experiment_tracker.py +6 -3
- zenml/integrations/mlflow/model_registries/mlflow_model_registry.py +6 -0
- zenml/integrations/mlflow/services/mlflow_deployment.py +2 -2
- zenml/integrations/mlflow/steps/mlflow_deployer.py +1 -1
- zenml/integrations/mlflow/steps/mlflow_registry.py +1 -1
- zenml/integrations/neptune/experiment_trackers/run_state.py +2 -2
- zenml/integrations/pytorch/materializers/base_pytorch_materializer.py +8 -2
- zenml/integrations/pytorch/materializers/pytorch_module_materializer.py +4 -1
- zenml/integrations/s3/artifact_stores/s3_artifact_store.py +98 -0
- zenml/integrations/s3/flavors/s3_artifact_store_flavor.py +14 -0
- zenml/integrations/s3/utils.py +40 -0
- zenml/integrations/tensorflow/__init__.py +0 -9
- zenml/logging/step_logging.py +13 -15
- zenml/{new/pipelines → login}/__init__.py +4 -1
- zenml/login/credentials.py +346 -0
- zenml/login/credentials_store.py +603 -0
- zenml/{new → login/pro}/__init__.py +4 -1
- zenml/login/pro/client.py +496 -0
- zenml/login/pro/constants.py +34 -0
- zenml/{lineage_graph/edge.py → login/pro/models.py} +9 -8
- zenml/{zen_server/deploy/terraform/providers → login/pro/organization}/__init__.py +2 -2
- zenml/login/pro/organization/client.py +79 -0
- zenml/{lineage_graph/node/base_node.py → login/pro/organization/models.py} +13 -12
- zenml/{new/steps → login/pro/tenant}/__init__.py +2 -1
- zenml/login/pro/tenant/client.py +92 -0
- zenml/login/pro/tenant/models.py +174 -0
- zenml/login/pro/utils.py +121 -0
- zenml/{cli → login}/web_login.py +64 -28
- zenml/materializers/__init__.py +2 -0
- zenml/materializers/base_materializer.py +43 -9
- zenml/materializers/built_in_materializer.py +1 -1
- zenml/materializers/uuid_materializer.py +79 -0
- zenml/metadata/lazy_load.py +10 -7
- zenml/metadata/metadata_types.py +49 -0
- zenml/model/lazy_load.py +85 -4
- zenml/model/model.py +61 -83
- zenml/model/utils.py +47 -118
- zenml/models/__init__.py +6 -0
- zenml/models/v2/base/base.py +12 -8
- zenml/models/v2/base/filter.py +9 -0
- zenml/models/v2/core/artifact_version.py +53 -25
- zenml/models/v2/core/component.py +54 -19
- zenml/models/v2/core/flavor.py +13 -13
- zenml/models/v2/core/model.py +4 -1
- zenml/models/v2/core/model_version.py +4 -6
- zenml/models/v2/core/model_version_artifact.py +3 -1
- zenml/models/v2/core/model_version_pipeline_run.py +3 -1
- zenml/models/v2/core/pipeline.py +3 -1
- zenml/models/v2/core/pipeline_run.py +24 -3
- zenml/models/v2/core/run_metadata.py +2 -2
- zenml/models/v2/core/run_template.py +3 -1
- zenml/models/v2/core/stack.py +7 -3
- zenml/models/v2/core/step_run.py +58 -14
- zenml/models/v2/misc/auth_models.py +11 -2
- zenml/models/v2/misc/server_models.py +2 -4
- zenml/orchestrators/base_orchestrator.py +41 -4
- zenml/orchestrators/input_utils.py +52 -36
- zenml/orchestrators/step_launcher.py +50 -171
- zenml/orchestrators/step_run_utils.py +574 -0
- zenml/orchestrators/step_runner.py +83 -120
- zenml/orchestrators/utils.py +46 -180
- zenml/pipelines/__init__.py +3 -16
- zenml/{new/pipelines → pipelines}/pipeline_context.py +3 -18
- zenml/pipelines/pipeline_decorator.py +34 -60
- zenml/{new/pipelines/pipeline.py → pipelines/pipeline_definition.py} +210 -207
- zenml/{new/pipelines → pipelines}/run_utils.py +11 -10
- zenml/services/local/local_daemon_entrypoint.py +4 -4
- zenml/services/service.py +2 -2
- zenml/stack/stack.py +3 -108
- zenml/stack/stack_component.py +2 -78
- zenml/stack/utils.py +26 -14
- zenml/stack_deployments/aws_stack_deployment.py +3 -0
- zenml/step_operators/step_operator_entrypoint_configuration.py +1 -1
- zenml/steps/__init__.py +3 -9
- zenml/steps/base_step.py +25 -267
- zenml/steps/entrypoint_function_utils.py +2 -80
- zenml/{new/steps → steps}/step_context.py +12 -66
- zenml/steps/step_decorator.py +42 -89
- zenml/steps/step_invocation.py +16 -60
- zenml/steps/utils.py +4 -23
- zenml/utils/dashboard_utils.py +16 -51
- zenml/utils/materializer_utils.py +1 -1
- zenml/utils/requirements_utils.py +71 -0
- zenml/utils/singleton.py +15 -3
- zenml/utils/source_utils.py +39 -2
- zenml/utils/typing_utils.py +8 -28
- zenml/utils/visualization_utils.py +1 -1
- zenml/zen_server/auth.py +44 -39
- zenml/zen_server/dashboard/assets/{404-Y50hSt65.js → 404-DT4QRUqN.js} +1 -1
- zenml/zen_server/dashboard/assets/@radix-DP6vWzyx.js +85 -0
- zenml/zen_server/dashboard/assets/@react-router-BMhZulnd.js +29 -0
- zenml/zen_server/dashboard/assets/@reactflow-8U9qNlMR.js +17 -0
- zenml/zen_server/dashboard/assets/@tanstack-BUCbhJyH.js +22 -0
- zenml/zen_server/dashboard/assets/{AlertDialogDropdownItem-xLR9a1iw.js → AlertDialogDropdownItem-C6N2rGrB.js} +1 -1
- zenml/zen_server/dashboard/assets/{CodeSnippet-IxXNxUDa.js → CodeSnippet-CqybNv0k.js} +1 -1
- zenml/zen_server/dashboard/assets/{CollapsibleCard-BhutZbBL.js → CollapsibleCard-0r_8G2Lj.js} +1 -1
- zenml/zen_server/dashboard/assets/{Commands-Bf-rd1z8.js → Commands-BDjgBQKi.js} +1 -1
- zenml/zen_server/dashboard/assets/ComponentBadge-DUiEYJHu.js +1 -0
- zenml/zen_server/dashboard/assets/ComponentFallbackDialog-BFoH5K4V.js +1 -0
- zenml/zen_server/dashboard/assets/ComponentIcon-CAIoUis2.js +1 -0
- zenml/zen_server/dashboard/assets/{CopyButton-DcFHidFJ.js → CopyButton-C745BrKi.js} +1 -1
- zenml/zen_server/dashboard/assets/{CsvVizualization-QSbjrfxw.js → CsvVizualization-PpAq0CeZ.js} +5 -5
- zenml/zen_server/dashboard/assets/{DialogItem-Cd3HqST4.js → DialogItem-DcVCZEew.js} +1 -1
- zenml/zen_server/dashboard/assets/{DisplayDate-DkCy54Bp.js → DisplayDate-BeXgUG_C.js} +1 -1
- zenml/zen_server/dashboard/assets/{EmptyState-Cs3DEmso.js → EmptyState-DeK7H4pr.js} +1 -1
- zenml/zen_server/dashboard/assets/{Error-BhwdmqK7.js → Error-BMlzibXj.js} +1 -1
- zenml/zen_server/dashboard/assets/{Helpbox-0pBpTwTm.js → Helpbox-BLf40fLV.js} +1 -1
- zenml/zen_server/dashboard/assets/{Infobox-BTK_EUKT.js → Infobox-BwisKifi.js} +1 -1
- zenml/zen_server/dashboard/assets/{InlineAvatar-CA3DFMcM.js → InlineAvatar-jEgodSgX.js} +1 -1
- zenml/zen_server/dashboard/assets/{Lock-CmIn0szs.js → Lock-3lLt1ih0.js} +1 -1
- zenml/zen_server/dashboard/assets/MarkdownVisualization-8O9kTr-2.js +14 -0
- zenml/zen_server/dashboard/assets/{NumberBox-CrN0_kqI.js → NumberBox-T9eELfLZ.js} +1 -1
- zenml/zen_server/dashboard/assets/{Partials-QLOZw624.js → Partials-YPBB3V4q.js} +1 -1
- zenml/zen_server/dashboard/assets/{PasswordChecker-DE71J_3F.js → PasswordChecker-CW0kqY0W.js} +1 -1
- zenml/zen_server/dashboard/assets/{ProviderIcon-C16CCIN4.js → ProviderIcon-Bb3Xha5A.js} +1 -1
- zenml/zen_server/dashboard/assets/{ProviderRadio-D3FuCHf3.js → ProviderRadio-BROY1700.js} +1 -1
- zenml/zen_server/dashboard/assets/RunSelector-DCiL3M1c.js +1 -0
- zenml/zen_server/dashboard/assets/SearchField-DfUiGFVd.js +1 -0
- zenml/zen_server/dashboard/assets/{SecretTooltip-BaMwHF-Q.js → SecretTooltip-C_qByGWB.js} +1 -1
- zenml/zen_server/dashboard/assets/{SetPassword-DuIC65H9.js → SetPassword-7pRB00El.js} +1 -1
- zenml/zen_server/dashboard/assets/{Tick-DJTCF0Re.js → Tick-CykQFPj2.js} +1 -1
- zenml/zen_server/dashboard/assets/{UpdatePasswordSchemas-CUm-DMpw.js → UpdatePasswordSchemas-DckMEkFf.js} +1 -1
- zenml/zen_server/dashboard/assets/{UsageReason-CKw0juLF.js → UsageReason-DVceN14P.js} +1 -1
- zenml/zen_server/dashboard/assets/{WizardFooter-Cv9ApYWU.js → WizardFooter-CW0Cvd70.js} +1 -1
- zenml/zen_server/dashboard/assets/{check-circle-DOoS4yhF.js → check-circle-Dwxliy1Z.js} +1 -1
- zenml/zen_server/dashboard/assets/{chevron-down-Cwb-W_B_.js → chevron-down-8wLBS5pQ.js} +1 -1
- zenml/zen_server/dashboard/assets/{chevron-right-double-c9H46Kl8.js → chevron-right-double-DoD8iXWM.js} +1 -1
- zenml/zen_server/dashboard/assets/{cloud-only-BB4BVa6E.js → cloud-only-B-s_HMDm.js} +1 -1
- zenml/zen_server/dashboard/assets/{code-browser-BJYErIjr.js → code-browser-CZUQs3Wa.js} +1 -1
- zenml/zen_server/dashboard/assets/{copy-CaGlDsUy.js → copy-CaSMXwiU.js} +1 -1
- zenml/zen_server/dashboard/assets/{create-stack-F29xAUEx.js → create-stack-CEmaPZ4c.js} +1 -1
- zenml/zen_server/dashboard/assets/delete-run-D-LKbGyz.js +1 -0
- zenml/zen_server/dashboard/assets/{docker-BFAFXr2_.js → docker-BFNgg-z3.js} +1 -1
- zenml/zen_server/dashboard/assets/{dots-horizontal-C6K59vUm.js → dots-horizontal-DK5Duzx4.js} +1 -1
- zenml/zen_server/dashboard/assets/{form-schemas-BKXwSDK2.js → form-schemas-1AyOCx90.js} +1 -1
- zenml/zen_server/dashboard/assets/{gcp-Dj6ntk0L.js → gcp-7M2Yf3ZK.js} +1 -1
- zenml/zen_server/dashboard/assets/{help-CwN931fX.js → help-Dam461dC.js} +1 -1
- zenml/zen_server/dashboard/assets/{index-5GJ5ysEZ.js → index-BVJ8n2-j.js} +1 -1
- zenml/zen_server/dashboard/assets/index-Bpmj40BI.js +1 -0
- zenml/zen_server/dashboard/assets/index-CbU4Ln_E.css +1 -0
- zenml/zen_server/dashboard/assets/{index-D-mtoBj3.js → index-DKPhqP2B.js} +1 -1
- zenml/zen_server/dashboard/assets/index-QQb7wQEC.js +55 -0
- zenml/zen_server/dashboard/assets/index.esm-cuVep_NJ.js +1 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-400-normal-BLGc9T1a.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-400-normal-ZzOtrSSW.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-500-normal-D4Vwzodn.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-500-normal-DH2hs3aW.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-600-normal-BGBWG807.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-600-normal-BuzJQFbW.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-400-normal-BPnxn4xp.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-400-normal-Dc4VJyIJ.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-500-normal-BShVwWPj.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-500-normal-CUiC4oBV.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-600-normal-Bt9VVOA-.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-600-normal-CaqZN2hq.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-400-normal-BZzXV7-1.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-400-normal-DxZsaF_h.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-500-normal-CeQXL5ds.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-500-normal-d_eO-yCQ.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-600-normal-CwicyhtI.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-600-normal-Dhlb-90d.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-400-normal-Bput3-QP.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-400-normal-DCpCPQOf.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-500-normal-B6guLgqG.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-500-normal-M2hEX8vc.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-600-normal-C9WLioJ8.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-600-normal-Cnui8OiR.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-400-normal-BOOGhInR.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-400-normal-gitzw0hO.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-500-normal-D2bGa7uu.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-500-normal-deR1Tlfd.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-600-normal-B5cFAncS.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-600-normal-D273HNI0.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-400-normal-C1t-h-pH.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-400-normal-hnt3BR84.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-500-normal-CIS2RHJS.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-500-normal-UMdmhHu2.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-600-normal-BnYJhD27.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-600-normal-CAF0vJDd.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-400-normal-BUNmGMP1.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-400-normal-DMkecbls.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-500-normal-DOriooB6.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-500-normal-DQPw2Hwd.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-600-normal-Cc8MFFhd.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-600-normal-Cm6aH8_k.woff +0 -0
- zenml/zen_server/dashboard/assets/{kubernetes-BjbR6D-1.js → kubernetes--g7r02Zu.js} +1 -1
- zenml/zen_server/dashboard/assets/{layout-Dru15_XR.js → layout-DCSYN7-C.js} +1 -1
- zenml/zen_server/dashboard/assets/{link-external-BT2L8hAQ.js → link-external-CBEk6kEG.js} +1 -1
- zenml/zen_server/dashboard/assets/{login-mutation-ax6iL2Mb.js → login-mutation-DTcAFP1l.js} +1 -1
- zenml/zen_server/dashboard/assets/{logs-GiDJXbLS.js → logs-D5bdJGur.js} +1 -1
- zenml/zen_server/dashboard/assets/not-found-Cc-JkRH2.js +1 -0
- zenml/zen_server/dashboard/assets/{package-DYKZ5jKW.js → package-Cs35Szwh.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-HkVBdZl6.js → page-9yplj5JT.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-uORspyRu.js → page-B-y2XKIc.js} +1 -1
- zenml/zen_server/dashboard/assets/page-BBpOxVcY.js +1 -0
- zenml/zen_server/dashboard/assets/{page-BDg1F-Ug.js → page-BQQKaabe.js} +2 -2
- zenml/zen_server/dashboard/assets/page-BRInM1Lg.js +1 -0
- zenml/zen_server/dashboard/assets/{page-CvKnNK1S.js → page-BjjlMk7s.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-BukXK1Aa.js → page-Bvd7YH2A.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-DcTjHmYZ.js → page-C0N5q3l7.js} +1 -1
- zenml/zen_server/dashboard/assets/page-CT3Nep8W.js +1 -0
- zenml/zen_server/dashboard/assets/{page-DuqYMYmH.js → page-C_f47pBf.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-DRfcRK1w.js → page-ClUVkl-O.js} +1 -1
- zenml/zen_server/dashboard/assets/page-Cmv8C_yM.js +3 -0
- zenml/zen_server/dashboard/assets/{page-p0BhSAWx.js → page-CyN2bdWG.js} +1 -1
- zenml/zen_server/dashboard/assets/page-CzzXH4fs.js +1 -0
- zenml/zen_server/dashboard/assets/{page-6mfzecin.js → page-DH_Z7iW1.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-8kYmrh0B.js → page-DIOXwhiD.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-BXarY9K2.js → page-DLixvR-7.js} +1 -1
- zenml/zen_server/dashboard/assets/page-DTlGjgnG.js +1 -0
- zenml/zen_server/dashboard/assets/page-Dbpl86h0.js +1 -0
- zenml/zen_server/dashboard/assets/{page-MAXyfXBq.js → page-Ddgy6kDS.js} +1 -1
- zenml/zen_server/dashboard/assets/page-DtCAfBLy.js +9 -0
- zenml/zen_server/dashboard/assets/{page-CKHNAq7z.js → page-Dx16z7nA.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-DMSLXKGT.js → page-DzpVUZ8f.js} +1 -1
- zenml/zen_server/dashboard/assets/page-McUyYbo1.js +1 -0
- zenml/zen_server/dashboard/assets/{page-miU2rhYG.js → page-N4qoPHKb.js} +1 -1
- zenml/zen_server/dashboard/assets/page-T1P3RyAR.js +1 -0
- zenml/zen_server/dashboard/assets/{page-3qPX9WYH.js → page-bKaULTGG.js} +1 -1
- zenml/zen_server/dashboard/assets/page-sbXUJy9t.js +1 -0
- zenml/zen_server/dashboard/assets/{persist-CfJMar_k.js → persist-CP0JmYZ4.js} +1 -1
- zenml/zen_server/dashboard/assets/{persist-BxIR2XZs.js → persist-DNb5cdrU.js} +1 -1
- zenml/zen_server/dashboard/assets/{plus-Bc8eLSDM.js → plus-C9IxgN2M.js} +1 -1
- zenml/zen_server/dashboard/assets/{refresh-hfgWPeto.js → refresh-BVu22P_C.js} +1 -1
- zenml/zen_server/dashboard/assets/{rocket-SESCGQXm.js → rocket-CONEmRmB.js} +1 -1
- zenml/zen_server/dashboard/assets/{sharedSchema-vub0rii3.js → sharedSchema-TMLu-nYQ.js} +1 -1
- zenml/zen_server/dashboard/assets/stack-detail-query-xmYxSsUY.js +1 -0
- zenml/zen_server/dashboard/assets/{tick-circle-m-hJG8i9.js → tick-circle-CM1ZScbQ.js} +1 -1
- zenml/zen_server/dashboard/assets/{trash-DUWZWzse.js → trash-DkJHMOg7.js} +1 -1
- zenml/zen_server/dashboard/assets/{update-server-settings-mutation-FGVP7X2U.js → update-server-settings-mutation-DsU8cNVl.js} +1 -1
- zenml/zen_server/dashboard/assets/{url-CbAPzsmT.js → url-D5le3J4q.js} +1 -1
- zenml/zen_server/dashboard/assets/zod-D89GC_vc.js +1 -0
- zenml/zen_server/dashboard/index.html +7 -7
- zenml/zen_server/deploy/__init__.py +7 -16
- zenml/zen_server/deploy/base_provider.py +46 -73
- zenml/zen_server/deploy/{local → daemon}/__init__.py +3 -3
- zenml/zen_server/deploy/{local/local_provider.py → daemon/daemon_provider.py} +44 -63
- zenml/zen_server/deploy/{local/local_zen_server.py → daemon/daemon_zen_server.py} +50 -28
- zenml/zen_server/deploy/deployer.py +90 -171
- zenml/zen_server/deploy/deployment.py +20 -12
- zenml/zen_server/deploy/docker/docker_provider.py +9 -28
- zenml/zen_server/deploy/docker/docker_zen_server.py +19 -9
- zenml/zen_server/deploy/helm/Chart.yaml +1 -1
- zenml/zen_server/deploy/helm/README.md +2 -2
- zenml/zen_server/exceptions.py +11 -0
- zenml/zen_server/feature_gate/zenml_cloud_feature_gate.py +1 -1
- zenml/zen_server/jwt.py +9 -9
- zenml/zen_server/routers/artifact_version_endpoints.py +1 -1
- zenml/zen_server/routers/auth_endpoints.py +30 -8
- zenml/zen_server/routers/runs_endpoints.py +0 -28
- zenml/zen_server/routers/stack_components_endpoints.py +1 -1
- zenml/zen_server/routers/workspaces_endpoints.py +1 -1
- zenml/zen_server/template_execution/runner_entrypoint_configuration.py +7 -4
- zenml/zen_server/template_execution/utils.py +8 -63
- zenml/zen_server/utils.py +67 -69
- zenml/zen_server/zen_server_api.py +107 -17
- zenml/zen_stores/base_zen_store.py +4 -51
- zenml/zen_stores/migrations/versions/0.67.0_release.py +23 -0
- zenml/zen_stores/migrations/versions/0.68.0_release.py +23 -0
- zenml/zen_stores/migrations/versions/0.68.1_release.py +23 -0
- zenml/zen_stores/migrations/versions/1d8f30c54477_migrate_to_new_.py +124 -0
- zenml/zen_stores/migrations/versions/c22561cbb3a9_add_artifact_unique_constraints.py +86 -0
- zenml/zen_stores/rest_zen_store.py +325 -147
- zenml/zen_stores/schemas/api_key_schemas.py +9 -4
- zenml/zen_stores/schemas/artifact_schemas.py +21 -2
- zenml/zen_stores/schemas/artifact_visualization_schemas.py +1 -1
- zenml/zen_stores/schemas/component_schemas.py +49 -6
- zenml/zen_stores/schemas/device_schemas.py +9 -4
- zenml/zen_stores/schemas/flavor_schemas.py +1 -1
- zenml/zen_stores/schemas/model_schemas.py +1 -1
- zenml/zen_stores/schemas/pipeline_run_schemas.py +12 -4
- zenml/zen_stores/schemas/service_schemas.py +1 -1
- zenml/zen_stores/schemas/step_run_schemas.py +3 -3
- zenml/zen_stores/schemas/trigger_schemas.py +1 -1
- zenml/zen_stores/sql_zen_store.py +422 -145
- zenml/zen_stores/template_utils.py +3 -1
- {zenml_nightly-0.66.0.dev20240928.dist-info → zenml_nightly-0.68.1.dev20241102.dist-info}/METADATA +20 -18
- {zenml_nightly-0.66.0.dev20240928.dist-info → zenml_nightly-0.68.1.dev20241102.dist-info}/RECORD +343 -505
- {zenml_nightly-0.66.0.dev20240928.dist-info → zenml_nightly-0.68.1.dev20241102.dist-info}/WHEEL +1 -1
- zenml/api.py +0 -60
- zenml/cli/stack_recipes.py +0 -469
- zenml/lineage_graph/__init__.py +0 -34
- zenml/lineage_graph/lineage_graph.py +0 -244
- zenml/lineage_graph/node/__init__.py +0 -32
- zenml/lineage_graph/node/artifact_node.py +0 -51
- zenml/lineage_graph/node/step_node.py +0 -41
- zenml/model/model_version.py +0 -38
- zenml/new/pipelines/code_archive.py +0 -157
- zenml/new/pipelines/pipeline_decorator.py +0 -118
- zenml/new/steps/step_decorator.py +0 -176
- zenml/pipelines/base_pipeline.py +0 -273
- zenml/post_execution/__init__.py +0 -30
- zenml/post_execution/pipeline.py +0 -55
- zenml/post_execution/pipeline_run.py +0 -55
- zenml/services/terraform/__init__.py +0 -14
- zenml/services/terraform/terraform_service.py +0 -441
- zenml/steps/external_artifact.py +0 -26
- zenml/steps/step_environment.py +0 -108
- zenml/steps/step_output.py +0 -36
- zenml/utils/mlstacks_utils.py +0 -635
- zenml/utils/terraform_utils.py +0 -43
- zenml/zen_server/dashboard/assets/@radix-DnFH_oo1.js +0 -85
- zenml/zen_server/dashboard/assets/@react-router-APVeuk-U.js +0 -29
- zenml/zen_server/dashboard/assets/@reactflow-ytavUpwh.js +0 -17
- zenml/zen_server/dashboard/assets/@tanstack-QbMbTrh5.js +0 -22
- zenml/zen_server/dashboard/assets/ComponentBadge-gKR1OIwG.js +0 -1
- zenml/zen_server/dashboard/assets/ExecutionStatus-D6r6aK8J.js +0 -1
- zenml/zen_server/dashboard/assets/MarkdownVisualization-DS05sfBm.js +0 -14
- zenml/zen_server/dashboard/assets/SearchField-BzmfxS0L.js +0 -1
- zenml/zen_server/dashboard/assets/all-pipeline-runs-query-BA3R2Sey.js +0 -1
- zenml/zen_server/dashboard/assets/delete-run-CP0pcJ3U.js +0 -1
- zenml/zen_server/dashboard/assets/index-BhJ6ZJxv.css +0 -1
- zenml/zen_server/dashboard/assets/index-Ci0nJ8EZ.js +0 -55
- zenml/zen_server/dashboard/assets/index.esm-BE1uqCX5.js +0 -1
- zenml/zen_server/dashboard/assets/inter-cyrillic-400-normal-Df6ckaLK.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-400-normal-JrS_4yms.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-500-normal-BRrLR67x.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-500-normal-DskEQOpE.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-600-normal-DDpWG8g5.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-600-normal-iz1--dBq.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-400-normal-CzG7Kr3z.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-400-normal-tyfMZHQw.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-500-normal-DOnSzjnx.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-500-normal-Xebo2OyJ.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-600-normal-DpA2xaRd.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-600-normal-KAwcVx6H.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-400-normal-DQXyrmoy.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-400-normal-DvIPHDQ7.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-500-normal-BjpBGs91.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-500-normal-CmOavsDc.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-600-normal-B-l8Lzzd.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-600-normal-BLZsI-P3.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-400-normal-CIdlr5YK.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-400-normal-_Rr29XE2.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-500-normal-2pdUafRD.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-500-normal-Dtavx3qw.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-600-normal-BmtRFZgT.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-600-normal-CkBLDEl_.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-400-normal-BT1H-PT_.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-400-normal-Cdi8t5Mu.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-500-normal-D4I8BKCx.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-500-normal-kWhwEdDH.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-600-normal-B2Ssfs8e.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-600-normal-Dbvh0wvx.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-400-normal-8tIzm-yw.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-400-normal-D3W-OpO-.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-500-normal-B9u8Q_zH.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-500-normal-SuUkSNTU.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-600-normal-Dg0Bk0Yr.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-600-normal-ao35dkSb.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-400-normal-Cnt0N5Vm.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-400-normal-DIOGfGLL.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-500-normal-0i6yoQMg.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-500-normal-5IkPJ6Nk.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-600-normal-BQ_dbMbg.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-600-normal-DjnxGF-L.woff2 +0 -0
- zenml/zen_server/dashboard/assets/not-found-DbjllLY_.js +0 -1
- zenml/zen_server/dashboard/assets/page-B1n7_W7z.js +0 -1
- zenml/zen_server/dashboard/assets/page-BZZhLo2u.js +0 -1
- zenml/zen_server/dashboard/assets/page-Bbf_oBjn.js +0 -1
- zenml/zen_server/dashboard/assets/page-BjjuBvZG.js +0 -9
- zenml/zen_server/dashboard/assets/page-CHaQkFK5.js +0 -1
- zenml/zen_server/dashboard/assets/page-CS0SYFK8.js +0 -1
- zenml/zen_server/dashboard/assets/page-DGM1CbYT.js +0 -2
- zenml/zen_server/dashboard/assets/page-DOmIZ2ra.js +0 -1
- zenml/zen_server/dashboard/assets/page-DYVmJ9_w.js +0 -3
- zenml/zen_server/dashboard/assets/page-Dwow2doB.js +0 -1
- zenml/zen_server/dashboard/assets/stack-detail-query-DQcyzG-2.js +0 -1
- zenml/zen_server/dashboard/assets/zod-uFd1wBcd.js +0 -1
- zenml/zen_server/dashboard_legacy/_redirects +0 -1
- zenml/zen_server/dashboard_legacy/asset-manifest.json +0 -131
- zenml/zen_server/dashboard_legacy/favicon.ico +0 -0
- zenml/zen_server/dashboard_legacy/index.html +0 -1
- zenml/zen_server/dashboard_legacy/manifest.json +0 -25
- zenml/zen_server/dashboard_legacy/precache-manifest.6d320abb70db612019dda6c4948e7a90.js +0 -462
- zenml/zen_server/dashboard_legacy/robots.txt +0 -2
- zenml/zen_server/dashboard_legacy/service-worker.js +0 -39
- zenml/zen_server/dashboard_legacy/static/css/2.5b37d44a.chunk.css +0 -16
- zenml/zen_server/dashboard_legacy/static/css/2.5b37d44a.chunk.css.map +0 -1
- zenml/zen_server/dashboard_legacy/static/css/main.e79dff04.chunk.css +0 -2
- zenml/zen_server/dashboard_legacy/static/css/main.e79dff04.chunk.css.map +0 -1
- zenml/zen_server/dashboard_legacy/static/js/2.7934458d.chunk.js +0 -3
- zenml/zen_server/dashboard_legacy/static/js/2.7934458d.chunk.js.LICENSE.txt +0 -95
- zenml/zen_server/dashboard_legacy/static/js/2.7934458d.chunk.js.map +0 -1
- zenml/zen_server/dashboard_legacy/static/js/main.fa9299d5.chunk.js +0 -2
- zenml/zen_server/dashboard_legacy/static/js/main.fa9299d5.chunk.js.map +0 -1
- zenml/zen_server/dashboard_legacy/static/js/runtime-main.bfca2edd.js +0 -2
- zenml/zen_server/dashboard_legacy/static/js/runtime-main.bfca2edd.js.map +0 -1
- zenml/zen_server/dashboard_legacy/static/media/AlertTriangle.28aee535.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/ArrowSquareOut.abfb9bc7.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/Back.86c23a22.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/BookOpen.5cb101ff.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/BoundingBox.1eb98717.svg +0 -10
- zenml/zen_server/dashboard_legacy/static/media/Burger.9b1c67d7.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Cached.2381fb8d.svg +0 -1
- zenml/zen_server/dashboard_legacy/static/media/Calendar.356e11c7.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/ChartBarHorizontal.0247447b.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/ChartLine.0d79e18d.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/ChatDots.2e1c9211.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/Check.dad6beb2.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/CheckCircleFilled.c19566d0.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Checkbox.af50e31e.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/ChevronDown.f860ce32.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/ChevronDownLight.6642d756.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/ChevronLeft.f6edfcdb.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/CircleCheck.f98fd6ca.svg +0 -1
- zenml/zen_server/dashboard_legacy/static/media/Clock.ffc9de95.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Close.74e9efbc.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/CloseWithBorder.6960930a.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/CloseWithoutBorder.cd6f71df.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/CloudArrowUp.0aecb235.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/Code.ef0f33b5.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Config.0be63f8a.svg +0 -1
- zenml/zen_server/dashboard_legacy/static/media/Connector.9fd46ef1.svg +0 -10
- zenml/zen_server/dashboard_legacy/static/media/Copy.36e2112a.svg +0 -1
- zenml/zen_server/dashboard_legacy/static/media/Dashboard.d05787e0.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Data.b1c3b5f8.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Delete.3c361b28.svg +0 -8
- zenml/zen_server/dashboard_legacy/static/media/Docs.7541d478.svg +0 -7
- zenml/zen_server/dashboard_legacy/static/media/Download.fba04d87.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/Edit.490eb294.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/EmptyRightArrow.23749d01.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Example.6396cd37.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/Extension.1394cd4a.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Eye.d9e4ee62.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/Failed.0213c1a0.svg +0 -1
- zenml/zen_server/dashboard_legacy/static/media/FileText.1f15bacd.svg +0 -7
- zenml/zen_server/dashboard_legacy/static/media/Filter.ab6b9c0d.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Folders.12b29887.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/FunnelFill.6df4c143.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/GitCommit.7dd9c2aa.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/GitHub_Logo.cefc2023.png +0 -0
- zenml/zen_server/dashboard_legacy/static/media/Graph.2c63a892.svg +0 -11
- zenml/zen_server/dashboard_legacy/static/media/History.08329240.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Home.0843b0d5.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/ImageBuilder.ea762d9c.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/InProgress.304a0edc.svg +0 -1
- zenml/zen_server/dashboard_legacy/static/media/Info.9fe10c5c.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/KeyboardReturn.491afbe3.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Link.72bbb55d.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/Lock.30f5e1fe.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/Lock2.a769ea52.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/LockKey.92f21621.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/Logs.8bf4d005.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/MinusCircle.4188f418.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/ModelRegistry.f0de050a.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/MultiUser.a2ba7c67.svg +0 -10
- zenml/zen_server/dashboard_legacy/static/media/PaginationFirst.92628634.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/PaginationLast.00d3c732.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/PaginationNext.86158845.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/PaginationPrev.60c18a88.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Pen.f2d831d4.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/PhotoCamera.179d6d4c.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Pipeline.30d298b0.svg +0 -7
- zenml/zen_server/dashboard_legacy/static/media/Plus.5aa1c16b.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/PlusCircle.92d860dd.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/Repositories.71a36b8c.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/RightArrow.f30d3871.svg +0 -29
- zenml/zen_server/dashboard_legacy/static/media/Rocket.63bf7b9d.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/RocketLaunch.1bff2b59.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/Rubik-Medium.c87313aa.ttf +0 -0
- zenml/zen_server/dashboard_legacy/static/media/Rubik-Regular.b3d0902b.ttf +0 -0
- zenml/zen_server/dashboard_legacy/static/media/Run.daec4fb2.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/Search.d1afcce5.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/Settings.59ca73ae.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/Share2.46c3ff66.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/SignOut.6aa718c5.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/SimplePlus.5cf7ec20.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/SingleUser.bef3a095.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/SourceCodePro-Regular.b484b32f.ttf +0 -0
- zenml/zen_server/dashboard_legacy/static/media/Stack.19b604ac.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/StackComponent.b1ba90b5.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/Star.f0c25022.svg +0 -9
- zenml/zen_server/dashboard_legacy/static/media/StarOutline.94ca8cd9.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Storefront.4b4796fe.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Stream.543e3039.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/SupportAgent.510ddf1f.svg +0 -8
- zenml/zen_server/dashboard_legacy/static/media/Table.77033750.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/Tool.d5785486.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/UserPlus.741a99d7.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/Verified.0625b2a0.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/addNew.4fb6c939.svg +0 -8
- zenml/zen_server/dashboard_legacy/static/media/arrowClose.cbd53f3f.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/arrowOpen.6ceef0af.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/check_small.30bc0138.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/circleArrowSideClose.98d6013e.svg +0 -18
- zenml/zen_server/dashboard_legacy/static/media/circleArrowSideOpen.63653df6.svg +0 -18
- zenml/zen_server/dashboard_legacy/static/media/image.104fd14b.png +0 -0
- zenml/zen_server/dashboard_legacy/static/media/imageAddIcon.e83004a9.svg +0 -7
- zenml/zen_server/dashboard_legacy/static/media/logo.93333e5c.svg +0 -1
- zenml/zen_server/dashboard_legacy/static/media/logo_small.4204397d.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/logo_white.d4b4414e.svg +0 -20
- zenml/zen_server/dashboard_legacy/static/media/notConnected.5e2c8ea7.svg +0 -8
- zenml/zen_server/dashboard_legacy/static/media/plugin-fallback.72c294e6.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/share.bcd998b0.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/stars.08a9b19a.svg +0 -8
- zenml/zen_server/deploy/terraform/__init__.py +0 -41
- zenml/zen_server/deploy/terraform/providers/aws_provider.py +0 -61
- zenml/zen_server/deploy/terraform/providers/azure_provider.py +0 -59
- zenml/zen_server/deploy/terraform/providers/gcp_provider.py +0 -59
- zenml/zen_server/deploy/terraform/providers/terraform_provider.py +0 -331
- zenml/zen_server/deploy/terraform/recipes/aws/.gitignore +0 -8
- zenml/zen_server/deploy/terraform/recipes/aws/helm.tf +0 -20
- zenml/zen_server/deploy/terraform/recipes/aws/ingress.tf +0 -30
- zenml/zen_server/deploy/terraform/recipes/aws/outputs.tf +0 -7
- zenml/zen_server/deploy/terraform/recipes/aws/printf.cmd +0 -2
- zenml/zen_server/deploy/terraform/recipes/aws/sql.tf +0 -62
- zenml/zen_server/deploy/terraform/recipes/aws/terraform.tf +0 -44
- zenml/zen_server/deploy/terraform/recipes/aws/variables.tf +0 -167
- zenml/zen_server/deploy/terraform/recipes/aws/vpc.tf +0 -47
- zenml/zen_server/deploy/terraform/recipes/aws/zen_server.tf +0 -103
- zenml/zen_server/deploy/terraform/recipes/azure/.gitignore +0 -8
- zenml/zen_server/deploy/terraform/recipes/azure/helm.tf +0 -20
- zenml/zen_server/deploy/terraform/recipes/azure/ingress.tf +0 -30
- zenml/zen_server/deploy/terraform/recipes/azure/key_vault.tf +0 -73
- zenml/zen_server/deploy/terraform/recipes/azure/outputs.tf +0 -7
- zenml/zen_server/deploy/terraform/recipes/azure/printf.cmd +0 -2
- zenml/zen_server/deploy/terraform/recipes/azure/rg.tf +0 -36
- zenml/zen_server/deploy/terraform/recipes/azure/sql.tf +0 -65
- zenml/zen_server/deploy/terraform/recipes/azure/terraform.tf +0 -52
- zenml/zen_server/deploy/terraform/recipes/azure/variables.tf +0 -176
- zenml/zen_server/deploy/terraform/recipes/azure/zen_server.tf +0 -103
- zenml/zen_server/deploy/terraform/recipes/gcp/.gitignore +0 -8
- zenml/zen_server/deploy/terraform/recipes/gcp/helm.tf +0 -20
- zenml/zen_server/deploy/terraform/recipes/gcp/ingress.tf +0 -30
- zenml/zen_server/deploy/terraform/recipes/gcp/outputs.tf +0 -7
- zenml/zen_server/deploy/terraform/recipes/gcp/printf.cmd +0 -2
- zenml/zen_server/deploy/terraform/recipes/gcp/sql.tf +0 -64
- zenml/zen_server/deploy/terraform/recipes/gcp/terraform.tf +0 -44
- zenml/zen_server/deploy/terraform/recipes/gcp/variables.tf +0 -171
- zenml/zen_server/deploy/terraform/recipes/gcp/zen_server.tf +0 -114
- zenml/zen_server/deploy/terraform/terraform_zen_server.py +0 -246
- /zenml/{new/pipelines → pipelines}/build_utils.py +0 -0
- /zenml/{new/steps → steps}/decorated_step.py +0 -0
- {zenml_nightly-0.66.0.dev20240928.dist-info → zenml_nightly-0.68.1.dev20241102.dist-info}/LICENSE +0 -0
- {zenml_nightly-0.66.0.dev20240928.dist-info → zenml_nightly-0.68.1.dev20241102.dist-info}/entry_points.txt +0 -0
zenml/model/utils.py
CHANGED
@@ -24,122 +24,16 @@ from zenml.logger import get_logger
|
|
24
24
|
from zenml.metadata.metadata_types import MetadataType
|
25
25
|
from zenml.model.model import Model
|
26
26
|
from zenml.models import (
|
27
|
+
ArtifactVersionResponse,
|
27
28
|
ModelVersionArtifactRequest,
|
29
|
+
ModelVersionResponse,
|
28
30
|
ServiceUpdate,
|
29
31
|
)
|
30
|
-
from zenml.
|
32
|
+
from zenml.steps.step_context import get_step_context
|
31
33
|
|
32
34
|
logger = get_logger(__name__)
|
33
35
|
|
34
36
|
|
35
|
-
def link_step_artifacts_to_model(
|
36
|
-
artifact_version_ids: Dict[str, UUID],
|
37
|
-
) -> None:
|
38
|
-
"""Links the output artifacts of a step to the model.
|
39
|
-
|
40
|
-
Args:
|
41
|
-
artifact_version_ids: The IDs of the published output artifacts.
|
42
|
-
|
43
|
-
Raises:
|
44
|
-
RuntimeError: If called outside of a step.
|
45
|
-
"""
|
46
|
-
try:
|
47
|
-
step_context = get_step_context()
|
48
|
-
except StepContextError:
|
49
|
-
raise RuntimeError(
|
50
|
-
"`link_step_artifacts_to_model` can only be called from within a "
|
51
|
-
"step."
|
52
|
-
)
|
53
|
-
try:
|
54
|
-
model = step_context.model
|
55
|
-
except StepContextError:
|
56
|
-
model = None
|
57
|
-
logger.debug("No model context found, unable to auto-link artifacts.")
|
58
|
-
|
59
|
-
for artifact_name, artifact_version_id in artifact_version_ids.items():
|
60
|
-
artifact_config = step_context._get_output(
|
61
|
-
artifact_name
|
62
|
-
).artifact_config
|
63
|
-
|
64
|
-
if artifact_config is None and model is not None:
|
65
|
-
artifact_config = ArtifactConfig(name=artifact_name)
|
66
|
-
|
67
|
-
if artifact_config:
|
68
|
-
link_artifact_config_to_model(
|
69
|
-
artifact_config=artifact_config,
|
70
|
-
artifact_version_id=artifact_version_id,
|
71
|
-
model=model,
|
72
|
-
)
|
73
|
-
|
74
|
-
|
75
|
-
def link_artifact_config_to_model(
|
76
|
-
artifact_config: ArtifactConfig,
|
77
|
-
artifact_version_id: UUID,
|
78
|
-
model: Optional["Model"] = None,
|
79
|
-
) -> None:
|
80
|
-
"""Link an artifact config to its model version.
|
81
|
-
|
82
|
-
Args:
|
83
|
-
artifact_config: The artifact config to link.
|
84
|
-
artifact_version_id: The ID of the artifact to link.
|
85
|
-
model: The model version from the step or pipeline context.
|
86
|
-
"""
|
87
|
-
client = Client()
|
88
|
-
|
89
|
-
# If the artifact config specifies a model itself then always use that
|
90
|
-
if artifact_config.model_name is not None:
|
91
|
-
from zenml.model.model import Model
|
92
|
-
|
93
|
-
model = Model(
|
94
|
-
name=artifact_config.model_name,
|
95
|
-
version=artifact_config.model_version,
|
96
|
-
)
|
97
|
-
|
98
|
-
if model:
|
99
|
-
logger.debug(
|
100
|
-
f"Linking artifact `{artifact_config.name}` to model "
|
101
|
-
f"`{model.name}` version `{model.version}` using config "
|
102
|
-
f"`{artifact_config}`."
|
103
|
-
)
|
104
|
-
request = ModelVersionArtifactRequest(
|
105
|
-
user=client.active_user.id,
|
106
|
-
workspace=client.active_workspace.id,
|
107
|
-
artifact_version=artifact_version_id,
|
108
|
-
model=model.model_id,
|
109
|
-
model_version=model.id,
|
110
|
-
is_model_artifact=artifact_config.is_model_artifact,
|
111
|
-
is_deployment_artifact=artifact_config.is_deployment_artifact,
|
112
|
-
)
|
113
|
-
client.zen_store.create_model_version_artifact_link(request)
|
114
|
-
|
115
|
-
|
116
|
-
def log_model_version_metadata(
|
117
|
-
metadata: Dict[str, "MetadataType"],
|
118
|
-
model_name: Optional[str] = None,
|
119
|
-
model_version: Optional[Union[ModelStages, int, str]] = None,
|
120
|
-
) -> None:
|
121
|
-
"""Log model version metadata.
|
122
|
-
|
123
|
-
This function can be used to log metadata for existing model versions.
|
124
|
-
|
125
|
-
Args:
|
126
|
-
metadata: The metadata to log.
|
127
|
-
model_name: The name of the model to log metadata for. Can
|
128
|
-
be omitted when being called inside a step with configured
|
129
|
-
`model` in decorator.
|
130
|
-
model_version: The version of the model to log metadata for. Can
|
131
|
-
be omitted when being called inside a step with configured
|
132
|
-
`model` in decorator.
|
133
|
-
"""
|
134
|
-
logger.warning(
|
135
|
-
"`log_model_version_metadata` is deprecated. Please use "
|
136
|
-
"`log_model_metadata` instead."
|
137
|
-
)
|
138
|
-
log_model_metadata(
|
139
|
-
metadata=metadata, model_name=model_name, model_version=model_version
|
140
|
-
)
|
141
|
-
|
142
|
-
|
143
37
|
def log_model_metadata(
|
144
38
|
metadata: Dict[str, "MetadataType"],
|
145
39
|
model_name: Optional[str] = None,
|
@@ -179,8 +73,41 @@ def log_model_metadata(
|
|
179
73
|
mv.log_metadata(metadata)
|
180
74
|
|
181
75
|
|
76
|
+
def link_artifact_version_to_model_version(
|
77
|
+
artifact_version: ArtifactVersionResponse,
|
78
|
+
model_version: ModelVersionResponse,
|
79
|
+
artifact_config: Optional[ArtifactConfig] = None,
|
80
|
+
) -> None:
|
81
|
+
"""Link an artifact version to a model version.
|
82
|
+
|
83
|
+
Args:
|
84
|
+
artifact_version: The artifact version to link.
|
85
|
+
model_version: The model version to link.
|
86
|
+
artifact_config: Output artifact configuration.
|
87
|
+
"""
|
88
|
+
if artifact_config:
|
89
|
+
is_model_artifact = artifact_config.is_model_artifact
|
90
|
+
is_deployment_artifact = artifact_config.is_deployment_artifact
|
91
|
+
else:
|
92
|
+
is_model_artifact = False
|
93
|
+
is_deployment_artifact = False
|
94
|
+
|
95
|
+
client = Client()
|
96
|
+
client.zen_store.create_model_version_artifact_link(
|
97
|
+
ModelVersionArtifactRequest(
|
98
|
+
user=client.active_user.id,
|
99
|
+
workspace=client.active_workspace.id,
|
100
|
+
artifact_version=artifact_version.id,
|
101
|
+
model=model_version.model.id,
|
102
|
+
model_version=model_version.id,
|
103
|
+
is_model_artifact=is_model_artifact,
|
104
|
+
is_deployment_artifact=is_deployment_artifact,
|
105
|
+
)
|
106
|
+
)
|
107
|
+
|
108
|
+
|
182
109
|
def link_artifact_to_model(
|
183
|
-
|
110
|
+
artifact_version: ArtifactVersionResponse,
|
184
111
|
model: Optional["Model"] = None,
|
185
112
|
is_model_artifact: bool = False,
|
186
113
|
is_deployment_artifact: bool = False,
|
@@ -188,7 +115,7 @@ def link_artifact_to_model(
|
|
188
115
|
"""Link the artifact to the model.
|
189
116
|
|
190
117
|
Args:
|
191
|
-
|
118
|
+
artifact_version: The artifact version to link.
|
192
119
|
model: The model to link to.
|
193
120
|
is_model_artifact: Whether the artifact is a model artifact.
|
194
121
|
is_deployment_artifact: Whether the artifact is a deployment artifact.
|
@@ -212,13 +139,15 @@ def link_artifact_to_model(
|
|
212
139
|
"@step or @pipeline decorator."
|
213
140
|
)
|
214
141
|
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
142
|
+
model_version = model._get_or_create_model_version()
|
143
|
+
artifact_config = ArtifactConfig(
|
144
|
+
is_model_artifact=is_model_artifact,
|
145
|
+
is_deployment_artifact=is_deployment_artifact,
|
146
|
+
)
|
147
|
+
link_artifact_version_to_model_version(
|
148
|
+
artifact_version=artifact_version,
|
149
|
+
model_version=model_version,
|
150
|
+
artifact_config=artifact_config,
|
222
151
|
)
|
223
152
|
|
224
153
|
|
zenml/models/__init__.py
CHANGED
@@ -132,6 +132,7 @@ from zenml.models.v2.core.component import (
|
|
132
132
|
ComponentResponse,
|
133
133
|
ComponentResponseBody,
|
134
134
|
ComponentResponseMetadata,
|
135
|
+
ComponentResponseResources
|
135
136
|
)
|
136
137
|
from zenml.models.v2.core.event_source_flavor import (
|
137
138
|
EventSourceFlavorResponse,
|
@@ -292,6 +293,7 @@ from zenml.models.v2.core.step_run import (
|
|
292
293
|
StepRunResponse,
|
293
294
|
StepRunResponseBody,
|
294
295
|
StepRunResponseMetadata,
|
296
|
+
StepRunResponseResources
|
295
297
|
)
|
296
298
|
from zenml.models.v2.core.tag import (
|
297
299
|
TagFilter,
|
@@ -409,6 +411,7 @@ CodeRepositoryResponseBody.model_rebuild()
|
|
409
411
|
CodeRepositoryResponseMetadata.model_rebuild()
|
410
412
|
ComponentResponseBody.model_rebuild()
|
411
413
|
ComponentResponseMetadata.model_rebuild()
|
414
|
+
ComponentResponseResources.model_rebuild()
|
412
415
|
EventSourceResponseBody.model_rebuild()
|
413
416
|
EventSourceResponseMetadata.model_rebuild()
|
414
417
|
EventSourceResponseResources.model_rebuild()
|
@@ -459,6 +462,7 @@ StackResponse.model_rebuild()
|
|
459
462
|
StepRunRequest.model_rebuild()
|
460
463
|
StepRunResponseBody.model_rebuild()
|
461
464
|
StepRunResponseMetadata.model_rebuild()
|
465
|
+
StepRunResponseResources.model_rebuild()
|
462
466
|
TriggerExecutionResponseResources.model_rebuild()
|
463
467
|
TriggerResponseBody.model_rebuild()
|
464
468
|
TriggerResponseMetadata.model_rebuild()
|
@@ -555,6 +559,7 @@ __all__ = [
|
|
555
559
|
"ComponentResponse",
|
556
560
|
"ComponentResponseBody",
|
557
561
|
"ComponentResponseMetadata",
|
562
|
+
"ComponentResponseResources",
|
558
563
|
"EventSourceFlavorResponse",
|
559
564
|
"EventSourceFlavorResponseBody",
|
560
565
|
"EventSourceFlavorResponseMetadata",
|
@@ -685,6 +690,7 @@ __all__ = [
|
|
685
690
|
"StepRunResponse",
|
686
691
|
"StepRunResponseBody",
|
687
692
|
"StepRunResponseMetadata",
|
693
|
+
"StepRunResponseResources",
|
688
694
|
"TagFilter",
|
689
695
|
"TagResourceResponse",
|
690
696
|
"TagResourceResponseBody",
|
zenml/models/v2/base/base.py
CHANGED
@@ -215,6 +215,14 @@ class BaseResponse(BaseZenModel, Generic[AnyBody, AnyMetadata, AnyResources]):
|
|
215
215
|
f"`{hydrated_value}`"
|
216
216
|
)
|
217
217
|
|
218
|
+
def hydrate(self) -> None:
|
219
|
+
"""Hydrate the response."""
|
220
|
+
hydrated_version = self.get_hydrated_version()
|
221
|
+
self._validate_hydrated_version(hydrated_version)
|
222
|
+
|
223
|
+
self.resources = hydrated_version.resources
|
224
|
+
self.metadata = hydrated_version.metadata
|
225
|
+
|
218
226
|
def get_hydrated_version(
|
219
227
|
self,
|
220
228
|
) -> "BaseResponse[AnyBody, AnyMetadata, AnyResources]":
|
@@ -269,9 +277,7 @@ class BaseResponse(BaseZenModel, Generic[AnyBody, AnyMetadata, AnyResources]):
|
|
269
277
|
if len(metadata_type.model_fields):
|
270
278
|
# If the metadata class defines any fields, fetch the metadata
|
271
279
|
# through the hydrated version.
|
272
|
-
|
273
|
-
self._validate_hydrated_version(hydrated_version)
|
274
|
-
self.metadata = hydrated_version.metadata
|
280
|
+
self.hydrate()
|
275
281
|
else:
|
276
282
|
# Otherwise, use the metadata class to create an empty metadata
|
277
283
|
# object.
|
@@ -298,8 +304,8 @@ class BaseResponse(BaseZenModel, Generic[AnyBody, AnyMetadata, AnyResources]):
|
|
298
304
|
"field should exist."
|
299
305
|
)
|
300
306
|
|
301
|
-
#
|
302
|
-
#
|
307
|
+
# resources is defined as:
|
308
|
+
# resources: Optional[....ResponseResources] = Field(default=None)
|
303
309
|
# We need to find the actual class inside the Optional annotation.
|
304
310
|
from zenml.utils.typing_utils import get_args
|
305
311
|
|
@@ -309,9 +315,7 @@ class BaseResponse(BaseZenModel, Generic[AnyBody, AnyMetadata, AnyResources]):
|
|
309
315
|
if len(resources_type.model_fields):
|
310
316
|
# If the resources class defines any fields, fetch the resources
|
311
317
|
# through the hydrated version.
|
312
|
-
|
313
|
-
self._validate_hydrated_version(hydrated_version)
|
314
|
-
self.resources = hydrated_version.resources
|
318
|
+
self.hydrate()
|
315
319
|
else:
|
316
320
|
# Otherwise, use the resources class to create an empty
|
317
321
|
# resources object.
|
zenml/models/v2/base/filter.py
CHANGED
@@ -604,12 +604,15 @@ class BaseFilter(BaseModel):
|
|
604
604
|
self,
|
605
605
|
value: Union[UUID, str],
|
606
606
|
table: Type["NamedSchema"],
|
607
|
+
additional_columns: Optional[List[str]] = None,
|
607
608
|
) -> "ColumnElement[bool]":
|
608
609
|
"""Generate filter conditions for name or id of a table.
|
609
610
|
|
610
611
|
Args:
|
611
612
|
value: The filter value.
|
612
613
|
table: The table to filter.
|
614
|
+
additional_columns: Additional table columns that should also
|
615
|
+
filtered for the given value as part of the or condition.
|
613
616
|
|
614
617
|
Returns:
|
615
618
|
The query conditions.
|
@@ -637,6 +640,12 @@ class BaseFilter(BaseModel):
|
|
637
640
|
)
|
638
641
|
conditions.append(filter_.generate_query_conditions(table=table))
|
639
642
|
|
643
|
+
for column in additional_columns or []:
|
644
|
+
filter_ = FilterGenerator(table).define_filter(
|
645
|
+
column=column, value=value, operator=operator
|
646
|
+
)
|
647
|
+
conditions.append(filter_.generate_query_conditions(table=table))
|
648
|
+
|
640
649
|
return or_(*conditions)
|
641
650
|
|
642
651
|
def generate_custom_query_conditions_for_column(
|
@@ -24,13 +24,19 @@ from typing import (
|
|
24
24
|
)
|
25
25
|
from uuid import UUID
|
26
26
|
|
27
|
-
from pydantic import
|
27
|
+
from pydantic import (
|
28
|
+
BaseModel,
|
29
|
+
ConfigDict,
|
30
|
+
Field,
|
31
|
+
field_validator,
|
32
|
+
model_validator,
|
33
|
+
)
|
28
34
|
|
29
35
|
from zenml.config.source import Source, SourceWithValidator
|
30
36
|
from zenml.constants import STR_FIELD_MAX_LENGTH, TEXT_FIELD_MAX_LENGTH
|
31
37
|
from zenml.enums import ArtifactType, GenericFilterOps
|
32
38
|
from zenml.logger import get_logger
|
33
|
-
from zenml.
|
39
|
+
from zenml.metadata.metadata_types import MetadataType
|
34
40
|
from zenml.models.v2.base.filter import StrFilter
|
35
41
|
from zenml.models.v2.base.scoped import (
|
36
42
|
WorkspaceScopedRequest,
|
@@ -64,11 +70,16 @@ logger = get_logger(__name__)
|
|
64
70
|
class ArtifactVersionRequest(WorkspaceScopedRequest):
|
65
71
|
"""Request model for artifact versions."""
|
66
72
|
|
67
|
-
artifact_id: UUID = Field(
|
73
|
+
artifact_id: Optional[UUID] = Field(
|
74
|
+
default=None,
|
68
75
|
title="ID of the artifact to which this version belongs.",
|
69
76
|
)
|
70
|
-
|
71
|
-
|
77
|
+
artifact_name: Optional[str] = Field(
|
78
|
+
default=None,
|
79
|
+
title="Name of the artifact to which this version belongs.",
|
80
|
+
)
|
81
|
+
version: Optional[Union[int, str]] = Field(
|
82
|
+
default=None, title="Version of the artifact."
|
72
83
|
)
|
73
84
|
has_custom_name: bool = Field(
|
74
85
|
title="Whether the name is custom (True) or auto-generated (False).",
|
@@ -96,6 +107,9 @@ class ArtifactVersionRequest(WorkspaceScopedRequest):
|
|
96
107
|
visualizations: Optional[List["ArtifactVisualizationRequest"]] = Field(
|
97
108
|
default=None, title="Visualizations of the artifact."
|
98
109
|
)
|
110
|
+
metadata: Optional[Dict[str, MetadataType]] = Field(
|
111
|
+
default=None, title="Metadata of the artifact version."
|
112
|
+
)
|
99
113
|
|
100
114
|
@field_validator("version")
|
101
115
|
@classmethod
|
@@ -118,6 +132,28 @@ class ArtifactVersionRequest(WorkspaceScopedRequest):
|
|
118
132
|
)
|
119
133
|
return value
|
120
134
|
|
135
|
+
@model_validator(mode="after")
|
136
|
+
def _validate_request(self) -> "ArtifactVersionRequest":
|
137
|
+
"""Validate the request values.
|
138
|
+
|
139
|
+
Raises:
|
140
|
+
ValueError: If the request is invalid.
|
141
|
+
|
142
|
+
Returns:
|
143
|
+
The validated request.
|
144
|
+
"""
|
145
|
+
if self.artifact_id and self.artifact_name:
|
146
|
+
raise ValueError(
|
147
|
+
"Only one of artifact_name and artifact_id can be set."
|
148
|
+
)
|
149
|
+
|
150
|
+
if not (self.artifact_id or self.artifact_name):
|
151
|
+
raise ValueError(
|
152
|
+
"Either artifact_name or artifact_id must be set."
|
153
|
+
)
|
154
|
+
|
155
|
+
return self
|
156
|
+
|
121
157
|
|
122
158
|
# ------------------ Update Model ------------------
|
123
159
|
|
@@ -157,6 +193,10 @@ class ArtifactVersionResponseBody(WorkspaceScopedResponseBody):
|
|
157
193
|
title="The ID of the pipeline run that generated this artifact version.",
|
158
194
|
default=None,
|
159
195
|
)
|
196
|
+
artifact_store_id: Optional[UUID] = Field(
|
197
|
+
title="ID of the artifact store in which this artifact is stored.",
|
198
|
+
default=None,
|
199
|
+
)
|
160
200
|
|
161
201
|
@field_validator("version")
|
162
202
|
@classmethod
|
@@ -183,10 +223,6 @@ class ArtifactVersionResponseBody(WorkspaceScopedResponseBody):
|
|
183
223
|
class ArtifactVersionResponseMetadata(WorkspaceScopedResponseMetadata):
|
184
224
|
"""Response metadata for artifact versions."""
|
185
225
|
|
186
|
-
artifact_store_id: Optional[UUID] = Field(
|
187
|
-
title="ID of the artifact store in which this artifact is stored.",
|
188
|
-
default=None,
|
189
|
-
)
|
190
226
|
producer_step_run_id: Optional[UUID] = Field(
|
191
227
|
title="ID of the step run that produced this artifact.",
|
192
228
|
default=None,
|
@@ -284,7 +320,7 @@ class ArtifactVersionResponse(
|
|
284
320
|
Returns:
|
285
321
|
the value of the property.
|
286
322
|
"""
|
287
|
-
return self.
|
323
|
+
return self.get_body().artifact_store_id
|
288
324
|
|
289
325
|
@property
|
290
326
|
def producer_step_run_id(self) -> Optional[UUID]:
|
@@ -401,18 +437,6 @@ class ArtifactVersionResponse(
|
|
401
437
|
overwrite=overwrite,
|
402
438
|
)
|
403
439
|
|
404
|
-
def read(self) -> Any:
|
405
|
-
"""(Deprecated) Materializes (loads) the data stored in this artifact.
|
406
|
-
|
407
|
-
Returns:
|
408
|
-
The materialized data.
|
409
|
-
"""
|
410
|
-
logger.warning(
|
411
|
-
"`artifact.read()` is deprecated and will be removed in a future "
|
412
|
-
"release. Please use `artifact.load()` instead."
|
413
|
-
)
|
414
|
-
return self.load()
|
415
|
-
|
416
440
|
def visualize(self, title: Optional[str] = None) -> None:
|
417
441
|
"""Visualize the artifact in notebook environments.
|
418
442
|
|
@@ -569,7 +593,9 @@ class ArtifactVersionFilter(WorkspaceScopedTaggableFilter):
|
|
569
593
|
user_filter = and_(
|
570
594
|
ArtifactVersionSchema.user_id == UserSchema.id,
|
571
595
|
self.generate_name_or_id_query_conditions(
|
572
|
-
value=self.user,
|
596
|
+
value=self.user,
|
597
|
+
table=UserSchema,
|
598
|
+
additional_columns=["full_name"],
|
573
599
|
),
|
574
600
|
)
|
575
601
|
custom_filters.append(user_filter)
|
@@ -623,7 +649,8 @@ class LazyArtifactVersionResponse(ArtifactVersionResponse):
|
|
623
649
|
id: Optional[UUID] = None # type: ignore[assignment]
|
624
650
|
lazy_load_name: Optional[str] = None
|
625
651
|
lazy_load_version: Optional[str] = None
|
626
|
-
|
652
|
+
lazy_load_model_name: str
|
653
|
+
lazy_load_model_version: Optional[str] = None
|
627
654
|
|
628
655
|
def get_body(self) -> None: # type: ignore[override]
|
629
656
|
"""Protects from misuse of the lazy loader.
|
@@ -653,7 +680,8 @@ class LazyArtifactVersionResponse(ArtifactVersionResponse):
|
|
653
680
|
from zenml.metadata.lazy_load import RunMetadataLazyGetter
|
654
681
|
|
655
682
|
return RunMetadataLazyGetter( # type: ignore[return-value]
|
656
|
-
self.
|
683
|
+
self.lazy_load_model_name,
|
684
|
+
self.lazy_load_model_version,
|
657
685
|
self.lazy_load_name,
|
658
686
|
self.lazy_load_version,
|
659
687
|
)
|
@@ -44,9 +44,7 @@ if TYPE_CHECKING:
|
|
44
44
|
from sqlalchemy.sql.elements import ColumnElement
|
45
45
|
from sqlmodel import SQLModel
|
46
46
|
|
47
|
-
from zenml.models
|
48
|
-
ServiceConnectorResponse,
|
49
|
-
)
|
47
|
+
from zenml.models import FlavorResponse, ServiceConnectorResponse
|
50
48
|
|
51
49
|
# ------------------ Base Model ------------------
|
52
50
|
|
@@ -139,22 +137,11 @@ class InternalComponentRequest(ComponentRequest):
|
|
139
137
|
class ComponentUpdate(BaseUpdate):
|
140
138
|
"""Update model for stack components."""
|
141
139
|
|
142
|
-
ANALYTICS_FIELDS: ClassVar[List[str]] = ["type", "flavor"]
|
143
|
-
|
144
140
|
name: Optional[str] = Field(
|
145
141
|
title="The name of the stack component.",
|
146
142
|
max_length=STR_FIELD_MAX_LENGTH,
|
147
143
|
default=None,
|
148
144
|
)
|
149
|
-
type: Optional[StackComponentType] = Field(
|
150
|
-
title="The type of the stack component.",
|
151
|
-
default=None,
|
152
|
-
)
|
153
|
-
flavor: Optional[str] = Field(
|
154
|
-
title="The flavor of the stack component.",
|
155
|
-
max_length=STR_FIELD_MAX_LENGTH,
|
156
|
-
default=None,
|
157
|
-
)
|
158
145
|
configuration: Optional[Dict[str, Any]] = Field(
|
159
146
|
title="The stack component configuration.",
|
160
147
|
default=None,
|
@@ -187,7 +174,7 @@ class ComponentResponseBody(WorkspaceScopedResponseBody):
|
|
187
174
|
type: StackComponentType = Field(
|
188
175
|
title="The type of the stack component.",
|
189
176
|
)
|
190
|
-
|
177
|
+
flavor_name: str = Field(
|
191
178
|
title="The flavor of the stack component.",
|
192
179
|
max_length=STR_FIELD_MAX_LENGTH,
|
193
180
|
)
|
@@ -232,6 +219,10 @@ class ComponentResponseMetadata(WorkspaceScopedResponseMetadata):
|
|
232
219
|
class ComponentResponseResources(WorkspaceScopedResponseResources):
|
233
220
|
"""Class for all resource models associated with the component entity."""
|
234
221
|
|
222
|
+
flavor: "FlavorResponse" = Field(
|
223
|
+
title="The flavor of this stack component.",
|
224
|
+
)
|
225
|
+
|
235
226
|
|
236
227
|
class ComponentResponse(
|
237
228
|
WorkspaceScopedResponse[
|
@@ -242,7 +233,7 @@ class ComponentResponse(
|
|
242
233
|
):
|
243
234
|
"""Response model for components."""
|
244
235
|
|
245
|
-
ANALYTICS_FIELDS: ClassVar[List[str]] = ["type"
|
236
|
+
ANALYTICS_FIELDS: ClassVar[List[str]] = ["type"]
|
246
237
|
|
247
238
|
name: str = Field(
|
248
239
|
title="The name of the stack component.",
|
@@ -265,6 +256,8 @@ class ComponentResponse(
|
|
265
256
|
if label.startswith("zenml:")
|
266
257
|
}
|
267
258
|
)
|
259
|
+
metadata["flavor"] = self.flavor_name
|
260
|
+
|
268
261
|
return metadata
|
269
262
|
|
270
263
|
def get_hydrated_version(self) -> "ComponentResponse":
|
@@ -288,13 +281,13 @@ class ComponentResponse(
|
|
288
281
|
return self.get_body().type
|
289
282
|
|
290
283
|
@property
|
291
|
-
def
|
292
|
-
"""The `
|
284
|
+
def flavor_name(self) -> str:
|
285
|
+
"""The `flavor_name` property.
|
293
286
|
|
294
287
|
Returns:
|
295
288
|
the value of the property.
|
296
289
|
"""
|
297
|
-
return self.get_body().
|
290
|
+
return self.get_body().flavor_name
|
298
291
|
|
299
292
|
@property
|
300
293
|
def integration(self) -> Optional[str]:
|
@@ -359,6 +352,15 @@ class ComponentResponse(
|
|
359
352
|
"""
|
360
353
|
return self.get_metadata().connector
|
361
354
|
|
355
|
+
@property
|
356
|
+
def flavor(self) -> "FlavorResponse":
|
357
|
+
"""The `flavor` property.
|
358
|
+
|
359
|
+
Returns:
|
360
|
+
the value of the property.
|
361
|
+
"""
|
362
|
+
return self.get_resources().flavor
|
363
|
+
|
362
364
|
|
363
365
|
# ------------------ Filter Model ------------------
|
364
366
|
|
@@ -376,6 +378,7 @@ class ComponentFilter(WorkspaceScopedFilter):
|
|
376
378
|
*WorkspaceScopedFilter.FILTER_EXCLUDE_FIELDS,
|
377
379
|
"scope_type",
|
378
380
|
"stack_id",
|
381
|
+
"user",
|
379
382
|
]
|
380
383
|
CLI_EXCLUDE_FIELDS: ClassVar[List[str]] = [
|
381
384
|
*WorkspaceScopedFilter.CLI_EXCLUDE_FIELDS,
|
@@ -418,6 +421,10 @@ class ComponentFilter(WorkspaceScopedFilter):
|
|
418
421
|
description="Stack of the stack component",
|
419
422
|
union_mode="left_to_right",
|
420
423
|
)
|
424
|
+
user: Optional[Union[UUID, str]] = Field(
|
425
|
+
default=None,
|
426
|
+
description="Name/ID of the user that created the component.",
|
427
|
+
)
|
421
428
|
|
422
429
|
def set_scope_type(self, component_type: str) -> None:
|
423
430
|
"""Set the type of component on which to perform the filtering to scope the response.
|
@@ -464,3 +471,31 @@ class ComponentFilter(WorkspaceScopedFilter):
|
|
464
471
|
base_filter = operator(base_filter, stack_filter)
|
465
472
|
|
466
473
|
return base_filter
|
474
|
+
|
475
|
+
def get_custom_filters(self) -> List["ColumnElement[bool]"]:
|
476
|
+
"""Get custom filters.
|
477
|
+
|
478
|
+
Returns:
|
479
|
+
A list of custom filters.
|
480
|
+
"""
|
481
|
+
from sqlmodel import and_
|
482
|
+
|
483
|
+
from zenml.zen_stores.schemas import (
|
484
|
+
StackComponentSchema,
|
485
|
+
UserSchema,
|
486
|
+
)
|
487
|
+
|
488
|
+
custom_filters = super().get_custom_filters()
|
489
|
+
|
490
|
+
if self.user:
|
491
|
+
user_filter = and_(
|
492
|
+
StackComponentSchema.user_id == UserSchema.id,
|
493
|
+
self.generate_name_or_id_query_conditions(
|
494
|
+
value=self.user,
|
495
|
+
table=UserSchema,
|
496
|
+
additional_columns=["full_name"],
|
497
|
+
),
|
498
|
+
)
|
499
|
+
custom_filters.append(user_filter)
|
500
|
+
|
501
|
+
return custom_filters
|
zenml/models/v2/core/flavor.py
CHANGED
@@ -192,6 +192,10 @@ class FlavorResponseBody(UserScopedResponseBody):
|
|
192
192
|
title="The name of the integration that the Flavor belongs to.",
|
193
193
|
max_length=STR_FIELD_MAX_LENGTH,
|
194
194
|
)
|
195
|
+
source: str = Field(
|
196
|
+
title="The path to the module which contains this Flavor.",
|
197
|
+
max_length=STR_FIELD_MAX_LENGTH,
|
198
|
+
)
|
195
199
|
logo_url: Optional[str] = Field(
|
196
200
|
default=None,
|
197
201
|
title="Optionally, a url pointing to a png,"
|
@@ -225,10 +229,6 @@ class FlavorResponseMetadata(UserScopedResponseMetadata):
|
|
225
229
|
"connector.",
|
226
230
|
max_length=STR_FIELD_MAX_LENGTH,
|
227
231
|
)
|
228
|
-
source: str = Field(
|
229
|
-
title="The path to the module which contains this Flavor.",
|
230
|
-
max_length=STR_FIELD_MAX_LENGTH,
|
231
|
-
)
|
232
232
|
docs_url: Optional[str] = Field(
|
233
233
|
default=None,
|
234
234
|
title="Optionally, a url pointing to docs, within docs.zenml.io.",
|
@@ -319,6 +319,15 @@ class FlavorResponse(
|
|
319
319
|
"""
|
320
320
|
return self.get_body().integration
|
321
321
|
|
322
|
+
@property
|
323
|
+
def source(self) -> str:
|
324
|
+
"""The `source` property.
|
325
|
+
|
326
|
+
Returns:
|
327
|
+
the value of the property.
|
328
|
+
"""
|
329
|
+
return self.get_body().source
|
330
|
+
|
322
331
|
@property
|
323
332
|
def logo_url(self) -> Optional[str]:
|
324
333
|
"""The `logo_url` property.
|
@@ -373,15 +382,6 @@ class FlavorResponse(
|
|
373
382
|
"""
|
374
383
|
return self.get_metadata().connector_resource_id_attr
|
375
384
|
|
376
|
-
@property
|
377
|
-
def source(self) -> str:
|
378
|
-
"""The `source` property.
|
379
|
-
|
380
|
-
Returns:
|
381
|
-
the value of the property.
|
382
|
-
"""
|
383
|
-
return self.get_metadata().source
|
384
|
-
|
385
385
|
@property
|
386
386
|
def docs_url(self) -> Optional[str]:
|
387
387
|
"""The `docs_url` property.
|