zenml-nightly 0.66.0.dev20240927__py3-none-any.whl → 0.68.1.dev20241102__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- README.md +18 -12
- RELEASE_NOTES.md +236 -0
- zenml/VERSION +1 -1
- zenml/__init__.py +5 -10
- zenml/analytics/context.py +16 -1
- zenml/analytics/enums.py +0 -13
- zenml/analytics/utils.py +18 -7
- zenml/artifact_stores/base_artifact_store.py +11 -0
- zenml/artifacts/artifact_config.py +19 -65
- zenml/artifacts/external_artifact.py +7 -53
- zenml/artifacts/external_artifact_config.py +21 -40
- zenml/artifacts/load_directory_materializer.py +91 -0
- zenml/artifacts/utils.py +204 -145
- zenml/cli/__init__.py +62 -127
- zenml/cli/base.py +8 -8
- zenml/cli/integration.py +0 -9
- zenml/cli/login.py +951 -0
- zenml/cli/pipeline.py +1 -1
- zenml/cli/served_model.py +8 -1
- zenml/cli/server.py +462 -577
- zenml/cli/service_accounts.py +4 -4
- zenml/cli/stack.py +78 -569
- zenml/cli/stack_components.py +5 -594
- zenml/cli/user_management.py +0 -12
- zenml/cli/utils.py +24 -142
- zenml/client.py +57 -40
- zenml/client_lazy_loader.py +29 -12
- zenml/config/compiler.py +7 -11
- zenml/config/global_config.py +9 -0
- zenml/config/pipeline_configurations.py +2 -1
- zenml/config/pipeline_run_configuration.py +2 -1
- zenml/config/server_config.py +7 -5
- zenml/config/step_configurations.py +2 -0
- zenml/constants.py +6 -42
- zenml/enums.py +1 -4
- zenml/environment.py +1 -315
- zenml/exceptions.py +12 -41
- zenml/hooks/hook_validators.py +1 -8
- zenml/integrations/airflow/orchestrators/airflow_orchestrator.py +2 -3
- zenml/integrations/argilla/__init__.py +1 -1
- zenml/integrations/argilla/annotators/argilla_annotator.py +234 -89
- zenml/integrations/argilla/flavors/argilla_annotator_flavor.py +10 -5
- zenml/integrations/aws/flavors/sagemaker_orchestrator_flavor.py +9 -5
- zenml/integrations/aws/orchestrators/sagemaker_orchestrator.py +15 -2
- zenml/integrations/aws/service_connectors/aws_service_connector.py +6 -0
- zenml/integrations/azure/__init__.py +6 -2
- zenml/integrations/azure/flavors/azureml_orchestrator_flavor.py +5 -4
- zenml/integrations/azure/orchestrators/azureml_orchestrator.py +1 -1
- zenml/integrations/bentoml/model_deployers/bentoml_model_deployer.py +85 -19
- zenml/integrations/bentoml/services/__init__.py +15 -4
- zenml/integrations/bentoml/services/bentoml_container_deployment.py +399 -0
- zenml/integrations/bentoml/services/{bentoml_deployment.py → bentoml_local_deployment.py} +81 -40
- zenml/{steps/base_parameters.py → integrations/bentoml/services/deployment_type.py} +8 -5
- zenml/integrations/bentoml/steps/bento_builder.py +1 -0
- zenml/integrations/bentoml/steps/bentoml_deployer.py +93 -41
- zenml/integrations/github/code_repositories/github_code_repository.py +1 -1
- zenml/integrations/gitlab/code_repositories/gitlab_code_repository.py +6 -1
- zenml/integrations/huggingface/__init__.py +1 -6
- zenml/integrations/kaniko/image_builders/kaniko_image_builder.py +3 -3
- zenml/integrations/lightning/orchestrators/lightning_orchestrator.py +3 -3
- zenml/integrations/lightning/orchestrators/lightning_orchestrator_entrypoint.py +2 -2
- zenml/integrations/mlflow/experiment_trackers/mlflow_experiment_tracker.py +6 -3
- zenml/integrations/mlflow/model_registries/mlflow_model_registry.py +6 -0
- zenml/integrations/mlflow/services/mlflow_deployment.py +2 -2
- zenml/integrations/mlflow/steps/mlflow_deployer.py +1 -1
- zenml/integrations/mlflow/steps/mlflow_registry.py +1 -1
- zenml/integrations/neptune/experiment_trackers/run_state.py +2 -2
- zenml/integrations/pytorch/materializers/base_pytorch_materializer.py +8 -2
- zenml/integrations/pytorch/materializers/pytorch_module_materializer.py +4 -1
- zenml/integrations/s3/artifact_stores/s3_artifact_store.py +98 -0
- zenml/integrations/s3/flavors/s3_artifact_store_flavor.py +14 -0
- zenml/integrations/s3/utils.py +40 -0
- zenml/integrations/tensorflow/__init__.py +0 -9
- zenml/logging/step_logging.py +13 -15
- zenml/{new/pipelines → login}/__init__.py +4 -1
- zenml/login/credentials.py +346 -0
- zenml/login/credentials_store.py +603 -0
- zenml/{new → login/pro}/__init__.py +4 -1
- zenml/login/pro/client.py +496 -0
- zenml/login/pro/constants.py +34 -0
- zenml/{lineage_graph/edge.py → login/pro/models.py} +9 -8
- zenml/{zen_server/deploy/terraform/providers → login/pro/organization}/__init__.py +2 -2
- zenml/login/pro/organization/client.py +79 -0
- zenml/{lineage_graph/node/base_node.py → login/pro/organization/models.py} +13 -12
- zenml/{new/steps → login/pro/tenant}/__init__.py +2 -1
- zenml/login/pro/tenant/client.py +92 -0
- zenml/login/pro/tenant/models.py +174 -0
- zenml/login/pro/utils.py +121 -0
- zenml/{cli → login}/web_login.py +64 -28
- zenml/materializers/__init__.py +2 -0
- zenml/materializers/base_materializer.py +43 -9
- zenml/materializers/built_in_materializer.py +1 -1
- zenml/materializers/uuid_materializer.py +79 -0
- zenml/metadata/lazy_load.py +10 -7
- zenml/metadata/metadata_types.py +49 -0
- zenml/model/lazy_load.py +85 -4
- zenml/model/model.py +61 -83
- zenml/model/utils.py +47 -118
- zenml/models/__init__.py +6 -0
- zenml/models/v2/base/base.py +12 -8
- zenml/models/v2/base/filter.py +9 -0
- zenml/models/v2/core/artifact_version.py +53 -25
- zenml/models/v2/core/component.py +54 -19
- zenml/models/v2/core/flavor.py +13 -13
- zenml/models/v2/core/model.py +4 -1
- zenml/models/v2/core/model_version.py +4 -6
- zenml/models/v2/core/model_version_artifact.py +3 -1
- zenml/models/v2/core/model_version_pipeline_run.py +3 -1
- zenml/models/v2/core/pipeline.py +3 -1
- zenml/models/v2/core/pipeline_run.py +24 -3
- zenml/models/v2/core/run_metadata.py +2 -2
- zenml/models/v2/core/run_template.py +3 -1
- zenml/models/v2/core/stack.py +7 -3
- zenml/models/v2/core/step_run.py +58 -14
- zenml/models/v2/misc/auth_models.py +11 -2
- zenml/models/v2/misc/server_models.py +2 -4
- zenml/orchestrators/base_orchestrator.py +41 -4
- zenml/orchestrators/input_utils.py +52 -36
- zenml/orchestrators/step_launcher.py +50 -171
- zenml/orchestrators/step_run_utils.py +574 -0
- zenml/orchestrators/step_runner.py +83 -120
- zenml/orchestrators/utils.py +46 -180
- zenml/pipelines/__init__.py +3 -16
- zenml/{new/pipelines → pipelines}/pipeline_context.py +3 -18
- zenml/pipelines/pipeline_decorator.py +34 -60
- zenml/{new/pipelines/pipeline.py → pipelines/pipeline_definition.py} +210 -207
- zenml/{new/pipelines → pipelines}/run_utils.py +11 -10
- zenml/services/local/local_daemon_entrypoint.py +4 -4
- zenml/services/service.py +2 -2
- zenml/stack/stack.py +3 -108
- zenml/stack/stack_component.py +2 -78
- zenml/stack/utils.py +26 -14
- zenml/stack_deployments/aws_stack_deployment.py +3 -0
- zenml/step_operators/step_operator_entrypoint_configuration.py +1 -1
- zenml/steps/__init__.py +3 -9
- zenml/steps/base_step.py +25 -267
- zenml/steps/entrypoint_function_utils.py +2 -80
- zenml/{new/steps → steps}/step_context.py +12 -66
- zenml/steps/step_decorator.py +42 -89
- zenml/steps/step_invocation.py +16 -60
- zenml/steps/utils.py +4 -23
- zenml/utils/dashboard_utils.py +16 -51
- zenml/utils/materializer_utils.py +1 -1
- zenml/utils/requirements_utils.py +71 -0
- zenml/utils/singleton.py +15 -3
- zenml/utils/source_utils.py +39 -2
- zenml/utils/typing_utils.py +8 -28
- zenml/utils/visualization_utils.py +1 -1
- zenml/zen_server/auth.py +44 -39
- zenml/zen_server/dashboard/assets/{404-Y50hSt65.js → 404-DT4QRUqN.js} +1 -1
- zenml/zen_server/dashboard/assets/@radix-DP6vWzyx.js +85 -0
- zenml/zen_server/dashboard/assets/@react-router-BMhZulnd.js +29 -0
- zenml/zen_server/dashboard/assets/@reactflow-8U9qNlMR.js +17 -0
- zenml/zen_server/dashboard/assets/@tanstack-BUCbhJyH.js +22 -0
- zenml/zen_server/dashboard/assets/{AlertDialogDropdownItem-xLR9a1iw.js → AlertDialogDropdownItem-C6N2rGrB.js} +1 -1
- zenml/zen_server/dashboard/assets/{CodeSnippet-IxXNxUDa.js → CodeSnippet-CqybNv0k.js} +1 -1
- zenml/zen_server/dashboard/assets/{CollapsibleCard-BhutZbBL.js → CollapsibleCard-0r_8G2Lj.js} +1 -1
- zenml/zen_server/dashboard/assets/{Commands-Bf-rd1z8.js → Commands-BDjgBQKi.js} +1 -1
- zenml/zen_server/dashboard/assets/ComponentBadge-DUiEYJHu.js +1 -0
- zenml/zen_server/dashboard/assets/ComponentFallbackDialog-BFoH5K4V.js +1 -0
- zenml/zen_server/dashboard/assets/ComponentIcon-CAIoUis2.js +1 -0
- zenml/zen_server/dashboard/assets/{CopyButton-DcFHidFJ.js → CopyButton-C745BrKi.js} +1 -1
- zenml/zen_server/dashboard/assets/{CsvVizualization-QSbjrfxw.js → CsvVizualization-PpAq0CeZ.js} +5 -5
- zenml/zen_server/dashboard/assets/{DialogItem-Cd3HqST4.js → DialogItem-DcVCZEew.js} +1 -1
- zenml/zen_server/dashboard/assets/{DisplayDate-DkCy54Bp.js → DisplayDate-BeXgUG_C.js} +1 -1
- zenml/zen_server/dashboard/assets/{EmptyState-Cs3DEmso.js → EmptyState-DeK7H4pr.js} +1 -1
- zenml/zen_server/dashboard/assets/{Error-BhwdmqK7.js → Error-BMlzibXj.js} +1 -1
- zenml/zen_server/dashboard/assets/{Helpbox-0pBpTwTm.js → Helpbox-BLf40fLV.js} +1 -1
- zenml/zen_server/dashboard/assets/{Infobox-BTK_EUKT.js → Infobox-BwisKifi.js} +1 -1
- zenml/zen_server/dashboard/assets/{InlineAvatar-CA3DFMcM.js → InlineAvatar-jEgodSgX.js} +1 -1
- zenml/zen_server/dashboard/assets/{Lock-CmIn0szs.js → Lock-3lLt1ih0.js} +1 -1
- zenml/zen_server/dashboard/assets/MarkdownVisualization-8O9kTr-2.js +14 -0
- zenml/zen_server/dashboard/assets/{NumberBox-CrN0_kqI.js → NumberBox-T9eELfLZ.js} +1 -1
- zenml/zen_server/dashboard/assets/{Partials-QLOZw624.js → Partials-YPBB3V4q.js} +1 -1
- zenml/zen_server/dashboard/assets/{PasswordChecker-DE71J_3F.js → PasswordChecker-CW0kqY0W.js} +1 -1
- zenml/zen_server/dashboard/assets/{ProviderIcon-C16CCIN4.js → ProviderIcon-Bb3Xha5A.js} +1 -1
- zenml/zen_server/dashboard/assets/{ProviderRadio-D3FuCHf3.js → ProviderRadio-BROY1700.js} +1 -1
- zenml/zen_server/dashboard/assets/RunSelector-DCiL3M1c.js +1 -0
- zenml/zen_server/dashboard/assets/SearchField-DfUiGFVd.js +1 -0
- zenml/zen_server/dashboard/assets/{SecretTooltip-BaMwHF-Q.js → SecretTooltip-C_qByGWB.js} +1 -1
- zenml/zen_server/dashboard/assets/{SetPassword-DuIC65H9.js → SetPassword-7pRB00El.js} +1 -1
- zenml/zen_server/dashboard/assets/{Tick-DJTCF0Re.js → Tick-CykQFPj2.js} +1 -1
- zenml/zen_server/dashboard/assets/{UpdatePasswordSchemas-CUm-DMpw.js → UpdatePasswordSchemas-DckMEkFf.js} +1 -1
- zenml/zen_server/dashboard/assets/{UsageReason-CKw0juLF.js → UsageReason-DVceN14P.js} +1 -1
- zenml/zen_server/dashboard/assets/{WizardFooter-Cv9ApYWU.js → WizardFooter-CW0Cvd70.js} +1 -1
- zenml/zen_server/dashboard/assets/{check-circle-DOoS4yhF.js → check-circle-Dwxliy1Z.js} +1 -1
- zenml/zen_server/dashboard/assets/{chevron-down-Cwb-W_B_.js → chevron-down-8wLBS5pQ.js} +1 -1
- zenml/zen_server/dashboard/assets/{chevron-right-double-c9H46Kl8.js → chevron-right-double-DoD8iXWM.js} +1 -1
- zenml/zen_server/dashboard/assets/{cloud-only-BB4BVa6E.js → cloud-only-B-s_HMDm.js} +1 -1
- zenml/zen_server/dashboard/assets/{code-browser-BJYErIjr.js → code-browser-CZUQs3Wa.js} +1 -1
- zenml/zen_server/dashboard/assets/{copy-CaGlDsUy.js → copy-CaSMXwiU.js} +1 -1
- zenml/zen_server/dashboard/assets/{create-stack-F29xAUEx.js → create-stack-CEmaPZ4c.js} +1 -1
- zenml/zen_server/dashboard/assets/delete-run-D-LKbGyz.js +1 -0
- zenml/zen_server/dashboard/assets/{docker-BFAFXr2_.js → docker-BFNgg-z3.js} +1 -1
- zenml/zen_server/dashboard/assets/{dots-horizontal-C6K59vUm.js → dots-horizontal-DK5Duzx4.js} +1 -1
- zenml/zen_server/dashboard/assets/{form-schemas-BKXwSDK2.js → form-schemas-1AyOCx90.js} +1 -1
- zenml/zen_server/dashboard/assets/{gcp-Dj6ntk0L.js → gcp-7M2Yf3ZK.js} +1 -1
- zenml/zen_server/dashboard/assets/{help-CwN931fX.js → help-Dam461dC.js} +1 -1
- zenml/zen_server/dashboard/assets/{index-5GJ5ysEZ.js → index-BVJ8n2-j.js} +1 -1
- zenml/zen_server/dashboard/assets/index-Bpmj40BI.js +1 -0
- zenml/zen_server/dashboard/assets/index-CbU4Ln_E.css +1 -0
- zenml/zen_server/dashboard/assets/{index-D-mtoBj3.js → index-DKPhqP2B.js} +1 -1
- zenml/zen_server/dashboard/assets/index-QQb7wQEC.js +55 -0
- zenml/zen_server/dashboard/assets/index.esm-cuVep_NJ.js +1 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-400-normal-BLGc9T1a.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-400-normal-ZzOtrSSW.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-500-normal-D4Vwzodn.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-500-normal-DH2hs3aW.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-600-normal-BGBWG807.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-600-normal-BuzJQFbW.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-400-normal-BPnxn4xp.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-400-normal-Dc4VJyIJ.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-500-normal-BShVwWPj.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-500-normal-CUiC4oBV.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-600-normal-Bt9VVOA-.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-600-normal-CaqZN2hq.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-400-normal-BZzXV7-1.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-400-normal-DxZsaF_h.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-500-normal-CeQXL5ds.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-500-normal-d_eO-yCQ.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-600-normal-CwicyhtI.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-600-normal-Dhlb-90d.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-400-normal-Bput3-QP.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-400-normal-DCpCPQOf.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-500-normal-B6guLgqG.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-500-normal-M2hEX8vc.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-600-normal-C9WLioJ8.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-600-normal-Cnui8OiR.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-400-normal-BOOGhInR.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-400-normal-gitzw0hO.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-500-normal-D2bGa7uu.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-500-normal-deR1Tlfd.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-600-normal-B5cFAncS.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-600-normal-D273HNI0.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-400-normal-C1t-h-pH.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-400-normal-hnt3BR84.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-500-normal-CIS2RHJS.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-500-normal-UMdmhHu2.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-600-normal-BnYJhD27.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-600-normal-CAF0vJDd.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-400-normal-BUNmGMP1.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-400-normal-DMkecbls.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-500-normal-DOriooB6.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-500-normal-DQPw2Hwd.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-600-normal-Cc8MFFhd.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-600-normal-Cm6aH8_k.woff +0 -0
- zenml/zen_server/dashboard/assets/{kubernetes-BjbR6D-1.js → kubernetes--g7r02Zu.js} +1 -1
- zenml/zen_server/dashboard/assets/{layout-Dru15_XR.js → layout-DCSYN7-C.js} +1 -1
- zenml/zen_server/dashboard/assets/{link-external-BT2L8hAQ.js → link-external-CBEk6kEG.js} +1 -1
- zenml/zen_server/dashboard/assets/{login-mutation-ax6iL2Mb.js → login-mutation-DTcAFP1l.js} +1 -1
- zenml/zen_server/dashboard/assets/{logs-GiDJXbLS.js → logs-D5bdJGur.js} +1 -1
- zenml/zen_server/dashboard/assets/not-found-Cc-JkRH2.js +1 -0
- zenml/zen_server/dashboard/assets/{package-DYKZ5jKW.js → package-Cs35Szwh.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-HkVBdZl6.js → page-9yplj5JT.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-uORspyRu.js → page-B-y2XKIc.js} +1 -1
- zenml/zen_server/dashboard/assets/page-BBpOxVcY.js +1 -0
- zenml/zen_server/dashboard/assets/{page-BDg1F-Ug.js → page-BQQKaabe.js} +2 -2
- zenml/zen_server/dashboard/assets/page-BRInM1Lg.js +1 -0
- zenml/zen_server/dashboard/assets/{page-CvKnNK1S.js → page-BjjlMk7s.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-BukXK1Aa.js → page-Bvd7YH2A.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-DcTjHmYZ.js → page-C0N5q3l7.js} +1 -1
- zenml/zen_server/dashboard/assets/page-CT3Nep8W.js +1 -0
- zenml/zen_server/dashboard/assets/{page-DuqYMYmH.js → page-C_f47pBf.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-DRfcRK1w.js → page-ClUVkl-O.js} +1 -1
- zenml/zen_server/dashboard/assets/page-Cmv8C_yM.js +3 -0
- zenml/zen_server/dashboard/assets/{page-p0BhSAWx.js → page-CyN2bdWG.js} +1 -1
- zenml/zen_server/dashboard/assets/page-CzzXH4fs.js +1 -0
- zenml/zen_server/dashboard/assets/{page-6mfzecin.js → page-DH_Z7iW1.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-8kYmrh0B.js → page-DIOXwhiD.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-BXarY9K2.js → page-DLixvR-7.js} +1 -1
- zenml/zen_server/dashboard/assets/page-DTlGjgnG.js +1 -0
- zenml/zen_server/dashboard/assets/page-Dbpl86h0.js +1 -0
- zenml/zen_server/dashboard/assets/{page-MAXyfXBq.js → page-Ddgy6kDS.js} +1 -1
- zenml/zen_server/dashboard/assets/page-DtCAfBLy.js +9 -0
- zenml/zen_server/dashboard/assets/{page-CKHNAq7z.js → page-Dx16z7nA.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-DMSLXKGT.js → page-DzpVUZ8f.js} +1 -1
- zenml/zen_server/dashboard/assets/page-McUyYbo1.js +1 -0
- zenml/zen_server/dashboard/assets/{page-miU2rhYG.js → page-N4qoPHKb.js} +1 -1
- zenml/zen_server/dashboard/assets/page-T1P3RyAR.js +1 -0
- zenml/zen_server/dashboard/assets/{page-3qPX9WYH.js → page-bKaULTGG.js} +1 -1
- zenml/zen_server/dashboard/assets/page-sbXUJy9t.js +1 -0
- zenml/zen_server/dashboard/assets/{persist-CfJMar_k.js → persist-CP0JmYZ4.js} +1 -1
- zenml/zen_server/dashboard/assets/{persist-BxIR2XZs.js → persist-DNb5cdrU.js} +1 -1
- zenml/zen_server/dashboard/assets/{plus-Bc8eLSDM.js → plus-C9IxgN2M.js} +1 -1
- zenml/zen_server/dashboard/assets/{refresh-hfgWPeto.js → refresh-BVu22P_C.js} +1 -1
- zenml/zen_server/dashboard/assets/{rocket-SESCGQXm.js → rocket-CONEmRmB.js} +1 -1
- zenml/zen_server/dashboard/assets/{sharedSchema-vub0rii3.js → sharedSchema-TMLu-nYQ.js} +1 -1
- zenml/zen_server/dashboard/assets/stack-detail-query-xmYxSsUY.js +1 -0
- zenml/zen_server/dashboard/assets/{tick-circle-m-hJG8i9.js → tick-circle-CM1ZScbQ.js} +1 -1
- zenml/zen_server/dashboard/assets/{trash-DUWZWzse.js → trash-DkJHMOg7.js} +1 -1
- zenml/zen_server/dashboard/assets/{update-server-settings-mutation-FGVP7X2U.js → update-server-settings-mutation-DsU8cNVl.js} +1 -1
- zenml/zen_server/dashboard/assets/{url-CbAPzsmT.js → url-D5le3J4q.js} +1 -1
- zenml/zen_server/dashboard/assets/zod-D89GC_vc.js +1 -0
- zenml/zen_server/dashboard/index.html +7 -7
- zenml/zen_server/deploy/__init__.py +7 -16
- zenml/zen_server/deploy/base_provider.py +46 -73
- zenml/zen_server/deploy/{local → daemon}/__init__.py +3 -3
- zenml/zen_server/deploy/{local/local_provider.py → daemon/daemon_provider.py} +44 -63
- zenml/zen_server/deploy/{local/local_zen_server.py → daemon/daemon_zen_server.py} +50 -28
- zenml/zen_server/deploy/deployer.py +90 -171
- zenml/zen_server/deploy/deployment.py +20 -12
- zenml/zen_server/deploy/docker/docker_provider.py +9 -28
- zenml/zen_server/deploy/docker/docker_zen_server.py +19 -9
- zenml/zen_server/deploy/helm/Chart.yaml +1 -1
- zenml/zen_server/deploy/helm/README.md +2 -2
- zenml/zen_server/exceptions.py +11 -0
- zenml/zen_server/feature_gate/zenml_cloud_feature_gate.py +1 -1
- zenml/zen_server/jwt.py +9 -9
- zenml/zen_server/routers/artifact_version_endpoints.py +1 -1
- zenml/zen_server/routers/auth_endpoints.py +30 -8
- zenml/zen_server/routers/runs_endpoints.py +0 -28
- zenml/zen_server/routers/stack_components_endpoints.py +1 -1
- zenml/zen_server/routers/workspaces_endpoints.py +1 -1
- zenml/zen_server/template_execution/runner_entrypoint_configuration.py +7 -4
- zenml/zen_server/template_execution/utils.py +8 -63
- zenml/zen_server/utils.py +67 -69
- zenml/zen_server/zen_server_api.py +107 -17
- zenml/zen_stores/base_zen_store.py +4 -51
- zenml/zen_stores/migrations/versions/0.67.0_release.py +23 -0
- zenml/zen_stores/migrations/versions/0.68.0_release.py +23 -0
- zenml/zen_stores/migrations/versions/0.68.1_release.py +23 -0
- zenml/zen_stores/migrations/versions/1d8f30c54477_migrate_to_new_.py +124 -0
- zenml/zen_stores/migrations/versions/c22561cbb3a9_add_artifact_unique_constraints.py +86 -0
- zenml/zen_stores/rest_zen_store.py +325 -147
- zenml/zen_stores/schemas/api_key_schemas.py +9 -4
- zenml/zen_stores/schemas/artifact_schemas.py +21 -2
- zenml/zen_stores/schemas/artifact_visualization_schemas.py +1 -1
- zenml/zen_stores/schemas/component_schemas.py +49 -6
- zenml/zen_stores/schemas/device_schemas.py +9 -4
- zenml/zen_stores/schemas/flavor_schemas.py +1 -1
- zenml/zen_stores/schemas/model_schemas.py +1 -1
- zenml/zen_stores/schemas/pipeline_run_schemas.py +12 -4
- zenml/zen_stores/schemas/service_schemas.py +1 -1
- zenml/zen_stores/schemas/step_run_schemas.py +3 -3
- zenml/zen_stores/schemas/trigger_schemas.py +1 -1
- zenml/zen_stores/sql_zen_store.py +422 -145
- zenml/zen_stores/template_utils.py +3 -1
- {zenml_nightly-0.66.0.dev20240927.dist-info → zenml_nightly-0.68.1.dev20241102.dist-info}/METADATA +20 -18
- {zenml_nightly-0.66.0.dev20240927.dist-info → zenml_nightly-0.68.1.dev20241102.dist-info}/RECORD +344 -506
- {zenml_nightly-0.66.0.dev20240927.dist-info → zenml_nightly-0.68.1.dev20241102.dist-info}/WHEEL +1 -1
- zenml/api.py +0 -60
- zenml/cli/stack_recipes.py +0 -469
- zenml/lineage_graph/__init__.py +0 -34
- zenml/lineage_graph/lineage_graph.py +0 -244
- zenml/lineage_graph/node/__init__.py +0 -32
- zenml/lineage_graph/node/artifact_node.py +0 -51
- zenml/lineage_graph/node/step_node.py +0 -41
- zenml/model/model_version.py +0 -38
- zenml/new/pipelines/code_archive.py +0 -157
- zenml/new/pipelines/pipeline_decorator.py +0 -118
- zenml/new/steps/step_decorator.py +0 -176
- zenml/pipelines/base_pipeline.py +0 -273
- zenml/post_execution/__init__.py +0 -30
- zenml/post_execution/pipeline.py +0 -55
- zenml/post_execution/pipeline_run.py +0 -55
- zenml/services/terraform/__init__.py +0 -14
- zenml/services/terraform/terraform_service.py +0 -441
- zenml/steps/external_artifact.py +0 -26
- zenml/steps/step_environment.py +0 -108
- zenml/steps/step_output.py +0 -36
- zenml/utils/mlstacks_utils.py +0 -635
- zenml/utils/terraform_utils.py +0 -43
- zenml/zen_server/dashboard/assets/@radix-DnFH_oo1.js +0 -85
- zenml/zen_server/dashboard/assets/@react-router-APVeuk-U.js +0 -29
- zenml/zen_server/dashboard/assets/@reactflow-ytavUpwh.js +0 -17
- zenml/zen_server/dashboard/assets/@tanstack-QbMbTrh5.js +0 -22
- zenml/zen_server/dashboard/assets/ComponentBadge-gKR1OIwG.js +0 -1
- zenml/zen_server/dashboard/assets/ExecutionStatus-D6r6aK8J.js +0 -1
- zenml/zen_server/dashboard/assets/MarkdownVisualization-DS05sfBm.js +0 -14
- zenml/zen_server/dashboard/assets/SearchField-BzmfxS0L.js +0 -1
- zenml/zen_server/dashboard/assets/all-pipeline-runs-query-BA3R2Sey.js +0 -1
- zenml/zen_server/dashboard/assets/delete-run-CP0pcJ3U.js +0 -1
- zenml/zen_server/dashboard/assets/index-BhJ6ZJxv.css +0 -1
- zenml/zen_server/dashboard/assets/index-Ci0nJ8EZ.js +0 -55
- zenml/zen_server/dashboard/assets/index.esm-BE1uqCX5.js +0 -1
- zenml/zen_server/dashboard/assets/inter-cyrillic-400-normal-Df6ckaLK.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-400-normal-JrS_4yms.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-500-normal-BRrLR67x.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-500-normal-DskEQOpE.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-600-normal-DDpWG8g5.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-600-normal-iz1--dBq.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-400-normal-CzG7Kr3z.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-400-normal-tyfMZHQw.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-500-normal-DOnSzjnx.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-500-normal-Xebo2OyJ.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-600-normal-DpA2xaRd.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-600-normal-KAwcVx6H.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-400-normal-DQXyrmoy.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-400-normal-DvIPHDQ7.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-500-normal-BjpBGs91.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-500-normal-CmOavsDc.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-600-normal-B-l8Lzzd.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-600-normal-BLZsI-P3.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-400-normal-CIdlr5YK.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-400-normal-_Rr29XE2.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-500-normal-2pdUafRD.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-500-normal-Dtavx3qw.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-600-normal-BmtRFZgT.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-600-normal-CkBLDEl_.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-400-normal-BT1H-PT_.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-400-normal-Cdi8t5Mu.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-500-normal-D4I8BKCx.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-500-normal-kWhwEdDH.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-600-normal-B2Ssfs8e.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-600-normal-Dbvh0wvx.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-400-normal-8tIzm-yw.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-400-normal-D3W-OpO-.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-500-normal-B9u8Q_zH.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-500-normal-SuUkSNTU.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-600-normal-Dg0Bk0Yr.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-600-normal-ao35dkSb.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-400-normal-Cnt0N5Vm.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-400-normal-DIOGfGLL.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-500-normal-0i6yoQMg.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-500-normal-5IkPJ6Nk.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-600-normal-BQ_dbMbg.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-600-normal-DjnxGF-L.woff2 +0 -0
- zenml/zen_server/dashboard/assets/not-found-DbjllLY_.js +0 -1
- zenml/zen_server/dashboard/assets/page-B1n7_W7z.js +0 -1
- zenml/zen_server/dashboard/assets/page-BZZhLo2u.js +0 -1
- zenml/zen_server/dashboard/assets/page-Bbf_oBjn.js +0 -1
- zenml/zen_server/dashboard/assets/page-BjjuBvZG.js +0 -9
- zenml/zen_server/dashboard/assets/page-CHaQkFK5.js +0 -1
- zenml/zen_server/dashboard/assets/page-CS0SYFK8.js +0 -1
- zenml/zen_server/dashboard/assets/page-DGM1CbYT.js +0 -2
- zenml/zen_server/dashboard/assets/page-DOmIZ2ra.js +0 -1
- zenml/zen_server/dashboard/assets/page-DYVmJ9_w.js +0 -3
- zenml/zen_server/dashboard/assets/page-Dwow2doB.js +0 -1
- zenml/zen_server/dashboard/assets/stack-detail-query-DQcyzG-2.js +0 -1
- zenml/zen_server/dashboard/assets/zod-uFd1wBcd.js +0 -1
- zenml/zen_server/dashboard_legacy/_redirects +0 -1
- zenml/zen_server/dashboard_legacy/asset-manifest.json +0 -131
- zenml/zen_server/dashboard_legacy/favicon.ico +0 -0
- zenml/zen_server/dashboard_legacy/index.html +0 -1
- zenml/zen_server/dashboard_legacy/manifest.json +0 -25
- zenml/zen_server/dashboard_legacy/precache-manifest.6d320abb70db612019dda6c4948e7a90.js +0 -462
- zenml/zen_server/dashboard_legacy/robots.txt +0 -2
- zenml/zen_server/dashboard_legacy/service-worker.js +0 -39
- zenml/zen_server/dashboard_legacy/static/css/2.5b37d44a.chunk.css +0 -16
- zenml/zen_server/dashboard_legacy/static/css/2.5b37d44a.chunk.css.map +0 -1
- zenml/zen_server/dashboard_legacy/static/css/main.e79dff04.chunk.css +0 -2
- zenml/zen_server/dashboard_legacy/static/css/main.e79dff04.chunk.css.map +0 -1
- zenml/zen_server/dashboard_legacy/static/js/2.7934458d.chunk.js +0 -3
- zenml/zen_server/dashboard_legacy/static/js/2.7934458d.chunk.js.LICENSE.txt +0 -95
- zenml/zen_server/dashboard_legacy/static/js/2.7934458d.chunk.js.map +0 -1
- zenml/zen_server/dashboard_legacy/static/js/main.fa9299d5.chunk.js +0 -2
- zenml/zen_server/dashboard_legacy/static/js/main.fa9299d5.chunk.js.map +0 -1
- zenml/zen_server/dashboard_legacy/static/js/runtime-main.bfca2edd.js +0 -2
- zenml/zen_server/dashboard_legacy/static/js/runtime-main.bfca2edd.js.map +0 -1
- zenml/zen_server/dashboard_legacy/static/media/AlertTriangle.28aee535.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/ArrowSquareOut.abfb9bc7.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/Back.86c23a22.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/BookOpen.5cb101ff.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/BoundingBox.1eb98717.svg +0 -10
- zenml/zen_server/dashboard_legacy/static/media/Burger.9b1c67d7.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Cached.2381fb8d.svg +0 -1
- zenml/zen_server/dashboard_legacy/static/media/Calendar.356e11c7.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/ChartBarHorizontal.0247447b.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/ChartLine.0d79e18d.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/ChatDots.2e1c9211.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/Check.dad6beb2.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/CheckCircleFilled.c19566d0.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Checkbox.af50e31e.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/ChevronDown.f860ce32.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/ChevronDownLight.6642d756.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/ChevronLeft.f6edfcdb.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/CircleCheck.f98fd6ca.svg +0 -1
- zenml/zen_server/dashboard_legacy/static/media/Clock.ffc9de95.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Close.74e9efbc.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/CloseWithBorder.6960930a.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/CloseWithoutBorder.cd6f71df.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/CloudArrowUp.0aecb235.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/Code.ef0f33b5.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Config.0be63f8a.svg +0 -1
- zenml/zen_server/dashboard_legacy/static/media/Connector.9fd46ef1.svg +0 -10
- zenml/zen_server/dashboard_legacy/static/media/Copy.36e2112a.svg +0 -1
- zenml/zen_server/dashboard_legacy/static/media/Dashboard.d05787e0.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Data.b1c3b5f8.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Delete.3c361b28.svg +0 -8
- zenml/zen_server/dashboard_legacy/static/media/Docs.7541d478.svg +0 -7
- zenml/zen_server/dashboard_legacy/static/media/Download.fba04d87.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/Edit.490eb294.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/EmptyRightArrow.23749d01.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Example.6396cd37.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/Extension.1394cd4a.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Eye.d9e4ee62.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/Failed.0213c1a0.svg +0 -1
- zenml/zen_server/dashboard_legacy/static/media/FileText.1f15bacd.svg +0 -7
- zenml/zen_server/dashboard_legacy/static/media/Filter.ab6b9c0d.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Folders.12b29887.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/FunnelFill.6df4c143.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/GitCommit.7dd9c2aa.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/GitHub_Logo.cefc2023.png +0 -0
- zenml/zen_server/dashboard_legacy/static/media/Graph.2c63a892.svg +0 -11
- zenml/zen_server/dashboard_legacy/static/media/History.08329240.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Home.0843b0d5.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/ImageBuilder.ea762d9c.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/InProgress.304a0edc.svg +0 -1
- zenml/zen_server/dashboard_legacy/static/media/Info.9fe10c5c.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/KeyboardReturn.491afbe3.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Link.72bbb55d.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/Lock.30f5e1fe.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/Lock2.a769ea52.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/LockKey.92f21621.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/Logs.8bf4d005.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/MinusCircle.4188f418.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/ModelRegistry.f0de050a.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/MultiUser.a2ba7c67.svg +0 -10
- zenml/zen_server/dashboard_legacy/static/media/PaginationFirst.92628634.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/PaginationLast.00d3c732.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/PaginationNext.86158845.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/PaginationPrev.60c18a88.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Pen.f2d831d4.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/PhotoCamera.179d6d4c.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Pipeline.30d298b0.svg +0 -7
- zenml/zen_server/dashboard_legacy/static/media/Plus.5aa1c16b.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/PlusCircle.92d860dd.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/Repositories.71a36b8c.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/RightArrow.f30d3871.svg +0 -29
- zenml/zen_server/dashboard_legacy/static/media/Rocket.63bf7b9d.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/RocketLaunch.1bff2b59.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/Rubik-Medium.c87313aa.ttf +0 -0
- zenml/zen_server/dashboard_legacy/static/media/Rubik-Regular.b3d0902b.ttf +0 -0
- zenml/zen_server/dashboard_legacy/static/media/Run.daec4fb2.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/Search.d1afcce5.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/Settings.59ca73ae.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/Share2.46c3ff66.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/SignOut.6aa718c5.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/SimplePlus.5cf7ec20.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/SingleUser.bef3a095.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/SourceCodePro-Regular.b484b32f.ttf +0 -0
- zenml/zen_server/dashboard_legacy/static/media/Stack.19b604ac.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/StackComponent.b1ba90b5.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/Star.f0c25022.svg +0 -9
- zenml/zen_server/dashboard_legacy/static/media/StarOutline.94ca8cd9.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Storefront.4b4796fe.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Stream.543e3039.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/SupportAgent.510ddf1f.svg +0 -8
- zenml/zen_server/dashboard_legacy/static/media/Table.77033750.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/Tool.d5785486.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/UserPlus.741a99d7.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/Verified.0625b2a0.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/addNew.4fb6c939.svg +0 -8
- zenml/zen_server/dashboard_legacy/static/media/arrowClose.cbd53f3f.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/arrowOpen.6ceef0af.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/check_small.30bc0138.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/circleArrowSideClose.98d6013e.svg +0 -18
- zenml/zen_server/dashboard_legacy/static/media/circleArrowSideOpen.63653df6.svg +0 -18
- zenml/zen_server/dashboard_legacy/static/media/image.104fd14b.png +0 -0
- zenml/zen_server/dashboard_legacy/static/media/imageAddIcon.e83004a9.svg +0 -7
- zenml/zen_server/dashboard_legacy/static/media/logo.93333e5c.svg +0 -1
- zenml/zen_server/dashboard_legacy/static/media/logo_small.4204397d.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/logo_white.d4b4414e.svg +0 -20
- zenml/zen_server/dashboard_legacy/static/media/notConnected.5e2c8ea7.svg +0 -8
- zenml/zen_server/dashboard_legacy/static/media/plugin-fallback.72c294e6.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/share.bcd998b0.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/stars.08a9b19a.svg +0 -8
- zenml/zen_server/deploy/terraform/__init__.py +0 -41
- zenml/zen_server/deploy/terraform/providers/aws_provider.py +0 -61
- zenml/zen_server/deploy/terraform/providers/azure_provider.py +0 -59
- zenml/zen_server/deploy/terraform/providers/gcp_provider.py +0 -59
- zenml/zen_server/deploy/terraform/providers/terraform_provider.py +0 -331
- zenml/zen_server/deploy/terraform/recipes/aws/.gitignore +0 -8
- zenml/zen_server/deploy/terraform/recipes/aws/helm.tf +0 -20
- zenml/zen_server/deploy/terraform/recipes/aws/ingress.tf +0 -30
- zenml/zen_server/deploy/terraform/recipes/aws/outputs.tf +0 -7
- zenml/zen_server/deploy/terraform/recipes/aws/printf.cmd +0 -2
- zenml/zen_server/deploy/terraform/recipes/aws/sql.tf +0 -62
- zenml/zen_server/deploy/terraform/recipes/aws/terraform.tf +0 -44
- zenml/zen_server/deploy/terraform/recipes/aws/variables.tf +0 -167
- zenml/zen_server/deploy/terraform/recipes/aws/vpc.tf +0 -47
- zenml/zen_server/deploy/terraform/recipes/aws/zen_server.tf +0 -103
- zenml/zen_server/deploy/terraform/recipes/azure/.gitignore +0 -8
- zenml/zen_server/deploy/terraform/recipes/azure/helm.tf +0 -20
- zenml/zen_server/deploy/terraform/recipes/azure/ingress.tf +0 -30
- zenml/zen_server/deploy/terraform/recipes/azure/key_vault.tf +0 -73
- zenml/zen_server/deploy/terraform/recipes/azure/outputs.tf +0 -7
- zenml/zen_server/deploy/terraform/recipes/azure/printf.cmd +0 -2
- zenml/zen_server/deploy/terraform/recipes/azure/rg.tf +0 -36
- zenml/zen_server/deploy/terraform/recipes/azure/sql.tf +0 -65
- zenml/zen_server/deploy/terraform/recipes/azure/terraform.tf +0 -52
- zenml/zen_server/deploy/terraform/recipes/azure/variables.tf +0 -176
- zenml/zen_server/deploy/terraform/recipes/azure/zen_server.tf +0 -103
- zenml/zen_server/deploy/terraform/recipes/gcp/.gitignore +0 -8
- zenml/zen_server/deploy/terraform/recipes/gcp/helm.tf +0 -20
- zenml/zen_server/deploy/terraform/recipes/gcp/ingress.tf +0 -30
- zenml/zen_server/deploy/terraform/recipes/gcp/outputs.tf +0 -7
- zenml/zen_server/deploy/terraform/recipes/gcp/printf.cmd +0 -2
- zenml/zen_server/deploy/terraform/recipes/gcp/sql.tf +0 -64
- zenml/zen_server/deploy/terraform/recipes/gcp/terraform.tf +0 -44
- zenml/zen_server/deploy/terraform/recipes/gcp/variables.tf +0 -171
- zenml/zen_server/deploy/terraform/recipes/gcp/zen_server.tf +0 -114
- zenml/zen_server/deploy/terraform/terraform_zen_server.py +0 -246
- /zenml/{new/pipelines → pipelines}/build_utils.py +0 -0
- /zenml/{new/steps → steps}/decorated_step.py +0 -0
- {zenml_nightly-0.66.0.dev20240927.dist-info → zenml_nightly-0.68.1.dev20241102.dist-info}/LICENSE +0 -0
- {zenml_nightly-0.66.0.dev20240927.dist-info → zenml_nightly-0.68.1.dev20241102.dist-info}/entry_points.txt +0 -0
@@ -21,19 +21,27 @@ from zenml.enums import ServerProviderType
|
|
21
21
|
from zenml.services.service_status import ServiceState
|
22
22
|
|
23
23
|
|
24
|
-
class
|
25
|
-
"""Generic server deployment configuration.
|
24
|
+
class LocalServerDeploymentConfig(BaseModel):
|
25
|
+
"""Generic local server deployment configuration.
|
26
26
|
|
27
|
-
All server deployment configurations should inherit from this class
|
28
|
-
handle extra attributes as provider specific attributes.
|
27
|
+
All local server deployment configurations should inherit from this class
|
28
|
+
and handle extra attributes as provider specific attributes.
|
29
29
|
|
30
30
|
Attributes:
|
31
|
-
name: Name of the server deployment.
|
32
31
|
provider: The server provider type.
|
33
32
|
"""
|
34
33
|
|
35
|
-
name: str
|
36
34
|
provider: ServerProviderType
|
35
|
+
|
36
|
+
@property
|
37
|
+
def url(self) -> Optional[str]:
|
38
|
+
"""Get the configured server URL.
|
39
|
+
|
40
|
+
Returns:
|
41
|
+
The configured server URL.
|
42
|
+
"""
|
43
|
+
return None
|
44
|
+
|
37
45
|
model_config = ConfigDict(
|
38
46
|
# Validate attributes when assigning them. We need to set this in order
|
39
47
|
# to have a mix of mutable and immutable attributes
|
@@ -44,13 +52,13 @@ class ServerDeploymentConfig(BaseModel):
|
|
44
52
|
)
|
45
53
|
|
46
54
|
|
47
|
-
class
|
48
|
-
"""
|
55
|
+
class LocalServerDeploymentStatus(BaseModel):
|
56
|
+
"""Local server deployment status.
|
49
57
|
|
50
58
|
Ideally this should convey the following information:
|
51
59
|
|
52
60
|
* whether the server's deployment is managed by this client (i.e. if
|
53
|
-
the server was deployed with `zenml
|
61
|
+
the server was deployed with `zenml login --local`)
|
54
62
|
* for a managed deployment, the status of the deployment/tear-down, e.g.
|
55
63
|
not deployed, deploying, running, deleting, deployment timeout/error,
|
56
64
|
tear-down timeout/error etc.
|
@@ -72,7 +80,7 @@ class ServerDeploymentStatus(BaseModel):
|
|
72
80
|
ca_crt: Optional[str] = None
|
73
81
|
|
74
82
|
|
75
|
-
class
|
83
|
+
class LocalServerDeployment(BaseModel):
|
76
84
|
"""Server deployment.
|
77
85
|
|
78
86
|
Attributes:
|
@@ -80,8 +88,8 @@ class ServerDeployment(BaseModel):
|
|
80
88
|
status: The server deployment status.
|
81
89
|
"""
|
82
90
|
|
83
|
-
config:
|
84
|
-
status: Optional[
|
91
|
+
config: LocalServerDeploymentConfig
|
92
|
+
status: Optional[LocalServerDeploymentStatus] = None
|
85
93
|
|
86
94
|
@property
|
87
95
|
def is_running(self) -> bool:
|
@@ -14,7 +14,7 @@
|
|
14
14
|
"""Zen Server docker deployer implementation."""
|
15
15
|
|
16
16
|
import shutil
|
17
|
-
from typing import ClassVar,
|
17
|
+
from typing import ClassVar, Optional, Tuple, Type, cast
|
18
18
|
from uuid import uuid4
|
19
19
|
|
20
20
|
from zenml.enums import ServerProviderType
|
@@ -31,7 +31,7 @@ from zenml.services import (
|
|
31
31
|
ServiceEndpointProtocol,
|
32
32
|
)
|
33
33
|
from zenml.zen_server.deploy.base_provider import BaseServerProvider
|
34
|
-
from zenml.zen_server.deploy.deployment import
|
34
|
+
from zenml.zen_server.deploy.deployment import LocalServerDeploymentConfig
|
35
35
|
from zenml.zen_server.deploy.docker.docker_zen_server import (
|
36
36
|
DOCKER_ZENML_SERVER_DEFAULT_TIMEOUT,
|
37
37
|
ZEN_SERVER_HEALTHCHECK_URL_PATH,
|
@@ -47,14 +47,14 @@ class DockerServerProvider(BaseServerProvider):
|
|
47
47
|
"""Docker ZenML server provider."""
|
48
48
|
|
49
49
|
TYPE: ClassVar[ServerProviderType] = ServerProviderType.DOCKER
|
50
|
-
CONFIG_TYPE: ClassVar[Type[
|
50
|
+
CONFIG_TYPE: ClassVar[Type[LocalServerDeploymentConfig]] = (
|
51
51
|
DockerServerDeploymentConfig
|
52
52
|
)
|
53
53
|
|
54
54
|
@classmethod
|
55
55
|
def _get_service_configuration(
|
56
56
|
cls,
|
57
|
-
server_config:
|
57
|
+
server_config: LocalServerDeploymentConfig,
|
58
58
|
) -> Tuple[
|
59
59
|
ServiceConfig,
|
60
60
|
ServiceEndpointConfig,
|
@@ -75,7 +75,7 @@ class DockerServerProvider(BaseServerProvider):
|
|
75
75
|
root_runtime_path=DockerZenServer.config_path(),
|
76
76
|
singleton=True,
|
77
77
|
image=server_config.image,
|
78
|
-
name=
|
78
|
+
name=ServerProviderType.DOCKER.value,
|
79
79
|
server=server_config,
|
80
80
|
),
|
81
81
|
ContainerServiceEndpointConfig(
|
@@ -91,7 +91,7 @@ class DockerServerProvider(BaseServerProvider):
|
|
91
91
|
|
92
92
|
def _create_service(
|
93
93
|
self,
|
94
|
-
config:
|
94
|
+
config: LocalServerDeploymentConfig,
|
95
95
|
timeout: Optional[int] = None,
|
96
96
|
) -> BaseService:
|
97
97
|
"""Create, start and return the docker ZenML server deployment service.
|
@@ -142,7 +142,7 @@ class DockerServerProvider(BaseServerProvider):
|
|
142
142
|
def _update_service(
|
143
143
|
self,
|
144
144
|
service: BaseService,
|
145
|
-
config:
|
145
|
+
config: LocalServerDeploymentConfig,
|
146
146
|
timeout: Optional[int] = None,
|
147
147
|
) -> BaseService:
|
148
148
|
"""Update the docker ZenML server deployment service.
|
@@ -244,12 +244,9 @@ class DockerServerProvider(BaseServerProvider):
|
|
244
244
|
service.stop(timeout)
|
245
245
|
shutil.rmtree(DockerZenServer.config_path())
|
246
246
|
|
247
|
-
def _get_service(self
|
247
|
+
def _get_service(self) -> BaseService:
|
248
248
|
"""Get the docker ZenML server deployment service.
|
249
249
|
|
250
|
-
Args:
|
251
|
-
server_name: The server deployment name.
|
252
|
-
|
253
250
|
Returns:
|
254
251
|
The service instance.
|
255
252
|
|
@@ -260,27 +257,11 @@ class DockerServerProvider(BaseServerProvider):
|
|
260
257
|
if service is None:
|
261
258
|
raise KeyError("The docker ZenML server is not deployed.")
|
262
259
|
|
263
|
-
if service.config.name != server_name:
|
264
|
-
raise KeyError(
|
265
|
-
"The docker ZenML server is deployed but with a different name."
|
266
|
-
)
|
267
|
-
|
268
260
|
return service
|
269
261
|
|
270
|
-
def _list_services(self) -> List[BaseService]:
|
271
|
-
"""Get all service instances for all deployed ZenML servers.
|
272
|
-
|
273
|
-
Returns:
|
274
|
-
A list of service instances.
|
275
|
-
"""
|
276
|
-
service = DockerZenServer.get_service()
|
277
|
-
if service:
|
278
|
-
return [service]
|
279
|
-
return []
|
280
|
-
|
281
262
|
def _get_deployment_config(
|
282
263
|
self, service: BaseService
|
283
|
-
) ->
|
264
|
+
) -> LocalServerDeploymentConfig:
|
284
265
|
"""Recreate the server deployment configuration from a service instance.
|
285
266
|
|
286
267
|
Args:
|
@@ -22,18 +22,20 @@ import zenml
|
|
22
22
|
from zenml.config.global_config import GlobalConfiguration
|
23
23
|
from zenml.config.store_config import StoreConfiguration
|
24
24
|
from zenml.constants import (
|
25
|
-
|
25
|
+
DEFAULT_LOCAL_SERVICE_IP_ADDRESS,
|
26
26
|
ENV_ZENML_ANALYTICS_OPT_IN,
|
27
27
|
ENV_ZENML_CONFIG_PATH,
|
28
28
|
ENV_ZENML_DISABLE_DATABASE_MIGRATION,
|
29
29
|
ENV_ZENML_LOCAL_STORES_PATH,
|
30
|
+
ENV_ZENML_SERVER,
|
31
|
+
ENV_ZENML_SERVER_AUTH_SCHEME,
|
30
32
|
ENV_ZENML_SERVER_AUTO_ACTIVATE,
|
31
33
|
ENV_ZENML_SERVER_DEPLOYMENT_TYPE,
|
32
|
-
|
34
|
+
ENV_ZENML_USER_ID,
|
33
35
|
LOCAL_STORES_DIRECTORY_NAME,
|
34
36
|
ZEN_SERVER_ENTRYPOINT,
|
35
37
|
)
|
36
|
-
from zenml.enums import StoreType
|
38
|
+
from zenml.enums import AuthScheme, StoreType
|
37
39
|
from zenml.logger import get_logger
|
38
40
|
from zenml.models import ServerDeploymentType
|
39
41
|
from zenml.services import (
|
@@ -48,7 +50,7 @@ from zenml.services.container.container_service import (
|
|
48
50
|
SERVICE_CONTAINER_PATH,
|
49
51
|
)
|
50
52
|
from zenml.utils.io_utils import get_global_config_directory
|
51
|
-
from zenml.zen_server.deploy.deployment import
|
53
|
+
from zenml.zen_server.deploy.deployment import LocalServerDeploymentConfig
|
52
54
|
|
53
55
|
logger = get_logger(__name__)
|
54
56
|
|
@@ -59,7 +61,7 @@ DOCKER_ZENML_SERVER_DEFAULT_IMAGE = (
|
|
59
61
|
DOCKER_ZENML_SERVER_DEFAULT_TIMEOUT = 60
|
60
62
|
|
61
63
|
|
62
|
-
class DockerServerDeploymentConfig(
|
64
|
+
class DockerServerDeploymentConfig(LocalServerDeploymentConfig):
|
63
65
|
"""Docker server deployment configuration.
|
64
66
|
|
65
67
|
Attributes:
|
@@ -70,7 +72,15 @@ class DockerServerDeploymentConfig(ServerDeploymentConfig):
|
|
70
72
|
port: int = 8238
|
71
73
|
image: str = DOCKER_ZENML_SERVER_DEFAULT_IMAGE
|
72
74
|
store: Optional[StoreConfiguration] = None
|
73
|
-
|
75
|
+
|
76
|
+
@property
|
77
|
+
def url(self) -> Optional[str]:
|
78
|
+
"""Get the configured server URL.
|
79
|
+
|
80
|
+
Returns:
|
81
|
+
The configured server URL.
|
82
|
+
"""
|
83
|
+
return f"http://{DEFAULT_LOCAL_SERVICE_IP_ADDRESS}:{self.port}"
|
74
84
|
|
75
85
|
model_config = ConfigDict(extra="forbid")
|
76
86
|
|
@@ -158,12 +168,15 @@ class DockerZenServer(ContainerService):
|
|
158
168
|
gc = GlobalConfiguration()
|
159
169
|
|
160
170
|
cmd, env = super()._get_container_cmd()
|
171
|
+
env[ENV_ZENML_SERVER] = "true"
|
161
172
|
env[ENV_ZENML_CONFIG_PATH] = os.path.join(
|
162
173
|
SERVICE_CONTAINER_PATH,
|
163
174
|
SERVICE_CONTAINER_GLOBAL_CONFIG_DIR,
|
164
175
|
)
|
176
|
+
env[ENV_ZENML_SERVER_AUTH_SCHEME] = AuthScheme.NO_AUTH.value
|
165
177
|
env[ENV_ZENML_SERVER_DEPLOYMENT_TYPE] = ServerDeploymentType.DOCKER
|
166
178
|
env[ENV_ZENML_ANALYTICS_OPT_IN] = str(gc.analytics_opt_in)
|
179
|
+
env[ENV_ZENML_USER_ID] = str(gc.user_id)
|
167
180
|
|
168
181
|
# Set the local stores path to the same path used by the client (mounted
|
169
182
|
# in the container by the super class). This ensures that the server's
|
@@ -174,9 +187,6 @@ class DockerZenServer(ContainerService):
|
|
174
187
|
LOCAL_STORES_DIRECTORY_NAME,
|
175
188
|
)
|
176
189
|
env[ENV_ZENML_DISABLE_DATABASE_MIGRATION] = "True"
|
177
|
-
env[ENV_ZENML_SERVER_USE_LEGACY_DASHBOARD] = str(
|
178
|
-
self.config.server.use_legacy_dashboard
|
179
|
-
)
|
180
190
|
env[ENV_ZENML_SERVER_AUTO_ACTIVATE] = "True"
|
181
191
|
|
182
192
|
return cmd, env
|
@@ -20,8 +20,8 @@ ZenML is an open-source MLOps framework designed to help you create robust, main
|
|
20
20
|
To install the ZenML chart directly from Amazon ECR, use the following command:
|
21
21
|
|
22
22
|
```bash
|
23
|
-
# example command for version 0.
|
24
|
-
helm install my-zenml oci://public.ecr.aws/zenml/zenml --version 0.
|
23
|
+
# example command for version 0.68.1
|
24
|
+
helm install my-zenml oci://public.ecr.aws/zenml/zenml --version 0.68.1
|
25
25
|
```
|
26
26
|
|
27
27
|
Note: Ensure you have OCI support enabled in your Helm client and that you are authenticated with Amazon ECR.
|
zenml/zen_server/exceptions.py
CHANGED
@@ -20,6 +20,7 @@ from pydantic import BaseModel
|
|
20
20
|
|
21
21
|
from zenml.exceptions import (
|
22
22
|
AuthorizationException,
|
23
|
+
CredentialsNotValid,
|
23
24
|
DoesNotExistException,
|
24
25
|
DuplicateRunNameError,
|
25
26
|
EntityExistsError,
|
@@ -78,6 +79,7 @@ REST_API_EXCEPTIONS: List[Tuple[Type[Exception], int]] = [
|
|
78
79
|
# 403 Forbidden
|
79
80
|
(IllegalOperationError, 403),
|
80
81
|
# 401 Unauthorized
|
82
|
+
(CredentialsNotValid, 401),
|
81
83
|
(AuthorizationException, 401),
|
82
84
|
# 402 Payment required
|
83
85
|
(SubscriptionUpgradeRequiredError, 402),
|
@@ -253,4 +255,13 @@ def exception_from_response(
|
|
253
255
|
|
254
256
|
exception = default_exc
|
255
257
|
|
258
|
+
# There is one special case where we want to return a specific exception:
|
259
|
+
# 401 Unauthorized exceptions thrown directly by FastAPI in the course of
|
260
|
+
# authentication are interpreted as AuthorizationException, but we want to
|
261
|
+
# return CredentialsNotValid instead.
|
262
|
+
if response.status_code == 401:
|
263
|
+
if not isinstance(exception(), CredentialsNotValid):
|
264
|
+
if response.headers.get("WWW-Authenticate"):
|
265
|
+
return CredentialsNotValid(exc_msg)
|
266
|
+
|
256
267
|
return exception(exc_msg)
|
@@ -110,7 +110,7 @@ class ZenMLCloudFeatureGateInterface(FeatureGateInterface):
|
|
110
110
|
feature=resource,
|
111
111
|
total=1 if not is_decrement else -1,
|
112
112
|
metadata={
|
113
|
-
"tenant_id": str(server_config.
|
113
|
+
"tenant_id": str(server_config.get_external_server_id()),
|
114
114
|
"resource_id": str(resource_id),
|
115
115
|
},
|
116
116
|
).model_dump()
|
zenml/zen_server/jwt.py
CHANGED
@@ -25,7 +25,7 @@ from uuid import UUID
|
|
25
25
|
import jwt
|
26
26
|
from pydantic import BaseModel
|
27
27
|
|
28
|
-
from zenml.exceptions import
|
28
|
+
from zenml.exceptions import CredentialsNotValid
|
29
29
|
from zenml.logger import get_logger
|
30
30
|
from zenml.zen_server.utils import server_config
|
31
31
|
|
@@ -71,7 +71,7 @@ class JWTToken(BaseModel):
|
|
71
71
|
The decoded JWT access token.
|
72
72
|
|
73
73
|
Raises:
|
74
|
-
|
74
|
+
CredentialsNotValid: If the token is invalid.
|
75
75
|
"""
|
76
76
|
config = server_config()
|
77
77
|
|
@@ -87,18 +87,18 @@ class JWTToken(BaseModel):
|
|
87
87
|
)
|
88
88
|
claims = cast(Dict[str, Any], claims_data)
|
89
89
|
except jwt.PyJWTError as e:
|
90
|
-
raise
|
90
|
+
raise CredentialsNotValid(f"Invalid JWT token: {e}") from e
|
91
91
|
|
92
92
|
subject: str = claims.pop("sub", "")
|
93
93
|
if not subject:
|
94
|
-
raise
|
94
|
+
raise CredentialsNotValid(
|
95
95
|
"Invalid JWT token: the subject claim is missing"
|
96
96
|
)
|
97
97
|
|
98
98
|
try:
|
99
99
|
user_id = UUID(subject)
|
100
100
|
except ValueError:
|
101
|
-
raise
|
101
|
+
raise CredentialsNotValid(
|
102
102
|
"Invalid JWT token: the subject claim is not a valid UUID"
|
103
103
|
)
|
104
104
|
|
@@ -107,7 +107,7 @@ class JWTToken(BaseModel):
|
|
107
107
|
try:
|
108
108
|
device_id = UUID(claims.pop("device_id"))
|
109
109
|
except ValueError:
|
110
|
-
raise
|
110
|
+
raise CredentialsNotValid(
|
111
111
|
"Invalid JWT token: the device_id claim is not a valid "
|
112
112
|
"UUID"
|
113
113
|
)
|
@@ -117,7 +117,7 @@ class JWTToken(BaseModel):
|
|
117
117
|
try:
|
118
118
|
api_key_id = UUID(claims.pop("api_key_id"))
|
119
119
|
except ValueError:
|
120
|
-
raise
|
120
|
+
raise CredentialsNotValid(
|
121
121
|
"Invalid JWT token: the api_key_id claim is not a valid "
|
122
122
|
"UUID"
|
123
123
|
)
|
@@ -127,7 +127,7 @@ class JWTToken(BaseModel):
|
|
127
127
|
try:
|
128
128
|
pipeline_id = UUID(claims.pop("pipeline_id"))
|
129
129
|
except ValueError:
|
130
|
-
raise
|
130
|
+
raise CredentialsNotValid(
|
131
131
|
"Invalid JWT token: the pipeline_id claim is not a valid "
|
132
132
|
"UUID"
|
133
133
|
)
|
@@ -137,7 +137,7 @@ class JWTToken(BaseModel):
|
|
137
137
|
try:
|
138
138
|
schedule_id = UUID(claims.pop("schedule_id"))
|
139
139
|
except ValueError:
|
140
|
-
raise
|
140
|
+
raise CredentialsNotValid(
|
141
141
|
"Invalid JWT token: the schedule_id claim is not a valid "
|
142
142
|
"UUID"
|
143
143
|
)
|
@@ -116,6 +116,8 @@ class OAuthLoginRequestForm:
|
|
116
116
|
Raises:
|
117
117
|
HTTPException: If the request is invalid.
|
118
118
|
"""
|
119
|
+
config = server_config()
|
120
|
+
|
119
121
|
if not grant_type:
|
120
122
|
# Detect the grant type from the form data
|
121
123
|
if username is not None:
|
@@ -124,8 +126,21 @@ class OAuthLoginRequestForm:
|
|
124
126
|
self.grant_type = OAuthGrantTypes.ZENML_API_KEY
|
125
127
|
elif device_code:
|
126
128
|
self.grant_type = OAuthGrantTypes.OAUTH_DEVICE_CODE
|
127
|
-
|
129
|
+
elif config.auth_scheme == AuthScheme.EXTERNAL:
|
128
130
|
self.grant_type = OAuthGrantTypes.ZENML_EXTERNAL
|
131
|
+
elif config.auth_scheme in [
|
132
|
+
AuthScheme.OAUTH2_PASSWORD_BEARER,
|
133
|
+
AuthScheme.NO_AUTH,
|
134
|
+
AuthScheme.HTTP_BASIC,
|
135
|
+
]:
|
136
|
+
# For no auth and basic HTTP auth schemes, we also allow the
|
137
|
+
# password grant type to be used for backwards compatibility
|
138
|
+
self.grant_type = OAuthGrantTypes.OAUTH_PASSWORD
|
139
|
+
else:
|
140
|
+
raise HTTPException(
|
141
|
+
status_code=status.HTTP_400_BAD_REQUEST,
|
142
|
+
detail="Invalid request: grant type is required.",
|
143
|
+
)
|
129
144
|
else:
|
130
145
|
if grant_type not in OAuthGrantTypes.values():
|
131
146
|
logger.info(
|
@@ -137,10 +152,15 @@ class OAuthLoginRequestForm:
|
|
137
152
|
)
|
138
153
|
self.grant_type = OAuthGrantTypes(grant_type)
|
139
154
|
|
140
|
-
config = server_config()
|
141
|
-
|
142
155
|
if self.grant_type == OAuthGrantTypes.OAUTH_PASSWORD:
|
143
|
-
|
156
|
+
# For the no auth and basic HTTP auth schemes, we also allow the
|
157
|
+
# password grant type to be used for compatibility with other
|
158
|
+
# auth schemes
|
159
|
+
if config.auth_scheme not in [
|
160
|
+
AuthScheme.OAUTH2_PASSWORD_BEARER,
|
161
|
+
AuthScheme.NO_AUTH,
|
162
|
+
AuthScheme.HTTP_BASIC,
|
163
|
+
]:
|
144
164
|
logger.info(
|
145
165
|
f"Request with unsupported grant type: {self.grant_type}"
|
146
166
|
)
|
@@ -280,6 +300,7 @@ def token(
|
|
280
300
|
Raises:
|
281
301
|
ValueError: If the grant type is invalid.
|
282
302
|
"""
|
303
|
+
config = server_config()
|
283
304
|
if auth_form_data.grant_type == OAuthGrantTypes.OAUTH_PASSWORD:
|
284
305
|
auth_context = authenticate_credentials(
|
285
306
|
user_name_or_id=auth_form_data.username,
|
@@ -297,8 +318,6 @@ def token(
|
|
297
318
|
)
|
298
319
|
|
299
320
|
elif auth_form_data.grant_type == OAuthGrantTypes.ZENML_EXTERNAL:
|
300
|
-
config = server_config()
|
301
|
-
|
302
321
|
assert config.external_cookie_name is not None
|
303
322
|
assert config.external_login_url is not None
|
304
323
|
|
@@ -399,8 +418,11 @@ def device_authorization(
|
|
399
418
|
config = server_config()
|
400
419
|
store = zen_store()
|
401
420
|
|
402
|
-
|
403
|
-
|
421
|
+
try:
|
422
|
+
# Use this opportunity to delete expired devices
|
423
|
+
store.delete_expired_authorized_devices()
|
424
|
+
except Exception:
|
425
|
+
logger.exception("Failed to delete expired devices")
|
404
426
|
|
405
427
|
# Fetch additional details about the client from the user-agent header
|
406
428
|
user_agent_header = request.headers.get("User-Agent")
|
@@ -20,7 +20,6 @@ from fastapi import APIRouter, Depends, Security
|
|
20
20
|
|
21
21
|
from zenml.constants import (
|
22
22
|
API,
|
23
|
-
GRAPH,
|
24
23
|
PIPELINE_CONFIGURATION,
|
25
24
|
REFRESH,
|
26
25
|
RUNS,
|
@@ -29,7 +28,6 @@ from zenml.constants import (
|
|
29
28
|
VERSION_1,
|
30
29
|
)
|
31
30
|
from zenml.enums import ExecutionStatus, StackComponentType
|
32
|
-
from zenml.lineage_graph.lineage_graph import LineageGraph
|
33
31
|
from zenml.logger import get_logger
|
34
32
|
from zenml.models import (
|
35
33
|
Page,
|
@@ -206,32 +204,6 @@ def delete_run(
|
|
206
204
|
)
|
207
205
|
|
208
206
|
|
209
|
-
@router.get(
|
210
|
-
"/{run_id}" + GRAPH,
|
211
|
-
response_model=LineageGraph,
|
212
|
-
responses={401: error_response, 404: error_response, 422: error_response},
|
213
|
-
)
|
214
|
-
@handle_exceptions
|
215
|
-
def get_run_dag(
|
216
|
-
run_id: UUID,
|
217
|
-
_: AuthContext = Security(authorize),
|
218
|
-
) -> LineageGraph:
|
219
|
-
"""Get the DAG for a given pipeline run.
|
220
|
-
|
221
|
-
Args:
|
222
|
-
run_id: ID of the pipeline run to use to get the DAG.
|
223
|
-
|
224
|
-
Returns:
|
225
|
-
The DAG for a given pipeline run.
|
226
|
-
"""
|
227
|
-
run = verify_permissions_and_get_entity(
|
228
|
-
id=run_id, get_method=zen_store().get_run, hydrate=True
|
229
|
-
)
|
230
|
-
graph = LineageGraph()
|
231
|
-
graph.generate_run_nodes_and_edges(run)
|
232
|
-
return graph
|
233
|
-
|
234
|
-
|
235
207
|
@router.get(
|
236
208
|
"/{run_id}" + STEPS,
|
237
209
|
response_model=Page[StepRunResponse],
|
@@ -141,7 +141,7 @@ def update_stack_component(
|
|
141
141
|
existing_component = zen_store().get_stack_component(component_id)
|
142
142
|
validate_stack_component_config(
|
143
143
|
configuration_dict=component_update.configuration,
|
144
|
-
|
144
|
+
flavor=existing_component.flavor_name,
|
145
145
|
component_type=existing_component.type,
|
146
146
|
zen_store=zen_store(),
|
147
147
|
# We allow custom flavors to fail import on the server side.
|
@@ -453,7 +453,7 @@ def create_stack_component(
|
|
453
453
|
|
454
454
|
validate_stack_component_config(
|
455
455
|
configuration_dict=component.configuration,
|
456
|
-
|
456
|
+
flavor=component.flavor,
|
457
457
|
component_type=component.type,
|
458
458
|
zen_store=zen_store(),
|
459
459
|
# We allow custom flavors to fail import on the server side.
|
@@ -17,9 +17,7 @@ from zenml.client import Client
|
|
17
17
|
from zenml.entrypoints.base_entrypoint_configuration import (
|
18
18
|
BaseEntrypointConfiguration,
|
19
19
|
)
|
20
|
-
from zenml.
|
21
|
-
deploy_pipeline,
|
22
|
-
)
|
20
|
+
from zenml.pipelines.run_utils import deploy_pipeline, get_placeholder_run
|
23
21
|
|
24
22
|
|
25
23
|
class RunnerEntrypointConfiguration(BaseEntrypointConfiguration):
|
@@ -36,4 +34,9 @@ class RunnerEntrypointConfiguration(BaseEntrypointConfiguration):
|
|
36
34
|
stack = Client().active_stack
|
37
35
|
assert deployment.stack and stack.id == deployment.stack.id
|
38
36
|
|
39
|
-
|
37
|
+
placeholder_run = get_placeholder_run(deployment_id=deployment.id)
|
38
|
+
deploy_pipeline(
|
39
|
+
deployment=deployment,
|
40
|
+
stack=stack,
|
41
|
+
placeholder_run=placeholder_run,
|
42
|
+
)
|