zenml-nightly 0.67.0.dev20241002__py3-none-any.whl → 0.68.0.dev20241027__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 +129 -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/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.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.67.0.dev20241002.dist-info → zenml_nightly-0.68.0.dev20241027.dist-info}/METADATA +4 -8
- {zenml_nightly-0.67.0.dev20241002.dist-info → zenml_nightly-0.68.0.dev20241027.dist-info}/RECORD +270 -450
- {zenml_nightly-0.67.0.dev20241002.dist-info → zenml_nightly-0.68.0.dev20241027.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.67.0.dev20241002.dist-info → zenml_nightly-0.68.0.dev20241027.dist-info}/LICENSE +0 -0
- {zenml_nightly-0.67.0.dev20241002.dist-info → zenml_nightly-0.68.0.dev20241027.dist-info}/entry_points.txt +0 -0
@@ -1,55 +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
|
-
"""Implementation of the post-execution pipeline run class."""
|
15
|
-
|
16
|
-
from typing import List
|
17
|
-
|
18
|
-
from zenml.client import Client
|
19
|
-
from zenml.logger import get_logger
|
20
|
-
from zenml.models import PipelineRunResponse
|
21
|
-
|
22
|
-
logger = get_logger(__name__)
|
23
|
-
|
24
|
-
|
25
|
-
def get_run(name: str) -> "PipelineRunResponse":
|
26
|
-
"""(Deprecated) Fetches the run with the given name.
|
27
|
-
|
28
|
-
Args:
|
29
|
-
name: The name of the run to fetch.
|
30
|
-
|
31
|
-
Returns:
|
32
|
-
The run with the given name.
|
33
|
-
"""
|
34
|
-
logger.warning(
|
35
|
-
"`zenml.post_execution.get_run(<name>)` is deprecated and will be "
|
36
|
-
"removed in a future release. Please use "
|
37
|
-
"`zenml.client.Client().get_pipeline_run(<name>)` instead."
|
38
|
-
)
|
39
|
-
return Client().get_pipeline_run(name)
|
40
|
-
|
41
|
-
|
42
|
-
def get_unlisted_runs() -> List["PipelineRunResponse"]:
|
43
|
-
"""(Deprecated) Fetches the 50 most recent unlisted runs.
|
44
|
-
|
45
|
-
Unlisted runs are runs that are not associated with any pipeline.
|
46
|
-
|
47
|
-
Returns:
|
48
|
-
A list of the 50 most recent unlisted runs.
|
49
|
-
"""
|
50
|
-
logger.warning(
|
51
|
-
"`zenml.post_execution.get_unlisted_runs()` is deprecated and will be "
|
52
|
-
"removed in a future release. Please use "
|
53
|
-
"`zenml.client.Client().list_pipeline_runs(unlisted=True)` instead."
|
54
|
-
)
|
55
|
-
return Client().list_pipeline_runs(unlisted=True).items
|
@@ -1,14 +0,0 @@
|
|
1
|
-
# Copyright (c) ZenML GmbH 2022. All Rights Reserved.
|
2
|
-
#
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
# you may not use this file except in compliance with the License.
|
5
|
-
# You may obtain a copy of the License at:
|
6
|
-
#
|
7
|
-
# https://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
|
12
|
-
# or implied. See the License for the specific language governing
|
13
|
-
# permissions and limitations under the License.
|
14
|
-
"""Initialization of a Terraform ZenML service."""
|
@@ -1,441 +0,0 @@
|
|
1
|
-
# Copyright (c) ZenML GmbH 2022. All Rights Reserved.
|
2
|
-
#
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
# you may not use this file except in compliance with the License.
|
5
|
-
# You may obtain a copy of the License at:
|
6
|
-
#
|
7
|
-
# https://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
|
12
|
-
# or implied. See the License for the specific language governing
|
13
|
-
# permissions and limitations under the License.
|
14
|
-
"""Implementation of a Terraform ZenML service."""
|
15
|
-
|
16
|
-
import os
|
17
|
-
import shutil
|
18
|
-
import tempfile
|
19
|
-
from pathlib import Path
|
20
|
-
from typing import Any, Dict, Generator, Optional, Tuple
|
21
|
-
|
22
|
-
import python_terraform
|
23
|
-
from pydantic import Field
|
24
|
-
|
25
|
-
from zenml.io import fileio
|
26
|
-
from zenml.logger import get_logger
|
27
|
-
from zenml.services.container.container_service import SERVICE_LOG_FILE_NAME
|
28
|
-
from zenml.services.service import BaseService, ServiceConfig
|
29
|
-
from zenml.services.service_status import ServiceState, ServiceStatus
|
30
|
-
from zenml.utils.io_utils import copy_dir, create_dir_recursive_if_not_exists
|
31
|
-
|
32
|
-
logger = get_logger(__name__)
|
33
|
-
|
34
|
-
|
35
|
-
SERVICE_CONFIG_FILE_NAME = "service.json"
|
36
|
-
SERVICE_CONTAINER_GLOBAL_CONFIG_DIR = "zenconfig"
|
37
|
-
SERVICE_CONTAINER_GLOBAL_CONFIG_PATH = os.path.join(
|
38
|
-
"/", SERVICE_CONTAINER_GLOBAL_CONFIG_DIR
|
39
|
-
)
|
40
|
-
|
41
|
-
|
42
|
-
class TerraformServiceConfig(ServiceConfig):
|
43
|
-
"""Terraform service configuration.
|
44
|
-
|
45
|
-
Attributes:
|
46
|
-
root_runtime_path: the root path where the service stores its files.
|
47
|
-
singleton: set to True to store the service files directly in the
|
48
|
-
`root_runtime_path` directory instead of creating a subdirectory for
|
49
|
-
each service instance. Only has effect if the `root_runtime_path` is
|
50
|
-
also set.
|
51
|
-
directory_path: the path to the directory that hosts all the HCL files.
|
52
|
-
copy_terraform_files: whether to copy the HCL files to the service
|
53
|
-
runtime directory.
|
54
|
-
log_level: the log level to set the terraform client to. Choose one of
|
55
|
-
TRACE, DEBUG, INFO, WARN or ERROR (case insensitive).
|
56
|
-
variables_file_path: the path to the file that stores all variable values.
|
57
|
-
"""
|
58
|
-
|
59
|
-
root_runtime_path: str
|
60
|
-
singleton: bool = False
|
61
|
-
directory_path: str
|
62
|
-
copy_terraform_files: bool = False
|
63
|
-
log_level: str = "ERROR"
|
64
|
-
variables_file_path: str = "values.tfvars.json"
|
65
|
-
|
66
|
-
|
67
|
-
class TerraformServiceStatus(ServiceStatus):
|
68
|
-
"""Terraform service status.
|
69
|
-
|
70
|
-
Attributes:
|
71
|
-
runtime_path: the path where the service files (e.g. the configuration
|
72
|
-
file used to start the service daemon and the logfile) are located
|
73
|
-
"""
|
74
|
-
|
75
|
-
runtime_path: Optional[str] = None
|
76
|
-
|
77
|
-
@property
|
78
|
-
def config_file(self) -> Optional[str]:
|
79
|
-
"""Get the path to the service configuration file.
|
80
|
-
|
81
|
-
Returns:
|
82
|
-
The path to the configuration file, or None, if the
|
83
|
-
service has never been started before.
|
84
|
-
"""
|
85
|
-
if not self.runtime_path:
|
86
|
-
return None
|
87
|
-
return os.path.join(self.runtime_path, SERVICE_CONFIG_FILE_NAME)
|
88
|
-
|
89
|
-
@property
|
90
|
-
def log_file(self) -> Optional[str]:
|
91
|
-
"""Get the path to the log file where the service output is/has been logged.
|
92
|
-
|
93
|
-
Returns:
|
94
|
-
The path to the log file, or None, if the service has never been
|
95
|
-
started before.
|
96
|
-
"""
|
97
|
-
if not self.runtime_path:
|
98
|
-
return None
|
99
|
-
return os.path.join(self.runtime_path, SERVICE_LOG_FILE_NAME)
|
100
|
-
|
101
|
-
|
102
|
-
class TerraformService(BaseService):
|
103
|
-
"""A service represented by a set of resources deployed using a terraform recipe.
|
104
|
-
|
105
|
-
This class extends the base service class with functionality concerning
|
106
|
-
the life-cycle management and tracking of external services managed using
|
107
|
-
terraform recipes.
|
108
|
-
|
109
|
-
|
110
|
-
Attributes:
|
111
|
-
config: service configuration
|
112
|
-
status: service status
|
113
|
-
"""
|
114
|
-
|
115
|
-
config: TerraformServiceConfig
|
116
|
-
status: TerraformServiceStatus = Field(
|
117
|
-
default_factory=TerraformServiceStatus
|
118
|
-
)
|
119
|
-
|
120
|
-
_terraform_client: Optional[python_terraform.Terraform] = None
|
121
|
-
|
122
|
-
@property
|
123
|
-
def terraform_client(self) -> python_terraform.Terraform:
|
124
|
-
"""Initialize and/or return the terraform client.
|
125
|
-
|
126
|
-
Returns:
|
127
|
-
The terraform client.
|
128
|
-
"""
|
129
|
-
if self._terraform_client is None:
|
130
|
-
working_dir = self.config.directory_path
|
131
|
-
if self.config.copy_terraform_files:
|
132
|
-
assert self.status.runtime_path is not None
|
133
|
-
working_dir = self.status.runtime_path
|
134
|
-
self._terraform_client = python_terraform.Terraform(
|
135
|
-
working_dir=working_dir,
|
136
|
-
)
|
137
|
-
return self._terraform_client
|
138
|
-
|
139
|
-
def check_status(self) -> Tuple[ServiceState, str]:
|
140
|
-
"""Check the the current operational state of the external service.
|
141
|
-
|
142
|
-
If the final output name provided in the config exists as a non-null value,
|
143
|
-
then it's reasonable to assume that the service is up and running.
|
144
|
-
|
145
|
-
Returns:
|
146
|
-
The operational state of the external service and a message
|
147
|
-
providing additional information about that state (e.g. a
|
148
|
-
description of the error if one is encountered while checking the
|
149
|
-
service status).
|
150
|
-
"""
|
151
|
-
code, out, err = self.terraform_client.plan(
|
152
|
-
detailed_exitcode=True,
|
153
|
-
refresh=False,
|
154
|
-
var=self.get_vars(),
|
155
|
-
input=False,
|
156
|
-
raise_on_error=False,
|
157
|
-
)
|
158
|
-
|
159
|
-
if code == 0:
|
160
|
-
return (ServiceState.ACTIVE, "The deployment is active.")
|
161
|
-
elif code == 2:
|
162
|
-
return (
|
163
|
-
ServiceState.INACTIVE,
|
164
|
-
"The deployment isn't active or needs an update.",
|
165
|
-
)
|
166
|
-
else:
|
167
|
-
return (ServiceState.ERROR, f"Deployment error: \n{err}")
|
168
|
-
|
169
|
-
def _update_service_config(self) -> None:
|
170
|
-
"""Update the service configuration file.
|
171
|
-
|
172
|
-
This function is called after the service has been started, to update
|
173
|
-
the service configuration file with the runtime path of the service.
|
174
|
-
"""
|
175
|
-
# write the service information in the service config file
|
176
|
-
assert self.status.config_file is not None
|
177
|
-
|
178
|
-
with open(self.status.config_file, "w") as f:
|
179
|
-
f.write(self.model_dump_json(indent=4))
|
180
|
-
|
181
|
-
def _write_vars_to_file(self, vars: Dict[str, Any]) -> None:
|
182
|
-
"""Write variables to the variables file.
|
183
|
-
|
184
|
-
Args:
|
185
|
-
vars: The variables to write to the file.
|
186
|
-
"""
|
187
|
-
import json
|
188
|
-
|
189
|
-
path = self.terraform_client.working_dir
|
190
|
-
variables_file_path = os.path.join(
|
191
|
-
path, self.config.variables_file_path
|
192
|
-
)
|
193
|
-
with open(variables_file_path, "w") as f:
|
194
|
-
json.dump(vars, f)
|
195
|
-
|
196
|
-
def _init_and_apply(self) -> None:
|
197
|
-
"""Function to call terraform init and terraform apply.
|
198
|
-
|
199
|
-
The init call is not repeated if any successful execution has
|
200
|
-
happened already, to save time.
|
201
|
-
|
202
|
-
Raises:
|
203
|
-
RuntimeError: if init or apply function fails.
|
204
|
-
"""
|
205
|
-
self._update_service_config()
|
206
|
-
|
207
|
-
# this directory gets created after a successful init
|
208
|
-
previous_run_dir = os.path.join(
|
209
|
-
self.terraform_client.working_dir, ".ignoreme"
|
210
|
-
)
|
211
|
-
if fileio.exists(previous_run_dir):
|
212
|
-
logger.info(
|
213
|
-
"Terraform already initialized, "
|
214
|
-
"terraform init will not be executed."
|
215
|
-
)
|
216
|
-
else:
|
217
|
-
ret_code, _, _ = self.terraform_client.init(capture_output=False)
|
218
|
-
if ret_code != 0:
|
219
|
-
raise RuntimeError("The command 'terraform init' failed.")
|
220
|
-
fileio.mkdir(previous_run_dir)
|
221
|
-
|
222
|
-
# get variables from the recipe as a python dictionary
|
223
|
-
vars = self.get_vars()
|
224
|
-
|
225
|
-
# once init is successful, call terraform apply
|
226
|
-
self.terraform_client.apply(
|
227
|
-
var=vars,
|
228
|
-
input=False,
|
229
|
-
capture_output=False,
|
230
|
-
raise_on_error=True,
|
231
|
-
refresh=False,
|
232
|
-
)
|
233
|
-
|
234
|
-
# write variables to the variable file after execution is successful
|
235
|
-
self._write_vars_to_file(vars)
|
236
|
-
|
237
|
-
def get_vars(self) -> Dict[str, Any]:
|
238
|
-
"""Get variables as a dictionary from values.tfvars.json.
|
239
|
-
|
240
|
-
Returns:
|
241
|
-
A dictionary of variables to use for the stack recipes
|
242
|
-
derived from the tfvars.json file.
|
243
|
-
|
244
|
-
Raises:
|
245
|
-
FileNotFoundError: if the values.tfvars.json file is not
|
246
|
-
found in the stack recipe.
|
247
|
-
TypeError: if the file doesn't contain a dictionary of variables.
|
248
|
-
"""
|
249
|
-
import json
|
250
|
-
|
251
|
-
path = self.terraform_client.working_dir
|
252
|
-
variables_file_path = os.path.join(
|
253
|
-
path, self.config.variables_file_path
|
254
|
-
)
|
255
|
-
if not fileio.exists(variables_file_path):
|
256
|
-
raise FileNotFoundError(
|
257
|
-
"The file values.tfvars.json was not found in the "
|
258
|
-
f"recipe's directory at {variables_file_path}. Please "
|
259
|
-
"verify if it exists."
|
260
|
-
)
|
261
|
-
|
262
|
-
# read values into a dict and return
|
263
|
-
with fileio.open(variables_file_path, "r") as f:
|
264
|
-
variables = json.load(f)
|
265
|
-
if not isinstance(variables, dict):
|
266
|
-
raise TypeError(
|
267
|
-
"The values.tfvars.json file must contain a dictionary "
|
268
|
-
"of variables."
|
269
|
-
)
|
270
|
-
return variables
|
271
|
-
|
272
|
-
def _destroy(self) -> None:
|
273
|
-
"""Function to call terraform destroy on the given path."""
|
274
|
-
# get variables from the recipe as a python dictionary
|
275
|
-
vars = self.get_vars()
|
276
|
-
|
277
|
-
self.terraform_client.destroy(
|
278
|
-
var=vars,
|
279
|
-
capture_output=False,
|
280
|
-
raise_on_error=True,
|
281
|
-
force=python_terraform.IsNotFlagged,
|
282
|
-
refresh=False,
|
283
|
-
)
|
284
|
-
|
285
|
-
# set empty vars to the file
|
286
|
-
|
287
|
-
def _setup_runtime_path(self) -> None:
|
288
|
-
"""Set up the runtime path for the service.
|
289
|
-
|
290
|
-
This method sets up the runtime path for the service.
|
291
|
-
"""
|
292
|
-
# reuse the config file and logfile location from a previous run,
|
293
|
-
# if available
|
294
|
-
copy_terraform_files = True
|
295
|
-
if not self.status.runtime_path or not os.path.exists(
|
296
|
-
self.status.runtime_path
|
297
|
-
):
|
298
|
-
if self.config.root_runtime_path:
|
299
|
-
if self.config.singleton:
|
300
|
-
self.status.runtime_path = self.config.root_runtime_path
|
301
|
-
else:
|
302
|
-
self.status.runtime_path = os.path.join(
|
303
|
-
self.config.root_runtime_path,
|
304
|
-
str(self.uuid),
|
305
|
-
)
|
306
|
-
if fileio.isdir(self.status.runtime_path):
|
307
|
-
copy_terraform_files = False
|
308
|
-
else:
|
309
|
-
create_dir_recursive_if_not_exists(
|
310
|
-
str(self.status.runtime_path)
|
311
|
-
)
|
312
|
-
else:
|
313
|
-
self.status.runtime_path = tempfile.mkdtemp(
|
314
|
-
prefix="zenml-service-"
|
315
|
-
)
|
316
|
-
|
317
|
-
if copy_terraform_files and self.config.copy_terraform_files:
|
318
|
-
copy_dir(
|
319
|
-
self.config.directory_path,
|
320
|
-
self.status.runtime_path,
|
321
|
-
)
|
322
|
-
|
323
|
-
def provision(self) -> None:
|
324
|
-
"""Provision the service."""
|
325
|
-
self._setup_runtime_path()
|
326
|
-
self.check_installation()
|
327
|
-
self._set_log_level()
|
328
|
-
self._init_and_apply()
|
329
|
-
|
330
|
-
def deprovision(self, force: bool = False) -> None:
|
331
|
-
"""Deprovision the service.
|
332
|
-
|
333
|
-
Args:
|
334
|
-
force: if True, the service will be deprovisioned even if it is
|
335
|
-
in a failed state.
|
336
|
-
"""
|
337
|
-
self.check_installation()
|
338
|
-
self._set_log_level()
|
339
|
-
self._destroy()
|
340
|
-
# in case of singleton services, this will remove the config
|
341
|
-
# path as a whole and otherwise, this removes the specific UUID
|
342
|
-
# directory
|
343
|
-
assert self.status.config_file is not None
|
344
|
-
shutil.rmtree(Path(self.status.config_file).parent)
|
345
|
-
|
346
|
-
# overwriting the start/stop function to remove the progress indicator
|
347
|
-
# having which doesn't allow tf logs to be shown in stdout
|
348
|
-
def start(self, timeout: int = 0) -> None:
|
349
|
-
"""Start the service and optionally wait for it to become active.
|
350
|
-
|
351
|
-
Args:
|
352
|
-
timeout: amount of time to wait for the service to become active.
|
353
|
-
If set to 0, the method will return immediately after checking
|
354
|
-
the service status.
|
355
|
-
"""
|
356
|
-
self.admin_state = ServiceState.ACTIVE
|
357
|
-
self.provision()
|
358
|
-
|
359
|
-
def stop(self, timeout: int = 0, force: bool = False) -> None:
|
360
|
-
"""Stop the service and optionally wait for it to shutdown.
|
361
|
-
|
362
|
-
Args:
|
363
|
-
timeout: amount of time to wait for the service to shutdown.
|
364
|
-
If set to 0, the method will return immediately after checking
|
365
|
-
the service status.
|
366
|
-
force: if True, the service will be forcefully stopped.
|
367
|
-
"""
|
368
|
-
self.admin_state = ServiceState.INACTIVE
|
369
|
-
self.deprovision()
|
370
|
-
|
371
|
-
def get_logs(
|
372
|
-
self, follow: bool = False, tail: Optional[int] = None
|
373
|
-
) -> Generator[str, bool, None]:
|
374
|
-
"""Retrieve the service logs.
|
375
|
-
|
376
|
-
Args:
|
377
|
-
follow: if True, the logs will be streamed as they are written
|
378
|
-
tail: only retrieve the last NUM lines of log output.
|
379
|
-
|
380
|
-
Raises:
|
381
|
-
NotImplementedError: not implemented.
|
382
|
-
"""
|
383
|
-
raise NotImplementedError(
|
384
|
-
"This method is not available for Terraform services."
|
385
|
-
)
|
386
|
-
|
387
|
-
def get_outputs(self, output: Optional[str] = None) -> Dict[str, Any]:
|
388
|
-
"""Get outputs from the terraform state.
|
389
|
-
|
390
|
-
Args:
|
391
|
-
output: if specified, only the output with the given name will be
|
392
|
-
returned. Otherwise, all outputs will be returned.
|
393
|
-
|
394
|
-
Returns:
|
395
|
-
A dictionary of outputs from the terraform state.
|
396
|
-
"""
|
397
|
-
if output:
|
398
|
-
# if output is specified, then full_outputs is just a string
|
399
|
-
full_outputs = self.terraform_client.output(
|
400
|
-
output, full_value=True
|
401
|
-
)
|
402
|
-
return {output: full_outputs}
|
403
|
-
else:
|
404
|
-
# get value of the "value" key in the value of full_outputs
|
405
|
-
# and assign it to the key in the output dict
|
406
|
-
full_outputs = self.terraform_client.output(full_value=True)
|
407
|
-
outputs = {k: v["value"] for k, v in full_outputs.items()}
|
408
|
-
return outputs
|
409
|
-
|
410
|
-
def check_installation(self) -> None:
|
411
|
-
"""Checks if necessary tools are installed on the host system.
|
412
|
-
|
413
|
-
Raises:
|
414
|
-
RuntimeError: if any required tool is not installed.
|
415
|
-
"""
|
416
|
-
if not self._is_terraform_installed():
|
417
|
-
raise RuntimeError(
|
418
|
-
"Terraform is required for stack recipes to run and was not "
|
419
|
-
"found installed on your machine or not available on "
|
420
|
-
"your $PATH. Please visit "
|
421
|
-
"https://learn.hashicorp.com/tutorials/terraform/install-cli "
|
422
|
-
"to install it."
|
423
|
-
)
|
424
|
-
|
425
|
-
def _is_terraform_installed(self) -> bool:
|
426
|
-
"""Checks if terraform is installed on the host system.
|
427
|
-
|
428
|
-
Returns:
|
429
|
-
True if terraform is installed, false otherwise.
|
430
|
-
"""
|
431
|
-
# check terraform version to verify installation.
|
432
|
-
try:
|
433
|
-
self.terraform_client.cmd("-version")
|
434
|
-
except FileNotFoundError:
|
435
|
-
return False
|
436
|
-
|
437
|
-
return True
|
438
|
-
|
439
|
-
def _set_log_level(self) -> None:
|
440
|
-
"""Set TF_LOG env var to the log_level provided by the user."""
|
441
|
-
os.environ["TF_LOG"] = self.config.log_level
|
zenml/steps/external_artifact.py
DELETED
@@ -1,26 +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
|
-
"""Backward compatibility for the `ExternalArtifact` class."""
|
15
|
-
|
16
|
-
from zenml.artifacts.external_artifact import ExternalArtifact
|
17
|
-
from zenml.logger import get_logger
|
18
|
-
|
19
|
-
logger = get_logger(__name__)
|
20
|
-
logger.warning(
|
21
|
-
"The `ExternalArtifact` object was moved to `zenml.artifacts.external_artifact`. "
|
22
|
-
"This import path is going to be deprecated. Please consider updating your "
|
23
|
-
"code to use `from zenml.artifacts.external_artifact import ExternalArtifact`."
|
24
|
-
)
|
25
|
-
|
26
|
-
__all__ = ["ExternalArtifact"]
|
zenml/steps/step_environment.py
DELETED
@@ -1,108 +0,0 @@
|
|
1
|
-
# Copyright (c) ZenML GmbH 2022. All Rights Reserved.
|
2
|
-
#
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
# you may not use this file except in compliance with the License.
|
5
|
-
# You may obtain a copy of the License at:
|
6
|
-
#
|
7
|
-
# https://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
|
12
|
-
# or implied. See the License for the specific language governing
|
13
|
-
# permissions and limitations under the License.
|
14
|
-
"""Step environment class."""
|
15
|
-
|
16
|
-
from typing import TYPE_CHECKING
|
17
|
-
|
18
|
-
from zenml.environment import BaseEnvironmentComponent
|
19
|
-
from zenml.logger import get_logger
|
20
|
-
|
21
|
-
if TYPE_CHECKING:
|
22
|
-
from zenml.config.step_run_info import StepRunInfo
|
23
|
-
|
24
|
-
logger = get_logger(__name__)
|
25
|
-
|
26
|
-
STEP_ENVIRONMENT_NAME = "step_environment"
|
27
|
-
|
28
|
-
|
29
|
-
class StepEnvironment(BaseEnvironmentComponent):
|
30
|
-
"""(Deprecated) Added information about a run inside a step function.
|
31
|
-
|
32
|
-
This takes the form of an Environment component. This class can be used from
|
33
|
-
within a pipeline step implementation to access additional information about
|
34
|
-
the runtime parameters of a pipeline step, such as the pipeline name,
|
35
|
-
pipeline run ID and other pipeline runtime information. To use it, access it
|
36
|
-
inside your step function like this:
|
37
|
-
|
38
|
-
```python
|
39
|
-
from zenml.environment import Environment
|
40
|
-
|
41
|
-
@step
|
42
|
-
def my_step(...)
|
43
|
-
env = Environment().step_environment
|
44
|
-
do_something_with(env.pipeline_name, env.run_name, env.step_name)
|
45
|
-
```
|
46
|
-
"""
|
47
|
-
|
48
|
-
NAME = STEP_ENVIRONMENT_NAME
|
49
|
-
|
50
|
-
def __init__(
|
51
|
-
self,
|
52
|
-
step_run_info: "StepRunInfo",
|
53
|
-
cache_enabled: bool,
|
54
|
-
):
|
55
|
-
"""Initialize the environment of the currently running step.
|
56
|
-
|
57
|
-
Args:
|
58
|
-
step_run_info: Info about the currently running step.
|
59
|
-
cache_enabled: Whether caching is enabled for the current step run.
|
60
|
-
"""
|
61
|
-
super().__init__()
|
62
|
-
self._step_run_info = step_run_info
|
63
|
-
self._cache_enabled = cache_enabled
|
64
|
-
|
65
|
-
@property
|
66
|
-
def pipeline_name(self) -> str:
|
67
|
-
"""The name of the currently running pipeline.
|
68
|
-
|
69
|
-
Returns:
|
70
|
-
The name of the currently running pipeline.
|
71
|
-
"""
|
72
|
-
return self._step_run_info.pipeline.name
|
73
|
-
|
74
|
-
@property
|
75
|
-
def run_name(self) -> str:
|
76
|
-
"""The name of the current pipeline run.
|
77
|
-
|
78
|
-
Returns:
|
79
|
-
The name of the current pipeline run.
|
80
|
-
"""
|
81
|
-
return self._step_run_info.run_name
|
82
|
-
|
83
|
-
@property
|
84
|
-
def step_name(self) -> str:
|
85
|
-
"""The name of the currently running step.
|
86
|
-
|
87
|
-
Returns:
|
88
|
-
The name of the currently running step.
|
89
|
-
"""
|
90
|
-
return self._step_run_info.pipeline_step_name
|
91
|
-
|
92
|
-
@property
|
93
|
-
def step_run_info(self) -> "StepRunInfo":
|
94
|
-
"""Info about the currently running step.
|
95
|
-
|
96
|
-
Returns:
|
97
|
-
Info about the currently running step.
|
98
|
-
"""
|
99
|
-
return self._step_run_info
|
100
|
-
|
101
|
-
@property
|
102
|
-
def cache_enabled(self) -> bool:
|
103
|
-
"""Returns whether cache is enabled for the step.
|
104
|
-
|
105
|
-
Returns:
|
106
|
-
True if cache is enabled for the step, otherwise False.
|
107
|
-
"""
|
108
|
-
return self._cache_enabled
|
zenml/steps/step_output.py
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
# Copyright (c) ZenML GmbH 2021. 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
|
-
"""Step output class."""
|
15
|
-
|
16
|
-
from typing import Any, Iterator, NamedTuple, Tuple, Type
|
17
|
-
|
18
|
-
|
19
|
-
class Output(object):
|
20
|
-
"""A named tuple with a default name that cannot be overridden."""
|
21
|
-
|
22
|
-
def __init__(self, **kwargs: Type[Any]):
|
23
|
-
"""Initializes the output.
|
24
|
-
|
25
|
-
Args:
|
26
|
-
**kwargs: The output values.
|
27
|
-
"""
|
28
|
-
self.outputs = NamedTuple("ZenOutput", **kwargs) # type: ignore[misc]
|
29
|
-
|
30
|
-
def items(self) -> Iterator[Tuple[str, Type[Any]]]:
|
31
|
-
"""Yields a tuple of type (output_name, output_type).
|
32
|
-
|
33
|
-
Yields:
|
34
|
-
A tuple of type (output_name, output_type).
|
35
|
-
"""
|
36
|
-
yield from self.outputs.__annotations__.items()
|