zenml-nightly 0.66.0.dev20240928__py3-none-any.whl → 0.68.1.dev20241102__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- README.md +18 -12
- RELEASE_NOTES.md +236 -0
- zenml/VERSION +1 -1
- zenml/__init__.py +5 -10
- zenml/analytics/context.py +16 -1
- zenml/analytics/enums.py +0 -13
- zenml/analytics/utils.py +18 -7
- zenml/artifact_stores/base_artifact_store.py +11 -0
- zenml/artifacts/artifact_config.py +19 -65
- zenml/artifacts/external_artifact.py +7 -53
- zenml/artifacts/external_artifact_config.py +21 -40
- zenml/artifacts/load_directory_materializer.py +91 -0
- zenml/artifacts/utils.py +204 -145
- zenml/cli/__init__.py +62 -127
- zenml/cli/base.py +8 -8
- zenml/cli/integration.py +0 -9
- zenml/cli/login.py +951 -0
- zenml/cli/pipeline.py +1 -1
- zenml/cli/served_model.py +8 -1
- zenml/cli/server.py +462 -577
- zenml/cli/service_accounts.py +4 -4
- zenml/cli/stack.py +78 -569
- zenml/cli/stack_components.py +5 -594
- zenml/cli/user_management.py +0 -12
- zenml/cli/utils.py +24 -142
- zenml/client.py +57 -40
- zenml/client_lazy_loader.py +29 -12
- zenml/config/compiler.py +7 -11
- zenml/config/global_config.py +9 -0
- zenml/config/pipeline_configurations.py +2 -1
- zenml/config/pipeline_run_configuration.py +2 -1
- zenml/config/server_config.py +7 -5
- zenml/config/step_configurations.py +2 -0
- zenml/constants.py +6 -42
- zenml/enums.py +1 -4
- zenml/environment.py +1 -315
- zenml/exceptions.py +12 -41
- zenml/hooks/hook_validators.py +1 -8
- zenml/integrations/airflow/orchestrators/airflow_orchestrator.py +2 -3
- zenml/integrations/argilla/__init__.py +1 -1
- zenml/integrations/argilla/annotators/argilla_annotator.py +234 -89
- zenml/integrations/argilla/flavors/argilla_annotator_flavor.py +10 -5
- zenml/integrations/aws/flavors/sagemaker_orchestrator_flavor.py +9 -5
- zenml/integrations/aws/orchestrators/sagemaker_orchestrator.py +15 -2
- zenml/integrations/aws/service_connectors/aws_service_connector.py +6 -0
- zenml/integrations/azure/flavors/azureml_orchestrator_flavor.py +5 -4
- zenml/integrations/azure/orchestrators/azureml_orchestrator.py +1 -1
- zenml/integrations/bentoml/model_deployers/bentoml_model_deployer.py +85 -19
- zenml/integrations/bentoml/services/__init__.py +15 -4
- zenml/integrations/bentoml/services/bentoml_container_deployment.py +399 -0
- zenml/integrations/bentoml/services/{bentoml_deployment.py → bentoml_local_deployment.py} +81 -40
- zenml/{steps/base_parameters.py → integrations/bentoml/services/deployment_type.py} +8 -5
- zenml/integrations/bentoml/steps/bento_builder.py +1 -0
- zenml/integrations/bentoml/steps/bentoml_deployer.py +93 -41
- zenml/integrations/github/code_repositories/github_code_repository.py +1 -1
- zenml/integrations/gitlab/code_repositories/gitlab_code_repository.py +6 -1
- zenml/integrations/huggingface/__init__.py +1 -6
- zenml/integrations/kaniko/image_builders/kaniko_image_builder.py +3 -3
- zenml/integrations/lightning/orchestrators/lightning_orchestrator.py +3 -3
- zenml/integrations/lightning/orchestrators/lightning_orchestrator_entrypoint.py +2 -2
- zenml/integrations/mlflow/experiment_trackers/mlflow_experiment_tracker.py +6 -3
- zenml/integrations/mlflow/model_registries/mlflow_model_registry.py +6 -0
- zenml/integrations/mlflow/services/mlflow_deployment.py +2 -2
- zenml/integrations/mlflow/steps/mlflow_deployer.py +1 -1
- zenml/integrations/mlflow/steps/mlflow_registry.py +1 -1
- zenml/integrations/neptune/experiment_trackers/run_state.py +2 -2
- zenml/integrations/pytorch/materializers/base_pytorch_materializer.py +8 -2
- zenml/integrations/pytorch/materializers/pytorch_module_materializer.py +4 -1
- zenml/integrations/s3/artifact_stores/s3_artifact_store.py +98 -0
- zenml/integrations/s3/flavors/s3_artifact_store_flavor.py +14 -0
- zenml/integrations/s3/utils.py +40 -0
- zenml/integrations/tensorflow/__init__.py +0 -9
- zenml/logging/step_logging.py +13 -15
- zenml/{new/pipelines → login}/__init__.py +4 -1
- zenml/login/credentials.py +346 -0
- zenml/login/credentials_store.py +603 -0
- zenml/{new → login/pro}/__init__.py +4 -1
- zenml/login/pro/client.py +496 -0
- zenml/login/pro/constants.py +34 -0
- zenml/{lineage_graph/edge.py → login/pro/models.py} +9 -8
- zenml/{zen_server/deploy/terraform/providers → login/pro/organization}/__init__.py +2 -2
- zenml/login/pro/organization/client.py +79 -0
- zenml/{lineage_graph/node/base_node.py → login/pro/organization/models.py} +13 -12
- zenml/{new/steps → login/pro/tenant}/__init__.py +2 -1
- zenml/login/pro/tenant/client.py +92 -0
- zenml/login/pro/tenant/models.py +174 -0
- zenml/login/pro/utils.py +121 -0
- zenml/{cli → login}/web_login.py +64 -28
- zenml/materializers/__init__.py +2 -0
- zenml/materializers/base_materializer.py +43 -9
- zenml/materializers/built_in_materializer.py +1 -1
- zenml/materializers/uuid_materializer.py +79 -0
- zenml/metadata/lazy_load.py +10 -7
- zenml/metadata/metadata_types.py +49 -0
- zenml/model/lazy_load.py +85 -4
- zenml/model/model.py +61 -83
- zenml/model/utils.py +47 -118
- zenml/models/__init__.py +6 -0
- zenml/models/v2/base/base.py +12 -8
- zenml/models/v2/base/filter.py +9 -0
- zenml/models/v2/core/artifact_version.py +53 -25
- zenml/models/v2/core/component.py +54 -19
- zenml/models/v2/core/flavor.py +13 -13
- zenml/models/v2/core/model.py +4 -1
- zenml/models/v2/core/model_version.py +4 -6
- zenml/models/v2/core/model_version_artifact.py +3 -1
- zenml/models/v2/core/model_version_pipeline_run.py +3 -1
- zenml/models/v2/core/pipeline.py +3 -1
- zenml/models/v2/core/pipeline_run.py +24 -3
- zenml/models/v2/core/run_metadata.py +2 -2
- zenml/models/v2/core/run_template.py +3 -1
- zenml/models/v2/core/stack.py +7 -3
- zenml/models/v2/core/step_run.py +58 -14
- zenml/models/v2/misc/auth_models.py +11 -2
- zenml/models/v2/misc/server_models.py +2 -4
- zenml/orchestrators/base_orchestrator.py +41 -4
- zenml/orchestrators/input_utils.py +52 -36
- zenml/orchestrators/step_launcher.py +50 -171
- zenml/orchestrators/step_run_utils.py +574 -0
- zenml/orchestrators/step_runner.py +83 -120
- zenml/orchestrators/utils.py +46 -180
- zenml/pipelines/__init__.py +3 -16
- zenml/{new/pipelines → pipelines}/pipeline_context.py +3 -18
- zenml/pipelines/pipeline_decorator.py +34 -60
- zenml/{new/pipelines/pipeline.py → pipelines/pipeline_definition.py} +210 -207
- zenml/{new/pipelines → pipelines}/run_utils.py +11 -10
- zenml/services/local/local_daemon_entrypoint.py +4 -4
- zenml/services/service.py +2 -2
- zenml/stack/stack.py +3 -108
- zenml/stack/stack_component.py +2 -78
- zenml/stack/utils.py +26 -14
- zenml/stack_deployments/aws_stack_deployment.py +3 -0
- zenml/step_operators/step_operator_entrypoint_configuration.py +1 -1
- zenml/steps/__init__.py +3 -9
- zenml/steps/base_step.py +25 -267
- zenml/steps/entrypoint_function_utils.py +2 -80
- zenml/{new/steps → steps}/step_context.py +12 -66
- zenml/steps/step_decorator.py +42 -89
- zenml/steps/step_invocation.py +16 -60
- zenml/steps/utils.py +4 -23
- zenml/utils/dashboard_utils.py +16 -51
- zenml/utils/materializer_utils.py +1 -1
- zenml/utils/requirements_utils.py +71 -0
- zenml/utils/singleton.py +15 -3
- zenml/utils/source_utils.py +39 -2
- zenml/utils/typing_utils.py +8 -28
- zenml/utils/visualization_utils.py +1 -1
- zenml/zen_server/auth.py +44 -39
- zenml/zen_server/dashboard/assets/{404-Y50hSt65.js → 404-DT4QRUqN.js} +1 -1
- zenml/zen_server/dashboard/assets/@radix-DP6vWzyx.js +85 -0
- zenml/zen_server/dashboard/assets/@react-router-BMhZulnd.js +29 -0
- zenml/zen_server/dashboard/assets/@reactflow-8U9qNlMR.js +17 -0
- zenml/zen_server/dashboard/assets/@tanstack-BUCbhJyH.js +22 -0
- zenml/zen_server/dashboard/assets/{AlertDialogDropdownItem-xLR9a1iw.js → AlertDialogDropdownItem-C6N2rGrB.js} +1 -1
- zenml/zen_server/dashboard/assets/{CodeSnippet-IxXNxUDa.js → CodeSnippet-CqybNv0k.js} +1 -1
- zenml/zen_server/dashboard/assets/{CollapsibleCard-BhutZbBL.js → CollapsibleCard-0r_8G2Lj.js} +1 -1
- zenml/zen_server/dashboard/assets/{Commands-Bf-rd1z8.js → Commands-BDjgBQKi.js} +1 -1
- zenml/zen_server/dashboard/assets/ComponentBadge-DUiEYJHu.js +1 -0
- zenml/zen_server/dashboard/assets/ComponentFallbackDialog-BFoH5K4V.js +1 -0
- zenml/zen_server/dashboard/assets/ComponentIcon-CAIoUis2.js +1 -0
- zenml/zen_server/dashboard/assets/{CopyButton-DcFHidFJ.js → CopyButton-C745BrKi.js} +1 -1
- zenml/zen_server/dashboard/assets/{CsvVizualization-QSbjrfxw.js → CsvVizualization-PpAq0CeZ.js} +5 -5
- zenml/zen_server/dashboard/assets/{DialogItem-Cd3HqST4.js → DialogItem-DcVCZEew.js} +1 -1
- zenml/zen_server/dashboard/assets/{DisplayDate-DkCy54Bp.js → DisplayDate-BeXgUG_C.js} +1 -1
- zenml/zen_server/dashboard/assets/{EmptyState-Cs3DEmso.js → EmptyState-DeK7H4pr.js} +1 -1
- zenml/zen_server/dashboard/assets/{Error-BhwdmqK7.js → Error-BMlzibXj.js} +1 -1
- zenml/zen_server/dashboard/assets/{Helpbox-0pBpTwTm.js → Helpbox-BLf40fLV.js} +1 -1
- zenml/zen_server/dashboard/assets/{Infobox-BTK_EUKT.js → Infobox-BwisKifi.js} +1 -1
- zenml/zen_server/dashboard/assets/{InlineAvatar-CA3DFMcM.js → InlineAvatar-jEgodSgX.js} +1 -1
- zenml/zen_server/dashboard/assets/{Lock-CmIn0szs.js → Lock-3lLt1ih0.js} +1 -1
- zenml/zen_server/dashboard/assets/MarkdownVisualization-8O9kTr-2.js +14 -0
- zenml/zen_server/dashboard/assets/{NumberBox-CrN0_kqI.js → NumberBox-T9eELfLZ.js} +1 -1
- zenml/zen_server/dashboard/assets/{Partials-QLOZw624.js → Partials-YPBB3V4q.js} +1 -1
- zenml/zen_server/dashboard/assets/{PasswordChecker-DE71J_3F.js → PasswordChecker-CW0kqY0W.js} +1 -1
- zenml/zen_server/dashboard/assets/{ProviderIcon-C16CCIN4.js → ProviderIcon-Bb3Xha5A.js} +1 -1
- zenml/zen_server/dashboard/assets/{ProviderRadio-D3FuCHf3.js → ProviderRadio-BROY1700.js} +1 -1
- zenml/zen_server/dashboard/assets/RunSelector-DCiL3M1c.js +1 -0
- zenml/zen_server/dashboard/assets/SearchField-DfUiGFVd.js +1 -0
- zenml/zen_server/dashboard/assets/{SecretTooltip-BaMwHF-Q.js → SecretTooltip-C_qByGWB.js} +1 -1
- zenml/zen_server/dashboard/assets/{SetPassword-DuIC65H9.js → SetPassword-7pRB00El.js} +1 -1
- zenml/zen_server/dashboard/assets/{Tick-DJTCF0Re.js → Tick-CykQFPj2.js} +1 -1
- zenml/zen_server/dashboard/assets/{UpdatePasswordSchemas-CUm-DMpw.js → UpdatePasswordSchemas-DckMEkFf.js} +1 -1
- zenml/zen_server/dashboard/assets/{UsageReason-CKw0juLF.js → UsageReason-DVceN14P.js} +1 -1
- zenml/zen_server/dashboard/assets/{WizardFooter-Cv9ApYWU.js → WizardFooter-CW0Cvd70.js} +1 -1
- zenml/zen_server/dashboard/assets/{check-circle-DOoS4yhF.js → check-circle-Dwxliy1Z.js} +1 -1
- zenml/zen_server/dashboard/assets/{chevron-down-Cwb-W_B_.js → chevron-down-8wLBS5pQ.js} +1 -1
- zenml/zen_server/dashboard/assets/{chevron-right-double-c9H46Kl8.js → chevron-right-double-DoD8iXWM.js} +1 -1
- zenml/zen_server/dashboard/assets/{cloud-only-BB4BVa6E.js → cloud-only-B-s_HMDm.js} +1 -1
- zenml/zen_server/dashboard/assets/{code-browser-BJYErIjr.js → code-browser-CZUQs3Wa.js} +1 -1
- zenml/zen_server/dashboard/assets/{copy-CaGlDsUy.js → copy-CaSMXwiU.js} +1 -1
- zenml/zen_server/dashboard/assets/{create-stack-F29xAUEx.js → create-stack-CEmaPZ4c.js} +1 -1
- zenml/zen_server/dashboard/assets/delete-run-D-LKbGyz.js +1 -0
- zenml/zen_server/dashboard/assets/{docker-BFAFXr2_.js → docker-BFNgg-z3.js} +1 -1
- zenml/zen_server/dashboard/assets/{dots-horizontal-C6K59vUm.js → dots-horizontal-DK5Duzx4.js} +1 -1
- zenml/zen_server/dashboard/assets/{form-schemas-BKXwSDK2.js → form-schemas-1AyOCx90.js} +1 -1
- zenml/zen_server/dashboard/assets/{gcp-Dj6ntk0L.js → gcp-7M2Yf3ZK.js} +1 -1
- zenml/zen_server/dashboard/assets/{help-CwN931fX.js → help-Dam461dC.js} +1 -1
- zenml/zen_server/dashboard/assets/{index-5GJ5ysEZ.js → index-BVJ8n2-j.js} +1 -1
- zenml/zen_server/dashboard/assets/index-Bpmj40BI.js +1 -0
- zenml/zen_server/dashboard/assets/index-CbU4Ln_E.css +1 -0
- zenml/zen_server/dashboard/assets/{index-D-mtoBj3.js → index-DKPhqP2B.js} +1 -1
- zenml/zen_server/dashboard/assets/index-QQb7wQEC.js +55 -0
- zenml/zen_server/dashboard/assets/index.esm-cuVep_NJ.js +1 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-400-normal-BLGc9T1a.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-400-normal-ZzOtrSSW.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-500-normal-D4Vwzodn.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-500-normal-DH2hs3aW.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-600-normal-BGBWG807.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-600-normal-BuzJQFbW.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-400-normal-BPnxn4xp.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-400-normal-Dc4VJyIJ.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-500-normal-BShVwWPj.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-500-normal-CUiC4oBV.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-600-normal-Bt9VVOA-.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-600-normal-CaqZN2hq.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-400-normal-BZzXV7-1.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-400-normal-DxZsaF_h.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-500-normal-CeQXL5ds.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-500-normal-d_eO-yCQ.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-600-normal-CwicyhtI.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-600-normal-Dhlb-90d.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-400-normal-Bput3-QP.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-400-normal-DCpCPQOf.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-500-normal-B6guLgqG.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-500-normal-M2hEX8vc.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-600-normal-C9WLioJ8.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-600-normal-Cnui8OiR.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-400-normal-BOOGhInR.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-400-normal-gitzw0hO.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-500-normal-D2bGa7uu.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-500-normal-deR1Tlfd.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-600-normal-B5cFAncS.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-600-normal-D273HNI0.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-400-normal-C1t-h-pH.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-400-normal-hnt3BR84.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-500-normal-CIS2RHJS.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-500-normal-UMdmhHu2.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-600-normal-BnYJhD27.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-600-normal-CAF0vJDd.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-400-normal-BUNmGMP1.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-400-normal-DMkecbls.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-500-normal-DOriooB6.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-500-normal-DQPw2Hwd.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-600-normal-Cc8MFFhd.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-600-normal-Cm6aH8_k.woff +0 -0
- zenml/zen_server/dashboard/assets/{kubernetes-BjbR6D-1.js → kubernetes--g7r02Zu.js} +1 -1
- zenml/zen_server/dashboard/assets/{layout-Dru15_XR.js → layout-DCSYN7-C.js} +1 -1
- zenml/zen_server/dashboard/assets/{link-external-BT2L8hAQ.js → link-external-CBEk6kEG.js} +1 -1
- zenml/zen_server/dashboard/assets/{login-mutation-ax6iL2Mb.js → login-mutation-DTcAFP1l.js} +1 -1
- zenml/zen_server/dashboard/assets/{logs-GiDJXbLS.js → logs-D5bdJGur.js} +1 -1
- zenml/zen_server/dashboard/assets/not-found-Cc-JkRH2.js +1 -0
- zenml/zen_server/dashboard/assets/{package-DYKZ5jKW.js → package-Cs35Szwh.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-HkVBdZl6.js → page-9yplj5JT.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-uORspyRu.js → page-B-y2XKIc.js} +1 -1
- zenml/zen_server/dashboard/assets/page-BBpOxVcY.js +1 -0
- zenml/zen_server/dashboard/assets/{page-BDg1F-Ug.js → page-BQQKaabe.js} +2 -2
- zenml/zen_server/dashboard/assets/page-BRInM1Lg.js +1 -0
- zenml/zen_server/dashboard/assets/{page-CvKnNK1S.js → page-BjjlMk7s.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-BukXK1Aa.js → page-Bvd7YH2A.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-DcTjHmYZ.js → page-C0N5q3l7.js} +1 -1
- zenml/zen_server/dashboard/assets/page-CT3Nep8W.js +1 -0
- zenml/zen_server/dashboard/assets/{page-DuqYMYmH.js → page-C_f47pBf.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-DRfcRK1w.js → page-ClUVkl-O.js} +1 -1
- zenml/zen_server/dashboard/assets/page-Cmv8C_yM.js +3 -0
- zenml/zen_server/dashboard/assets/{page-p0BhSAWx.js → page-CyN2bdWG.js} +1 -1
- zenml/zen_server/dashboard/assets/page-CzzXH4fs.js +1 -0
- zenml/zen_server/dashboard/assets/{page-6mfzecin.js → page-DH_Z7iW1.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-8kYmrh0B.js → page-DIOXwhiD.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-BXarY9K2.js → page-DLixvR-7.js} +1 -1
- zenml/zen_server/dashboard/assets/page-DTlGjgnG.js +1 -0
- zenml/zen_server/dashboard/assets/page-Dbpl86h0.js +1 -0
- zenml/zen_server/dashboard/assets/{page-MAXyfXBq.js → page-Ddgy6kDS.js} +1 -1
- zenml/zen_server/dashboard/assets/page-DtCAfBLy.js +9 -0
- zenml/zen_server/dashboard/assets/{page-CKHNAq7z.js → page-Dx16z7nA.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-DMSLXKGT.js → page-DzpVUZ8f.js} +1 -1
- zenml/zen_server/dashboard/assets/page-McUyYbo1.js +1 -0
- zenml/zen_server/dashboard/assets/{page-miU2rhYG.js → page-N4qoPHKb.js} +1 -1
- zenml/zen_server/dashboard/assets/page-T1P3RyAR.js +1 -0
- zenml/zen_server/dashboard/assets/{page-3qPX9WYH.js → page-bKaULTGG.js} +1 -1
- zenml/zen_server/dashboard/assets/page-sbXUJy9t.js +1 -0
- zenml/zen_server/dashboard/assets/{persist-CfJMar_k.js → persist-CP0JmYZ4.js} +1 -1
- zenml/zen_server/dashboard/assets/{persist-BxIR2XZs.js → persist-DNb5cdrU.js} +1 -1
- zenml/zen_server/dashboard/assets/{plus-Bc8eLSDM.js → plus-C9IxgN2M.js} +1 -1
- zenml/zen_server/dashboard/assets/{refresh-hfgWPeto.js → refresh-BVu22P_C.js} +1 -1
- zenml/zen_server/dashboard/assets/{rocket-SESCGQXm.js → rocket-CONEmRmB.js} +1 -1
- zenml/zen_server/dashboard/assets/{sharedSchema-vub0rii3.js → sharedSchema-TMLu-nYQ.js} +1 -1
- zenml/zen_server/dashboard/assets/stack-detail-query-xmYxSsUY.js +1 -0
- zenml/zen_server/dashboard/assets/{tick-circle-m-hJG8i9.js → tick-circle-CM1ZScbQ.js} +1 -1
- zenml/zen_server/dashboard/assets/{trash-DUWZWzse.js → trash-DkJHMOg7.js} +1 -1
- zenml/zen_server/dashboard/assets/{update-server-settings-mutation-FGVP7X2U.js → update-server-settings-mutation-DsU8cNVl.js} +1 -1
- zenml/zen_server/dashboard/assets/{url-CbAPzsmT.js → url-D5le3J4q.js} +1 -1
- zenml/zen_server/dashboard/assets/zod-D89GC_vc.js +1 -0
- zenml/zen_server/dashboard/index.html +7 -7
- zenml/zen_server/deploy/__init__.py +7 -16
- zenml/zen_server/deploy/base_provider.py +46 -73
- zenml/zen_server/deploy/{local → daemon}/__init__.py +3 -3
- zenml/zen_server/deploy/{local/local_provider.py → daemon/daemon_provider.py} +44 -63
- zenml/zen_server/deploy/{local/local_zen_server.py → daemon/daemon_zen_server.py} +50 -28
- zenml/zen_server/deploy/deployer.py +90 -171
- zenml/zen_server/deploy/deployment.py +20 -12
- zenml/zen_server/deploy/docker/docker_provider.py +9 -28
- zenml/zen_server/deploy/docker/docker_zen_server.py +19 -9
- zenml/zen_server/deploy/helm/Chart.yaml +1 -1
- zenml/zen_server/deploy/helm/README.md +2 -2
- zenml/zen_server/exceptions.py +11 -0
- zenml/zen_server/feature_gate/zenml_cloud_feature_gate.py +1 -1
- zenml/zen_server/jwt.py +9 -9
- zenml/zen_server/routers/artifact_version_endpoints.py +1 -1
- zenml/zen_server/routers/auth_endpoints.py +30 -8
- zenml/zen_server/routers/runs_endpoints.py +0 -28
- zenml/zen_server/routers/stack_components_endpoints.py +1 -1
- zenml/zen_server/routers/workspaces_endpoints.py +1 -1
- zenml/zen_server/template_execution/runner_entrypoint_configuration.py +7 -4
- zenml/zen_server/template_execution/utils.py +8 -63
- zenml/zen_server/utils.py +67 -69
- zenml/zen_server/zen_server_api.py +107 -17
- zenml/zen_stores/base_zen_store.py +4 -51
- zenml/zen_stores/migrations/versions/0.67.0_release.py +23 -0
- zenml/zen_stores/migrations/versions/0.68.0_release.py +23 -0
- zenml/zen_stores/migrations/versions/0.68.1_release.py +23 -0
- zenml/zen_stores/migrations/versions/1d8f30c54477_migrate_to_new_.py +124 -0
- zenml/zen_stores/migrations/versions/c22561cbb3a9_add_artifact_unique_constraints.py +86 -0
- zenml/zen_stores/rest_zen_store.py +325 -147
- zenml/zen_stores/schemas/api_key_schemas.py +9 -4
- zenml/zen_stores/schemas/artifact_schemas.py +21 -2
- zenml/zen_stores/schemas/artifact_visualization_schemas.py +1 -1
- zenml/zen_stores/schemas/component_schemas.py +49 -6
- zenml/zen_stores/schemas/device_schemas.py +9 -4
- zenml/zen_stores/schemas/flavor_schemas.py +1 -1
- zenml/zen_stores/schemas/model_schemas.py +1 -1
- zenml/zen_stores/schemas/pipeline_run_schemas.py +12 -4
- zenml/zen_stores/schemas/service_schemas.py +1 -1
- zenml/zen_stores/schemas/step_run_schemas.py +3 -3
- zenml/zen_stores/schemas/trigger_schemas.py +1 -1
- zenml/zen_stores/sql_zen_store.py +422 -145
- zenml/zen_stores/template_utils.py +3 -1
- {zenml_nightly-0.66.0.dev20240928.dist-info → zenml_nightly-0.68.1.dev20241102.dist-info}/METADATA +20 -18
- {zenml_nightly-0.66.0.dev20240928.dist-info → zenml_nightly-0.68.1.dev20241102.dist-info}/RECORD +343 -505
- {zenml_nightly-0.66.0.dev20240928.dist-info → zenml_nightly-0.68.1.dev20241102.dist-info}/WHEEL +1 -1
- zenml/api.py +0 -60
- zenml/cli/stack_recipes.py +0 -469
- zenml/lineage_graph/__init__.py +0 -34
- zenml/lineage_graph/lineage_graph.py +0 -244
- zenml/lineage_graph/node/__init__.py +0 -32
- zenml/lineage_graph/node/artifact_node.py +0 -51
- zenml/lineage_graph/node/step_node.py +0 -41
- zenml/model/model_version.py +0 -38
- zenml/new/pipelines/code_archive.py +0 -157
- zenml/new/pipelines/pipeline_decorator.py +0 -118
- zenml/new/steps/step_decorator.py +0 -176
- zenml/pipelines/base_pipeline.py +0 -273
- zenml/post_execution/__init__.py +0 -30
- zenml/post_execution/pipeline.py +0 -55
- zenml/post_execution/pipeline_run.py +0 -55
- zenml/services/terraform/__init__.py +0 -14
- zenml/services/terraform/terraform_service.py +0 -441
- zenml/steps/external_artifact.py +0 -26
- zenml/steps/step_environment.py +0 -108
- zenml/steps/step_output.py +0 -36
- zenml/utils/mlstacks_utils.py +0 -635
- zenml/utils/terraform_utils.py +0 -43
- zenml/zen_server/dashboard/assets/@radix-DnFH_oo1.js +0 -85
- zenml/zen_server/dashboard/assets/@react-router-APVeuk-U.js +0 -29
- zenml/zen_server/dashboard/assets/@reactflow-ytavUpwh.js +0 -17
- zenml/zen_server/dashboard/assets/@tanstack-QbMbTrh5.js +0 -22
- zenml/zen_server/dashboard/assets/ComponentBadge-gKR1OIwG.js +0 -1
- zenml/zen_server/dashboard/assets/ExecutionStatus-D6r6aK8J.js +0 -1
- zenml/zen_server/dashboard/assets/MarkdownVisualization-DS05sfBm.js +0 -14
- zenml/zen_server/dashboard/assets/SearchField-BzmfxS0L.js +0 -1
- zenml/zen_server/dashboard/assets/all-pipeline-runs-query-BA3R2Sey.js +0 -1
- zenml/zen_server/dashboard/assets/delete-run-CP0pcJ3U.js +0 -1
- zenml/zen_server/dashboard/assets/index-BhJ6ZJxv.css +0 -1
- zenml/zen_server/dashboard/assets/index-Ci0nJ8EZ.js +0 -55
- zenml/zen_server/dashboard/assets/index.esm-BE1uqCX5.js +0 -1
- zenml/zen_server/dashboard/assets/inter-cyrillic-400-normal-Df6ckaLK.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-400-normal-JrS_4yms.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-500-normal-BRrLR67x.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-500-normal-DskEQOpE.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-600-normal-DDpWG8g5.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-600-normal-iz1--dBq.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-400-normal-CzG7Kr3z.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-400-normal-tyfMZHQw.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-500-normal-DOnSzjnx.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-500-normal-Xebo2OyJ.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-600-normal-DpA2xaRd.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-600-normal-KAwcVx6H.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-400-normal-DQXyrmoy.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-400-normal-DvIPHDQ7.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-500-normal-BjpBGs91.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-500-normal-CmOavsDc.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-600-normal-B-l8Lzzd.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-600-normal-BLZsI-P3.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-400-normal-CIdlr5YK.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-400-normal-_Rr29XE2.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-500-normal-2pdUafRD.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-500-normal-Dtavx3qw.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-600-normal-BmtRFZgT.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-600-normal-CkBLDEl_.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-400-normal-BT1H-PT_.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-400-normal-Cdi8t5Mu.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-500-normal-D4I8BKCx.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-500-normal-kWhwEdDH.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-600-normal-B2Ssfs8e.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-600-normal-Dbvh0wvx.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-400-normal-8tIzm-yw.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-400-normal-D3W-OpO-.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-500-normal-B9u8Q_zH.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-500-normal-SuUkSNTU.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-600-normal-Dg0Bk0Yr.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-600-normal-ao35dkSb.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-400-normal-Cnt0N5Vm.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-400-normal-DIOGfGLL.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-500-normal-0i6yoQMg.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-500-normal-5IkPJ6Nk.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-600-normal-BQ_dbMbg.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-600-normal-DjnxGF-L.woff2 +0 -0
- zenml/zen_server/dashboard/assets/not-found-DbjllLY_.js +0 -1
- zenml/zen_server/dashboard/assets/page-B1n7_W7z.js +0 -1
- zenml/zen_server/dashboard/assets/page-BZZhLo2u.js +0 -1
- zenml/zen_server/dashboard/assets/page-Bbf_oBjn.js +0 -1
- zenml/zen_server/dashboard/assets/page-BjjuBvZG.js +0 -9
- zenml/zen_server/dashboard/assets/page-CHaQkFK5.js +0 -1
- zenml/zen_server/dashboard/assets/page-CS0SYFK8.js +0 -1
- zenml/zen_server/dashboard/assets/page-DGM1CbYT.js +0 -2
- zenml/zen_server/dashboard/assets/page-DOmIZ2ra.js +0 -1
- zenml/zen_server/dashboard/assets/page-DYVmJ9_w.js +0 -3
- zenml/zen_server/dashboard/assets/page-Dwow2doB.js +0 -1
- zenml/zen_server/dashboard/assets/stack-detail-query-DQcyzG-2.js +0 -1
- zenml/zen_server/dashboard/assets/zod-uFd1wBcd.js +0 -1
- zenml/zen_server/dashboard_legacy/_redirects +0 -1
- zenml/zen_server/dashboard_legacy/asset-manifest.json +0 -131
- zenml/zen_server/dashboard_legacy/favicon.ico +0 -0
- zenml/zen_server/dashboard_legacy/index.html +0 -1
- zenml/zen_server/dashboard_legacy/manifest.json +0 -25
- zenml/zen_server/dashboard_legacy/precache-manifest.6d320abb70db612019dda6c4948e7a90.js +0 -462
- zenml/zen_server/dashboard_legacy/robots.txt +0 -2
- zenml/zen_server/dashboard_legacy/service-worker.js +0 -39
- zenml/zen_server/dashboard_legacy/static/css/2.5b37d44a.chunk.css +0 -16
- zenml/zen_server/dashboard_legacy/static/css/2.5b37d44a.chunk.css.map +0 -1
- zenml/zen_server/dashboard_legacy/static/css/main.e79dff04.chunk.css +0 -2
- zenml/zen_server/dashboard_legacy/static/css/main.e79dff04.chunk.css.map +0 -1
- zenml/zen_server/dashboard_legacy/static/js/2.7934458d.chunk.js +0 -3
- zenml/zen_server/dashboard_legacy/static/js/2.7934458d.chunk.js.LICENSE.txt +0 -95
- zenml/zen_server/dashboard_legacy/static/js/2.7934458d.chunk.js.map +0 -1
- zenml/zen_server/dashboard_legacy/static/js/main.fa9299d5.chunk.js +0 -2
- zenml/zen_server/dashboard_legacy/static/js/main.fa9299d5.chunk.js.map +0 -1
- zenml/zen_server/dashboard_legacy/static/js/runtime-main.bfca2edd.js +0 -2
- zenml/zen_server/dashboard_legacy/static/js/runtime-main.bfca2edd.js.map +0 -1
- zenml/zen_server/dashboard_legacy/static/media/AlertTriangle.28aee535.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/ArrowSquareOut.abfb9bc7.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/Back.86c23a22.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/BookOpen.5cb101ff.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/BoundingBox.1eb98717.svg +0 -10
- zenml/zen_server/dashboard_legacy/static/media/Burger.9b1c67d7.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Cached.2381fb8d.svg +0 -1
- zenml/zen_server/dashboard_legacy/static/media/Calendar.356e11c7.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/ChartBarHorizontal.0247447b.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/ChartLine.0d79e18d.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/ChatDots.2e1c9211.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/Check.dad6beb2.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/CheckCircleFilled.c19566d0.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Checkbox.af50e31e.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/ChevronDown.f860ce32.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/ChevronDownLight.6642d756.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/ChevronLeft.f6edfcdb.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/CircleCheck.f98fd6ca.svg +0 -1
- zenml/zen_server/dashboard_legacy/static/media/Clock.ffc9de95.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Close.74e9efbc.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/CloseWithBorder.6960930a.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/CloseWithoutBorder.cd6f71df.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/CloudArrowUp.0aecb235.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/Code.ef0f33b5.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Config.0be63f8a.svg +0 -1
- zenml/zen_server/dashboard_legacy/static/media/Connector.9fd46ef1.svg +0 -10
- zenml/zen_server/dashboard_legacy/static/media/Copy.36e2112a.svg +0 -1
- zenml/zen_server/dashboard_legacy/static/media/Dashboard.d05787e0.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Data.b1c3b5f8.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Delete.3c361b28.svg +0 -8
- zenml/zen_server/dashboard_legacy/static/media/Docs.7541d478.svg +0 -7
- zenml/zen_server/dashboard_legacy/static/media/Download.fba04d87.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/Edit.490eb294.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/EmptyRightArrow.23749d01.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Example.6396cd37.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/Extension.1394cd4a.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Eye.d9e4ee62.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/Failed.0213c1a0.svg +0 -1
- zenml/zen_server/dashboard_legacy/static/media/FileText.1f15bacd.svg +0 -7
- zenml/zen_server/dashboard_legacy/static/media/Filter.ab6b9c0d.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Folders.12b29887.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/FunnelFill.6df4c143.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/GitCommit.7dd9c2aa.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/GitHub_Logo.cefc2023.png +0 -0
- zenml/zen_server/dashboard_legacy/static/media/Graph.2c63a892.svg +0 -11
- zenml/zen_server/dashboard_legacy/static/media/History.08329240.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Home.0843b0d5.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/ImageBuilder.ea762d9c.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/InProgress.304a0edc.svg +0 -1
- zenml/zen_server/dashboard_legacy/static/media/Info.9fe10c5c.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/KeyboardReturn.491afbe3.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Link.72bbb55d.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/Lock.30f5e1fe.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/Lock2.a769ea52.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/LockKey.92f21621.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/Logs.8bf4d005.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/MinusCircle.4188f418.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/ModelRegistry.f0de050a.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/MultiUser.a2ba7c67.svg +0 -10
- zenml/zen_server/dashboard_legacy/static/media/PaginationFirst.92628634.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/PaginationLast.00d3c732.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/PaginationNext.86158845.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/PaginationPrev.60c18a88.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Pen.f2d831d4.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/PhotoCamera.179d6d4c.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Pipeline.30d298b0.svg +0 -7
- zenml/zen_server/dashboard_legacy/static/media/Plus.5aa1c16b.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/PlusCircle.92d860dd.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/Repositories.71a36b8c.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/RightArrow.f30d3871.svg +0 -29
- zenml/zen_server/dashboard_legacy/static/media/Rocket.63bf7b9d.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/RocketLaunch.1bff2b59.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/Rubik-Medium.c87313aa.ttf +0 -0
- zenml/zen_server/dashboard_legacy/static/media/Rubik-Regular.b3d0902b.ttf +0 -0
- zenml/zen_server/dashboard_legacy/static/media/Run.daec4fb2.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/Search.d1afcce5.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/Settings.59ca73ae.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/Share2.46c3ff66.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/SignOut.6aa718c5.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/SimplePlus.5cf7ec20.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/SingleUser.bef3a095.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/SourceCodePro-Regular.b484b32f.ttf +0 -0
- zenml/zen_server/dashboard_legacy/static/media/Stack.19b604ac.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/StackComponent.b1ba90b5.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/Star.f0c25022.svg +0 -9
- zenml/zen_server/dashboard_legacy/static/media/StarOutline.94ca8cd9.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Storefront.4b4796fe.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Stream.543e3039.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/SupportAgent.510ddf1f.svg +0 -8
- zenml/zen_server/dashboard_legacy/static/media/Table.77033750.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/Tool.d5785486.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/UserPlus.741a99d7.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/Verified.0625b2a0.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/addNew.4fb6c939.svg +0 -8
- zenml/zen_server/dashboard_legacy/static/media/arrowClose.cbd53f3f.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/arrowOpen.6ceef0af.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/check_small.30bc0138.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/circleArrowSideClose.98d6013e.svg +0 -18
- zenml/zen_server/dashboard_legacy/static/media/circleArrowSideOpen.63653df6.svg +0 -18
- zenml/zen_server/dashboard_legacy/static/media/image.104fd14b.png +0 -0
- zenml/zen_server/dashboard_legacy/static/media/imageAddIcon.e83004a9.svg +0 -7
- zenml/zen_server/dashboard_legacy/static/media/logo.93333e5c.svg +0 -1
- zenml/zen_server/dashboard_legacy/static/media/logo_small.4204397d.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/logo_white.d4b4414e.svg +0 -20
- zenml/zen_server/dashboard_legacy/static/media/notConnected.5e2c8ea7.svg +0 -8
- zenml/zen_server/dashboard_legacy/static/media/plugin-fallback.72c294e6.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/share.bcd998b0.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/stars.08a9b19a.svg +0 -8
- zenml/zen_server/deploy/terraform/__init__.py +0 -41
- zenml/zen_server/deploy/terraform/providers/aws_provider.py +0 -61
- zenml/zen_server/deploy/terraform/providers/azure_provider.py +0 -59
- zenml/zen_server/deploy/terraform/providers/gcp_provider.py +0 -59
- zenml/zen_server/deploy/terraform/providers/terraform_provider.py +0 -331
- zenml/zen_server/deploy/terraform/recipes/aws/.gitignore +0 -8
- zenml/zen_server/deploy/terraform/recipes/aws/helm.tf +0 -20
- zenml/zen_server/deploy/terraform/recipes/aws/ingress.tf +0 -30
- zenml/zen_server/deploy/terraform/recipes/aws/outputs.tf +0 -7
- zenml/zen_server/deploy/terraform/recipes/aws/printf.cmd +0 -2
- zenml/zen_server/deploy/terraform/recipes/aws/sql.tf +0 -62
- zenml/zen_server/deploy/terraform/recipes/aws/terraform.tf +0 -44
- zenml/zen_server/deploy/terraform/recipes/aws/variables.tf +0 -167
- zenml/zen_server/deploy/terraform/recipes/aws/vpc.tf +0 -47
- zenml/zen_server/deploy/terraform/recipes/aws/zen_server.tf +0 -103
- zenml/zen_server/deploy/terraform/recipes/azure/.gitignore +0 -8
- zenml/zen_server/deploy/terraform/recipes/azure/helm.tf +0 -20
- zenml/zen_server/deploy/terraform/recipes/azure/ingress.tf +0 -30
- zenml/zen_server/deploy/terraform/recipes/azure/key_vault.tf +0 -73
- zenml/zen_server/deploy/terraform/recipes/azure/outputs.tf +0 -7
- zenml/zen_server/deploy/terraform/recipes/azure/printf.cmd +0 -2
- zenml/zen_server/deploy/terraform/recipes/azure/rg.tf +0 -36
- zenml/zen_server/deploy/terraform/recipes/azure/sql.tf +0 -65
- zenml/zen_server/deploy/terraform/recipes/azure/terraform.tf +0 -52
- zenml/zen_server/deploy/terraform/recipes/azure/variables.tf +0 -176
- zenml/zen_server/deploy/terraform/recipes/azure/zen_server.tf +0 -103
- zenml/zen_server/deploy/terraform/recipes/gcp/.gitignore +0 -8
- zenml/zen_server/deploy/terraform/recipes/gcp/helm.tf +0 -20
- zenml/zen_server/deploy/terraform/recipes/gcp/ingress.tf +0 -30
- zenml/zen_server/deploy/terraform/recipes/gcp/outputs.tf +0 -7
- zenml/zen_server/deploy/terraform/recipes/gcp/printf.cmd +0 -2
- zenml/zen_server/deploy/terraform/recipes/gcp/sql.tf +0 -64
- zenml/zen_server/deploy/terraform/recipes/gcp/terraform.tf +0 -44
- zenml/zen_server/deploy/terraform/recipes/gcp/variables.tf +0 -171
- zenml/zen_server/deploy/terraform/recipes/gcp/zen_server.tf +0 -114
- zenml/zen_server/deploy/terraform/terraform_zen_server.py +0 -246
- /zenml/{new/pipelines → pipelines}/build_utils.py +0 -0
- /zenml/{new/steps → steps}/decorated_step.py +0 -0
- {zenml_nightly-0.66.0.dev20240928.dist-info → zenml_nightly-0.68.1.dev20241102.dist-info}/LICENSE +0 -0
- {zenml_nightly-0.66.0.dev20240928.dist-info → zenml_nightly-0.68.1.dev20241102.dist-info}/entry_points.txt +0 -0
zenml/cli/utils.py
CHANGED
@@ -57,8 +57,6 @@ from zenml.console import console, zenml_style_defaults
|
|
57
57
|
from zenml.constants import (
|
58
58
|
FILTERING_DATETIME_FORMAT,
|
59
59
|
IS_DEBUG_ENV,
|
60
|
-
NOT_INSTALLED_MESSAGE,
|
61
|
-
TERRAFORM_NOT_INSTALLED_MESSAGE,
|
62
60
|
)
|
63
61
|
from zenml.enums import GenericFilterOps, StackComponentType
|
64
62
|
from zenml.logger import get_logger
|
@@ -81,7 +79,6 @@ from zenml.services import BaseService, ServiceState
|
|
81
79
|
from zenml.stack import StackComponent
|
82
80
|
from zenml.stack.stack_component import StackComponentConfig
|
83
81
|
from zenml.utils import secret_utils
|
84
|
-
from zenml.zen_server.deploy import ServerDeployment
|
85
82
|
|
86
83
|
if TYPE_CHECKING:
|
87
84
|
from uuid import UUID
|
@@ -225,6 +222,8 @@ def print_table(
|
|
225
222
|
caption: Caption of the table.
|
226
223
|
columns: Optional column configurations to be used in the table.
|
227
224
|
"""
|
225
|
+
from rich.text import Text
|
226
|
+
|
228
227
|
column_keys = {key: None for dict_ in obj for key in dict_}
|
229
228
|
column_names = [columns.get(key, key.upper()) for key in column_keys]
|
230
229
|
rich_table = table.Table(
|
@@ -243,10 +242,19 @@ def print_table(
|
|
243
242
|
if key is None:
|
244
243
|
values.append(None)
|
245
244
|
else:
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
245
|
+
v = dict_.get(key) or " "
|
246
|
+
if isinstance(v, str) and (
|
247
|
+
v.startswith("http://") or v.startswith("https://")
|
248
|
+
):
|
249
|
+
# Display the URL as a hyperlink in a way that doesn't break
|
250
|
+
# the URL when it needs to be wrapped over multiple lines
|
251
|
+
value: Union[str, Text] = Text(v, style=f"link {v}")
|
252
|
+
else:
|
253
|
+
value = str(v)
|
254
|
+
# Escape text when square brackets are used, but allow
|
255
|
+
# links to be decorated as rich style links
|
256
|
+
if "[" in value and "[link=" not in value:
|
257
|
+
value = escape(value)
|
250
258
|
values.append(value)
|
251
259
|
rich_table.add_row(*values)
|
252
260
|
if len(rich_table.columns) > 1:
|
@@ -260,6 +268,7 @@ def print_pydantic_models(
|
|
260
268
|
exclude_columns: Optional[List[str]] = None,
|
261
269
|
active_models: Optional[List[T]] = None,
|
262
270
|
show_active: bool = False,
|
271
|
+
rename_columns: Dict[str, str] = {},
|
263
272
|
) -> None:
|
264
273
|
"""Prints the list of Pydantic models in a table.
|
265
274
|
|
@@ -272,6 +281,7 @@ def print_pydantic_models(
|
|
272
281
|
active_models: Optional list of active models of the given type T.
|
273
282
|
show_active: Flag to decide whether to append the active model on the
|
274
283
|
top of the list.
|
284
|
+
rename_columns: Optional dictionary to rename columns.
|
275
285
|
"""
|
276
286
|
if exclude_columns is None:
|
277
287
|
exclude_columns = list()
|
@@ -328,6 +338,8 @@ def print_pydantic_models(
|
|
328
338
|
|
329
339
|
for k in include_columns:
|
330
340
|
value = getattr(model, k)
|
341
|
+
if k in rename_columns:
|
342
|
+
k = rename_columns[k]
|
331
343
|
# In case the response model contains nested `BaseResponse`s
|
332
344
|
# we want to attempt to represent them by name, if they contain
|
333
345
|
# such a field, else the id is used
|
@@ -352,6 +364,7 @@ def print_pydantic_models(
|
|
352
364
|
items[k] = [str(v) for v in value]
|
353
365
|
else:
|
354
366
|
items[k] = str(value)
|
367
|
+
|
355
368
|
# prepend an active marker if a function to mark active was passed
|
356
369
|
if not active_models and not show_active:
|
357
370
|
return items
|
@@ -523,43 +536,6 @@ def format_integration_list(
|
|
523
536
|
return list_of_dicts
|
524
537
|
|
525
538
|
|
526
|
-
def print_stack_outputs(stack: "StackResponse") -> None:
|
527
|
-
"""Prints outputs for stacks deployed with mlstacks.
|
528
|
-
|
529
|
-
Args:
|
530
|
-
stack: Instance of a stack model.
|
531
|
-
"""
|
532
|
-
verify_mlstacks_prerequisites_installation()
|
533
|
-
|
534
|
-
if not stack.stack_spec_path:
|
535
|
-
declare("No stack spec path is set for this stack.")
|
536
|
-
return
|
537
|
-
stack_caption = f"'{stack.name}' stack"
|
538
|
-
rich_table = table.Table(
|
539
|
-
box=box.HEAVY_EDGE,
|
540
|
-
title="MLStacks Outputs",
|
541
|
-
caption=stack_caption,
|
542
|
-
show_lines=True,
|
543
|
-
)
|
544
|
-
rich_table.add_column("OUTPUT_KEY", overflow="fold")
|
545
|
-
rich_table.add_column("OUTPUT_VALUE", overflow="fold")
|
546
|
-
|
547
|
-
from mlstacks.utils.terraform_utils import get_stack_outputs
|
548
|
-
|
549
|
-
stack_spec_file = stack.stack_spec_path
|
550
|
-
stack_outputs = get_stack_outputs(stack_path=stack_spec_file)
|
551
|
-
|
552
|
-
for output_key, output_value in stack_outputs.items():
|
553
|
-
rich_table.add_row(output_key, output_value)
|
554
|
-
|
555
|
-
# capitalize entries in first column
|
556
|
-
rich_table.columns[0]._cells = [
|
557
|
-
component.upper() # type: ignore[union-attr]
|
558
|
-
for component in rich_table.columns[0]._cells
|
559
|
-
]
|
560
|
-
console.print(rich_table)
|
561
|
-
|
562
|
-
|
563
539
|
def print_stack_configuration(stack: "StackResponse", active: bool) -> None:
|
564
540
|
"""Prints the configuration options of a stack.
|
565
541
|
|
@@ -609,9 +585,6 @@ def print_stack_configuration(stack: "StackResponse", active: bool) -> None:
|
|
609
585
|
f"{f'owned by user {stack.user.name}.' if stack.user else 'unowned.'}"
|
610
586
|
)
|
611
587
|
|
612
|
-
if stack.stack_spec_path:
|
613
|
-
declare(f"Stack spec path for `mlstacks`: '{stack.stack_spec_path}'")
|
614
|
-
|
615
588
|
|
616
589
|
def print_flavor_list(flavors: Page["FlavorResponse"]) -> None:
|
617
590
|
"""Prints the list of flavors.
|
@@ -655,7 +628,7 @@ def print_stack_component_configuration(
|
|
655
628
|
|
656
629
|
declare(
|
657
630
|
f"{component.type.value.title()} '{component.name}' of flavor "
|
658
|
-
f"'{component.
|
631
|
+
f"'{component.flavor_name}' with id '{component.id}' is owned by "
|
659
632
|
f"user '{user_name}'."
|
660
633
|
)
|
661
634
|
|
@@ -1433,74 +1406,6 @@ def print_served_model_configuration(
|
|
1433
1406
|
console.print(rich_table)
|
1434
1407
|
|
1435
1408
|
|
1436
|
-
def print_server_deployment_list(servers: List["ServerDeployment"]) -> None:
|
1437
|
-
"""Print a table with a list of ZenML server deployments.
|
1438
|
-
|
1439
|
-
Args:
|
1440
|
-
servers: list of ZenML server deployments
|
1441
|
-
"""
|
1442
|
-
server_dicts = []
|
1443
|
-
for server in servers:
|
1444
|
-
status = ""
|
1445
|
-
url = ""
|
1446
|
-
connected = ""
|
1447
|
-
if server.status:
|
1448
|
-
status = get_service_state_emoji(server.status.status)
|
1449
|
-
if server.status.url:
|
1450
|
-
url = server.status.url
|
1451
|
-
if server.status.connected:
|
1452
|
-
connected = ":point_left:"
|
1453
|
-
server_dicts.append(
|
1454
|
-
{
|
1455
|
-
"STATUS": status,
|
1456
|
-
"NAME": server.config.name,
|
1457
|
-
"PROVIDER": server.config.provider.value,
|
1458
|
-
"URL": url,
|
1459
|
-
"CONNECTED": connected,
|
1460
|
-
}
|
1461
|
-
)
|
1462
|
-
print_table(server_dicts)
|
1463
|
-
|
1464
|
-
|
1465
|
-
def print_server_deployment(server: "ServerDeployment") -> None:
|
1466
|
-
"""Prints the configuration and status of a ZenML server deployment.
|
1467
|
-
|
1468
|
-
Args:
|
1469
|
-
server: Server deployment to print
|
1470
|
-
"""
|
1471
|
-
server_name = server.config.name
|
1472
|
-
title_ = f"ZenML server '{server_name}'"
|
1473
|
-
|
1474
|
-
rich_table = table.Table(
|
1475
|
-
box=box.HEAVY_EDGE,
|
1476
|
-
title=title_,
|
1477
|
-
show_header=False,
|
1478
|
-
show_lines=True,
|
1479
|
-
)
|
1480
|
-
rich_table.add_column("", overflow="fold")
|
1481
|
-
rich_table.add_column("", overflow="fold")
|
1482
|
-
|
1483
|
-
server_info = []
|
1484
|
-
|
1485
|
-
if server.status:
|
1486
|
-
server_info.extend(
|
1487
|
-
[
|
1488
|
-
("URL", server.status.url or ""),
|
1489
|
-
("STATUS", get_service_state_emoji(server.status.status)),
|
1490
|
-
("STATUS_MESSAGE", server.status.status_message or ""),
|
1491
|
-
(
|
1492
|
-
"CONNECTED",
|
1493
|
-
":white_check_mark:" if server.status.connected else "",
|
1494
|
-
),
|
1495
|
-
]
|
1496
|
-
)
|
1497
|
-
|
1498
|
-
for item in server_info:
|
1499
|
-
rich_table.add_row(*item)
|
1500
|
-
|
1501
|
-
console.print(rich_table)
|
1502
|
-
|
1503
|
-
|
1504
1409
|
def describe_pydantic_object(schema_json: Dict[str, Any]) -> None:
|
1505
1410
|
"""Describes a Pydantic object based on the dict-representation of its schema.
|
1506
1411
|
|
@@ -1674,7 +1579,7 @@ def print_components_table(
|
|
1674
1579
|
"ACTIVE": ":point_right:" if is_active else "",
|
1675
1580
|
"NAME": component.name,
|
1676
1581
|
"COMPONENT ID": component.id,
|
1677
|
-
"FLAVOR": component.
|
1582
|
+
"FLAVOR": component.flavor_name,
|
1678
1583
|
"OWNER": f"{component.user.name if component.user else '-'}",
|
1679
1584
|
}
|
1680
1585
|
configurations.append(component_config)
|
@@ -2761,32 +2666,9 @@ def print_model_url(url: Optional[str]) -> None:
|
|
2761
2666
|
warning(
|
2762
2667
|
"You can display various ZenML entities including pipelines, "
|
2763
2668
|
"runs, stacks and much more on the ZenML Dashboard. "
|
2764
|
-
"You can try it locally, by running `zenml
|
2765
|
-
"by deploying ZenML on the infrastructure of your choice."
|
2766
|
-
)
|
2767
|
-
|
2768
|
-
|
2769
|
-
def warn_deprecated_example_subcommand() -> None:
|
2770
|
-
"""Warning for deprecating example subcommand."""
|
2771
|
-
warning(
|
2772
|
-
"The `example` CLI subcommand has been deprecated and will be removed "
|
2773
|
-
"in a future release."
|
2774
|
-
)
|
2775
|
-
|
2776
|
-
|
2777
|
-
def verify_mlstacks_prerequisites_installation() -> None:
|
2778
|
-
"""Checks if the `mlstacks` package is installed."""
|
2779
|
-
try:
|
2780
|
-
import mlstacks # noqa: F401
|
2781
|
-
import python_terraform # noqa: F401
|
2782
|
-
|
2783
|
-
subprocess.check_output(
|
2784
|
-
["terraform", "--version"], universal_newlines=True
|
2669
|
+
"You can try it locally, by running `zenml local --local`, or "
|
2670
|
+
"remotely, by deploying ZenML on the infrastructure of your choice."
|
2785
2671
|
)
|
2786
|
-
except ImportError:
|
2787
|
-
error(NOT_INSTALLED_MESSAGE)
|
2788
|
-
except subprocess.CalledProcessError:
|
2789
|
-
error(TERRAFORM_NOT_INSTALLED_MESSAGE)
|
2790
2672
|
|
2791
2673
|
|
2792
2674
|
def is_jupyter_installed() -> bool:
|
zenml/client.py
CHANGED
@@ -346,6 +346,8 @@ class Client(metaclass=ClientMetaClass):
|
|
346
346
|
"""
|
347
347
|
|
348
348
|
_active_user: Optional["UserResponse"] = None
|
349
|
+
_active_workspace: Optional["WorkspaceResponse"] = None
|
350
|
+
_active_stack: Optional["StackResponse"] = None
|
349
351
|
|
350
352
|
def __init__(
|
351
353
|
self,
|
@@ -1113,9 +1115,13 @@ class Client(metaclass=ClientMetaClass):
|
|
1113
1115
|
Raises:
|
1114
1116
|
RuntimeError: If the active workspace is not set.
|
1115
1117
|
"""
|
1116
|
-
if
|
1117
|
-
|
1118
|
-
|
1118
|
+
if workspace_id := os.environ.get(ENV_ZENML_ACTIVE_WORKSPACE_ID):
|
1119
|
+
if not self._active_workspace or self._active_workspace.id != UUID(
|
1120
|
+
workspace_id
|
1121
|
+
):
|
1122
|
+
self._active_workspace = self.get_workspace(workspace_id)
|
1123
|
+
|
1124
|
+
return self._active_workspace
|
1119
1125
|
|
1120
1126
|
from zenml.constants import DEFAULT_WORKSPACE_NAME
|
1121
1127
|
|
@@ -1465,8 +1471,13 @@ class Client(metaclass=ClientMetaClass):
|
|
1465
1471
|
Raises:
|
1466
1472
|
RuntimeError: If the active stack is not set.
|
1467
1473
|
"""
|
1468
|
-
if
|
1469
|
-
|
1474
|
+
if env_stack_id := os.environ.get(ENV_ZENML_ACTIVE_STACK_ID):
|
1475
|
+
if not self._active_stack or self._active_stack.id != UUID(
|
1476
|
+
env_stack_id
|
1477
|
+
):
|
1478
|
+
self._active_stack = self.get_stack(env_stack_id)
|
1479
|
+
|
1480
|
+
return self._active_stack
|
1470
1481
|
|
1471
1482
|
stack_id: Optional[UUID] = None
|
1472
1483
|
|
@@ -1534,6 +1545,8 @@ class Client(metaclass=ClientMetaClass):
|
|
1534
1545
|
remote_components: List[str] = []
|
1535
1546
|
assert stack.components is not None
|
1536
1547
|
for component_type, components in stack.components.items():
|
1548
|
+
component_flavor: Union[FlavorResponse, str]
|
1549
|
+
|
1537
1550
|
for component in components:
|
1538
1551
|
if isinstance(component, UUID):
|
1539
1552
|
component_response = self.get_stack_component(
|
@@ -1554,7 +1567,7 @@ class Client(metaclass=ClientMetaClass):
|
|
1554
1567
|
|
1555
1568
|
configuration = validate_stack_component_config(
|
1556
1569
|
configuration_dict=component_config,
|
1557
|
-
|
1570
|
+
flavor=component_flavor,
|
1558
1571
|
component_type=component_type,
|
1559
1572
|
# Always enforce validation of custom flavors
|
1560
1573
|
validate_custom_flavors=True,
|
@@ -1563,13 +1576,18 @@ class Client(metaclass=ClientMetaClass):
|
|
1563
1576
|
# `validate_custom_flavors=True` above
|
1564
1577
|
assert configuration is not None
|
1565
1578
|
warn_if_config_server_mismatch(configuration)
|
1579
|
+
flavor_name = (
|
1580
|
+
component_flavor.name
|
1581
|
+
if isinstance(component_flavor, FlavorResponse)
|
1582
|
+
else component_flavor
|
1583
|
+
)
|
1566
1584
|
if configuration.is_local:
|
1567
1585
|
local_components.append(
|
1568
|
-
f"{component_type.value}: {
|
1586
|
+
f"{component_type.value}: {flavor_name}"
|
1569
1587
|
)
|
1570
1588
|
elif configuration.is_remote:
|
1571
1589
|
remote_components.append(
|
1572
|
-
f"{component_type.value}: {
|
1590
|
+
f"{component_type.value}: {flavor_name}"
|
1573
1591
|
)
|
1574
1592
|
|
1575
1593
|
if local_components and remote_components:
|
@@ -1906,6 +1924,7 @@ class Client(metaclass=ClientMetaClass):
|
|
1906
1924
|
user_id: Optional[Union[str, UUID]] = None,
|
1907
1925
|
connector_id: Optional[Union[str, UUID]] = None,
|
1908
1926
|
stack_id: Optional[Union[str, UUID]] = None,
|
1927
|
+
user: Optional[Union[UUID, str]] = None,
|
1909
1928
|
hydrate: bool = False,
|
1910
1929
|
) -> Page[ComponentResponse]:
|
1911
1930
|
"""Lists all registered stack components.
|
@@ -1925,6 +1944,7 @@ class Client(metaclass=ClientMetaClass):
|
|
1925
1944
|
connector_id: The id of the connector to filter by.
|
1926
1945
|
stack_id: The id of the stack to filter by.
|
1927
1946
|
name: The name of the component to filter by.
|
1947
|
+
user: The ID of name of the user to filter by.
|
1928
1948
|
hydrate: Flag deciding whether to hydrate the output model(s)
|
1929
1949
|
by including metadata fields in the response.
|
1930
1950
|
|
@@ -1946,6 +1966,7 @@ class Client(metaclass=ClientMetaClass):
|
|
1946
1966
|
id=id,
|
1947
1967
|
created=created,
|
1948
1968
|
updated=updated,
|
1969
|
+
user=user,
|
1949
1970
|
)
|
1950
1971
|
component_filter_model.set_scope_workspace(self.active_workspace.id)
|
1951
1972
|
|
@@ -1982,7 +2003,7 @@ class Client(metaclass=ClientMetaClass):
|
|
1982
2003
|
|
1983
2004
|
validated_config = validate_stack_component_config(
|
1984
2005
|
configuration_dict=configuration,
|
1985
|
-
|
2006
|
+
flavor=flavor,
|
1986
2007
|
component_type=component_type,
|
1987
2008
|
# Always enforce validation of custom flavors
|
1988
2009
|
validate_custom_flavors=True,
|
@@ -2083,7 +2104,7 @@ class Client(metaclass=ClientMetaClass):
|
|
2083
2104
|
|
2084
2105
|
validated_config = validate_stack_component_config(
|
2085
2106
|
configuration_dict=existing_configuration,
|
2086
|
-
|
2107
|
+
flavor=component.flavor,
|
2087
2108
|
component_type=component.type,
|
2088
2109
|
# Always enforce validation of custom flavors
|
2089
2110
|
validate_custom_flavors=True,
|
@@ -2494,7 +2515,7 @@ class Client(metaclass=ClientMetaClass):
|
|
2494
2515
|
Returns:
|
2495
2516
|
Model of the pipeline run.
|
2496
2517
|
"""
|
2497
|
-
from zenml.
|
2518
|
+
from zenml.pipelines.run_utils import (
|
2498
2519
|
validate_run_config_is_runnable_from_server,
|
2499
2520
|
validate_stack_is_runnable_from_server,
|
2500
2521
|
wait_for_pipeline_run_to_finish,
|
@@ -3778,6 +3799,7 @@ class Client(metaclass=ClientMetaClass):
|
|
3778
3799
|
code_repository: Optional[Union[UUID, str]] = None,
|
3779
3800
|
model: Optional[Union[UUID, str]] = None,
|
3780
3801
|
stack: Optional[Union[UUID, str]] = None,
|
3802
|
+
stack_component: Optional[Union[UUID, str]] = None,
|
3781
3803
|
hydrate: bool = False,
|
3782
3804
|
) -> Page[PipelineRunResponse]:
|
3783
3805
|
"""List all pipeline runs.
|
@@ -3816,6 +3838,7 @@ class Client(metaclass=ClientMetaClass):
|
|
3816
3838
|
code_repository: Filter by code repository name/ID.
|
3817
3839
|
model: Filter by model name/ID.
|
3818
3840
|
stack: Filter by stack name/ID.
|
3841
|
+
stack_component: Filter by stack component name/ID.
|
3819
3842
|
hydrate: Flag deciding whether to hydrate the output model(s)
|
3820
3843
|
by including metadata fields in the response.
|
3821
3844
|
|
@@ -3854,6 +3877,7 @@ class Client(metaclass=ClientMetaClass):
|
|
3854
3877
|
code_repository=code_repository,
|
3855
3878
|
stack=stack,
|
3856
3879
|
model=model,
|
3880
|
+
stack_component=stack_component,
|
3857
3881
|
templatable=templatable,
|
3858
3882
|
)
|
3859
3883
|
runs_filter_model.set_scope_workspace(self.active_workspace.id)
|
@@ -3862,21 +3886,6 @@ class Client(metaclass=ClientMetaClass):
|
|
3862
3886
|
hydrate=hydrate,
|
3863
3887
|
)
|
3864
3888
|
|
3865
|
-
def list_runs(self, **kwargs: Any) -> Page[PipelineRunResponse]:
|
3866
|
-
"""(Deprecated) List all pipeline runs.
|
3867
|
-
|
3868
|
-
Args:
|
3869
|
-
**kwargs: The filter arguments passed to `list_pipeline_runs`.
|
3870
|
-
|
3871
|
-
Returns:
|
3872
|
-
A page with Pipeline Runs fitting the filter description
|
3873
|
-
"""
|
3874
|
-
logger.warning(
|
3875
|
-
"`Client.list_runs()` is deprecated and will be removed in a "
|
3876
|
-
"future release. Please use `Client.list_pipeline_runs()` instead."
|
3877
|
-
)
|
3878
|
-
return self.list_pipeline_runs(**kwargs)
|
3879
|
-
|
3880
3889
|
def delete_pipeline_run(
|
3881
3890
|
self,
|
3882
3891
|
name_id_or_prefix: Union[str, UUID],
|
@@ -3923,18 +3932,18 @@ class Client(metaclass=ClientMetaClass):
|
|
3923
3932
|
created: Optional[Union[datetime, str]] = None,
|
3924
3933
|
updated: Optional[Union[datetime, str]] = None,
|
3925
3934
|
name: Optional[str] = None,
|
3926
|
-
entrypoint_name: Optional[str] = None,
|
3927
|
-
code_hash: Optional[str] = None,
|
3928
3935
|
cache_key: Optional[str] = None,
|
3936
|
+
code_hash: Optional[str] = None,
|
3929
3937
|
status: Optional[str] = None,
|
3930
3938
|
start_time: Optional[Union[datetime, str]] = None,
|
3931
3939
|
end_time: Optional[Union[datetime, str]] = None,
|
3932
3940
|
pipeline_run_id: Optional[Union[str, UUID]] = None,
|
3941
|
+
deployment_id: Optional[Union[str, UUID]] = None,
|
3933
3942
|
original_step_run_id: Optional[Union[str, UUID]] = None,
|
3934
3943
|
workspace_id: Optional[Union[str, UUID]] = None,
|
3935
3944
|
user_id: Optional[Union[str, UUID]] = None,
|
3936
3945
|
model_version_id: Optional[Union[str, UUID]] = None,
|
3937
|
-
|
3946
|
+
model: Optional[Union[UUID, str]] = None,
|
3938
3947
|
hydrate: bool = False,
|
3939
3948
|
) -> Page[StepRunResponse]:
|
3940
3949
|
"""List all pipelines.
|
@@ -3951,15 +3960,15 @@ class Client(metaclass=ClientMetaClass):
|
|
3951
3960
|
end_time: Use to filter by the time when the step finished running
|
3952
3961
|
workspace_id: The id of the workspace to filter by.
|
3953
3962
|
user_id: The id of the user to filter by.
|
3954
|
-
pipeline_run_id: The
|
3955
|
-
|
3963
|
+
pipeline_run_id: The id of the pipeline run to filter by.
|
3964
|
+
deployment_id: The id of the deployment to filter by.
|
3965
|
+
original_step_run_id: The id of the original step run to filter by.
|
3956
3966
|
model_version_id: The ID of the model version to filter by.
|
3957
|
-
|
3958
|
-
|
3959
|
-
|
3960
|
-
|
3967
|
+
model: Filter by model name/ID.
|
3968
|
+
name: The name of the step run to filter by.
|
3969
|
+
cache_key: The cache key of the step run to filter by.
|
3970
|
+
code_hash: The code hash of the step run to filter by.
|
3961
3971
|
status: The name of the run to filter by.
|
3962
|
-
num_outputs: The number of outputs for the step run
|
3963
3972
|
hydrate: Flag deciding whether to hydrate the output model(s)
|
3964
3973
|
by including metadata fields in the response.
|
3965
3974
|
|
@@ -3972,10 +3981,10 @@ class Client(metaclass=ClientMetaClass):
|
|
3972
3981
|
size=size,
|
3973
3982
|
logical_operator=logical_operator,
|
3974
3983
|
id=id,
|
3975
|
-
entrypoint_name=entrypoint_name,
|
3976
|
-
code_hash=code_hash,
|
3977
3984
|
cache_key=cache_key,
|
3985
|
+
code_hash=code_hash,
|
3978
3986
|
pipeline_run_id=pipeline_run_id,
|
3987
|
+
deployment_id=deployment_id,
|
3979
3988
|
original_step_run_id=original_step_run_id,
|
3980
3989
|
status=status,
|
3981
3990
|
created=created,
|
@@ -3986,7 +3995,7 @@ class Client(metaclass=ClientMetaClass):
|
|
3986
3995
|
workspace_id=workspace_id,
|
3987
3996
|
user_id=user_id,
|
3988
3997
|
model_version_id=model_version_id,
|
3989
|
-
|
3998
|
+
model=model,
|
3990
3999
|
)
|
3991
4000
|
step_run_filter_model.set_scope_workspace(self.active_workspace.id)
|
3992
4001
|
return self.zen_store.list_run_steps(
|
@@ -7258,6 +7267,7 @@ class Client(metaclass=ClientMetaClass):
|
|
7258
7267
|
NotImplementedError: If the client is not connected to a ZenML
|
7259
7268
|
server.
|
7260
7269
|
"""
|
7270
|
+
from zenml.login.credentials_store import get_credentials_store
|
7261
7271
|
from zenml.zen_stores.rest_zen_store import RestZenStore
|
7262
7272
|
|
7263
7273
|
zen_store = self.zen_store
|
@@ -7266,8 +7276,15 @@ class Client(metaclass=ClientMetaClass):
|
|
7266
7276
|
"API key configuration is only supported if connected to a "
|
7267
7277
|
"ZenML server."
|
7268
7278
|
)
|
7279
|
+
|
7280
|
+
credentials_store = get_credentials_store()
|
7269
7281
|
assert isinstance(zen_store, RestZenStore)
|
7270
|
-
|
7282
|
+
|
7283
|
+
credentials_store.set_api_key(server_url=zen_store.url, api_key=key)
|
7284
|
+
|
7285
|
+
# Force a re-authentication to start using the new API key
|
7286
|
+
# right away.
|
7287
|
+
zen_store.authenticate(force=True)
|
7271
7288
|
|
7272
7289
|
def list_api_keys(
|
7273
7290
|
self,
|
zenml/client_lazy_loader.py
CHANGED
@@ -16,17 +16,21 @@
|
|
16
16
|
import contextlib
|
17
17
|
from typing import TYPE_CHECKING, Any, Callable, Dict, List, Optional, Type
|
18
18
|
|
19
|
-
from pydantic import BaseModel
|
19
|
+
from pydantic import BaseModel, Field
|
20
|
+
|
21
|
+
from zenml.logger import get_logger
|
20
22
|
|
21
23
|
if TYPE_CHECKING:
|
22
24
|
from zenml.client import Client
|
23
25
|
|
26
|
+
logger = get_logger(__name__)
|
27
|
+
|
24
28
|
|
25
29
|
class _CallStep(BaseModel):
|
26
30
|
attribute_name: Optional[str] = None
|
27
|
-
is_call:
|
28
|
-
call_args:
|
29
|
-
call_kwargs:
|
31
|
+
is_call: bool = False
|
32
|
+
call_args: List[Any] = Field(default_factory=list)
|
33
|
+
call_kwargs: Dict[str, Any] = Field(default_factory=dict)
|
30
34
|
selector: Optional[Any] = None
|
31
35
|
|
32
36
|
|
@@ -112,11 +116,20 @@ class ClientLazyLoader(BaseModel):
|
|
112
116
|
"Invalid call chain. Reach out to the ZenML team."
|
113
117
|
)
|
114
118
|
except Exception as e:
|
115
|
-
|
119
|
+
logger.debug(
|
116
120
|
f"Failed to evaluate lazy load chain `{self.method_name}` "
|
117
|
-
f"+ `{self.call_chain}`.
|
118
|
-
|
119
|
-
|
121
|
+
f"+ `{next_step}` + `{self.call_chain}`."
|
122
|
+
)
|
123
|
+
msg = f"`{self.method_name}("
|
124
|
+
if next_step:
|
125
|
+
for arg in next_step.call_args:
|
126
|
+
msg += f"'{arg}',"
|
127
|
+
for k, v in next_step.call_kwargs.items():
|
128
|
+
msg += f"{k}='{v}',"
|
129
|
+
msg = msg[:-1]
|
130
|
+
msg += f")` failed during lazy load with error: {e}"
|
131
|
+
logger.error(msg)
|
132
|
+
raise RuntimeError(msg)
|
120
133
|
return self_
|
121
134
|
|
122
135
|
self_ = getattr(Client(), self.method_name)
|
@@ -172,10 +185,10 @@ def evaluate_all_lazy_load_args_in_client_methods(
|
|
172
185
|
"""
|
173
186
|
import inspect
|
174
187
|
|
175
|
-
def _evaluate_args(
|
188
|
+
def _evaluate_args(
|
189
|
+
func: Callable[..., Any], is_instance_method: bool
|
190
|
+
) -> Any:
|
176
191
|
def _inner(*args: Any, **kwargs: Any) -> Any:
|
177
|
-
is_instance_method = "self" in inspect.getfullargspec(func).args
|
178
|
-
|
179
192
|
args_ = list(args)
|
180
193
|
if not is_instance_method:
|
181
194
|
from zenml.client import Client
|
@@ -201,7 +214,11 @@ def evaluate_all_lazy_load_args_in_client_methods(
|
|
201
214
|
|
202
215
|
def _decorate() -> Type["Client"]:
|
203
216
|
for name, fn in inspect.getmembers(cls, inspect.isfunction):
|
204
|
-
setattr(
|
217
|
+
setattr(
|
218
|
+
cls,
|
219
|
+
name,
|
220
|
+
_evaluate_args(fn, "self" in inspect.getfullargspec(fn).args),
|
221
|
+
)
|
205
222
|
return cls
|
206
223
|
|
207
224
|
return _decorate()
|
zenml/config/compiler.py
CHANGED
@@ -39,12 +39,12 @@ from zenml.config.step_configurations import (
|
|
39
39
|
from zenml.environment import get_run_environment_dict
|
40
40
|
from zenml.exceptions import StackValidationError
|
41
41
|
from zenml.models import PipelineDeploymentBase
|
42
|
-
from zenml.
|
42
|
+
from zenml.pipelines.run_utils import get_default_run_name
|
43
43
|
from zenml.utils import pydantic_utils, settings_utils
|
44
44
|
|
45
45
|
if TYPE_CHECKING:
|
46
46
|
from zenml.config.source import Source
|
47
|
-
from zenml.
|
47
|
+
from zenml.pipelines.pipeline_definition import Pipeline
|
48
48
|
from zenml.stack import Stack, StackComponent
|
49
49
|
from zenml.steps.step_invocation import StepInvocation
|
50
50
|
|
@@ -208,6 +208,7 @@ class Compiler:
|
|
208
208
|
enable_artifact_visualization=config.enable_artifact_visualization,
|
209
209
|
enable_step_logs=config.enable_step_logs,
|
210
210
|
settings=config.settings,
|
211
|
+
tags=config.tags,
|
211
212
|
extra=config.extra,
|
212
213
|
model=config.model,
|
213
214
|
parameters=config.parameters,
|
@@ -583,8 +584,6 @@ class Compiler:
|
|
583
584
|
Raises:
|
584
585
|
ValueError: If the pipeline has no steps.
|
585
586
|
"""
|
586
|
-
from zenml.pipelines import BasePipeline
|
587
|
-
|
588
587
|
if not step_specs:
|
589
588
|
raise ValueError(
|
590
589
|
f"Pipeline '{pipeline.name}' cannot be compiled because it has "
|
@@ -594,13 +593,10 @@ class Compiler:
|
|
594
593
|
"https://docs.zenml.io/user-guide/starter-guide."
|
595
594
|
)
|
596
595
|
|
597
|
-
additional_spec_args: Dict[str, Any] = {
|
598
|
-
|
599
|
-
|
600
|
-
|
601
|
-
else:
|
602
|
-
additional_spec_args["source"] = pipeline.resolve()
|
603
|
-
additional_spec_args["parameters"] = pipeline._parameters
|
596
|
+
additional_spec_args: Dict[str, Any] = {
|
597
|
+
"source": pipeline.resolve(),
|
598
|
+
"parameters": pipeline._parameters,
|
599
|
+
}
|
604
600
|
|
605
601
|
return PipelineSpec(steps=step_specs, **additional_spec_args)
|
606
602
|
|
zenml/config/global_config.py
CHANGED
@@ -689,6 +689,15 @@ class GlobalConfiguration(BaseModel, metaclass=GlobalConfigMetaClass):
|
|
689
689
|
self._configure_store(config, skip_default_registrations, **kwargs)
|
690
690
|
logger.info("Updated the global store configuration.")
|
691
691
|
|
692
|
+
@property
|
693
|
+
def is_initialized(self) -> bool:
|
694
|
+
"""Check if the global configuration is initialized.
|
695
|
+
|
696
|
+
Returns:
|
697
|
+
`True` if the global configuration is initialized.
|
698
|
+
"""
|
699
|
+
return self._zen_store is not None
|
700
|
+
|
692
701
|
@property
|
693
702
|
def zen_store(self) -> "BaseZenStore":
|
694
703
|
"""Initialize and/or return the global zen store.
|
@@ -13,7 +13,7 @@
|
|
13
13
|
# permissions and limitations under the License.
|
14
14
|
"""Pipeline configuration classes."""
|
15
15
|
|
16
|
-
from typing import TYPE_CHECKING, Any, Dict, Optional
|
16
|
+
from typing import TYPE_CHECKING, Any, Dict, List, Optional
|
17
17
|
|
18
18
|
from pydantic import SerializeAsAny, field_validator
|
19
19
|
|
@@ -39,6 +39,7 @@ class PipelineConfigurationUpdate(StrictBaseModel):
|
|
39
39
|
enable_artifact_visualization: Optional[bool] = None
|
40
40
|
enable_step_logs: Optional[bool] = None
|
41
41
|
settings: Dict[str, SerializeAsAny[BaseSettings]] = {}
|
42
|
+
tags: Optional[List[str]] = None
|
42
43
|
extra: Dict[str, Any] = {}
|
43
44
|
failure_hook_source: Optional[SourceWithValidator] = None
|
44
45
|
success_hook_source: Optional[SourceWithValidator] = None
|