zenml-nightly 0.84.3.dev20250908__py3-none-any.whl → 0.84.3.dev20250910__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/cli/utils.py +1 -1
- zenml/config/compiler.py +7 -4
- zenml/config/pipeline_run_configuration.py +71 -20
- zenml/config/step_configurations.py +67 -15
- zenml/enums.py +1 -0
- zenml/models/v2/core/pipeline_run.py +18 -1
- zenml/orchestrators/base_orchestrator.py +6 -0
- zenml/orchestrators/publish_utils.py +3 -0
- zenml/pipelines/build_utils.py +3 -0
- zenml/pipelines/run_utils.py +8 -36
- zenml/steps/base_step.py +3 -2
- zenml/zen_server/template_execution/runner_entrypoint_configuration.py +39 -2
- zenml/zen_server/template_execution/utils.py +18 -10
- zenml/zen_stores/migrations/versions/83ef3cb746a5_add_status_reason.py +41 -0
- zenml/zen_stores/schemas/pipeline_run_schemas.py +20 -3
- zenml/zen_stores/sql_zen_store.py +12 -2
- zenml/zen_stores/template_utils.py +8 -6
- {zenml_nightly-0.84.3.dev20250908.dist-info → zenml_nightly-0.84.3.dev20250910.dist-info}/METADATA +2 -2
- {zenml_nightly-0.84.3.dev20250908.dist-info → zenml_nightly-0.84.3.dev20250910.dist-info}/RECORD +23 -22
- {zenml_nightly-0.84.3.dev20250908.dist-info → zenml_nightly-0.84.3.dev20250910.dist-info}/LICENSE +0 -0
- {zenml_nightly-0.84.3.dev20250908.dist-info → zenml_nightly-0.84.3.dev20250910.dist-info}/WHEEL +0 -0
- {zenml_nightly-0.84.3.dev20250908.dist-info → zenml_nightly-0.84.3.dev20250910.dist-info}/entry_points.txt +0 -0
zenml/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.84.3.
|
1
|
+
0.84.3.dev20250910
|
zenml/cli/utils.py
CHANGED
@@ -2251,7 +2251,7 @@ def get_execution_status_emoji(status: "ExecutionStatus") -> str:
|
|
2251
2251
|
"""
|
2252
2252
|
from zenml.enums import ExecutionStatus
|
2253
2253
|
|
2254
|
-
if status
|
2254
|
+
if status in {ExecutionStatus.INITIALIZING, ExecutionStatus.PROVISIONING}:
|
2255
2255
|
return ":hourglass_flowing_sand:"
|
2256
2256
|
if status == ExecutionStatus.FAILED:
|
2257
2257
|
return ":x:"
|
zenml/config/compiler.py
CHANGED
@@ -116,7 +116,7 @@ class Compiler:
|
|
116
116
|
invocation_id: self._compile_step_invocation(
|
117
117
|
invocation=invocation,
|
118
118
|
stack=stack,
|
119
|
-
step_config=run_configuration.steps.get(invocation_id),
|
119
|
+
step_config=(run_configuration.steps or {}).get(invocation_id),
|
120
120
|
pipeline_configuration=pipeline.configuration,
|
121
121
|
)
|
122
122
|
for invocation_id, invocation in self._get_sorted_invocations(
|
@@ -211,7 +211,10 @@ class Compiler:
|
|
211
211
|
cache_policy=config.cache_policy,
|
212
212
|
)
|
213
213
|
|
214
|
-
|
214
|
+
configured_step_configs = config.steps or {}
|
215
|
+
invalid_step_configs = set(configured_step_configs) - set(
|
216
|
+
pipeline.invocations
|
217
|
+
)
|
215
218
|
if invalid_step_configs:
|
216
219
|
logger.warning(
|
217
220
|
f"Configuration for step invocations {invalid_step_configs} "
|
@@ -220,7 +223,7 @@ class Compiler:
|
|
220
223
|
)
|
221
224
|
|
222
225
|
for key in invalid_step_configs:
|
223
|
-
|
226
|
+
configured_step_configs.pop(key)
|
224
227
|
|
225
228
|
# Override `enable_cache` of all steps if set at run level
|
226
229
|
if config.enable_cache is not None:
|
@@ -480,7 +483,7 @@ class Compiler:
|
|
480
483
|
)
|
481
484
|
|
482
485
|
parameters_to_ignore = (
|
483
|
-
set(step_config.parameters) if step_config else set()
|
486
|
+
set(step_config.parameters or {}) if step_config else set()
|
484
487
|
)
|
485
488
|
step_configuration_overrides = invocation.finalize(
|
486
489
|
parameters_to_ignore=parameters_to_ignore
|
@@ -36,24 +36,75 @@ class PipelineRunConfiguration(
|
|
36
36
|
):
|
37
37
|
"""Class for pipeline run configurations."""
|
38
38
|
|
39
|
-
run_name: Optional[str] =
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
39
|
+
run_name: Optional[str] = Field(
|
40
|
+
default=None, description="The name of the pipeline run."
|
41
|
+
)
|
42
|
+
enable_cache: Optional[bool] = Field(
|
43
|
+
default=None,
|
44
|
+
description="Whether to enable cache for all steps of the pipeline "
|
45
|
+
"run.",
|
46
|
+
)
|
47
|
+
enable_artifact_metadata: Optional[bool] = Field(
|
48
|
+
default=None,
|
49
|
+
description="Whether to enable metadata for the output artifacts of "
|
50
|
+
"all steps of the pipeline run.",
|
51
|
+
)
|
52
|
+
enable_artifact_visualization: Optional[bool] = Field(
|
53
|
+
default=None,
|
54
|
+
description="Whether to enable visualizations for the output "
|
55
|
+
"artifacts of all steps of the pipeline run.",
|
56
|
+
)
|
57
|
+
enable_step_logs: Optional[bool] = Field(
|
58
|
+
default=None,
|
59
|
+
description="Whether to enable logs for all steps of the pipeline run.",
|
60
|
+
)
|
61
|
+
enable_pipeline_logs: Optional[bool] = Field(
|
62
|
+
default=None,
|
63
|
+
description="Whether to enable pipeline logs for the pipeline run.",
|
64
|
+
)
|
65
|
+
schedule: Optional[Schedule] = Field(
|
66
|
+
default=None, description="The schedule on which to run the pipeline."
|
67
|
+
)
|
46
68
|
build: Union[PipelineBuildBase, UUID, None] = Field(
|
47
|
-
default=None,
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
69
|
+
default=None,
|
70
|
+
union_mode="left_to_right",
|
71
|
+
description="The build to use for the pipeline run.",
|
72
|
+
)
|
73
|
+
steps: Optional[Dict[str, StepConfigurationUpdate]] = Field(
|
74
|
+
default=None,
|
75
|
+
description="Configurations for the steps of the pipeline run.",
|
76
|
+
)
|
77
|
+
settings: Optional[Dict[str, SerializeAsAny[BaseSettings]]] = Field(
|
78
|
+
default=None, description="Settings for the pipeline run."
|
79
|
+
)
|
80
|
+
tags: Optional[List[Union[str, Tag]]] = Field(
|
81
|
+
default=None, description="Tags to apply to the pipeline run."
|
82
|
+
)
|
83
|
+
extra: Optional[Dict[str, Any]] = Field(
|
84
|
+
default=None, description="Extra configurations for the pipeline run."
|
85
|
+
)
|
86
|
+
model: Optional[Model] = Field(
|
87
|
+
default=None, description="The model to use for the pipeline run."
|
88
|
+
)
|
89
|
+
parameters: Optional[Dict[str, Any]] = Field(
|
90
|
+
default=None, description="Parameters for the pipeline function."
|
91
|
+
)
|
92
|
+
retry: Optional[StepRetryConfig] = Field(
|
93
|
+
default=None,
|
94
|
+
description="The retry configuration for all steps of the pipeline run.",
|
95
|
+
)
|
96
|
+
failure_hook_source: Optional[SourceWithValidator] = Field(
|
97
|
+
default=None,
|
98
|
+
description="The failure hook source for all steps of the pipeline run.",
|
99
|
+
)
|
100
|
+
success_hook_source: Optional[SourceWithValidator] = Field(
|
101
|
+
default=None,
|
102
|
+
description="The success hook source for all steps of the pipeline run.",
|
103
|
+
)
|
104
|
+
substitutions: Optional[Dict[str, str]] = Field(
|
105
|
+
default=None, description="The substitutions for the pipeline run."
|
106
|
+
)
|
107
|
+
cache_policy: Optional[CachePolicyWithValidator] = Field(
|
108
|
+
default=None,
|
109
|
+
description="The cache policy for all steps of the pipeline run.",
|
110
|
+
)
|
@@ -26,6 +26,7 @@ from typing import (
|
|
26
26
|
|
27
27
|
from pydantic import (
|
28
28
|
ConfigDict,
|
29
|
+
Field,
|
29
30
|
SerializeAsAny,
|
30
31
|
field_validator,
|
31
32
|
model_validator,
|
@@ -142,21 +143,68 @@ class ArtifactConfiguration(PartialArtifactConfiguration):
|
|
142
143
|
class StepConfigurationUpdate(StrictBaseModel):
|
143
144
|
"""Class for step configuration updates."""
|
144
145
|
|
145
|
-
enable_cache: Optional[bool] =
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
146
|
+
enable_cache: Optional[bool] = Field(
|
147
|
+
default=None,
|
148
|
+
description="Whether to enable cache for the step.",
|
149
|
+
)
|
150
|
+
enable_artifact_metadata: Optional[bool] = Field(
|
151
|
+
default=None,
|
152
|
+
description="Whether to store metadata for the output artifacts of "
|
153
|
+
"the step.",
|
154
|
+
)
|
155
|
+
enable_artifact_visualization: Optional[bool] = Field(
|
156
|
+
default=None,
|
157
|
+
description="Whether to enable visualizations for the output "
|
158
|
+
"artifacts of the step.",
|
159
|
+
)
|
160
|
+
enable_step_logs: Optional[bool] = Field(
|
161
|
+
default=None,
|
162
|
+
description="Whether to enable logs for the step.",
|
163
|
+
)
|
164
|
+
step_operator: Optional[Union[bool, str]] = Field(
|
165
|
+
default=None,
|
166
|
+
description="The step operator to use for the step.",
|
167
|
+
)
|
168
|
+
experiment_tracker: Optional[Union[bool, str]] = Field(
|
169
|
+
default=None,
|
170
|
+
description="The experiment tracker to use for the step.",
|
171
|
+
)
|
172
|
+
parameters: Optional[Dict[str, Any]] = Field(
|
173
|
+
default=None,
|
174
|
+
description="Parameters for the step function.",
|
175
|
+
)
|
176
|
+
settings: Optional[Dict[str, SerializeAsAny[BaseSettings]]] = Field(
|
177
|
+
default=None,
|
178
|
+
description="Settings for the step.",
|
179
|
+
)
|
180
|
+
extra: Optional[Dict[str, Any]] = Field(
|
181
|
+
default=None,
|
182
|
+
description="Extra configurations for the step.",
|
183
|
+
)
|
184
|
+
failure_hook_source: Optional[SourceWithValidator] = Field(
|
185
|
+
default=None,
|
186
|
+
description="The failure hook source for the step.",
|
187
|
+
)
|
188
|
+
success_hook_source: Optional[SourceWithValidator] = Field(
|
189
|
+
default=None,
|
190
|
+
description="The success hook source for the step.",
|
191
|
+
)
|
192
|
+
model: Optional[Model] = Field(
|
193
|
+
default=None,
|
194
|
+
description="The model to use for the step.",
|
195
|
+
)
|
196
|
+
retry: Optional[StepRetryConfig] = Field(
|
197
|
+
default=None,
|
198
|
+
description="The retry configuration for the step.",
|
199
|
+
)
|
200
|
+
substitutions: Optional[Dict[str, str]] = Field(
|
201
|
+
default=None,
|
202
|
+
description="The substitutions for the step.",
|
203
|
+
)
|
204
|
+
cache_policy: Optional[CachePolicyWithValidator] = Field(
|
205
|
+
default=None,
|
206
|
+
description="The cache policy for the step.",
|
207
|
+
)
|
160
208
|
|
161
209
|
outputs: Mapping[str, PartialArtifactConfiguration] = {}
|
162
210
|
|
@@ -197,6 +245,10 @@ class PartialStepConfiguration(StepConfigurationUpdate):
|
|
197
245
|
"""Class representing a partial step configuration."""
|
198
246
|
|
199
247
|
name: str
|
248
|
+
parameters: Dict[str, Any] = {}
|
249
|
+
settings: Dict[str, SerializeAsAny[BaseSettings]] = {}
|
250
|
+
extra: Dict[str, Any] = {}
|
251
|
+
substitutions: Dict[str, str] = {}
|
200
252
|
caching_parameters: Mapping[str, Any] = {}
|
201
253
|
external_input_artifacts: Mapping[str, ExternalArtifactConfiguration] = {}
|
202
254
|
model_artifacts_or_metadata: Mapping[str, ModelVersionDataLazyLoader] = {}
|
zenml/enums.py
CHANGED
@@ -104,6 +104,11 @@ class PipelineRunRequest(ProjectScopedRequest):
|
|
104
104
|
status: ExecutionStatus = Field(
|
105
105
|
title="The status of the pipeline run.",
|
106
106
|
)
|
107
|
+
status_reason: Optional[str] = Field(
|
108
|
+
title="The reason for the status of the pipeline run.",
|
109
|
+
default=None,
|
110
|
+
max_length=STR_FIELD_MAX_LENGTH,
|
111
|
+
)
|
107
112
|
orchestrator_environment: Dict[str, Any] = Field(
|
108
113
|
default={},
|
109
114
|
title=(
|
@@ -131,7 +136,10 @@ class PipelineRunRequest(ProjectScopedRequest):
|
|
131
136
|
Returns:
|
132
137
|
Whether the request is a placeholder request.
|
133
138
|
"""
|
134
|
-
return self.status
|
139
|
+
return self.status in {
|
140
|
+
ExecutionStatus.INITIALIZING,
|
141
|
+
ExecutionStatus.PROVISIONING,
|
142
|
+
}
|
135
143
|
|
136
144
|
model_config = ConfigDict(protected_namespaces=())
|
137
145
|
|
@@ -143,6 +151,11 @@ class PipelineRunUpdate(BaseUpdate):
|
|
143
151
|
"""Pipeline run update model."""
|
144
152
|
|
145
153
|
status: Optional[ExecutionStatus] = None
|
154
|
+
status_reason: Optional[str] = Field(
|
155
|
+
default=None,
|
156
|
+
title="The reason for the status of the pipeline run.",
|
157
|
+
max_length=STR_FIELD_MAX_LENGTH,
|
158
|
+
)
|
146
159
|
end_time: Optional[datetime] = None
|
147
160
|
orchestrator_run_id: Optional[str] = None
|
148
161
|
# TODO: we should maybe have a different update model here, the upper
|
@@ -169,6 +182,10 @@ class PipelineRunResponseBody(ProjectScopedResponseBody):
|
|
169
182
|
status: ExecutionStatus = Field(
|
170
183
|
title="The status of the pipeline run.",
|
171
184
|
)
|
185
|
+
status_reason: Optional[str] = Field(
|
186
|
+
default=None,
|
187
|
+
title="The reason for the status of the pipeline run.",
|
188
|
+
)
|
172
189
|
stack: Optional["StackResponse"] = Field(
|
173
190
|
default=None, title="The stack that was used for this run."
|
174
191
|
)
|
@@ -316,6 +316,11 @@ class BaseOrchestrator(StackComponent, ABC):
|
|
316
316
|
environment=environment,
|
317
317
|
placeholder_run=placeholder_run,
|
318
318
|
)
|
319
|
+
if placeholder_run:
|
320
|
+
publish_pipeline_run_status_update(
|
321
|
+
pipeline_run_id=placeholder_run.id,
|
322
|
+
status=ExecutionStatus.PROVISIONING,
|
323
|
+
)
|
319
324
|
|
320
325
|
if submission_result:
|
321
326
|
if submission_result.metadata:
|
@@ -511,6 +516,7 @@ class BaseOrchestrator(StackComponent, ABC):
|
|
511
516
|
publish_pipeline_run_status_update(
|
512
517
|
pipeline_run_id=run.id,
|
513
518
|
status=ExecutionStatus.STOPPING,
|
519
|
+
status_reason="Manual stop requested.",
|
514
520
|
)
|
515
521
|
|
516
522
|
# Now call the concrete implementation
|
@@ -138,6 +138,7 @@ def publish_failed_pipeline_run(
|
|
138
138
|
def publish_pipeline_run_status_update(
|
139
139
|
pipeline_run_id: "UUID",
|
140
140
|
status: ExecutionStatus,
|
141
|
+
status_reason: Optional[str] = None,
|
141
142
|
end_time: Optional[datetime] = None,
|
142
143
|
) -> "PipelineRunResponse":
|
143
144
|
"""Publishes a pipeline run status update.
|
@@ -145,6 +146,7 @@ def publish_pipeline_run_status_update(
|
|
145
146
|
Args:
|
146
147
|
pipeline_run_id: The ID of the pipeline run to update.
|
147
148
|
status: The new status for the pipeline run.
|
149
|
+
status_reason: The reason for the status of the pipeline run.
|
148
150
|
end_time: The end time for the pipeline run. If None, will be set to current time
|
149
151
|
for finished statuses.
|
150
152
|
|
@@ -158,6 +160,7 @@ def publish_pipeline_run_status_update(
|
|
158
160
|
run_id=pipeline_run_id,
|
159
161
|
run_update=PipelineRunUpdate(
|
160
162
|
status=status,
|
163
|
+
status_reason=status_reason,
|
161
164
|
end_time=end_time,
|
162
165
|
),
|
163
166
|
)
|
zenml/pipelines/build_utils.py
CHANGED
zenml/pipelines/run_utils.py
CHANGED
@@ -91,36 +91,6 @@ def create_placeholder_run(
|
|
91
91
|
return run
|
92
92
|
|
93
93
|
|
94
|
-
def get_placeholder_run(
|
95
|
-
deployment_id: UUID,
|
96
|
-
) -> Optional["PipelineRunResponse"]:
|
97
|
-
"""Get the placeholder run for a deployment.
|
98
|
-
|
99
|
-
Args:
|
100
|
-
deployment_id: ID of the deployment for which to get the placeholder
|
101
|
-
run.
|
102
|
-
|
103
|
-
Returns:
|
104
|
-
The placeholder run or `None` if there exists no placeholder run for the
|
105
|
-
deployment.
|
106
|
-
"""
|
107
|
-
runs = Client().list_pipeline_runs(
|
108
|
-
sort_by="asc:created",
|
109
|
-
size=1,
|
110
|
-
deployment_id=deployment_id,
|
111
|
-
status=ExecutionStatus.INITIALIZING,
|
112
|
-
hydrate=True,
|
113
|
-
)
|
114
|
-
if len(runs.items) == 0:
|
115
|
-
return None
|
116
|
-
|
117
|
-
run = runs.items[0]
|
118
|
-
if run.orchestrator_run_id is None:
|
119
|
-
return run
|
120
|
-
|
121
|
-
return None
|
122
|
-
|
123
|
-
|
124
94
|
def deploy_pipeline(
|
125
95
|
deployment: "PipelineDeploymentResponse",
|
126
96
|
stack: "Stack",
|
@@ -268,16 +238,18 @@ def validate_run_config_is_runnable_from_server(
|
|
268
238
|
"Can't set schedule when running pipeline via Rest API."
|
269
239
|
)
|
270
240
|
|
271
|
-
if run_configuration.settings.get("docker"):
|
241
|
+
if run_configuration.settings and run_configuration.settings.get("docker"):
|
272
242
|
raise ValueError(
|
273
243
|
"Can't set DockerSettings when running pipeline via Rest API."
|
274
244
|
)
|
275
245
|
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
246
|
+
if run_configuration.steps:
|
247
|
+
for step_update in run_configuration.steps.values():
|
248
|
+
if step_update.settings and step_update.settings.get("docker"):
|
249
|
+
raise ValueError(
|
250
|
+
"Can't set DockerSettings when running pipeline via "
|
251
|
+
"Rest API."
|
252
|
+
)
|
281
253
|
|
282
254
|
|
283
255
|
def upload_notebook_cell_code_if_necessary(
|
zenml/steps/base_step.py
CHANGED
@@ -862,7 +862,8 @@ class BaseStep:
|
|
862
862
|
config: The configuration update to validate.
|
863
863
|
runtime_parameters: Dictionary of parameters passed to a step from runtime
|
864
864
|
"""
|
865
|
-
|
865
|
+
if config.settings:
|
866
|
+
settings_utils.validate_setting_keys(list(config.settings))
|
866
867
|
self._validate_function_parameters(
|
867
868
|
parameters=config.parameters, runtime_parameters=runtime_parameters
|
868
869
|
)
|
@@ -870,7 +871,7 @@ class BaseStep:
|
|
870
871
|
|
871
872
|
def _validate_function_parameters(
|
872
873
|
self,
|
873
|
-
parameters: Dict[str, Any],
|
874
|
+
parameters: Optional[Dict[str, Any]],
|
874
875
|
runtime_parameters: Dict[str, Any],
|
875
876
|
) -> None:
|
876
877
|
"""Validates step function parameters.
|
@@ -13,16 +13,50 @@
|
|
13
13
|
# permissions and limitations under the License.
|
14
14
|
"""Runner entrypoint configuration."""
|
15
15
|
|
16
|
+
from typing import Any, List, Set
|
17
|
+
from uuid import UUID
|
18
|
+
|
16
19
|
from zenml.client import Client
|
17
20
|
from zenml.entrypoints.base_entrypoint_configuration import (
|
18
21
|
BaseEntrypointConfiguration,
|
19
22
|
)
|
20
|
-
from zenml.pipelines.run_utils import deploy_pipeline
|
23
|
+
from zenml.pipelines.run_utils import deploy_pipeline
|
24
|
+
|
25
|
+
PLACEHOLDER_RUN_ID_OPTION = "placeholder_run_id"
|
21
26
|
|
22
27
|
|
23
28
|
class RunnerEntrypointConfiguration(BaseEntrypointConfiguration):
|
24
29
|
"""Runner entrypoint configuration."""
|
25
30
|
|
31
|
+
@classmethod
|
32
|
+
def get_entrypoint_options(cls) -> Set[str]:
|
33
|
+
"""Gets all options required for running with this configuration.
|
34
|
+
|
35
|
+
Returns:
|
36
|
+
The superclass options as well as an option for the name of the
|
37
|
+
step to run.
|
38
|
+
"""
|
39
|
+
return super().get_entrypoint_options() | {PLACEHOLDER_RUN_ID_OPTION}
|
40
|
+
|
41
|
+
@classmethod
|
42
|
+
def get_entrypoint_arguments(
|
43
|
+
cls,
|
44
|
+
**kwargs: Any,
|
45
|
+
) -> List[str]:
|
46
|
+
"""Gets all arguments that the entrypoint command should be called with.
|
47
|
+
|
48
|
+
Args:
|
49
|
+
**kwargs: Kwargs, must include the placeholder run id.
|
50
|
+
|
51
|
+
Returns:
|
52
|
+
The superclass arguments as well as arguments for the placeholder
|
53
|
+
run id.
|
54
|
+
"""
|
55
|
+
return super().get_entrypoint_arguments(**kwargs) + [
|
56
|
+
f"--{PLACEHOLDER_RUN_ID_OPTION}",
|
57
|
+
str(kwargs[PLACEHOLDER_RUN_ID_OPTION]),
|
58
|
+
]
|
59
|
+
|
26
60
|
def run(self) -> None:
|
27
61
|
"""Run the entrypoint configuration.
|
28
62
|
|
@@ -30,11 +64,14 @@ class RunnerEntrypointConfiguration(BaseEntrypointConfiguration):
|
|
30
64
|
to the entrypoint configuration.
|
31
65
|
"""
|
32
66
|
deployment = self.load_deployment()
|
67
|
+
placeholder_run_id = UUID(
|
68
|
+
self.entrypoint_args[PLACEHOLDER_RUN_ID_OPTION]
|
69
|
+
)
|
70
|
+
placeholder_run = Client().get_pipeline_run(placeholder_run_id)
|
33
71
|
|
34
72
|
stack = Client().active_stack
|
35
73
|
assert deployment.stack and stack.id == deployment.stack.id
|
36
74
|
|
37
|
-
placeholder_run = get_placeholder_run(deployment_id=deployment.id)
|
38
75
|
deploy_pipeline(
|
39
76
|
deployment=deployment,
|
40
77
|
stack=stack,
|
@@ -222,7 +222,8 @@ def run_template(
|
|
222
222
|
|
223
223
|
command = RunnerEntrypointConfiguration.get_entrypoint_command()
|
224
224
|
args = RunnerEntrypointConfiguration.get_entrypoint_arguments(
|
225
|
-
deployment_id=new_deployment.id
|
225
|
+
deployment_id=new_deployment.id,
|
226
|
+
placeholder_run_id=placeholder_run.id,
|
226
227
|
)
|
227
228
|
|
228
229
|
if build.python_version:
|
@@ -306,14 +307,20 @@ def run_template(
|
|
306
307
|
str(template.id),
|
307
308
|
str(placeholder_run.id),
|
308
309
|
)
|
309
|
-
zen_store().
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
)
|
315
|
-
|
316
|
-
|
310
|
+
run_status, _ = zen_store().get_run_status(placeholder_run.id)
|
311
|
+
if run_status == ExecutionStatus.INITIALIZING:
|
312
|
+
# The run isn't in the provisioning status yet, which means
|
313
|
+
# the orchestrator wasn't able to submit the run. In this
|
314
|
+
# case, we can update the run to failed.
|
315
|
+
zen_store().update_run(
|
316
|
+
run_id=placeholder_run.id,
|
317
|
+
run_update=PipelineRunUpdate(
|
318
|
+
status=ExecutionStatus.FAILED,
|
319
|
+
status_reason="Failed to start run.",
|
320
|
+
end_time=utc_now(),
|
321
|
+
),
|
322
|
+
)
|
323
|
+
raise
|
317
324
|
|
318
325
|
if sync:
|
319
326
|
_task_with_analytics_and_error_handling()
|
@@ -461,8 +468,9 @@ def deployment_request_from_template(
|
|
461
468
|
)
|
462
469
|
|
463
470
|
steps = {}
|
471
|
+
step_config_updates = config.steps or {}
|
464
472
|
for invocation_id, step in deployment.step_configurations.items():
|
465
|
-
step_update =
|
473
|
+
step_update = step_config_updates.get(
|
466
474
|
invocation_id, StepConfigurationUpdate()
|
467
475
|
).model_dump(
|
468
476
|
# Get rid of deprecated name to prevent overriding the step name
|
@@ -0,0 +1,41 @@
|
|
1
|
+
"""Add status reason [83ef3cb746a5].
|
2
|
+
|
3
|
+
Revision ID: 83ef3cb746a5
|
4
|
+
Revises: aae4eed923b5
|
5
|
+
Create Date: 2025-09-04 15:41:30.829628
|
6
|
+
|
7
|
+
"""
|
8
|
+
|
9
|
+
import sqlalchemy as sa
|
10
|
+
import sqlmodel
|
11
|
+
from alembic import op
|
12
|
+
|
13
|
+
# revision identifiers, used by Alembic.
|
14
|
+
revision = "83ef3cb746a5"
|
15
|
+
down_revision = "aae4eed923b5"
|
16
|
+
branch_labels = None
|
17
|
+
depends_on = None
|
18
|
+
|
19
|
+
|
20
|
+
def upgrade() -> None:
|
21
|
+
"""Upgrade database schema and/or data, creating a new revision."""
|
22
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
23
|
+
with op.batch_alter_table("pipeline_run", schema=None) as batch_op:
|
24
|
+
batch_op.add_column(
|
25
|
+
sa.Column(
|
26
|
+
"status_reason",
|
27
|
+
sqlmodel.sql.sqltypes.AutoString(),
|
28
|
+
nullable=True,
|
29
|
+
)
|
30
|
+
)
|
31
|
+
|
32
|
+
# ### end Alembic commands ###
|
33
|
+
|
34
|
+
|
35
|
+
def downgrade() -> None:
|
36
|
+
"""Downgrade database schema and/or data back to the previous revision."""
|
37
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
38
|
+
with op.batch_alter_table("pipeline_run", schema=None) as batch_op:
|
39
|
+
batch_op.drop_column("status_reason")
|
40
|
+
|
41
|
+
# ### end Alembic commands ###
|
@@ -99,6 +99,7 @@ class PipelineRunSchema(NamedSchema, RunMetadataInterface, table=True):
|
|
99
99
|
start_time: Optional[datetime] = Field(nullable=True)
|
100
100
|
end_time: Optional[datetime] = Field(nullable=True, default=None)
|
101
101
|
status: str = Field(nullable=False)
|
102
|
+
status_reason: Optional[str] = Field(nullable=True)
|
102
103
|
orchestrator_environment: Optional[str] = Field(
|
103
104
|
sa_column=Column(TEXT, nullable=True)
|
104
105
|
)
|
@@ -330,6 +331,7 @@ class PipelineRunSchema(NamedSchema, RunMetadataInterface, table=True):
|
|
330
331
|
orchestrator_environment=orchestrator_environment,
|
331
332
|
start_time=request.start_time,
|
332
333
|
status=request.status.value,
|
334
|
+
status_reason=request.status_reason,
|
333
335
|
pipeline_id=request.pipeline,
|
334
336
|
deployment_id=request.deployment,
|
335
337
|
trigger_execution_id=request.trigger_execution_id,
|
@@ -503,6 +505,7 @@ class PipelineRunSchema(NamedSchema, RunMetadataInterface, table=True):
|
|
503
505
|
user_id=self.user_id,
|
504
506
|
project_id=self.project_id,
|
505
507
|
status=ExecutionStatus(self.status),
|
508
|
+
status_reason=self.status_reason,
|
506
509
|
stack=stack,
|
507
510
|
pipeline=pipeline,
|
508
511
|
build=build,
|
@@ -596,8 +599,19 @@ class PipelineRunSchema(NamedSchema, RunMetadataInterface, table=True):
|
|
596
599
|
The updated `PipelineRunSchema`.
|
597
600
|
"""
|
598
601
|
if run_update.status:
|
599
|
-
|
600
|
-
|
602
|
+
if (
|
603
|
+
run_update.status == ExecutionStatus.PROVISIONING
|
604
|
+
and self.status != ExecutionStatus.INITIALIZING.value
|
605
|
+
):
|
606
|
+
# This run is already past the provisioning status, so we ignore
|
607
|
+
# the update.
|
608
|
+
pass
|
609
|
+
else:
|
610
|
+
self.status = run_update.status.value
|
611
|
+
self.end_time = run_update.end_time
|
612
|
+
|
613
|
+
if run_update.status_reason:
|
614
|
+
self.status_reason = run_update.status_reason
|
601
615
|
|
602
616
|
if run_update.orchestrator_run_id:
|
603
617
|
self.orchestrator_run_id = run_update.orchestrator_run_id
|
@@ -673,4 +687,7 @@ class PipelineRunSchema(NamedSchema, RunMetadataInterface, table=True):
|
|
673
687
|
Returns:
|
674
688
|
Whether the pipeline run is a placeholder run.
|
675
689
|
"""
|
676
|
-
return self.status
|
690
|
+
return self.status in {
|
691
|
+
ExecutionStatus.INITIALIZING.value,
|
692
|
+
ExecutionStatus.PROVISIONING.value,
|
693
|
+
}
|
@@ -5899,7 +5899,12 @@ class SqlZenStore(BaseZenStore):
|
|
5899
5899
|
)
|
5900
5900
|
)
|
5901
5901
|
.where(
|
5902
|
-
|
5902
|
+
or_(
|
5903
|
+
PipelineRunSchema.status
|
5904
|
+
== ExecutionStatus.INITIALIZING.value,
|
5905
|
+
PipelineRunSchema.status
|
5906
|
+
== ExecutionStatus.PROVISIONING.value,
|
5907
|
+
)
|
5903
5908
|
)
|
5904
5909
|
# In very rare cases, there can be multiple placeholder runs for
|
5905
5910
|
# the same deployment. By ordering by the orchestrator_run_id, we
|
@@ -5959,7 +5964,12 @@ class SqlZenStore(BaseZenStore):
|
|
5959
5964
|
PipelineRunSchema.orchestrator_run_id == orchestrator_run_id
|
5960
5965
|
)
|
5961
5966
|
.where(
|
5962
|
-
|
5967
|
+
and_(
|
5968
|
+
PipelineRunSchema.status
|
5969
|
+
!= ExecutionStatus.INITIALIZING.value,
|
5970
|
+
PipelineRunSchema.status
|
5971
|
+
!= ExecutionStatus.PROVISIONING.value,
|
5972
|
+
)
|
5963
5973
|
)
|
5964
5974
|
).first()
|
5965
5975
|
|
@@ -14,7 +14,7 @@
|
|
14
14
|
"""Utilities for run templates."""
|
15
15
|
|
16
16
|
from enum import Enum
|
17
|
-
from typing import Any, Dict, Optional
|
17
|
+
from typing import Any, Dict, Optional, Union
|
18
18
|
|
19
19
|
from pydantic import create_model
|
20
20
|
from pydantic.fields import FieldInfo
|
@@ -145,7 +145,9 @@ def generate_config_schema(
|
|
145
145
|
experiment_trackers = []
|
146
146
|
step_operators = []
|
147
147
|
|
148
|
-
settings_fields: Dict[str, Any] = {
|
148
|
+
settings_fields: Dict[str, Any] = {
|
149
|
+
"resources": (Optional[ResourceSettings], None)
|
150
|
+
}
|
149
151
|
for component in stack.components:
|
150
152
|
if not component.flavor_schema:
|
151
153
|
continue
|
@@ -188,7 +190,7 @@ def generate_config_schema(
|
|
188
190
|
continue
|
189
191
|
|
190
192
|
if field_info.annotation == Optional[SourceWithValidator]:
|
191
|
-
generic_step_fields[key] = (Optional[str],
|
193
|
+
generic_step_fields[key] = (Optional[str], field_info)
|
192
194
|
else:
|
193
195
|
generic_step_fields[key] = (field_info.annotation, field_info)
|
194
196
|
|
@@ -197,7 +199,7 @@ def generate_config_schema(
|
|
197
199
|
"ExperimentTrackers", {e: e for e in experiment_trackers}
|
198
200
|
)
|
199
201
|
generic_step_fields["experiment_tracker"] = (
|
200
|
-
Optional[experiment_tracker_enum],
|
202
|
+
Optional[Union[experiment_tracker_enum, bool]],
|
201
203
|
None,
|
202
204
|
)
|
203
205
|
if step_operators:
|
@@ -205,7 +207,7 @@ def generate_config_schema(
|
|
205
207
|
"StepOperators", {s: s for s in step_operators}
|
206
208
|
)
|
207
209
|
generic_step_fields["step_operator"] = (
|
208
|
-
Optional[step_operator_enum],
|
210
|
+
Optional[Union[step_operator_enum, bool]],
|
209
211
|
None,
|
210
212
|
)
|
211
213
|
|
@@ -270,7 +272,7 @@ def generate_config_schema(
|
|
270
272
|
continue
|
271
273
|
|
272
274
|
if field_info.annotation == Optional[SourceWithValidator]:
|
273
|
-
top_level_fields[key] = (Optional[str],
|
275
|
+
top_level_fields[key] = (Optional[str], field_info)
|
274
276
|
else:
|
275
277
|
top_level_fields[key] = (field_info.annotation, field_info)
|
276
278
|
|
{zenml_nightly-0.84.3.dev20250908.dist-info → zenml_nightly-0.84.3.dev20250910.dist-info}/METADATA
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: zenml-nightly
|
3
|
-
Version: 0.84.3.
|
3
|
+
Version: 0.84.3.dev20250910
|
4
4
|
Summary: ZenML: Write production-ready ML code.
|
5
5
|
License: Apache-2.0
|
6
6
|
Keywords: machine learning,production,pipeline,mlops,devops
|
@@ -55,7 +55,7 @@ Requires-Dist: bandit (>=1.7.5,<2.0.0) ; extra == "dev"
|
|
55
55
|
Requires-Dist: bcrypt (==4.0.1)
|
56
56
|
Requires-Dist: boto3 (>=1.16.0) ; extra == "secrets-aws" or extra == "connectors-aws"
|
57
57
|
Requires-Dist: click (>=8.0.1,<=8.2.1)
|
58
|
-
Requires-Dist: cloudpickle (>=2.0.0
|
58
|
+
Requires-Dist: cloudpickle (>=2.0.0)
|
59
59
|
Requires-Dist: copier (>=8.1.0) ; extra == "templates"
|
60
60
|
Requires-Dist: coverage[toml] (>=5.5,<6.0) ; extra == "dev"
|
61
61
|
Requires-Dist: darglint (>=1.8.1,<2.0.0) ; extra == "dev"
|
{zenml_nightly-0.84.3.dev20250908.dist-info → zenml_nightly-0.84.3.dev20250910.dist-info}/RECORD
RENAMED
@@ -1,5 +1,5 @@
|
|
1
1
|
zenml/README.md,sha256=827dekbOWAs1BpW7VF1a4d7EbwPbjwccX-2zdXBENZo,1777
|
2
|
-
zenml/VERSION,sha256=
|
2
|
+
zenml/VERSION,sha256=qzAv4jU0cosnvhDnSAQE4Le_Vi_jPegeoxaORhy4xHA,19
|
3
3
|
zenml/__init__.py,sha256=r7JUg2SVDf_dPhS7iU6vudKusEqK4ics7_jFMZhq0o4,2731
|
4
4
|
zenml/actions/__init__.py,sha256=mrt6wPo73iKRxK754_NqsGyJ3buW7RnVeIGXr1xEw8Y,681
|
5
5
|
zenml/actions/base_action.py,sha256=UcaHev6BTuLDwuswnyaPjdA8AgUqB5xPZ-lRtuvf2FU,25553
|
@@ -53,7 +53,7 @@ zenml/cli/stack_components.py,sha256=QqakqWsvzgG7nOvQmvlbcfwDZUTsXI2pOlsOBXP5EXg
|
|
53
53
|
zenml/cli/tag.py,sha256=JiAoYyDDBBYj0ChT8zWY8KGjzAnJTNx-WLQrjLLEyik,4802
|
54
54
|
zenml/cli/text_utils.py,sha256=bY1GIjoULt1cW2FyrPlMoAXNS2R7cSOjDFEZQqrpVQ8,3553
|
55
55
|
zenml/cli/user_management.py,sha256=sNnhaUxH-cHecbZBR1L0mEU0TnLNZHzI6ZBCUSQa7OY,13078
|
56
|
-
zenml/cli/utils.py,sha256=
|
56
|
+
zenml/cli/utils.py,sha256=Z5tXxaqhPCPtdLIF3yQE70uJgGo87VRLpcX4gnbJDac,86921
|
57
57
|
zenml/cli/version.py,sha256=nm1iSU_1V6-MUwpMKeXcwFhLYGUMLswvQL67cEuCpxA,3635
|
58
58
|
zenml/client.py,sha256=PKO264uusgT2HuUQY2XRS0WjHYSnX0W9yGuX0hXoSdg,296270
|
59
59
|
zenml/client_lazy_loader.py,sha256=oyxKvBWVB7k2pHMavdhNEOfR2Vk4IS3XUu43SBzDPsI,7152
|
@@ -66,12 +66,12 @@ zenml/config/__init__.py,sha256=KRAcMVUgE5R5cvoVQjs1lHUcl-IYBKmDSeBnwRIPG04,1265
|
|
66
66
|
zenml/config/base_settings.py,sha256=itoLqc1cOwEYhgSGdZmSKSaBevQkvYH7NQh7PUamazc,1700
|
67
67
|
zenml/config/build_configuration.py,sha256=jGGNwP0Cb7a80JXArNxDgxzxl9ytSZRtv-WW7_psLbM,6870
|
68
68
|
zenml/config/cache_policy.py,sha256=_bXEbR7s8xt78JO-BUJ1V2clI3lO7FNMF3r6YbD_s8M,3121
|
69
|
-
zenml/config/compiler.py,sha256=
|
69
|
+
zenml/config/compiler.py,sha256=BYzEdaUJZ2AnQgifiWfTJiGdlzka3H_qV79qgLe4VLQ,23963
|
70
70
|
zenml/config/constants.py,sha256=QvSgMwXWxtspcJ45CrFDP1ZY3w6gS3bIhXLOtIDAbZA,713
|
71
71
|
zenml/config/docker_settings.py,sha256=xZvoeC6v6RG_5MFK_RgdTgrkOLu-QT6frY4SGQNZUTo,18460
|
72
72
|
zenml/config/global_config.py,sha256=59orl6xp4moxSo2Q8tXtDfpIBX4AxJ9FHcm8s2VHyWw,29712
|
73
73
|
zenml/config/pipeline_configurations.py,sha256=3AVe-VYwFkccpdpb4aH8w2JZCwD_Bh4V25f4YAufbwE,4106
|
74
|
-
zenml/config/pipeline_run_configuration.py,sha256=
|
74
|
+
zenml/config/pipeline_run_configuration.py,sha256=9BtgM49rB0Cb19AwoqPAyEqtP1U6IKEBFFPZM_HOjCo,4395
|
75
75
|
zenml/config/pipeline_spec.py,sha256=uWpiIfznJvXAiKs1yMIUDT1h1tYEFNO-RDVTYcIv9CE,2821
|
76
76
|
zenml/config/resource_settings.py,sha256=0taXGHvDfXuvpMplxsuzpznB1sAvWJIGnXoVJ9-ySfw,3899
|
77
77
|
zenml/config/retry_config.py,sha256=rld2nvjGpX67Wci6abCA5T7vAi-TVgM30gT5nT8N_8M,1009
|
@@ -81,7 +81,7 @@ zenml/config/secrets_store_config.py,sha256=y05zqyQhr_DGrs3IfBGa_FRoZ043hSYRT5wz
|
|
81
81
|
zenml/config/server_config.py,sha256=HNHODfojAstBWMxcV5OjxcXSh8Oy9k-_0J5la60fqzQ,32616
|
82
82
|
zenml/config/settings_resolver.py,sha256=PR9BRm_x1dy7nVKa9UqpeFdck8IEATSW6aWT8FKd-DI,4278
|
83
83
|
zenml/config/source.py,sha256=RzUw8lin8QztUjz-AdoCzVM5Om_cSSPuroaPx-qAO4w,8226
|
84
|
-
zenml/config/step_configurations.py,sha256=
|
84
|
+
zenml/config/step_configurations.py,sha256=G4weYxoM3dhNlFGEEUa_iA8lyfOGD0jDBgrWXPVR_QI,16722
|
85
85
|
zenml/config/step_run_info.py,sha256=KiVRSTtKmZ1GbvseDTap2imr7XwMHD3jSFVpyLNEK1I,1888
|
86
86
|
zenml/config/store_config.py,sha256=Cla5p5dTB6nNlo8_OZDs9hod5hspi64vxwtZj882XgU,3559
|
87
87
|
zenml/config/strict_base_model.py,sha256=t_ULrtJF2eW7TgyYBRobl1fscwwIZXATYky8ER97ev4,860
|
@@ -101,7 +101,7 @@ zenml/entrypoints/base_entrypoint_configuration.py,sha256=t7sU2MEEPVomX9dZCpPhk1
|
|
101
101
|
zenml/entrypoints/entrypoint.py,sha256=XNgXBCMKoidmP0_AYgMpqo-neG8Y8jG0rj43ofTDZ9E,2033
|
102
102
|
zenml/entrypoints/pipeline_entrypoint_configuration.py,sha256=To-vTP29qAE36ndJDF1fRw9wL2Nk2bsBuO-ayAwvSmo,1646
|
103
103
|
zenml/entrypoints/step_entrypoint_configuration.py,sha256=hdw54YLwHXyFREySih3F8BTRavj_QeS_hAsgrnU-gCc,7790
|
104
|
-
zenml/enums.py,sha256=
|
104
|
+
zenml/enums.py,sha256=Uigz9p-sJjFyCepRjR4wO3Ns6zlNAqUmhoB-uQu5DvI,12001
|
105
105
|
zenml/environment.py,sha256=_iS9o4rTxRCjLocSw_LEe9pZ9jfyMhXBY47LIUF3VCI,12255
|
106
106
|
zenml/event_hub/__init__.py,sha256=-fD9mPOslf4J-_XFBPp5gYlPz7-6ZaAKHa5jxf_nyAo,757
|
107
107
|
zenml/event_hub/base_event_hub.py,sha256=PqKrnvOye0UUS3s09zGgjI5dtj0IwzEBDbavA_PgfZQ,6579
|
@@ -652,7 +652,7 @@ zenml/models/v2/core/model_version_pipeline_run.py,sha256=JbPZZEQvOK9I32htkWdAON
|
|
652
652
|
zenml/models/v2/core/pipeline.py,sha256=OXArih3YodMAZBS_GzuLL6VPpFv3c59EthwDfDZiNGk,12044
|
653
653
|
zenml/models/v2/core/pipeline_build.py,sha256=z0LCc8aR8AdNFLLtzaAP0U0ffv7WpmSx9nNAyI__e14,17008
|
654
654
|
zenml/models/v2/core/pipeline_deployment.py,sha256=nrJHrweNlwFsIdExINMF7jwhjOwBpOd8iwtEyAnvlz4,11971
|
655
|
-
zenml/models/v2/core/pipeline_run.py,sha256=
|
655
|
+
zenml/models/v2/core/pipeline_run.py,sha256=RNAPY53ADBvUPXSwA--ZFjQymPWr2SyZcUb-iCZUL0A,31613
|
656
656
|
zenml/models/v2/core/project.py,sha256=fNNO8Tg5OhSzmFf2t6g4SpUzGWC96oHhUccVyWytvIE,5627
|
657
657
|
zenml/models/v2/core/run_metadata.py,sha256=hRGQa_sk99uDSab3EyyOQhefypVpiQDCH3oAtblREDk,2432
|
658
658
|
zenml/models/v2/core/run_template.py,sha256=6jdH1son7kpvFv-vtaOL2nXMATtVpqk_7a2xOVv_7cc,14097
|
@@ -686,7 +686,7 @@ zenml/models/v2/misc/statistics.py,sha256=ajce9rHC2bBylLzOmLfcOBSbTnJD67Y8n5YKCY
|
|
686
686
|
zenml/models/v2/misc/tag.py,sha256=jUoz7wqMpDFlIUmvj4PVq8NYJJB7TMCcdRfW-DAABCU,974
|
687
687
|
zenml/models/v2/misc/user_auth.py,sha256=1-yafNA9qK4wL8ToROjaklTVI7Mj9va0t80_4wm7w3U,6988
|
688
688
|
zenml/orchestrators/__init__.py,sha256=Nhmc6U-q6c8TEH1Jb5l8XaKnc4KmLNspDpvvV5TcvzQ,2007
|
689
|
-
zenml/orchestrators/base_orchestrator.py,sha256
|
689
|
+
zenml/orchestrators/base_orchestrator.py,sha256=I_fEZNgkokO4WGgA1tnJYtN_iCISBsQLoGJNZ7sVb1U,22047
|
690
690
|
zenml/orchestrators/cache_utils.py,sha256=PLZwNZREx3W4ZgRUahuIbfeTdR08uNWcwuDeoxzANac,6537
|
691
691
|
zenml/orchestrators/containerized_orchestrator.py,sha256=-umxlNlQfezks1GLoi0SyXtXXo9dkC4Re9nA0fh_avw,3858
|
692
692
|
zenml/orchestrators/dag_runner.py,sha256=6pDloHKuGvOTaABJ8G8OJ94f_8uPfeN-M0Nc5sFjHwA,10708
|
@@ -696,7 +696,7 @@ zenml/orchestrators/local/local_orchestrator.py,sha256=KCzc901_wrb1DPTDu_IY6HFxT
|
|
696
696
|
zenml/orchestrators/local_docker/__init__.py,sha256=k8J68ydy6HmmvE9tWo32g761H8P_Dw4AxWNf4UMpsbs,669
|
697
697
|
zenml/orchestrators/local_docker/local_docker_orchestrator.py,sha256=dEc1R2_xzFIzvSwPirwtH2noYzPyw0gbdDhpsqAgFMM,10032
|
698
698
|
zenml/orchestrators/output_utils.py,sha256=01vqke1ZfmfuLpgxNerF-QL2wA0VPv1zUdvlMw0OwUY,3508
|
699
|
-
zenml/orchestrators/publish_utils.py,sha256=
|
699
|
+
zenml/orchestrators/publish_utils.py,sha256=BxzMWNvk0TH8v-XxDjlgmgwsuCSqlVbZF099SmpEo9A,8637
|
700
700
|
zenml/orchestrators/step_launcher.py,sha256=dOvvMtgO_UhzPJYR3cz2H_j4L74qd9r9ggIc7EYzj40,18767
|
701
701
|
zenml/orchestrators/step_run_utils.py,sha256=52ANscGnPTAyrOcMfMzSb3s3udxLiDL3Ly1uDvd2ZRk,16655
|
702
702
|
zenml/orchestrators/step_runner.py,sha256=X3sX7f5NBYxT3utFGKcOJlkvCauYyEoo0LB2TB2Pp9U,27435
|
@@ -704,11 +704,11 @@ zenml/orchestrators/topsort.py,sha256=D8evz3X47zwpXd90NMLsJD-_uCeXtV6ClzNfDUrq7c
|
|
704
704
|
zenml/orchestrators/utils.py,sha256=6bqLc1fmdJTXg8JUwUKs8YNbmxTuMIfWmUbUpg-7hx0,12956
|
705
705
|
zenml/orchestrators/wheeled_orchestrator.py,sha256=eOnMcnd3sCzfhA2l6qRAzF0rOXzaojbjvvYvTkqixQo,4791
|
706
706
|
zenml/pipelines/__init__.py,sha256=hpIX7hN8jsQRHT5R-xSXZL88qrHwkmrvGLQeu1rWt4o,873
|
707
|
-
zenml/pipelines/build_utils.py,sha256=
|
707
|
+
zenml/pipelines/build_utils.py,sha256=oxloigboxfDdNccS5bS1TZFkSAI8ldbEmhtIaxE-ap8,28002
|
708
708
|
zenml/pipelines/pipeline_context.py,sha256=4BixReLcPo33VtNBDrMwnJqjKTinHjmO5AOfmoeIOQM,3659
|
709
709
|
zenml/pipelines/pipeline_decorator.py,sha256=4UO9JZuO7PylwqEmcYpCTcWND9bFBdaMS7dK5mbd4gw,5107
|
710
710
|
zenml/pipelines/pipeline_definition.py,sha256=UeGemwJ_TMWlVCdOnm5g_b8Vk55YSvFhmQc8Uo6WOuA,60534
|
711
|
-
zenml/pipelines/run_utils.py,sha256=
|
711
|
+
zenml/pipelines/run_utils.py,sha256=cmI5PFwUBMi-6AzizGf2W1fFNb_zv95duVBb63gcx30,11932
|
712
712
|
zenml/plugins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
713
713
|
zenml/plugins/base_plugin_flavor.py,sha256=88IxFW91UB_rQ8xPlfRnIhIJh7A308NEq2epMMdlOng,2530
|
714
714
|
zenml/plugins/plugin_flavor_registry.py,sha256=LsN2Q0K-7EQ9H4uvlEG62Y0C1_Ro1UwppX4cnGbEcOA,10862
|
@@ -757,7 +757,7 @@ zenml/step_operators/__init__.py,sha256=tqj7fgnQyZubLjwUu4ITwkA-70KMQz4g37agbfF7
|
|
757
757
|
zenml/step_operators/base_step_operator.py,sha256=ZRnY6lcEHY8xZskrKKdPhgKg2BlEoh2_kb8xCaM2D1g,3522
|
758
758
|
zenml/step_operators/step_operator_entrypoint_configuration.py,sha256=wuQKmEI_ckn1CHHrxWGGdIhQyBFXG01aKC2-2b6Atjo,3690
|
759
759
|
zenml/steps/__init__.py,sha256=KKWFOmCZGLDEikOD2E5YmDA7QHo47uPV37by21WwI0U,1453
|
760
|
-
zenml/steps/base_step.py,sha256=
|
760
|
+
zenml/steps/base_step.py,sha256=xN6IwoCBfazNpNInqM-mN5o6in9Rgufy1MaQL4GDr_I,45198
|
761
761
|
zenml/steps/decorated_step.py,sha256=cr4m7qi525fUc_VTkb7J16dKdUSzc4UA5eyHg8vFWQg,4275
|
762
762
|
zenml/steps/entrypoint_function_utils.py,sha256=H0WIkHpR_R0S9gl_tWr0nX-fcBlYnm8OQ1cimvrw-qo,9555
|
763
763
|
zenml/steps/step_context.py,sha256=sFvVVvEyKmWTrucofor8Cuxv-72jbziVaQY-OlOvFAM,15526
|
@@ -1086,8 +1086,8 @@ zenml/zen_server/routers/users_endpoints.py,sha256=-0wjKK0LYOUY7gmmbTRU1AHIej99d
|
|
1086
1086
|
zenml/zen_server/routers/webhook_endpoints.py,sha256=4Ca6k_qyE5lZpflEqV0P4mcuXnhlW9N-YemZIwchRJg,4009
|
1087
1087
|
zenml/zen_server/secure_headers.py,sha256=glh6QujnjyeoH1_FK-tAS-105G-qKS_34AqSzqJ6TRc,4182
|
1088
1088
|
zenml/zen_server/template_execution/__init__.py,sha256=79knXLKfegsvVSVSWecpqrepq6iAavTUA4hKuiDk-WE,613
|
1089
|
-
zenml/zen_server/template_execution/runner_entrypoint_configuration.py,sha256=
|
1090
|
-
zenml/zen_server/template_execution/utils.py,sha256=
|
1089
|
+
zenml/zen_server/template_execution/runner_entrypoint_configuration.py,sha256=9tGLrbXrHoMSH6HwisXoHvEDv6g32YRgI_Nfhb_2CjY,2648
|
1090
|
+
zenml/zen_server/template_execution/utils.py,sha256=uS6e5MrxVytF13ZsGwSi2n04FP_HcLggvY6mxfiDX5U,19945
|
1091
1091
|
zenml/zen_server/template_execution/workload_manager_interface.py,sha256=CL9c7z8ajuZE01DaHmdCDCZmsroDcTarvN-nE8jv6qQ,2590
|
1092
1092
|
zenml/zen_server/utils.py,sha256=BKwaSRRWpYUaItCH4xwXOfG3JmsuFuf6Oi1B6dms0ps,24657
|
1093
1093
|
zenml/zen_server/zen_server_api.py,sha256=bXriGA06xKe_Pz-Adw-dzJX9yWpQbS5Hqxbmg_7FQSA,11603
|
@@ -1263,6 +1263,7 @@ zenml/zen_stores/migrations/versions/7b651bf6822e_track_secrets_in_db.py,sha256=
|
|
1263
1263
|
zenml/zen_stores/migrations/versions/7d1919bb1ef0_add_run_templates.py,sha256=nvJ6pnd6ivlUs7tlFAy-Z2SKGxytToXSziekRzjVN0E,3296
|
1264
1264
|
zenml/zen_stores/migrations/versions/7e4a481d17f7_add_identity_table.py,sha256=5I5v4Y7oxvo9O2pU46Aw3DVffIqh7R8EGE-ylNpx08E,1356
|
1265
1265
|
zenml/zen_stores/migrations/versions/7f603e583dd7_fixed_migration.py,sha256=UGwP2-kjQrASvvQbrTnOK8y-XDFrfPvH8sRCGZu2LLE,3913
|
1266
|
+
zenml/zen_stores/migrations/versions/83ef3cb746a5_add_status_reason.py,sha256=YywZIc4c9OnKSqHA7AIEz6D52dHsAMSoG8DKQSLgRKE,1122
|
1266
1267
|
zenml/zen_stores/migrations/versions/85289fea86ff_adding_source_to_logs.py,sha256=YQPRRmBvtOeJZ40VDuZydyIB0WbMv6p0I_kf1xubKuY,1988
|
1267
1268
|
zenml/zen_stores/migrations/versions/857843db1bcf_add_api_transaction_table.py,sha256=Wq6pOTYEeERdn7nOzMzREu9yN0Iofs40Th92sXQV4Vw,2108
|
1268
1269
|
zenml/zen_stores/migrations/versions/86fa52918b54_remove_teams_and_roles.py,sha256=HF-0PaDS6_ljZinJFwGZQldaHB8Znx9KkLPjwIl1KQI,4689
|
@@ -1329,7 +1330,7 @@ zenml/zen_stores/schemas/logs_schemas.py,sha256=la8ipJeTZ920ubHn8Uqf1DJLR7xHEXKK
|
|
1329
1330
|
zenml/zen_stores/schemas/model_schemas.py,sha256=cDhWggrn3rTjaFML3iQGuW_4CpUJUxAnHieiY-dq0y4,26006
|
1330
1331
|
zenml/zen_stores/schemas/pipeline_build_schemas.py,sha256=8GMdJNNcoSnbYH9daVr8zrhwQ1n-HZrpgzHoBZ7DZyA,7320
|
1331
1332
|
zenml/zen_stores/schemas/pipeline_deployment_schemas.py,sha256=ZJ5K_rzVhe7rvE6kRdmYhRn4E2DcZxxMUPgAImeLN2s,15423
|
1332
|
-
zenml/zen_stores/schemas/pipeline_run_schemas.py,sha256=
|
1333
|
+
zenml/zen_stores/schemas/pipeline_run_schemas.py,sha256=3FravYvu03zTws9Uz53aLuYgYmGS7ZEqbHMT40abN_w,24916
|
1333
1334
|
zenml/zen_stores/schemas/pipeline_schemas.py,sha256=xgioTeBuFFFDOJi5eESx2j-8mW55B6hshosFylev5Mw,8213
|
1334
1335
|
zenml/zen_stores/schemas/project_schemas.py,sha256=X2GClPNQz0COsEZX8xI-I8Sm68Hb6f20Obm24mQyLS0,6013
|
1335
1336
|
zenml/zen_stores/schemas/run_metadata_schemas.py,sha256=G94rT4ldluMSnf9rm7R_9rw_GlgaAyq72ptkHl0gHeg,3605
|
@@ -1355,11 +1356,11 @@ zenml/zen_stores/secrets_stores/hashicorp_secrets_store.py,sha256=5err1a-TrV3SR5
|
|
1355
1356
|
zenml/zen_stores/secrets_stores/secrets_store_interface.py,sha256=Q2Jbnt2Pp7NGlR-u1YBfRZV2g8su2Fd0ArBMdksAE-Q,2819
|
1356
1357
|
zenml/zen_stores/secrets_stores/service_connector_secrets_store.py,sha256=DrXGMkBxQIy2n_kkux5Xh2OM3Ks3MOpqP1D4aY8bfyY,7047
|
1357
1358
|
zenml/zen_stores/secrets_stores/sql_secrets_store.py,sha256=LPFW757WCJLP1S8vrvjsrl2Tf1yo281xUTjSBsos4qk,8788
|
1358
|
-
zenml/zen_stores/sql_zen_store.py,sha256=
|
1359
|
-
zenml/zen_stores/template_utils.py,sha256=
|
1359
|
+
zenml/zen_stores/sql_zen_store.py,sha256=Hs4gP6vMBK_hBUFF-s5T8NJVHCj7d-lVkxgRp_sFLTU,493410
|
1360
|
+
zenml/zen_stores/template_utils.py,sha256=O4T7c4r4V7OkP7vFPQisPQ7XRNB5YKWNlj1foiDxdqk,10143
|
1360
1361
|
zenml/zen_stores/zen_store_interface.py,sha256=weiSULdI9AsbCE10a5TcwtybX-BJs9hKhjPJnTapWv4,93023
|
1361
|
-
zenml_nightly-0.84.3.
|
1362
|
-
zenml_nightly-0.84.3.
|
1363
|
-
zenml_nightly-0.84.3.
|
1364
|
-
zenml_nightly-0.84.3.
|
1365
|
-
zenml_nightly-0.84.3.
|
1362
|
+
zenml_nightly-0.84.3.dev20250910.dist-info/LICENSE,sha256=wbnfEnXnafPbqwANHkV6LUsPKOtdpsd-SNw37rogLtc,11359
|
1363
|
+
zenml_nightly-0.84.3.dev20250910.dist-info/METADATA,sha256=UyI72hExuNrNiSe0bQ5hHx2WDjeoxeXxaED4HDD_0-8,25249
|
1364
|
+
zenml_nightly-0.84.3.dev20250910.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
1365
|
+
zenml_nightly-0.84.3.dev20250910.dist-info/entry_points.txt,sha256=QK3ETQE0YswAM2mWypNMOv8TLtr7EjnqAFq1br_jEFE,43
|
1366
|
+
zenml_nightly-0.84.3.dev20250910.dist-info/RECORD,,
|
{zenml_nightly-0.84.3.dev20250908.dist-info → zenml_nightly-0.84.3.dev20250910.dist-info}/LICENSE
RENAMED
File without changes
|
{zenml_nightly-0.84.3.dev20250908.dist-info → zenml_nightly-0.84.3.dev20250910.dist-info}/WHEEL
RENAMED
File without changes
|
File without changes
|