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
zenml/steps/base_step.py
CHANGED
@@ -26,12 +26,10 @@ from typing import (
|
|
26
26
|
Mapping,
|
27
27
|
Optional,
|
28
28
|
Sequence,
|
29
|
-
Set,
|
30
29
|
Tuple,
|
31
30
|
Type,
|
32
31
|
TypeVar,
|
33
32
|
Union,
|
34
|
-
cast,
|
35
33
|
)
|
36
34
|
|
37
35
|
from pydantic import BaseModel, ConfigDict, ValidationError
|
@@ -40,18 +38,16 @@ from zenml.client_lazy_loader import ClientLazyLoader
|
|
40
38
|
from zenml.config.retry_config import StepRetryConfig
|
41
39
|
from zenml.config.source import Source
|
42
40
|
from zenml.constants import (
|
41
|
+
CODE_HASH_PARAMETER_NAME,
|
43
42
|
ENV_ZENML_RUN_SINGLE_STEPS_WITHOUT_STACK,
|
44
|
-
STEP_SOURCE_PARAMETER_NAME,
|
45
43
|
handle_bool_env_var,
|
46
44
|
)
|
47
|
-
from zenml.exceptions import
|
45
|
+
from zenml.exceptions import StepInterfaceError
|
48
46
|
from zenml.logger import get_logger
|
49
47
|
from zenml.materializers.base_materializer import BaseMaterializer
|
50
48
|
from zenml.materializers.materializer_registry import materializer_registry
|
51
|
-
from zenml.steps.base_parameters import BaseParameters
|
52
49
|
from zenml.steps.entrypoint_function_utils import (
|
53
50
|
StepArtifact,
|
54
|
-
get_step_entrypoint_signature,
|
55
51
|
validate_entrypoint_function,
|
56
52
|
)
|
57
53
|
from zenml.steps.utils import (
|
@@ -82,9 +78,9 @@ if TYPE_CHECKING:
|
|
82
78
|
)
|
83
79
|
from zenml.model.lazy_load import ModelVersionDataLazyLoader
|
84
80
|
from zenml.model.model import Model
|
81
|
+
from zenml.models import ArtifactVersionResponse
|
85
82
|
from zenml.types import HookSpecification
|
86
83
|
|
87
|
-
ParametersOrDict = Union["BaseParameters", Dict[str, Any]]
|
88
84
|
MaterializerClassOrSource = Union[str, Source, Type["BaseMaterializer"]]
|
89
85
|
OutputMaterializersSpecification = Union[
|
90
86
|
"MaterializerClassOrSource",
|
@@ -95,43 +91,14 @@ if TYPE_CHECKING:
|
|
95
91
|
|
96
92
|
logger = get_logger(__name__)
|
97
93
|
|
98
|
-
|
99
|
-
class BaseStepMeta(type):
|
100
|
-
"""Metaclass for `BaseStep`.
|
101
|
-
|
102
|
-
Makes sure that the entrypoint function has valid parameters and type
|
103
|
-
annotations.
|
104
|
-
"""
|
105
|
-
|
106
|
-
def __new__(
|
107
|
-
mcs, name: str, bases: Tuple[Type[Any], ...], dct: Dict[str, Any]
|
108
|
-
) -> "BaseStepMeta":
|
109
|
-
"""Set up a new class with a qualified spec.
|
110
|
-
|
111
|
-
Args:
|
112
|
-
name: The name of the class.
|
113
|
-
bases: The base classes of the class.
|
114
|
-
dct: The attributes of the class.
|
115
|
-
|
116
|
-
Returns:
|
117
|
-
The new class.
|
118
|
-
"""
|
119
|
-
cls = cast(Type["BaseStep"], super().__new__(mcs, name, bases, dct))
|
120
|
-
if name not in {"BaseStep", "_DecoratedStep"}:
|
121
|
-
validate_entrypoint_function(cls.entrypoint)
|
122
|
-
|
123
|
-
return cls
|
124
|
-
|
125
|
-
|
126
94
|
T = TypeVar("T", bound="BaseStep")
|
127
95
|
|
128
96
|
|
129
|
-
class BaseStep
|
97
|
+
class BaseStep:
|
130
98
|
"""Abstract base class for all ZenML steps."""
|
131
99
|
|
132
100
|
def __init__(
|
133
101
|
self,
|
134
|
-
*args: Any,
|
135
102
|
name: Optional[str] = None,
|
136
103
|
enable_cache: Optional[bool] = None,
|
137
104
|
enable_artifact_metadata: Optional[bool] = None,
|
@@ -139,7 +106,7 @@ class BaseStep(metaclass=BaseStepMeta):
|
|
139
106
|
enable_step_logs: Optional[bool] = None,
|
140
107
|
experiment_tracker: Optional[str] = None,
|
141
108
|
step_operator: Optional[str] = None,
|
142
|
-
parameters: Optional[
|
109
|
+
parameters: Optional[Dict[str, Any]] = None,
|
143
110
|
output_materializers: Optional[
|
144
111
|
"OutputMaterializersSpecification"
|
145
112
|
] = None,
|
@@ -149,12 +116,10 @@ class BaseStep(metaclass=BaseStepMeta):
|
|
149
116
|
on_success: Optional["HookSpecification"] = None,
|
150
117
|
model: Optional["Model"] = None,
|
151
118
|
retry: Optional[StepRetryConfig] = None,
|
152
|
-
**kwargs: Any,
|
153
119
|
) -> None:
|
154
120
|
"""Initializes a step.
|
155
121
|
|
156
122
|
Args:
|
157
|
-
*args: Positional arguments passed to the step.
|
158
123
|
name: The name of the step.
|
159
124
|
enable_cache: If caching should be enabled for this step.
|
160
125
|
enable_artifact_metadata: If artifact metadata should be enabled
|
@@ -179,30 +144,15 @@ class BaseStep(metaclass=BaseStepMeta):
|
|
179
144
|
function (e.g. `module.my_function`).
|
180
145
|
model: configuration of the model version in the Model Control Plane.
|
181
146
|
retry: Configuration for retrying the step in case of failure.
|
182
|
-
**kwargs: Keyword arguments passed to the step.
|
183
147
|
"""
|
184
148
|
from zenml.config.step_configurations import PartialStepConfiguration
|
185
149
|
|
186
|
-
self._upstream_steps: Set["BaseStep"] = set()
|
187
150
|
self.entrypoint_definition = validate_entrypoint_function(
|
188
151
|
self.entrypoint, reserved_arguments=["after", "id"]
|
189
152
|
)
|
190
153
|
|
191
154
|
name = name or self.__class__.__name__
|
192
155
|
|
193
|
-
requires_context = self.entrypoint_definition.context is not None
|
194
|
-
if enable_cache is None:
|
195
|
-
if requires_context:
|
196
|
-
# Using the StepContext inside a step provides access to
|
197
|
-
# external resources which might influence the step execution.
|
198
|
-
# We therefore disable caching unless it is explicitly enabled
|
199
|
-
enable_cache = False
|
200
|
-
logger.debug(
|
201
|
-
"Step `%s`: Step context required and caching not "
|
202
|
-
"explicitly enabled.",
|
203
|
-
name,
|
204
|
-
)
|
205
|
-
|
206
156
|
logger.debug(
|
207
157
|
"Step `%s`: Caching %s.",
|
208
158
|
name,
|
@@ -254,7 +204,6 @@ class BaseStep(metaclass=BaseStepMeta):
|
|
254
204
|
model=model,
|
255
205
|
retry=retry,
|
256
206
|
)
|
257
|
-
self._verify_and_apply_init_params(*args, **kwargs)
|
258
207
|
|
259
208
|
notebook_utils.try_to_save_notebook_cell_code(self.source_object)
|
260
209
|
|
@@ -300,45 +249,6 @@ class BaseStep(metaclass=BaseStepMeta):
|
|
300
249
|
"""
|
301
250
|
return source_utils.resolve(self.__class__)
|
302
251
|
|
303
|
-
@property
|
304
|
-
def upstream_steps(self) -> Set["BaseStep"]:
|
305
|
-
"""Names of the upstream steps of this step.
|
306
|
-
|
307
|
-
This property will only contain the full set of upstream steps once
|
308
|
-
it's parent pipeline `connect(...)` method was called.
|
309
|
-
|
310
|
-
Returns:
|
311
|
-
Set of upstream step names.
|
312
|
-
"""
|
313
|
-
return self._upstream_steps
|
314
|
-
|
315
|
-
def after(self, step: "BaseStep") -> None:
|
316
|
-
"""Adds an upstream step to this step.
|
317
|
-
|
318
|
-
Calling this method makes sure this step only starts running once the
|
319
|
-
given step has successfully finished executing.
|
320
|
-
|
321
|
-
**Note**: This can only be called inside the pipeline connect function
|
322
|
-
which is decorated with the `@pipeline` decorator. Any calls outside
|
323
|
-
this function will be ignored.
|
324
|
-
|
325
|
-
Example:
|
326
|
-
The following pipeline will run its steps sequentially in the following
|
327
|
-
order: step_2 -> step_1 -> step_3
|
328
|
-
|
329
|
-
```python
|
330
|
-
@pipeline
|
331
|
-
def example_pipeline(step_1, step_2, step_3):
|
332
|
-
step_1.after(step_2)
|
333
|
-
step_3(step_1(), step_2())
|
334
|
-
```
|
335
|
-
|
336
|
-
Args:
|
337
|
-
step: A step which should finish executing before this step is
|
338
|
-
started.
|
339
|
-
"""
|
340
|
-
self._upstream_steps.add(step)
|
341
|
-
|
342
252
|
@property
|
343
253
|
def source_object(self) -> Any:
|
344
254
|
"""The source object of this step.
|
@@ -374,7 +284,7 @@ class BaseStep(metaclass=BaseStepMeta):
|
|
374
284
|
A dictionary containing the caching parameters
|
375
285
|
"""
|
376
286
|
parameters = {
|
377
|
-
|
287
|
+
CODE_HASH_PARAMETER_NAME: source_code_utils.get_hashed_source_code(
|
378
288
|
self.source_object
|
379
289
|
)
|
380
290
|
}
|
@@ -394,70 +304,11 @@ class BaseStep(metaclass=BaseStepMeta):
|
|
394
304
|
|
395
305
|
return parameters
|
396
306
|
|
397
|
-
def _verify_and_apply_init_params(self, *args: Any, **kwargs: Any) -> None:
|
398
|
-
"""Verifies the initialization args and kwargs of this step.
|
399
|
-
|
400
|
-
This method makes sure that there is only one parameters object passed
|
401
|
-
at initialization and that it was passed using the correct name and
|
402
|
-
type specified in the step declaration.
|
403
|
-
|
404
|
-
Args:
|
405
|
-
*args: The args passed to the init method of this step.
|
406
|
-
**kwargs: The kwargs passed to the init method of this step.
|
407
|
-
|
408
|
-
Raises:
|
409
|
-
StepInterfaceError: If there are too many arguments or arguments
|
410
|
-
with a wrong name/type.
|
411
|
-
"""
|
412
|
-
maximum_arg_count = (
|
413
|
-
1 if self.entrypoint_definition.legacy_params else 0
|
414
|
-
)
|
415
|
-
arg_count = len(args) + len(kwargs)
|
416
|
-
if arg_count > maximum_arg_count:
|
417
|
-
raise StepInterfaceError(
|
418
|
-
f"Too many arguments ({arg_count}, expected: "
|
419
|
-
f"{maximum_arg_count}) passed when creating a "
|
420
|
-
f"'{self.name}' step."
|
421
|
-
)
|
422
|
-
|
423
|
-
if self.entrypoint_definition.legacy_params:
|
424
|
-
if args:
|
425
|
-
config = args[0]
|
426
|
-
elif kwargs:
|
427
|
-
key, config = kwargs.popitem()
|
428
|
-
|
429
|
-
if key != self.entrypoint_definition.legacy_params.name:
|
430
|
-
raise StepInterfaceError(
|
431
|
-
f"Unknown keyword argument '{key}' when creating a "
|
432
|
-
f"'{self.name}' step, only expected a single "
|
433
|
-
"argument with key "
|
434
|
-
f"'{self.entrypoint_definition.legacy_params.name}'."
|
435
|
-
)
|
436
|
-
else:
|
437
|
-
# This step requires configuration parameters but no parameters
|
438
|
-
# object was passed as an argument. The parameters might be
|
439
|
-
# set via default values in the parameters class or in a
|
440
|
-
# configuration file, so we continue for now and verify
|
441
|
-
# that all parameters are set before running the step
|
442
|
-
return
|
443
|
-
|
444
|
-
if not isinstance(
|
445
|
-
config, self.entrypoint_definition.legacy_params.annotation
|
446
|
-
):
|
447
|
-
raise StepInterfaceError(
|
448
|
-
f"`{config}` object passed when creating a "
|
449
|
-
f"'{self.name}' step is not a "
|
450
|
-
f"`{self.entrypoint_definition.legacy_params.annotation.__name__} "
|
451
|
-
"` instance."
|
452
|
-
)
|
453
|
-
|
454
|
-
self.configure(parameters=config)
|
455
|
-
|
456
307
|
def _parse_call_args(
|
457
308
|
self, *args: Any, **kwargs: Any
|
458
309
|
) -> Tuple[
|
459
310
|
Dict[str, "StepArtifact"],
|
460
|
-
Dict[str, "ExternalArtifact"],
|
311
|
+
Dict[str, Union["ExternalArtifact", "ArtifactVersionResponse"]],
|
461
312
|
Dict[str, "ModelVersionDataLazyLoader"],
|
462
313
|
Dict[str, "ClientLazyLoader"],
|
463
314
|
Dict[str, Any],
|
@@ -478,11 +329,12 @@ class BaseStep(metaclass=BaseStepMeta):
|
|
478
329
|
from zenml.artifacts.external_artifact import ExternalArtifact
|
479
330
|
from zenml.model.lazy_load import ModelVersionDataLazyLoader
|
480
331
|
from zenml.models.v2.core.artifact_version import (
|
332
|
+
ArtifactVersionResponse,
|
481
333
|
LazyArtifactVersionResponse,
|
482
334
|
)
|
483
335
|
from zenml.models.v2.core.run_metadata import LazyRunMetadataResponse
|
484
336
|
|
485
|
-
signature =
|
337
|
+
signature = inspect.signature(self.entrypoint, follow_wrapped=True)
|
486
338
|
|
487
339
|
try:
|
488
340
|
bound_args = signature.bind_partial(*args, **kwargs)
|
@@ -492,7 +344,9 @@ class BaseStep(metaclass=BaseStepMeta):
|
|
492
344
|
) from e
|
493
345
|
|
494
346
|
artifacts = {}
|
495
|
-
external_artifacts
|
347
|
+
external_artifacts: Dict[
|
348
|
+
str, Union["ExternalArtifact", "ArtifactVersionResponse"]
|
349
|
+
] = {}
|
496
350
|
model_artifacts_or_metadata = {}
|
497
351
|
client_lazy_loaders = {}
|
498
352
|
parameters = {}
|
@@ -522,14 +376,18 @@ class BaseStep(metaclass=BaseStepMeta):
|
|
522
376
|
)
|
523
377
|
elif isinstance(value, LazyArtifactVersionResponse):
|
524
378
|
model_artifacts_or_metadata[key] = ModelVersionDataLazyLoader(
|
525
|
-
|
379
|
+
model_name=value.lazy_load_model_name,
|
380
|
+
model_version=value.lazy_load_model_version,
|
526
381
|
artifact_name=value.lazy_load_name,
|
527
382
|
artifact_version=value.lazy_load_version,
|
528
383
|
metadata_name=None,
|
529
384
|
)
|
385
|
+
elif isinstance(value, ArtifactVersionResponse):
|
386
|
+
external_artifacts[key] = value
|
530
387
|
elif isinstance(value, LazyRunMetadataResponse):
|
531
388
|
model_artifacts_or_metadata[key] = ModelVersionDataLazyLoader(
|
532
|
-
|
389
|
+
model_name=value.lazy_load_model_name,
|
390
|
+
model_version=value.lazy_load_model_version,
|
533
391
|
artifact_name=value.lazy_load_artifact_name,
|
534
392
|
artifact_version=value.lazy_load_artifact_version,
|
535
393
|
metadata_name=value.lazy_load_metadata_name,
|
@@ -589,7 +447,7 @@ class BaseStep(metaclass=BaseStepMeta):
|
|
589
447
|
Returns:
|
590
448
|
The outputs of the entrypoint function call.
|
591
449
|
"""
|
592
|
-
from zenml.
|
450
|
+
from zenml.pipelines.pipeline_definition import Pipeline
|
593
451
|
|
594
452
|
if not Pipeline.ACTIVE_PIPELINE:
|
595
453
|
from zenml import constants, get_step_context
|
@@ -720,14 +578,13 @@ class BaseStep(metaclass=BaseStepMeta):
|
|
720
578
|
|
721
579
|
def configure(
|
722
580
|
self: T,
|
723
|
-
name: Optional[str] = None,
|
724
581
|
enable_cache: Optional[bool] = None,
|
725
582
|
enable_artifact_metadata: Optional[bool] = None,
|
726
583
|
enable_artifact_visualization: Optional[bool] = None,
|
727
584
|
enable_step_logs: Optional[bool] = None,
|
728
585
|
experiment_tracker: Optional[str] = None,
|
729
586
|
step_operator: Optional[str] = None,
|
730
|
-
parameters: Optional[
|
587
|
+
parameters: Optional[Dict[str, Any]] = None,
|
731
588
|
output_materializers: Optional[
|
732
589
|
"OutputMaterializersSpecification"
|
733
590
|
] = None,
|
@@ -752,7 +609,6 @@ class BaseStep(metaclass=BaseStepMeta):
|
|
752
609
|
step.configuration.extra # {"key2": 2}
|
753
610
|
|
754
611
|
Args:
|
755
|
-
name: DEPRECATED: The name of the step.
|
756
612
|
enable_cache: If caching should be enabled for this step.
|
757
613
|
enable_artifact_metadata: If artifact metadata should be enabled
|
758
614
|
for this step.
|
@@ -788,9 +644,6 @@ class BaseStep(metaclass=BaseStepMeta):
|
|
788
644
|
from zenml.config.step_configurations import StepConfigurationUpdate
|
789
645
|
from zenml.hooks.hook_validators import resolve_and_validate_hook
|
790
646
|
|
791
|
-
if name:
|
792
|
-
logger.warning("Configuring the name of a step is deprecated.")
|
793
|
-
|
794
647
|
def _resolve_if_necessary(
|
795
648
|
value: Union[str, Source, Type[Any]],
|
796
649
|
) -> Source:
|
@@ -832,9 +685,6 @@ class BaseStep(metaclass=BaseStepMeta):
|
|
832
685
|
# string of on_success hook function to be used for this step
|
833
686
|
success_hook_source = resolve_and_validate_hook(on_success)
|
834
687
|
|
835
|
-
if isinstance(parameters, BaseParameters):
|
836
|
-
parameters = parameters.model_dump()
|
837
|
-
|
838
688
|
values = dict_utils.remove_none_values(
|
839
689
|
{
|
840
690
|
"enable_cache": enable_cache,
|
@@ -865,7 +715,7 @@ class BaseStep(metaclass=BaseStepMeta):
|
|
865
715
|
enable_step_logs: Optional[bool] = None,
|
866
716
|
experiment_tracker: Optional[str] = None,
|
867
717
|
step_operator: Optional[str] = None,
|
868
|
-
parameters: Optional[
|
718
|
+
parameters: Optional[Dict[str, Any]] = None,
|
869
719
|
output_materializers: Optional[
|
870
720
|
"OutputMaterializersSpecification"
|
871
721
|
] = None,
|
@@ -1006,8 +856,7 @@ class BaseStep(metaclass=BaseStepMeta):
|
|
1006
856
|
conflicting_parameters[key] = (value, runtime_value)
|
1007
857
|
if key in self.entrypoint_definition.inputs:
|
1008
858
|
self.entrypoint_definition.validate_input(key=key, value=value)
|
1009
|
-
|
1010
|
-
elif not self.entrypoint_definition.legacy_params:
|
859
|
+
else:
|
1011
860
|
raise StepInterfaceError(
|
1012
861
|
f"Unable to find parameter '{key}' in step function "
|
1013
862
|
"signature."
|
@@ -1143,9 +992,7 @@ To avoid this consider setting step parameters only in one place (config or code
|
|
1143
992
|
StepConfigurationUpdate,
|
1144
993
|
)
|
1145
994
|
|
1146
|
-
outputs: Dict[str, Dict[str,
|
1147
|
-
defaultdict(dict)
|
1148
|
-
)
|
995
|
+
outputs: Dict[str, Dict[str, Any]] = defaultdict(dict)
|
1149
996
|
|
1150
997
|
for (
|
1151
998
|
output_name,
|
@@ -1154,6 +1001,8 @@ To avoid this consider setting step parameters only in one place (config or code
|
|
1154
1001
|
output = self._configuration.outputs.get(
|
1155
1002
|
output_name, PartialArtifactConfiguration()
|
1156
1003
|
)
|
1004
|
+
if artifact_config := output_annotation.artifact_config:
|
1005
|
+
outputs[output_name]["artifact_config"] = artifact_config
|
1157
1006
|
|
1158
1007
|
if output.materializer_source:
|
1159
1008
|
# The materializer source was configured by the user. We
|
@@ -1264,95 +1113,4 @@ To avoid this consider setting step parameters only in one place (config or code
|
|
1264
1113
|
else:
|
1265
1114
|
params[key] = value
|
1266
1115
|
|
1267
|
-
if self.entrypoint_definition.legacy_params:
|
1268
|
-
legacy_params = self._finalize_legacy_parameters()
|
1269
|
-
params[self.entrypoint_definition.legacy_params.name] = (
|
1270
|
-
legacy_params
|
1271
|
-
)
|
1272
|
-
|
1273
1116
|
return params
|
1274
|
-
|
1275
|
-
def _finalize_legacy_parameters(self) -> Dict[str, Any]:
|
1276
|
-
"""Verifies and prepares the config parameters for running this step.
|
1277
|
-
|
1278
|
-
When the step requires config parameters, this method:
|
1279
|
-
- checks if config parameters were set via a config object or file
|
1280
|
-
- tries to set missing config parameters from default values of the
|
1281
|
-
config class
|
1282
|
-
|
1283
|
-
Returns:
|
1284
|
-
Values for the previously unconfigured function parameters.
|
1285
|
-
|
1286
|
-
Raises:
|
1287
|
-
MissingStepParameterError: If no value could be found for one or
|
1288
|
-
more config parameters.
|
1289
|
-
StepInterfaceError: If the parameter class validation failed.
|
1290
|
-
"""
|
1291
|
-
if not self.entrypoint_definition.legacy_params:
|
1292
|
-
return {}
|
1293
|
-
|
1294
|
-
logger.warning(
|
1295
|
-
"The `BaseParameters` class to define step parameters is "
|
1296
|
-
"deprecated. Check out our docs "
|
1297
|
-
"https://docs.zenml.io/how-to/use-configuration-files/how-to-use-config "
|
1298
|
-
"for information on how to parameterize your steps. As a quick "
|
1299
|
-
"fix to get rid of this warning, make sure your parameter class "
|
1300
|
-
"inherits from `pydantic.BaseModel` instead of the "
|
1301
|
-
"`BaseParameters` class."
|
1302
|
-
)
|
1303
|
-
|
1304
|
-
# parameters for the `BaseParameters` class specified in the "new" way
|
1305
|
-
# by specifying a dict of parameters for the corresponding key
|
1306
|
-
params_defined_in_new_way = (
|
1307
|
-
self.configuration.parameters.get(
|
1308
|
-
self.entrypoint_definition.legacy_params.name
|
1309
|
-
)
|
1310
|
-
or {}
|
1311
|
-
)
|
1312
|
-
|
1313
|
-
values = {}
|
1314
|
-
missing_keys = []
|
1315
|
-
for (
|
1316
|
-
name,
|
1317
|
-
field,
|
1318
|
-
) in self.entrypoint_definition.legacy_params.annotation.model_fields.items():
|
1319
|
-
if name in self.configuration.parameters:
|
1320
|
-
# a value for this parameter has been set already
|
1321
|
-
values[name] = self.configuration.parameters[name]
|
1322
|
-
elif name in params_defined_in_new_way:
|
1323
|
-
# a value for this parameter has been set in the "new" way
|
1324
|
-
# already
|
1325
|
-
values[name] = params_defined_in_new_way[name]
|
1326
|
-
elif field.is_required():
|
1327
|
-
# this field has no default value set and therefore needs
|
1328
|
-
# to be passed via an initialized config object
|
1329
|
-
missing_keys.append(name)
|
1330
|
-
else:
|
1331
|
-
# use default value from the pydantic config class
|
1332
|
-
values[name] = field.default
|
1333
|
-
|
1334
|
-
if missing_keys:
|
1335
|
-
raise MissingStepParameterError(
|
1336
|
-
self.name,
|
1337
|
-
missing_keys,
|
1338
|
-
self.entrypoint_definition.legacy_params.annotation,
|
1339
|
-
)
|
1340
|
-
|
1341
|
-
if (
|
1342
|
-
getattr(
|
1343
|
-
self.entrypoint_definition.legacy_params.annotation.model_config,
|
1344
|
-
"extra",
|
1345
|
-
None,
|
1346
|
-
)
|
1347
|
-
== "allow"
|
1348
|
-
):
|
1349
|
-
# Add all parameters for the config class for backwards
|
1350
|
-
# compatibility if the config class allows extra attributes
|
1351
|
-
values.update(self.configuration.parameters)
|
1352
|
-
|
1353
|
-
try:
|
1354
|
-
self.entrypoint_definition.legacy_params.annotation(**values)
|
1355
|
-
except ValidationError:
|
1356
|
-
raise StepInterfaceError("Failed to validate function parameters.")
|
1357
|
-
|
1358
|
-
return values
|
@@ -21,7 +21,6 @@ from typing import (
|
|
21
21
|
Dict,
|
22
22
|
NamedTuple,
|
23
23
|
NoReturn,
|
24
|
-
Optional,
|
25
24
|
Sequence,
|
26
25
|
Type,
|
27
26
|
Union,
|
@@ -42,45 +41,13 @@ from zenml.utils import yaml_utils
|
|
42
41
|
|
43
42
|
if TYPE_CHECKING:
|
44
43
|
from zenml.config.source import Source
|
45
|
-
from zenml.
|
46
|
-
from zenml.steps import BaseStep
|
44
|
+
from zenml.pipelines.pipeline_definition import Pipeline
|
47
45
|
|
48
46
|
MaterializerClassOrSource = Union[str, "Source", Type["BaseMaterializer"]]
|
49
47
|
|
50
48
|
logger = get_logger(__name__)
|
51
49
|
|
52
50
|
|
53
|
-
def get_step_entrypoint_signature(step: "BaseStep") -> inspect.Signature:
|
54
|
-
"""Get the entrypoint signature of a step.
|
55
|
-
|
56
|
-
Args:
|
57
|
-
step: The step for which to get the entrypoint signature.
|
58
|
-
|
59
|
-
Returns:
|
60
|
-
The entrypoint function signature.
|
61
|
-
"""
|
62
|
-
from zenml.steps import BaseParameters, StepContext
|
63
|
-
|
64
|
-
signature = inspect.signature(step.entrypoint, follow_wrapped=True)
|
65
|
-
|
66
|
-
def _is_param_of_class(annotation: Any, class_: Type[Any]) -> bool:
|
67
|
-
annotation = resolve_type_annotation(annotation)
|
68
|
-
return inspect.isclass(annotation) and issubclass(annotation, class_)
|
69
|
-
|
70
|
-
parameters = list(signature.parameters.values())
|
71
|
-
|
72
|
-
# Filter out deprecated args: step context and legacy parameters
|
73
|
-
parameters = [
|
74
|
-
param
|
75
|
-
for param in parameters
|
76
|
-
if not _is_param_of_class(param.annotation, class_=BaseParameters)
|
77
|
-
and not _is_param_of_class(param.annotation, class_=StepContext)
|
78
|
-
]
|
79
|
-
|
80
|
-
signature = signature.replace(parameters=parameters)
|
81
|
-
return signature
|
82
|
-
|
83
|
-
|
84
51
|
class StepArtifact:
|
85
52
|
"""Class to represent step output artifacts."""
|
86
53
|
|
@@ -143,15 +110,10 @@ class EntrypointFunctionDefinition(NamedTuple):
|
|
143
110
|
inputs: The entrypoint function inputs.
|
144
111
|
outputs: The entrypoint function outputs. This dictionary maps output
|
145
112
|
names to output annotations.
|
146
|
-
context: Optional parameter representing the `StepContext` input.
|
147
|
-
legacy_params: Optional parameter representing the `BaseParameters`
|
148
|
-
input.
|
149
113
|
"""
|
150
114
|
|
151
115
|
inputs: Dict[str, inspect.Parameter]
|
152
116
|
outputs: Dict[str, OutputSignature]
|
153
|
-
context: Optional[inspect.Parameter]
|
154
|
-
legacy_params: Optional[inspect.Parameter]
|
155
117
|
|
156
118
|
def validate_input(self, key: str, value: Any) -> None:
|
157
119
|
"""Validates an input to the step entrypoint function.
|
@@ -260,36 +222,20 @@ def validate_entrypoint_function(
|
|
260
222
|
Raises:
|
261
223
|
StepInterfaceError: If the entrypoint function has variable arguments
|
262
224
|
or keyword arguments.
|
263
|
-
StepInterfaceError: If the entrypoint function has multiple
|
264
|
-
`BaseParameter` arguments.
|
265
|
-
StepInterfaceError: If the entrypoint function has multiple
|
266
|
-
`StepContext` arguments.
|
267
225
|
RuntimeError: If type annotations should be enforced and a type
|
268
226
|
annotation is missing.
|
269
227
|
|
270
228
|
Returns:
|
271
229
|
A validated definition of the entrypoint function.
|
272
230
|
"""
|
273
|
-
from zenml.steps import BaseParameters, StepContext
|
274
|
-
|
275
231
|
signature = inspect.signature(func, follow_wrapped=True)
|
276
232
|
validate_reserved_arguments(
|
277
233
|
signature=signature, reserved_arguments=reserved_arguments
|
278
234
|
)
|
279
235
|
|
280
236
|
inputs = {}
|
281
|
-
context: Optional[inspect.Parameter] = None
|
282
|
-
legacy_params: Optional[inspect.Parameter] = None
|
283
237
|
|
284
238
|
signature_parameters = list(signature.parameters.items())
|
285
|
-
if signature_parameters and signature_parameters[0][0] == "self":
|
286
|
-
# TODO: Once we get rid of the old step decorator, we can also remove
|
287
|
-
# the `BaseStepMeta` class which right now calls this function on an
|
288
|
-
# unbound instance method when using the class-based API. If we get rid
|
289
|
-
# of that, this check and removal of the `self` parameter is not
|
290
|
-
# necessary anymore
|
291
|
-
signature_parameters = signature_parameters[1:]
|
292
|
-
|
293
239
|
for key, parameter in signature_parameters:
|
294
240
|
if parameter.kind in {parameter.VAR_POSITIONAL, parameter.VAR_KEYWORD}:
|
295
241
|
raise StepInterfaceError(
|
@@ -309,29 +255,7 @@ def validate_entrypoint_function(
|
|
309
255
|
parameter = parameter.replace(annotation=Any)
|
310
256
|
|
311
257
|
annotation = resolve_type_annotation(annotation)
|
312
|
-
|
313
|
-
annotation, BaseParameters
|
314
|
-
):
|
315
|
-
if legacy_params is not None:
|
316
|
-
raise StepInterfaceError(
|
317
|
-
f"Found multiple parameter arguments "
|
318
|
-
f"('{legacy_params.name}' and '{key}') "
|
319
|
-
f"for function {func.__name__}."
|
320
|
-
)
|
321
|
-
legacy_params = parameter
|
322
|
-
|
323
|
-
elif inspect.isclass(annotation) and issubclass(
|
324
|
-
annotation, StepContext
|
325
|
-
):
|
326
|
-
if context is not None:
|
327
|
-
raise StepInterfaceError(
|
328
|
-
f"Found multiple context arguments "
|
329
|
-
f"('{context.name}' and '{key}') "
|
330
|
-
f"for function {func.__name__}."
|
331
|
-
)
|
332
|
-
context = parameter
|
333
|
-
else:
|
334
|
-
inputs[key] = parameter
|
258
|
+
inputs[key] = parameter
|
335
259
|
|
336
260
|
outputs = parse_return_type_annotations(
|
337
261
|
func=func, enforce_type_annotations=ENFORCE_TYPE_ANNOTATIONS
|
@@ -340,6 +264,4 @@ def validate_entrypoint_function(
|
|
340
264
|
return EntrypointFunctionDefinition(
|
341
265
|
inputs=inputs,
|
342
266
|
outputs=outputs,
|
343
|
-
context=context,
|
344
|
-
legacy_params=legacy_params,
|
345
267
|
)
|