zenml-nightly 0.66.0.dev20240928__py3-none-any.whl → 0.68.1.dev20241102__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- README.md +18 -12
- RELEASE_NOTES.md +236 -0
- zenml/VERSION +1 -1
- zenml/__init__.py +5 -10
- zenml/analytics/context.py +16 -1
- zenml/analytics/enums.py +0 -13
- zenml/analytics/utils.py +18 -7
- zenml/artifact_stores/base_artifact_store.py +11 -0
- zenml/artifacts/artifact_config.py +19 -65
- zenml/artifacts/external_artifact.py +7 -53
- zenml/artifacts/external_artifact_config.py +21 -40
- zenml/artifacts/load_directory_materializer.py +91 -0
- zenml/artifacts/utils.py +204 -145
- zenml/cli/__init__.py +62 -127
- zenml/cli/base.py +8 -8
- zenml/cli/integration.py +0 -9
- zenml/cli/login.py +951 -0
- zenml/cli/pipeline.py +1 -1
- zenml/cli/served_model.py +8 -1
- zenml/cli/server.py +462 -577
- zenml/cli/service_accounts.py +4 -4
- zenml/cli/stack.py +78 -569
- zenml/cli/stack_components.py +5 -594
- zenml/cli/user_management.py +0 -12
- zenml/cli/utils.py +24 -142
- zenml/client.py +57 -40
- zenml/client_lazy_loader.py +29 -12
- zenml/config/compiler.py +7 -11
- zenml/config/global_config.py +9 -0
- zenml/config/pipeline_configurations.py +2 -1
- zenml/config/pipeline_run_configuration.py +2 -1
- zenml/config/server_config.py +7 -5
- zenml/config/step_configurations.py +2 -0
- zenml/constants.py +6 -42
- zenml/enums.py +1 -4
- zenml/environment.py +1 -315
- zenml/exceptions.py +12 -41
- zenml/hooks/hook_validators.py +1 -8
- zenml/integrations/airflow/orchestrators/airflow_orchestrator.py +2 -3
- zenml/integrations/argilla/__init__.py +1 -1
- zenml/integrations/argilla/annotators/argilla_annotator.py +234 -89
- zenml/integrations/argilla/flavors/argilla_annotator_flavor.py +10 -5
- zenml/integrations/aws/flavors/sagemaker_orchestrator_flavor.py +9 -5
- zenml/integrations/aws/orchestrators/sagemaker_orchestrator.py +15 -2
- zenml/integrations/aws/service_connectors/aws_service_connector.py +6 -0
- zenml/integrations/azure/flavors/azureml_orchestrator_flavor.py +5 -4
- zenml/integrations/azure/orchestrators/azureml_orchestrator.py +1 -1
- zenml/integrations/bentoml/model_deployers/bentoml_model_deployer.py +85 -19
- zenml/integrations/bentoml/services/__init__.py +15 -4
- zenml/integrations/bentoml/services/bentoml_container_deployment.py +399 -0
- zenml/integrations/bentoml/services/{bentoml_deployment.py → bentoml_local_deployment.py} +81 -40
- zenml/{steps/base_parameters.py → integrations/bentoml/services/deployment_type.py} +8 -5
- zenml/integrations/bentoml/steps/bento_builder.py +1 -0
- zenml/integrations/bentoml/steps/bentoml_deployer.py +93 -41
- zenml/integrations/github/code_repositories/github_code_repository.py +1 -1
- zenml/integrations/gitlab/code_repositories/gitlab_code_repository.py +6 -1
- zenml/integrations/huggingface/__init__.py +1 -6
- zenml/integrations/kaniko/image_builders/kaniko_image_builder.py +3 -3
- zenml/integrations/lightning/orchestrators/lightning_orchestrator.py +3 -3
- zenml/integrations/lightning/orchestrators/lightning_orchestrator_entrypoint.py +2 -2
- zenml/integrations/mlflow/experiment_trackers/mlflow_experiment_tracker.py +6 -3
- zenml/integrations/mlflow/model_registries/mlflow_model_registry.py +6 -0
- zenml/integrations/mlflow/services/mlflow_deployment.py +2 -2
- zenml/integrations/mlflow/steps/mlflow_deployer.py +1 -1
- zenml/integrations/mlflow/steps/mlflow_registry.py +1 -1
- zenml/integrations/neptune/experiment_trackers/run_state.py +2 -2
- zenml/integrations/pytorch/materializers/base_pytorch_materializer.py +8 -2
- zenml/integrations/pytorch/materializers/pytorch_module_materializer.py +4 -1
- zenml/integrations/s3/artifact_stores/s3_artifact_store.py +98 -0
- zenml/integrations/s3/flavors/s3_artifact_store_flavor.py +14 -0
- zenml/integrations/s3/utils.py +40 -0
- zenml/integrations/tensorflow/__init__.py +0 -9
- zenml/logging/step_logging.py +13 -15
- zenml/{new/pipelines → login}/__init__.py +4 -1
- zenml/login/credentials.py +346 -0
- zenml/login/credentials_store.py +603 -0
- zenml/{new → login/pro}/__init__.py +4 -1
- zenml/login/pro/client.py +496 -0
- zenml/login/pro/constants.py +34 -0
- zenml/{lineage_graph/edge.py → login/pro/models.py} +9 -8
- zenml/{zen_server/deploy/terraform/providers → login/pro/organization}/__init__.py +2 -2
- zenml/login/pro/organization/client.py +79 -0
- zenml/{lineage_graph/node/base_node.py → login/pro/organization/models.py} +13 -12
- zenml/{new/steps → login/pro/tenant}/__init__.py +2 -1
- zenml/login/pro/tenant/client.py +92 -0
- zenml/login/pro/tenant/models.py +174 -0
- zenml/login/pro/utils.py +121 -0
- zenml/{cli → login}/web_login.py +64 -28
- zenml/materializers/__init__.py +2 -0
- zenml/materializers/base_materializer.py +43 -9
- zenml/materializers/built_in_materializer.py +1 -1
- zenml/materializers/uuid_materializer.py +79 -0
- zenml/metadata/lazy_load.py +10 -7
- zenml/metadata/metadata_types.py +49 -0
- zenml/model/lazy_load.py +85 -4
- zenml/model/model.py +61 -83
- zenml/model/utils.py +47 -118
- zenml/models/__init__.py +6 -0
- zenml/models/v2/base/base.py +12 -8
- zenml/models/v2/base/filter.py +9 -0
- zenml/models/v2/core/artifact_version.py +53 -25
- zenml/models/v2/core/component.py +54 -19
- zenml/models/v2/core/flavor.py +13 -13
- zenml/models/v2/core/model.py +4 -1
- zenml/models/v2/core/model_version.py +4 -6
- zenml/models/v2/core/model_version_artifact.py +3 -1
- zenml/models/v2/core/model_version_pipeline_run.py +3 -1
- zenml/models/v2/core/pipeline.py +3 -1
- zenml/models/v2/core/pipeline_run.py +24 -3
- zenml/models/v2/core/run_metadata.py +2 -2
- zenml/models/v2/core/run_template.py +3 -1
- zenml/models/v2/core/stack.py +7 -3
- zenml/models/v2/core/step_run.py +58 -14
- zenml/models/v2/misc/auth_models.py +11 -2
- zenml/models/v2/misc/server_models.py +2 -4
- zenml/orchestrators/base_orchestrator.py +41 -4
- zenml/orchestrators/input_utils.py +52 -36
- zenml/orchestrators/step_launcher.py +50 -171
- zenml/orchestrators/step_run_utils.py +574 -0
- zenml/orchestrators/step_runner.py +83 -120
- zenml/orchestrators/utils.py +46 -180
- zenml/pipelines/__init__.py +3 -16
- zenml/{new/pipelines → pipelines}/pipeline_context.py +3 -18
- zenml/pipelines/pipeline_decorator.py +34 -60
- zenml/{new/pipelines/pipeline.py → pipelines/pipeline_definition.py} +210 -207
- zenml/{new/pipelines → pipelines}/run_utils.py +11 -10
- zenml/services/local/local_daemon_entrypoint.py +4 -4
- zenml/services/service.py +2 -2
- zenml/stack/stack.py +3 -108
- zenml/stack/stack_component.py +2 -78
- zenml/stack/utils.py +26 -14
- zenml/stack_deployments/aws_stack_deployment.py +3 -0
- zenml/step_operators/step_operator_entrypoint_configuration.py +1 -1
- zenml/steps/__init__.py +3 -9
- zenml/steps/base_step.py +25 -267
- zenml/steps/entrypoint_function_utils.py +2 -80
- zenml/{new/steps → steps}/step_context.py +12 -66
- zenml/steps/step_decorator.py +42 -89
- zenml/steps/step_invocation.py +16 -60
- zenml/steps/utils.py +4 -23
- zenml/utils/dashboard_utils.py +16 -51
- zenml/utils/materializer_utils.py +1 -1
- zenml/utils/requirements_utils.py +71 -0
- zenml/utils/singleton.py +15 -3
- zenml/utils/source_utils.py +39 -2
- zenml/utils/typing_utils.py +8 -28
- zenml/utils/visualization_utils.py +1 -1
- zenml/zen_server/auth.py +44 -39
- zenml/zen_server/dashboard/assets/{404-Y50hSt65.js → 404-DT4QRUqN.js} +1 -1
- zenml/zen_server/dashboard/assets/@radix-DP6vWzyx.js +85 -0
- zenml/zen_server/dashboard/assets/@react-router-BMhZulnd.js +29 -0
- zenml/zen_server/dashboard/assets/@reactflow-8U9qNlMR.js +17 -0
- zenml/zen_server/dashboard/assets/@tanstack-BUCbhJyH.js +22 -0
- zenml/zen_server/dashboard/assets/{AlertDialogDropdownItem-xLR9a1iw.js → AlertDialogDropdownItem-C6N2rGrB.js} +1 -1
- zenml/zen_server/dashboard/assets/{CodeSnippet-IxXNxUDa.js → CodeSnippet-CqybNv0k.js} +1 -1
- zenml/zen_server/dashboard/assets/{CollapsibleCard-BhutZbBL.js → CollapsibleCard-0r_8G2Lj.js} +1 -1
- zenml/zen_server/dashboard/assets/{Commands-Bf-rd1z8.js → Commands-BDjgBQKi.js} +1 -1
- zenml/zen_server/dashboard/assets/ComponentBadge-DUiEYJHu.js +1 -0
- zenml/zen_server/dashboard/assets/ComponentFallbackDialog-BFoH5K4V.js +1 -0
- zenml/zen_server/dashboard/assets/ComponentIcon-CAIoUis2.js +1 -0
- zenml/zen_server/dashboard/assets/{CopyButton-DcFHidFJ.js → CopyButton-C745BrKi.js} +1 -1
- zenml/zen_server/dashboard/assets/{CsvVizualization-QSbjrfxw.js → CsvVizualization-PpAq0CeZ.js} +5 -5
- zenml/zen_server/dashboard/assets/{DialogItem-Cd3HqST4.js → DialogItem-DcVCZEew.js} +1 -1
- zenml/zen_server/dashboard/assets/{DisplayDate-DkCy54Bp.js → DisplayDate-BeXgUG_C.js} +1 -1
- zenml/zen_server/dashboard/assets/{EmptyState-Cs3DEmso.js → EmptyState-DeK7H4pr.js} +1 -1
- zenml/zen_server/dashboard/assets/{Error-BhwdmqK7.js → Error-BMlzibXj.js} +1 -1
- zenml/zen_server/dashboard/assets/{Helpbox-0pBpTwTm.js → Helpbox-BLf40fLV.js} +1 -1
- zenml/zen_server/dashboard/assets/{Infobox-BTK_EUKT.js → Infobox-BwisKifi.js} +1 -1
- zenml/zen_server/dashboard/assets/{InlineAvatar-CA3DFMcM.js → InlineAvatar-jEgodSgX.js} +1 -1
- zenml/zen_server/dashboard/assets/{Lock-CmIn0szs.js → Lock-3lLt1ih0.js} +1 -1
- zenml/zen_server/dashboard/assets/MarkdownVisualization-8O9kTr-2.js +14 -0
- zenml/zen_server/dashboard/assets/{NumberBox-CrN0_kqI.js → NumberBox-T9eELfLZ.js} +1 -1
- zenml/zen_server/dashboard/assets/{Partials-QLOZw624.js → Partials-YPBB3V4q.js} +1 -1
- zenml/zen_server/dashboard/assets/{PasswordChecker-DE71J_3F.js → PasswordChecker-CW0kqY0W.js} +1 -1
- zenml/zen_server/dashboard/assets/{ProviderIcon-C16CCIN4.js → ProviderIcon-Bb3Xha5A.js} +1 -1
- zenml/zen_server/dashboard/assets/{ProviderRadio-D3FuCHf3.js → ProviderRadio-BROY1700.js} +1 -1
- zenml/zen_server/dashboard/assets/RunSelector-DCiL3M1c.js +1 -0
- zenml/zen_server/dashboard/assets/SearchField-DfUiGFVd.js +1 -0
- zenml/zen_server/dashboard/assets/{SecretTooltip-BaMwHF-Q.js → SecretTooltip-C_qByGWB.js} +1 -1
- zenml/zen_server/dashboard/assets/{SetPassword-DuIC65H9.js → SetPassword-7pRB00El.js} +1 -1
- zenml/zen_server/dashboard/assets/{Tick-DJTCF0Re.js → Tick-CykQFPj2.js} +1 -1
- zenml/zen_server/dashboard/assets/{UpdatePasswordSchemas-CUm-DMpw.js → UpdatePasswordSchemas-DckMEkFf.js} +1 -1
- zenml/zen_server/dashboard/assets/{UsageReason-CKw0juLF.js → UsageReason-DVceN14P.js} +1 -1
- zenml/zen_server/dashboard/assets/{WizardFooter-Cv9ApYWU.js → WizardFooter-CW0Cvd70.js} +1 -1
- zenml/zen_server/dashboard/assets/{check-circle-DOoS4yhF.js → check-circle-Dwxliy1Z.js} +1 -1
- zenml/zen_server/dashboard/assets/{chevron-down-Cwb-W_B_.js → chevron-down-8wLBS5pQ.js} +1 -1
- zenml/zen_server/dashboard/assets/{chevron-right-double-c9H46Kl8.js → chevron-right-double-DoD8iXWM.js} +1 -1
- zenml/zen_server/dashboard/assets/{cloud-only-BB4BVa6E.js → cloud-only-B-s_HMDm.js} +1 -1
- zenml/zen_server/dashboard/assets/{code-browser-BJYErIjr.js → code-browser-CZUQs3Wa.js} +1 -1
- zenml/zen_server/dashboard/assets/{copy-CaGlDsUy.js → copy-CaSMXwiU.js} +1 -1
- zenml/zen_server/dashboard/assets/{create-stack-F29xAUEx.js → create-stack-CEmaPZ4c.js} +1 -1
- zenml/zen_server/dashboard/assets/delete-run-D-LKbGyz.js +1 -0
- zenml/zen_server/dashboard/assets/{docker-BFAFXr2_.js → docker-BFNgg-z3.js} +1 -1
- zenml/zen_server/dashboard/assets/{dots-horizontal-C6K59vUm.js → dots-horizontal-DK5Duzx4.js} +1 -1
- zenml/zen_server/dashboard/assets/{form-schemas-BKXwSDK2.js → form-schemas-1AyOCx90.js} +1 -1
- zenml/zen_server/dashboard/assets/{gcp-Dj6ntk0L.js → gcp-7M2Yf3ZK.js} +1 -1
- zenml/zen_server/dashboard/assets/{help-CwN931fX.js → help-Dam461dC.js} +1 -1
- zenml/zen_server/dashboard/assets/{index-5GJ5ysEZ.js → index-BVJ8n2-j.js} +1 -1
- zenml/zen_server/dashboard/assets/index-Bpmj40BI.js +1 -0
- zenml/zen_server/dashboard/assets/index-CbU4Ln_E.css +1 -0
- zenml/zen_server/dashboard/assets/{index-D-mtoBj3.js → index-DKPhqP2B.js} +1 -1
- zenml/zen_server/dashboard/assets/index-QQb7wQEC.js +55 -0
- zenml/zen_server/dashboard/assets/index.esm-cuVep_NJ.js +1 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-400-normal-BLGc9T1a.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-400-normal-ZzOtrSSW.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-500-normal-D4Vwzodn.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-500-normal-DH2hs3aW.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-600-normal-BGBWG807.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-600-normal-BuzJQFbW.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-400-normal-BPnxn4xp.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-400-normal-Dc4VJyIJ.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-500-normal-BShVwWPj.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-500-normal-CUiC4oBV.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-600-normal-Bt9VVOA-.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-600-normal-CaqZN2hq.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-400-normal-BZzXV7-1.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-400-normal-DxZsaF_h.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-500-normal-CeQXL5ds.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-500-normal-d_eO-yCQ.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-600-normal-CwicyhtI.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-600-normal-Dhlb-90d.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-400-normal-Bput3-QP.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-400-normal-DCpCPQOf.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-500-normal-B6guLgqG.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-500-normal-M2hEX8vc.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-600-normal-C9WLioJ8.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-600-normal-Cnui8OiR.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-400-normal-BOOGhInR.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-400-normal-gitzw0hO.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-500-normal-D2bGa7uu.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-500-normal-deR1Tlfd.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-600-normal-B5cFAncS.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-600-normal-D273HNI0.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-400-normal-C1t-h-pH.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-400-normal-hnt3BR84.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-500-normal-CIS2RHJS.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-500-normal-UMdmhHu2.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-600-normal-BnYJhD27.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-600-normal-CAF0vJDd.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-400-normal-BUNmGMP1.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-400-normal-DMkecbls.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-500-normal-DOriooB6.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-500-normal-DQPw2Hwd.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-600-normal-Cc8MFFhd.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-600-normal-Cm6aH8_k.woff +0 -0
- zenml/zen_server/dashboard/assets/{kubernetes-BjbR6D-1.js → kubernetes--g7r02Zu.js} +1 -1
- zenml/zen_server/dashboard/assets/{layout-Dru15_XR.js → layout-DCSYN7-C.js} +1 -1
- zenml/zen_server/dashboard/assets/{link-external-BT2L8hAQ.js → link-external-CBEk6kEG.js} +1 -1
- zenml/zen_server/dashboard/assets/{login-mutation-ax6iL2Mb.js → login-mutation-DTcAFP1l.js} +1 -1
- zenml/zen_server/dashboard/assets/{logs-GiDJXbLS.js → logs-D5bdJGur.js} +1 -1
- zenml/zen_server/dashboard/assets/not-found-Cc-JkRH2.js +1 -0
- zenml/zen_server/dashboard/assets/{package-DYKZ5jKW.js → package-Cs35Szwh.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-HkVBdZl6.js → page-9yplj5JT.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-uORspyRu.js → page-B-y2XKIc.js} +1 -1
- zenml/zen_server/dashboard/assets/page-BBpOxVcY.js +1 -0
- zenml/zen_server/dashboard/assets/{page-BDg1F-Ug.js → page-BQQKaabe.js} +2 -2
- zenml/zen_server/dashboard/assets/page-BRInM1Lg.js +1 -0
- zenml/zen_server/dashboard/assets/{page-CvKnNK1S.js → page-BjjlMk7s.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-BukXK1Aa.js → page-Bvd7YH2A.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-DcTjHmYZ.js → page-C0N5q3l7.js} +1 -1
- zenml/zen_server/dashboard/assets/page-CT3Nep8W.js +1 -0
- zenml/zen_server/dashboard/assets/{page-DuqYMYmH.js → page-C_f47pBf.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-DRfcRK1w.js → page-ClUVkl-O.js} +1 -1
- zenml/zen_server/dashboard/assets/page-Cmv8C_yM.js +3 -0
- zenml/zen_server/dashboard/assets/{page-p0BhSAWx.js → page-CyN2bdWG.js} +1 -1
- zenml/zen_server/dashboard/assets/page-CzzXH4fs.js +1 -0
- zenml/zen_server/dashboard/assets/{page-6mfzecin.js → page-DH_Z7iW1.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-8kYmrh0B.js → page-DIOXwhiD.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-BXarY9K2.js → page-DLixvR-7.js} +1 -1
- zenml/zen_server/dashboard/assets/page-DTlGjgnG.js +1 -0
- zenml/zen_server/dashboard/assets/page-Dbpl86h0.js +1 -0
- zenml/zen_server/dashboard/assets/{page-MAXyfXBq.js → page-Ddgy6kDS.js} +1 -1
- zenml/zen_server/dashboard/assets/page-DtCAfBLy.js +9 -0
- zenml/zen_server/dashboard/assets/{page-CKHNAq7z.js → page-Dx16z7nA.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-DMSLXKGT.js → page-DzpVUZ8f.js} +1 -1
- zenml/zen_server/dashboard/assets/page-McUyYbo1.js +1 -0
- zenml/zen_server/dashboard/assets/{page-miU2rhYG.js → page-N4qoPHKb.js} +1 -1
- zenml/zen_server/dashboard/assets/page-T1P3RyAR.js +1 -0
- zenml/zen_server/dashboard/assets/{page-3qPX9WYH.js → page-bKaULTGG.js} +1 -1
- zenml/zen_server/dashboard/assets/page-sbXUJy9t.js +1 -0
- zenml/zen_server/dashboard/assets/{persist-CfJMar_k.js → persist-CP0JmYZ4.js} +1 -1
- zenml/zen_server/dashboard/assets/{persist-BxIR2XZs.js → persist-DNb5cdrU.js} +1 -1
- zenml/zen_server/dashboard/assets/{plus-Bc8eLSDM.js → plus-C9IxgN2M.js} +1 -1
- zenml/zen_server/dashboard/assets/{refresh-hfgWPeto.js → refresh-BVu22P_C.js} +1 -1
- zenml/zen_server/dashboard/assets/{rocket-SESCGQXm.js → rocket-CONEmRmB.js} +1 -1
- zenml/zen_server/dashboard/assets/{sharedSchema-vub0rii3.js → sharedSchema-TMLu-nYQ.js} +1 -1
- zenml/zen_server/dashboard/assets/stack-detail-query-xmYxSsUY.js +1 -0
- zenml/zen_server/dashboard/assets/{tick-circle-m-hJG8i9.js → tick-circle-CM1ZScbQ.js} +1 -1
- zenml/zen_server/dashboard/assets/{trash-DUWZWzse.js → trash-DkJHMOg7.js} +1 -1
- zenml/zen_server/dashboard/assets/{update-server-settings-mutation-FGVP7X2U.js → update-server-settings-mutation-DsU8cNVl.js} +1 -1
- zenml/zen_server/dashboard/assets/{url-CbAPzsmT.js → url-D5le3J4q.js} +1 -1
- zenml/zen_server/dashboard/assets/zod-D89GC_vc.js +1 -0
- zenml/zen_server/dashboard/index.html +7 -7
- zenml/zen_server/deploy/__init__.py +7 -16
- zenml/zen_server/deploy/base_provider.py +46 -73
- zenml/zen_server/deploy/{local → daemon}/__init__.py +3 -3
- zenml/zen_server/deploy/{local/local_provider.py → daemon/daemon_provider.py} +44 -63
- zenml/zen_server/deploy/{local/local_zen_server.py → daemon/daemon_zen_server.py} +50 -28
- zenml/zen_server/deploy/deployer.py +90 -171
- zenml/zen_server/deploy/deployment.py +20 -12
- zenml/zen_server/deploy/docker/docker_provider.py +9 -28
- zenml/zen_server/deploy/docker/docker_zen_server.py +19 -9
- zenml/zen_server/deploy/helm/Chart.yaml +1 -1
- zenml/zen_server/deploy/helm/README.md +2 -2
- zenml/zen_server/exceptions.py +11 -0
- zenml/zen_server/feature_gate/zenml_cloud_feature_gate.py +1 -1
- zenml/zen_server/jwt.py +9 -9
- zenml/zen_server/routers/artifact_version_endpoints.py +1 -1
- zenml/zen_server/routers/auth_endpoints.py +30 -8
- zenml/zen_server/routers/runs_endpoints.py +0 -28
- zenml/zen_server/routers/stack_components_endpoints.py +1 -1
- zenml/zen_server/routers/workspaces_endpoints.py +1 -1
- zenml/zen_server/template_execution/runner_entrypoint_configuration.py +7 -4
- zenml/zen_server/template_execution/utils.py +8 -63
- zenml/zen_server/utils.py +67 -69
- zenml/zen_server/zen_server_api.py +107 -17
- zenml/zen_stores/base_zen_store.py +4 -51
- zenml/zen_stores/migrations/versions/0.67.0_release.py +23 -0
- zenml/zen_stores/migrations/versions/0.68.0_release.py +23 -0
- zenml/zen_stores/migrations/versions/0.68.1_release.py +23 -0
- zenml/zen_stores/migrations/versions/1d8f30c54477_migrate_to_new_.py +124 -0
- zenml/zen_stores/migrations/versions/c22561cbb3a9_add_artifact_unique_constraints.py +86 -0
- zenml/zen_stores/rest_zen_store.py +325 -147
- zenml/zen_stores/schemas/api_key_schemas.py +9 -4
- zenml/zen_stores/schemas/artifact_schemas.py +21 -2
- zenml/zen_stores/schemas/artifact_visualization_schemas.py +1 -1
- zenml/zen_stores/schemas/component_schemas.py +49 -6
- zenml/zen_stores/schemas/device_schemas.py +9 -4
- zenml/zen_stores/schemas/flavor_schemas.py +1 -1
- zenml/zen_stores/schemas/model_schemas.py +1 -1
- zenml/zen_stores/schemas/pipeline_run_schemas.py +12 -4
- zenml/zen_stores/schemas/service_schemas.py +1 -1
- zenml/zen_stores/schemas/step_run_schemas.py +3 -3
- zenml/zen_stores/schemas/trigger_schemas.py +1 -1
- zenml/zen_stores/sql_zen_store.py +422 -145
- zenml/zen_stores/template_utils.py +3 -1
- {zenml_nightly-0.66.0.dev20240928.dist-info → zenml_nightly-0.68.1.dev20241102.dist-info}/METADATA +20 -18
- {zenml_nightly-0.66.0.dev20240928.dist-info → zenml_nightly-0.68.1.dev20241102.dist-info}/RECORD +343 -505
- {zenml_nightly-0.66.0.dev20240928.dist-info → zenml_nightly-0.68.1.dev20241102.dist-info}/WHEEL +1 -1
- zenml/api.py +0 -60
- zenml/cli/stack_recipes.py +0 -469
- zenml/lineage_graph/__init__.py +0 -34
- zenml/lineage_graph/lineage_graph.py +0 -244
- zenml/lineage_graph/node/__init__.py +0 -32
- zenml/lineage_graph/node/artifact_node.py +0 -51
- zenml/lineage_graph/node/step_node.py +0 -41
- zenml/model/model_version.py +0 -38
- zenml/new/pipelines/code_archive.py +0 -157
- zenml/new/pipelines/pipeline_decorator.py +0 -118
- zenml/new/steps/step_decorator.py +0 -176
- zenml/pipelines/base_pipeline.py +0 -273
- zenml/post_execution/__init__.py +0 -30
- zenml/post_execution/pipeline.py +0 -55
- zenml/post_execution/pipeline_run.py +0 -55
- zenml/services/terraform/__init__.py +0 -14
- zenml/services/terraform/terraform_service.py +0 -441
- zenml/steps/external_artifact.py +0 -26
- zenml/steps/step_environment.py +0 -108
- zenml/steps/step_output.py +0 -36
- zenml/utils/mlstacks_utils.py +0 -635
- zenml/utils/terraform_utils.py +0 -43
- zenml/zen_server/dashboard/assets/@radix-DnFH_oo1.js +0 -85
- zenml/zen_server/dashboard/assets/@react-router-APVeuk-U.js +0 -29
- zenml/zen_server/dashboard/assets/@reactflow-ytavUpwh.js +0 -17
- zenml/zen_server/dashboard/assets/@tanstack-QbMbTrh5.js +0 -22
- zenml/zen_server/dashboard/assets/ComponentBadge-gKR1OIwG.js +0 -1
- zenml/zen_server/dashboard/assets/ExecutionStatus-D6r6aK8J.js +0 -1
- zenml/zen_server/dashboard/assets/MarkdownVisualization-DS05sfBm.js +0 -14
- zenml/zen_server/dashboard/assets/SearchField-BzmfxS0L.js +0 -1
- zenml/zen_server/dashboard/assets/all-pipeline-runs-query-BA3R2Sey.js +0 -1
- zenml/zen_server/dashboard/assets/delete-run-CP0pcJ3U.js +0 -1
- zenml/zen_server/dashboard/assets/index-BhJ6ZJxv.css +0 -1
- zenml/zen_server/dashboard/assets/index-Ci0nJ8EZ.js +0 -55
- zenml/zen_server/dashboard/assets/index.esm-BE1uqCX5.js +0 -1
- zenml/zen_server/dashboard/assets/inter-cyrillic-400-normal-Df6ckaLK.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-400-normal-JrS_4yms.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-500-normal-BRrLR67x.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-500-normal-DskEQOpE.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-600-normal-DDpWG8g5.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-600-normal-iz1--dBq.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-400-normal-CzG7Kr3z.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-400-normal-tyfMZHQw.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-500-normal-DOnSzjnx.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-500-normal-Xebo2OyJ.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-600-normal-DpA2xaRd.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-600-normal-KAwcVx6H.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-400-normal-DQXyrmoy.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-400-normal-DvIPHDQ7.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-500-normal-BjpBGs91.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-500-normal-CmOavsDc.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-600-normal-B-l8Lzzd.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-600-normal-BLZsI-P3.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-400-normal-CIdlr5YK.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-400-normal-_Rr29XE2.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-500-normal-2pdUafRD.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-500-normal-Dtavx3qw.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-600-normal-BmtRFZgT.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-600-normal-CkBLDEl_.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-400-normal-BT1H-PT_.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-400-normal-Cdi8t5Mu.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-500-normal-D4I8BKCx.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-500-normal-kWhwEdDH.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-600-normal-B2Ssfs8e.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-600-normal-Dbvh0wvx.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-400-normal-8tIzm-yw.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-400-normal-D3W-OpO-.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-500-normal-B9u8Q_zH.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-500-normal-SuUkSNTU.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-600-normal-Dg0Bk0Yr.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-600-normal-ao35dkSb.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-400-normal-Cnt0N5Vm.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-400-normal-DIOGfGLL.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-500-normal-0i6yoQMg.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-500-normal-5IkPJ6Nk.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-600-normal-BQ_dbMbg.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-600-normal-DjnxGF-L.woff2 +0 -0
- zenml/zen_server/dashboard/assets/not-found-DbjllLY_.js +0 -1
- zenml/zen_server/dashboard/assets/page-B1n7_W7z.js +0 -1
- zenml/zen_server/dashboard/assets/page-BZZhLo2u.js +0 -1
- zenml/zen_server/dashboard/assets/page-Bbf_oBjn.js +0 -1
- zenml/zen_server/dashboard/assets/page-BjjuBvZG.js +0 -9
- zenml/zen_server/dashboard/assets/page-CHaQkFK5.js +0 -1
- zenml/zen_server/dashboard/assets/page-CS0SYFK8.js +0 -1
- zenml/zen_server/dashboard/assets/page-DGM1CbYT.js +0 -2
- zenml/zen_server/dashboard/assets/page-DOmIZ2ra.js +0 -1
- zenml/zen_server/dashboard/assets/page-DYVmJ9_w.js +0 -3
- zenml/zen_server/dashboard/assets/page-Dwow2doB.js +0 -1
- zenml/zen_server/dashboard/assets/stack-detail-query-DQcyzG-2.js +0 -1
- zenml/zen_server/dashboard/assets/zod-uFd1wBcd.js +0 -1
- zenml/zen_server/dashboard_legacy/_redirects +0 -1
- zenml/zen_server/dashboard_legacy/asset-manifest.json +0 -131
- zenml/zen_server/dashboard_legacy/favicon.ico +0 -0
- zenml/zen_server/dashboard_legacy/index.html +0 -1
- zenml/zen_server/dashboard_legacy/manifest.json +0 -25
- zenml/zen_server/dashboard_legacy/precache-manifest.6d320abb70db612019dda6c4948e7a90.js +0 -462
- zenml/zen_server/dashboard_legacy/robots.txt +0 -2
- zenml/zen_server/dashboard_legacy/service-worker.js +0 -39
- zenml/zen_server/dashboard_legacy/static/css/2.5b37d44a.chunk.css +0 -16
- zenml/zen_server/dashboard_legacy/static/css/2.5b37d44a.chunk.css.map +0 -1
- zenml/zen_server/dashboard_legacy/static/css/main.e79dff04.chunk.css +0 -2
- zenml/zen_server/dashboard_legacy/static/css/main.e79dff04.chunk.css.map +0 -1
- zenml/zen_server/dashboard_legacy/static/js/2.7934458d.chunk.js +0 -3
- zenml/zen_server/dashboard_legacy/static/js/2.7934458d.chunk.js.LICENSE.txt +0 -95
- zenml/zen_server/dashboard_legacy/static/js/2.7934458d.chunk.js.map +0 -1
- zenml/zen_server/dashboard_legacy/static/js/main.fa9299d5.chunk.js +0 -2
- zenml/zen_server/dashboard_legacy/static/js/main.fa9299d5.chunk.js.map +0 -1
- zenml/zen_server/dashboard_legacy/static/js/runtime-main.bfca2edd.js +0 -2
- zenml/zen_server/dashboard_legacy/static/js/runtime-main.bfca2edd.js.map +0 -1
- zenml/zen_server/dashboard_legacy/static/media/AlertTriangle.28aee535.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/ArrowSquareOut.abfb9bc7.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/Back.86c23a22.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/BookOpen.5cb101ff.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/BoundingBox.1eb98717.svg +0 -10
- zenml/zen_server/dashboard_legacy/static/media/Burger.9b1c67d7.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Cached.2381fb8d.svg +0 -1
- zenml/zen_server/dashboard_legacy/static/media/Calendar.356e11c7.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/ChartBarHorizontal.0247447b.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/ChartLine.0d79e18d.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/ChatDots.2e1c9211.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/Check.dad6beb2.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/CheckCircleFilled.c19566d0.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Checkbox.af50e31e.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/ChevronDown.f860ce32.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/ChevronDownLight.6642d756.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/ChevronLeft.f6edfcdb.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/CircleCheck.f98fd6ca.svg +0 -1
- zenml/zen_server/dashboard_legacy/static/media/Clock.ffc9de95.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Close.74e9efbc.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/CloseWithBorder.6960930a.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/CloseWithoutBorder.cd6f71df.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/CloudArrowUp.0aecb235.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/Code.ef0f33b5.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Config.0be63f8a.svg +0 -1
- zenml/zen_server/dashboard_legacy/static/media/Connector.9fd46ef1.svg +0 -10
- zenml/zen_server/dashboard_legacy/static/media/Copy.36e2112a.svg +0 -1
- zenml/zen_server/dashboard_legacy/static/media/Dashboard.d05787e0.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Data.b1c3b5f8.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Delete.3c361b28.svg +0 -8
- zenml/zen_server/dashboard_legacy/static/media/Docs.7541d478.svg +0 -7
- zenml/zen_server/dashboard_legacy/static/media/Download.fba04d87.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/Edit.490eb294.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/EmptyRightArrow.23749d01.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Example.6396cd37.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/Extension.1394cd4a.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Eye.d9e4ee62.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/Failed.0213c1a0.svg +0 -1
- zenml/zen_server/dashboard_legacy/static/media/FileText.1f15bacd.svg +0 -7
- zenml/zen_server/dashboard_legacy/static/media/Filter.ab6b9c0d.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Folders.12b29887.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/FunnelFill.6df4c143.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/GitCommit.7dd9c2aa.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/GitHub_Logo.cefc2023.png +0 -0
- zenml/zen_server/dashboard_legacy/static/media/Graph.2c63a892.svg +0 -11
- zenml/zen_server/dashboard_legacy/static/media/History.08329240.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Home.0843b0d5.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/ImageBuilder.ea762d9c.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/InProgress.304a0edc.svg +0 -1
- zenml/zen_server/dashboard_legacy/static/media/Info.9fe10c5c.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/KeyboardReturn.491afbe3.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Link.72bbb55d.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/Lock.30f5e1fe.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/Lock2.a769ea52.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/LockKey.92f21621.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/Logs.8bf4d005.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/MinusCircle.4188f418.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/ModelRegistry.f0de050a.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/MultiUser.a2ba7c67.svg +0 -10
- zenml/zen_server/dashboard_legacy/static/media/PaginationFirst.92628634.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/PaginationLast.00d3c732.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/PaginationNext.86158845.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/PaginationPrev.60c18a88.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Pen.f2d831d4.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/PhotoCamera.179d6d4c.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Pipeline.30d298b0.svg +0 -7
- zenml/zen_server/dashboard_legacy/static/media/Plus.5aa1c16b.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/PlusCircle.92d860dd.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/Repositories.71a36b8c.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/RightArrow.f30d3871.svg +0 -29
- zenml/zen_server/dashboard_legacy/static/media/Rocket.63bf7b9d.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/RocketLaunch.1bff2b59.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/Rubik-Medium.c87313aa.ttf +0 -0
- zenml/zen_server/dashboard_legacy/static/media/Rubik-Regular.b3d0902b.ttf +0 -0
- zenml/zen_server/dashboard_legacy/static/media/Run.daec4fb2.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/Search.d1afcce5.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/Settings.59ca73ae.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/Share2.46c3ff66.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/SignOut.6aa718c5.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/SimplePlus.5cf7ec20.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/SingleUser.bef3a095.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/SourceCodePro-Regular.b484b32f.ttf +0 -0
- zenml/zen_server/dashboard_legacy/static/media/Stack.19b604ac.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/StackComponent.b1ba90b5.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/Star.f0c25022.svg +0 -9
- zenml/zen_server/dashboard_legacy/static/media/StarOutline.94ca8cd9.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Storefront.4b4796fe.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Stream.543e3039.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/SupportAgent.510ddf1f.svg +0 -8
- zenml/zen_server/dashboard_legacy/static/media/Table.77033750.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/Tool.d5785486.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/UserPlus.741a99d7.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/Verified.0625b2a0.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/addNew.4fb6c939.svg +0 -8
- zenml/zen_server/dashboard_legacy/static/media/arrowClose.cbd53f3f.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/arrowOpen.6ceef0af.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/check_small.30bc0138.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/circleArrowSideClose.98d6013e.svg +0 -18
- zenml/zen_server/dashboard_legacy/static/media/circleArrowSideOpen.63653df6.svg +0 -18
- zenml/zen_server/dashboard_legacy/static/media/image.104fd14b.png +0 -0
- zenml/zen_server/dashboard_legacy/static/media/imageAddIcon.e83004a9.svg +0 -7
- zenml/zen_server/dashboard_legacy/static/media/logo.93333e5c.svg +0 -1
- zenml/zen_server/dashboard_legacy/static/media/logo_small.4204397d.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/logo_white.d4b4414e.svg +0 -20
- zenml/zen_server/dashboard_legacy/static/media/notConnected.5e2c8ea7.svg +0 -8
- zenml/zen_server/dashboard_legacy/static/media/plugin-fallback.72c294e6.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/share.bcd998b0.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/stars.08a9b19a.svg +0 -8
- zenml/zen_server/deploy/terraform/__init__.py +0 -41
- zenml/zen_server/deploy/terraform/providers/aws_provider.py +0 -61
- zenml/zen_server/deploy/terraform/providers/azure_provider.py +0 -59
- zenml/zen_server/deploy/terraform/providers/gcp_provider.py +0 -59
- zenml/zen_server/deploy/terraform/providers/terraform_provider.py +0 -331
- zenml/zen_server/deploy/terraform/recipes/aws/.gitignore +0 -8
- zenml/zen_server/deploy/terraform/recipes/aws/helm.tf +0 -20
- zenml/zen_server/deploy/terraform/recipes/aws/ingress.tf +0 -30
- zenml/zen_server/deploy/terraform/recipes/aws/outputs.tf +0 -7
- zenml/zen_server/deploy/terraform/recipes/aws/printf.cmd +0 -2
- zenml/zen_server/deploy/terraform/recipes/aws/sql.tf +0 -62
- zenml/zen_server/deploy/terraform/recipes/aws/terraform.tf +0 -44
- zenml/zen_server/deploy/terraform/recipes/aws/variables.tf +0 -167
- zenml/zen_server/deploy/terraform/recipes/aws/vpc.tf +0 -47
- zenml/zen_server/deploy/terraform/recipes/aws/zen_server.tf +0 -103
- zenml/zen_server/deploy/terraform/recipes/azure/.gitignore +0 -8
- zenml/zen_server/deploy/terraform/recipes/azure/helm.tf +0 -20
- zenml/zen_server/deploy/terraform/recipes/azure/ingress.tf +0 -30
- zenml/zen_server/deploy/terraform/recipes/azure/key_vault.tf +0 -73
- zenml/zen_server/deploy/terraform/recipes/azure/outputs.tf +0 -7
- zenml/zen_server/deploy/terraform/recipes/azure/printf.cmd +0 -2
- zenml/zen_server/deploy/terraform/recipes/azure/rg.tf +0 -36
- zenml/zen_server/deploy/terraform/recipes/azure/sql.tf +0 -65
- zenml/zen_server/deploy/terraform/recipes/azure/terraform.tf +0 -52
- zenml/zen_server/deploy/terraform/recipes/azure/variables.tf +0 -176
- zenml/zen_server/deploy/terraform/recipes/azure/zen_server.tf +0 -103
- zenml/zen_server/deploy/terraform/recipes/gcp/.gitignore +0 -8
- zenml/zen_server/deploy/terraform/recipes/gcp/helm.tf +0 -20
- zenml/zen_server/deploy/terraform/recipes/gcp/ingress.tf +0 -30
- zenml/zen_server/deploy/terraform/recipes/gcp/outputs.tf +0 -7
- zenml/zen_server/deploy/terraform/recipes/gcp/printf.cmd +0 -2
- zenml/zen_server/deploy/terraform/recipes/gcp/sql.tf +0 -64
- zenml/zen_server/deploy/terraform/recipes/gcp/terraform.tf +0 -44
- zenml/zen_server/deploy/terraform/recipes/gcp/variables.tf +0 -171
- zenml/zen_server/deploy/terraform/recipes/gcp/zen_server.tf +0 -114
- zenml/zen_server/deploy/terraform/terraform_zen_server.py +0 -246
- /zenml/{new/pipelines → pipelines}/build_utils.py +0 -0
- /zenml/{new/steps → steps}/decorated_step.py +0 -0
- {zenml_nightly-0.66.0.dev20240928.dist-info → zenml_nightly-0.68.1.dev20241102.dist-info}/LICENSE +0 -0
- {zenml_nightly-0.66.0.dev20240928.dist-info → zenml_nightly-0.68.1.dev20241102.dist-info}/entry_points.txt +0 -0
@@ -13,7 +13,7 @@
|
|
13
13
|
# permissions and limitations under the License.
|
14
14
|
"""Pipeline run configuration class."""
|
15
15
|
|
16
|
-
from typing import Any, Dict, Optional, Union
|
16
|
+
from typing import Any, Dict, List, Optional, Union
|
17
17
|
from uuid import UUID
|
18
18
|
|
19
19
|
from pydantic import Field, SerializeAsAny
|
@@ -45,6 +45,7 @@ class PipelineRunConfiguration(
|
|
45
45
|
)
|
46
46
|
steps: Dict[str, StepConfigurationUpdate] = {}
|
47
47
|
settings: Dict[str, SerializeAsAny[BaseSettings]] = {}
|
48
|
+
tags: Optional[List[str]] = None
|
48
49
|
extra: Dict[str, Any] = {}
|
49
50
|
model: Optional[Model] = None
|
50
51
|
parameters: Optional[Dict[str, Any]] = None
|
zenml/config/server_config.py
CHANGED
@@ -29,6 +29,7 @@ from zenml.constants import (
|
|
29
29
|
DEFAULT_ZENML_SERVER_LOGIN_RATE_LIMIT_DAY,
|
30
30
|
DEFAULT_ZENML_SERVER_LOGIN_RATE_LIMIT_MINUTE,
|
31
31
|
DEFAULT_ZENML_SERVER_MAX_DEVICE_AUTH_ATTEMPTS,
|
32
|
+
DEFAULT_ZENML_SERVER_MAX_REQUEST_BODY_SIZE_IN_BYTES,
|
32
33
|
DEFAULT_ZENML_SERVER_NAME,
|
33
34
|
DEFAULT_ZENML_SERVER_PIPELINE_RUN_AUTH_WINDOW,
|
34
35
|
DEFAULT_ZENML_SERVER_SECURE_HEADERS_CACHE,
|
@@ -40,7 +41,6 @@ from zenml.constants import (
|
|
40
41
|
DEFAULT_ZENML_SERVER_SECURE_HEADERS_XFO,
|
41
42
|
DEFAULT_ZENML_SERVER_SECURE_HEADERS_XXP,
|
42
43
|
DEFAULT_ZENML_SERVER_THREAD_POOL_SIZE,
|
43
|
-
DEFAULT_ZENML_SERVER_USE_LEGACY_DASHBOARD,
|
44
44
|
ENV_ZENML_SERVER_PREFIX,
|
45
45
|
)
|
46
46
|
from zenml.enums import AuthScheme
|
@@ -217,9 +217,6 @@ class ServerConfiguration(BaseModel):
|
|
217
217
|
one of the reserved values `disabled`, `no`, `none`, `false`, `off`
|
218
218
|
or to an empty string, the `Permissions-Policy` header will not be
|
219
219
|
included in responses.
|
220
|
-
use_legacy_dashboard: Whether to use the legacy dashboard. If set to
|
221
|
-
`True`, the dashboard will be used with the old UI. If set to
|
222
|
-
`False`, the new dashboard will be used.
|
223
220
|
server_name: The name of the ZenML server. Used only during initial
|
224
221
|
deployment. Can be changed later as a part of the server settings.
|
225
222
|
display_announcements: Whether to display announcements about ZenML in
|
@@ -231,6 +228,8 @@ class ServerConfiguration(BaseModel):
|
|
231
228
|
auto_activate: Whether to automatically activate the server and create a
|
232
229
|
default admin user account with an empty password during the initial
|
233
230
|
deployment.
|
231
|
+
max_request_body_size_in_bytes: The maximum size of the request body in
|
232
|
+
bytes. If not specified, the default value of 256 Kb will be used.
|
234
233
|
"""
|
235
234
|
|
236
235
|
deployment_type: ServerDeploymentType = ServerDeploymentType.OTHER
|
@@ -310,7 +309,6 @@ class ServerConfiguration(BaseModel):
|
|
310
309
|
default=DEFAULT_ZENML_SERVER_SECURE_HEADERS_PERMISSIONS,
|
311
310
|
union_mode="left_to_right",
|
312
311
|
)
|
313
|
-
use_legacy_dashboard: bool = DEFAULT_ZENML_SERVER_USE_LEGACY_DASHBOARD
|
314
312
|
|
315
313
|
server_name: str = DEFAULT_ZENML_SERVER_NAME
|
316
314
|
display_announcements: bool = True
|
@@ -319,6 +317,10 @@ class ServerConfiguration(BaseModel):
|
|
319
317
|
|
320
318
|
thread_pool_size: int = DEFAULT_ZENML_SERVER_THREAD_POOL_SIZE
|
321
319
|
|
320
|
+
max_request_body_size_in_bytes: int = (
|
321
|
+
DEFAULT_ZENML_SERVER_MAX_REQUEST_BODY_SIZE_IN_BYTES
|
322
|
+
)
|
323
|
+
|
322
324
|
_deployment_id: Optional[UUID] = None
|
323
325
|
|
324
326
|
@model_validator(mode="before")
|
@@ -31,6 +31,7 @@ from pydantic import (
|
|
31
31
|
model_validator,
|
32
32
|
)
|
33
33
|
|
34
|
+
from zenml.artifacts.artifact_config import ArtifactConfig
|
34
35
|
from zenml.artifacts.external_artifact_config import (
|
35
36
|
ExternalArtifactConfiguration,
|
36
37
|
)
|
@@ -59,6 +60,7 @@ class PartialArtifactConfiguration(StrictBaseModel):
|
|
59
60
|
# TODO: This could be moved to the `PipelineDeployment` as it's the same
|
60
61
|
# for all steps/outputs
|
61
62
|
default_materializer_source: Optional[SourceWithValidator] = None
|
63
|
+
artifact_config: Optional[ArtifactConfig] = None
|
62
64
|
|
63
65
|
@model_validator(mode="before")
|
64
66
|
@classmethod
|
zenml/constants.py
CHANGED
@@ -134,6 +134,7 @@ APP_NAME = "zenml"
|
|
134
134
|
# Environment variables
|
135
135
|
ENV_ZENML_LOGGING_COLORS_DISABLED = "ZENML_LOGGING_COLORS_DISABLED"
|
136
136
|
ENV_ZENML_ANALYTICS_OPT_IN = "ZENML_ANALYTICS_OPT_IN"
|
137
|
+
ENV_ZENML_USER_ID = "ZENML_USER_ID"
|
137
138
|
ENV_ZENML_CONFIG_PATH = "ZENML_CONFIG_PATH"
|
138
139
|
ENV_ZENML_DEBUG = "ZENML_DEBUG"
|
139
140
|
ENV_ZENML_LOGGING_VERBOSITY = "ZENML_LOGGING_VERBOSITY"
|
@@ -163,7 +164,6 @@ ENV_ZENML_DISABLE_CLIENT_SERVER_MISMATCH_WARNING = (
|
|
163
164
|
ENV_ZENML_DISABLE_WORKSPACE_WARNINGS = "ZENML_DISABLE_WORKSPACE_WARNINGS"
|
164
165
|
ENV_ZENML_SKIP_IMAGE_BUILDER_DEFAULT = "ZENML_SKIP_IMAGE_BUILDER_DEFAULT"
|
165
166
|
ENV_ZENML_SERVER = "ZENML_SERVER"
|
166
|
-
ENV_ZENML_LOCAL_SERVER = "ZENML_LOCAL_SERVER"
|
167
167
|
ENV_ZENML_ENFORCE_TYPE_ANNOTATIONS = "ZENML_ENFORCE_TYPE_ANNOTATIONS"
|
168
168
|
ENV_ZENML_ENABLE_IMPLICIT_AUTH_METHODS = "ZENML_ENABLE_IMPLICIT_AUTH_METHODS"
|
169
169
|
ENV_ZENML_DISABLE_STEP_LOGS_STORAGE = "ZENML_DISABLE_STEP_LOGS_STORAGE"
|
@@ -181,13 +181,12 @@ ENV_ZENML_SERVER_AUTH_SCHEME = f"{ENV_ZENML_SERVER_PREFIX}AUTH_SCHEME"
|
|
181
181
|
ENV_ZENML_SERVER_REPORTABLE_RESOURCES = (
|
182
182
|
f"{ENV_ZENML_SERVER_PREFIX}REPORTABLE_RESOURCES"
|
183
183
|
)
|
184
|
-
ENV_ZENML_SERVER_USE_LEGACY_DASHBOARD = (
|
185
|
-
f"{ENV_ZENML_SERVER_PREFIX}USE_LEGACY_DASHBOARD"
|
186
|
-
)
|
187
184
|
ENV_ZENML_SERVER_AUTO_ACTIVATE = f"{ENV_ZENML_SERVER_PREFIX}AUTO_ACTIVATE"
|
188
185
|
ENV_ZENML_RUN_SINGLE_STEPS_WITHOUT_STACK = (
|
189
186
|
"ZENML_RUN_SINGLE_STEPS_WITHOUT_STACK"
|
190
187
|
)
|
188
|
+
ENV_ZENML_PREVENT_CLIENT_SIDE_CACHING = "ZENML_PREVENT_CLIENT_SIDE_CACHING"
|
189
|
+
ENV_ZENML_DISABLE_CREDENTIALS_DISK_CACHING = "DISABLE_CREDENTIALS_DISK_CACHING"
|
191
190
|
|
192
191
|
# Logging variables
|
193
192
|
IS_DEBUG_ENV: bool = handle_bool_env_var(ENV_ZENML_DEBUG, default=False)
|
@@ -253,7 +252,7 @@ DEFAULT_SERVICE_START_STOP_TIMEOUT = 60
|
|
253
252
|
DEFAULT_LOCAL_SERVICE_IP_ADDRESS = "127.0.0.1"
|
254
253
|
ZEN_SERVER_ENTRYPOINT = "zenml.zen_server.zen_server_api:app"
|
255
254
|
|
256
|
-
|
255
|
+
CODE_HASH_PARAMETER_NAME = "step_source"
|
257
256
|
|
258
257
|
# Server settings
|
259
258
|
DEFAULT_ZENML_SERVER_NAME = "default"
|
@@ -315,8 +314,8 @@ DEFAULT_ZENML_SERVER_SECURE_HEADERS_PERMISSIONS = (
|
|
315
314
|
"payment=(), sync-xhr=(), usb=()"
|
316
315
|
)
|
317
316
|
DEFAULT_ZENML_SERVER_SECURE_HEADERS_REPORT_TO = "default"
|
318
|
-
DEFAULT_ZENML_SERVER_USE_LEGACY_DASHBOARD = False
|
319
317
|
DEFAULT_ZENML_SERVER_REPORT_USER_ACTIVITY_TO_DB_SECONDS = 30
|
318
|
+
DEFAULT_ZENML_SERVER_MAX_REQUEST_BODY_SIZE_IN_BYTES = 256 * 1024 * 1024
|
320
319
|
|
321
320
|
# Configurations to decide which resources report their usage and check for
|
322
321
|
# entitlement in the case of a cloud deployment. Expected Format is this:
|
@@ -338,6 +337,7 @@ API_TOKEN = "/api_token"
|
|
338
337
|
ARTIFACTS = "/artifacts"
|
339
338
|
ARTIFACT_VERSIONS = "/artifact_versions"
|
340
339
|
ARTIFACT_VISUALIZATIONS = "/artifact_visualizations"
|
340
|
+
AUTH = "/auth"
|
341
341
|
CODE_REFERENCES = "/code_references"
|
342
342
|
CODE_REPOSITORIES = "/code_repositories"
|
343
343
|
COMPONENT_TYPES = "/component-types"
|
@@ -352,7 +352,6 @@ EVENT_FLAVORS = "/event-flavors"
|
|
352
352
|
EVENT_SOURCES = "/event-sources"
|
353
353
|
FLAVORS = "/flavors"
|
354
354
|
GET_OR_CREATE = "/get-or-create"
|
355
|
-
GRAPH = "/graph"
|
356
355
|
HEALTH = "/health"
|
357
356
|
INFO = "/info"
|
358
357
|
LOGIN = "/login"
|
@@ -445,33 +444,6 @@ KUBERNETES_CLUSTER_RESOURCE_TYPE = "kubernetes-cluster"
|
|
445
444
|
|
446
445
|
# Stack Recipe constants
|
447
446
|
STACK_RECIPES_GITHUB_REPO = "https://github.com/zenml-io/mlops-stacks.git"
|
448
|
-
ALPHA_MESSAGE = (
|
449
|
-
"The mlstacks tool/package is in alpha and actively being developed. "
|
450
|
-
"Please avoid running mission-critical workloads on resources deployed "
|
451
|
-
"through these commands. If you encounter any problems, create an issue "
|
452
|
-
f"on the repository {STACK_RECIPES_GITHUB_REPO} and we'll help you out!"
|
453
|
-
)
|
454
|
-
NOT_INSTALLED_MESSAGE = (
|
455
|
-
"The prerequisites for using `mlstacks` (the `mlstacks` and "
|
456
|
-
"`python-terraform` packages seem to be unavailable on your machine "
|
457
|
-
"and/or in your environment. To install the missing dependencies: \n\n"
|
458
|
-
"`pip install mlstacks`"
|
459
|
-
)
|
460
|
-
TERRAFORM_NOT_INSTALLED_MESSAGE = (
|
461
|
-
"Terraform appears not to be installed on your machine and/or in your "
|
462
|
-
"environment. Please install Terraform and try again."
|
463
|
-
)
|
464
|
-
STACK_RECIPE_MODULAR_RECIPES = ["aws", "gcp", "k3d"]
|
465
|
-
MLSTACKS_SUPPORTED_STACK_COMPONENTS = [
|
466
|
-
"artifact_store",
|
467
|
-
"container_registry",
|
468
|
-
"experiment_tracker",
|
469
|
-
"orchestrator",
|
470
|
-
"model_deployer",
|
471
|
-
"mlops_platform",
|
472
|
-
"step_operator",
|
473
|
-
]
|
474
|
-
|
475
447
|
|
476
448
|
# Parameters for internal ZenML Models
|
477
449
|
TEXT_FIELD_MAX_LENGTH = 65535
|
@@ -498,11 +470,3 @@ BANNED_NAME_CHARACTERS = "\t\n\r\v\f"
|
|
498
470
|
|
499
471
|
|
500
472
|
STACK_DEPLOYMENT_API_TOKEN_EXPIRATION = 60 * 6 # 6 hours
|
501
|
-
|
502
|
-
# ZenML Pro
|
503
|
-
ZENML_PRO_CONNECTION_ISSUES_SUSPENDED_PAUSED_TENANT_HINT = (
|
504
|
-
"\nHINT: Since you are trying to communicate with the ZenML Pro Tenant, "
|
505
|
-
"please make sure that your tenant is in RUNNING state on your "
|
506
|
-
"Organization page. If the tenant is PAUSED you can `Resume` it via UI "
|
507
|
-
"and try again."
|
508
|
-
)
|
zenml/enums.py
CHANGED
@@ -198,11 +198,8 @@ class SecretValidationLevel(StrEnum):
|
|
198
198
|
class ServerProviderType(StrEnum):
|
199
199
|
"""ZenML server providers."""
|
200
200
|
|
201
|
-
|
201
|
+
DAEMON = "daemon"
|
202
202
|
DOCKER = "docker"
|
203
|
-
AWS = "aws"
|
204
|
-
GCP = "gcp"
|
205
|
-
AZURE = "azure"
|
206
203
|
|
207
204
|
|
208
205
|
class AnalyticsEventSource(StrEnum):
|
zenml/environment.py
CHANGED
@@ -16,7 +16,7 @@
|
|
16
16
|
import os
|
17
17
|
import platform
|
18
18
|
from pathlib import Path
|
19
|
-
from typing import
|
19
|
+
from typing import Dict
|
20
20
|
|
21
21
|
import distro
|
22
22
|
|
@@ -26,9 +26,6 @@ from zenml.enums import EnvironmentType
|
|
26
26
|
from zenml.logger import get_logger
|
27
27
|
from zenml.utils.singleton import SingletonMetaClass
|
28
28
|
|
29
|
-
if TYPE_CHECKING:
|
30
|
-
from zenml.steps import StepEnvironment
|
31
|
-
|
32
29
|
logger = get_logger(__name__)
|
33
30
|
|
34
31
|
|
@@ -128,22 +125,6 @@ class Environment(metaclass=SingletonMetaClass):
|
|
128
125
|
only get called once. All following `Environment()` calls will return
|
129
126
|
the previously initialized instance.
|
130
127
|
"""
|
131
|
-
self._components: Dict[str, "BaseEnvironmentComponent"] = {}
|
132
|
-
|
133
|
-
@property
|
134
|
-
def step_is_running(self) -> bool:
|
135
|
-
"""Returns if a step is currently running.
|
136
|
-
|
137
|
-
Returns:
|
138
|
-
`True` if a step is currently running, `False` otherwise.
|
139
|
-
"""
|
140
|
-
from zenml.steps import STEP_ENVIRONMENT_NAME
|
141
|
-
|
142
|
-
logger.warning(
|
143
|
-
"`Environment().step_is_running` is deprecated and will be "
|
144
|
-
"removed in a future release."
|
145
|
-
)
|
146
|
-
return self.has_component(STEP_ENVIRONMENT_NAME)
|
147
128
|
|
148
129
|
@staticmethod
|
149
130
|
def get_system_info() -> Dict[str, str]:
|
@@ -385,298 +366,3 @@ class Environment(metaclass=SingletonMetaClass):
|
|
385
366
|
"LIGHTNING_CLOUD_URL" in os.environ
|
386
367
|
and "LIGHTNING_CLOUDSPACE_HOST" in os.environ
|
387
368
|
)
|
388
|
-
|
389
|
-
def register_component(
|
390
|
-
self, component: "BaseEnvironmentComponent"
|
391
|
-
) -> "BaseEnvironmentComponent":
|
392
|
-
"""Registers an environment component.
|
393
|
-
|
394
|
-
Args:
|
395
|
-
component: a BaseEnvironmentComponent instance.
|
396
|
-
|
397
|
-
Returns:
|
398
|
-
The newly registered environment component, or the environment
|
399
|
-
component that was already registered under the given name.
|
400
|
-
"""
|
401
|
-
if component.NAME not in self._components:
|
402
|
-
self._components[component.NAME] = component
|
403
|
-
logger.debug(f"Registered environment component {component.NAME}")
|
404
|
-
return component
|
405
|
-
else:
|
406
|
-
logger.warning(
|
407
|
-
f"Ignoring attempt to overwrite an existing Environment "
|
408
|
-
f"component registered under the name {component.NAME}."
|
409
|
-
)
|
410
|
-
return self._components[component.NAME]
|
411
|
-
|
412
|
-
def deregister_component(
|
413
|
-
self, component: "BaseEnvironmentComponent"
|
414
|
-
) -> None:
|
415
|
-
"""Deregisters an environment component.
|
416
|
-
|
417
|
-
Args:
|
418
|
-
component: a BaseEnvironmentComponent instance.
|
419
|
-
"""
|
420
|
-
if self._components.get(component.NAME) is component:
|
421
|
-
del self._components[component.NAME]
|
422
|
-
logger.debug(
|
423
|
-
f"Deregistered environment component {component.NAME}"
|
424
|
-
)
|
425
|
-
|
426
|
-
else:
|
427
|
-
logger.warning(
|
428
|
-
f"Ignoring attempt to deregister an inexistent Environment "
|
429
|
-
f"component with the name {component.NAME}."
|
430
|
-
)
|
431
|
-
|
432
|
-
def get_component(self, name: str) -> Optional["BaseEnvironmentComponent"]:
|
433
|
-
"""Get the environment component with a known name.
|
434
|
-
|
435
|
-
Args:
|
436
|
-
name: the environment component name.
|
437
|
-
|
438
|
-
Returns:
|
439
|
-
The environment component that is registered under the given name,
|
440
|
-
or None if no such component is registered.
|
441
|
-
"""
|
442
|
-
return self._components.get(name)
|
443
|
-
|
444
|
-
def get_components(
|
445
|
-
self,
|
446
|
-
) -> Dict[str, "BaseEnvironmentComponent"]:
|
447
|
-
"""Get all registered environment components.
|
448
|
-
|
449
|
-
Returns:
|
450
|
-
A dictionary containing all registered environment components.
|
451
|
-
"""
|
452
|
-
return self._components.copy()
|
453
|
-
|
454
|
-
def has_component(self, name: str) -> bool:
|
455
|
-
"""Check if the environment component with a known name is available.
|
456
|
-
|
457
|
-
Args:
|
458
|
-
name: the environment component name.
|
459
|
-
|
460
|
-
Returns:
|
461
|
-
`True` if an environment component with the given name is
|
462
|
-
currently registered for the given name, `False` otherwise.
|
463
|
-
"""
|
464
|
-
return name in self._components
|
465
|
-
|
466
|
-
def __getitem__(self, name: str) -> "BaseEnvironmentComponent":
|
467
|
-
"""Get the environment component with the given name.
|
468
|
-
|
469
|
-
Args:
|
470
|
-
name: the environment component name.
|
471
|
-
|
472
|
-
Returns:
|
473
|
-
`BaseEnvironmentComponent` instance that was registered for the
|
474
|
-
given name.
|
475
|
-
|
476
|
-
Raises:
|
477
|
-
KeyError: if no environment component is registered for the given
|
478
|
-
name.
|
479
|
-
"""
|
480
|
-
from zenml.steps import STEP_ENVIRONMENT_NAME
|
481
|
-
|
482
|
-
if name == STEP_ENVIRONMENT_NAME:
|
483
|
-
logger.warning(
|
484
|
-
"The `StepEnvironment` class and corresponding "
|
485
|
-
"`Environment.step_environment` property are deprecated and "
|
486
|
-
"will be removed in a future release. Please use the "
|
487
|
-
" `StepContext` to access information about the current run "
|
488
|
-
"instead, as shown here: "
|
489
|
-
"https://docs.zenml.io/how-to/track-metrics-metadata/fetch-metadata-within-steps"
|
490
|
-
)
|
491
|
-
if name in self._components:
|
492
|
-
return self._components[name]
|
493
|
-
else:
|
494
|
-
raise KeyError(
|
495
|
-
f"No environment component with name {name} is currently "
|
496
|
-
f"registered. This could happen for example if you're trying "
|
497
|
-
f"to access an environment component that is only available "
|
498
|
-
f"in the context of a step function, or, in the case of "
|
499
|
-
f"globally available environment components, if a relevant "
|
500
|
-
f"integration has not been activated yet."
|
501
|
-
)
|
502
|
-
|
503
|
-
@property
|
504
|
-
def step_environment(self) -> "StepEnvironment":
|
505
|
-
"""Get the current step environment component, if one is available.
|
506
|
-
|
507
|
-
This should only be called in the context of a step function.
|
508
|
-
|
509
|
-
Returns:
|
510
|
-
The `StepEnvironment` that describes the current step.
|
511
|
-
"""
|
512
|
-
from zenml.steps import STEP_ENVIRONMENT_NAME, StepEnvironment
|
513
|
-
|
514
|
-
return cast(StepEnvironment, self[STEP_ENVIRONMENT_NAME])
|
515
|
-
|
516
|
-
|
517
|
-
_BASE_ENVIRONMENT_COMPONENT_NAME = "base_environment_component"
|
518
|
-
|
519
|
-
|
520
|
-
class EnvironmentComponentMeta(type):
|
521
|
-
"""Metaclass registering environment components in the global Environment."""
|
522
|
-
|
523
|
-
def __new__(
|
524
|
-
mcs, name: str, bases: Tuple[Type[Any], ...], dct: Dict[str, Any]
|
525
|
-
) -> "EnvironmentComponentMeta":
|
526
|
-
"""Hook into creation of an BaseEnvironmentComponent class.
|
527
|
-
|
528
|
-
Args:
|
529
|
-
name: the name of the class being created.
|
530
|
-
bases: the base classes of the class being created.
|
531
|
-
dct: the dictionary of attributes of the class being created.
|
532
|
-
|
533
|
-
Returns:
|
534
|
-
The newly created class.
|
535
|
-
"""
|
536
|
-
cls = cast(
|
537
|
-
Type["BaseEnvironmentComponent"],
|
538
|
-
super().__new__(mcs, name, bases, dct),
|
539
|
-
)
|
540
|
-
if name != "BaseEnvironmentComponent":
|
541
|
-
assert cls.NAME and cls.NAME != _BASE_ENVIRONMENT_COMPONENT_NAME, (
|
542
|
-
"You should specify a unique NAME when creating an "
|
543
|
-
"EnvironmentComponent!"
|
544
|
-
)
|
545
|
-
return cls
|
546
|
-
|
547
|
-
|
548
|
-
class BaseEnvironmentComponent(metaclass=EnvironmentComponentMeta):
|
549
|
-
"""Base Environment component class.
|
550
|
-
|
551
|
-
All Environment components must inherit from this class and provide a unique
|
552
|
-
value for the `NAME` attribute.
|
553
|
-
|
554
|
-
|
555
|
-
Different code components can independently contribute with information to
|
556
|
-
the global Environment by extending and instantiating this class:
|
557
|
-
|
558
|
-
```python
|
559
|
-
from zenml.environment import BaseEnvironmentComponent
|
560
|
-
|
561
|
-
MY_ENV_NAME = "my_env"
|
562
|
-
|
563
|
-
class MyEnvironmentComponent(BaseEnvironmentComponent):
|
564
|
-
|
565
|
-
NAME = MY_ENV_NAME
|
566
|
-
|
567
|
-
def __init__(self, my_env_attr: str) -> None:
|
568
|
-
super().__init__()
|
569
|
-
self._my_env_attr = my_env_attr
|
570
|
-
|
571
|
-
@property
|
572
|
-
def my_env_attr(self) -> str:
|
573
|
-
return self._my_env_attr
|
574
|
-
|
575
|
-
my_env = MyEnvironmentComponent()
|
576
|
-
```
|
577
|
-
|
578
|
-
|
579
|
-
There are two ways to register and deregister a `BaseEnvironmentComponent`
|
580
|
-
instance with the global Environment:
|
581
|
-
|
582
|
-
1. by explicitly calling its `activate` and `deactivate` methods:
|
583
|
-
|
584
|
-
```python
|
585
|
-
my_env.activate()
|
586
|
-
|
587
|
-
# ... environment component is active
|
588
|
-
# and registered in the global Environment
|
589
|
-
|
590
|
-
my_env.deactivate()
|
591
|
-
|
592
|
-
# ... environment component is not active
|
593
|
-
```
|
594
|
-
|
595
|
-
2. by using the instance as a context:
|
596
|
-
|
597
|
-
```python
|
598
|
-
with my_env:
|
599
|
-
# ... environment component is active
|
600
|
-
# and registered in the global Environment
|
601
|
-
|
602
|
-
# ... environment component is not active
|
603
|
-
```
|
604
|
-
|
605
|
-
While active, environment components can be discovered and accessed from
|
606
|
-
the global environment:
|
607
|
-
|
608
|
-
```python
|
609
|
-
from foo.bar.my_env import MY_ENV_NAME
|
610
|
-
from zenml.environment import Environment
|
611
|
-
|
612
|
-
my_env = Environment.get_component(MY_ENV_NAME)
|
613
|
-
|
614
|
-
# this works too, but throws an error if the component is not active:
|
615
|
-
|
616
|
-
my_env = Environment[MY_ENV_NAME]
|
617
|
-
```
|
618
|
-
|
619
|
-
Attributes:
|
620
|
-
NAME: a unique name for this component. This name will be used to
|
621
|
-
register this component in the global Environment and to
|
622
|
-
subsequently retrieve it by calling `Environment().get_component`.
|
623
|
-
"""
|
624
|
-
|
625
|
-
NAME: str = _BASE_ENVIRONMENT_COMPONENT_NAME
|
626
|
-
|
627
|
-
def __init__(self) -> None:
|
628
|
-
"""Initialize an environment component."""
|
629
|
-
self._active = False
|
630
|
-
|
631
|
-
def activate(self) -> None:
|
632
|
-
"""Activate the environment component and register it in the global Environment.
|
633
|
-
|
634
|
-
Raises:
|
635
|
-
RuntimeError: if the component is already active.
|
636
|
-
"""
|
637
|
-
if self._active:
|
638
|
-
raise RuntimeError(
|
639
|
-
f"Environment component {self.NAME} is already active."
|
640
|
-
)
|
641
|
-
Environment().register_component(self)
|
642
|
-
self._active = True
|
643
|
-
|
644
|
-
def deactivate(self) -> None:
|
645
|
-
"""Deactivate the environment component and deregister it from the global Environment.
|
646
|
-
|
647
|
-
Raises:
|
648
|
-
RuntimeError: if the component is not active.
|
649
|
-
"""
|
650
|
-
if not self._active:
|
651
|
-
raise RuntimeError(
|
652
|
-
f"Environment component {self.NAME} is not active."
|
653
|
-
)
|
654
|
-
Environment().deregister_component(self)
|
655
|
-
self._active = False
|
656
|
-
|
657
|
-
@property
|
658
|
-
def active(self) -> bool:
|
659
|
-
"""Check if the environment component is currently active.
|
660
|
-
|
661
|
-
Returns:
|
662
|
-
`True` if the environment component is currently active, `False`
|
663
|
-
otherwise.
|
664
|
-
"""
|
665
|
-
return self._active
|
666
|
-
|
667
|
-
def __enter__(self) -> "BaseEnvironmentComponent":
|
668
|
-
"""Environment component context entry point.
|
669
|
-
|
670
|
-
Returns:
|
671
|
-
The BaseEnvironmentComponent instance.
|
672
|
-
"""
|
673
|
-
self.activate()
|
674
|
-
return self
|
675
|
-
|
676
|
-
def __exit__(self, *args: Any) -> None:
|
677
|
-
"""Environment component context exit point.
|
678
|
-
|
679
|
-
Args:
|
680
|
-
*args: the arguments passed to the context exit point.
|
681
|
-
"""
|
682
|
-
self.deactivate()
|
zenml/exceptions.py
CHANGED
@@ -13,10 +13,7 @@
|
|
13
13
|
# permissions and limitations under the License.
|
14
14
|
"""ZenML specific exception definitions."""
|
15
15
|
|
16
|
-
from typing import
|
17
|
-
|
18
|
-
if TYPE_CHECKING:
|
19
|
-
from zenml.steps import BaseParameters
|
16
|
+
from typing import Dict, Optional
|
20
17
|
|
21
18
|
|
22
19
|
class ZenMLBaseException(Exception):
|
@@ -50,6 +47,17 @@ class AuthorizationException(ZenMLBaseException):
|
|
50
47
|
"""Raised when an authorization error occurred while trying to access a ZenML resource ."""
|
51
48
|
|
52
49
|
|
50
|
+
class CredentialsNotValid(AuthorizationException):
|
51
|
+
"""Raised when the credentials provided are invalid.
|
52
|
+
|
53
|
+
This is a subclass of AuthorizationException and should only be raised when
|
54
|
+
the authentication credentials are invalid (e.g. expired API token, invalid
|
55
|
+
username/password, invalid signature). If caught by the ZenML client, it
|
56
|
+
will trigger an invalidation of the currently cached API token and a
|
57
|
+
re-authentication flow.
|
58
|
+
"""
|
59
|
+
|
60
|
+
|
53
61
|
class DoesNotExistException(ZenMLBaseException):
|
54
62
|
"""Raises exception when the entity does not exist in the system but an action is being done that requires it to be present."""
|
55
63
|
|
@@ -132,43 +140,6 @@ class PipelineConfigurationError(ZenMLBaseException):
|
|
132
140
|
"""Raises exceptions when a pipeline configuration contains invalid values."""
|
133
141
|
|
134
142
|
|
135
|
-
class MissingStepParameterError(ZenMLBaseException):
|
136
|
-
"""Raises exceptions when a step parameter is missing when running a pipeline."""
|
137
|
-
|
138
|
-
def __init__(
|
139
|
-
self,
|
140
|
-
step_name: str,
|
141
|
-
missing_parameters: List[str],
|
142
|
-
parameters_class: Type["BaseParameters"],
|
143
|
-
):
|
144
|
-
"""Initializes a MissingStepParameterError object.
|
145
|
-
|
146
|
-
Args:
|
147
|
-
step_name: Name of the step for which one or more parameters
|
148
|
-
are missing.
|
149
|
-
missing_parameters: Names of all parameters which are missing.
|
150
|
-
parameters_class: Class of the parameters object for which
|
151
|
-
the parameters are missing.
|
152
|
-
"""
|
153
|
-
import textwrap
|
154
|
-
|
155
|
-
message = textwrap.fill(
|
156
|
-
textwrap.dedent(
|
157
|
-
f"""
|
158
|
-
Missing parameters {missing_parameters} for '{step_name}' step.
|
159
|
-
There are three ways to solve this issue:
|
160
|
-
(1) Specify a default value in the parameters class
|
161
|
-
`{parameters_class.__name__}`
|
162
|
-
(2) Specify the parameters in code when creating the pipeline:
|
163
|
-
`my_pipeline({step_name}(params={parameters_class.__name__}(...))`
|
164
|
-
(3) Specify the parameters in a yaml configuration file and pass
|
165
|
-
it to the pipeline: `my_pipeline(...).run(config_path='path_to_yaml')`
|
166
|
-
"""
|
167
|
-
)
|
168
|
-
)
|
169
|
-
super().__init__(message)
|
170
|
-
|
171
|
-
|
172
143
|
class IntegrationError(ZenMLBaseException):
|
173
144
|
"""Raises exceptions when a requested integration can not be activated."""
|
174
145
|
|
zenml/hooks/hook_validators.py
CHANGED
@@ -43,9 +43,6 @@ def resolve_and_validate_hook(hook: "HookSpecification") -> Source:
|
|
43
43
|
if not callable(func):
|
44
44
|
raise ValueError(f"{func} is not a valid function.")
|
45
45
|
|
46
|
-
from zenml.new.steps.step_context import StepContext
|
47
|
-
from zenml.steps.base_parameters import BaseParameters
|
48
|
-
|
49
46
|
sig = inspect.getfullargspec(inspect.unwrap(func))
|
50
47
|
sig_annotations = sig.annotations
|
51
48
|
if "return" in sig_annotations:
|
@@ -62,11 +59,7 @@ def resolve_and_validate_hook(hook: "HookSpecification") -> Source:
|
|
62
59
|
seen_annotations = set()
|
63
60
|
for annotation in annotations:
|
64
61
|
if annotation:
|
65
|
-
if annotation not in (
|
66
|
-
BaseException,
|
67
|
-
BaseParameters,
|
68
|
-
StepContext,
|
69
|
-
):
|
62
|
+
if annotation not in (BaseException,):
|
70
63
|
raise ValueError(
|
71
64
|
"Hook arguments must be of type `BaseException`, not "
|
72
65
|
f"`{annotation}`."
|
@@ -50,8 +50,7 @@ if TYPE_CHECKING:
|
|
50
50
|
DagConfiguration,
|
51
51
|
TaskConfiguration,
|
52
52
|
)
|
53
|
-
from zenml.models import PipelineDeploymentResponse
|
54
|
-
from zenml.pipelines import Schedule
|
53
|
+
from zenml.models import PipelineDeploymentResponse, ScheduleResponse
|
55
54
|
from zenml.stack import Stack
|
56
55
|
|
57
56
|
logger = get_logger(__name__)
|
@@ -391,7 +390,7 @@ class AirflowOrchestrator(ContainerizedOrchestrator):
|
|
391
390
|
|
392
391
|
@staticmethod
|
393
392
|
def _translate_schedule(
|
394
|
-
schedule: Optional["
|
393
|
+
schedule: Optional["ScheduleResponse"] = None,
|
395
394
|
) -> Dict[str, Any]:
|
396
395
|
"""Convert ZenML schedule into Airflow schedule.
|
397
396
|
|