zenml-nightly 0.66.0.dev20240927__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/__init__.py +6 -2
- 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.dev20240927.dist-info → zenml_nightly-0.68.1.dev20241102.dist-info}/METADATA +20 -18
- {zenml_nightly-0.66.0.dev20240927.dist-info → zenml_nightly-0.68.1.dev20241102.dist-info}/RECORD +344 -506
- {zenml_nightly-0.66.0.dev20240927.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.dev20240927.dist-info → zenml_nightly-0.68.1.dev20241102.dist-info}/LICENSE +0 -0
- {zenml_nightly-0.66.0.dev20240927.dist-info → zenml_nightly-0.68.1.dev20241102.dist-info}/entry_points.txt +0 -0
@@ -403,7 +403,7 @@ class BuiltInContainerMaterializer(BaseMaterializer):
|
|
403
403
|
yaml_utils.write_json(self.metadata_path, metadata)
|
404
404
|
# Materialize each element.
|
405
405
|
for element, materializer in zip(data, materializers):
|
406
|
-
materializer.
|
406
|
+
materializer.validate_save_type_compatibility(type(element))
|
407
407
|
materializer.save(element)
|
408
408
|
# If an error occurs, delete all created files.
|
409
409
|
except Exception as e:
|
@@ -0,0 +1,79 @@
|
|
1
|
+
# Copyright (c) ZenML GmbH 2024. All Rights Reserved.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at:
|
6
|
+
#
|
7
|
+
# https://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
|
12
|
+
# or implied. See the License for the specific language governing
|
13
|
+
# permissions and limitations under the License.
|
14
|
+
"""Implementation of ZenML's UUID materializer."""
|
15
|
+
|
16
|
+
import os
|
17
|
+
import uuid
|
18
|
+
from typing import Any, ClassVar, Dict, Optional, Tuple, Type
|
19
|
+
|
20
|
+
from zenml.artifact_stores.base_artifact_store import BaseArtifactStore
|
21
|
+
from zenml.enums import ArtifactType
|
22
|
+
from zenml.materializers.base_materializer import BaseMaterializer
|
23
|
+
from zenml.metadata.metadata_types import MetadataType
|
24
|
+
|
25
|
+
DEFAULT_FILENAME = "uuid.txt"
|
26
|
+
|
27
|
+
|
28
|
+
class UUIDMaterializer(BaseMaterializer):
|
29
|
+
"""Materializer to handle UUID objects."""
|
30
|
+
|
31
|
+
ASSOCIATED_TYPES: ClassVar[Tuple[Type[Any], ...]] = (uuid.UUID,)
|
32
|
+
ASSOCIATED_ARTIFACT_TYPE: ClassVar[ArtifactType] = ArtifactType.DATA
|
33
|
+
|
34
|
+
def __init__(
|
35
|
+
self, uri: str, artifact_store: Optional[BaseArtifactStore] = None
|
36
|
+
):
|
37
|
+
"""Define `self.data_path`.
|
38
|
+
|
39
|
+
Args:
|
40
|
+
uri: The URI where the artifact data is stored.
|
41
|
+
artifact_store: The artifact store where the artifact data is stored.
|
42
|
+
"""
|
43
|
+
super().__init__(uri, artifact_store)
|
44
|
+
self.data_path = os.path.join(self.uri, DEFAULT_FILENAME)
|
45
|
+
|
46
|
+
def load(self, _: Type[uuid.UUID]) -> uuid.UUID:
|
47
|
+
"""Read UUID from artifact store.
|
48
|
+
|
49
|
+
Args:
|
50
|
+
_: The type of the data to be loaded.
|
51
|
+
|
52
|
+
Returns:
|
53
|
+
The loaded UUID.
|
54
|
+
"""
|
55
|
+
with self.artifact_store.open(self.data_path, "r") as f:
|
56
|
+
uuid_str = f.read().strip()
|
57
|
+
return uuid.UUID(uuid_str)
|
58
|
+
|
59
|
+
def save(self, data: uuid.UUID) -> None:
|
60
|
+
"""Write UUID to artifact store.
|
61
|
+
|
62
|
+
Args:
|
63
|
+
data: The UUID to be saved.
|
64
|
+
"""
|
65
|
+
with self.artifact_store.open(self.data_path, "w") as f:
|
66
|
+
f.write(str(data))
|
67
|
+
|
68
|
+
def extract_metadata(self, data: uuid.UUID) -> Dict[str, MetadataType]:
|
69
|
+
"""Extract metadata from the UUID.
|
70
|
+
|
71
|
+
Args:
|
72
|
+
data: The UUID to extract metadata from.
|
73
|
+
|
74
|
+
Returns:
|
75
|
+
A dictionary of metadata extracted from the UUID.
|
76
|
+
"""
|
77
|
+
return {
|
78
|
+
"string_representation": str(data),
|
79
|
+
}
|
zenml/metadata/lazy_load.py
CHANGED
@@ -16,7 +16,6 @@
|
|
16
16
|
from typing import TYPE_CHECKING, Optional
|
17
17
|
|
18
18
|
if TYPE_CHECKING:
|
19
|
-
from zenml.model.model import Model
|
20
19
|
from zenml.models import RunMetadataResponse
|
21
20
|
|
22
21
|
|
@@ -30,18 +29,21 @@ class RunMetadataLazyGetter:
|
|
30
29
|
|
31
30
|
def __init__(
|
32
31
|
self,
|
33
|
-
|
34
|
-
|
35
|
-
|
32
|
+
_lazy_load_model_name: str,
|
33
|
+
_lazy_load_model_version: Optional[str],
|
34
|
+
_lazy_load_artifact_name: Optional[str] = None,
|
35
|
+
_lazy_load_artifact_version: Optional[str] = None,
|
36
36
|
):
|
37
37
|
"""Initialize a RunMetadataLazyGetter.
|
38
38
|
|
39
39
|
Args:
|
40
|
-
|
40
|
+
_lazy_load_model_name: The model name.
|
41
|
+
_lazy_load_model_version: The model version.
|
41
42
|
_lazy_load_artifact_name: The artifact name.
|
42
43
|
_lazy_load_artifact_version: The artifact version.
|
43
44
|
"""
|
44
|
-
self.
|
45
|
+
self._lazy_load_model_name = _lazy_load_model_name
|
46
|
+
self._lazy_load_model_version = _lazy_load_model_version
|
45
47
|
self._lazy_load_artifact_name = _lazy_load_artifact_name
|
46
48
|
self._lazy_load_artifact_version = _lazy_load_artifact_version
|
47
49
|
|
@@ -57,7 +59,8 @@ class RunMetadataLazyGetter:
|
|
57
59
|
from zenml.models.v2.core.run_metadata import LazyRunMetadataResponse
|
58
60
|
|
59
61
|
return LazyRunMetadataResponse(
|
60
|
-
|
62
|
+
lazy_load_model_name=self._lazy_load_model_name,
|
63
|
+
lazy_load_model_version=self._lazy_load_model_version,
|
61
64
|
lazy_load_artifact_name=self._lazy_load_artifact_name,
|
62
65
|
lazy_load_artifact_version=self._lazy_load_artifact_version,
|
63
66
|
lazy_load_metadata_name=key,
|
zenml/metadata/metadata_types.py
CHANGED
@@ -13,13 +13,18 @@
|
|
13
13
|
# permissions and limitations under the License.
|
14
14
|
"""Custom types that can be used as metadata of ZenML artifacts."""
|
15
15
|
|
16
|
+
import json
|
16
17
|
from typing import Any, Dict, List, Set, Tuple, Union
|
17
18
|
|
18
19
|
from pydantic import GetCoreSchemaHandler
|
19
20
|
from pydantic_core import CoreSchema, core_schema
|
20
21
|
|
22
|
+
from zenml.constants import STR_FIELD_MAX_LENGTH, TEXT_FIELD_MAX_LENGTH
|
23
|
+
from zenml.logger import get_logger
|
21
24
|
from zenml.utils.enum_utils import StrEnum
|
22
25
|
|
26
|
+
logger = get_logger(__name__)
|
27
|
+
|
23
28
|
|
24
29
|
class Uri(str):
|
25
30
|
"""Special string class to indicate a URI."""
|
@@ -203,3 +208,47 @@ def cast_to_metadata_type(
|
|
203
208
|
metadata_type = metadata_enum_to_type_mapping[type_]
|
204
209
|
typed_value = metadata_type(value)
|
205
210
|
return typed_value # type: ignore[no-any-return]
|
211
|
+
|
212
|
+
|
213
|
+
def validate_metadata(
|
214
|
+
metadata: Dict[str, MetadataType],
|
215
|
+
) -> Dict[str, MetadataType]:
|
216
|
+
"""Validate metadata.
|
217
|
+
|
218
|
+
This function excludes and warns about metadata values that are too long
|
219
|
+
or of an unsupported type.
|
220
|
+
|
221
|
+
Args:
|
222
|
+
metadata: The metadata to validate.
|
223
|
+
|
224
|
+
Returns:
|
225
|
+
The validated metadata.
|
226
|
+
"""
|
227
|
+
validated_metadata = {}
|
228
|
+
|
229
|
+
for key, value in metadata.items():
|
230
|
+
if len(key) > STR_FIELD_MAX_LENGTH:
|
231
|
+
logger.warning(
|
232
|
+
f"Metadata key '{key}' is too large to be "
|
233
|
+
"stored in the database. Skipping."
|
234
|
+
)
|
235
|
+
continue
|
236
|
+
|
237
|
+
if len(json.dumps(value)) > TEXT_FIELD_MAX_LENGTH:
|
238
|
+
logger.warning(
|
239
|
+
f"Metadata value for key '{key}' is too large to be "
|
240
|
+
"stored in the database. Skipping."
|
241
|
+
)
|
242
|
+
continue
|
243
|
+
|
244
|
+
try:
|
245
|
+
get_metadata_type(value)
|
246
|
+
except ValueError as e:
|
247
|
+
logger.warning(
|
248
|
+
f"Metadata value for key '{key}' is not of a supported "
|
249
|
+
f"type. Skipping. Full error: {e}"
|
250
|
+
)
|
251
|
+
|
252
|
+
validated_metadata[key] = value
|
253
|
+
|
254
|
+
return validated_metadata
|
zenml/model/lazy_load.py
CHANGED
@@ -13,11 +13,15 @@
|
|
13
13
|
# permissions and limitations under the License.
|
14
14
|
"""Model Version Data Lazy Loader definition."""
|
15
15
|
|
16
|
-
from typing import Optional
|
16
|
+
from typing import TYPE_CHECKING, Any, Dict, Optional
|
17
17
|
|
18
|
-
from pydantic import BaseModel
|
18
|
+
from pydantic import BaseModel, ConfigDict, model_validator
|
19
19
|
|
20
|
-
from zenml.
|
20
|
+
from zenml.pipelines.pipeline_context import get_pipeline_context
|
21
|
+
from zenml.utils.pydantic_utils import before_validator_handler
|
22
|
+
|
23
|
+
if TYPE_CHECKING:
|
24
|
+
from zenml.models import ModelVersionResponse, PipelineRunResponse
|
21
25
|
|
22
26
|
|
23
27
|
class ModelVersionDataLazyLoader(BaseModel):
|
@@ -28,7 +32,84 @@ class ModelVersionDataLazyLoader(BaseModel):
|
|
28
32
|
model version during runtime time of the step.
|
29
33
|
"""
|
30
34
|
|
31
|
-
|
35
|
+
model_name: str
|
36
|
+
model_version: Optional[str] = None
|
32
37
|
artifact_name: Optional[str] = None
|
33
38
|
artifact_version: Optional[str] = None
|
34
39
|
metadata_name: Optional[str] = None
|
40
|
+
|
41
|
+
# TODO: In Pydantic v2, the `model_` is a protected namespaces for all
|
42
|
+
# fields defined under base models. If not handled, this raises a warning.
|
43
|
+
# It is possible to suppress this warning message with the following
|
44
|
+
# configuration, however the ultimate solution is to rename these fields.
|
45
|
+
# Even though they do not cause any problems right now, if we are not
|
46
|
+
# careful we might overwrite some fields protected by pydantic.
|
47
|
+
model_config = ConfigDict(protected_namespaces=())
|
48
|
+
|
49
|
+
@model_validator(mode="before")
|
50
|
+
@classmethod
|
51
|
+
@before_validator_handler
|
52
|
+
def _root_validator(cls, data: Dict[str, Any]) -> Dict[str, Any]:
|
53
|
+
"""Validate all in one.
|
54
|
+
|
55
|
+
Args:
|
56
|
+
data: Dict of values.
|
57
|
+
|
58
|
+
Returns:
|
59
|
+
Dict of validated values.
|
60
|
+
|
61
|
+
Raises:
|
62
|
+
ValueError: If the model version id, but call is not internal.
|
63
|
+
"""
|
64
|
+
if data.get("model_version", None) is None:
|
65
|
+
try:
|
66
|
+
context = get_pipeline_context()
|
67
|
+
if (
|
68
|
+
not context.model
|
69
|
+
or context.model.name != data["model_name"]
|
70
|
+
):
|
71
|
+
raise ValueError(
|
72
|
+
"`version` must be set if you use the `Model` class "
|
73
|
+
"directly in the pipeline body, otherwise, you can use "
|
74
|
+
"`get_pipeline_context().model` to lazy load the current "
|
75
|
+
"Model Version from the pipeline context."
|
76
|
+
)
|
77
|
+
except RuntimeError:
|
78
|
+
pass
|
79
|
+
data["suppress_class_validation_warnings"] = True
|
80
|
+
return data
|
81
|
+
|
82
|
+
def _get_model_response(
|
83
|
+
self, pipeline_run: "PipelineRunResponse"
|
84
|
+
) -> "ModelVersionResponse":
|
85
|
+
# if the version/number is None -> return the model in context
|
86
|
+
if self.model_version is None:
|
87
|
+
if mv := pipeline_run.model_version:
|
88
|
+
if mv.model.name != self.model_name:
|
89
|
+
raise RuntimeError(
|
90
|
+
"Lazy loading of the model failed, since given name "
|
91
|
+
f"`{self.model_name}` does not match the model name "
|
92
|
+
f"in the pipeline context: `{mv.model.name}`."
|
93
|
+
)
|
94
|
+
return mv
|
95
|
+
else:
|
96
|
+
raise RuntimeError(
|
97
|
+
"Lazy loading of the model failed, since the model version "
|
98
|
+
"is not set in the pipeline context."
|
99
|
+
)
|
100
|
+
|
101
|
+
# else return the model version by version
|
102
|
+
else:
|
103
|
+
from zenml.client import Client
|
104
|
+
|
105
|
+
try:
|
106
|
+
return Client().get_model_version(
|
107
|
+
model_name_or_id=self.model_name,
|
108
|
+
model_version_name_or_number_or_id=self.model_version,
|
109
|
+
)
|
110
|
+
except KeyError as e:
|
111
|
+
raise RuntimeError(
|
112
|
+
"Lazy loading of the model version failed: "
|
113
|
+
f"no model `{self.model_name}` with version "
|
114
|
+
f"`{self.model_version}` could be found."
|
115
|
+
) from e
|
zenml/model/model.py
CHANGED
@@ -21,6 +21,7 @@ from typing import (
|
|
21
21
|
Dict,
|
22
22
|
List,
|
23
23
|
Optional,
|
24
|
+
Tuple,
|
24
25
|
Union,
|
25
26
|
)
|
26
27
|
from uuid import UUID
|
@@ -31,6 +32,7 @@ from zenml.constants import MAX_RETRIES_FOR_VERSIONED_ENTITY_CREATION
|
|
31
32
|
from zenml.enums import MetadataResourceTypes, ModelStages
|
32
33
|
from zenml.exceptions import EntityExistsError
|
33
34
|
from zenml.logger import get_logger
|
35
|
+
from zenml.pipelines.pipeline_context import get_pipeline_context
|
34
36
|
from zenml.utils.pydantic_utils import before_validator_handler
|
35
37
|
from zenml.utils.string_utils import format_name_template
|
36
38
|
|
@@ -64,8 +66,6 @@ class Model(BaseModel):
|
|
64
66
|
to a specific version/stage. If skipped new version will be created.
|
65
67
|
save_models_to_registry: Whether to save all ModelArtifacts to Model Registry,
|
66
68
|
if available in active stack.
|
67
|
-
model_version_id: The ID of a specific Model Version, if given - it will override
|
68
|
-
`name` and `version` settings. Used mostly internally.
|
69
69
|
"""
|
70
70
|
|
71
71
|
name: str
|
@@ -81,13 +81,13 @@ class Model(BaseModel):
|
|
81
81
|
default=None, union_mode="smart"
|
82
82
|
)
|
83
83
|
save_models_to_registry: bool = True
|
84
|
-
model_version_id: Optional[UUID] = None
|
85
84
|
|
85
|
+
# technical attributes
|
86
|
+
model_version_id: Optional[UUID] = None
|
86
87
|
suppress_class_validation_warnings: bool = False
|
87
|
-
was_created_in_this_run: bool = False
|
88
|
-
|
89
88
|
_model_id: UUID = PrivateAttr(None)
|
90
|
-
_number: int = PrivateAttr(None)
|
89
|
+
_number: Optional[int] = PrivateAttr(None)
|
90
|
+
_created_model_version: bool = PrivateAttr(False)
|
91
91
|
|
92
92
|
# TODO: In Pydantic v2, the `model_` is a protected namespaces for all
|
93
93
|
# fields defined under base models. If not handled, this raises a warning.
|
@@ -145,15 +145,20 @@ class Model(BaseModel):
|
|
145
145
|
doesn't exist and can only be read given current
|
146
146
|
config (you used stage name or number as
|
147
147
|
a version name).
|
148
|
+
|
149
|
+
Raises:
|
150
|
+
KeyError: if model version doesn't exist and
|
151
|
+
cannot be fetched from the Model Control Plane.
|
148
152
|
"""
|
149
153
|
if self._number is None:
|
150
154
|
try:
|
151
|
-
self._get_or_create_model_version()
|
152
|
-
|
153
|
-
|
155
|
+
mv = self._get_or_create_model_version()
|
156
|
+
self._number = mv.number
|
157
|
+
except RuntimeError as e:
|
158
|
+
raise KeyError(
|
154
159
|
f"Version `{self.version}` of `{self.name}` model doesn't "
|
155
160
|
"exist and cannot be fetched from the Model Control Plane."
|
156
|
-
)
|
161
|
+
) from e
|
157
162
|
return self._number
|
158
163
|
|
159
164
|
@property
|
@@ -354,17 +359,13 @@ class Model(BaseModel):
|
|
354
359
|
RuntimeError: If the model version run metadata cannot be fetched.
|
355
360
|
"""
|
356
361
|
from zenml.metadata.lazy_load import RunMetadataLazyGetter
|
357
|
-
from zenml.new.pipelines.pipeline_context import (
|
358
|
-
get_pipeline_context,
|
359
|
-
)
|
360
362
|
|
361
363
|
try:
|
362
364
|
get_pipeline_context()
|
363
365
|
# avoid exposing too much of internal details by keeping the return type
|
364
366
|
return RunMetadataLazyGetter( # type: ignore[return-value]
|
365
|
-
self,
|
366
|
-
|
367
|
-
None,
|
367
|
+
self.name,
|
368
|
+
self._lazy_version,
|
368
369
|
)
|
369
370
|
except RuntimeError:
|
370
371
|
pass
|
@@ -376,20 +377,6 @@ class Model(BaseModel):
|
|
376
377
|
)
|
377
378
|
return response.run_metadata
|
378
379
|
|
379
|
-
# TODO: deprecate me
|
380
|
-
@property
|
381
|
-
def metadata(self) -> Dict[str, "MetadataType"]:
|
382
|
-
"""DEPRECATED, use `run_metadata` instead.
|
383
|
-
|
384
|
-
Returns:
|
385
|
-
The model version run metadata.
|
386
|
-
"""
|
387
|
-
logger.warning(
|
388
|
-
"Model `metadata` property is deprecated. Please use "
|
389
|
-
"`run_metadata` instead."
|
390
|
-
)
|
391
|
-
return {k: v.value for k, v in self.run_metadata.items()}
|
392
|
-
|
393
380
|
def delete_artifact(
|
394
381
|
self,
|
395
382
|
name: str,
|
@@ -461,7 +448,6 @@ class Model(BaseModel):
|
|
461
448
|
name: str,
|
462
449
|
version: Optional[str] = None,
|
463
450
|
) -> Optional["ArtifactVersionResponse"]:
|
464
|
-
from zenml import get_pipeline_context
|
465
451
|
from zenml.models.v2.core.artifact_version import (
|
466
452
|
LazyArtifactVersionResponse,
|
467
453
|
)
|
@@ -471,9 +457,8 @@ class Model(BaseModel):
|
|
471
457
|
return LazyArtifactVersionResponse(
|
472
458
|
lazy_load_name=name,
|
473
459
|
lazy_load_version=version,
|
474
|
-
|
475
|
-
|
476
|
-
),
|
460
|
+
lazy_load_model_name=self.name,
|
461
|
+
lazy_load_model_version=self._lazy_version,
|
477
462
|
)
|
478
463
|
except RuntimeError:
|
479
464
|
pass
|
@@ -510,14 +495,21 @@ class Model(BaseModel):
|
|
510
495
|
|
511
496
|
Returns:
|
512
497
|
Dict of validated values.
|
498
|
+
|
499
|
+
Raises:
|
500
|
+
ValueError: If the model version id, but call is not internal.
|
513
501
|
"""
|
514
|
-
suppress_class_validation_warnings = (
|
515
|
-
|
516
|
-
|
517
|
-
False,
|
518
|
-
)
|
519
|
-
or data.get("model_version_id", None) is not None
|
502
|
+
suppress_class_validation_warnings = data.get(
|
503
|
+
"suppress_class_validation_warnings",
|
504
|
+
False,
|
520
505
|
)
|
506
|
+
if not suppress_class_validation_warnings and data.get(
|
507
|
+
"model_version_id", None
|
508
|
+
):
|
509
|
+
raise ValueError(
|
510
|
+
"`model_version_id` field is for internal use only"
|
511
|
+
)
|
512
|
+
|
521
513
|
version = data.get("version", None)
|
522
514
|
|
523
515
|
if (
|
@@ -576,7 +568,6 @@ class Model(BaseModel):
|
|
576
568
|
limitations=self.limitations,
|
577
569
|
trade_offs=self.trade_offs,
|
578
570
|
ethics=self.ethics,
|
579
|
-
tags=self.tags,
|
580
571
|
user=zenml_client.active_user.id,
|
581
572
|
workspace=zenml_client.active_workspace.id,
|
582
573
|
save_models_to_registry=self.save_models_to_registry,
|
@@ -699,42 +690,6 @@ class Model(BaseModel):
|
|
699
690
|
)
|
700
691
|
mv_request = ModelVersionRequest.model_validate(model_version_request)
|
701
692
|
try:
|
702
|
-
if not self.version:
|
703
|
-
try:
|
704
|
-
from zenml import get_step_context
|
705
|
-
|
706
|
-
context = get_step_context()
|
707
|
-
except RuntimeError:
|
708
|
-
pass
|
709
|
-
else:
|
710
|
-
# if inside a step context we loop over all
|
711
|
-
# model version configuration to find, if the
|
712
|
-
# model version for current model was already
|
713
|
-
# created in the current run, not to create
|
714
|
-
# new model versions
|
715
|
-
pipeline_mv = context.pipeline_run.config.model
|
716
|
-
if (
|
717
|
-
pipeline_mv
|
718
|
-
and pipeline_mv.was_created_in_this_run
|
719
|
-
and pipeline_mv.name == self.name
|
720
|
-
and pipeline_mv.version is not None
|
721
|
-
):
|
722
|
-
self.version = pipeline_mv.version
|
723
|
-
self.model_version_id = pipeline_mv.model_version_id
|
724
|
-
else:
|
725
|
-
for step in context.pipeline_run.steps.values():
|
726
|
-
step_mv = step.config.model
|
727
|
-
if (
|
728
|
-
step_mv
|
729
|
-
and step_mv.was_created_in_this_run
|
730
|
-
and step_mv.name == self.name
|
731
|
-
and step_mv.version is not None
|
732
|
-
):
|
733
|
-
self.version = step_mv.version
|
734
|
-
self.model_version_id = (
|
735
|
-
step_mv.model_version_id
|
736
|
-
)
|
737
|
-
break
|
738
693
|
if self.version or self.model_version_id:
|
739
694
|
model_version = self._get_model_version()
|
740
695
|
else:
|
@@ -791,9 +746,13 @@ class Model(BaseModel):
|
|
791
746
|
time.sleep(sleep)
|
792
747
|
retries_made += 1
|
793
748
|
self.version = model_version.name
|
794
|
-
self.
|
749
|
+
self._created_model_version = True
|
795
750
|
|
796
|
-
logger.info(
|
751
|
+
logger.info(
|
752
|
+
"Created new model version `%s` for model `%s`.",
|
753
|
+
self.version,
|
754
|
+
self.name,
|
755
|
+
)
|
797
756
|
|
798
757
|
self.model_version_id = model_version.id
|
799
758
|
self._model_id = model_version.model.id
|
@@ -836,7 +795,7 @@ class Model(BaseModel):
|
|
836
795
|
pipeline_run: "PipelineRunResponse",
|
837
796
|
step_run: Optional["StepRunResponse"],
|
838
797
|
return_logs: bool,
|
839
|
-
) -> str:
|
798
|
+
) -> Tuple[str, "PipelineRunResponse", Optional["StepRunResponse"]]:
|
840
799
|
"""Prepares model version inside pipeline run.
|
841
800
|
|
842
801
|
Args:
|
@@ -878,16 +837,17 @@ class Model(BaseModel):
|
|
878
837
|
if self_copy.model_version_id is None:
|
879
838
|
model_version_response = self_copy._get_or_create_model_version()
|
880
839
|
|
840
|
+
client = Client()
|
881
841
|
# update the configured model version id in runs accordingly
|
882
842
|
if step_run:
|
883
|
-
|
843
|
+
step_run = client.zen_store.update_run_step(
|
884
844
|
step_run_id=step_run.id,
|
885
845
|
step_run_update=StepRunUpdate(
|
886
846
|
model_version_id=model_version_response.id
|
887
847
|
),
|
888
848
|
)
|
889
849
|
else:
|
890
|
-
|
850
|
+
pipeline_run = client.zen_store.update_run(
|
891
851
|
run_id=pipeline_run.id,
|
892
852
|
run_update=PipelineRunUpdate(
|
893
853
|
model_version_id=model_version_response.id
|
@@ -907,4 +867,22 @@ class Model(BaseModel):
|
|
907
867
|
"for a free trial at https://www.zenml.io/pro/"
|
908
868
|
)
|
909
869
|
self.model_version_id = self_copy.model_version_id
|
910
|
-
return logs
|
870
|
+
return logs, pipeline_run, step_run
|
871
|
+
|
872
|
+
@property
|
873
|
+
def _lazy_version(self) -> Optional[str]:
|
874
|
+
"""Get version name for lazy loader.
|
875
|
+
|
876
|
+
This getter ensures that new model version
|
877
|
+
creation is never triggered here.
|
878
|
+
|
879
|
+
Returns:
|
880
|
+
Version name or None if it was not set
|
881
|
+
"""
|
882
|
+
if self._number is not None:
|
883
|
+
return str(self._number)
|
884
|
+
elif self.version is not None:
|
885
|
+
if isinstance(self.version, ModelStages):
|
886
|
+
return self.version.value
|
887
|
+
return str(self.version)
|
888
|
+
return None
|