zenml-nightly 0.66.0.dev20240930__py3-none-any.whl → 0.68.0.dev20241026__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 +2 -2
- RELEASE_NOTES.md +227 -0
- zenml/VERSION +1 -1
- zenml/__init__.py +4 -9
- zenml/analytics/enums.py +0 -13
- 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 +320 -85
- zenml/cli/__init__.py +1 -39
- zenml/cli/base.py +5 -5
- zenml/cli/integration.py +0 -9
- zenml/cli/pipeline.py +1 -1
- zenml/cli/served_model.py +8 -1
- zenml/cli/server.py +8 -232
- zenml/cli/stack.py +1 -567
- zenml/cli/stack_components.py +0 -578
- zenml/cli/utils.py +0 -65
- zenml/client.py +11 -26
- zenml/client_lazy_loader.py +29 -12
- zenml/config/compiler.py +6 -11
- zenml/config/server_config.py +7 -5
- zenml/config/step_configurations.py +2 -0
- zenml/constants.py +3 -33
- zenml/enums.py +0 -3
- zenml/environment.py +1 -315
- zenml/exceptions.py +1 -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/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/materializers/__init__.py +2 -0
- zenml/materializers/uuid_materializer.py +79 -0
- zenml/metadata/lazy_load.py +10 -7
- zenml/model/lazy_load.py +85 -4
- zenml/model/model.py +61 -45
- zenml/model/utils.py +47 -118
- zenml/models/__init__.py +3 -0
- zenml/models/v2/core/artifact_version.py +4 -15
- zenml/models/v2/core/model.py +1 -0
- zenml/models/v2/core/model_version.py +1 -1
- zenml/models/v2/core/pipeline_run.py +1 -2
- zenml/models/v2/core/run_metadata.py +2 -2
- zenml/models/v2/core/step_run.py +15 -12
- zenml/models/v2/misc/server_models.py +0 -4
- zenml/orchestrators/base_orchestrator.py +33 -0
- zenml/orchestrators/input_utils.py +52 -36
- zenml/orchestrators/step_launcher.py +49 -171
- zenml/orchestrators/step_run_utils.py +566 -0
- zenml/orchestrators/step_runner.py +102 -151
- zenml/orchestrators/utils.py +1 -158
- zenml/pipelines/__init__.py +3 -16
- zenml/{new/pipelines → pipelines}/pipeline_context.py +3 -18
- zenml/pipelines/pipeline_decorator.py +29 -60
- zenml/{new/pipelines/pipeline.py → pipelines/pipeline_definition.py} +4 -47
- zenml/stack/stack.py +1 -102
- zenml/stack/stack_component.py +0 -71
- 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 +17 -265
- zenml/steps/entrypoint_function_utils.py +2 -80
- zenml/{new/steps → steps}/step_context.py +12 -63
- zenml/steps/step_decorator.py +42 -89
- zenml/steps/step_invocation.py +2 -55
- zenml/steps/utils.py +3 -23
- zenml/utils/dashboard_utils.py +16 -51
- zenml/utils/typing_utils.py +8 -28
- 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 +0 -9
- zenml/zen_server/deploy/docker/docker_zen_server.py +0 -6
- zenml/zen_server/deploy/helm/Chart.yaml +1 -1
- zenml/zen_server/deploy/helm/README.md +2 -2
- zenml/zen_server/deploy/local/local_zen_server.py +0 -6
- zenml/zen_server/feature_gate/zenml_cloud_feature_gate.py +1 -1
- zenml/zen_server/routers/artifact_version_endpoints.py +1 -1
- zenml/zen_server/routers/runs_endpoints.py +0 -28
- zenml/zen_server/template_execution/runner_entrypoint_configuration.py +1 -1
- zenml/zen_server/template_execution/utils.py +2 -2
- zenml/zen_server/utils.py +10 -40
- zenml/zen_server/zen_server_api.py +107 -17
- zenml/zen_stores/base_zen_store.py +0 -2
- 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/1d8f30c54477_migrate_to_new_.py +124 -0
- zenml/zen_stores/schemas/pipeline_run_schemas.py +12 -4
- zenml/zen_stores/schemas/step_run_schemas.py +2 -2
- zenml/zen_stores/sql_zen_store.py +29 -5
- {zenml_nightly-0.66.0.dev20240930.dist-info → zenml_nightly-0.68.0.dev20241026.dist-info}/METADATA +4 -8
- {zenml_nightly-0.66.0.dev20240930.dist-info → zenml_nightly-0.68.0.dev20241026.dist-info}/RECORD +273 -452
- {zenml_nightly-0.66.0.dev20240930.dist-info → zenml_nightly-0.68.0.dev20241026.dist-info}/WHEEL +1 -1
- zenml/cli/stack_recipes.py +0 -469
- zenml/lineage_graph/__init__.py +0 -34
- zenml/lineage_graph/edge.py +0 -24
- 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/base_node.py +0 -31
- zenml/lineage_graph/node/step_node.py +0 -41
- zenml/model/model_version.py +0 -38
- zenml/new/__init__.py +0 -13
- zenml/new/pipelines/__init__.py +0 -13
- zenml/new/pipelines/code_archive.py +0 -157
- zenml/new/pipelines/pipeline_decorator.py +0 -118
- zenml/new/steps/__init__.py +0 -13
- 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/__init__.py +0 -14
- 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/pipelines → pipelines}/run_utils.py +0 -0
- /zenml/{new/steps → steps}/decorated_step.py +0 -0
- {zenml_nightly-0.66.0.dev20240930.dist-info → zenml_nightly-0.68.0.dev20241026.dist-info}/LICENSE +0 -0
- {zenml_nightly-0.66.0.dev20240930.dist-info → zenml_nightly-0.68.0.dev20241026.dist-info}/entry_points.txt +0 -0
zenml/utils/mlstacks_utils.py
DELETED
@@ -1,635 +0,0 @@
|
|
1
|
-
# Copyright (c) ZenML GmbH 2023. All Rights Reserved.
|
2
|
-
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
# you may not use this file except in compliance with the License.
|
5
|
-
# You may obtain a copy of the License at:
|
6
|
-
|
7
|
-
# https://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
|
12
|
-
# or implied. See the License for the specific language governing
|
13
|
-
# permissions and limitations under the License.
|
14
|
-
"""Functionality to handle interaction with the mlstacks package."""
|
15
|
-
|
16
|
-
import json
|
17
|
-
import os
|
18
|
-
from pathlib import Path
|
19
|
-
from typing import (
|
20
|
-
TYPE_CHECKING,
|
21
|
-
Any,
|
22
|
-
Dict,
|
23
|
-
List,
|
24
|
-
Optional,
|
25
|
-
Tuple,
|
26
|
-
Union,
|
27
|
-
)
|
28
|
-
from uuid import UUID
|
29
|
-
|
30
|
-
import click
|
31
|
-
|
32
|
-
from zenml.client import Client
|
33
|
-
from zenml.constants import (
|
34
|
-
MLSTACKS_SUPPORTED_STACK_COMPONENTS,
|
35
|
-
)
|
36
|
-
from zenml.enums import StackComponentType
|
37
|
-
from zenml.utils.dashboard_utils import get_component_url, get_stack_url
|
38
|
-
from zenml.utils.yaml_utils import read_yaml
|
39
|
-
|
40
|
-
if TYPE_CHECKING:
|
41
|
-
from mlstacks.models import Component, Stack
|
42
|
-
|
43
|
-
|
44
|
-
def stack_exists(stack_name: str) -> bool:
|
45
|
-
"""Checks whether a stack with that name exists or not.
|
46
|
-
|
47
|
-
Args:
|
48
|
-
stack_name: The name of the stack to check for.
|
49
|
-
|
50
|
-
Returns:
|
51
|
-
A boolean indicating whether the stack exists or not.
|
52
|
-
"""
|
53
|
-
try:
|
54
|
-
Client().get_stack(
|
55
|
-
name_id_or_prefix=stack_name, allow_name_prefix_match=False
|
56
|
-
)
|
57
|
-
except KeyError:
|
58
|
-
return False
|
59
|
-
return True
|
60
|
-
|
61
|
-
|
62
|
-
def get_stack_spec_file_path(stack_name: str) -> str:
|
63
|
-
"""Gets the path to the stack spec file for the given stack name.
|
64
|
-
|
65
|
-
Args:
|
66
|
-
stack_name: The name of the stack spec to get the path for.
|
67
|
-
|
68
|
-
Returns:
|
69
|
-
The path to the stack spec file for the given stack name.
|
70
|
-
|
71
|
-
Raises:
|
72
|
-
KeyError: If the stack does not exist.
|
73
|
-
"""
|
74
|
-
try:
|
75
|
-
stack = Client().get_stack(
|
76
|
-
name_id_or_prefix=stack_name, allow_name_prefix_match=False
|
77
|
-
)
|
78
|
-
except KeyError as e:
|
79
|
-
raise e
|
80
|
-
return stack.stack_spec_path or ""
|
81
|
-
|
82
|
-
|
83
|
-
def stack_spec_exists(stack_name: str) -> bool:
|
84
|
-
"""Checks whether a stack spec with that name exists or not.
|
85
|
-
|
86
|
-
Args:
|
87
|
-
stack_name: The name of the stack spec to check for.
|
88
|
-
|
89
|
-
Returns:
|
90
|
-
A boolean indicating whether the stack spec exists or not.
|
91
|
-
"""
|
92
|
-
from zenml.cli.utils import verify_mlstacks_prerequisites_installation
|
93
|
-
|
94
|
-
verify_mlstacks_prerequisites_installation()
|
95
|
-
from mlstacks.constants import MLSTACKS_PACKAGE_NAME
|
96
|
-
|
97
|
-
spec_dir = os.path.join(
|
98
|
-
click.get_app_dir(MLSTACKS_PACKAGE_NAME), "stack_specs", stack_name
|
99
|
-
)
|
100
|
-
return Path(spec_dir).exists()
|
101
|
-
|
102
|
-
|
103
|
-
def _get_component_flavor(
|
104
|
-
key: str, value: Union[bool, str], provider: str
|
105
|
-
) -> str:
|
106
|
-
"""Constructs the component flavor from Click CLI params.
|
107
|
-
|
108
|
-
Args:
|
109
|
-
key: The component key.
|
110
|
-
value: The component value.
|
111
|
-
provider: The provider name.
|
112
|
-
|
113
|
-
Returns:
|
114
|
-
The component flavor.
|
115
|
-
"""
|
116
|
-
if key in {"artifact_store"} and bool(value):
|
117
|
-
if provider == "aws":
|
118
|
-
flavor = "s3"
|
119
|
-
elif provider == "azure":
|
120
|
-
flavor = "azure"
|
121
|
-
elif provider == "gcp":
|
122
|
-
flavor = "gcp"
|
123
|
-
elif provider == "k3d":
|
124
|
-
flavor = "minio"
|
125
|
-
elif key in {"container_registry"} and bool(value):
|
126
|
-
if provider == "aws":
|
127
|
-
flavor = "aws"
|
128
|
-
elif provider == "azure":
|
129
|
-
flavor = "azure"
|
130
|
-
elif provider == "gcp":
|
131
|
-
flavor = "gcp"
|
132
|
-
elif (
|
133
|
-
key
|
134
|
-
in {
|
135
|
-
"experiment_tracker",
|
136
|
-
"orchestrator",
|
137
|
-
"model_deployer",
|
138
|
-
"model_registry",
|
139
|
-
"mlops_platform",
|
140
|
-
"step_operator",
|
141
|
-
}
|
142
|
-
and value
|
143
|
-
and isinstance(value, str)
|
144
|
-
):
|
145
|
-
flavor = value
|
146
|
-
return flavor
|
147
|
-
|
148
|
-
|
149
|
-
def _add_extra_config_to_components(
|
150
|
-
components: List["Component"], extra_config: Dict[str, str]
|
151
|
-
) -> List["Component"]:
|
152
|
-
"""Adds extra config to mlstacks `Component` objects.
|
153
|
-
|
154
|
-
Args:
|
155
|
-
components: A list of mlstacks `Component` objects.
|
156
|
-
extra_config: A dictionary of extra config.
|
157
|
-
|
158
|
-
Returns:
|
159
|
-
A list of mlstacks `Component` objects.
|
160
|
-
|
161
|
-
Raises:
|
162
|
-
KeyError: If the component type is not supported.
|
163
|
-
"""
|
164
|
-
from zenml.cli.utils import verify_mlstacks_prerequisites_installation
|
165
|
-
|
166
|
-
verify_mlstacks_prerequisites_installation()
|
167
|
-
from mlstacks.models.component import ComponentMetadata
|
168
|
-
|
169
|
-
# Define configuration map
|
170
|
-
config_map = {
|
171
|
-
("container_registry",): ["repo_name"],
|
172
|
-
("artifact_store",): ["bucket_name"],
|
173
|
-
("experiment_tracker", "mlflow"): [
|
174
|
-
"mlflow-artifact-S3-access-key",
|
175
|
-
"mlflow-artifact-S3-secret-key",
|
176
|
-
"mlflow-username",
|
177
|
-
"mlflow-password",
|
178
|
-
"mlflow_bucket",
|
179
|
-
],
|
180
|
-
("mlops_platform", "zenml"): [
|
181
|
-
"zenml-version",
|
182
|
-
"zenml-username",
|
183
|
-
"zenml-password",
|
184
|
-
"zenml-database-url",
|
185
|
-
],
|
186
|
-
("artifact_store", "minio", "k3d"): [
|
187
|
-
"zenml-minio-store-access-key",
|
188
|
-
"zenml-minio-store-secret-key",
|
189
|
-
],
|
190
|
-
("experiment_tracker", "mlflow", "k3d"): [
|
191
|
-
"mlflow_minio_bucket",
|
192
|
-
"mlflow-username",
|
193
|
-
"mlflow-password",
|
194
|
-
],
|
195
|
-
("model_deployer", "seldon", "k3d"): ["seldon-secret-name"],
|
196
|
-
}
|
197
|
-
|
198
|
-
def _add_config(
|
199
|
-
component_metadata: ComponentMetadata, keys: List[str]
|
200
|
-
) -> None:
|
201
|
-
"""Adds key-value pair to the component_metadata config if it exists in extra_config.
|
202
|
-
|
203
|
-
Args:
|
204
|
-
component_metadata: The metadata of the component.
|
205
|
-
keys: The keys of the configurations.
|
206
|
-
"""
|
207
|
-
for key in keys:
|
208
|
-
value = extra_config.get(key)
|
209
|
-
if value is not None:
|
210
|
-
component_metadata.config[key] = value
|
211
|
-
|
212
|
-
# Define a list of component attributes that need checking
|
213
|
-
component_attributes = ["component_type", "component_flavor", "provider"]
|
214
|
-
|
215
|
-
for component in components:
|
216
|
-
component_metadata = ComponentMetadata()
|
217
|
-
component_metadata.config = {}
|
218
|
-
|
219
|
-
# Create a dictionary that maps attribute names to their values
|
220
|
-
component_values = {
|
221
|
-
attr: getattr(component, attr, None)
|
222
|
-
for attr in component_attributes
|
223
|
-
}
|
224
|
-
|
225
|
-
for config_keys, extra_keys in config_map.items():
|
226
|
-
# If all attributes in config_keys match their values in the component
|
227
|
-
if all(
|
228
|
-
component_values.get(key) == value
|
229
|
-
for key, value in zip(component_attributes, config_keys)
|
230
|
-
):
|
231
|
-
_add_config(component_metadata, extra_keys)
|
232
|
-
|
233
|
-
# always add project_id to gcp components
|
234
|
-
if component.provider == "gcp":
|
235
|
-
project_id = extra_config.get("project_id")
|
236
|
-
if project_id:
|
237
|
-
component_metadata.config["project_id"] = extra_config.get(
|
238
|
-
"project_id"
|
239
|
-
)
|
240
|
-
else:
|
241
|
-
raise KeyError(
|
242
|
-
"No `project_id` is included. Please try again with "
|
243
|
-
"`--extra-config project_id=<project_id>`"
|
244
|
-
)
|
245
|
-
|
246
|
-
component.metadata = component_metadata
|
247
|
-
|
248
|
-
return components
|
249
|
-
|
250
|
-
|
251
|
-
def _validate_extra_config(config: Tuple[str]) -> bool:
|
252
|
-
"""Validates that extra config values are correct.
|
253
|
-
|
254
|
-
Args:
|
255
|
-
config: A tuple of extra config values.
|
256
|
-
|
257
|
-
Returns:
|
258
|
-
A boolean indicating whether the extra config values are correct.
|
259
|
-
"""
|
260
|
-
return all(item.count("=") <= 1 for item in config)
|
261
|
-
|
262
|
-
|
263
|
-
def _construct_components(
|
264
|
-
params: Dict[str, Any], zenml_component_deploy: bool = False
|
265
|
-
) -> List["Component"]:
|
266
|
-
"""Constructs mlstacks `Component` objects from raw Click CLI params.
|
267
|
-
|
268
|
-
Args:
|
269
|
-
params: Raw Click CLI params.
|
270
|
-
zenml_component_deploy: A boolean indicating whether the stack
|
271
|
-
contains a single component and is being deployed through `zenml
|
272
|
-
component deploy`
|
273
|
-
|
274
|
-
Returns:
|
275
|
-
A list of mlstacks `Component` objects.
|
276
|
-
|
277
|
-
Raises:
|
278
|
-
ValueError: If one of the extra_config values is invalid.
|
279
|
-
"""
|
280
|
-
from zenml.cli.utils import verify_mlstacks_prerequisites_installation
|
281
|
-
|
282
|
-
verify_mlstacks_prerequisites_installation()
|
283
|
-
from mlstacks.models import Component
|
284
|
-
|
285
|
-
provider = params["provider"]
|
286
|
-
if not params.get("extra_config"):
|
287
|
-
params["extra_config"] = ()
|
288
|
-
if not _validate_extra_config(params["extra_config"]):
|
289
|
-
raise ValueError(
|
290
|
-
"One of the `extra_config` values is invalid. You passed in "
|
291
|
-
f"{params['extra_config']}) in which one of the values includes "
|
292
|
-
"multiple '=' signs. Please fix and try again."
|
293
|
-
)
|
294
|
-
extra_config = (
|
295
|
-
dict(config.split("=") for config in params["extra_config"])
|
296
|
-
if params.get("extra_config")
|
297
|
-
else {}
|
298
|
-
)
|
299
|
-
if zenml_component_deploy:
|
300
|
-
components = [
|
301
|
-
Component(
|
302
|
-
name=params[key],
|
303
|
-
component_type=key,
|
304
|
-
component_flavor=_get_component_flavor(key, value, provider),
|
305
|
-
provider=params["provider"],
|
306
|
-
)
|
307
|
-
for key, value in params.items()
|
308
|
-
if (value) and (key in MLSTACKS_SUPPORTED_STACK_COMPONENTS)
|
309
|
-
]
|
310
|
-
else:
|
311
|
-
components = [
|
312
|
-
Component(
|
313
|
-
name=f"{provider}-{key}",
|
314
|
-
component_type=key,
|
315
|
-
component_flavor=_get_component_flavor(key, value, provider),
|
316
|
-
provider=params["provider"],
|
317
|
-
)
|
318
|
-
for key, value in params.items()
|
319
|
-
if (value) and (key in MLSTACKS_SUPPORTED_STACK_COMPONENTS)
|
320
|
-
]
|
321
|
-
|
322
|
-
components = _add_extra_config_to_components(components, extra_config)
|
323
|
-
return components
|
324
|
-
|
325
|
-
|
326
|
-
def _get_stack_tags(tags: Dict[str, str]) -> Dict[str, str]:
|
327
|
-
"""Gets and parses tags from Click params.
|
328
|
-
|
329
|
-
Args:
|
330
|
-
tags: Raw Click CLI params.
|
331
|
-
|
332
|
-
Returns:
|
333
|
-
A dictionary of tags.
|
334
|
-
"""
|
335
|
-
return dict(tag.split("=") for tag in tags) if tags else {}
|
336
|
-
|
337
|
-
|
338
|
-
def _construct_base_stack(params: Dict[str, Any]) -> "Stack":
|
339
|
-
"""Constructs mlstacks `Stack` object from raw Click CLI params.
|
340
|
-
|
341
|
-
Components are added to the `Stack` object subsequently.
|
342
|
-
|
343
|
-
Args:
|
344
|
-
params: Raw Click CLI params.
|
345
|
-
|
346
|
-
Returns:
|
347
|
-
A mlstacks `Stack` object.
|
348
|
-
"""
|
349
|
-
from zenml.cli.utils import verify_mlstacks_prerequisites_installation
|
350
|
-
|
351
|
-
verify_mlstacks_prerequisites_installation()
|
352
|
-
from mlstacks.models import Stack
|
353
|
-
|
354
|
-
tags = _get_stack_tags(params["tags"])
|
355
|
-
|
356
|
-
return Stack(
|
357
|
-
spec_version=1,
|
358
|
-
spec_type="stack",
|
359
|
-
name=params["stack_name"],
|
360
|
-
provider=params["provider"],
|
361
|
-
default_region=params["region"],
|
362
|
-
default_tags=tags,
|
363
|
-
components=[],
|
364
|
-
)
|
365
|
-
|
366
|
-
|
367
|
-
def convert_click_params_to_mlstacks_primitives(
|
368
|
-
params: Dict[str, Any],
|
369
|
-
zenml_component_deploy: bool = False,
|
370
|
-
) -> Tuple["Stack", List["Component"]]:
|
371
|
-
"""Converts raw Click CLI params to mlstacks primitives.
|
372
|
-
|
373
|
-
Args:
|
374
|
-
params: Raw Click CLI params.
|
375
|
-
zenml_component_deploy: A boolean indicating whether the stack
|
376
|
-
contains a single component and is being deployed through `zenml
|
377
|
-
component deploy`
|
378
|
-
|
379
|
-
Returns:
|
380
|
-
A tuple of Stack and List[Component] objects.
|
381
|
-
"""
|
382
|
-
from zenml.cli.utils import verify_mlstacks_prerequisites_installation
|
383
|
-
|
384
|
-
verify_mlstacks_prerequisites_installation()
|
385
|
-
from mlstacks.constants import MLSTACKS_PACKAGE_NAME
|
386
|
-
from mlstacks.models import Component, Stack
|
387
|
-
|
388
|
-
stack: Stack = _construct_base_stack(params)
|
389
|
-
components: List[Component] = _construct_components(
|
390
|
-
params, zenml_component_deploy
|
391
|
-
)
|
392
|
-
|
393
|
-
# writes the file names to the stack spec
|
394
|
-
# using format '<provider>-<component_name>.yaml'
|
395
|
-
for component in components:
|
396
|
-
stack.components.append(
|
397
|
-
os.path.join(
|
398
|
-
click.get_app_dir(MLSTACKS_PACKAGE_NAME),
|
399
|
-
"stack_specs",
|
400
|
-
stack.name,
|
401
|
-
f"{component.name}.yaml",
|
402
|
-
)
|
403
|
-
)
|
404
|
-
|
405
|
-
return stack, components
|
406
|
-
|
407
|
-
|
408
|
-
def convert_mlstacks_primitives_to_dicts(
|
409
|
-
stack: "Stack", components: List["Component"]
|
410
|
-
) -> Tuple[Dict[str, Any], List[Dict[str, Any]]]:
|
411
|
-
"""Converts mlstacks Stack and Components to dicts.
|
412
|
-
|
413
|
-
Args:
|
414
|
-
stack: A mlstacks Stack object.
|
415
|
-
components: A list of mlstacks Component objects.
|
416
|
-
|
417
|
-
Returns:
|
418
|
-
A tuple of Stack and List[Component] dicts.
|
419
|
-
"""
|
420
|
-
from zenml.cli.utils import verify_mlstacks_prerequisites_installation
|
421
|
-
|
422
|
-
verify_mlstacks_prerequisites_installation()
|
423
|
-
|
424
|
-
# convert to json first to strip out Enums objects
|
425
|
-
stack_dict = json.loads(stack.model_dump_json())
|
426
|
-
components_dicts = [
|
427
|
-
json.loads(component.model_dump_json()) for component in components
|
428
|
-
]
|
429
|
-
|
430
|
-
return stack_dict, components_dicts
|
431
|
-
|
432
|
-
|
433
|
-
def _setup_import(
|
434
|
-
provider: str,
|
435
|
-
stack_name: str,
|
436
|
-
stack_spec_dir: str,
|
437
|
-
user_stack_spec_file: Optional[str] = None,
|
438
|
-
) -> Tuple[Dict[str, Any], str]:
|
439
|
-
"""Sets up the environment for importing a new stack or component.
|
440
|
-
|
441
|
-
Args:
|
442
|
-
provider: The cloud provider for which the stack or component
|
443
|
-
is deployed.
|
444
|
-
stack_name: The name of the stack to import.
|
445
|
-
stack_spec_dir: The path to the directory containing the stack spec.
|
446
|
-
user_stack_spec_file: The path to the user-created stack spec file.
|
447
|
-
|
448
|
-
Returns:
|
449
|
-
A tuple containing the parsed YAML data and the stack spec file path.
|
450
|
-
"""
|
451
|
-
from zenml.cli.utils import verify_mlstacks_prerequisites_installation
|
452
|
-
|
453
|
-
verify_mlstacks_prerequisites_installation()
|
454
|
-
|
455
|
-
from mlstacks.constants import MLSTACKS_PACKAGE_NAME
|
456
|
-
from mlstacks.utils import terraform_utils
|
457
|
-
|
458
|
-
tf_dir = os.path.join(
|
459
|
-
click.get_app_dir(MLSTACKS_PACKAGE_NAME),
|
460
|
-
"terraform",
|
461
|
-
f"{provider}-modular",
|
462
|
-
)
|
463
|
-
stack_spec_file = user_stack_spec_file or os.path.join(
|
464
|
-
stack_spec_dir, f"stack-{stack_name}.yaml"
|
465
|
-
)
|
466
|
-
stack_filename = terraform_utils.get_stack_outputs(
|
467
|
-
stack_spec_file, output_key="stack-yaml-path"
|
468
|
-
).get("stack-yaml-path")[2:]
|
469
|
-
import_stack_path = os.path.join(tf_dir, stack_filename)
|
470
|
-
data = read_yaml(import_stack_path)
|
471
|
-
|
472
|
-
return data, stack_spec_file
|
473
|
-
|
474
|
-
|
475
|
-
def _import_components(
|
476
|
-
data: Dict[str, Any],
|
477
|
-
stack_spec_dir: str,
|
478
|
-
component_name: Optional[str] = None,
|
479
|
-
) -> Dict[StackComponentType, UUID]:
|
480
|
-
"""Imports components based on the provided data.
|
481
|
-
|
482
|
-
Args:
|
483
|
-
data: The parsed YAML data containing component details.
|
484
|
-
stack_spec_dir: The path to the directory containing the stack spec.
|
485
|
-
component_name: The name of the component to import (if any).
|
486
|
-
|
487
|
-
Returns:
|
488
|
-
A dictionary mapping component types to their respective IDs.
|
489
|
-
"""
|
490
|
-
component_ids = {}
|
491
|
-
for component_type_str, component_config in data["components"].items():
|
492
|
-
component_type = StackComponentType(component_type_str)
|
493
|
-
component_spec_path = os.path.join(
|
494
|
-
stack_spec_dir,
|
495
|
-
f"{component_name or component_config['flavor']}-{component_type_str}.yaml",
|
496
|
-
)
|
497
|
-
if component_name:
|
498
|
-
component_config["name"] = component_name
|
499
|
-
|
500
|
-
from zenml.cli.stack import _import_stack_component
|
501
|
-
|
502
|
-
component_id = _import_stack_component(
|
503
|
-
component_type=component_type,
|
504
|
-
component_dict=component_config,
|
505
|
-
component_spec_path=component_spec_path,
|
506
|
-
)
|
507
|
-
component_ids[component_type] = component_id
|
508
|
-
|
509
|
-
return component_ids
|
510
|
-
|
511
|
-
|
512
|
-
def import_new_mlstacks_stack(
|
513
|
-
stack_name: str,
|
514
|
-
provider: str,
|
515
|
-
stack_spec_dir: str,
|
516
|
-
user_stack_spec_file: Optional[str] = None,
|
517
|
-
) -> None:
|
518
|
-
"""Import a new stack deployed for a particular cloud provider.
|
519
|
-
|
520
|
-
Args:
|
521
|
-
stack_name: The name of the stack to import.
|
522
|
-
provider: The cloud provider for which the stack is deployed.
|
523
|
-
stack_spec_dir: The path to the directory containing the stack spec.
|
524
|
-
user_stack_spec_file: The path to the user-created stack spec file.
|
525
|
-
"""
|
526
|
-
data, stack_spec_file = _setup_import(
|
527
|
-
provider, stack_name, stack_spec_dir, user_stack_spec_file
|
528
|
-
)
|
529
|
-
component_ids = _import_components(
|
530
|
-
data=data, stack_spec_dir=stack_spec_dir
|
531
|
-
)
|
532
|
-
|
533
|
-
imported_stack = Client().create_stack(
|
534
|
-
name=stack_name,
|
535
|
-
components=component_ids,
|
536
|
-
stack_spec_file=stack_spec_file,
|
537
|
-
)
|
538
|
-
|
539
|
-
from zenml.cli.utils import print_model_url
|
540
|
-
|
541
|
-
print_model_url(get_stack_url(imported_stack))
|
542
|
-
|
543
|
-
|
544
|
-
def import_new_mlstacks_component(
|
545
|
-
stack_name: str, component_name: str, provider: str, stack_spec_dir: str
|
546
|
-
) -> None:
|
547
|
-
"""Import a new component deployed for a particular cloud provider.
|
548
|
-
|
549
|
-
Args:
|
550
|
-
stack_name: The name of the stack to import.
|
551
|
-
component_name: The name of the component to import.
|
552
|
-
provider: The cloud provider for which the stack is deployed.
|
553
|
-
stack_spec_dir: The path to the directory containing the stack spec.
|
554
|
-
"""
|
555
|
-
data, _ = _setup_import(provider, stack_name, stack_spec_dir)
|
556
|
-
component_ids = _import_components(
|
557
|
-
data, stack_spec_dir, component_name=component_name
|
558
|
-
)
|
559
|
-
component_type = list(component_ids.keys())[
|
560
|
-
0
|
561
|
-
] # Assuming only one component is imported
|
562
|
-
component = Client().get_stack_component(
|
563
|
-
component_type, component_ids[component_type]
|
564
|
-
)
|
565
|
-
|
566
|
-
from zenml.cli.utils import print_model_url
|
567
|
-
|
568
|
-
print_model_url(get_component_url(component))
|
569
|
-
|
570
|
-
|
571
|
-
def verify_spec_and_tf_files_exist(
|
572
|
-
spec_file_path: str, tf_file_path: str
|
573
|
-
) -> None:
|
574
|
-
"""Checks whether both the spec and tf files exist.
|
575
|
-
|
576
|
-
Args:
|
577
|
-
spec_file_path: The path to the spec file.
|
578
|
-
tf_file_path: The path to the tf file.
|
579
|
-
"""
|
580
|
-
from zenml.cli.utils import error
|
581
|
-
|
582
|
-
if not Path(spec_file_path).exists():
|
583
|
-
error(f"Could not find the Stack spec file at {spec_file_path}.")
|
584
|
-
elif not Path(tf_file_path).exists():
|
585
|
-
error(
|
586
|
-
f"Could not find the Terraform files for the stack "
|
587
|
-
f"at {tf_file_path}."
|
588
|
-
)
|
589
|
-
|
590
|
-
|
591
|
-
def deploy_mlstacks_stack(
|
592
|
-
spec_file_path: str,
|
593
|
-
stack_name: str,
|
594
|
-
stack_provider: str,
|
595
|
-
debug_mode: bool = False,
|
596
|
-
no_import_stack_flag: bool = False,
|
597
|
-
user_created_spec: bool = False,
|
598
|
-
) -> None:
|
599
|
-
"""Deploys an MLStacks stack given a spec file path.
|
600
|
-
|
601
|
-
Args:
|
602
|
-
spec_file_path: The path to the spec file.
|
603
|
-
stack_name: The name of the stack.
|
604
|
-
stack_provider: The cloud provider for which the stack is deployed.
|
605
|
-
debug_mode: A boolean indicating whether to run in debug mode.
|
606
|
-
no_import_stack_flag: A boolean indicating whether to import the stack
|
607
|
-
into ZenML.
|
608
|
-
user_created_spec: A boolean indicating whether the user created the
|
609
|
-
spec file.
|
610
|
-
"""
|
611
|
-
from zenml.cli.utils import (
|
612
|
-
declare,
|
613
|
-
verify_mlstacks_prerequisites_installation,
|
614
|
-
)
|
615
|
-
|
616
|
-
verify_mlstacks_prerequisites_installation()
|
617
|
-
from mlstacks.constants import MLSTACKS_PACKAGE_NAME
|
618
|
-
from mlstacks.utils import terraform_utils
|
619
|
-
|
620
|
-
spec_dir = os.path.join(
|
621
|
-
click.get_app_dir(MLSTACKS_PACKAGE_NAME), "stack_specs", stack_name
|
622
|
-
)
|
623
|
-
declare("Deploying stack using Terraform...")
|
624
|
-
terraform_utils.deploy_stack(spec_file_path, debug_mode=debug_mode)
|
625
|
-
declare("Stack successfully deployed.")
|
626
|
-
|
627
|
-
if not no_import_stack_flag:
|
628
|
-
declare(f"Importing stack '{stack_name}' into ZenML...")
|
629
|
-
import_new_mlstacks_stack(
|
630
|
-
stack_name=stack_name,
|
631
|
-
provider=stack_provider,
|
632
|
-
stack_spec_dir=spec_dir,
|
633
|
-
user_stack_spec_file=spec_file_path if user_created_spec else None,
|
634
|
-
)
|
635
|
-
declare("Stack successfully imported into ZenML.")
|
zenml/utils/terraform_utils.py
DELETED
@@ -1,43 +0,0 @@
|
|
1
|
-
# Copyright (c) ZenML GmbH 2023. All Rights Reserved.
|
2
|
-
#
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
# you may not use this file except in compliance with the License.
|
5
|
-
# You may obtain a copy of the License at:
|
6
|
-
#
|
7
|
-
# https://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
|
12
|
-
# or implied. See the License for the specific language governing
|
13
|
-
# permissions and limitations under the License.
|
14
|
-
"""Terraform utilities."""
|
15
|
-
|
16
|
-
import zenml
|
17
|
-
|
18
|
-
|
19
|
-
def verify_terraform_installation() -> None:
|
20
|
-
"""Verifies the Terraform installation.
|
21
|
-
|
22
|
-
Raises:
|
23
|
-
RuntimeError: If Terraform is not installed or ZenML was installed
|
24
|
-
without the `terraform` extra.
|
25
|
-
"""
|
26
|
-
try:
|
27
|
-
import python_terraform
|
28
|
-
except ImportError:
|
29
|
-
raise RuntimeError(
|
30
|
-
"Missing Terraform python library. This is probably because ZenML "
|
31
|
-
"was installed without the optional `terraform` extra. To install "
|
32
|
-
"the missing dependencies, run: \n\n"
|
33
|
-
f'`pip install "zenml[terraform]=={zenml.__version__}"`.'
|
34
|
-
)
|
35
|
-
|
36
|
-
try:
|
37
|
-
python_terraform.Terraform().cmd("-version")
|
38
|
-
except FileNotFoundError:
|
39
|
-
raise RuntimeError(
|
40
|
-
"Missing Terraform installation. Check out "
|
41
|
-
"https://developer.hashicorp.com/terraform/downloads for how to "
|
42
|
-
"install it on your operating system."
|
43
|
-
)
|