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/stack_components.py
CHANGED
@@ -13,9 +13,6 @@
|
|
13
13
|
# permissions and limitations under the License.
|
14
14
|
"""Functionality to generate stack component CLI commands."""
|
15
15
|
|
16
|
-
import os
|
17
|
-
import random
|
18
|
-
import string
|
19
16
|
import time
|
20
17
|
from importlib import import_module
|
21
18
|
from typing import Any, Callable, List, Optional, Tuple, cast
|
@@ -24,8 +21,6 @@ from uuid import UUID
|
|
24
21
|
import click
|
25
22
|
from rich.markdown import Markdown
|
26
23
|
|
27
|
-
from zenml.analytics.enums import AnalyticsEvent
|
28
|
-
from zenml.analytics.utils import track_handler
|
29
24
|
from zenml.cli import utils as cli_utils
|
30
25
|
from zenml.cli.annotator import register_annotator_subcommands
|
31
26
|
from zenml.cli.cli import TagGroup, cli
|
@@ -41,7 +36,6 @@ from zenml.cli.utils import (
|
|
41
36
|
)
|
42
37
|
from zenml.client import Client
|
43
38
|
from zenml.console import console
|
44
|
-
from zenml.constants import ALPHA_MESSAGE, STACK_RECIPE_MODULAR_RECIPES
|
45
39
|
from zenml.enums import CliCategories, StackComponentType
|
46
40
|
from zenml.exceptions import AuthorizationException, IllegalOperationError
|
47
41
|
from zenml.io import fileio
|
@@ -51,14 +45,6 @@ from zenml.models import (
|
|
51
45
|
)
|
52
46
|
from zenml.utils import source_utils
|
53
47
|
from zenml.utils.dashboard_utils import get_component_url
|
54
|
-
from zenml.utils.io_utils import create_dir_recursive_if_not_exists
|
55
|
-
from zenml.utils.mlstacks_utils import (
|
56
|
-
convert_click_params_to_mlstacks_primitives,
|
57
|
-
convert_mlstacks_primitives_to_dicts,
|
58
|
-
import_new_mlstacks_component,
|
59
|
-
verify_spec_and_tf_files_exist,
|
60
|
-
)
|
61
|
-
from zenml.utils.yaml_utils import write_yaml
|
62
48
|
|
63
49
|
|
64
50
|
def generate_stack_component_get_command(
|
@@ -137,10 +123,9 @@ def generate_stack_component_describe_command(
|
|
137
123
|
active_component_id = active_components[0].id
|
138
124
|
|
139
125
|
if component_.connector:
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
).connector_requirements
|
126
|
+
connector_requirements = (
|
127
|
+
component_.flavor.connector_requirements
|
128
|
+
)
|
144
129
|
else:
|
145
130
|
connector_requirements = None
|
146
131
|
|
@@ -584,7 +569,7 @@ def generate_stack_component_copy_command(
|
|
584
569
|
|
585
570
|
copied_component = client.create_stack_component(
|
586
571
|
name=target_component,
|
587
|
-
flavor=component_to_copy.
|
572
|
+
flavor=component_to_copy.flavor_name,
|
588
573
|
component_type=component_to_copy.type,
|
589
574
|
configuration=component_to_copy.configuration,
|
590
575
|
labels=component_to_copy.labels,
|
@@ -595,162 +580,6 @@ def generate_stack_component_copy_command(
|
|
595
580
|
return copy_stack_component_command
|
596
581
|
|
597
582
|
|
598
|
-
def generate_stack_component_up_command(
|
599
|
-
component_type: StackComponentType,
|
600
|
-
) -> Callable[[str], None]:
|
601
|
-
"""Generates a `up` command for the specific stack component type.
|
602
|
-
|
603
|
-
Args:
|
604
|
-
component_type: Type of the component to generate the command for.
|
605
|
-
|
606
|
-
Returns:
|
607
|
-
A function that can be used as a `click` command.
|
608
|
-
"""
|
609
|
-
display_name = _component_display_name(component_type)
|
610
|
-
|
611
|
-
@click.argument("name_id_or_prefix", type=str, required=False)
|
612
|
-
def up_stack_component_command(name_id_or_prefix: str) -> None:
|
613
|
-
"""Deploys a stack component locally.
|
614
|
-
|
615
|
-
Args:
|
616
|
-
name_id_or_prefix: The name or_id of the stack component to deploy.
|
617
|
-
"""
|
618
|
-
client = Client()
|
619
|
-
|
620
|
-
with console.status(
|
621
|
-
f"Provisioning {display_name} '{name_id_or_prefix}' locally...\n"
|
622
|
-
):
|
623
|
-
try:
|
624
|
-
component_model = client.get_stack_component(
|
625
|
-
name_id_or_prefix=name_id_or_prefix,
|
626
|
-
component_type=component_type,
|
627
|
-
)
|
628
|
-
except KeyError as err:
|
629
|
-
cli_utils.error(str(err))
|
630
|
-
|
631
|
-
from zenml.stack import StackComponent
|
632
|
-
|
633
|
-
component = StackComponent.from_model(
|
634
|
-
component_model=component_model
|
635
|
-
)
|
636
|
-
|
637
|
-
if component.is_running:
|
638
|
-
cli_utils.declare(
|
639
|
-
f"Local deployment is already running for {display_name} "
|
640
|
-
f"'{component.name}'."
|
641
|
-
)
|
642
|
-
return
|
643
|
-
|
644
|
-
if not component.is_provisioned:
|
645
|
-
cli_utils.declare(
|
646
|
-
f"Provisioning local resources for {display_name} "
|
647
|
-
f"'{component.name}'."
|
648
|
-
)
|
649
|
-
try:
|
650
|
-
component.provision()
|
651
|
-
except NotImplementedError:
|
652
|
-
cli_utils.error(
|
653
|
-
f"Provisioning local resources not implemented for "
|
654
|
-
f"{display_name} '{component.name}'."
|
655
|
-
)
|
656
|
-
|
657
|
-
if not component.is_running:
|
658
|
-
cli_utils.declare(
|
659
|
-
f"Resuming local resources for {display_name} "
|
660
|
-
f"'{component.name}'."
|
661
|
-
)
|
662
|
-
component.resume()
|
663
|
-
|
664
|
-
return up_stack_component_command
|
665
|
-
|
666
|
-
|
667
|
-
def generate_stack_component_down_command(
|
668
|
-
component_type: StackComponentType,
|
669
|
-
) -> Callable[[str, bool], None]:
|
670
|
-
"""Generates a `down` command for the specific stack component type.
|
671
|
-
|
672
|
-
Args:
|
673
|
-
component_type: Type of the component to generate the command for.
|
674
|
-
|
675
|
-
Returns:
|
676
|
-
A function that can be used as a `click` command.
|
677
|
-
"""
|
678
|
-
display_name = _component_display_name(component_type)
|
679
|
-
|
680
|
-
@click.argument("name_id_or_prefix", type=str, required=False)
|
681
|
-
@click.option(
|
682
|
-
"--force",
|
683
|
-
"-f",
|
684
|
-
"force",
|
685
|
-
is_flag=True,
|
686
|
-
help="Deprovisions local resources instead of suspending them.",
|
687
|
-
)
|
688
|
-
def down_stack_component_command(
|
689
|
-
name_id_or_prefix: str,
|
690
|
-
force: bool = False,
|
691
|
-
) -> None:
|
692
|
-
"""Stops/Tears down the local deployment of a stack component.
|
693
|
-
|
694
|
-
Args:
|
695
|
-
name_id_or_prefix: The name or id of the component to
|
696
|
-
stop/deprovision.
|
697
|
-
force: Deprovision local resources instead of suspending them.
|
698
|
-
"""
|
699
|
-
client = Client()
|
700
|
-
|
701
|
-
with console.status(
|
702
|
-
f"De-provisioning {display_name} '{name_id_or_prefix}' locally...\n"
|
703
|
-
):
|
704
|
-
try:
|
705
|
-
component_model = client.get_stack_component(
|
706
|
-
name_id_or_prefix=name_id_or_prefix,
|
707
|
-
component_type=component_type,
|
708
|
-
)
|
709
|
-
except KeyError as err:
|
710
|
-
cli_utils.error(str(err))
|
711
|
-
|
712
|
-
from zenml.stack import StackComponent
|
713
|
-
|
714
|
-
component = StackComponent.from_model(
|
715
|
-
component_model=component_model
|
716
|
-
)
|
717
|
-
|
718
|
-
if not force:
|
719
|
-
if not component.is_suspended:
|
720
|
-
cli_utils.declare(
|
721
|
-
f"Suspending local resources for {display_name} "
|
722
|
-
f"'{component.name}'."
|
723
|
-
)
|
724
|
-
try:
|
725
|
-
component.suspend()
|
726
|
-
except NotImplementedError:
|
727
|
-
cli_utils.error(
|
728
|
-
f"Provisioning local resources not implemented for "
|
729
|
-
f"{display_name} '{component.name}'. If you want "
|
730
|
-
f"to deprovision all resources for this component, "
|
731
|
-
f"use the `--force/-f` flag."
|
732
|
-
)
|
733
|
-
else:
|
734
|
-
cli_utils.declare(
|
735
|
-
f"No running resources found for {display_name} "
|
736
|
-
f"'{component.name}'."
|
737
|
-
)
|
738
|
-
else:
|
739
|
-
if component.is_provisioned:
|
740
|
-
cli_utils.declare(
|
741
|
-
f"Deprovisioning resources for {display_name} "
|
742
|
-
f"'{component.name}'."
|
743
|
-
)
|
744
|
-
component.deprovision()
|
745
|
-
else:
|
746
|
-
cli_utils.declare(
|
747
|
-
f"No provisioned resources found for {display_name} "
|
748
|
-
f"'{component.name}'."
|
749
|
-
)
|
750
|
-
|
751
|
-
return down_stack_component_command
|
752
|
-
|
753
|
-
|
754
583
|
def generate_stack_component_logs_command(
|
755
584
|
component_type: StackComponentType,
|
756
585
|
) -> Callable[[str, bool], None]:
|
@@ -1063,382 +892,6 @@ def generate_stack_component_flavor_delete_command(
|
|
1063
892
|
return delete_stack_component_flavor_command
|
1064
893
|
|
1065
894
|
|
1066
|
-
def generate_stack_component_deploy_command(
|
1067
|
-
component_type: StackComponentType,
|
1068
|
-
) -> Callable[
|
1069
|
-
[str, str, str, str, bool, Optional[List[str]], List[str]], None
|
1070
|
-
]:
|
1071
|
-
"""Generates a `deploy` command for the stack component type.
|
1072
|
-
|
1073
|
-
Args:
|
1074
|
-
component_type: Type of the component to generate the command for.
|
1075
|
-
|
1076
|
-
Returns:
|
1077
|
-
A function that can be used as a `click` command.
|
1078
|
-
"""
|
1079
|
-
display_name = _component_display_name(component_type)
|
1080
|
-
|
1081
|
-
@click.argument(
|
1082
|
-
"name",
|
1083
|
-
type=str,
|
1084
|
-
)
|
1085
|
-
@click.option(
|
1086
|
-
"--flavor",
|
1087
|
-
"-f",
|
1088
|
-
"flavor",
|
1089
|
-
help=f"The flavor of the {display_name} to deploy.",
|
1090
|
-
required=True,
|
1091
|
-
type=str,
|
1092
|
-
)
|
1093
|
-
@click.option(
|
1094
|
-
"--provider",
|
1095
|
-
"-p",
|
1096
|
-
"provider",
|
1097
|
-
required=True,
|
1098
|
-
type=click.Choice(STACK_RECIPE_MODULAR_RECIPES),
|
1099
|
-
help="The cloud (or local provider) to use to deploy the stack component.",
|
1100
|
-
)
|
1101
|
-
@click.option(
|
1102
|
-
"--region",
|
1103
|
-
"-r",
|
1104
|
-
"region",
|
1105
|
-
required=True,
|
1106
|
-
type=str,
|
1107
|
-
help="The region to deploy the stack component to.",
|
1108
|
-
)
|
1109
|
-
@click.option(
|
1110
|
-
"--debug-mode",
|
1111
|
-
"-d",
|
1112
|
-
"debug_mode",
|
1113
|
-
is_flag=True,
|
1114
|
-
default=False,
|
1115
|
-
help="Whether to deploy the stack component in debug mode.",
|
1116
|
-
)
|
1117
|
-
@click.option(
|
1118
|
-
"--extra-config",
|
1119
|
-
"-x",
|
1120
|
-
"extra_config",
|
1121
|
-
multiple=True,
|
1122
|
-
help="Extra configurations as key=value pairs. This option can be "
|
1123
|
-
"used multiple times.",
|
1124
|
-
)
|
1125
|
-
@click.option(
|
1126
|
-
"--tags",
|
1127
|
-
"-t",
|
1128
|
-
"tags",
|
1129
|
-
required=False,
|
1130
|
-
type=click.STRING,
|
1131
|
-
help="Pass one or more tags.",
|
1132
|
-
multiple=True,
|
1133
|
-
)
|
1134
|
-
def deploy_stack_component_command(
|
1135
|
-
name: str,
|
1136
|
-
flavor: str,
|
1137
|
-
provider: str,
|
1138
|
-
region: str,
|
1139
|
-
debug_mode: bool = False,
|
1140
|
-
tags: Optional[List[str]] = None,
|
1141
|
-
extra_config: List[str] = [],
|
1142
|
-
) -> None:
|
1143
|
-
"""Deploy a stack component.
|
1144
|
-
|
1145
|
-
This function also registers the newly-deployed component.
|
1146
|
-
|
1147
|
-
Args:
|
1148
|
-
name: Name of the component to register.
|
1149
|
-
flavor: Flavor of the component to register.
|
1150
|
-
provider: Cloud provider (or local) to use to deploy the stack
|
1151
|
-
component.
|
1152
|
-
region: Region to deploy the stack component to.
|
1153
|
-
debug_mode: Whether to deploy the stack component in debug mode.
|
1154
|
-
tags: Tags to be added to the component.
|
1155
|
-
extra_config: Extra configuration values to be added to the
|
1156
|
-
"""
|
1157
|
-
with track_handler(
|
1158
|
-
event=AnalyticsEvent.DEPLOY_STACK_COMPONENT,
|
1159
|
-
) as analytics_handler:
|
1160
|
-
client = Client()
|
1161
|
-
try:
|
1162
|
-
# raise error if user already has a component with the same name
|
1163
|
-
client.get_stack_component(
|
1164
|
-
component_type=component_type,
|
1165
|
-
name_id_or_prefix=name,
|
1166
|
-
allow_name_prefix_match=False,
|
1167
|
-
)
|
1168
|
-
cli_utils.error(
|
1169
|
-
f"A stack component of type '{component_type.value}' with "
|
1170
|
-
f"the name '{name}' already exists. Please try again with "
|
1171
|
-
f"a different component name."
|
1172
|
-
)
|
1173
|
-
except KeyError:
|
1174
|
-
pass
|
1175
|
-
from mlstacks.constants import ALLOWED_FLAVORS
|
1176
|
-
|
1177
|
-
if flavor not in ALLOWED_FLAVORS[component_type.value]:
|
1178
|
-
cli_utils.error(
|
1179
|
-
f"Flavor '{flavor}' is not supported for "
|
1180
|
-
f"{_component_display_name(component_type, True)}. "
|
1181
|
-
"Allowed flavors are: "
|
1182
|
-
f"{', '.join(ALLOWED_FLAVORS[component_type.value])}."
|
1183
|
-
)
|
1184
|
-
|
1185
|
-
# for cases like artifact store and container
|
1186
|
-
# registry the flavor is the same as the cloud
|
1187
|
-
if flavor in {"s3", "sagemaker", "aws"} and provider != "aws":
|
1188
|
-
cli_utils.error(
|
1189
|
-
f"Flavor '{flavor}' is not supported for "
|
1190
|
-
f"{_component_display_name(component_type, True)} on "
|
1191
|
-
f"{provider}."
|
1192
|
-
)
|
1193
|
-
elif flavor in {"vertex", "gcp"} and provider != "gcp":
|
1194
|
-
cli_utils.error(
|
1195
|
-
f"Flavor '{flavor}' is not supported for "
|
1196
|
-
f"{_component_display_name(component_type, True)} on "
|
1197
|
-
f"{provider}."
|
1198
|
-
)
|
1199
|
-
|
1200
|
-
# if the cloud is gcp, project_id is required
|
1201
|
-
extra_config_obj = (
|
1202
|
-
dict(config.split("=") for config in extra_config)
|
1203
|
-
if extra_config
|
1204
|
-
else {}
|
1205
|
-
)
|
1206
|
-
if provider == "gcp" and "project_id" not in extra_config_obj:
|
1207
|
-
cli_utils.error(
|
1208
|
-
"Missing Project ID. You must pass your GCP project ID to "
|
1209
|
-
"the deploy command as part of the `--extra_config` option."
|
1210
|
-
)
|
1211
|
-
cli_utils.declare("Checking prerequisites are installed...")
|
1212
|
-
cli_utils.verify_mlstacks_prerequisites_installation()
|
1213
|
-
from mlstacks.utils import zenml_utils
|
1214
|
-
|
1215
|
-
cli_utils.warning(ALPHA_MESSAGE)
|
1216
|
-
cli_params = {
|
1217
|
-
"provider": provider,
|
1218
|
-
"region": region,
|
1219
|
-
"stack_name": "".join(
|
1220
|
-
random.choice(string.ascii_letters + string.digits)
|
1221
|
-
for _ in range(5)
|
1222
|
-
),
|
1223
|
-
"tags": tags,
|
1224
|
-
"extra_config": list(extra_config),
|
1225
|
-
"file": None,
|
1226
|
-
"debug_mode": debug_mode,
|
1227
|
-
component_type.value: flavor,
|
1228
|
-
}
|
1229
|
-
if component_type == StackComponentType.ARTIFACT_STORE:
|
1230
|
-
cli_params["extra_config"].append(f"bucket_name={name}") # type: ignore[union-attr]
|
1231
|
-
stack, components = convert_click_params_to_mlstacks_primitives(
|
1232
|
-
cli_params, zenml_component_deploy=True
|
1233
|
-
)
|
1234
|
-
|
1235
|
-
analytics_handler.metadata = {
|
1236
|
-
"flavor": flavor,
|
1237
|
-
"provider": provider,
|
1238
|
-
"debug_mode": debug_mode,
|
1239
|
-
"component_type": component_type.value,
|
1240
|
-
}
|
1241
|
-
|
1242
|
-
cli_utils.declare("Checking flavor compatibility...")
|
1243
|
-
if not zenml_utils.has_valid_flavor_combinations(
|
1244
|
-
stack, components
|
1245
|
-
):
|
1246
|
-
cli_utils.error(
|
1247
|
-
"The specified stack and component flavors are not "
|
1248
|
-
"compatible with the provider or with one another. "
|
1249
|
-
"Please try again."
|
1250
|
-
)
|
1251
|
-
|
1252
|
-
stack_dict, component_dicts = convert_mlstacks_primitives_to_dicts(
|
1253
|
-
stack, components
|
1254
|
-
)
|
1255
|
-
# write the stack and component yaml files
|
1256
|
-
from mlstacks.constants import MLSTACKS_PACKAGE_NAME
|
1257
|
-
|
1258
|
-
spec_dir = os.path.join(
|
1259
|
-
click.get_app_dir(MLSTACKS_PACKAGE_NAME),
|
1260
|
-
"stack_specs",
|
1261
|
-
stack.name,
|
1262
|
-
)
|
1263
|
-
cli_utils.declare(f"Writing spec files to {spec_dir}...")
|
1264
|
-
create_dir_recursive_if_not_exists(spec_dir)
|
1265
|
-
|
1266
|
-
stack_file_path = os.path.join(
|
1267
|
-
spec_dir, f"stack-{stack.name}.yaml"
|
1268
|
-
)
|
1269
|
-
write_yaml(file_path=stack_file_path, contents=stack_dict)
|
1270
|
-
for component in component_dicts:
|
1271
|
-
write_yaml(
|
1272
|
-
file_path=os.path.join(
|
1273
|
-
spec_dir, f"{component['name']}.yaml"
|
1274
|
-
),
|
1275
|
-
contents=component,
|
1276
|
-
)
|
1277
|
-
|
1278
|
-
from mlstacks.utils import terraform_utils
|
1279
|
-
|
1280
|
-
cli_utils.declare("Deploying stack using Terraform...")
|
1281
|
-
terraform_utils.deploy_stack(
|
1282
|
-
stack_file_path, debug_mode=debug_mode
|
1283
|
-
)
|
1284
|
-
cli_utils.declare("Stack successfully deployed.")
|
1285
|
-
|
1286
|
-
stack_name: str = cli_params["stack_name"] # type: ignore[assignment]
|
1287
|
-
cli_utils.declare(
|
1288
|
-
f"Importing {component_type.value} component '{name}' into ZenML..."
|
1289
|
-
)
|
1290
|
-
import_new_mlstacks_component(
|
1291
|
-
stack_name=stack_name,
|
1292
|
-
component_name=name,
|
1293
|
-
provider=stack.provider,
|
1294
|
-
stack_spec_dir=spec_dir,
|
1295
|
-
)
|
1296
|
-
cli_utils.declare("Component successfully imported into ZenML.")
|
1297
|
-
|
1298
|
-
return deploy_stack_component_command
|
1299
|
-
|
1300
|
-
|
1301
|
-
def generate_stack_component_destroy_command(
|
1302
|
-
component_type: StackComponentType,
|
1303
|
-
) -> Callable[[str, str, bool], None]:
|
1304
|
-
"""Generates a `destroy` command for the stack component type.
|
1305
|
-
|
1306
|
-
Args:
|
1307
|
-
component_type: Type of the component to generate the command for.
|
1308
|
-
|
1309
|
-
Returns:
|
1310
|
-
A function that can be used as a `click` command.
|
1311
|
-
"""
|
1312
|
-
_component_display_name(component_type)
|
1313
|
-
|
1314
|
-
@click.argument(
|
1315
|
-
"name_id_or_prefix",
|
1316
|
-
type=str,
|
1317
|
-
required=True,
|
1318
|
-
)
|
1319
|
-
@click.option(
|
1320
|
-
"--provider",
|
1321
|
-
"-p",
|
1322
|
-
"provider",
|
1323
|
-
type=click.Choice(["aws", "k3d", "gcp"]),
|
1324
|
-
required=True,
|
1325
|
-
)
|
1326
|
-
@click.option(
|
1327
|
-
"--debug-mode",
|
1328
|
-
"-d",
|
1329
|
-
"debug_mode",
|
1330
|
-
is_flag=True,
|
1331
|
-
default=False,
|
1332
|
-
help="Whether to destroy the stack component in debug mode.",
|
1333
|
-
)
|
1334
|
-
def destroy_stack_component_command(
|
1335
|
-
name_id_or_prefix: str,
|
1336
|
-
provider: str,
|
1337
|
-
debug_mode: bool = False,
|
1338
|
-
) -> None:
|
1339
|
-
"""Destroy a stack component.
|
1340
|
-
|
1341
|
-
Args:
|
1342
|
-
name_id_or_prefix: Name, ID or prefix of the component to destroy.
|
1343
|
-
provider: Cloud provider (or local) where the stack was deployed.
|
1344
|
-
debug_mode: Whether to destroy the stack component in debug mode.
|
1345
|
-
"""
|
1346
|
-
with track_handler(
|
1347
|
-
event=AnalyticsEvent.DESTROY_STACK_COMPONENT,
|
1348
|
-
) as analytics_handler:
|
1349
|
-
analytics_handler.metadata = {
|
1350
|
-
"provider": provider,
|
1351
|
-
"component_type": component_type.value,
|
1352
|
-
"debug_mode": debug_mode,
|
1353
|
-
}
|
1354
|
-
client = Client()
|
1355
|
-
|
1356
|
-
try:
|
1357
|
-
component = client.get_stack_component(
|
1358
|
-
name_id_or_prefix=name_id_or_prefix,
|
1359
|
-
component_type=component_type,
|
1360
|
-
allow_name_prefix_match=False,
|
1361
|
-
)
|
1362
|
-
except KeyError:
|
1363
|
-
cli_utils.error(
|
1364
|
-
"Could not find a stack component with name or id "
|
1365
|
-
f"'{name_id_or_prefix}'.",
|
1366
|
-
)
|
1367
|
-
|
1368
|
-
# Check if the component was created by a recipe
|
1369
|
-
if not component.component_spec_path:
|
1370
|
-
cli_utils.error(
|
1371
|
-
f"Cannot destroy stack component {component.name}. It "
|
1372
|
-
"was not created by a recipe.",
|
1373
|
-
)
|
1374
|
-
|
1375
|
-
cli_utils.verify_mlstacks_prerequisites_installation()
|
1376
|
-
from mlstacks.constants import MLSTACKS_PACKAGE_NAME
|
1377
|
-
|
1378
|
-
# spec_files_dir: str = component.component_spec_path
|
1379
|
-
component_spec_path: str = component.component_spec_path
|
1380
|
-
stack_name: str = os.path.basename(
|
1381
|
-
os.path.dirname(component_spec_path)
|
1382
|
-
)
|
1383
|
-
stack_spec_path: str = os.path.join(
|
1384
|
-
os.path.dirname(component_spec_path),
|
1385
|
-
f"stack-{stack_name}.yaml",
|
1386
|
-
)
|
1387
|
-
tf_definitions_path: str = os.path.join(
|
1388
|
-
click.get_app_dir(MLSTACKS_PACKAGE_NAME),
|
1389
|
-
"terraform",
|
1390
|
-
f"{provider}-modular",
|
1391
|
-
)
|
1392
|
-
|
1393
|
-
cli_utils.declare(
|
1394
|
-
"Checking Terraform definitions and spec files are present..."
|
1395
|
-
)
|
1396
|
-
verify_spec_and_tf_files_exist(
|
1397
|
-
stack_spec_path, tf_definitions_path
|
1398
|
-
)
|
1399
|
-
|
1400
|
-
from mlstacks.utils import terraform_utils
|
1401
|
-
|
1402
|
-
cli_utils.declare(
|
1403
|
-
f"Destroying component '{component.name}' using Terraform..."
|
1404
|
-
)
|
1405
|
-
terraform_utils.destroy_stack(
|
1406
|
-
stack_path=stack_spec_path, debug_mode=debug_mode
|
1407
|
-
)
|
1408
|
-
cli_utils.declare(
|
1409
|
-
f"Component '{component.name}' successfully destroyed."
|
1410
|
-
)
|
1411
|
-
|
1412
|
-
if cli_utils.confirmation(
|
1413
|
-
f"Would you like to delete the associated ZenML "
|
1414
|
-
f"component '{component.name}'?\nThis will delete the stack "
|
1415
|
-
"component registered with ZenML."
|
1416
|
-
):
|
1417
|
-
client.delete_stack_component(
|
1418
|
-
name_id_or_prefix=component.id,
|
1419
|
-
component_type=component.type,
|
1420
|
-
)
|
1421
|
-
cli_utils.declare(
|
1422
|
-
f"Component '{component.name}' successfully deleted from ZenML."
|
1423
|
-
)
|
1424
|
-
|
1425
|
-
spec_dir = os.path.dirname(stack_spec_path)
|
1426
|
-
if cli_utils.confirmation(
|
1427
|
-
f"Would you like to delete the `mlstacks` spec directory for "
|
1428
|
-
f"this component, located at {spec_dir}?"
|
1429
|
-
):
|
1430
|
-
fileio.rmtree(spec_dir)
|
1431
|
-
cli_utils.declare(
|
1432
|
-
f"Spec directory for component '{component.name}' successfully "
|
1433
|
-
"deleted."
|
1434
|
-
)
|
1435
|
-
cli_utils.declare(
|
1436
|
-
f"Component '{component.name}' successfully destroyed."
|
1437
|
-
)
|
1438
|
-
|
1439
|
-
return destroy_stack_component_command
|
1440
|
-
|
1441
|
-
|
1442
895
|
def prompt_select_resource_id(
|
1443
896
|
resource_ids: List[str],
|
1444
897
|
resource_name: str,
|
@@ -1788,22 +1241,6 @@ def register_single_stack_component_cli_commands(
|
|
1788
1241
|
"copy", help=f"Copy a registered {singular_display_name}."
|
1789
1242
|
)(copy_command)
|
1790
1243
|
|
1791
|
-
# zenml stack-component up
|
1792
|
-
up_command = generate_stack_component_up_command(component_type)
|
1793
|
-
command_group.command(
|
1794
|
-
"up",
|
1795
|
-
help=f"Provisions or resumes local resources for the "
|
1796
|
-
f"{singular_display_name} if possible.",
|
1797
|
-
)(up_command)
|
1798
|
-
|
1799
|
-
# zenml stack-component down
|
1800
|
-
down_command = generate_stack_component_down_command(component_type)
|
1801
|
-
command_group.command(
|
1802
|
-
"down",
|
1803
|
-
help=f"Suspends resources of the local {singular_display_name} "
|
1804
|
-
f"deployment.",
|
1805
|
-
)(down_command)
|
1806
|
-
|
1807
1244
|
# zenml stack-component logs
|
1808
1245
|
logs_command = generate_stack_component_logs_command(component_type)
|
1809
1246
|
command_group.command(
|
@@ -1832,22 +1269,6 @@ def register_single_stack_component_cli_commands(
|
|
1832
1269
|
"explain", help=f"Explaining the {plural_display_name}."
|
1833
1270
|
)(explain_command)
|
1834
1271
|
|
1835
|
-
# zenml stack-component deploy
|
1836
|
-
deploy_command = generate_stack_component_deploy_command(component_type)
|
1837
|
-
context_settings = {"ignore_unknown_options": True}
|
1838
|
-
command_group.command(
|
1839
|
-
"deploy",
|
1840
|
-
context_settings=context_settings,
|
1841
|
-
help=f"Deploy a new {singular_display_name}.",
|
1842
|
-
)(deploy_command)
|
1843
|
-
|
1844
|
-
# zenml stack-component destroy
|
1845
|
-
destroy_command = generate_stack_component_destroy_command(component_type)
|
1846
|
-
command_group.command(
|
1847
|
-
"destroy",
|
1848
|
-
help=f"Destroy an existing {singular_display_name}.",
|
1849
|
-
)(destroy_command)
|
1850
|
-
|
1851
1272
|
# zenml stack-component flavor
|
1852
1273
|
@command_group.group(
|
1853
1274
|
"flavor", help=f"Commands to interact with {plural_display_name}."
|
@@ -1944,17 +1365,7 @@ def connect_stack_component_with_service_connector(
|
|
1944
1365
|
except KeyError as err:
|
1945
1366
|
cli_utils.error(str(err))
|
1946
1367
|
|
1947
|
-
|
1948
|
-
flavor_model = client.get_flavor_by_name_and_type(
|
1949
|
-
name=component_model.flavor, component_type=component_type
|
1950
|
-
)
|
1951
|
-
except KeyError as err:
|
1952
|
-
cli_utils.error(
|
1953
|
-
f"Could not find flavor '{component_model.flavor}' for "
|
1954
|
-
f"{display_name} '{name_id_or_prefix}': {str(err)}"
|
1955
|
-
)
|
1956
|
-
|
1957
|
-
requirements = flavor_model.connector_requirements
|
1368
|
+
requirements = component_model.flavor.connector_requirements
|
1958
1369
|
|
1959
1370
|
if not requirements:
|
1960
1371
|
cli_utils.error(
|
zenml/cli/user_management.py
CHANGED
@@ -367,18 +367,6 @@ def change_user_password(
|
|
367
367
|
f"Successfully updated password for active user '{active_user.name}'."
|
368
368
|
)
|
369
369
|
|
370
|
-
store = GlobalConfiguration().store_configuration
|
371
|
-
if store.type == StoreType.REST:
|
372
|
-
from zenml.zen_stores.rest_zen_store import RestZenStoreConfiguration
|
373
|
-
|
374
|
-
assert isinstance(store, RestZenStoreConfiguration)
|
375
|
-
|
376
|
-
if store.password is not None:
|
377
|
-
cli_utils.declare(
|
378
|
-
"You may need to log in again with your new password by "
|
379
|
-
"running `zenml connect`."
|
380
|
-
)
|
381
|
-
|
382
370
|
|
383
371
|
@user.command(
|
384
372
|
"deactivate",
|