zenml-nightly 0.55.0.dev20240124__py3-none-any.whl → 0.72.0.dev20250116__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.
- zenml/VERSION +1 -1
- zenml/__init__.py +9 -12
- zenml/actions/__init__.py +14 -0
- zenml/actions/base_action.py +682 -0
- zenml/actions/pipeline_run/__init__.py +0 -0
- zenml/actions/pipeline_run/pipeline_run_action.py +223 -0
- zenml/analytics/context.py +70 -15
- zenml/analytics/enums.py +21 -17
- zenml/analytics/models.py +1 -0
- zenml/analytics/utils.py +19 -7
- zenml/annotators/base_annotator.py +4 -3
- zenml/artifact_stores/base_artifact_store.py +155 -72
- zenml/artifact_stores/local_artifact_store.py +3 -2
- zenml/artifacts/artifact_config.py +67 -58
- zenml/artifacts/external_artifact.py +24 -39
- zenml/artifacts/external_artifact_config.py +27 -37
- zenml/artifacts/preexisting_data_materializer.py +90 -0
- zenml/artifacts/unmaterialized_artifact.py +2 -12
- zenml/artifacts/utils.py +521 -220
- zenml/cli/__init__.py +1511 -456
- zenml/cli/annotator.py +48 -14
- zenml/cli/artifact.py +22 -4
- zenml/cli/authorized_device.py +1 -0
- zenml/cli/base.py +185 -22
- zenml/cli/code_repository.py +1 -0
- zenml/cli/formatter.py +1 -1
- zenml/cli/integration.py +119 -24
- zenml/cli/login.py +1053 -0
- zenml/cli/model.py +42 -15
- zenml/cli/model_registry.py +1 -2
- zenml/cli/pipeline.py +168 -82
- zenml/cli/secret.py +1 -2
- zenml/cli/served_model.py +56 -26
- zenml/cli/server.py +486 -619
- zenml/cli/service_accounts.py +55 -14
- zenml/cli/service_connectors.py +97 -6
- zenml/cli/stack.py +821 -531
- zenml/cli/stack_components.py +15 -598
- zenml/cli/tag.py +1 -0
- zenml/cli/text_utils.py +36 -2
- zenml/cli/user_management.py +204 -6
- zenml/cli/utils.py +411 -290
- zenml/client.py +1742 -298
- zenml/client_lazy_loader.py +224 -0
- zenml/code_repositories/base_code_repository.py +5 -4
- zenml/code_repositories/git/local_git_repository_context.py +1 -0
- zenml/code_repositories/local_repository_context.py +1 -0
- zenml/config/__init__.py +2 -0
- zenml/config/base_settings.py +6 -6
- zenml/config/build_configuration.py +43 -17
- zenml/config/compiler.py +82 -49
- zenml/config/docker_settings.py +139 -83
- zenml/config/global_config.py +260 -234
- zenml/config/pipeline_configurations.py +32 -11
- zenml/config/pipeline_run_configuration.py +15 -3
- zenml/config/pipeline_spec.py +6 -6
- zenml/config/resource_settings.py +8 -9
- zenml/config/retry_config.py +27 -0
- zenml/config/schedule.py +27 -18
- zenml/config/secret_reference_mixin.py +8 -4
- zenml/config/secrets_store_config.py +16 -24
- zenml/config/server_config.py +434 -51
- zenml/config/settings_resolver.py +2 -1
- zenml/config/source.py +97 -31
- zenml/config/step_configurations.py +83 -39
- zenml/config/step_run_info.py +3 -0
- zenml/config/store_config.py +20 -54
- zenml/config/strict_base_model.py +2 -6
- zenml/console.py +0 -1
- zenml/constants.py +232 -74
- zenml/container_registries/azure_container_registry.py +1 -0
- zenml/container_registries/base_container_registry.py +7 -3
- zenml/container_registries/default_container_registry.py +4 -3
- zenml/container_registries/dockerhub_container_registry.py +1 -0
- zenml/container_registries/gcp_container_registry.py +1 -0
- zenml/container_registries/github_container_registry.py +2 -10
- zenml/data_validators/base_data_validator.py +2 -2
- zenml/entrypoints/base_entrypoint_configuration.py +76 -17
- zenml/entrypoints/pipeline_entrypoint_configuration.py +1 -0
- zenml/entrypoints/step_entrypoint_configuration.py +21 -2
- zenml/enums.py +91 -9
- zenml/environment.py +52 -319
- zenml/{steps/base_parameters.py → event_hub/__init__.py} +5 -7
- zenml/event_hub/base_event_hub.py +196 -0
- zenml/event_hub/event_hub.py +181 -0
- zenml/event_sources/__init__.py +14 -0
- zenml/{lineage_graph/edge.py → event_sources/base_event.py} +5 -7
- zenml/event_sources/base_event_source.py +695 -0
- zenml/event_sources/webhooks/__init__.py +14 -0
- zenml/event_sources/webhooks/base_webhook_event_source.py +231 -0
- zenml/exceptions.py +40 -41
- zenml/feature_stores/base_feature_store.py +4 -6
- zenml/hooks/hook_validators.py +3 -11
- zenml/image_builders/base_image_builder.py +5 -2
- zenml/image_builders/build_context.py +24 -80
- zenml/image_builders/local_image_builder.py +14 -6
- zenml/integrations/__init__.py +16 -4
- zenml/integrations/airflow/__init__.py +3 -5
- zenml/integrations/airflow/flavors/airflow_orchestrator_flavor.py +15 -7
- zenml/integrations/airflow/orchestrators/airflow_orchestrator.py +15 -252
- zenml/integrations/airflow/orchestrators/dag_generator.py +5 -3
- zenml/integrations/argilla/__init__.py +46 -0
- zenml/integrations/argilla/annotators/__init__.py +20 -0
- zenml/integrations/argilla/annotators/argilla_annotator.py +443 -0
- zenml/{post_execution → integrations/argilla/flavors}/__init__.py +9 -13
- zenml/integrations/argilla/flavors/argilla_annotator_flavor.py +150 -0
- zenml/integrations/aws/__init__.py +7 -3
- zenml/integrations/aws/container_registries/aws_container_registry.py +44 -8
- zenml/integrations/aws/flavors/__init__.py +6 -0
- zenml/integrations/aws/flavors/aws_container_registry_flavor.py +3 -2
- zenml/integrations/aws/flavors/aws_image_builder_flavor.py +146 -0
- zenml/integrations/aws/flavors/sagemaker_orchestrator_flavor.py +104 -16
- zenml/integrations/aws/flavors/sagemaker_step_operator_flavor.py +6 -2
- zenml/integrations/aws/image_builders/__init__.py +20 -0
- zenml/integrations/aws/image_builders/aws_image_builder.py +307 -0
- zenml/integrations/aws/orchestrators/sagemaker_orchestrator.py +421 -133
- zenml/integrations/aws/service_connectors/aws_service_connector.py +175 -48
- zenml/integrations/aws/step_operators/sagemaker_step_operator.py +1 -1
- zenml/integrations/azure/__init__.py +14 -5
- zenml/integrations/azure/azureml_utils.py +201 -0
- zenml/integrations/azure/flavors/__init__.py +11 -0
- zenml/integrations/azure/flavors/azureml.py +139 -0
- zenml/integrations/azure/flavors/azureml_orchestrator_flavor.py +166 -0
- zenml/integrations/azure/flavors/azureml_step_operator_flavor.py +71 -18
- zenml/integrations/azure/orchestrators/__init__.py +19 -0
- zenml/integrations/azure/orchestrators/azureml_orchestrator.py +583 -0
- zenml/integrations/azure/orchestrators/azureml_orchestrator_entrypoint_config.py +82 -0
- zenml/integrations/azure/service_connectors/azure_service_connector.py +15 -6
- zenml/integrations/azure/step_operators/azureml_step_operator.py +78 -173
- zenml/integrations/bentoml/__init__.py +1 -1
- zenml/integrations/bentoml/constants.py +1 -1
- zenml/integrations/bentoml/materializers/bentoml_bento_materializer.py +19 -31
- zenml/integrations/bentoml/model_deployers/bentoml_model_deployer.py +128 -239
- 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} +85 -43
- zenml/integrations/bentoml/services/deployment_type.py +23 -0
- zenml/integrations/bentoml/steps/bento_builder.py +2 -0
- zenml/integrations/bentoml/steps/bentoml_deployer.py +97 -47
- zenml/integrations/bitbucket/__init__.py +42 -0
- zenml/integrations/bitbucket/plugins/__init__.py +20 -0
- zenml/integrations/bitbucket/plugins/bitbucket_webhook_event_source_flavor.py +43 -0
- zenml/integrations/bitbucket/plugins/event_sources/__init__.py +0 -0
- zenml/integrations/bitbucket/plugins/event_sources/bitbucket_webhook_event_source.py +486 -0
- zenml/integrations/comet/__init__.py +49 -0
- zenml/integrations/{kserve/services → comet/experiment_trackers}/__init__.py +5 -6
- zenml/integrations/comet/experiment_trackers/comet_experiment_tracker.py +175 -0
- zenml/integrations/comet/flavors/__init__.py +24 -0
- zenml/integrations/comet/flavors/comet_experiment_tracker_flavor.py +129 -0
- zenml/integrations/constants.py +14 -2
- zenml/integrations/databricks/__init__.py +70 -0
- zenml/{lineage_graph → integrations/databricks/flavors}/__init__.py +14 -18
- zenml/integrations/databricks/flavors/databricks_model_deployer_flavor.py +118 -0
- zenml/integrations/databricks/flavors/databricks_orchestrator_flavor.py +174 -0
- zenml/integrations/{kserve → databricks}/model_deployers/__init__.py +5 -5
- zenml/integrations/databricks/model_deployers/databricks_model_deployer.py +249 -0
- zenml/integrations/databricks/orchestrators/__init__.py +20 -0
- zenml/integrations/databricks/orchestrators/databricks_orchestrator.py +501 -0
- zenml/integrations/databricks/orchestrators/databricks_orchestrator_entrypoint_config.py +97 -0
- zenml/integrations/databricks/services/__init__.py +19 -0
- zenml/integrations/databricks/services/databricks_deployment.py +407 -0
- zenml/integrations/{gcp/orchestrators/vertex_scheduler → databricks/utils}/__init__.py +2 -2
- zenml/integrations/databricks/utils/databricks_utils.py +87 -0
- zenml/integrations/deepchecks/__init__.py +30 -10
- zenml/integrations/deepchecks/data_validators/deepchecks_data_validator.py +59 -18
- zenml/integrations/deepchecks/materializers/deepchecks_dataset_materializer.py +3 -1
- zenml/integrations/deepchecks/materializers/deepchecks_results_materializer.py +3 -3
- zenml/integrations/deepchecks/validation_checks.py +62 -35
- zenml/integrations/discord/__init__.py +1 -0
- zenml/integrations/discord/steps/discord_alerter_ask_step.py +1 -0
- zenml/integrations/discord/steps/discord_alerter_post_step.py +1 -0
- zenml/integrations/evidently/__init__.py +22 -4
- zenml/integrations/evidently/column_mapping.py +11 -3
- zenml/integrations/evidently/data_validators/evidently_data_validator.py +24 -6
- zenml/integrations/evidently/metrics.py +7 -8
- zenml/integrations/evidently/tests.py +7 -8
- zenml/integrations/facets/__init__.py +22 -5
- zenml/integrations/facets/models.py +2 -7
- zenml/integrations/feast/__init__.py +19 -3
- zenml/integrations/feast/feature_stores/feast_feature_store.py +13 -32
- zenml/integrations/gcp/__init__.py +6 -6
- zenml/integrations/gcp/artifact_stores/gcp_artifact_store.py +6 -0
- zenml/integrations/gcp/flavors/gcp_artifact_store_flavor.py +1 -0
- zenml/integrations/gcp/flavors/vertex_orchestrator_flavor.py +24 -2
- zenml/integrations/gcp/flavors/vertex_step_operator_flavor.py +14 -1
- zenml/integrations/gcp/google_credentials_mixin.py +1 -1
- zenml/integrations/gcp/orchestrators/vertex_orchestrator.py +519 -296
- zenml/integrations/gcp/service_connectors/gcp_service_connector.py +788 -113
- zenml/integrations/gcp/step_operators/vertex_step_operator.py +9 -1
- zenml/integrations/github/__init__.py +15 -0
- zenml/integrations/github/code_repositories/github_code_repository.py +3 -2
- zenml/integrations/github/plugins/__init__.py +19 -0
- zenml/integrations/github/plugins/event_sources/__init__.py +0 -0
- zenml/integrations/github/plugins/event_sources/github_webhook_event_source.py +510 -0
- zenml/integrations/github/plugins/github_webhook_event_source_flavor.py +43 -0
- zenml/integrations/gitlab/code_repositories/gitlab_code_repository.py +7 -1
- zenml/integrations/great_expectations/__init__.py +22 -10
- zenml/integrations/great_expectations/data_validators/ge_data_validator.py +61 -57
- zenml/integrations/great_expectations/flavors/great_expectations_data_validator_flavor.py +35 -2
- zenml/integrations/great_expectations/ge_store_backend.py +24 -11
- zenml/integrations/great_expectations/materializers/ge_materializer.py +9 -9
- zenml/integrations/great_expectations/utils.py +5 -5
- zenml/integrations/huggingface/__init__.py +52 -1
- zenml/integrations/huggingface/flavors/__init__.py +26 -0
- zenml/integrations/huggingface/flavors/huggingface_model_deployer_flavor.py +130 -0
- zenml/integrations/huggingface/materializers/__init__.py +3 -0
- zenml/integrations/huggingface/materializers/huggingface_datasets_materializer.py +102 -19
- zenml/integrations/huggingface/materializers/huggingface_pt_model_materializer.py +18 -19
- zenml/integrations/huggingface/materializers/huggingface_t5_materializer.py +104 -0
- zenml/integrations/huggingface/materializers/huggingface_tf_model_materializer.py +18 -19
- zenml/integrations/huggingface/materializers/huggingface_tokenizer_materializer.py +13 -15
- zenml/integrations/huggingface/model_deployers/__init__.py +20 -0
- zenml/integrations/huggingface/model_deployers/huggingface_model_deployer.py +247 -0
- zenml/integrations/huggingface/services/__init__.py +19 -0
- zenml/integrations/huggingface/services/huggingface_deployment.py +292 -0
- zenml/integrations/huggingface/steps/__init__.py +21 -0
- zenml/integrations/huggingface/steps/accelerate_runner.py +166 -0
- zenml/integrations/huggingface/steps/huggingface_deployer.py +110 -0
- zenml/integrations/hyperai/__init__.py +53 -0
- zenml/integrations/hyperai/flavors/__init__.py +20 -0
- zenml/integrations/hyperai/flavors/hyperai_orchestrator_flavor.py +170 -0
- zenml/integrations/hyperai/orchestrators/__init__.py +21 -0
- zenml/integrations/hyperai/orchestrators/hyperai_orchestrator.py +510 -0
- zenml/integrations/hyperai/service_connectors/__init__.py +20 -0
- zenml/integrations/hyperai/service_connectors/hyperai_service_connector.py +375 -0
- zenml/integrations/integration.py +101 -47
- zenml/integrations/kaniko/flavors/kaniko_image_builder_flavor.py +6 -44
- zenml/integrations/kaniko/image_builders/kaniko_image_builder.py +9 -6
- zenml/integrations/kubeflow/__init__.py +4 -1
- zenml/integrations/kubeflow/flavors/kubeflow_orchestrator_flavor.py +67 -82
- zenml/integrations/kubeflow/orchestrators/kubeflow_orchestrator.py +306 -248
- zenml/integrations/kubernetes/__init__.py +6 -3
- zenml/integrations/kubernetes/flavors/__init__.py +8 -0
- zenml/integrations/kubernetes/flavors/kubernetes_orchestrator_flavor.py +43 -2
- zenml/integrations/kubernetes/flavors/kubernetes_step_operator_flavor.py +166 -0
- zenml/integrations/kubernetes/orchestrators/kube_utils.py +67 -12
- zenml/integrations/kubernetes/orchestrators/kubernetes_orchestrator.py +89 -21
- zenml/integrations/kubernetes/orchestrators/kubernetes_orchestrator_entrypoint.py +39 -7
- zenml/integrations/kubernetes/orchestrators/manifest_utils.py +42 -19
- zenml/integrations/kubernetes/pod_settings.py +21 -31
- zenml/integrations/kubernetes/serialization_utils.py +3 -3
- zenml/integrations/kubernetes/service_connectors/kubernetes_service_connector.py +14 -11
- zenml/integrations/kubernetes/step_operators/__init__.py +22 -0
- zenml/integrations/kubernetes/step_operators/kubernetes_step_operator.py +236 -0
- zenml/integrations/label_studio/__init__.py +1 -3
- zenml/integrations/label_studio/annotators/label_studio_annotator.py +46 -14
- zenml/integrations/label_studio/flavors/__init__.py +2 -0
- zenml/integrations/label_studio/flavors/label_studio_annotator_flavor.py +20 -5
- zenml/integrations/langchain/__init__.py +7 -1
- zenml/integrations/langchain/materializers/document_materializer.py +44 -8
- zenml/integrations/langchain/materializers/openai_embedding_materializer.py +28 -2
- zenml/integrations/lightgbm/__init__.py +1 -0
- zenml/integrations/lightgbm/materializers/lightgbm_booster_materializer.py +8 -15
- zenml/integrations/lightgbm/materializers/lightgbm_dataset_materializer.py +11 -16
- zenml/integrations/lightning/__init__.py +48 -0
- zenml/integrations/lightning/flavors/__init__.py +23 -0
- zenml/integrations/lightning/flavors/lightning_orchestrator_flavor.py +168 -0
- zenml/integrations/lightning/orchestrators/__init__.py +23 -0
- zenml/integrations/lightning/orchestrators/lightning_orchestrator.py +617 -0
- zenml/integrations/lightning/orchestrators/lightning_orchestrator_entrypoint.py +303 -0
- zenml/integrations/lightning/orchestrators/lightning_orchestrator_entrypoint_configuration.py +77 -0
- zenml/integrations/lightning/orchestrators/utils.py +67 -0
- zenml/integrations/mlflow/__init__.py +55 -8
- zenml/integrations/mlflow/experiment_trackers/mlflow_experiment_tracker.py +31 -13
- zenml/integrations/mlflow/flavors/mlflow_experiment_tracker_flavor.py +32 -37
- zenml/integrations/mlflow/model_deployers/mlflow_model_deployer.py +42 -233
- zenml/integrations/mlflow/model_registries/mlflow_model_registry.py +42 -49
- zenml/integrations/mlflow/services/mlflow_deployment.py +30 -5
- zenml/integrations/mlflow/steps/mlflow_deployer.py +25 -27
- zenml/integrations/mlflow/steps/mlflow_registry.py +3 -1
- zenml/integrations/modal/__init__.py +46 -0
- zenml/integrations/modal/flavors/__init__.py +26 -0
- zenml/integrations/modal/flavors/modal_step_operator_flavor.py +125 -0
- zenml/integrations/modal/step_operators/__init__.py +22 -0
- zenml/integrations/modal/step_operators/modal_step_operator.py +242 -0
- zenml/integrations/neptune/experiment_trackers/neptune_experiment_tracker.py +7 -5
- zenml/integrations/neptune/experiment_trackers/run_state.py +71 -55
- zenml/integrations/neptune/flavors/neptune_experiment_tracker_flavor.py +1 -1
- zenml/integrations/neural_prophet/__init__.py +6 -1
- zenml/integrations/numpy/__init__.py +32 -0
- zenml/integrations/{kserve/constants.py → numpy/materializers/__init__.py} +5 -4
- zenml/integrations/numpy/materializers/numpy_materializer.py +246 -0
- zenml/integrations/openai/__init__.py +1 -1
- zenml/integrations/openai/hooks/open_ai_failure_hook.py +39 -14
- zenml/{steps/external_artifact.py → integrations/pandas/__init__.py} +17 -11
- zenml/integrations/{kserve/custom_deployer → pandas/materializers}/__init__.py +5 -5
- zenml/integrations/pandas/materializers/pandas_materializer.py +192 -0
- zenml/integrations/pigeon/__init__.py +44 -0
- zenml/integrations/pigeon/annotators/__init__.py +20 -0
- zenml/integrations/pigeon/annotators/pigeon_annotator.py +330 -0
- zenml/integrations/{kserve → pigeon}/flavors/__init__.py +7 -7
- zenml/integrations/pigeon/flavors/pigeon_annotator_flavor.py +104 -0
- zenml/integrations/pillow/materializers/pillow_image_materializer.py +17 -20
- zenml/integrations/polars/__init__.py +1 -0
- zenml/integrations/polars/materializers/dataframe_materializer.py +26 -39
- zenml/integrations/prodigy/__init__.py +48 -0
- zenml/integrations/prodigy/annotators/__init__.py +20 -0
- zenml/integrations/prodigy/annotators/prodigy_annotator.py +275 -0
- zenml/integrations/prodigy/flavors/__init__.py +24 -0
- zenml/integrations/prodigy/flavors/prodigy_annotator_flavor.py +101 -0
- zenml/integrations/pycaret/__init__.py +6 -0
- zenml/integrations/pycaret/materializers/model_materializer.py +7 -22
- zenml/integrations/pytorch/materializers/base_pytorch_materializer.py +8 -2
- zenml/integrations/pytorch/materializers/pytorch_module_materializer.py +4 -1
- zenml/integrations/registry.py +38 -1
- zenml/integrations/s3/__init__.py +2 -3
- zenml/integrations/s3/artifact_stores/s3_artifact_store.py +191 -9
- zenml/integrations/s3/flavors/s3_artifact_store_flavor.py +22 -45
- zenml/integrations/s3/utils.py +39 -0
- zenml/integrations/seldon/__init__.py +18 -2
- zenml/integrations/seldon/model_deployers/seldon_model_deployer.py +19 -141
- zenml/integrations/seldon/secret_schemas/secret_schemas.py +2 -2
- zenml/integrations/seldon/seldon_client.py +55 -70
- zenml/integrations/seldon/services/seldon_deployment.py +4 -5
- zenml/integrations/seldon/steps/seldon_deployer.py +21 -20
- zenml/integrations/sklearn/__init__.py +1 -1
- zenml/integrations/skypilot/flavors/skypilot_orchestrator_base_vm_config.py +29 -7
- zenml/integrations/skypilot/orchestrators/skypilot_base_vm_orchestrator.py +47 -28
- zenml/integrations/skypilot/orchestrators/skypilot_orchestrator_entrypoint.py +2 -2
- zenml/integrations/skypilot_aws/__init__.py +3 -2
- zenml/integrations/skypilot_aws/flavors/skypilot_orchestrator_aws_vm_flavor.py +1 -1
- zenml/integrations/skypilot_azure/__init__.py +2 -4
- zenml/integrations/skypilot_azure/flavors/skypilot_orchestrator_azure_vm_flavor.py +1 -1
- zenml/integrations/skypilot_gcp/__init__.py +3 -2
- zenml/integrations/skypilot_gcp/flavors/skypilot_orchestrator_gcp_vm_flavor.py +1 -1
- zenml/integrations/skypilot_kubernetes/__init__.py +52 -0
- zenml/integrations/skypilot_kubernetes/flavors/__init__.py +26 -0
- zenml/integrations/skypilot_kubernetes/flavors/skypilot_orchestrator_kubernetes_vm_flavor.py +125 -0
- zenml/integrations/skypilot_kubernetes/orchestrators/__init__.py +25 -0
- zenml/integrations/skypilot_kubernetes/orchestrators/skypilot_kubernetes_vm_orchestrator.py +74 -0
- zenml/integrations/skypilot_lambda/__init__.py +50 -0
- zenml/integrations/{kserve/secret_schemas → skypilot_lambda/flavors}/__init__.py +9 -12
- zenml/integrations/skypilot_lambda/flavors/skypilot_orchestrator_lambda_vm_flavor.py +130 -0
- zenml/{lineage_graph/node → integrations/skypilot_lambda/orchestrators}/__init__.py +8 -15
- zenml/integrations/skypilot_lambda/orchestrators/skypilot_lambda_vm_orchestrator.py +92 -0
- zenml/integrations/slack/__init__.py +1 -0
- zenml/integrations/slack/alerters/slack_alerter.py +22 -2
- zenml/integrations/slack/flavors/__init__.py +2 -0
- zenml/integrations/slack/flavors/slack_alerter_flavor.py +13 -4
- zenml/integrations/slack/steps/slack_alerter_ask_step.py +1 -0
- zenml/integrations/slack/steps/slack_alerter_post_step.py +1 -0
- zenml/integrations/spark/flavors/spark_step_operator_flavor.py +2 -39
- zenml/integrations/spark/step_operators/kubernetes_step_operator.py +1 -0
- zenml/integrations/spark/step_operators/spark_entrypoint_configuration.py +1 -0
- zenml/integrations/spark/step_operators/spark_step_operator.py +2 -0
- zenml/integrations/tekton/__init__.py +2 -1
- zenml/integrations/tekton/flavors/tekton_orchestrator_flavor.py +66 -23
- zenml/integrations/tekton/orchestrators/tekton_orchestrator.py +549 -235
- zenml/integrations/tensorboard/__init__.py +1 -13
- zenml/integrations/tensorboard/services/tensorboard_service.py +3 -4
- zenml/integrations/tensorboard/visualizers/tensorboard_visualizer.py +66 -59
- zenml/integrations/tensorflow/__init__.py +10 -15
- zenml/integrations/tensorflow/materializers/keras_materializer.py +24 -27
- zenml/integrations/tensorflow/materializers/tf_dataset_materializer.py +9 -16
- zenml/integrations/vllm/__init__.py +50 -0
- zenml/integrations/vllm/flavors/__init__.py +21 -0
- zenml/integrations/vllm/flavors/vllm_model_deployer_flavor.py +91 -0
- zenml/integrations/vllm/model_deployers/__init__.py +19 -0
- zenml/integrations/vllm/model_deployers/vllm_model_deployer.py +263 -0
- zenml/integrations/vllm/services/__init__.py +19 -0
- zenml/integrations/vllm/services/vllm_deployment.py +206 -0
- zenml/integrations/wandb/__init__.py +1 -0
- zenml/integrations/wandb/flavors/wandb_experiment_tracker_flavor.py +21 -18
- zenml/integrations/whylogs/__init__.py +18 -2
- zenml/integrations/whylogs/data_validators/whylogs_data_validator.py +3 -3
- zenml/integrations/whylogs/flavors/whylogs_data_validator_flavor.py +1 -1
- zenml/integrations/whylogs/materializers/whylogs_materializer.py +14 -21
- zenml/integrations/xgboost/materializers/xgboost_booster_materializer.py +11 -22
- zenml/integrations/xgboost/materializers/xgboost_dmatrix_materializer.py +10 -19
- zenml/io/fileio.py +1 -0
- zenml/io/filesystem.py +2 -2
- zenml/io/local_filesystem.py +3 -3
- zenml/logger.py +41 -17
- zenml/logging/__init__.py +5 -0
- zenml/logging/step_logging.py +280 -32
- zenml/{new/steps → login}/__init__.py +4 -1
- zenml/login/credentials.py +370 -0
- zenml/login/credentials_store.py +638 -0
- zenml/{new/pipelines → login/pro}/__init__.py +4 -1
- zenml/login/pro/client.py +492 -0
- zenml/login/pro/constants.py +28 -0
- zenml/{zen_stores/schemas/identity_schemas.py → login/pro/models.py} +9 -11
- zenml/login/pro/organization/__init__.py +14 -0
- zenml/login/pro/organization/client.py +79 -0
- zenml/{lineage_graph/node/base_node.py → login/pro/organization/models.py} +13 -12
- zenml/{_hub → login/pro/tenant}/__init__.py +2 -2
- zenml/login/pro/tenant/client.py +92 -0
- zenml/login/pro/tenant/models.py +176 -0
- zenml/login/pro/utils.py +107 -0
- zenml/login/server_info.py +52 -0
- zenml/{cli → login}/web_login.py +71 -21
- zenml/materializers/__init__.py +2 -4
- zenml/materializers/base_materializer.py +180 -51
- zenml/materializers/built_in_materializer.py +50 -23
- zenml/materializers/cloudpickle_materializer.py +4 -5
- zenml/materializers/numpy_materializer.py +23 -233
- zenml/materializers/pandas_materializer.py +22 -174
- zenml/materializers/pydantic_materializer.py +2 -2
- zenml/materializers/service_materializer.py +12 -10
- zenml/materializers/structured_string_materializer.py +12 -6
- zenml/materializers/uuid_materializer.py +79 -0
- zenml/metadata/lazy_load.py +33 -17
- zenml/metadata/metadata_types.py +112 -3
- zenml/model/lazy_load.py +85 -4
- zenml/model/model.py +236 -226
- zenml/model/utils.py +99 -141
- zenml/model_deployers/base_model_deployer.py +319 -47
- zenml/model_registries/base_model_registry.py +17 -15
- zenml/models/__init__.py +254 -175
- zenml/models/v2/base/base.py +254 -112
- zenml/models/v2/base/base_plugin_flavor.py +76 -0
- zenml/models/v2/base/filter.py +530 -199
- zenml/models/v2/base/page.py +2 -12
- zenml/models/v2/base/scoped.py +292 -22
- zenml/models/v2/core/action.py +276 -0
- zenml/models/v2/core/action_flavor.py +57 -0
- zenml/models/v2/core/api_key.py +35 -12
- zenml/models/v2/core/artifact.py +126 -6
- zenml/models/v2/core/artifact_version.py +289 -65
- zenml/models/v2/core/artifact_visualization.py +10 -4
- zenml/models/v2/core/code_reference.py +13 -4
- zenml/models/v2/core/code_repository.py +39 -16
- zenml/models/v2/core/component.py +113 -61
- zenml/models/v2/core/device.py +25 -5
- zenml/models/v2/core/event_source.py +244 -0
- zenml/models/v2/core/event_source_flavor.py +67 -0
- zenml/models/v2/core/flavor.py +90 -27
- zenml/models/v2/core/logs.py +81 -12
- zenml/models/v2/core/model.py +91 -42
- zenml/models/v2/core/model_version.py +100 -55
- zenml/models/v2/core/model_version_artifact.py +96 -89
- zenml/models/v2/core/model_version_pipeline_run.py +86 -53
- zenml/models/v2/core/pipeline.py +205 -80
- zenml/models/v2/core/pipeline_build.py +110 -21
- zenml/models/v2/core/pipeline_deployment.py +101 -36
- zenml/models/v2/core/pipeline_run.py +545 -33
- zenml/models/v2/core/run_metadata.py +23 -181
- zenml/models/v2/core/run_template.py +439 -0
- zenml/models/v2/core/schedule.py +66 -29
- zenml/models/v2/core/secret.py +33 -21
- zenml/models/v2/core/server_settings.py +224 -0
- zenml/models/v2/core/service.py +500 -0
- zenml/models/v2/core/service_account.py +40 -15
- zenml/models/v2/core/service_connector.py +247 -49
- zenml/models/v2/core/stack.py +163 -70
- zenml/models/v2/core/step_run.py +210 -48
- zenml/models/v2/core/tag.py +21 -8
- zenml/models/v2/core/tag_resource.py +13 -4
- zenml/models/v2/core/trigger.py +422 -0
- zenml/models/v2/core/trigger_execution.py +119 -0
- zenml/models/v2/core/user.py +136 -69
- zenml/models/v2/core/workspace.py +26 -7
- zenml/models/v2/misc/auth_models.py +11 -2
- zenml/models/v2/misc/build_item.py +3 -3
- zenml/models/v2/misc/external_user.py +3 -6
- zenml/models/v2/misc/info_models.py +78 -0
- zenml/models/v2/misc/loaded_visualization.py +2 -2
- zenml/models/v2/misc/run_metadata.py +38 -0
- zenml/models/v2/misc/server_models.py +100 -0
- zenml/models/v2/misc/service_connector_type.py +9 -17
- zenml/models/v2/misc/stack_deployment.py +96 -0
- zenml/models/v2/misc/user_auth.py +7 -9
- zenml/orchestrators/__init__.py +4 -0
- zenml/orchestrators/base_orchestrator.py +136 -25
- zenml/orchestrators/containerized_orchestrator.py +1 -0
- zenml/orchestrators/dag_runner.py +18 -3
- zenml/orchestrators/input_utils.py +109 -48
- zenml/orchestrators/local/local_orchestrator.py +10 -0
- zenml/orchestrators/local_docker/local_docker_orchestrator.py +14 -42
- zenml/orchestrators/output_utils.py +16 -6
- zenml/orchestrators/publish_utils.py +12 -5
- zenml/orchestrators/step_launcher.py +142 -194
- zenml/orchestrators/step_run_utils.py +386 -0
- zenml/orchestrators/step_runner.py +181 -270
- zenml/orchestrators/utils.py +219 -84
- zenml/orchestrators/wheeled_orchestrator.py +147 -0
- zenml/pipelines/__init__.py +3 -16
- zenml/{new/pipelines → pipelines}/build_utils.py +287 -47
- zenml/{new/pipelines → pipelines}/pipeline_context.py +6 -2
- zenml/pipelines/pipeline_decorator.py +40 -64
- zenml/{new/pipelines/pipeline.py → pipelines/pipeline_definition.py} +376 -440
- zenml/pipelines/run_utils.py +358 -0
- zenml/plugins/__init__.py +0 -0
- zenml/plugins/base_plugin_flavor.py +88 -0
- zenml/plugins/plugin_flavor_registry.py +342 -0
- zenml/secret/base_secret.py +7 -8
- zenml/secret/schemas/basic_auth_secret_schema.py +0 -1
- zenml/service_connectors/docker_service_connector.py +19 -4
- zenml/service_connectors/service_connector.py +12 -14
- zenml/service_connectors/service_connector_registry.py +71 -55
- zenml/service_connectors/service_connector_utils.py +418 -0
- zenml/services/__init__.py +0 -2
- zenml/services/container/container_service.py +9 -6
- zenml/services/container/container_service_endpoint.py +1 -1
- zenml/services/container/entrypoint.py +3 -2
- zenml/services/local/local_daemon_entrypoint.py +9 -6
- zenml/services/local/local_service.py +1 -1
- zenml/services/local/local_service_endpoint.py +1 -1
- zenml/services/service.py +222 -130
- zenml/services/service_status.py +2 -1
- zenml/services/service_type.py +6 -5
- zenml/stack/flavor.py +25 -18
- zenml/stack/flavor_registry.py +4 -4
- zenml/stack/stack.py +20 -131
- zenml/stack/stack_component.py +136 -110
- zenml/stack/utils.py +36 -15
- zenml/stack_deployments/__init__.py +14 -0
- zenml/stack_deployments/aws_stack_deployment.py +320 -0
- zenml/stack_deployments/azure_stack_deployment.py +315 -0
- zenml/stack_deployments/gcp_stack_deployment.py +315 -0
- zenml/stack_deployments/stack_deployment.py +232 -0
- zenml/stack_deployments/utils.py +48 -0
- zenml/step_operators/step_operator_entrypoint_configuration.py +2 -1
- zenml/steps/__init__.py +3 -9
- zenml/steps/base_step.py +172 -315
- zenml/{new/steps → steps}/decorated_step.py +1 -0
- zenml/steps/entrypoint_function_utils.py +33 -93
- zenml/{new/steps → steps}/step_context.py +70 -50
- zenml/steps/step_decorator.py +47 -93
- zenml/steps/step_invocation.py +22 -60
- zenml/steps/utils.py +161 -48
- zenml/types.py +14 -1
- zenml/utils/archivable.py +178 -0
- zenml/utils/callback_registry.py +71 -0
- zenml/utils/code_repository_utils.py +1 -0
- zenml/utils/code_utils.py +346 -0
- zenml/utils/cuda_utils.py +50 -0
- zenml/utils/dashboard_utils.py +67 -21
- zenml/utils/deprecation_utils.py +22 -24
- zenml/utils/dict_utils.py +22 -0
- zenml/utils/docker_utils.py +34 -5
- zenml/utils/downloaded_repository_context.py +1 -0
- zenml/utils/env_utils.py +55 -1
- zenml/utils/filesync_model.py +65 -28
- zenml/utils/function_utils.py +260 -0
- zenml/utils/integration_utils.py +1 -0
- zenml/utils/json_utils.py +131 -0
- zenml/utils/materializer_utils.py +1 -1
- zenml/utils/metadata_utils.py +368 -0
- zenml/utils/notebook_utils.py +136 -0
- zenml/utils/package_utils.py +89 -0
- zenml/utils/pagination_utils.py +9 -7
- zenml/utils/pipeline_docker_image_builder.py +152 -149
- zenml/utils/pydantic_utils.py +276 -66
- zenml/utils/requirements_utils.py +71 -0
- zenml/utils/secret_utils.py +66 -12
- zenml/utils/settings_utils.py +2 -1
- zenml/utils/singleton.py +15 -3
- zenml/utils/source_code_utils.py +1 -0
- zenml/utils/source_utils.py +236 -14
- zenml/utils/string_utils.py +140 -0
- zenml/utils/typed_model.py +5 -3
- zenml/utils/typing_utils.py +223 -0
- zenml/utils/visualization_utils.py +5 -3
- zenml/utils/yaml_utils.py +1 -1
- zenml/zen_server/auth.py +387 -55
- zenml/zen_server/cache.py +208 -0
- zenml/zen_server/cloud_utils.py +253 -0
- zenml/zen_server/csrf.py +91 -0
- zenml/zen_server/dashboard/assets/404-Dfq64Boz.js +1 -0
- zenml/zen_server/dashboard/assets/@radix-DeK6qiuw.js +85 -0
- zenml/zen_server/dashboard/assets/@react-router-B3Z5rLr2.js +29 -0
- zenml/zen_server/dashboard/assets/@reactflow-BUNIMFeC.js +17 -0
- zenml/zen_server/dashboard/assets/@reactflow-C26Olbza.css +1 -0
- zenml/zen_server/dashboard/assets/@tanstack-DT5WLu9C.js +22 -0
- zenml/zen_server/dashboard/assets/AlertDialogDropdownItem-B73Vs10T.js +1 -0
- zenml/zen_server/dashboard/assets/CodeSnippet-Bbx6fIb6.css +1 -0
- zenml/zen_server/dashboard/assets/CodeSnippet-DIJRT2NT.js +9 -0
- zenml/zen_server/dashboard/assets/CollapsibleCard-BzUHGZOU.js +1 -0
- zenml/zen_server/dashboard/assets/Commands-BEGyld4c.js +1 -0
- zenml/zen_server/dashboard/assets/ComponentBadge-xyKiek1s.js +1 -0
- zenml/zen_server/dashboard/assets/CopyButton-DhW-mapu.js +2 -0
- zenml/zen_server/dashboard/assets/CsvVizualization-D8oazBiE.js +15 -0
- zenml/zen_server/dashboard/assets/DeleteAlertDialog-WkSIIgfy.js +1 -0
- zenml/zen_server/dashboard/assets/DialogItem-Bgroeg29.js +1 -0
- zenml/zen_server/dashboard/assets/DisplayDate-CDMUcQHS.js +1 -0
- zenml/zen_server/dashboard/assets/EmptyState-BzdlCwp3.js +1 -0
- zenml/zen_server/dashboard/assets/Error-CY5tlu17.js +1 -0
- zenml/zen_server/dashboard/assets/ExecutionStatus-G8mjIaeA.js +1 -0
- zenml/zen_server/dashboard/assets/Helpbox-Bb1ed--O.js +1 -0
- zenml/zen_server/dashboard/assets/Infobox-Da6-76M2.js +1 -0
- zenml/zen_server/dashboard/assets/InlineAvatar-DqnZaBNq.js +1 -0
- zenml/zen_server/dashboard/assets/Lock-CYYy18Mm.js +1 -0
- zenml/zen_server/dashboard/assets/MarkdownVisualization-ylXaAxev.js +14 -0
- zenml/zen_server/dashboard/assets/NestedCollapsible-aK5ojKoF.js +1 -0
- zenml/zen_server/dashboard/assets/NumberBox-Dtp3J6g5.js +1 -0
- zenml/zen_server/dashboard/assets/Partials-CqZp5NMX.js +1 -0
- zenml/zen_server/dashboard/assets/PasswordChecker-B0nadgh6.js +1 -0
- zenml/zen_server/dashboard/assets/ProBadge-B4tRUYve.js +1 -0
- zenml/zen_server/dashboard/assets/ProCta-CZuP29Qz.js +1 -0
- zenml/zen_server/dashboard/assets/ProviderIcon-Bd7GUQ1_.js +1 -0
- zenml/zen_server/dashboard/assets/ProviderRadio-mstdqzsS.js +1 -0
- zenml/zen_server/dashboard/assets/RunSelector-CsruSB4i.js +1 -0
- zenml/zen_server/dashboard/assets/RunsBody-DxxtWVYz.js +1 -0
- zenml/zen_server/dashboard/assets/SearchField-D6tPxyqw.js +1 -0
- zenml/zen_server/dashboard/assets/SecretTooltip-CLzJIYW_.js +1 -0
- zenml/zen_server/dashboard/assets/SetPassword-Yn50ooBC.js +1 -0
- zenml/zen_server/dashboard/assets/StackList-U537qoYd.js +1 -0
- zenml/zen_server/dashboard/assets/Tabs-CNv-eTYM.js +1 -0
- zenml/zen_server/dashboard/assets/Tick-jEIevzVf.js +1 -0
- zenml/zen_server/dashboard/assets/UpdatePasswordSchemas-C16GW-kX.js +1 -0
- zenml/zen_server/dashboard/assets/UsageReason-Bf2tzhv1.js +1 -0
- zenml/zen_server/dashboard/assets/WizardFooter-D6i-AP1K.js +1 -0
- zenml/zen_server/dashboard/assets/acp-DOsXjFc7.webp +0 -0
- zenml/zen_server/dashboard/assets/adam-e-y0WnB_.webp +0 -0
- zenml/zen_server/dashboard/assets/alex-DcCuDHPg.webp +0 -0
- zenml/zen_server/dashboard/assets/all-pipeline-runs-query-DUti43aF.js +1 -0
- zenml/zen_server/dashboard/assets/baris-C0ZrZ10g.webp +0 -0
- zenml/zen_server/dashboard/assets/check-DloQpStc.js +1 -0
- zenml/zen_server/dashboard/assets/check-circle-jNbX5-sR.js +1 -0
- zenml/zen_server/dashboard/assets/chevron-down-6JyMkfjR.js +1 -0
- zenml/zen_server/dashboard/assets/chevron-right-double-D7ojK9Co.js +1 -0
- zenml/zen_server/dashboard/assets/cloud-squares-DeRLMopf.svg +43 -0
- zenml/zen_server/dashboard/assets/code-browser-CUFUIHfp.js +1 -0
- zenml/zen_server/dashboard/assets/code-snippets-CqONne41.js +13 -0
- zenml/zen_server/dashboard/assets/components-Br2ezRib.js +1 -0
- zenml/zen_server/dashboard/assets/connectors-video-C9qY4syJ.svg +21 -0
- zenml/zen_server/dashboard/assets/copy-C8XQA2Ug.js +1 -0
- zenml/zen_server/dashboard/assets/create-stack-Ch2WPs9U.js +1 -0
- zenml/zen_server/dashboard/assets/dates-3pMLCNrD.js +1 -0
- zenml/zen_server/dashboard/assets/delete-run-Byf9hTjA.js +1 -0
- zenml/zen_server/dashboard/assets/docker-BdA9vrnW.js +1 -0
- zenml/zen_server/dashboard/assets/dots-horizontal-otGBOSDJ.js +1 -0
- zenml/zen_server/dashboard/assets/flyte-Cj-xy_8I.svg +10 -0
- zenml/zen_server/dashboard/assets/form-schemas-BZqKBPBF.js +1 -0
- zenml/zen_server/dashboard/assets/gcp-CFtm4BA7.js +1 -0
- zenml/zen_server/dashboard/assets/hamza-NKKOZz1I.webp +0 -0
- zenml/zen_server/dashboard/assets/help-Cc9bBIJH.js +1 -0
- zenml/zen_server/dashboard/assets/index-CE0aQlv8.js +55 -0
- zenml/zen_server/dashboard/assets/index-CtdYkjUi.js +1 -0
- zenml/zen_server/dashboard/assets/index-CyBKZcpO.js +1 -0
- zenml/zen_server/dashboard/assets/index-DXvT1_Um.css +1 -0
- zenml/zen_server/dashboard/assets/index-Uu49AX48.js +1 -0
- zenml/zen_server/dashboard/assets/index-v6gQjDEo.js +1 -0
- zenml/zen_server/dashboard/assets/index.esm-Dy6Z9Ung.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/key-icon-aH-QIa5R.js +1 -0
- zenml/zen_server/dashboard/assets/kubernetes-B2wmAJ1d.js +1 -0
- zenml/zen_server/dashboard/assets/layout-BtHBmE4w.js +1 -0
- zenml/zen_server/dashboard/assets/link-external-b9AXw_sW.js +1 -0
- zenml/zen_server/dashboard/assets/login-command-CkqxPtV3.js +1 -0
- zenml/zen_server/dashboard/assets/login-mutation-DNDVp_2H.js +1 -0
- zenml/zen_server/dashboard/assets/logs-WMSM52RF.js +1 -0
- zenml/zen_server/dashboard/assets/mcp-Cb1aMeoq.webp +0 -0
- zenml/zen_server/dashboard/assets/metaflow-weOkWNyT.svg +10 -0
- zenml/zen_server/dashboard/assets/not-found-Bmup4ctE.js +1 -0
- zenml/zen_server/dashboard/assets/package-C6uypY4h.js +1 -0
- zenml/zen_server/dashboard/assets/page--XLMzHrn.js +1 -0
- zenml/zen_server/dashboard/assets/page-ANYGfEUL.js +1 -0
- zenml/zen_server/dashboard/assets/page-B5Sr8pib.js +1 -0
- zenml/zen_server/dashboard/assets/page-BC27C_OI.js +2 -0
- zenml/zen_server/dashboard/assets/page-BNxYrN0q.js +1 -0
- zenml/zen_server/dashboard/assets/page-BYJfqgLN.js +1 -0
- zenml/zen_server/dashboard/assets/page-B_0XkV48.js +1 -0
- zenml/zen_server/dashboard/assets/page-BrmJp1Wt.js +1 -0
- zenml/zen_server/dashboard/assets/page-C2nU3Gxn.js +1 -0
- zenml/zen_server/dashboard/assets/page-C70wZtV2.js +1 -0
- zenml/zen_server/dashboard/assets/page-CHRn1fQm.js +1 -0
- zenml/zen_server/dashboard/assets/page-CWr96ZKN.js +1 -0
- zenml/zen_server/dashboard/assets/page-CXAbSyp9.js +1 -0
- zenml/zen_server/dashboard/assets/page-CaeI9ptC.js +1 -0
- zenml/zen_server/dashboard/assets/page-Cc8ZEuj4.js +1 -0
- zenml/zen_server/dashboard/assets/page-CltCNL0T.js +1 -0
- zenml/zen_server/dashboard/assets/page-CmlYj7Nl.js +1 -0
- zenml/zen_server/dashboard/assets/page-D6Ev5P8V.js +1 -0
- zenml/zen_server/dashboard/assets/page-D9Oh05fl.js +1 -0
- zenml/zen_server/dashboard/assets/page-DGlm1RVc.js +1 -0
- zenml/zen_server/dashboard/assets/page-DN4BVIOL.js +1 -0
- zenml/zen_server/dashboard/assets/page-Dif8CWyZ.js +1 -0
- zenml/zen_server/dashboard/assets/page-DlIi5ThM.js +1 -0
- zenml/zen_server/dashboard/assets/page-DoW7YxTu.js +1 -0
- zenml/zen_server/dashboard/assets/page-Dth9X1Ih.js +1 -0
- zenml/zen_server/dashboard/assets/page-DweqqCkF.js +1 -0
- zenml/zen_server/dashboard/assets/page-DyOJ_pq3.js +1 -0
- zenml/zen_server/dashboard/assets/page-Hn8q9iJZ.js +1 -0
- zenml/zen_server/dashboard/assets/page-IhckKFnD.js +6 -0
- zenml/zen_server/dashboard/assets/page-LyZ_l8vR.js +1 -0
- zenml/zen_server/dashboard/assets/page-PamGpk0j.js +1 -0
- zenml/zen_server/dashboard/assets/page-PxOWfKgF.js +2 -0
- zenml/zen_server/dashboard/assets/persist-DeXRG61d.js +1 -0
- zenml/zen_server/dashboard/assets/persist-vP0-Xl4f.js +1 -0
- zenml/zen_server/dashboard/assets/plus-tf1V2hTJ.js +1 -0
- zenml/zen_server/dashboard/assets/refresh-BjOeWlEq.js +1 -0
- zenml/zen_server/dashboard/assets/repos-video-D8kpu60k.svg +9 -0
- zenml/zen_server/dashboard/assets/rocket-DjT2cDvG.js +1 -0
- zenml/zen_server/dashboard/assets/service-DH_oUqQj.js +2 -0
- zenml/zen_server/dashboard/assets/settings_preview-0JLrRgHP.webp +0 -0
- zenml/zen_server/dashboard/assets/sharedSchema-Bw1_Wa7l.js +14 -0
- zenml/zen_server/dashboard/assets/stack-detail-query-B_0R_fd6.js +1 -0
- zenml/zen_server/dashboard/assets/stefan-B08Ftbba.webp +0 -0
- zenml/zen_server/dashboard/assets/templates-1S_8WeSK.webp +0 -0
- zenml/zen_server/dashboard/assets/tick-circle-BEX_Tp4v.js +1 -0
- zenml/zen_server/dashboard/assets/tour-cover-BYfeen6M.webp +0 -0
- zenml/zen_server/dashboard/assets/trash-arLUMWMS.js +1 -0
- zenml/zen_server/dashboard/assets/update-server-settings-mutation-D9qYhfaN.js +1 -0
- zenml/zen_server/dashboard/assets/upgrade-form-CwRHBuXB.webp +0 -0
- zenml/zen_server/dashboard/assets/url-Dh93fvh0.js +1 -0
- zenml/zen_server/dashboard/assets/zod-BwEbpOxH.js +1 -0
- zenml/zen_server/dashboard/index.html +19 -1
- zenml/zen_server/deploy/__init__.py +7 -16
- zenml/zen_server/deploy/base_provider.py +49 -78
- zenml/zen_server/deploy/{local → daemon}/__init__.py +3 -3
- zenml/zen_server/deploy/{local/local_provider.py → daemon/daemon_provider.py} +48 -66
- zenml/zen_server/deploy/{local/local_zen_server.py → daemon/daemon_zen_server.py} +78 -62
- zenml/zen_server/deploy/deployer.py +94 -175
- zenml/zen_server/deploy/deployment.py +23 -17
- zenml/zen_server/deploy/docker/docker_provider.py +15 -31
- zenml/zen_server/deploy/docker/docker_zen_server.py +30 -35
- zenml/zen_server/deploy/helm/Chart.yaml +1 -1
- zenml/zen_server/deploy/helm/README.md +3 -13
- zenml/zen_server/deploy/helm/templates/NOTES.txt +23 -7
- zenml/zen_server/deploy/helm/templates/_environment.tpl +175 -23
- zenml/zen_server/deploy/helm/templates/server-db-job.yaml +45 -18
- zenml/zen_server/deploy/helm/templates/server-db-pvc.yaml +25 -0
- zenml/zen_server/deploy/helm/templates/server-deployment.yaml +22 -6
- zenml/zen_server/deploy/helm/templates/server-secret.yaml +11 -10
- zenml/zen_server/deploy/helm/values.yaml +210 -28
- zenml/zen_server/exceptions.py +20 -1
- zenml/zen_server/feature_gate/__init__.py +13 -0
- zenml/zen_server/feature_gate/endpoint_utils.py +61 -0
- zenml/zen_server/feature_gate/feature_gate_interface.py +49 -0
- zenml/zen_server/feature_gate/zenml_cloud_feature_gate.py +125 -0
- zenml/zen_server/jwt.py +64 -32
- zenml/zen_server/rate_limit.py +200 -0
- zenml/zen_server/rbac/endpoint_utils.py +92 -9
- zenml/zen_server/rbac/models.py +21 -17
- zenml/zen_server/rbac/rbac_sql_zen_store.py +175 -0
- zenml/zen_server/rbac/utils.py +71 -30
- zenml/zen_server/rbac/zenml_cloud_rbac.py +13 -188
- zenml/zen_server/routers/actions_endpoints.py +324 -0
- zenml/zen_server/routers/artifact_version_endpoints.py +28 -2
- zenml/zen_server/routers/auth_endpoints.py +249 -131
- zenml/zen_server/routers/code_repositories_endpoints.py +1 -0
- zenml/zen_server/routers/devices_endpoints.py +56 -49
- zenml/zen_server/routers/event_source_endpoints.py +327 -0
- zenml/zen_server/routers/logs_endpoints.py +66 -0
- zenml/zen_server/routers/model_versions_endpoints.py +59 -0
- zenml/zen_server/routers/models_endpoints.py +7 -1
- zenml/zen_server/routers/pipeline_builds_endpoints.py +6 -1
- zenml/zen_server/routers/pipeline_deployments_endpoints.py +35 -0
- zenml/zen_server/routers/pipelines_endpoints.py +19 -32
- zenml/zen_server/routers/plugin_endpoints.py +107 -0
- zenml/zen_server/routers/run_templates_endpoints.py +212 -0
- zenml/zen_server/routers/runs_endpoints.py +91 -32
- zenml/zen_server/routers/schedule_endpoints.py +1 -0
- zenml/zen_server/routers/secrets_endpoints.py +4 -2
- zenml/zen_server/routers/server_endpoints.py +186 -4
- zenml/zen_server/routers/service_connectors_endpoints.py +56 -0
- zenml/zen_server/routers/service_endpoints.py +180 -0
- zenml/zen_server/routers/stack_components_endpoints.py +2 -1
- zenml/zen_server/routers/stack_deployment_endpoints.py +164 -0
- zenml/zen_server/routers/steps_endpoints.py +21 -12
- zenml/zen_server/routers/triggers_endpoints.py +336 -0
- zenml/zen_server/routers/users_endpoints.py +280 -45
- zenml/zen_server/routers/webhook_endpoints.py +127 -0
- zenml/zen_server/routers/workspaces_endpoints.py +220 -185
- zenml/zen_server/secure_headers.py +120 -0
- zenml/{new → zen_server/template_execution}/__init__.py +1 -1
- zenml/zen_server/template_execution/runner_entrypoint_configuration.py +42 -0
- zenml/zen_server/template_execution/utils.py +474 -0
- zenml/zen_server/template_execution/workload_manager_interface.py +92 -0
- zenml/zen_server/utils.py +374 -74
- zenml/zen_server/zen_server_api.py +299 -52
- zenml/zen_stores/base_zen_store.py +90 -58
- zenml/zen_stores/migrations/alembic.py +22 -9
- zenml/zen_stores/migrations/env.py +2 -2
- zenml/zen_stores/migrations/utils.py +731 -0
- zenml/zen_stores/migrations/versions/0.21.0_release.py +0 -1
- zenml/zen_stores/migrations/versions/0.21.1_release.py +0 -1
- zenml/zen_stores/migrations/versions/0.22.0_release.py +0 -1
- zenml/zen_stores/migrations/versions/0.23.0_release.py +0 -1
- zenml/zen_stores/migrations/versions/0.30.0_release.py +0 -1
- zenml/zen_stores/migrations/versions/0.31.0_release.py +0 -1
- zenml/zen_stores/migrations/versions/0.31.1_release.py +0 -1
- zenml/zen_stores/migrations/versions/0.32.0_release.py +0 -1
- zenml/zen_stores/migrations/versions/0.32.1_release.py +0 -1
- zenml/zen_stores/migrations/versions/0.33.0_release.py +0 -1
- zenml/zen_stores/migrations/versions/0.34.0_release.py +0 -1
- zenml/zen_stores/migrations/versions/0.35.0_release.py +0 -1
- zenml/zen_stores/migrations/versions/0.35.1_release.py +0 -1
- zenml/zen_stores/migrations/versions/0.36.0_release.py +0 -1
- zenml/zen_stores/migrations/versions/0.36.1_release.py +0 -1
- zenml/zen_stores/migrations/versions/0.37.0_release.py +0 -1
- zenml/zen_stores/migrations/versions/0.38.0_release.py +0 -1
- zenml/zen_stores/migrations/versions/0.39.0_release.py +0 -1
- zenml/zen_stores/migrations/versions/0.39.1_release.py +0 -1
- zenml/zen_stores/migrations/versions/0.40.0_release.py +0 -1
- zenml/zen_stores/migrations/versions/0.40.1_release.py +0 -1
- zenml/zen_stores/migrations/versions/0.40.2_release.py +0 -1
- zenml/zen_stores/migrations/versions/0.40.3_release.py +0 -1
- zenml/zen_stores/migrations/versions/0.41.0_release.py +0 -1
- zenml/zen_stores/migrations/versions/0.42.0_release.py +0 -1
- zenml/zen_stores/migrations/versions/0.42.1_release.py +0 -1
- zenml/zen_stores/migrations/versions/0.43.0_release.py +0 -1
- zenml/zen_stores/migrations/versions/0.44.0_release.py +0 -1
- zenml/zen_stores/migrations/versions/0.44.1_release.py +0 -1
- zenml/zen_stores/migrations/versions/0.44.2_release.py +0 -1
- zenml/zen_stores/migrations/versions/0.44.3_release.py +0 -1
- zenml/zen_stores/migrations/versions/0.45.0_release.py +0 -1
- zenml/zen_stores/migrations/versions/0.45.1_release_0_45_1.py +0 -1
- zenml/zen_stores/migrations/versions/0.45.2_release.py +0 -1
- zenml/zen_stores/migrations/versions/0.45.3_release.py +0 -1
- zenml/zen_stores/migrations/versions/0.45.4_release.py +0 -1
- zenml/zen_stores/migrations/versions/0.45.5_release.py +0 -1
- zenml/zen_stores/migrations/versions/0.45.6_release.py +0 -1
- zenml/zen_stores/migrations/versions/0.46.0_release.py +0 -1
- zenml/zen_stores/migrations/versions/0.46.1_release.py +0 -1
- zenml/zen_stores/migrations/versions/0.47.0_release.py +0 -1
- zenml/zen_stores/migrations/versions/0.50.0_release.py +0 -1
- zenml/zen_stores/migrations/versions/0.51.0_release.py +0 -1
- zenml/zen_stores/migrations/versions/0.52.0_release.py +0 -1
- zenml/zen_stores/migrations/versions/0.53.0_release.py +0 -1
- zenml/zen_stores/migrations/versions/0.53.1_release.py +0 -1
- zenml/zen_stores/migrations/versions/0.54.0_release.py +0 -1
- zenml/zen_stores/migrations/versions/0.54.1_release.py +0 -1
- zenml/zen_stores/migrations/versions/0.55.0_release.py +0 -1
- zenml/zen_stores/migrations/versions/0.55.1_release.py +23 -0
- zenml/zen_stores/migrations/versions/0.55.2_release.py +23 -0
- zenml/zen_stores/migrations/versions/0.55.3_release.py +23 -0
- zenml/zen_stores/migrations/versions/0.55.4_release.py +23 -0
- zenml/zen_stores/migrations/versions/0.55.5_release.py +23 -0
- zenml/zen_stores/migrations/versions/0.56.0_release.py +23 -0
- zenml/zen_stores/migrations/versions/0.56.1_release.py +23 -0
- zenml/zen_stores/migrations/versions/0.56.2_release.py +23 -0
- zenml/zen_stores/migrations/versions/0.56.3_release.py +23 -0
- zenml/zen_stores/migrations/versions/0.56.4_release.py +23 -0
- zenml/zen_stores/migrations/versions/0.57.0.rc1_release.py +23 -0
- zenml/zen_stores/migrations/versions/0.57.0.rc2_release.py +23 -0
- zenml/zen_stores/migrations/versions/0.57.0_release.py +23 -0
- zenml/zen_stores/migrations/versions/0.57.1_release.py +23 -0
- zenml/zen_stores/migrations/versions/0.58.0_release.py +23 -0
- zenml/zen_stores/migrations/versions/0.58.1_release.py +23 -0
- zenml/zen_stores/migrations/versions/0.58.2_release.py +23 -0
- zenml/zen_stores/migrations/versions/0.60.0_release.py +23 -0
- zenml/zen_stores/migrations/versions/0.61.0_release.py +23 -0
- zenml/zen_stores/migrations/versions/0.62.0_release.py +23 -0
- zenml/zen_stores/migrations/versions/0.63.0_release.py +23 -0
- zenml/zen_stores/migrations/versions/0.64.0_release.py +23 -0
- zenml/zen_stores/migrations/versions/0.65.0_release.py +23 -0
- zenml/zen_stores/migrations/versions/0.66.0_release.py +23 -0
- 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/0.70.0_release.py +23 -0
- zenml/zen_stores/migrations/versions/0.71.0_release.py +23 -0
- zenml/zen_stores/migrations/versions/0.72.0_release.py +23 -0
- zenml/zen_stores/migrations/versions/026d4577b6a0_add_code_path.py +39 -0
- zenml/zen_stores/migrations/versions/03742aa7fdd7_add_secrets.py +1 -0
- zenml/zen_stores/migrations/versions/0701da9951a0_added_service_table.py +94 -0
- zenml/zen_stores/migrations/versions/0b06faa59c93_add_service_connectors.py +1 -0
- zenml/zen_stores/migrations/versions/0d707865f404_adding_labels_to_stacks.py +30 -0
- zenml/zen_stores/migrations/versions/0e4735b23577_increase_pipeline_spec_field_length.py +1 -0
- zenml/zen_stores/migrations/versions/1041bc644e0d_remove_secrets_manager.py +6 -3
- zenml/zen_stores/migrations/versions/10a907dad202_delete_mlmd_tables.py +2 -1
- zenml/zen_stores/migrations/versions/14d687c8fa1c_rename_model_config_to_model_version.py +1 -0
- zenml/zen_stores/migrations/versions/19f27d5b234e_add_build_and_deployment_tables.py +1 -0
- zenml/zen_stores/migrations/versions/1a9a9d2a836d_admin_users.py +56 -0
- zenml/zen_stores/migrations/versions/1ac1b9c04da1_make_secrets_values_optional.py +1 -0
- zenml/zen_stores/migrations/versions/1cb6477f72d6_move_artifact_save_type.py +99 -0
- zenml/zen_stores/migrations/versions/1d74e596abb8_add_run_once_start_time_to_schedule.py +36 -0
- zenml/zen_stores/migrations/versions/1d8f30c54477_migrate_to_new_.py +124 -0
- zenml/zen_stores/migrations/versions/248dfd320b68_update_size_of_flavor_config_schema.py +1 -0
- zenml/zen_stores/migrations/versions/25155145c545_separate_actions_and_triggers.py +228 -0
- zenml/zen_stores/migrations/versions/26351d482b9e_add_step_run_unique_constraint.py +37 -0
- zenml/zen_stores/migrations/versions/26b776ad583e_redesign_artifacts.py +9 -10
- zenml/zen_stores/migrations/versions/2d201872e23c_remove_db_dependency_loop.py +29 -0
- zenml/zen_stores/migrations/versions/37835ce041d2_optimizing_database.py +4 -3
- zenml/zen_stores/migrations/versions/389046140cad_data_versioning.py +1 -0
- zenml/zen_stores/migrations/versions/3944116bbd56_rename_project_to_workspace.py +1 -0
- zenml/zen_stores/migrations/versions/3b68abe58f44_add_model_watchtower_entities.py +1 -0
- zenml/zen_stores/migrations/versions/3c5a367730c2_add_environment_info_to_runs.py +1 -0
- zenml/zen_stores/migrations/versions/3dcc5d20e82f_add_last_user_activity.py +51 -0
- zenml/zen_stores/migrations/versions/43a86093b60e_add_labels_for_stack_components.py +1 -0
- zenml/zen_stores/migrations/versions/46506f72f0ed_add_server_settings.py +123 -0
- zenml/zen_stores/migrations/versions/479103df60b6_add_triggers.py +162 -0
- zenml/zen_stores/migrations/versions/4a3087070f4e_add_step_source_code.py +1 -0
- zenml/zen_stores/migrations/versions/4c41c0ca42db_add_code_repository_table.py +1 -0
- zenml/zen_stores/migrations/versions/4d688d8f7aff_rename_model_version_to_model.py +1 -0
- zenml/zen_stores/migrations/versions/4e1972485075_endpoint_artifact_deployment_artifact.py +1 -0
- zenml/zen_stores/migrations/versions/4f66af55fbb9_rename_model_config_model_to_model_.py +1 -0
- zenml/zen_stores/migrations/versions/5330ba58bf20_rename_tables_and_foreign_keys.py +8 -9
- zenml/zen_stores/migrations/versions/5994f9ad0489_introduce_role_permissions.py +4 -2
- zenml/zen_stores/migrations/versions/5cc3f41cf048_add_save_models_to_registry.py +1 -0
- zenml/zen_stores/migrations/versions/6119cd9b93c2_tags_table.py +1 -0
- zenml/zen_stores/migrations/versions/623a234c11f5_add_sdk_docs_url_to_flavors.py +1 -0
- zenml/zen_stores/migrations/versions/6917bce75069_add_pipeline_run_unique_constraint.py +5 -4
- zenml/zen_stores/migrations/versions/6a28c4fd0ef2_add_caching_info.py +1 -0
- zenml/zen_stores/migrations/versions/6f707b385dc1_fix_model_artifacts.py +1 -0
- zenml/zen_stores/migrations/versions/722392c91006_make_is_service_account_mandatory.py +1 -0
- zenml/zen_stores/migrations/versions/72675226b2de_unique_users.py +31 -0
- zenml/zen_stores/migrations/versions/72722dee4686_track_server_version.py +1 -0
- zenml/zen_stores/migrations/versions/7280c14811d6_use_text_type.py +1 -0
- zenml/zen_stores/migrations/versions/728c6369cfaa_add_name_column_to_input_artifact_pk.py +4 -2
- zenml/zen_stores/migrations/versions/729263e47b55_fix_external_input_artifacts.py +1 -0
- zenml/zen_stores/migrations/versions/743ec82b1b3c_update_size_of_build_images.py +3 -2
- zenml/zen_stores/migrations/versions/7500f434b71c_remove_shared_columns.py +4 -2
- zenml/zen_stores/migrations/versions/76a7b9451ccd_add_build_template_deployment_id.py +52 -0
- zenml/zen_stores/migrations/versions/7834208cc3f6_artifact_project_scoping.py +9 -7
- zenml/zen_stores/migrations/versions/7b651bf6822e_track_secrets_in_db.py +7 -7
- zenml/zen_stores/migrations/versions/7d1919bb1ef0_add_run_templates.py +100 -0
- zenml/zen_stores/migrations/versions/7e4a481d17f7_add_identity_table.py +3 -2
- zenml/zen_stores/migrations/versions/7f603e583dd7_fixed_migration.py +2 -1
- zenml/zen_stores/migrations/versions/86fa52918b54_remove_teams_and_roles.py +1 -0
- zenml/zen_stores/migrations/versions/8a64fbfecda0_add_num_outputs_to_run_step.py +1 -0
- zenml/zen_stores/migrations/versions/8ed03137cacc_polymorthic_run_metadata.py +1 -0
- zenml/zen_stores/migrations/versions/904464ea4041_add_pipeline_model_run_unique_constraints.py +192 -0
- zenml/zen_stores/migrations/versions/909550c7c4da_remove_user_hub_token.py +36 -0
- zenml/zen_stores/migrations/versions/93cbda80a732_add_service_accounts.py +1 -0
- zenml/zen_stores/migrations/versions/979eff8fc4b1_add_code_repo_description_and_logo_url.py +1 -0
- zenml/zen_stores/migrations/versions/9971237fa937_artifact_visualizations.py +1 -0
- zenml/zen_stores/migrations/versions/9d8020441014_increase_step_configuration_length.py +1 -0
- zenml/zen_stores/migrations/versions/a1237ba94fd8_add_model_version_producer_run_unique_.py +68 -0
- zenml/zen_stores/migrations/versions/a39c4184c8ce_remove_secrets_manager_flavors.py +3 -2
- zenml/zen_stores/migrations/versions/a91762e6be36_artifact_version_table.py +5 -4
- zenml/zen_stores/migrations/versions/ade72effebaf_added_logs_table.py +1 -0
- zenml/zen_stores/migrations/versions/alembic_start.py +2 -1
- zenml/zen_stores/migrations/versions/b4eccf34dfa3_add_hub_token_to_user_model.py +1 -0
- zenml/zen_stores/migrations/versions/b4fca5241eea_migrate_onboarding_state.py +167 -0
- zenml/zen_stores/migrations/versions/b557b2871693_update_step_run_input_types.py +33 -0
- zenml/zen_stores/migrations/versions/b59aa68fdb1f_simplify_pipelines.py +139 -0
- zenml/zen_stores/migrations/versions/b73bc71f1106_remove_component_spec_path.py +36 -0
- zenml/zen_stores/migrations/versions/bf2120261b5a_add_configured_model_version_id.py +74 -0
- zenml/zen_stores/migrations/versions/c1b18cec3a48_increase_length_on_flavor_config_schema.py +1 -0
- zenml/zen_stores/migrations/versions/c22561cbb3a9_add_artifact_unique_constraints.py +86 -0
- zenml/zen_stores/migrations/versions/cc269488e5a9_separate_run_metadata.py +135 -0
- zenml/zen_stores/migrations/versions/cc9894cb58aa_add_user_metadata.py +41 -0
- zenml/zen_stores/migrations/versions/ccd68b7825ae_add_status_to_pipeline_and_step_run.py +1 -0
- zenml/zen_stores/migrations/versions/d02b3d3464cf_add_orchestrator_run_id_column.py +1 -0
- zenml/zen_stores/migrations/versions/d26471b6fe8f_update_build_filtering.py +1 -0
- zenml/zen_stores/migrations/versions/d7b3acf9aa46_create_schedule_table.py +1 -0
- zenml/zen_stores/migrations/versions/e1d66d91a099_add_stack_and_component_spec_paths_to_.py +1 -0
- zenml/zen_stores/migrations/versions/e5225281b4d3_add_connector_skew_tolerance.py +1 -0
- zenml/zen_stores/migrations/versions/e65aa6708ff7_pipeline_versioning.py +1 -0
- zenml/zen_stores/migrations/versions/ec0d785ca296_create_run_metadata_table.py +1 -0
- zenml/zen_stores/migrations/versions/ec6307720f92_simplify_model_version_links.py +119 -0
- zenml/zen_stores/migrations/versions/f3b3964e3a0f_add_oauth_devices.py +1 -0
- zenml/zen_stores/migrations/versions/f49904a80aa7_increase_length_of_artifact_table_sources.py +1 -0
- zenml/zen_stores/migrations/versions/fbd7f18ced1e_increase_step_run_field_lengths.py +5 -4
- zenml/zen_stores/rest_zen_store.py +1326 -305
- zenml/zen_stores/schemas/__init__.py +22 -3
- zenml/zen_stores/schemas/action_schemas.py +192 -0
- zenml/zen_stores/schemas/api_key_schemas.py +23 -10
- zenml/zen_stores/schemas/artifact_schemas.py +112 -49
- zenml/zen_stores/schemas/artifact_visualization_schemas.py +17 -8
- zenml/zen_stores/schemas/base_schemas.py +27 -0
- zenml/zen_stores/schemas/code_repository_schemas.py +25 -10
- zenml/zen_stores/schemas/component_schemas.py +74 -11
- zenml/zen_stores/schemas/constants.py +16 -0
- zenml/zen_stores/schemas/device_schemas.py +29 -15
- zenml/zen_stores/schemas/event_source_schemas.py +188 -0
- zenml/zen_stores/schemas/flavor_schemas.py +19 -9
- zenml/zen_stores/schemas/logs_schemas.py +12 -6
- zenml/zen_stores/schemas/model_schemas.py +192 -139
- zenml/zen_stores/schemas/pipeline_build_schemas.py +16 -16
- zenml/zen_stores/schemas/pipeline_deployment_schemas.py +58 -17
- zenml/zen_stores/schemas/pipeline_run_schemas.py +170 -35
- zenml/zen_stores/schemas/pipeline_schemas.py +51 -33
- zenml/zen_stores/schemas/run_metadata_schemas.py +28 -78
- zenml/zen_stores/schemas/run_template_schemas.py +267 -0
- zenml/zen_stores/schemas/schedule_schema.py +15 -5
- zenml/zen_stores/schemas/secret_schemas.py +18 -10
- zenml/zen_stores/schemas/server_settings_schemas.py +129 -0
- zenml/zen_stores/schemas/service_connector_schemas.py +13 -6
- zenml/zen_stores/schemas/service_schemas.py +258 -0
- zenml/zen_stores/schemas/stack_schemas.py +23 -6
- zenml/zen_stores/schemas/step_run_schemas.py +132 -41
- zenml/zen_stores/schemas/tag_schemas.py +31 -50
- zenml/zen_stores/schemas/trigger_schemas.py +316 -0
- zenml/zen_stores/schemas/user_schemas.py +66 -23
- zenml/zen_stores/schemas/utils.py +112 -0
- zenml/zen_stores/schemas/workspace_schemas.py +36 -19
- zenml/zen_stores/secrets_stores/aws_secrets_store.py +41 -32
- zenml/zen_stores/secrets_stores/azure_secrets_store.py +20 -23
- zenml/zen_stores/secrets_stores/base_secrets_store.py +80 -12
- zenml/zen_stores/secrets_stores/gcp_secrets_store.py +42 -33
- zenml/zen_stores/secrets_stores/hashicorp_secrets_store.py +7 -11
- zenml/zen_stores/secrets_stores/secrets_store_interface.py +1 -0
- zenml/zen_stores/secrets_stores/service_connector_secrets_store.py +15 -8
- zenml/zen_stores/secrets_stores/sql_secrets_store.py +8 -9
- zenml/zen_stores/sql_zen_store.py +4062 -799
- zenml/zen_stores/template_utils.py +263 -0
- zenml/zen_stores/zen_store_interface.py +614 -44
- zenml_nightly-0.72.0.dev20250116.dist-info/METADATA +486 -0
- zenml_nightly-0.72.0.dev20250116.dist-info/RECORD +1294 -0
- {zenml_nightly-0.55.0.dev20240124.dist-info → zenml_nightly-0.72.0.dev20250116.dist-info}/WHEEL +1 -1
- CLA.md +0 -110
- CODE-OF-CONDUCT.md +0 -132
- CONTRIBUTING.md +0 -260
- README.md +0 -304
- RELEASE_NOTES.md +0 -3919
- ROADMAP.md +0 -5
- SECURITY.md +0 -15
- zenml/_hub/client.py +0 -285
- zenml/_hub/constants.py +0 -21
- zenml/_hub/utils.py +0 -80
- zenml/api.py +0 -61
- zenml/cli/hub.py +0 -1115
- zenml/cli/stack_recipes.py +0 -469
- zenml/integrations/gcp/google_cloud_function.py +0 -187
- zenml/integrations/gcp/google_cloud_scheduler.py +0 -83
- zenml/integrations/gcp/orchestrators/vertex_scheduler/main.py +0 -91
- zenml/integrations/gcp/orchestrators/vertex_scheduler/requirements.txt +0 -2
- zenml/integrations/kserve/__init__.py +0 -57
- zenml/integrations/kserve/custom_deployer/zenml_custom_model.py +0 -175
- zenml/integrations/kserve/flavors/kserve_model_deployer_flavor.py +0 -137
- zenml/integrations/kserve/model_deployers/kserve_model_deployer.py +0 -1003
- zenml/integrations/kserve/secret_schemas/secret_schemas.py +0 -65
- zenml/integrations/kserve/services/kserve_deployment.py +0 -596
- zenml/integrations/kserve/steps/__init__.py +0 -22
- zenml/integrations/kserve/steps/kserve_deployer.py +0 -472
- zenml/integrations/kserve/steps/kserve_step_utils.py +0 -293
- zenml/integrations/kubeflow/utils.py +0 -96
- zenml/lineage_graph/lineage_graph.py +0 -244
- zenml/lineage_graph/node/artifact_node.py +0 -52
- zenml/lineage_graph/node/step_node.py +0 -41
- zenml/models/v2/base/internal.py +0 -37
- zenml/models/v2/base/update.py +0 -40
- zenml/models/v2/misc/hub_plugin_models.py +0 -79
- zenml/new/pipelines/deserialization_utils.py +0 -291
- zenml/new/pipelines/model_utils.py +0 -72
- zenml/new/pipelines/pipeline_decorator.py +0 -109
- zenml/new/steps/step_decorator.py +0 -160
- zenml/pipelines/base_pipeline.py +0 -274
- zenml/post_execution/pipeline.py +0 -58
- zenml/post_execution/pipeline_run.py +0 -55
- zenml/services/service_registry.py +0 -214
- zenml/services/terraform/__init__.py +0 -14
- zenml/services/terraform/terraform_service.py +0 -441
- 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 -42
- zenml/zen_server/dashboard/_redirects +0 -1
- zenml/zen_server/dashboard/asset-manifest.json +0 -131
- zenml/zen_server/dashboard/manifest.json +0 -25
- zenml/zen_server/dashboard/precache-manifest.c139638dcc4d9d3425353266447a2fad.js +0 -462
- zenml/zen_server/dashboard/robots.txt +0 -2
- zenml/zen_server/dashboard/service-worker.js +0 -39
- zenml/zen_server/dashboard/static/css/2.5b37d44a.chunk.css +0 -16
- zenml/zen_server/dashboard/static/css/2.5b37d44a.chunk.css.map +0 -1
- zenml/zen_server/dashboard/static/css/main.77e46c35.chunk.css +0 -2
- zenml/zen_server/dashboard/static/css/main.77e46c35.chunk.css.map +0 -1
- zenml/zen_server/dashboard/static/js/2.bb4cef22.chunk.js +0 -3
- zenml/zen_server/dashboard/static/js/2.bb4cef22.chunk.js.LICENSE.txt +0 -95
- zenml/zen_server/dashboard/static/js/2.bb4cef22.chunk.js.map +0 -1
- zenml/zen_server/dashboard/static/js/main.270838b4.chunk.js +0 -2
- zenml/zen_server/dashboard/static/js/main.270838b4.chunk.js.map +0 -1
- zenml/zen_server/dashboard/static/js/runtime-main.bfca2edd.js +0 -2
- zenml/zen_server/dashboard/static/js/runtime-main.bfca2edd.js.map +0 -1
- zenml/zen_server/dashboard/static/media/AlertTriangle.28aee535.svg +0 -5
- zenml/zen_server/dashboard/static/media/ArrowSquareOut.abfb9bc7.svg +0 -5
- zenml/zen_server/dashboard/static/media/Back.86c23a22.svg +0 -4
- zenml/zen_server/dashboard/static/media/BookOpen.5cb101ff.svg +0 -4
- zenml/zen_server/dashboard/static/media/BoundingBox.1eb98717.svg +0 -10
- zenml/zen_server/dashboard/static/media/Burger.9b1c67d7.svg +0 -3
- zenml/zen_server/dashboard/static/media/Cached.2381fb8d.svg +0 -1
- zenml/zen_server/dashboard/static/media/Calendar.356e11c7.svg +0 -3
- zenml/zen_server/dashboard/static/media/ChartBarHorizontal.0247447b.svg +0 -6
- zenml/zen_server/dashboard/static/media/ChartLine.0d79e18d.svg +0 -4
- zenml/zen_server/dashboard/static/media/ChatDots.2e1c9211.svg +0 -6
- zenml/zen_server/dashboard/static/media/Check.dad6beb2.svg +0 -3
- zenml/zen_server/dashboard/static/media/CheckCircleFilled.c19566d0.svg +0 -3
- zenml/zen_server/dashboard/static/media/Checkbox.af50e31e.svg +0 -3
- zenml/zen_server/dashboard/static/media/ChevronDown.f860ce32.svg +0 -3
- zenml/zen_server/dashboard/static/media/ChevronDownLight.6642d756.svg +0 -3
- zenml/zen_server/dashboard/static/media/ChevronLeft.f6edfcdb.svg +0 -3
- zenml/zen_server/dashboard/static/media/CircleCheck.f98fd6ca.svg +0 -1
- zenml/zen_server/dashboard/static/media/Clock.ffc9de95.svg +0 -3
- zenml/zen_server/dashboard/static/media/Close.74e9efbc.svg +0 -5
- zenml/zen_server/dashboard/static/media/CloseWithBorder.6960930a.svg +0 -3
- zenml/zen_server/dashboard/static/media/CloseWithoutBorder.cd6f71df.svg +0 -3
- zenml/zen_server/dashboard/static/media/CloudArrowUp.0aecb235.svg +0 -6
- zenml/zen_server/dashboard/static/media/Code.ef0f33b5.svg +0 -3
- zenml/zen_server/dashboard/static/media/Config.0be63f8a.svg +0 -1
- zenml/zen_server/dashboard/static/media/Connector.9fd46ef1.svg +0 -10
- zenml/zen_server/dashboard/static/media/Copy.36e2112a.svg +0 -1
- zenml/zen_server/dashboard/static/media/Dashboard.d05787e0.svg +0 -3
- zenml/zen_server/dashboard/static/media/Data.b1c3b5f8.svg +0 -3
- zenml/zen_server/dashboard/static/media/Delete.3c361b28.svg +0 -8
- zenml/zen_server/dashboard/static/media/Docs.7541d478.svg +0 -7
- zenml/zen_server/dashboard/static/media/Download.fba04d87.svg +0 -5
- zenml/zen_server/dashboard/static/media/Edit.490eb294.svg +0 -6
- zenml/zen_server/dashboard/static/media/EmptyRightArrow.23749d01.svg +0 -3
- zenml/zen_server/dashboard/static/media/Example.6396cd37.svg +0 -5
- zenml/zen_server/dashboard/static/media/Extension.1394cd4a.svg +0 -3
- zenml/zen_server/dashboard/static/media/Eye.d9e4ee62.svg +0 -4
- zenml/zen_server/dashboard/static/media/Failed.0213c1a0.svg +0 -1
- zenml/zen_server/dashboard/static/media/FileText.1f15bacd.svg +0 -7
- zenml/zen_server/dashboard/static/media/Filter.ab6b9c0d.svg +0 -3
- zenml/zen_server/dashboard/static/media/Folders.12b29887.svg +0 -5
- zenml/zen_server/dashboard/static/media/FunnelFill.6df4c143.svg +0 -3
- zenml/zen_server/dashboard/static/media/GitCommit.7dd9c2aa.svg +0 -5
- zenml/zen_server/dashboard/static/media/GitHub_Logo.cefc2023.png +0 -0
- zenml/zen_server/dashboard/static/media/Graph.2c63a892.svg +0 -11
- zenml/zen_server/dashboard/static/media/History.08329240.svg +0 -3
- zenml/zen_server/dashboard/static/media/Home.0843b0d5.svg +0 -3
- zenml/zen_server/dashboard/static/media/ImageBuilder.ea762d9c.svg +0 -6
- zenml/zen_server/dashboard/static/media/InProgress.304a0edc.svg +0 -1
- zenml/zen_server/dashboard/static/media/Info.9fe10c5c.svg +0 -3
- zenml/zen_server/dashboard/static/media/KeyboardReturn.491afbe3.svg +0 -3
- zenml/zen_server/dashboard/static/media/Link.72bbb55d.svg +0 -4
- zenml/zen_server/dashboard/static/media/Lock.30f5e1fe.svg +0 -5
- zenml/zen_server/dashboard/static/media/Lock2.a769ea52.svg +0 -3
- zenml/zen_server/dashboard/static/media/LockKey.92f21621.svg +0 -6
- zenml/zen_server/dashboard/static/media/Logs.8bf4d005.svg +0 -5
- zenml/zen_server/dashboard/static/media/MinusCircle.4188f418.svg +0 -4
- zenml/zen_server/dashboard/static/media/ModelRegistry.f0de050a.svg +0 -6
- zenml/zen_server/dashboard/static/media/MultiUser.a2ba7c67.svg +0 -10
- zenml/zen_server/dashboard/static/media/PaginationFirst.92628634.svg +0 -4
- zenml/zen_server/dashboard/static/media/PaginationLast.00d3c732.svg +0 -4
- zenml/zen_server/dashboard/static/media/PaginationNext.86158845.svg +0 -3
- zenml/zen_server/dashboard/static/media/PaginationPrev.60c18a88.svg +0 -3
- zenml/zen_server/dashboard/static/media/Pen.f2d831d4.svg +0 -6
- zenml/zen_server/dashboard/static/media/PhotoCamera.179d6d4c.svg +0 -3
- zenml/zen_server/dashboard/static/media/Pipeline.30d298b0.svg +0 -7
- zenml/zen_server/dashboard/static/media/Plus.5aa1c16b.svg +0 -3
- zenml/zen_server/dashboard/static/media/PlusCircle.92d860dd.svg +0 -5
- zenml/zen_server/dashboard/static/media/Repositories.71a36b8c.svg +0 -3
- zenml/zen_server/dashboard/static/media/RightArrow.f30d3871.svg +0 -29
- zenml/zen_server/dashboard/static/media/Rocket.63bf7b9d.svg +0 -3
- zenml/zen_server/dashboard/static/media/RocketLaunch.1bff2b59.svg +0 -6
- zenml/zen_server/dashboard/static/media/Rubik-Medium.c87313aa.ttf +0 -0
- zenml/zen_server/dashboard/static/media/Rubik-Regular.b3d0902b.ttf +0 -0
- zenml/zen_server/dashboard/static/media/Run.daec4fb2.svg +0 -6
- zenml/zen_server/dashboard/static/media/Search.d1afcce5.svg +0 -4
- zenml/zen_server/dashboard/static/media/Settings.59ca73ae.svg +0 -4
- zenml/zen_server/dashboard/static/media/Share2.46c3ff66.svg +0 -3
- zenml/zen_server/dashboard/static/media/SignOut.6aa718c5.svg +0 -3
- zenml/zen_server/dashboard/static/media/SimplePlus.5cf7ec20.svg +0 -3
- zenml/zen_server/dashboard/static/media/SingleUser.bef3a095.svg +0 -4
- zenml/zen_server/dashboard/static/media/SourceCodePro-Regular.b484b32f.ttf +0 -0
- zenml/zen_server/dashboard/static/media/Stack.19b604ac.svg +0 -5
- zenml/zen_server/dashboard/static/media/StackComponent.b1ba90b5.svg +0 -4
- zenml/zen_server/dashboard/static/media/Star.f0c25022.svg +0 -9
- zenml/zen_server/dashboard/static/media/StarOutline.94ca8cd9.svg +0 -3
- zenml/zen_server/dashboard/static/media/Storefront.4b4796fe.svg +0 -3
- zenml/zen_server/dashboard/static/media/Stream.543e3039.svg +0 -3
- zenml/zen_server/dashboard/static/media/SupportAgent.510ddf1f.svg +0 -8
- zenml/zen_server/dashboard/static/media/Table.77033750.svg +0 -6
- zenml/zen_server/dashboard/static/media/Tool.d5785486.svg +0 -3
- zenml/zen_server/dashboard/static/media/UserPlus.741a99d7.svg +0 -6
- zenml/zen_server/dashboard/static/media/Verified.0625b2a0.svg +0 -3
- zenml/zen_server/dashboard/static/media/addNew.4fb6c939.svg +0 -8
- zenml/zen_server/dashboard/static/media/arrowClose.cbd53f3f.svg +0 -3
- zenml/zen_server/dashboard/static/media/arrowOpen.6ceef0af.svg +0 -3
- zenml/zen_server/dashboard/static/media/check_small.30bc0138.svg +0 -3
- zenml/zen_server/dashboard/static/media/circleArrowSideClose.98d6013e.svg +0 -18
- zenml/zen_server/dashboard/static/media/circleArrowSideOpen.63653df6.svg +0 -18
- zenml/zen_server/dashboard/static/media/image.104fd14b.png +0 -0
- zenml/zen_server/dashboard/static/media/imageAddIcon.e83004a9.svg +0 -7
- zenml/zen_server/dashboard/static/media/logo.93333e5c.svg +0 -1
- zenml/zen_server/dashboard/static/media/logo_small.4204397d.svg +0 -3
- zenml/zen_server/dashboard/static/media/logo_white.d4b4414e.svg +0 -20
- zenml/zen_server/dashboard/static/media/notConnected.5e2c8ea7.svg +0 -8
- zenml/zen_server/dashboard/static/media/plugin-fallback.72c294e6.svg +0 -6
- zenml/zen_server/dashboard/static/media/share.bcd998b0.svg +0 -5
- zenml/zen_server/dashboard/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 -332
- 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 -14
- 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 -179
- zenml/zen_server/deploy/terraform/recipes/aws/vpc.tf +0 -47
- zenml/zen_server/deploy/terraform/recipes/aws/zen_server.tf +0 -111
- 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 -14
- 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 -188
- zenml/zen_server/deploy/terraform/recipes/azure/zen_server.tf +0 -111
- 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 -14
- 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 -183
- zenml/zen_server/deploy/terraform/recipes/gcp/zen_server.tf +0 -122
- zenml/zen_server/deploy/terraform/terraform_zen_server.py +0 -255
- zenml/zen_server/routers/run_metadata_endpoints.py +0 -97
- zenml_nightly-0.55.0.dev20240124.dist-info/METADATA +0 -438
- zenml_nightly-0.55.0.dev20240124.dist-info/RECORD +0 -1072
- {zenml_nightly-0.55.0.dev20240124.dist-info → zenml_nightly-0.72.0.dev20250116.dist-info}/LICENSE +0 -0
- {zenml_nightly-0.55.0.dev20240124.dist-info → zenml_nightly-0.72.0.dev20250116.dist-info}/entry_points.txt +0 -0
zenml/steps/base_step.py
CHANGED
@@ -12,46 +12,52 @@
|
|
12
12
|
# or implied. See the License for the specific language governing
|
13
13
|
# permissions and limitations under the License.
|
14
14
|
"""Base Step for ZenML."""
|
15
|
+
|
15
16
|
import copy
|
16
17
|
import hashlib
|
17
18
|
import inspect
|
18
19
|
from abc import abstractmethod
|
19
20
|
from collections import defaultdict
|
20
|
-
from types import FunctionType
|
21
21
|
from typing import (
|
22
22
|
TYPE_CHECKING,
|
23
23
|
Any,
|
24
24
|
Dict,
|
25
|
+
List,
|
25
26
|
Mapping,
|
26
27
|
Optional,
|
27
28
|
Sequence,
|
28
|
-
Set,
|
29
29
|
Tuple,
|
30
30
|
Type,
|
31
31
|
TypeVar,
|
32
32
|
Union,
|
33
|
-
cast,
|
34
33
|
)
|
35
34
|
|
36
|
-
from pydantic import BaseModel,
|
35
|
+
from pydantic import BaseModel, ConfigDict, ValidationError
|
37
36
|
|
37
|
+
from zenml.client_lazy_loader import ClientLazyLoader
|
38
|
+
from zenml.config.retry_config import StepRetryConfig
|
38
39
|
from zenml.config.source import Source
|
39
|
-
from zenml.constants import
|
40
|
-
|
40
|
+
from zenml.constants import (
|
41
|
+
CODE_HASH_PARAMETER_NAME,
|
42
|
+
ENV_ZENML_RUN_SINGLE_STEPS_WITHOUT_STACK,
|
43
|
+
handle_bool_env_var,
|
44
|
+
)
|
45
|
+
from zenml.exceptions import StepInterfaceError
|
41
46
|
from zenml.logger import get_logger
|
42
47
|
from zenml.materializers.base_materializer import BaseMaterializer
|
43
48
|
from zenml.materializers.materializer_registry import materializer_registry
|
44
|
-
from zenml.steps.base_parameters import BaseParameters
|
45
49
|
from zenml.steps.entrypoint_function_utils import (
|
46
50
|
StepArtifact,
|
47
|
-
get_step_entrypoint_signature,
|
48
51
|
validate_entrypoint_function,
|
49
52
|
)
|
50
53
|
from zenml.steps.utils import (
|
51
54
|
resolve_type_annotation,
|
55
|
+
run_as_single_step_pipeline,
|
52
56
|
)
|
53
57
|
from zenml.utils import (
|
54
58
|
dict_utils,
|
59
|
+
materializer_utils,
|
60
|
+
notebook_utils,
|
55
61
|
pydantic_utils,
|
56
62
|
settings_utils,
|
57
63
|
source_code_utils,
|
@@ -72,10 +78,10 @@ if TYPE_CHECKING:
|
|
72
78
|
)
|
73
79
|
from zenml.model.lazy_load import ModelVersionDataLazyLoader
|
74
80
|
from zenml.model.model import Model
|
81
|
+
from zenml.models import ArtifactVersionResponse
|
82
|
+
from zenml.types import HookSpecification
|
75
83
|
|
76
|
-
ParametersOrDict = Union["BaseParameters", Dict[str, Any]]
|
77
84
|
MaterializerClassOrSource = Union[str, Source, Type["BaseMaterializer"]]
|
78
|
-
HookSpecification = Union[str, Source, FunctionType]
|
79
85
|
OutputMaterializersSpecification = Union[
|
80
86
|
"MaterializerClassOrSource",
|
81
87
|
Sequence["MaterializerClassOrSource"],
|
@@ -85,43 +91,14 @@ if TYPE_CHECKING:
|
|
85
91
|
|
86
92
|
logger = get_logger(__name__)
|
87
93
|
|
88
|
-
|
89
|
-
class BaseStepMeta(type):
|
90
|
-
"""Metaclass for `BaseStep`.
|
91
|
-
|
92
|
-
Makes sure that the entrypoint function has valid parameters and type
|
93
|
-
annotations.
|
94
|
-
"""
|
95
|
-
|
96
|
-
def __new__(
|
97
|
-
mcs, name: str, bases: Tuple[Type[Any], ...], dct: Dict[str, Any]
|
98
|
-
) -> "BaseStepMeta":
|
99
|
-
"""Set up a new class with a qualified spec.
|
100
|
-
|
101
|
-
Args:
|
102
|
-
name: The name of the class.
|
103
|
-
bases: The base classes of the class.
|
104
|
-
dct: The attributes of the class.
|
105
|
-
|
106
|
-
Returns:
|
107
|
-
The new class.
|
108
|
-
"""
|
109
|
-
cls = cast(Type["BaseStep"], super().__new__(mcs, name, bases, dct))
|
110
|
-
if name not in {"BaseStep", "_DecoratedStep"}:
|
111
|
-
validate_entrypoint_function(cls.entrypoint)
|
112
|
-
|
113
|
-
return cls
|
114
|
-
|
115
|
-
|
116
94
|
T = TypeVar("T", bound="BaseStep")
|
117
95
|
|
118
96
|
|
119
|
-
class BaseStep
|
97
|
+
class BaseStep:
|
120
98
|
"""Abstract base class for all ZenML steps."""
|
121
99
|
|
122
100
|
def __init__(
|
123
101
|
self,
|
124
|
-
*args: Any,
|
125
102
|
name: Optional[str] = None,
|
126
103
|
enable_cache: Optional[bool] = None,
|
127
104
|
enable_artifact_metadata: Optional[bool] = None,
|
@@ -129,7 +106,7 @@ class BaseStep(metaclass=BaseStepMeta):
|
|
129
106
|
enable_step_logs: Optional[bool] = None,
|
130
107
|
experiment_tracker: Optional[str] = None,
|
131
108
|
step_operator: Optional[str] = None,
|
132
|
-
parameters: Optional[
|
109
|
+
parameters: Optional[Dict[str, Any]] = None,
|
133
110
|
output_materializers: Optional[
|
134
111
|
"OutputMaterializersSpecification"
|
135
112
|
] = None,
|
@@ -138,12 +115,12 @@ class BaseStep(metaclass=BaseStepMeta):
|
|
138
115
|
on_failure: Optional["HookSpecification"] = None,
|
139
116
|
on_success: Optional["HookSpecification"] = None,
|
140
117
|
model: Optional["Model"] = None,
|
141
|
-
|
118
|
+
retry: Optional[StepRetryConfig] = None,
|
119
|
+
substitutions: Optional[Dict[str, str]] = None,
|
142
120
|
) -> None:
|
143
121
|
"""Initializes a step.
|
144
122
|
|
145
123
|
Args:
|
146
|
-
*args: Positional arguments passed to the step.
|
147
124
|
name: The name of the step.
|
148
125
|
enable_cache: If caching should be enabled for this step.
|
149
126
|
enable_artifact_metadata: If artifact metadata should be enabled
|
@@ -167,55 +144,43 @@ class BaseStep(metaclass=BaseStepMeta):
|
|
167
144
|
be a function with no arguments, or a source path to such a
|
168
145
|
function (e.g. `module.my_function`).
|
169
146
|
model: configuration of the model version in the Model Control Plane.
|
170
|
-
|
147
|
+
retry: Configuration for retrying the step in case of failure.
|
148
|
+
substitutions: Extra placeholders to use in the name template.
|
171
149
|
"""
|
172
150
|
from zenml.config.step_configurations import PartialStepConfiguration
|
173
151
|
|
174
|
-
self._upstream_steps: Set["BaseStep"] = set()
|
175
152
|
self.entrypoint_definition = validate_entrypoint_function(
|
176
|
-
self.entrypoint,
|
153
|
+
self.entrypoint,
|
154
|
+
reserved_arguments=["after", "id"],
|
177
155
|
)
|
178
156
|
|
179
157
|
name = name or self.__class__.__name__
|
180
158
|
|
181
|
-
requires_context = self.entrypoint_definition.context is not None
|
182
|
-
if enable_cache is None:
|
183
|
-
if requires_context:
|
184
|
-
# Using the StepContext inside a step provides access to
|
185
|
-
# external resources which might influence the step execution.
|
186
|
-
# We therefore disable caching unless it is explicitly enabled
|
187
|
-
enable_cache = False
|
188
|
-
logger.debug(
|
189
|
-
"Step '%s': Step context required and caching not "
|
190
|
-
"explicitly enabled.",
|
191
|
-
name,
|
192
|
-
)
|
193
|
-
|
194
159
|
logger.debug(
|
195
|
-
"Step
|
160
|
+
"Step `%s`: Caching %s.",
|
196
161
|
name,
|
197
162
|
"enabled" if enable_cache is not False else "disabled",
|
198
163
|
)
|
199
164
|
logger.debug(
|
200
|
-
"Step
|
165
|
+
"Step `%s`: Artifact metadata %s.",
|
201
166
|
name,
|
202
167
|
"enabled" if enable_artifact_metadata is not False else "disabled",
|
203
168
|
)
|
204
169
|
logger.debug(
|
205
|
-
"Step
|
170
|
+
"Step `%s`: Artifact visualization %s.",
|
206
171
|
name,
|
207
172
|
"enabled"
|
208
173
|
if enable_artifact_visualization is not False
|
209
174
|
else "disabled",
|
210
175
|
)
|
211
176
|
logger.debug(
|
212
|
-
"Step
|
177
|
+
"Step `%s`: logs %s.",
|
213
178
|
name,
|
214
179
|
"enabled" if enable_step_logs is not False else "disabled",
|
215
180
|
)
|
216
181
|
if model is not None:
|
217
182
|
logger.debug(
|
218
|
-
"Step
|
183
|
+
"Step `%s`: Is in Model context %s.",
|
219
184
|
name,
|
220
185
|
{
|
221
186
|
"model": model.name,
|
@@ -240,8 +205,11 @@ class BaseStep(metaclass=BaseStepMeta):
|
|
240
205
|
on_failure=on_failure,
|
241
206
|
on_success=on_success,
|
242
207
|
model=model,
|
208
|
+
retry=retry,
|
209
|
+
substitutions=substitutions,
|
243
210
|
)
|
244
|
-
|
211
|
+
|
212
|
+
notebook_utils.try_to_save_notebook_cell_code(self.source_object)
|
245
213
|
|
246
214
|
@abstractmethod
|
247
215
|
def entrypoint(self, *args: Any, **kwargs: Any) -> Any:
|
@@ -285,45 +253,6 @@ class BaseStep(metaclass=BaseStepMeta):
|
|
285
253
|
"""
|
286
254
|
return source_utils.resolve(self.__class__)
|
287
255
|
|
288
|
-
@property
|
289
|
-
def upstream_steps(self) -> Set["BaseStep"]:
|
290
|
-
"""Names of the upstream steps of this step.
|
291
|
-
|
292
|
-
This property will only contain the full set of upstream steps once
|
293
|
-
it's parent pipeline `connect(...)` method was called.
|
294
|
-
|
295
|
-
Returns:
|
296
|
-
Set of upstream step names.
|
297
|
-
"""
|
298
|
-
return self._upstream_steps
|
299
|
-
|
300
|
-
def after(self, step: "BaseStep") -> None:
|
301
|
-
"""Adds an upstream step to this step.
|
302
|
-
|
303
|
-
Calling this method makes sure this step only starts running once the
|
304
|
-
given step has successfully finished executing.
|
305
|
-
|
306
|
-
**Note**: This can only be called inside the pipeline connect function
|
307
|
-
which is decorated with the `@pipeline` decorator. Any calls outside
|
308
|
-
this function will be ignored.
|
309
|
-
|
310
|
-
Example:
|
311
|
-
The following pipeline will run its steps sequentially in the following
|
312
|
-
order: step_2 -> step_1 -> step_3
|
313
|
-
|
314
|
-
```python
|
315
|
-
@pipeline
|
316
|
-
def example_pipeline(step_1, step_2, step_3):
|
317
|
-
step_1.after(step_2)
|
318
|
-
step_3(step_1(), step_2())
|
319
|
-
```
|
320
|
-
|
321
|
-
Args:
|
322
|
-
step: A step which should finish executing before this step is
|
323
|
-
started.
|
324
|
-
"""
|
325
|
-
self._upstream_steps.add(step)
|
326
|
-
|
327
256
|
@property
|
328
257
|
def source_object(self) -> Any:
|
329
258
|
"""The source object of this step.
|
@@ -359,7 +288,7 @@ class BaseStep(metaclass=BaseStepMeta):
|
|
359
288
|
A dictionary containing the caching parameters
|
360
289
|
"""
|
361
290
|
parameters = {
|
362
|
-
|
291
|
+
CODE_HASH_PARAMETER_NAME: source_code_utils.get_hashed_source_code(
|
363
292
|
self.source_object
|
364
293
|
)
|
365
294
|
}
|
@@ -379,71 +308,13 @@ class BaseStep(metaclass=BaseStepMeta):
|
|
379
308
|
|
380
309
|
return parameters
|
381
310
|
|
382
|
-
def _verify_and_apply_init_params(self, *args: Any, **kwargs: Any) -> None:
|
383
|
-
"""Verifies the initialization args and kwargs of this step.
|
384
|
-
|
385
|
-
This method makes sure that there is only one parameters object passed
|
386
|
-
at initialization and that it was passed using the correct name and
|
387
|
-
type specified in the step declaration.
|
388
|
-
|
389
|
-
Args:
|
390
|
-
*args: The args passed to the init method of this step.
|
391
|
-
**kwargs: The kwargs passed to the init method of this step.
|
392
|
-
|
393
|
-
Raises:
|
394
|
-
StepInterfaceError: If there are too many arguments or arguments
|
395
|
-
with a wrong name/type.
|
396
|
-
"""
|
397
|
-
maximum_arg_count = (
|
398
|
-
1 if self.entrypoint_definition.legacy_params else 0
|
399
|
-
)
|
400
|
-
arg_count = len(args) + len(kwargs)
|
401
|
-
if arg_count > maximum_arg_count:
|
402
|
-
raise StepInterfaceError(
|
403
|
-
f"Too many arguments ({arg_count}, expected: "
|
404
|
-
f"{maximum_arg_count}) passed when creating a "
|
405
|
-
f"'{self.name}' step."
|
406
|
-
)
|
407
|
-
|
408
|
-
if self.entrypoint_definition.legacy_params:
|
409
|
-
if args:
|
410
|
-
config = args[0]
|
411
|
-
elif kwargs:
|
412
|
-
key, config = kwargs.popitem()
|
413
|
-
|
414
|
-
if key != self.entrypoint_definition.legacy_params.name:
|
415
|
-
raise StepInterfaceError(
|
416
|
-
f"Unknown keyword argument '{key}' when creating a "
|
417
|
-
f"'{self.name}' step, only expected a single "
|
418
|
-
"argument with key "
|
419
|
-
f"'{self.entrypoint_definition.legacy_params.name}'."
|
420
|
-
)
|
421
|
-
else:
|
422
|
-
# This step requires configuration parameters but no parameters
|
423
|
-
# object was passed as an argument. The parameters might be
|
424
|
-
# set via default values in the parameters class or in a
|
425
|
-
# configuration file, so we continue for now and verify
|
426
|
-
# that all parameters are set before running the step
|
427
|
-
return
|
428
|
-
|
429
|
-
if not isinstance(
|
430
|
-
config, self.entrypoint_definition.legacy_params.annotation
|
431
|
-
):
|
432
|
-
raise StepInterfaceError(
|
433
|
-
f"`{config}` object passed when creating a "
|
434
|
-
f"'{self.name}' step is not a "
|
435
|
-
f"`{self.entrypoint_definition.legacy_params.annotation.__name__} "
|
436
|
-
"` instance."
|
437
|
-
)
|
438
|
-
|
439
|
-
self.configure(parameters=config)
|
440
|
-
|
441
311
|
def _parse_call_args(
|
442
312
|
self, *args: Any, **kwargs: Any
|
443
313
|
) -> Tuple[
|
444
314
|
Dict[str, "StepArtifact"],
|
445
|
-
Dict[str, "ExternalArtifact"],
|
315
|
+
Dict[str, Union["ExternalArtifact", "ArtifactVersionResponse"]],
|
446
316
|
Dict[str, "ModelVersionDataLazyLoader"],
|
317
|
+
Dict[str, "ClientLazyLoader"],
|
447
318
|
Dict[str, Any],
|
448
319
|
Dict[str, Any],
|
449
320
|
]:
|
@@ -460,13 +331,14 @@ class BaseStep(metaclass=BaseStepMeta):
|
|
460
331
|
The artifacts, external artifacts, model version artifacts/metadata and parameters for the step.
|
461
332
|
"""
|
462
333
|
from zenml.artifacts.external_artifact import ExternalArtifact
|
334
|
+
from zenml.metadata.lazy_load import LazyRunMetadataResponse
|
463
335
|
from zenml.model.lazy_load import ModelVersionDataLazyLoader
|
464
336
|
from zenml.models.v2.core.artifact_version import (
|
337
|
+
ArtifactVersionResponse,
|
465
338
|
LazyArtifactVersionResponse,
|
466
339
|
)
|
467
|
-
from zenml.models.v2.core.run_metadata import LazyRunMetadataResponse
|
468
340
|
|
469
|
-
signature =
|
341
|
+
signature = inspect.signature(self.entrypoint, follow_wrapped=True)
|
470
342
|
|
471
343
|
try:
|
472
344
|
bound_args = signature.bind_partial(*args, **kwargs)
|
@@ -476,8 +348,11 @@ class BaseStep(metaclass=BaseStepMeta):
|
|
476
348
|
) from e
|
477
349
|
|
478
350
|
artifacts = {}
|
479
|
-
external_artifacts
|
351
|
+
external_artifacts: Dict[
|
352
|
+
str, Union["ExternalArtifact", "ArtifactVersionResponse"]
|
353
|
+
] = {}
|
480
354
|
model_artifacts_or_metadata = {}
|
355
|
+
client_lazy_loaders = {}
|
481
356
|
parameters = {}
|
482
357
|
default_parameters = {}
|
483
358
|
|
@@ -505,18 +380,24 @@ class BaseStep(metaclass=BaseStepMeta):
|
|
505
380
|
)
|
506
381
|
elif isinstance(value, LazyArtifactVersionResponse):
|
507
382
|
model_artifacts_or_metadata[key] = ModelVersionDataLazyLoader(
|
508
|
-
|
509
|
-
|
510
|
-
|
383
|
+
model_name=value.lazy_load_model_name,
|
384
|
+
model_version=value.lazy_load_model_version,
|
385
|
+
artifact_name=value.lazy_load_name,
|
386
|
+
artifact_version=value.lazy_load_version,
|
511
387
|
metadata_name=None,
|
512
388
|
)
|
389
|
+
elif isinstance(value, ArtifactVersionResponse):
|
390
|
+
external_artifacts[key] = value
|
513
391
|
elif isinstance(value, LazyRunMetadataResponse):
|
514
392
|
model_artifacts_or_metadata[key] = ModelVersionDataLazyLoader(
|
515
|
-
|
516
|
-
|
517
|
-
|
518
|
-
|
393
|
+
model_name=value.lazy_load_model_name,
|
394
|
+
model_version=value.lazy_load_model_version,
|
395
|
+
artifact_name=value.lazy_load_artifact_name,
|
396
|
+
artifact_version=value.lazy_load_artifact_version,
|
397
|
+
metadata_name=value.lazy_load_metadata_name,
|
519
398
|
)
|
399
|
+
elif isinstance(value, ClientLazyLoader):
|
400
|
+
client_lazy_loaders[key] = value
|
520
401
|
else:
|
521
402
|
parameters[key] = value
|
522
403
|
|
@@ -534,6 +415,7 @@ class BaseStep(metaclass=BaseStepMeta):
|
|
534
415
|
and key not in external_artifacts
|
535
416
|
and key not in model_artifacts_or_metadata
|
536
417
|
and key not in self.configuration.parameters
|
418
|
+
and key not in client_lazy_loaders
|
537
419
|
):
|
538
420
|
default_parameters[key] = value
|
539
421
|
|
@@ -541,6 +423,7 @@ class BaseStep(metaclass=BaseStepMeta):
|
|
541
423
|
artifacts,
|
542
424
|
external_artifacts,
|
543
425
|
model_artifacts_or_metadata,
|
426
|
+
client_lazy_loaders,
|
544
427
|
parameters,
|
545
428
|
default_parameters,
|
546
429
|
)
|
@@ -568,17 +451,43 @@ class BaseStep(metaclass=BaseStepMeta):
|
|
568
451
|
Returns:
|
569
452
|
The outputs of the entrypoint function call.
|
570
453
|
"""
|
571
|
-
from zenml.
|
454
|
+
from zenml.pipelines.pipeline_definition import Pipeline
|
572
455
|
|
573
456
|
if not Pipeline.ACTIVE_PIPELINE:
|
574
|
-
|
575
|
-
|
576
|
-
|
457
|
+
from zenml import constants, get_step_context
|
458
|
+
|
459
|
+
# If the environment variable was set to explicitly not run on the
|
460
|
+
# stack, we do that.
|
461
|
+
run_without_stack = handle_bool_env_var(
|
462
|
+
ENV_ZENML_RUN_SINGLE_STEPS_WITHOUT_STACK, default=False
|
463
|
+
)
|
464
|
+
if run_without_stack:
|
465
|
+
return self.call_entrypoint(*args, **kwargs)
|
466
|
+
|
467
|
+
try:
|
468
|
+
get_step_context()
|
469
|
+
except RuntimeError:
|
470
|
+
pass
|
471
|
+
else:
|
472
|
+
# We're currently inside the execution of a different step
|
473
|
+
# -> We don't want to launch another single step pipeline here,
|
474
|
+
# but instead just call the step function
|
475
|
+
return self.call_entrypoint(*args, **kwargs)
|
476
|
+
|
477
|
+
if constants.SHOULD_PREVENT_PIPELINE_EXECUTION:
|
478
|
+
logger.info(
|
479
|
+
"Preventing execution of step '%s'.",
|
480
|
+
self.name,
|
481
|
+
)
|
482
|
+
return
|
483
|
+
|
484
|
+
return run_as_single_step_pipeline(self, *args, **kwargs)
|
577
485
|
|
578
486
|
(
|
579
487
|
input_artifacts,
|
580
488
|
external_artifacts,
|
581
489
|
model_artifacts_or_metadata,
|
490
|
+
client_lazy_loaders,
|
582
491
|
parameters,
|
583
492
|
default_parameters,
|
584
493
|
) = self._parse_call_args(*args, **kwargs)
|
@@ -596,6 +505,7 @@ class BaseStep(metaclass=BaseStepMeta):
|
|
596
505
|
input_artifacts=input_artifacts,
|
597
506
|
external_artifacts=external_artifacts,
|
598
507
|
model_artifacts_or_metadata=model_artifacts_or_metadata,
|
508
|
+
client_lazy_loaders=client_lazy_loaders,
|
599
509
|
parameters=parameters,
|
600
510
|
default_parameters=default_parameters,
|
601
511
|
upstream_steps=upstream_steps,
|
@@ -631,12 +541,15 @@ class BaseStep(metaclass=BaseStepMeta):
|
|
631
541
|
try:
|
632
542
|
validated_args = pydantic_utils.validate_function_args(
|
633
543
|
self.entrypoint,
|
634
|
-
|
544
|
+
ConfigDict(arbitrary_types_allowed=True),
|
635
545
|
*args,
|
636
546
|
**kwargs,
|
637
547
|
)
|
638
548
|
except ValidationError as e:
|
639
|
-
raise StepInterfaceError(
|
549
|
+
raise StepInterfaceError(
|
550
|
+
"Invalid step function entrypoint arguments. Check out the "
|
551
|
+
"pydantic error above for more details."
|
552
|
+
) from e
|
640
553
|
|
641
554
|
return self.entrypoint(**validated_args)
|
642
555
|
|
@@ -669,14 +582,13 @@ class BaseStep(metaclass=BaseStepMeta):
|
|
669
582
|
|
670
583
|
def configure(
|
671
584
|
self: T,
|
672
|
-
name: Optional[str] = None,
|
673
585
|
enable_cache: Optional[bool] = None,
|
674
586
|
enable_artifact_metadata: Optional[bool] = None,
|
675
587
|
enable_artifact_visualization: Optional[bool] = None,
|
676
588
|
enable_step_logs: Optional[bool] = None,
|
677
589
|
experiment_tracker: Optional[str] = None,
|
678
590
|
step_operator: Optional[str] = None,
|
679
|
-
parameters: Optional[
|
591
|
+
parameters: Optional[Dict[str, Any]] = None,
|
680
592
|
output_materializers: Optional[
|
681
593
|
"OutputMaterializersSpecification"
|
682
594
|
] = None,
|
@@ -686,6 +598,8 @@ class BaseStep(metaclass=BaseStepMeta):
|
|
686
598
|
on_success: Optional["HookSpecification"] = None,
|
687
599
|
model: Optional["Model"] = None,
|
688
600
|
merge: bool = True,
|
601
|
+
retry: Optional[StepRetryConfig] = None,
|
602
|
+
substitutions: Optional[Dict[str, str]] = None,
|
689
603
|
) -> T:
|
690
604
|
"""Configures the step.
|
691
605
|
|
@@ -700,7 +614,6 @@ class BaseStep(metaclass=BaseStepMeta):
|
|
700
614
|
step.configuration.extra # {"key2": 2}
|
701
615
|
|
702
616
|
Args:
|
703
|
-
name: DEPRECATED: The name of the step.
|
704
617
|
enable_cache: If caching should be enabled for this step.
|
705
618
|
enable_artifact_metadata: If artifact metadata should be enabled
|
706
619
|
for this step.
|
@@ -728,6 +641,8 @@ class BaseStep(metaclass=BaseStepMeta):
|
|
728
641
|
configurations. If `False` the given configurations will
|
729
642
|
overwrite all existing ones. See the general description of this
|
730
643
|
method for an example.
|
644
|
+
retry: Configuration for retrying the step in case of failure.
|
645
|
+
substitutions: Extra placeholders to use in the name template.
|
731
646
|
|
732
647
|
Returns:
|
733
648
|
The step instance that this method was called on.
|
@@ -735,9 +650,6 @@ class BaseStep(metaclass=BaseStepMeta):
|
|
735
650
|
from zenml.config.step_configurations import StepConfigurationUpdate
|
736
651
|
from zenml.hooks.hook_validators import resolve_and_validate_hook
|
737
652
|
|
738
|
-
if name:
|
739
|
-
logger.warning("Configuring the name of a step is deprecated.")
|
740
|
-
|
741
653
|
def _resolve_if_necessary(
|
742
654
|
value: Union[str, Source, Type[Any]],
|
743
655
|
) -> Source:
|
@@ -779,9 +691,6 @@ class BaseStep(metaclass=BaseStepMeta):
|
|
779
691
|
# string of on_success hook function to be used for this step
|
780
692
|
success_hook_source = resolve_and_validate_hook(on_success)
|
781
693
|
|
782
|
-
if isinstance(parameters, BaseParameters):
|
783
|
-
parameters = parameters.dict()
|
784
|
-
|
785
694
|
values = dict_utils.remove_none_values(
|
786
695
|
{
|
787
696
|
"enable_cache": enable_cache,
|
@@ -797,6 +706,8 @@ class BaseStep(metaclass=BaseStepMeta):
|
|
797
706
|
"failure_hook_source": failure_hook_source,
|
798
707
|
"success_hook_source": success_hook_source,
|
799
708
|
"model": model,
|
709
|
+
"retry": retry,
|
710
|
+
"substitutions": substitutions,
|
800
711
|
}
|
801
712
|
)
|
802
713
|
config = StepConfigurationUpdate(**values)
|
@@ -811,7 +722,7 @@ class BaseStep(metaclass=BaseStepMeta):
|
|
811
722
|
enable_step_logs: Optional[bool] = None,
|
812
723
|
experiment_tracker: Optional[str] = None,
|
813
724
|
step_operator: Optional[str] = None,
|
814
|
-
parameters: Optional[
|
725
|
+
parameters: Optional[Dict[str, Any]] = None,
|
815
726
|
output_materializers: Optional[
|
816
727
|
"OutputMaterializersSpecification"
|
817
728
|
] = None,
|
@@ -821,6 +732,7 @@ class BaseStep(metaclass=BaseStepMeta):
|
|
821
732
|
on_success: Optional["HookSpecification"] = None,
|
822
733
|
model: Optional["Model"] = None,
|
823
734
|
merge: bool = True,
|
735
|
+
substitutions: Optional[Dict[str, str]] = None,
|
824
736
|
) -> "BaseStep":
|
825
737
|
"""Copies the step and applies the given configurations.
|
826
738
|
|
@@ -852,6 +764,7 @@ class BaseStep(metaclass=BaseStepMeta):
|
|
852
764
|
configurations. If `False` the given configurations will
|
853
765
|
overwrite all existing ones. See the general description of this
|
854
766
|
method for an example.
|
767
|
+
substitutions: Extra placeholders for the step name.
|
855
768
|
|
856
769
|
Returns:
|
857
770
|
The copied step instance.
|
@@ -872,6 +785,7 @@ class BaseStep(metaclass=BaseStepMeta):
|
|
872
785
|
on_success=on_success,
|
873
786
|
model=model,
|
874
787
|
merge=merge,
|
788
|
+
substitutions=substitutions,
|
875
789
|
)
|
876
790
|
return step_copy
|
877
791
|
|
@@ -952,15 +866,14 @@ class BaseStep(metaclass=BaseStepMeta):
|
|
952
866
|
conflicting_parameters[key] = (value, runtime_value)
|
953
867
|
if key in self.entrypoint_definition.inputs:
|
954
868
|
self.entrypoint_definition.validate_input(key=key, value=value)
|
955
|
-
|
956
|
-
elif not self.entrypoint_definition.legacy_params:
|
869
|
+
else:
|
957
870
|
raise StepInterfaceError(
|
958
871
|
f"Unable to find parameter '{key}' in step function "
|
959
872
|
"signature."
|
960
873
|
)
|
961
874
|
if conflicting_parameters:
|
962
875
|
is_plural = "s" if len(conflicting_parameters) > 1 else ""
|
963
|
-
msg = f"Configured parameter{is_plural} for the step
|
876
|
+
msg = f"Configured parameter{is_plural} for the step '{self.name}' conflict{'' if not is_plural else 's'} with parameter{is_plural} passed in runtime:\n"
|
964
877
|
for key, values in conflicting_parameters.items():
|
965
878
|
msg += (
|
966
879
|
f"`{key}`: config=`{values[0]}` | runtime=`{values[1]}`\n"
|
@@ -1025,6 +938,7 @@ To avoid this consider setting step parameters only in one place (config or code
|
|
1025
938
|
input_artifacts: Dict[str, "StepArtifact"],
|
1026
939
|
external_artifacts: Dict[str, "ExternalArtifactConfiguration"],
|
1027
940
|
model_artifacts_or_metadata: Dict[str, "ModelVersionDataLazyLoader"],
|
941
|
+
client_lazy_loaders: Dict[str, "ClientLazyLoader"],
|
1028
942
|
) -> None:
|
1029
943
|
"""Validates the step inputs.
|
1030
944
|
|
@@ -1035,6 +949,7 @@ To avoid this consider setting step parameters only in one place (config or code
|
|
1035
949
|
input_artifacts: The input artifacts.
|
1036
950
|
external_artifacts: The external input artifacts.
|
1037
951
|
model_artifacts_or_metadata: The model artifacts or metadata.
|
952
|
+
client_lazy_loaders: The client lazy loaders.
|
1038
953
|
|
1039
954
|
Raises:
|
1040
955
|
StepInterfaceError: If an entrypoint input is missing.
|
@@ -1045,15 +960,19 @@ To avoid this consider setting step parameters only in one place (config or code
|
|
1045
960
|
or key in self.configuration.parameters
|
1046
961
|
or key in external_artifacts
|
1047
962
|
or key in model_artifacts_or_metadata
|
963
|
+
or key in client_lazy_loaders
|
1048
964
|
):
|
1049
965
|
continue
|
1050
|
-
raise StepInterfaceError(
|
966
|
+
raise StepInterfaceError(
|
967
|
+
f"Missing entrypoint input '{key}' in step '{self.name}'."
|
968
|
+
)
|
1051
969
|
|
1052
970
|
def _finalize_configuration(
|
1053
971
|
self,
|
1054
972
|
input_artifacts: Dict[str, "StepArtifact"],
|
1055
973
|
external_artifacts: Dict[str, "ExternalArtifactConfiguration"],
|
1056
974
|
model_artifacts_or_metadata: Dict[str, "ModelVersionDataLazyLoader"],
|
975
|
+
client_lazy_loaders: Dict[str, "ClientLazyLoader"],
|
1057
976
|
) -> "StepConfiguration":
|
1058
977
|
"""Finalizes the configuration after the step was called.
|
1059
978
|
|
@@ -1067,6 +986,12 @@ To avoid this consider setting step parameters only in one place (config or code
|
|
1067
986
|
external_artifacts: The external artifacts of this step.
|
1068
987
|
model_artifacts_or_metadata: The model artifacts or metadata of
|
1069
988
|
this step.
|
989
|
+
client_lazy_loaders: The client lazy loaders of this step.
|
990
|
+
|
991
|
+
Raises:
|
992
|
+
StepInterfaceError: If explicit materializers were specified for an
|
993
|
+
output but they do not work for the data type(s) defined by
|
994
|
+
the type annotation.
|
1070
995
|
|
1071
996
|
Returns:
|
1072
997
|
The finalized step configuration.
|
@@ -1077,9 +1002,7 @@ To avoid this consider setting step parameters only in one place (config or code
|
|
1077
1002
|
StepConfigurationUpdate,
|
1078
1003
|
)
|
1079
1004
|
|
1080
|
-
outputs: Dict[
|
1081
|
-
str, Dict[str, Union[Source, Tuple[Source, ...]]]
|
1082
|
-
] = defaultdict(dict)
|
1005
|
+
outputs: Dict[str, Dict[str, Any]] = defaultdict(dict)
|
1083
1006
|
|
1084
1007
|
for (
|
1085
1008
|
output_name,
|
@@ -1088,43 +1011,60 @@ To avoid this consider setting step parameters only in one place (config or code
|
|
1088
1011
|
output = self._configuration.outputs.get(
|
1089
1012
|
output_name, PartialArtifactConfiguration()
|
1090
1013
|
)
|
1014
|
+
if artifact_config := output_annotation.artifact_config:
|
1015
|
+
outputs[output_name]["artifact_config"] = artifact_config
|
1091
1016
|
|
1092
|
-
|
1093
|
-
|
1094
|
-
|
1095
|
-
|
1096
|
-
|
1017
|
+
if output.materializer_source:
|
1018
|
+
# The materializer source was configured by the user. We
|
1019
|
+
# validate that their configured materializer supports the
|
1020
|
+
# output type. If the output annotation is a Union, we check
|
1021
|
+
# that at least one of the specified materializers works with at
|
1022
|
+
# least one of the types in the Union. If that's not the case,
|
1023
|
+
# it would be a guaranteed failure at runtime and we fail early
|
1024
|
+
# here.
|
1025
|
+
if output_annotation.resolved_annotation is Any:
|
1026
|
+
continue
|
1097
1027
|
|
1098
|
-
|
1028
|
+
materializer_classes: List[Type["BaseMaterializer"]] = [
|
1029
|
+
source_utils.load(materializer_source)
|
1030
|
+
for materializer_source in output.materializer_source
|
1031
|
+
]
|
1099
1032
|
|
1100
|
-
|
1033
|
+
for data_type in output_annotation.get_output_types():
|
1034
|
+
try:
|
1035
|
+
materializer_utils.select_materializer(
|
1036
|
+
data_type=data_type,
|
1037
|
+
materializer_classes=materializer_classes,
|
1038
|
+
)
|
1039
|
+
break
|
1040
|
+
except RuntimeError:
|
1041
|
+
pass
|
1042
|
+
else:
|
1043
|
+
materializer_strings = [
|
1044
|
+
materializer_source.import_path
|
1045
|
+
for materializer_source in output.materializer_source
|
1046
|
+
]
|
1047
|
+
raise StepInterfaceError(
|
1048
|
+
"Invalid materializers specified for output "
|
1049
|
+
f"{output_name} of step {self.name}. None of the "
|
1050
|
+
f"materializers ({materializer_strings}) are "
|
1051
|
+
"able to save or load data of the type that is defined "
|
1052
|
+
"for the output "
|
1053
|
+
f"({output_annotation.resolved_annotation})."
|
1054
|
+
)
|
1055
|
+
else:
|
1101
1056
|
if output_annotation.resolved_annotation is Any:
|
1102
1057
|
outputs[output_name]["materializer_source"] = ()
|
1103
|
-
outputs[output_name][
|
1104
|
-
|
1105
|
-
|
1106
|
-
materializer_registry.get_default_materializer()
|
1107
|
-
)
|
1108
|
-
continue
|
1109
|
-
|
1110
|
-
if is_union(
|
1111
|
-
get_origin(output_annotation.resolved_annotation)
|
1112
|
-
or output_annotation.resolved_annotation
|
1113
|
-
):
|
1114
|
-
output_types = tuple(
|
1115
|
-
type(None)
|
1116
|
-
if is_none_type(output_type)
|
1117
|
-
else output_type
|
1118
|
-
for output_type in get_args(
|
1119
|
-
output_annotation.resolved_annotation
|
1058
|
+
outputs[output_name]["default_materializer_source"] = (
|
1059
|
+
source_utils.resolve(
|
1060
|
+
materializer_registry.get_default_materializer()
|
1120
1061
|
)
|
1121
1062
|
)
|
1122
|
-
|
1123
|
-
output_types = (output_annotation.resolved_annotation,)
|
1063
|
+
continue
|
1124
1064
|
|
1125
1065
|
materializer_sources = []
|
1126
1066
|
|
1127
|
-
for output_type in
|
1067
|
+
for output_type in output_annotation.get_output_types():
|
1128
1068
|
materializer_class = materializer_registry[output_type]
|
1129
1069
|
materializer_sources.append(
|
1130
1070
|
source_utils.resolve(materializer_class)
|
@@ -1140,21 +1080,25 @@ To avoid this consider setting step parameters only in one place (config or code
|
|
1140
1080
|
input_artifacts=input_artifacts,
|
1141
1081
|
external_artifacts=external_artifacts,
|
1142
1082
|
model_artifacts_or_metadata=model_artifacts_or_metadata,
|
1083
|
+
client_lazy_loaders=client_lazy_loaders,
|
1143
1084
|
)
|
1144
1085
|
|
1145
1086
|
values = dict_utils.remove_none_values({"outputs": outputs or None})
|
1146
1087
|
config = StepConfigurationUpdate(**values)
|
1147
1088
|
self._apply_configuration(config)
|
1148
1089
|
|
1149
|
-
self._configuration = self._configuration.
|
1090
|
+
self._configuration = self._configuration.model_copy(
|
1150
1091
|
update={
|
1151
1092
|
"caching_parameters": self.caching_parameters,
|
1152
1093
|
"external_input_artifacts": external_artifacts,
|
1153
1094
|
"model_artifacts_or_metadata": model_artifacts_or_metadata,
|
1095
|
+
"client_lazy_loaders": client_lazy_loaders,
|
1154
1096
|
}
|
1155
1097
|
)
|
1156
1098
|
|
1157
|
-
return StepConfiguration.
|
1099
|
+
return StepConfiguration.model_validate(
|
1100
|
+
self._configuration.model_dump()
|
1101
|
+
)
|
1158
1102
|
|
1159
1103
|
def _finalize_parameters(self) -> Dict[str, Any]:
|
1160
1104
|
"""Finalizes the config parameters for running this step.
|
@@ -1175,95 +1119,8 @@ To avoid this consider setting step parameters only in one place (config or code
|
|
1175
1119
|
# Make sure we have all necessary values to instantiate the
|
1176
1120
|
# pydantic model later
|
1177
1121
|
model = annotation(**value)
|
1178
|
-
params[key] = model.
|
1122
|
+
params[key] = model.model_dump()
|
1179
1123
|
else:
|
1180
1124
|
params[key] = value
|
1181
1125
|
|
1182
|
-
if self.entrypoint_definition.legacy_params:
|
1183
|
-
legacy_params = self._finalize_legacy_parameters()
|
1184
|
-
params[
|
1185
|
-
self.entrypoint_definition.legacy_params.name
|
1186
|
-
] = legacy_params
|
1187
|
-
|
1188
1126
|
return params
|
1189
|
-
|
1190
|
-
def _finalize_legacy_parameters(self) -> Dict[str, Any]:
|
1191
|
-
"""Verifies and prepares the config parameters for running this step.
|
1192
|
-
|
1193
|
-
When the step requires config parameters, this method:
|
1194
|
-
- checks if config parameters were set via a config object or file
|
1195
|
-
- tries to set missing config parameters from default values of the
|
1196
|
-
config class
|
1197
|
-
|
1198
|
-
Returns:
|
1199
|
-
Values for the previously unconfigured function parameters.
|
1200
|
-
|
1201
|
-
Raises:
|
1202
|
-
MissingStepParameterError: If no value could be found for one or
|
1203
|
-
more config parameters.
|
1204
|
-
StepInterfaceError: If the parameter class validation failed.
|
1205
|
-
"""
|
1206
|
-
if not self.entrypoint_definition.legacy_params:
|
1207
|
-
return {}
|
1208
|
-
|
1209
|
-
logger.warning(
|
1210
|
-
"The `BaseParameters` class to define step parameters is "
|
1211
|
-
"deprecated. Check out our docs "
|
1212
|
-
"https://docs.zenml.io/user-guide/advanced-guide/pipelining-features/configure-steps-pipelines "
|
1213
|
-
"for information on how to parameterize your steps. As a quick "
|
1214
|
-
"fix to get rid of this warning, make sure your parameter class "
|
1215
|
-
"inherits from `pydantic.BaseModel` instead of the "
|
1216
|
-
"`BaseParameters` class."
|
1217
|
-
)
|
1218
|
-
|
1219
|
-
# parameters for the `BaseParameters` class specified in the "new" way
|
1220
|
-
# by specifying a dict of parameters for the corresponding key
|
1221
|
-
params_defined_in_new_way = (
|
1222
|
-
self.configuration.parameters.get(
|
1223
|
-
self.entrypoint_definition.legacy_params.name
|
1224
|
-
)
|
1225
|
-
or {}
|
1226
|
-
)
|
1227
|
-
|
1228
|
-
values = {}
|
1229
|
-
missing_keys = []
|
1230
|
-
for (
|
1231
|
-
name,
|
1232
|
-
field,
|
1233
|
-
) in self.entrypoint_definition.legacy_params.annotation.__fields__.items():
|
1234
|
-
if name in self.configuration.parameters:
|
1235
|
-
# a value for this parameter has been set already
|
1236
|
-
values[name] = self.configuration.parameters[name]
|
1237
|
-
elif name in params_defined_in_new_way:
|
1238
|
-
# a value for this parameter has been set in the "new" way
|
1239
|
-
# already
|
1240
|
-
values[name] = params_defined_in_new_way[name]
|
1241
|
-
elif field.required:
|
1242
|
-
# this field has no default value set and therefore needs
|
1243
|
-
# to be passed via an initialized config object
|
1244
|
-
missing_keys.append(name)
|
1245
|
-
else:
|
1246
|
-
# use default value from the pydantic config class
|
1247
|
-
values[name] = field.default
|
1248
|
-
|
1249
|
-
if missing_keys:
|
1250
|
-
raise MissingStepParameterError(
|
1251
|
-
self.name,
|
1252
|
-
missing_keys,
|
1253
|
-
self.entrypoint_definition.legacy_params.annotation,
|
1254
|
-
)
|
1255
|
-
|
1256
|
-
if (
|
1257
|
-
self.entrypoint_definition.legacy_params.annotation.__config__.extra
|
1258
|
-
== Extra.allow
|
1259
|
-
):
|
1260
|
-
# Add all parameters for the config class for backwards
|
1261
|
-
# compatibility if the config class allows extra attributes
|
1262
|
-
values.update(self.configuration.parameters)
|
1263
|
-
|
1264
|
-
try:
|
1265
|
-
self.entrypoint_definition.legacy_params.annotation(**values)
|
1266
|
-
except ValidationError:
|
1267
|
-
raise StepInterfaceError("Failed to validate function parameters.")
|
1268
|
-
|
1269
|
-
return values
|