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
@@ -1,244 +0,0 @@
|
|
1
|
-
# Copyright (c) ZenML GmbH 2022. All Rights Reserved.
|
2
|
-
#
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
# you may not use this file except in compliance with the License.
|
5
|
-
# You may obtain a copy of the License at:
|
6
|
-
#
|
7
|
-
# https://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
|
12
|
-
# or implied. See the License for the specific language governing
|
13
|
-
# permissions and limitations under the License.
|
14
|
-
"""Class for lineage graph generation."""
|
15
|
-
|
16
|
-
from typing import TYPE_CHECKING, List, Optional, Tuple, Union
|
17
|
-
|
18
|
-
from pydantic import BaseModel
|
19
|
-
|
20
|
-
from zenml.enums import ExecutionStatus
|
21
|
-
from zenml.lineage_graph.edge import Edge
|
22
|
-
from zenml.lineage_graph.node import (
|
23
|
-
ArtifactNode,
|
24
|
-
ArtifactNodeDetails,
|
25
|
-
StepNode,
|
26
|
-
StepNodeDetails,
|
27
|
-
)
|
28
|
-
from zenml.lineage_graph.node.artifact_node import ArtifactNodeStatus
|
29
|
-
|
30
|
-
if TYPE_CHECKING:
|
31
|
-
from zenml.models import (
|
32
|
-
ArtifactVersionResponse,
|
33
|
-
PipelineRunResponse,
|
34
|
-
StepRunResponse,
|
35
|
-
)
|
36
|
-
|
37
|
-
|
38
|
-
ARTIFACT_PREFIX = "artifact_"
|
39
|
-
STEP_PREFIX = "step_"
|
40
|
-
|
41
|
-
|
42
|
-
class LineageGraph(BaseModel):
|
43
|
-
"""A lineage graph representation of a PipelineRunResponseModel."""
|
44
|
-
|
45
|
-
nodes: List[Union[StepNode, ArtifactNode]] = []
|
46
|
-
edges: List[Edge] = []
|
47
|
-
root_step_id: Optional[str] = None
|
48
|
-
run_metadata: List[Tuple[str, str, str]] = []
|
49
|
-
|
50
|
-
def generate_run_nodes_and_edges(self, run: "PipelineRunResponse") -> None:
|
51
|
-
"""Initializes a lineage graph from a pipeline run.
|
52
|
-
|
53
|
-
Args:
|
54
|
-
run: The PipelineRunResponseModel to generate the lineage graph for.
|
55
|
-
"""
|
56
|
-
self.run_metadata = [
|
57
|
-
(m.key, str(m.value), str(m.type))
|
58
|
-
for m in run.run_metadata.values()
|
59
|
-
]
|
60
|
-
|
61
|
-
for step in run.steps.values():
|
62
|
-
self.generate_step_nodes_and_edges(step)
|
63
|
-
|
64
|
-
self.add_external_artifacts(run)
|
65
|
-
self.add_direct_edges(run)
|
66
|
-
|
67
|
-
def generate_step_nodes_and_edges(self, step: "StepRunResponse") -> None:
|
68
|
-
"""Generates the nodes and edges for a step and its artifacts.
|
69
|
-
|
70
|
-
Args:
|
71
|
-
step: The step to generate the nodes and edges for.
|
72
|
-
"""
|
73
|
-
step_id = STEP_PREFIX + str(step.id)
|
74
|
-
|
75
|
-
# Set a root step if it doesn't exist yet
|
76
|
-
if self.root_step_id is None:
|
77
|
-
self.root_step_id = step_id
|
78
|
-
|
79
|
-
# Add the step node
|
80
|
-
self.add_step_node(step, step_id)
|
81
|
-
|
82
|
-
# Add nodes and edges for all output artifacts
|
83
|
-
for artifact_name, artifact_version in step.outputs.items():
|
84
|
-
artifact_version_id = ARTIFACT_PREFIX + str(artifact_version.id)
|
85
|
-
if step.status == ExecutionStatus.CACHED:
|
86
|
-
artifact_status = ArtifactNodeStatus.CACHED
|
87
|
-
elif step.status == ExecutionStatus.COMPLETED:
|
88
|
-
artifact_status = ArtifactNodeStatus.CREATED
|
89
|
-
else:
|
90
|
-
artifact_status = ArtifactNodeStatus.UNKNOWN
|
91
|
-
self.add_artifact_node(
|
92
|
-
artifact=artifact_version,
|
93
|
-
id=artifact_version_id,
|
94
|
-
name=artifact_name,
|
95
|
-
step_id=str(step_id),
|
96
|
-
status=artifact_status,
|
97
|
-
)
|
98
|
-
self.add_edge(step_id, artifact_version_id)
|
99
|
-
|
100
|
-
# Add nodes and edges for all input artifacts
|
101
|
-
for artifact_name, artifact_version in step.inputs.items():
|
102
|
-
artifact_version_id = ARTIFACT_PREFIX + str(artifact_version.id)
|
103
|
-
self.add_edge(artifact_version_id, step_id)
|
104
|
-
|
105
|
-
def add_external_artifacts(self, run: "PipelineRunResponse") -> None:
|
106
|
-
"""Adds all external artifacts to the lineage graph.
|
107
|
-
|
108
|
-
Args:
|
109
|
-
run: The pipeline run to add external artifacts for.
|
110
|
-
"""
|
111
|
-
nodes_ids = {node.id for node in self.nodes}
|
112
|
-
for step in run.steps.values():
|
113
|
-
for artifact_name, artifact_version in step.inputs.items():
|
114
|
-
artifact_version_id = ARTIFACT_PREFIX + str(
|
115
|
-
artifact_version.id
|
116
|
-
)
|
117
|
-
if artifact_version_id not in nodes_ids:
|
118
|
-
self.add_artifact_node(
|
119
|
-
artifact=artifact_version,
|
120
|
-
id=artifact_version_id,
|
121
|
-
name=artifact_name,
|
122
|
-
step_id=str(artifact_version.producer_step_run_id),
|
123
|
-
status=ArtifactNodeStatus.EXTERNAL,
|
124
|
-
)
|
125
|
-
|
126
|
-
def add_direct_edges(self, run: "PipelineRunResponse") -> None:
|
127
|
-
"""Add all direct edges between nodes generated by `after=...`.
|
128
|
-
|
129
|
-
Args:
|
130
|
-
run: The pipeline run to add direct edges for.
|
131
|
-
"""
|
132
|
-
for step in run.steps.values():
|
133
|
-
step_id = STEP_PREFIX + str(step.id)
|
134
|
-
for parent_step_id_uuid in step.parent_step_ids:
|
135
|
-
parent_step_id = STEP_PREFIX + str(parent_step_id_uuid)
|
136
|
-
if not self.has_artifact_link(step_id, parent_step_id):
|
137
|
-
self.add_edge(parent_step_id, step_id)
|
138
|
-
|
139
|
-
def has_artifact_link(self, step_id: str, parent_step_id: str) -> bool:
|
140
|
-
"""Checks if a step has an artifact link to a parent step.
|
141
|
-
|
142
|
-
This is the case for all parent steps that were not specified via
|
143
|
-
`after=...`.
|
144
|
-
|
145
|
-
Args:
|
146
|
-
step_id: The node ID of the step to check.
|
147
|
-
parent_step_id: T node ID of the parent step to check.
|
148
|
-
|
149
|
-
Returns:
|
150
|
-
True if the steps are linked via an artifact, False otherwise.
|
151
|
-
"""
|
152
|
-
parent_outputs, child_inputs = set(), set()
|
153
|
-
for edge in self.edges:
|
154
|
-
if edge.source == parent_step_id:
|
155
|
-
parent_outputs.add(edge.target)
|
156
|
-
if edge.target == step_id:
|
157
|
-
child_inputs.add(edge.source)
|
158
|
-
return bool(parent_outputs.intersection(child_inputs))
|
159
|
-
|
160
|
-
def add_step_node(
|
161
|
-
self,
|
162
|
-
step: "StepRunResponse",
|
163
|
-
id: str,
|
164
|
-
) -> None:
|
165
|
-
"""Adds a step node to the lineage graph.
|
166
|
-
|
167
|
-
Args:
|
168
|
-
step: The step to add a node for.
|
169
|
-
id: The id of the step node.
|
170
|
-
"""
|
171
|
-
step_config = step.config.model_dump()
|
172
|
-
if step_config:
|
173
|
-
step_config = {
|
174
|
-
key: value
|
175
|
-
for key, value in step_config.items()
|
176
|
-
if key not in ["inputs", "outputs", "parameters"] and value
|
177
|
-
}
|
178
|
-
self.nodes.append(
|
179
|
-
StepNode(
|
180
|
-
id=id,
|
181
|
-
data=StepNodeDetails(
|
182
|
-
execution_id=str(step.id),
|
183
|
-
name=step.name, # redundant for consistency
|
184
|
-
status=step.status,
|
185
|
-
entrypoint_name=step.config.name, # redundant for consistency
|
186
|
-
parameters=step.config.parameters,
|
187
|
-
configuration=step_config,
|
188
|
-
inputs={k: v.uri for k, v in step.inputs.items()},
|
189
|
-
outputs={k: v.uri for k, v in step.outputs.items()},
|
190
|
-
metadata=[
|
191
|
-
(m.key, str(m.value), str(m.type))
|
192
|
-
for m in step.run_metadata.values()
|
193
|
-
],
|
194
|
-
),
|
195
|
-
)
|
196
|
-
)
|
197
|
-
|
198
|
-
def add_artifact_node(
|
199
|
-
self,
|
200
|
-
artifact: "ArtifactVersionResponse",
|
201
|
-
id: str,
|
202
|
-
name: str,
|
203
|
-
step_id: str,
|
204
|
-
status: ArtifactNodeStatus,
|
205
|
-
) -> None:
|
206
|
-
"""Adds an artifact node to the lineage graph.
|
207
|
-
|
208
|
-
Args:
|
209
|
-
artifact: The artifact to add a node for.
|
210
|
-
id: The id of the artifact node.
|
211
|
-
name: The input or output name of the artifact.
|
212
|
-
step_id: The id of the step that produced the artifact.
|
213
|
-
status: The status of the step that produced the artifact.
|
214
|
-
"""
|
215
|
-
node = ArtifactNode(
|
216
|
-
id=id,
|
217
|
-
data=ArtifactNodeDetails(
|
218
|
-
execution_id=str(artifact.id),
|
219
|
-
name=name,
|
220
|
-
status=status,
|
221
|
-
is_cached=status == ArtifactNodeStatus.CACHED,
|
222
|
-
artifact_type=artifact.type,
|
223
|
-
artifact_data_type=artifact.data_type.import_path,
|
224
|
-
parent_step_id=step_id,
|
225
|
-
producer_step_id=str(artifact.producer_step_run_id),
|
226
|
-
uri=artifact.uri,
|
227
|
-
metadata=[
|
228
|
-
(m.key, str(m.value), str(m.type))
|
229
|
-
for m in artifact.run_metadata.values()
|
230
|
-
],
|
231
|
-
),
|
232
|
-
)
|
233
|
-
self.nodes.append(node)
|
234
|
-
|
235
|
-
def add_edge(self, source: str, target: str) -> None:
|
236
|
-
"""Adds an edge to the lineage graph.
|
237
|
-
|
238
|
-
Args:
|
239
|
-
source: The source node id.
|
240
|
-
target: The target node id.
|
241
|
-
"""
|
242
|
-
self.edges.append(
|
243
|
-
Edge(id=source + "_" + target, source=source, target=target)
|
244
|
-
)
|
@@ -1,32 +0,0 @@
|
|
1
|
-
# Copyright (c) ZenML GmbH 2022. All Rights Reserved.
|
2
|
-
#
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
# you may not use this file except in compliance with the License.
|
5
|
-
# You may obtain a copy of the License at:
|
6
|
-
#
|
7
|
-
# https://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
|
12
|
-
# or implied. See the License for the specific language governing
|
13
|
-
# permissions and limitations under the License.
|
14
|
-
"""Initialization of lineage nodes."""
|
15
|
-
|
16
|
-
from zenml.lineage_graph.node.artifact_node import ( # noqa
|
17
|
-
ArtifactNode,
|
18
|
-
ArtifactNodeDetails,
|
19
|
-
)
|
20
|
-
from zenml.lineage_graph.node.base_node import BaseNode # noqa
|
21
|
-
from zenml.lineage_graph.node.step_node import ( # noqa
|
22
|
-
StepNode,
|
23
|
-
StepNodeDetails,
|
24
|
-
)
|
25
|
-
|
26
|
-
__all__ = [
|
27
|
-
"BaseNode",
|
28
|
-
"ArtifactNode",
|
29
|
-
"StepNode",
|
30
|
-
"StepNodeDetails",
|
31
|
-
"ArtifactNodeDetails",
|
32
|
-
]
|
@@ -1,51 +0,0 @@
|
|
1
|
-
# Copyright (c) ZenML GmbH 2022. All Rights Reserved.
|
2
|
-
#
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
# you may not use this file except in compliance with the License.
|
5
|
-
# You may obtain a copy of the License at:
|
6
|
-
#
|
7
|
-
# https://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
|
12
|
-
# or implied. See the License for the specific language governing
|
13
|
-
# permissions and limitations under the License.
|
14
|
-
"""Class for all lineage artifact nodes."""
|
15
|
-
|
16
|
-
from typing import List, Optional, Tuple
|
17
|
-
|
18
|
-
from zenml.lineage_graph.node.base_node import (
|
19
|
-
BaseNode,
|
20
|
-
BaseNodeDetails,
|
21
|
-
)
|
22
|
-
from zenml.utils.enum_utils import StrEnum
|
23
|
-
|
24
|
-
|
25
|
-
class ArtifactNodeStatus(StrEnum):
|
26
|
-
"""Enum that represents the status of an artifact."""
|
27
|
-
|
28
|
-
CACHED = "cached"
|
29
|
-
CREATED = "created"
|
30
|
-
EXTERNAL = "external"
|
31
|
-
UNKNOWN = "unknown"
|
32
|
-
|
33
|
-
|
34
|
-
class ArtifactNodeDetails(BaseNodeDetails):
|
35
|
-
"""Captures all artifact details for the node."""
|
36
|
-
|
37
|
-
status: ArtifactNodeStatus
|
38
|
-
is_cached: bool
|
39
|
-
artifact_type: str
|
40
|
-
artifact_data_type: str
|
41
|
-
parent_step_id: str
|
42
|
-
producer_step_id: Optional[str]
|
43
|
-
uri: str
|
44
|
-
metadata: List[Tuple[str, str, str]] # (key, value, type)
|
45
|
-
|
46
|
-
|
47
|
-
class ArtifactNode(BaseNode):
|
48
|
-
"""A class that represents an artifact node in a lineage graph."""
|
49
|
-
|
50
|
-
type: str = "artifact"
|
51
|
-
data: ArtifactNodeDetails
|
@@ -1,41 +0,0 @@
|
|
1
|
-
# Copyright (c) ZenML GmbH 2022. All Rights Reserved.
|
2
|
-
#
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
# you may not use this file except in compliance with the License.
|
5
|
-
# You may obtain a copy of the License at:
|
6
|
-
#
|
7
|
-
# https://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
|
12
|
-
# or implied. See the License for the specific language governing
|
13
|
-
# permissions and limitations under the License.
|
14
|
-
"""Class for all lineage step nodes."""
|
15
|
-
|
16
|
-
from typing import Any, Dict, List, Tuple
|
17
|
-
|
18
|
-
from zenml.enums import ExecutionStatus
|
19
|
-
from zenml.lineage_graph.node.base_node import (
|
20
|
-
BaseNode,
|
21
|
-
BaseNodeDetails,
|
22
|
-
)
|
23
|
-
|
24
|
-
|
25
|
-
class StepNodeDetails(BaseNodeDetails):
|
26
|
-
"""Captures all artifact details for the node."""
|
27
|
-
|
28
|
-
status: ExecutionStatus
|
29
|
-
entrypoint_name: str
|
30
|
-
parameters: Dict[str, Any]
|
31
|
-
configuration: Dict[str, Any]
|
32
|
-
inputs: Dict[str, Any]
|
33
|
-
outputs: Dict[str, Any]
|
34
|
-
metadata: List[Tuple[str, str, str]] # (key, value, type)
|
35
|
-
|
36
|
-
|
37
|
-
class StepNode(BaseNode):
|
38
|
-
"""A class that represents a step node in a lineage graph."""
|
39
|
-
|
40
|
-
type: str = "step"
|
41
|
-
data: StepNodeDetails
|
zenml/model/model_version.py
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
# Copyright (c) ZenML GmbH 2023. All Rights Reserved.
|
2
|
-
#
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
# you may not use this file except in compliance with the License.
|
5
|
-
# You may obtain a copy of the License at:
|
6
|
-
#
|
7
|
-
# https://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
|
12
|
-
# or implied. See the License for the specific language governing
|
13
|
-
# permissions and limitations under the License.
|
14
|
-
"""DEPRECATED, use `from zenml import Model` instead."""
|
15
|
-
|
16
|
-
from typing import Any
|
17
|
-
|
18
|
-
from zenml.logger import get_logger
|
19
|
-
from zenml.model.model import Model
|
20
|
-
|
21
|
-
logger = get_logger(__name__)
|
22
|
-
|
23
|
-
|
24
|
-
# TODO: deprecate me
|
25
|
-
class ModelVersion(Model):
|
26
|
-
"""DEPRECATED, use `from zenml import Model` instead."""
|
27
|
-
|
28
|
-
def __init__(self, *args: Any, **kwargs: Any) -> None:
|
29
|
-
"""DEPRECATED, use `from zenml import Model` instead.
|
30
|
-
|
31
|
-
Args:
|
32
|
-
*args: Variable length argument list.
|
33
|
-
**kwargs: Arbitrary keyword arguments.
|
34
|
-
"""
|
35
|
-
logger.warning(
|
36
|
-
"`ModelVersion` is deprecated. Please use `Model` instead."
|
37
|
-
)
|
38
|
-
super().__init__(*args, **kwargs)
|
@@ -1,157 +0,0 @@
|
|
1
|
-
# Copyright (c) ZenML GmbH 2024. All Rights Reserved.
|
2
|
-
#
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
# you may not use this file except in compliance with the License.
|
5
|
-
# You may obtain a copy of the License at:
|
6
|
-
#
|
7
|
-
# https://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
|
12
|
-
# or implied. See the License for the specific language governing
|
13
|
-
# permissions and limitations under the License.
|
14
|
-
"""Code archive."""
|
15
|
-
|
16
|
-
import os
|
17
|
-
from pathlib import Path
|
18
|
-
from typing import IO, TYPE_CHECKING, Dict, Optional
|
19
|
-
|
20
|
-
from zenml.logger import get_logger
|
21
|
-
from zenml.utils import string_utils
|
22
|
-
from zenml.utils.archivable import Archivable
|
23
|
-
|
24
|
-
if TYPE_CHECKING:
|
25
|
-
from git.repo.base import Repo
|
26
|
-
|
27
|
-
|
28
|
-
logger = get_logger(__name__)
|
29
|
-
|
30
|
-
|
31
|
-
class CodeArchive(Archivable):
|
32
|
-
"""Code archive class.
|
33
|
-
|
34
|
-
This class is used to archive user code before uploading it to the artifact
|
35
|
-
store. If the user code is stored in a Git repository, only files not
|
36
|
-
excluded by gitignores will be included in the archive.
|
37
|
-
"""
|
38
|
-
|
39
|
-
def __init__(self, root: str) -> None:
|
40
|
-
"""Initialize the object.
|
41
|
-
|
42
|
-
Args:
|
43
|
-
root: Root directory of the archive.
|
44
|
-
"""
|
45
|
-
super().__init__()
|
46
|
-
self._root = root
|
47
|
-
|
48
|
-
@property
|
49
|
-
def git_repo(self) -> Optional["Repo"]:
|
50
|
-
"""Git repository active at the code archive root.
|
51
|
-
|
52
|
-
Returns:
|
53
|
-
The git repository if available.
|
54
|
-
"""
|
55
|
-
try:
|
56
|
-
# These imports fail when git is not installed on the machine
|
57
|
-
from git.exc import InvalidGitRepositoryError
|
58
|
-
from git.repo.base import Repo
|
59
|
-
except ImportError:
|
60
|
-
return None
|
61
|
-
|
62
|
-
try:
|
63
|
-
git_repo = Repo(path=self._root, search_parent_directories=True)
|
64
|
-
except InvalidGitRepositoryError:
|
65
|
-
return None
|
66
|
-
|
67
|
-
return git_repo
|
68
|
-
|
69
|
-
def _get_all_files(self) -> Dict[str, str]:
|
70
|
-
"""Get all files inside the archive root.
|
71
|
-
|
72
|
-
Returns:
|
73
|
-
All files inside the archive root.
|
74
|
-
"""
|
75
|
-
all_files = {}
|
76
|
-
for root, _, files in os.walk(self._root):
|
77
|
-
for file in files:
|
78
|
-
file_path = os.path.join(root, file)
|
79
|
-
path_in_archive = os.path.relpath(file_path, self._root)
|
80
|
-
all_files[path_in_archive] = file_path
|
81
|
-
|
82
|
-
return all_files
|
83
|
-
|
84
|
-
def get_files(self) -> Dict[str, str]:
|
85
|
-
"""Gets all regular files that should be included in the archive.
|
86
|
-
|
87
|
-
Raises:
|
88
|
-
RuntimeError: If the code archive would not include any files.
|
89
|
-
|
90
|
-
Returns:
|
91
|
-
A dict {path_in_archive: path_on_filesystem} for all regular files
|
92
|
-
in the archive.
|
93
|
-
"""
|
94
|
-
all_files = {}
|
95
|
-
|
96
|
-
if repo := self.git_repo:
|
97
|
-
try:
|
98
|
-
result = repo.git.ls_files(
|
99
|
-
"--cached",
|
100
|
-
"--others",
|
101
|
-
"--modified",
|
102
|
-
"--exclude-standard",
|
103
|
-
self._root,
|
104
|
-
)
|
105
|
-
except Exception as e:
|
106
|
-
logger.warning(
|
107
|
-
"Failed to get non-ignored files from git: %s", str(e)
|
108
|
-
)
|
109
|
-
all_files = self._get_all_files()
|
110
|
-
else:
|
111
|
-
for file in result.split():
|
112
|
-
file_path = os.path.join(repo.working_dir, file)
|
113
|
-
path_in_archive = os.path.relpath(file_path, self._root)
|
114
|
-
|
115
|
-
if os.path.exists(file_path):
|
116
|
-
all_files[path_in_archive] = file_path
|
117
|
-
else:
|
118
|
-
all_files = self._get_all_files()
|
119
|
-
|
120
|
-
if not all_files:
|
121
|
-
raise RuntimeError(
|
122
|
-
"The code archive to be uploaded does not contain any files. "
|
123
|
-
"This is probably because all files in your source root "
|
124
|
-
f"`{self._root}` are ignored by a .gitignore file."
|
125
|
-
)
|
126
|
-
|
127
|
-
# Explicitly remove .zen directories as we write an updated version
|
128
|
-
# to disk everytime ZenML is called. This updates the mtime of the
|
129
|
-
# file, which invalidates the code upload caching. The values in
|
130
|
-
# the .zen directory are not needed anyway as we set them as
|
131
|
-
# environment variables.
|
132
|
-
all_files = {
|
133
|
-
path_in_archive: file_path
|
134
|
-
for path_in_archive, file_path in sorted(all_files.items())
|
135
|
-
if ".zen" not in Path(path_in_archive).parts[:-1]
|
136
|
-
}
|
137
|
-
|
138
|
-
return all_files
|
139
|
-
|
140
|
-
def write_archive(
|
141
|
-
self, output_file: IO[bytes], use_gzip: bool = True
|
142
|
-
) -> None:
|
143
|
-
"""Writes an archive of the build context to the given file.
|
144
|
-
|
145
|
-
Args:
|
146
|
-
output_file: The file to write the archive to.
|
147
|
-
use_gzip: Whether to use `gzip` to compress the file.
|
148
|
-
"""
|
149
|
-
super().write_archive(output_file=output_file, use_gzip=use_gzip)
|
150
|
-
archive_size = os.path.getsize(output_file.name)
|
151
|
-
if archive_size > 20 * 1024 * 1024:
|
152
|
-
logger.warning(
|
153
|
-
"Code archive size: `%s`. If you believe this is "
|
154
|
-
"unreasonably large, make sure to version your code in git and "
|
155
|
-
"ignore unnecessary files using a `.gitignore` file.",
|
156
|
-
string_utils.get_human_readable_filesize(archive_size),
|
157
|
-
)
|
@@ -1,118 +0,0 @@
|
|
1
|
-
# Copyright (c) ZenML GmbH 2023. All Rights Reserved.
|
2
|
-
#
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
# you may not use this file except in compliance with the License.
|
5
|
-
# You may obtain a copy of the License at:
|
6
|
-
#
|
7
|
-
# https://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
|
12
|
-
# or implied. See the License for the specific language governing
|
13
|
-
# permissions and limitations under the License.
|
14
|
-
"""ZenML pipeline decorator definition."""
|
15
|
-
|
16
|
-
from typing import (
|
17
|
-
TYPE_CHECKING,
|
18
|
-
Any,
|
19
|
-
Callable,
|
20
|
-
Dict,
|
21
|
-
Optional,
|
22
|
-
TypeVar,
|
23
|
-
Union,
|
24
|
-
overload,
|
25
|
-
)
|
26
|
-
|
27
|
-
from zenml.logger import get_logger
|
28
|
-
|
29
|
-
if TYPE_CHECKING:
|
30
|
-
from zenml.config.base_settings import SettingsOrDict
|
31
|
-
from zenml.model.model import Model
|
32
|
-
from zenml.new.pipelines.pipeline import Pipeline
|
33
|
-
from zenml.types import HookSpecification
|
34
|
-
|
35
|
-
F = TypeVar("F", bound=Callable[..., None])
|
36
|
-
|
37
|
-
logger = get_logger(__name__)
|
38
|
-
|
39
|
-
|
40
|
-
@overload
|
41
|
-
def pipeline(_func: "F") -> "Pipeline": ...
|
42
|
-
|
43
|
-
|
44
|
-
@overload
|
45
|
-
def pipeline(
|
46
|
-
*,
|
47
|
-
name: Optional[str] = None,
|
48
|
-
enable_cache: Optional[bool] = None,
|
49
|
-
enable_artifact_metadata: Optional[bool] = None,
|
50
|
-
enable_step_logs: Optional[bool] = None,
|
51
|
-
settings: Optional[Dict[str, "SettingsOrDict"]] = None,
|
52
|
-
extra: Optional[Dict[str, Any]] = None,
|
53
|
-
) -> Callable[["F"], "Pipeline"]: ...
|
54
|
-
|
55
|
-
|
56
|
-
def pipeline(
|
57
|
-
_func: Optional["F"] = None,
|
58
|
-
*,
|
59
|
-
name: Optional[str] = None,
|
60
|
-
enable_cache: Optional[bool] = None,
|
61
|
-
enable_artifact_metadata: Optional[bool] = None,
|
62
|
-
enable_step_logs: Optional[bool] = None,
|
63
|
-
settings: Optional[Dict[str, "SettingsOrDict"]] = None,
|
64
|
-
extra: Optional[Dict[str, Any]] = None,
|
65
|
-
on_failure: Optional["HookSpecification"] = None,
|
66
|
-
on_success: Optional["HookSpecification"] = None,
|
67
|
-
model: Optional["Model"] = None,
|
68
|
-
model_version: Optional["Model"] = None, # TODO: deprecate me
|
69
|
-
) -> Union["Pipeline", Callable[["F"], "Pipeline"]]:
|
70
|
-
"""Decorator to create a pipeline.
|
71
|
-
|
72
|
-
Args:
|
73
|
-
_func: The decorated function.
|
74
|
-
name: The name of the pipeline. If left empty, the name of the
|
75
|
-
decorated function will be used as a fallback.
|
76
|
-
enable_cache: Whether to use caching or not.
|
77
|
-
enable_artifact_metadata: Whether to enable artifact metadata or not.
|
78
|
-
enable_step_logs: If step logs should be enabled for this pipeline.
|
79
|
-
settings: Settings for this pipeline.
|
80
|
-
extra: Extra configurations for this pipeline.
|
81
|
-
on_failure: Callback function in event of failure of the step. Can be a
|
82
|
-
function with a single argument of type `BaseException`, or a source
|
83
|
-
path to such a function (e.g. `module.my_function`).
|
84
|
-
on_success: Callback function in event of success of the step. Can be a
|
85
|
-
function with no arguments, or a source path to such a function
|
86
|
-
(e.g. `module.my_function`).
|
87
|
-
model: configuration of the model in the Model Control Plane.
|
88
|
-
model_version: DEPRECATED, please use `model` instead.
|
89
|
-
|
90
|
-
Returns:
|
91
|
-
A pipeline instance.
|
92
|
-
"""
|
93
|
-
|
94
|
-
def inner_decorator(func: "F") -> "Pipeline":
|
95
|
-
from zenml.new.pipelines.pipeline import Pipeline
|
96
|
-
|
97
|
-
if model_version:
|
98
|
-
logger.warning(
|
99
|
-
"Pipeline decorator argument `model_version` is deprecated. Please use `model` instead."
|
100
|
-
)
|
101
|
-
|
102
|
-
p = Pipeline(
|
103
|
-
name=name or func.__name__,
|
104
|
-
enable_cache=enable_cache,
|
105
|
-
enable_artifact_metadata=enable_artifact_metadata,
|
106
|
-
enable_step_logs=enable_step_logs,
|
107
|
-
settings=settings,
|
108
|
-
extra=extra,
|
109
|
-
on_failure=on_failure,
|
110
|
-
on_success=on_success,
|
111
|
-
model=model or model_version,
|
112
|
-
entrypoint=func,
|
113
|
-
)
|
114
|
-
|
115
|
-
p.__doc__ = func.__doc__
|
116
|
-
return p
|
117
|
-
|
118
|
-
return inner_decorator if _func is None else inner_decorator(_func)
|