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
zenml/zen_server/utils.py
CHANGED
@@ -39,7 +39,6 @@ from zenml.constants import (
|
|
39
39
|
INFO,
|
40
40
|
VERSION_1,
|
41
41
|
)
|
42
|
-
from zenml.enums import ServerProviderType
|
43
42
|
from zenml.exceptions import IllegalOperationError, OAuthError
|
44
43
|
from zenml.logger import get_logger
|
45
44
|
from zenml.plugins.plugin_flavor_registry import PluginFlavorRegistry
|
@@ -237,45 +236,23 @@ def server_config() -> ServerConfiguration:
|
|
237
236
|
return _server_config
|
238
237
|
|
239
238
|
|
240
|
-
def
|
241
|
-
"""Get the active local
|
239
|
+
def get_local_server() -> Optional["ServerDeployment"]:
|
240
|
+
"""Get the active local server.
|
242
241
|
|
243
|
-
Call this function to retrieve the local
|
244
|
-
was last provisioned on this machine.
|
245
|
-
|
246
|
-
Args:
|
247
|
-
local: Whether to return the local active deployment or the remote one.
|
242
|
+
Call this function to retrieve the local server deployed on this machine.
|
248
243
|
|
249
244
|
Returns:
|
250
|
-
The local
|
251
|
-
|
245
|
+
The local server deployment or None, if no local server deployment was
|
246
|
+
found.
|
252
247
|
"""
|
253
248
|
from zenml.zen_server.deploy.deployer import ServerDeployer
|
254
249
|
|
255
250
|
deployer = ServerDeployer()
|
256
|
-
|
257
|
-
servers = deployer.list_servers(provider_type=ServerProviderType.LOCAL)
|
258
|
-
if not servers:
|
259
|
-
servers = deployer.list_servers(
|
260
|
-
provider_type=ServerProviderType.DOCKER
|
261
|
-
)
|
262
|
-
else:
|
263
|
-
servers = deployer.list_servers()
|
264
|
-
|
251
|
+
servers = deployer.list_servers()
|
265
252
|
if not servers:
|
266
253
|
return None
|
267
254
|
|
268
|
-
|
269
|
-
if server.config.provider in [
|
270
|
-
ServerProviderType.LOCAL,
|
271
|
-
ServerProviderType.DOCKER,
|
272
|
-
]:
|
273
|
-
if local:
|
274
|
-
return server
|
275
|
-
elif not local:
|
276
|
-
return server
|
277
|
-
|
278
|
-
return None
|
255
|
+
return servers[0]
|
279
256
|
|
280
257
|
|
281
258
|
def get_active_server_details() -> Tuple[str, Optional[int]]:
|
@@ -284,8 +261,7 @@ def get_active_server_details() -> Tuple[str, Optional[int]]:
|
|
284
261
|
When multiple servers are present, the following precedence is used to
|
285
262
|
determine which server to use:
|
286
263
|
- If the client is connected to a server, that server has precedence.
|
287
|
-
- If no server is connected,
|
288
|
-
precedence over a server that was deployed locally.
|
264
|
+
- If no server is connected, the local server is used, if present.
|
289
265
|
|
290
266
|
Returns:
|
291
267
|
The URL and port of the currently active server.
|
@@ -299,14 +275,8 @@ def get_active_server_details() -> Tuple[str, Optional[int]]:
|
|
299
275
|
logger.debug("Getting URL of connected server.")
|
300
276
|
parsed_url = urlparse(gc.store_configuration.url)
|
301
277
|
return f"{parsed_url.scheme}://{parsed_url.hostname}", parsed_url.port
|
302
|
-
# Else, check for
|
303
|
-
server =
|
304
|
-
if server:
|
305
|
-
logger.debug("Getting URL of remote server.")
|
306
|
-
else:
|
307
|
-
server = get_active_deployment(local=True)
|
308
|
-
logger.debug("Getting URL of local server.")
|
309
|
-
|
278
|
+
# Else, check for local servers
|
279
|
+
server = get_local_server()
|
310
280
|
if server and server.status and server.status.url:
|
311
281
|
if isinstance(server.config, LocalServerDeploymentConfig):
|
312
282
|
return server.status.url, server.config.port
|
@@ -24,7 +24,7 @@ import os
|
|
24
24
|
from asyncio.log import logger
|
25
25
|
from datetime import datetime, timedelta, timezone
|
26
26
|
from genericpath import isfile
|
27
|
-
from typing import Any, List
|
27
|
+
from typing import Any, List, Set
|
28
28
|
|
29
29
|
from anyio import to_thread
|
30
30
|
from fastapi import FastAPI, HTTPException, Request
|
@@ -32,8 +32,18 @@ from fastapi.exceptions import RequestValidationError
|
|
32
32
|
from fastapi.responses import ORJSONResponse
|
33
33
|
from fastapi.staticfiles import StaticFiles
|
34
34
|
from fastapi.templating import Jinja2Templates
|
35
|
+
from starlette.middleware.base import (
|
36
|
+
BaseHTTPMiddleware,
|
37
|
+
RequestResponseEndpoint,
|
38
|
+
)
|
35
39
|
from starlette.middleware.cors import CORSMiddleware
|
36
|
-
from starlette.responses import
|
40
|
+
from starlette.responses import (
|
41
|
+
FileResponse,
|
42
|
+
JSONResponse,
|
43
|
+
RedirectResponse,
|
44
|
+
Response,
|
45
|
+
)
|
46
|
+
from starlette.types import ASGIApp
|
37
47
|
|
38
48
|
import zenml
|
39
49
|
from zenml.analytics import source_context
|
@@ -43,6 +53,7 @@ from zenml.constants import (
|
|
43
53
|
HEALTH,
|
44
54
|
)
|
45
55
|
from zenml.enums import AuthScheme, SourceContextTypes
|
56
|
+
from zenml.models import ServerDeploymentType
|
46
57
|
from zenml.zen_server.exceptions import error_detail
|
47
58
|
from zenml.zen_server.routers import (
|
48
59
|
actions_endpoints,
|
@@ -93,10 +104,7 @@ from zenml.zen_server.utils import (
|
|
93
104
|
zen_store,
|
94
105
|
)
|
95
106
|
|
96
|
-
|
97
|
-
DASHBOARD_DIRECTORY = "dashboard_legacy"
|
98
|
-
else:
|
99
|
-
DASHBOARD_DIRECTORY = "dashboard"
|
107
|
+
DASHBOARD_DIRECTORY = "dashboard"
|
100
108
|
|
101
109
|
|
102
110
|
def relative_path(rel: str) -> str:
|
@@ -143,6 +151,79 @@ def validation_exception_handler(
|
|
143
151
|
return ORJSONResponse(error_detail(exc, ValueError), status_code=422)
|
144
152
|
|
145
153
|
|
154
|
+
class RequestBodyLimit(BaseHTTPMiddleware):
|
155
|
+
"""Limits the size of the request body."""
|
156
|
+
|
157
|
+
def __init__(self, app: ASGIApp, max_bytes: int) -> None:
|
158
|
+
"""Limits the size of the request body.
|
159
|
+
|
160
|
+
Args:
|
161
|
+
app: The FastAPI app.
|
162
|
+
max_bytes: The maximum size of the request body.
|
163
|
+
"""
|
164
|
+
super().__init__(app)
|
165
|
+
self.max_bytes = max_bytes
|
166
|
+
|
167
|
+
async def dispatch(
|
168
|
+
self, request: Request, call_next: RequestResponseEndpoint
|
169
|
+
) -> Response:
|
170
|
+
"""Limits the size of the request body.
|
171
|
+
|
172
|
+
Args:
|
173
|
+
request: The incoming request.
|
174
|
+
call_next: The next function to be called.
|
175
|
+
|
176
|
+
Returns:
|
177
|
+
The response to the request.
|
178
|
+
"""
|
179
|
+
if content_length := request.headers.get("content-length"):
|
180
|
+
if int(content_length) > self.max_bytes:
|
181
|
+
return Response(status_code=413) # Request Entity Too Large
|
182
|
+
return await call_next(request)
|
183
|
+
|
184
|
+
|
185
|
+
class RestrictFileUploadsMiddleware(BaseHTTPMiddleware):
|
186
|
+
"""Restrict file uploads to certain paths."""
|
187
|
+
|
188
|
+
def __init__(self, app: FastAPI, allowed_paths: Set[str]):
|
189
|
+
"""Restrict file uploads to certain paths.
|
190
|
+
|
191
|
+
Args:
|
192
|
+
app: The FastAPI app.
|
193
|
+
allowed_paths: The allowed paths.
|
194
|
+
"""
|
195
|
+
super().__init__(app)
|
196
|
+
self.allowed_paths = allowed_paths
|
197
|
+
|
198
|
+
async def dispatch(
|
199
|
+
self, request: Request, call_next: RequestResponseEndpoint
|
200
|
+
) -> Response:
|
201
|
+
"""Restrict file uploads to certain paths.
|
202
|
+
|
203
|
+
Args:
|
204
|
+
request: The incoming request.
|
205
|
+
call_next: The next function to be called.
|
206
|
+
|
207
|
+
Returns:
|
208
|
+
The response to the request.
|
209
|
+
"""
|
210
|
+
if request.method == "POST":
|
211
|
+
content_type = request.headers.get("content-type", "")
|
212
|
+
if (
|
213
|
+
"multipart/form-data" in content_type
|
214
|
+
and request.url.path not in self.allowed_paths
|
215
|
+
):
|
216
|
+
return JSONResponse(
|
217
|
+
status_code=403,
|
218
|
+
content={
|
219
|
+
"detail": "File uploads are not allowed on this endpoint."
|
220
|
+
},
|
221
|
+
)
|
222
|
+
return await call_next(request)
|
223
|
+
|
224
|
+
|
225
|
+
ALLOWED_FOR_FILE_UPLOAD: Set[str] = set()
|
226
|
+
|
146
227
|
app.add_middleware(
|
147
228
|
CORSMiddleware,
|
148
229
|
allow_origins=server_config().cors_allow_origins,
|
@@ -151,6 +232,13 @@ app.add_middleware(
|
|
151
232
|
allow_headers=["*"],
|
152
233
|
)
|
153
234
|
|
235
|
+
app.add_middleware(
|
236
|
+
RequestBodyLimit, max_bytes=server_config().max_request_body_size_in_bytes
|
237
|
+
)
|
238
|
+
app.add_middleware(
|
239
|
+
RestrictFileUploadsMiddleware, allowed_paths=ALLOWED_FOR_FILE_UPLOAD
|
240
|
+
)
|
241
|
+
|
154
242
|
|
155
243
|
@app.middleware("http")
|
156
244
|
async def set_secure_headers(request: Request, call_next: Any) -> Any:
|
@@ -261,17 +349,14 @@ def initialize() -> None:
|
|
261
349
|
initialize_secure_headers()
|
262
350
|
|
263
351
|
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
),
|
273
|
-
)
|
274
|
-
else:
|
352
|
+
DASHBOARD_REDIRECT_URL = None
|
353
|
+
if (
|
354
|
+
server_config().dashboard_url
|
355
|
+
and server_config().deployment_type == ServerDeploymentType.CLOUD
|
356
|
+
):
|
357
|
+
DASHBOARD_REDIRECT_URL = server_config().dashboard_url
|
358
|
+
|
359
|
+
if not DASHBOARD_REDIRECT_URL:
|
275
360
|
app.mount(
|
276
361
|
"/assets",
|
277
362
|
StaticFiles(
|
@@ -311,6 +396,9 @@ async def dashboard(request: Request) -> Any:
|
|
311
396
|
Raises:
|
312
397
|
HTTPException: If the dashboard files are not included.
|
313
398
|
"""
|
399
|
+
if DASHBOARD_REDIRECT_URL:
|
400
|
+
return RedirectResponse(url=DASHBOARD_REDIRECT_URL)
|
401
|
+
|
314
402
|
if not os.path.isfile(
|
315
403
|
os.path.join(relative_path(DASHBOARD_DIRECTORY), "index.html")
|
316
404
|
):
|
@@ -419,6 +507,8 @@ async def catch_all(request: Request, file_path: str) -> Any:
|
|
419
507
|
Returns:
|
420
508
|
The ZenML dashboard.
|
421
509
|
"""
|
510
|
+
if DASHBOARD_REDIRECT_URL:
|
511
|
+
return RedirectResponse(url=DASHBOARD_REDIRECT_URL)
|
422
512
|
# some static files need to be served directly from the root dashboard
|
423
513
|
# directory
|
424
514
|
if file_path and file_path in root_static_files:
|
@@ -426,7 +426,6 @@ class BaseZenStore(
|
|
426
426
|
secrets_store_type = SecretsStoreType.NONE
|
427
427
|
if isinstance(self, SqlZenStore) and self.config.secrets_store:
|
428
428
|
secrets_store_type = self.config.secrets_store.type
|
429
|
-
use_legacy_dashboard = server_config.use_legacy_dashboard
|
430
429
|
return ServerModel(
|
431
430
|
id=GlobalConfiguration().user_id,
|
432
431
|
active=True,
|
@@ -440,7 +439,6 @@ class BaseZenStore(
|
|
440
439
|
dashboard_url=server_config.dashboard_url or "",
|
441
440
|
analytics_enabled=GlobalConfiguration().analytics_opt_in,
|
442
441
|
metadata=metadata,
|
443
|
-
use_legacy_dashboard=use_legacy_dashboard,
|
444
442
|
)
|
445
443
|
|
446
444
|
def is_local_store(self) -> bool:
|
@@ -0,0 +1,23 @@
|
|
1
|
+
"""Release [0.68.0].
|
2
|
+
|
3
|
+
Revision ID: 0.68.0
|
4
|
+
Revises: 1d8f30c54477
|
5
|
+
Create Date: 2024-10-24 13:14:56.912159
|
6
|
+
|
7
|
+
"""
|
8
|
+
|
9
|
+
# revision identifiers, used by Alembic.
|
10
|
+
revision = "0.68.0"
|
11
|
+
down_revision = "1d8f30c54477"
|
12
|
+
branch_labels = None
|
13
|
+
depends_on = None
|
14
|
+
|
15
|
+
|
16
|
+
def upgrade() -> None:
|
17
|
+
"""Upgrade database schema and/or data, creating a new revision."""
|
18
|
+
pass
|
19
|
+
|
20
|
+
|
21
|
+
def downgrade() -> None:
|
22
|
+
"""Downgrade database schema and/or data back to the previous revision."""
|
23
|
+
pass
|
@@ -0,0 +1,124 @@
|
|
1
|
+
"""migrate to new ModelVersionDataLazyLoader structures [1d8f30c54477].
|
2
|
+
|
3
|
+
Revision ID: 1d8f30c54477
|
4
|
+
Revises: 0.67.0
|
5
|
+
Create Date: 2024-10-08 15:55:34.727543
|
6
|
+
|
7
|
+
"""
|
8
|
+
|
9
|
+
import json
|
10
|
+
|
11
|
+
import sqlalchemy as sa
|
12
|
+
import sqlmodel
|
13
|
+
from alembic import op
|
14
|
+
|
15
|
+
# revision identifiers, used by Alembic.
|
16
|
+
revision = "1d8f30c54477"
|
17
|
+
down_revision = "0.67.0"
|
18
|
+
branch_labels = None
|
19
|
+
depends_on = None
|
20
|
+
|
21
|
+
|
22
|
+
update_query_pd = sa.text(
|
23
|
+
"UPDATE pipeline_deployment SET step_configurations = :data WHERE id = :id_"
|
24
|
+
)
|
25
|
+
|
26
|
+
update_query_sr = sa.text(
|
27
|
+
"UPDATE step_run SET step_configuration = :data WHERE id = :id_"
|
28
|
+
)
|
29
|
+
|
30
|
+
|
31
|
+
def upgrade() -> None:
|
32
|
+
"""Upgrade database schema and/or data, creating a new revision."""
|
33
|
+
bind = op.get_bind()
|
34
|
+
session = sqlmodel.Session(bind=bind)
|
35
|
+
# update pipeline_deployment
|
36
|
+
rows_pd = session.execute(
|
37
|
+
sa.text(
|
38
|
+
"""
|
39
|
+
SELECT id, step_configurations
|
40
|
+
FROM pipeline_deployment
|
41
|
+
WHERE step_configurations IS NOT NULL
|
42
|
+
"""
|
43
|
+
)
|
44
|
+
)
|
45
|
+
for id_, data in rows_pd:
|
46
|
+
try:
|
47
|
+
data_dict = json.loads(data)
|
48
|
+
except json.JSONDecodeError:
|
49
|
+
continue
|
50
|
+
has_changes = False
|
51
|
+
for k in data_dict:
|
52
|
+
if config := data_dict[k].get("config", {}):
|
53
|
+
if model_artifacts_or_metadata := config.get(
|
54
|
+
"model_artifacts_or_metadata", {}
|
55
|
+
):
|
56
|
+
for (
|
57
|
+
inp_name,
|
58
|
+
inp_config,
|
59
|
+
) in model_artifacts_or_metadata.items():
|
60
|
+
if model := inp_config.get("model", {}):
|
61
|
+
del data_dict[k]["config"][
|
62
|
+
"model_artifacts_or_metadata"
|
63
|
+
][inp_name]["model"]
|
64
|
+
data_dict[k]["config"][
|
65
|
+
"model_artifacts_or_metadata"
|
66
|
+
][inp_name]["model_name"] = model["name"]
|
67
|
+
data_dict[k]["config"][
|
68
|
+
"model_artifacts_or_metadata"
|
69
|
+
][inp_name]["model_version"] = str(
|
70
|
+
model["version"]
|
71
|
+
)
|
72
|
+
has_changes = True
|
73
|
+
if has_changes:
|
74
|
+
data = json.dumps(data_dict)
|
75
|
+
session.execute(update_query_pd, params=(dict(data=data, id_=id_)))
|
76
|
+
|
77
|
+
# update step_run
|
78
|
+
rows_sr = session.execute(
|
79
|
+
sa.text(
|
80
|
+
"""
|
81
|
+
SELECT id, step_configuration
|
82
|
+
FROM step_run
|
83
|
+
WHERE step_configuration IS NOT NULL
|
84
|
+
"""
|
85
|
+
)
|
86
|
+
)
|
87
|
+
for id_, data in rows_sr:
|
88
|
+
try:
|
89
|
+
data_dict = json.loads(data)
|
90
|
+
except json.JSONDecodeError:
|
91
|
+
continue
|
92
|
+
has_changes = False
|
93
|
+
if config := data_dict.get("config", {}):
|
94
|
+
if model_artifacts_or_metadata := config.get(
|
95
|
+
"model_artifacts_or_metadata", {}
|
96
|
+
):
|
97
|
+
for (
|
98
|
+
inp_name,
|
99
|
+
inp_config,
|
100
|
+
) in model_artifacts_or_metadata.items():
|
101
|
+
if model := inp_config.get("model", {}):
|
102
|
+
del data_dict["config"]["model_artifacts_or_metadata"][
|
103
|
+
inp_name
|
104
|
+
]["model"]
|
105
|
+
data_dict["config"]["model_artifacts_or_metadata"][
|
106
|
+
inp_name
|
107
|
+
]["model_name"] = model["name"]
|
108
|
+
data_dict["config"]["model_artifacts_or_metadata"][
|
109
|
+
inp_name
|
110
|
+
]["model_version"] = str(model["version"])
|
111
|
+
has_changes = True
|
112
|
+
if has_changes:
|
113
|
+
data = json.dumps(data_dict)
|
114
|
+
session.execute(update_query_sr, params=(dict(data=data, id_=id_)))
|
115
|
+
session.commit()
|
116
|
+
|
117
|
+
|
118
|
+
def downgrade() -> None:
|
119
|
+
"""Downgrade database schema and/or data back to the previous revision.
|
120
|
+
|
121
|
+
Raises:
|
122
|
+
NotImplementedError: Downgrade is not supported for this migration.
|
123
|
+
"""
|
124
|
+
raise NotImplementedError("Downgrade is not supported for this migration.")
|
@@ -412,10 +412,7 @@ class PipelineRunSchema(NamedSchema, table=True):
|
|
412
412
|
Returns:
|
413
413
|
The updated `PipelineRunSchema`.
|
414
414
|
"""
|
415
|
-
if (
|
416
|
-
self.orchestrator_run_id
|
417
|
-
or self.status != ExecutionStatus.INITIALIZING
|
418
|
-
):
|
415
|
+
if not self.is_placeholder_run():
|
419
416
|
raise RuntimeError(
|
420
417
|
f"Unable to replace pipeline run {self.id} which is not a "
|
421
418
|
"placeholder run."
|
@@ -439,3 +436,14 @@ class PipelineRunSchema(NamedSchema, table=True):
|
|
439
436
|
self.updated = datetime.utcnow()
|
440
437
|
|
441
438
|
return self
|
439
|
+
|
440
|
+
def is_placeholder_run(self) -> bool:
|
441
|
+
"""Whether the pipeline run is a placeholder run.
|
442
|
+
|
443
|
+
Returns:
|
444
|
+
Whether the pipeline run is a placeholder run.
|
445
|
+
"""
|
446
|
+
return (
|
447
|
+
self.orchestrator_run_id is None
|
448
|
+
and self.status == ExecutionStatus.INITIALIZING
|
449
|
+
)
|
@@ -262,6 +262,8 @@ class StepRunSchema(NamedSchema, table=True):
|
|
262
262
|
body = StepRunResponseBody(
|
263
263
|
user=self.user.to_model() if self.user else None,
|
264
264
|
status=ExecutionStatus(self.status),
|
265
|
+
start_time=self.start_time,
|
266
|
+
end_time=self.end_time,
|
265
267
|
inputs=input_artifacts,
|
266
268
|
outputs=output_artifacts,
|
267
269
|
created=self.created,
|
@@ -278,8 +280,6 @@ class StepRunSchema(NamedSchema, table=True):
|
|
278
280
|
code_hash=self.code_hash,
|
279
281
|
docstring=self.docstring,
|
280
282
|
source_code=self.source_code,
|
281
|
-
start_time=self.start_time,
|
282
|
-
end_time=self.end_time,
|
283
283
|
logs=self.logs.to_model() if self.logs else None,
|
284
284
|
deployment_id=self.deployment_id,
|
285
285
|
pipeline_run_id=self.pipeline_run_id,
|
@@ -973,7 +973,6 @@ class SqlZenStore(BaseZenStore):
|
|
973
973
|
ValueError: if the filtered page number is out of bounds.
|
974
974
|
RuntimeError: if the schema does not have a `to_model` method.
|
975
975
|
"""
|
976
|
-
query = query.distinct()
|
977
976
|
query = filter_model.apply_filter(query=query, table=table)
|
978
977
|
query = query.distinct()
|
979
978
|
|
@@ -4108,7 +4107,8 @@ class SqlZenStore(BaseZenStore):
|
|
4108
4107
|
Returns:
|
4109
4108
|
A list of all pipelines matching the filter criteria.
|
4110
4109
|
"""
|
4111
|
-
query = select(PipelineSchema)
|
4110
|
+
query: Union[Select[Any], SelectOfScalar[Any]] = select(PipelineSchema)
|
4111
|
+
_custom_conversion: Optional[Callable[[Any], PipelineResponse]] = None
|
4112
4112
|
|
4113
4113
|
column, operand = pipeline_filter_model.sorting_params
|
4114
4114
|
if column == SORT_PIPELINES_BY_LATEST_RUN_KEY:
|
@@ -4141,7 +4141,12 @@ class SqlZenStore(BaseZenStore):
|
|
4141
4141
|
sort_clause = asc
|
4142
4142
|
|
4143
4143
|
query = (
|
4144
|
-
|
4144
|
+
# We need to include the subquery in the select here to
|
4145
|
+
# make this query work with the distinct statement. This
|
4146
|
+
# result will be removed in the custom conversion function
|
4147
|
+
# applied later
|
4148
|
+
select(PipelineSchema, max_date_subquery.c.run_or_created)
|
4149
|
+
.where(PipelineSchema.id == max_date_subquery.c.id)
|
4145
4150
|
.order_by(sort_clause(max_date_subquery.c.run_or_created))
|
4146
4151
|
# We always add the `id` column as a tiebreaker to ensure a
|
4147
4152
|
# stable, repeatable order of items, otherwise subsequent
|
@@ -4149,6 +4154,14 @@ class SqlZenStore(BaseZenStore):
|
|
4149
4154
|
.order_by(col(PipelineSchema.id))
|
4150
4155
|
)
|
4151
4156
|
|
4157
|
+
def _custom_conversion(row: Any) -> PipelineResponse:
|
4158
|
+
return cast(
|
4159
|
+
PipelineResponse,
|
4160
|
+
row[0].to_model(
|
4161
|
+
include_metadata=hydrate, include_resources=True
|
4162
|
+
),
|
4163
|
+
)
|
4164
|
+
|
4152
4165
|
with Session(self.engine) as session:
|
4153
4166
|
return self.filter_and_paginate(
|
4154
4167
|
session=session,
|
@@ -4156,6 +4169,7 @@ class SqlZenStore(BaseZenStore):
|
|
4156
4169
|
table=PipelineSchema,
|
4157
4170
|
filter_model=pipeline_filter_model,
|
4158
4171
|
hydrate=hydrate,
|
4172
|
+
custom_schema_to_model_conversion=_custom_conversion,
|
4159
4173
|
)
|
4160
4174
|
|
4161
4175
|
def count_pipelines(self, filter_model: Optional[PipelineFilter]) -> int:
|
@@ -8093,7 +8107,9 @@ class SqlZenStore(BaseZenStore):
|
|
8093
8107
|
session.commit()
|
8094
8108
|
session.refresh(existing_step_run)
|
8095
8109
|
|
8096
|
-
return existing_step_run.to_model(
|
8110
|
+
return existing_step_run.to_model(
|
8111
|
+
include_metadata=True, include_resources=True
|
8112
|
+
)
|
8097
8113
|
|
8098
8114
|
@staticmethod
|
8099
8115
|
def _set_run_step_parent_step(
|
@@ -8304,6 +8320,14 @@ class SqlZenStore(BaseZenStore):
|
|
8304
8320
|
num_steps=num_steps,
|
8305
8321
|
)
|
8306
8322
|
|
8323
|
+
if pipeline_run.is_placeholder_run() and not new_status.is_finished:
|
8324
|
+
# If the pipeline run is a placeholder run, no step has been started
|
8325
|
+
# for the run yet. This means the orchestrator hasn't started
|
8326
|
+
# running yet, and this method is most likely being called as
|
8327
|
+
# part of the creation of some cached steps. In this case, we don't
|
8328
|
+
# update the status unless the run is finished.
|
8329
|
+
return
|
8330
|
+
|
8307
8331
|
if new_status != pipeline_run.status:
|
8308
8332
|
run_update = PipelineRunUpdate(status=new_status)
|
8309
8333
|
if new_status in {
|
@@ -9181,7 +9205,7 @@ class SqlZenStore(BaseZenStore):
|
|
9181
9205
|
# Running inside server with external auth
|
9182
9206
|
return False
|
9183
9207
|
|
9184
|
-
if config.auto_activate
|
9208
|
+
if config.auto_activate:
|
9185
9209
|
return True
|
9186
9210
|
|
9187
9211
|
else:
|
{zenml_nightly-0.67.0.dev20241002.dist-info → zenml_nightly-0.68.0.dev20241027.dist-info}/METADATA
RENAMED
@@ -1,20 +1,19 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: zenml-nightly
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.68.0.dev20241027
|
4
4
|
Summary: ZenML: Write production-ready ML code.
|
5
5
|
Home-page: https://zenml.io
|
6
6
|
License: Apache-2.0
|
7
7
|
Keywords: machine learning,production,pipeline,mlops,devops
|
8
8
|
Author: ZenML GmbH
|
9
9
|
Author-email: info@zenml.io
|
10
|
-
Requires-Python: >=3.
|
10
|
+
Requires-Python: >=3.9,<3.13
|
11
11
|
Classifier: Development Status :: 4 - Beta
|
12
12
|
Classifier: Intended Audience :: Developers
|
13
13
|
Classifier: Intended Audience :: Science/Research
|
14
14
|
Classifier: Intended Audience :: System Administrators
|
15
15
|
Classifier: License :: OSI Approved :: Apache Software License
|
16
16
|
Classifier: Programming Language :: Python :: 3
|
17
|
-
Classifier: Programming Language :: Python :: 3.8
|
18
17
|
Classifier: Programming Language :: Python :: 3.9
|
19
18
|
Classifier: Programming Language :: Python :: 3.10
|
20
19
|
Classifier: Programming Language :: Python :: 3.11
|
@@ -31,7 +30,6 @@ Provides-Extra: connectors-gcp
|
|
31
30
|
Provides-Extra: connectors-kubernetes
|
32
31
|
Provides-Extra: dev
|
33
32
|
Provides-Extra: gcsfs
|
34
|
-
Provides-Extra: mlstacks
|
35
33
|
Provides-Extra: s3fs
|
36
34
|
Provides-Extra: sagemaker
|
37
35
|
Provides-Extra: secrets-aws
|
@@ -85,7 +83,6 @@ Requires-Dist: mkdocs (>=1.2.3,<2.0.0) ; extra == "dev"
|
|
85
83
|
Requires-Dist: mkdocs-awesome-pages-plugin (>=2.6.1,<3.0.0) ; extra == "dev"
|
86
84
|
Requires-Dist: mkdocs-material (>=8.1.7,<9.0.0) ; extra == "dev"
|
87
85
|
Requires-Dist: mkdocstrings (>=0.17.0,<0.18.0) ; extra == "dev"
|
88
|
-
Requires-Dist: mlstacks (==0.10.0) ; extra == "mlstacks"
|
89
86
|
Requires-Dist: mypy (==1.7.1) ; extra == "dev"
|
90
87
|
Requires-Dist: orjson (>=3.10.0,<3.11.0) ; extra == "server"
|
91
88
|
Requires-Dist: packaging (>=24.1)
|
@@ -105,7 +102,6 @@ Requires-Dist: pytest-rerunfailures (>=13.0) ; extra == "dev"
|
|
105
102
|
Requires-Dist: pytest-split (>=0.8.1,<0.9.0) ; extra == "dev"
|
106
103
|
Requires-Dist: python-dateutil (>=2.8.1,<3.0.0)
|
107
104
|
Requires-Dist: python-multipart (>=0.0.9,<0.1.0) ; extra == "server"
|
108
|
-
Requires-Dist: python-terraform (>=0.10.1,<0.11.0) ; extra == "terraform"
|
109
105
|
Requires-Dist: pyyaml (>=6.0.1)
|
110
106
|
Requires-Dist: pyyaml-include (<2.0) ; extra == "templates"
|
111
107
|
Requires-Dist: rich[jupyter] (>=12.0.0)
|
@@ -231,7 +227,7 @@ Thank you for your support! 🌟
|
|
231
227
|
## 🤸 Quickstart
|
232
228
|
[](https://colab.research.google.com/github/zenml-io/zenml/blob/main/examples/quickstart/quickstart.ipynb)
|
233
229
|
|
234
|
-
[Install ZenML](https://docs.zenml.io/getting-started/installation) via [PyPI](https://pypi.org/project/zenml/). Python 3.
|
230
|
+
[Install ZenML](https://docs.zenml.io/getting-started/installation) via [PyPI](https://pypi.org/project/zenml/). Python 3.9 - 3.12 is required:
|
235
231
|
|
236
232
|
```bash
|
237
233
|
pip install "zenml[server]" notebook
|
@@ -472,7 +468,7 @@ the Apache License Version 2.0.
|
|
472
468
|
<a href="https://github.com/zenml-io/zenml-projects">Projects Showcase</a>
|
473
469
|
<br />
|
474
470
|
<br />
|
475
|
-
🎉 Version 0.
|
471
|
+
🎉 Version 0.68.0 is out. Check out the release notes
|
476
472
|
<a href="https://github.com/zenml-io/zenml/releases">here</a>.
|
477
473
|
<br />
|
478
474
|
🖥️ Download our VS Code Extension <a href="https://marketplace.visualstudio.com/items?itemName=ZenML.zenml-vscode">here</a>.
|