zenml-nightly 0.66.0.dev20240910__py3-none-any.whl → 0.66.0.dev20240918__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/service_accounts.py +54 -14
- zenml/client.py +3 -0
- zenml/models/v2/core/pipeline_run.py +51 -1
- zenml/service_connectors/docker_service_connector.py +11 -1
- zenml/stack/stack.py +0 -15
- zenml/stack/stack_component.py +50 -17
- zenml/steps/base_step.py +22 -4
- zenml/zen_stores/schemas/pipeline_run_schemas.py +10 -0
- zenml/zen_stores/schemas/run_template_schemas.py +1 -0
- zenml/zen_stores/sql_zen_store.py +3 -0
- {zenml_nightly-0.66.0.dev20240910.dist-info → zenml_nightly-0.66.0.dev20240918.dist-info}/METADATA +1 -1
- {zenml_nightly-0.66.0.dev20240910.dist-info → zenml_nightly-0.66.0.dev20240918.dist-info}/RECORD +16 -16
- {zenml_nightly-0.66.0.dev20240910.dist-info → zenml_nightly-0.66.0.dev20240918.dist-info}/LICENSE +0 -0
- {zenml_nightly-0.66.0.dev20240910.dist-info → zenml_nightly-0.66.0.dev20240918.dist-info}/WHEEL +0 -0
- {zenml_nightly-0.66.0.dev20240910.dist-info → zenml_nightly-0.66.0.dev20240918.dist-info}/entry_points.txt +0 -0
zenml/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.66.0.
|
1
|
+
0.66.0.dev20240918
|
zenml/cli/service_accounts.py
CHANGED
@@ -35,6 +35,7 @@ def _create_api_key(
|
|
35
35
|
name: str,
|
36
36
|
description: Optional[str],
|
37
37
|
set_key: bool = False,
|
38
|
+
output_file: Optional[str] = None,
|
38
39
|
) -> None:
|
39
40
|
"""Create an API key.
|
40
41
|
|
@@ -44,6 +45,7 @@ def _create_api_key(
|
|
44
45
|
name: Name of the API key
|
45
46
|
description: The API key description.
|
46
47
|
set_key: Configure the local client with the generated key.
|
48
|
+
output_file: Output file to write the API key to.
|
47
49
|
"""
|
48
50
|
client = Client()
|
49
51
|
zen_store = client.zen_store
|
@@ -74,13 +76,19 @@ def _create_api_key(
|
|
74
76
|
)
|
75
77
|
return
|
76
78
|
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
f"
|
82
|
-
|
83
|
-
|
79
|
+
if output_file and api_key.key:
|
80
|
+
with open(output_file, "w") as f:
|
81
|
+
f.write(api_key.key)
|
82
|
+
|
83
|
+
cli_utils.declare(f"Wrote API key value to {output_file}")
|
84
|
+
else:
|
85
|
+
cli_utils.declare(
|
86
|
+
f"The API key value is: '{api_key.key}'\nPlease store it safely as "
|
87
|
+
"it will not be shown again.\nTo configure a ZenML client to use "
|
88
|
+
"this API key, run:\n\n"
|
89
|
+
f"zenml connect --url {zen_store.config.url} --api-key \\\n"
|
90
|
+
f" '{api_key.key}'\n"
|
91
|
+
)
|
84
92
|
|
85
93
|
|
86
94
|
@cli.group(cls=TagGroup, tag=CliCategories.IDENTITY_AND_SECURITY)
|
@@ -111,11 +119,18 @@ def service_account() -> None:
|
|
111
119
|
help=("Configure the local client to use the generated API key."),
|
112
120
|
is_flag=True,
|
113
121
|
)
|
122
|
+
@click.option(
|
123
|
+
"--output-file",
|
124
|
+
type=str,
|
125
|
+
required=False,
|
126
|
+
help="File to write the API key to.",
|
127
|
+
)
|
114
128
|
def create_service_account(
|
115
129
|
service_account_name: str,
|
116
130
|
description: str = "",
|
117
131
|
create_api_key: bool = True,
|
118
132
|
set_api_key: bool = False,
|
133
|
+
output_file: Optional[str] = None,
|
119
134
|
) -> None:
|
120
135
|
"""Create a new service account.
|
121
136
|
|
@@ -124,6 +139,7 @@ def create_service_account(
|
|
124
139
|
description: The API key description.
|
125
140
|
create_api_key: Create an API key for the service account.
|
126
141
|
set_api_key: Configure the local client to use the generated API key.
|
142
|
+
output_file: Output file to write the API key to.
|
127
143
|
"""
|
128
144
|
client = Client()
|
129
145
|
try:
|
@@ -142,6 +158,7 @@ def create_service_account(
|
|
142
158
|
name="default",
|
143
159
|
description="Default API key.",
|
144
160
|
set_key=set_api_key,
|
161
|
+
output_file=output_file,
|
145
162
|
)
|
146
163
|
|
147
164
|
|
@@ -302,12 +319,19 @@ def api_key(
|
|
302
319
|
is_flag=True,
|
303
320
|
help="Configure the local client with the generated key.",
|
304
321
|
)
|
322
|
+
@click.option(
|
323
|
+
"--output-file",
|
324
|
+
type=str,
|
325
|
+
required=False,
|
326
|
+
help="File to write the API key to.",
|
327
|
+
)
|
305
328
|
@click.pass_obj
|
306
329
|
def create_api_key(
|
307
330
|
service_account_name_or_id: str,
|
308
331
|
name: str,
|
309
332
|
description: Optional[str],
|
310
333
|
set_key: bool = False,
|
334
|
+
output_file: Optional[str] = None,
|
311
335
|
) -> None:
|
312
336
|
"""Create an API key.
|
313
337
|
|
@@ -317,12 +341,14 @@ def create_api_key(
|
|
317
341
|
name: Name of the API key
|
318
342
|
description: The API key description.
|
319
343
|
set_key: Configure the local client with the generated key.
|
344
|
+
output_file: Output file to write the API key to.
|
320
345
|
"""
|
321
346
|
_create_api_key(
|
322
347
|
service_account_name_or_id=service_account_name_or_id,
|
323
348
|
name=name,
|
324
349
|
description=description,
|
325
350
|
set_key=set_key,
|
351
|
+
output_file=output_file,
|
326
352
|
)
|
327
353
|
|
328
354
|
|
@@ -450,12 +476,19 @@ def update_api_key(
|
|
450
476
|
is_flag=True,
|
451
477
|
help="Configure the local client with the generated key.",
|
452
478
|
)
|
479
|
+
@click.option(
|
480
|
+
"--output-file",
|
481
|
+
type=str,
|
482
|
+
required=False,
|
483
|
+
help="File to write the API key to.",
|
484
|
+
)
|
453
485
|
@click.pass_obj
|
454
486
|
def rotate_api_key(
|
455
487
|
service_account_name_or_id: str,
|
456
488
|
name_or_id: str,
|
457
489
|
retain: int = 0,
|
458
490
|
set_key: bool = False,
|
491
|
+
output_file: Optional[str] = None,
|
459
492
|
) -> None:
|
460
493
|
"""Rotate an API key.
|
461
494
|
|
@@ -466,6 +499,7 @@ def rotate_api_key(
|
|
466
499
|
retain: Number of minutes for which the previous key is still valid
|
467
500
|
after it has been rotated.
|
468
501
|
set_key: Configure the local client with the newly generated key.
|
502
|
+
output_file: Output file to write the API key to.
|
469
503
|
"""
|
470
504
|
client = Client()
|
471
505
|
zen_store = client.zen_store
|
@@ -499,13 +533,19 @@ def rotate_api_key(
|
|
499
533
|
)
|
500
534
|
return
|
501
535
|
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
|
506
|
-
f"
|
507
|
-
|
508
|
-
|
536
|
+
if output_file and api_key.key:
|
537
|
+
with open(output_file, "w") as f:
|
538
|
+
f.write(api_key.key)
|
539
|
+
|
540
|
+
cli_utils.declare(f"Wrote API key value to {output_file}")
|
541
|
+
else:
|
542
|
+
cli_utils.declare(
|
543
|
+
f"The new API key value is: '{api_key.key}'\nPlease store it "
|
544
|
+
"safely as it will not be shown again.\nTo configure a ZenML "
|
545
|
+
"client to use this API key, run:\n\n"
|
546
|
+
f"zenml connect --url {zen_store.config.url} --api-key \\\n"
|
547
|
+
f" '{api_key.key}'\n"
|
548
|
+
)
|
509
549
|
|
510
550
|
|
511
551
|
@api_key.command("delete")
|
zenml/client.py
CHANGED
@@ -3748,6 +3748,7 @@ class Client(metaclass=ClientMetaClass):
|
|
3748
3748
|
end_time: Optional[Union[datetime, str]] = None,
|
3749
3749
|
num_steps: Optional[Union[int, str]] = None,
|
3750
3750
|
unlisted: Optional[bool] = None,
|
3751
|
+
templatable: Optional[bool] = None,
|
3751
3752
|
tag: Optional[str] = None,
|
3752
3753
|
hydrate: bool = False,
|
3753
3754
|
) -> Page[PipelineRunResponse]:
|
@@ -3778,6 +3779,7 @@ class Client(metaclass=ClientMetaClass):
|
|
3778
3779
|
end_time: The end_time for the pipeline run
|
3779
3780
|
num_steps: The number of steps for the pipeline run
|
3780
3781
|
unlisted: If the runs should be unlisted or not.
|
3782
|
+
templatable: If the runs should be templatable or not.
|
3781
3783
|
tag: Tag to filter by.
|
3782
3784
|
hydrate: Flag deciding whether to hydrate the output model(s)
|
3783
3785
|
by including metadata fields in the response.
|
@@ -3811,6 +3813,7 @@ class Client(metaclass=ClientMetaClass):
|
|
3811
3813
|
num_steps=num_steps,
|
3812
3814
|
tag=tag,
|
3813
3815
|
unlisted=unlisted,
|
3816
|
+
templatable=templatable,
|
3814
3817
|
)
|
3815
3818
|
runs_filter_model.set_scope_workspace(self.active_workspace.id)
|
3816
3819
|
return self.zen_store.list_runs(
|
@@ -235,6 +235,9 @@ class PipelineRunResponseMetadata(WorkspaceScopedResponseMetadata):
|
|
235
235
|
default=None,
|
236
236
|
description="Template used for the pipeline run.",
|
237
237
|
)
|
238
|
+
is_templatable: bool = Field(
|
239
|
+
description="Whether a template can be created from this run.",
|
240
|
+
)
|
238
241
|
|
239
242
|
|
240
243
|
class PipelineRunResponseResources(WorkspaceScopedResponseResources):
|
@@ -477,6 +480,15 @@ class PipelineRunResponse(
|
|
477
480
|
"""
|
478
481
|
return self.get_metadata().template_id
|
479
482
|
|
483
|
+
@property
|
484
|
+
def is_templatable(self) -> bool:
|
485
|
+
"""The `is_templatable` property.
|
486
|
+
|
487
|
+
Returns:
|
488
|
+
the value of the property.
|
489
|
+
"""
|
490
|
+
return self.get_metadata().is_templatable
|
491
|
+
|
480
492
|
@property
|
481
493
|
def model_version(self) -> Optional[ModelVersionResponse]:
|
482
494
|
"""The `model_version` property.
|
@@ -511,6 +523,7 @@ class PipelineRunFilter(WorkspaceScopedTaggableFilter):
|
|
511
523
|
"stack_id",
|
512
524
|
"template_id",
|
513
525
|
"pipeline_name",
|
526
|
+
"templatable",
|
514
527
|
]
|
515
528
|
name: Optional[str] = Field(
|
516
529
|
default=None,
|
@@ -584,6 +597,7 @@ class PipelineRunFilter(WorkspaceScopedTaggableFilter):
|
|
584
597
|
union_mode="left_to_right",
|
585
598
|
)
|
586
599
|
unlisted: Optional[bool] = None
|
600
|
+
templatable: Optional[bool] = None
|
587
601
|
|
588
602
|
def get_custom_filters(
|
589
603
|
self,
|
@@ -595,7 +609,7 @@ class PipelineRunFilter(WorkspaceScopedTaggableFilter):
|
|
595
609
|
"""
|
596
610
|
custom_filters = super().get_custom_filters()
|
597
611
|
|
598
|
-
from sqlmodel import and_
|
612
|
+
from sqlmodel import and_, col, or_
|
599
613
|
|
600
614
|
from zenml.zen_stores.schemas import (
|
601
615
|
CodeReferenceSchema,
|
@@ -668,4 +682,40 @@ class PipelineRunFilter(WorkspaceScopedTaggableFilter):
|
|
668
682
|
)
|
669
683
|
custom_filters.append(run_template_filter)
|
670
684
|
|
685
|
+
if self.templatable is not None:
|
686
|
+
if self.templatable is True:
|
687
|
+
templatable_filter = and_(
|
688
|
+
# The following condition is not perfect as it does not
|
689
|
+
# consider stacks with custom flavor components or local
|
690
|
+
# components, but the best we can do currently with our
|
691
|
+
# table columns.
|
692
|
+
PipelineRunSchema.deployment_id
|
693
|
+
== PipelineDeploymentSchema.id,
|
694
|
+
PipelineDeploymentSchema.build_id
|
695
|
+
== PipelineBuildSchema.id,
|
696
|
+
col(PipelineBuildSchema.is_local).is_(False),
|
697
|
+
col(PipelineBuildSchema.stack_id).is_not(None),
|
698
|
+
)
|
699
|
+
else:
|
700
|
+
templatable_filter = or_(
|
701
|
+
col(PipelineRunSchema.deployment_id).is_(None),
|
702
|
+
and_(
|
703
|
+
PipelineRunSchema.deployment_id
|
704
|
+
== PipelineDeploymentSchema.id,
|
705
|
+
col(PipelineDeploymentSchema.build_id).is_(None),
|
706
|
+
),
|
707
|
+
and_(
|
708
|
+
PipelineRunSchema.deployment_id
|
709
|
+
== PipelineDeploymentSchema.id,
|
710
|
+
PipelineDeploymentSchema.build_id
|
711
|
+
== PipelineBuildSchema.id,
|
712
|
+
or_(
|
713
|
+
col(PipelineBuildSchema.is_local).is_(True),
|
714
|
+
col(PipelineBuildSchema.stack_id).is_(None),
|
715
|
+
),
|
716
|
+
),
|
717
|
+
)
|
718
|
+
|
719
|
+
custom_filters.append(templatable_filter)
|
720
|
+
|
671
721
|
return custom_filters
|
@@ -261,8 +261,18 @@ class DockerServiceConnector(ServiceConnector):
|
|
261
261
|
"""
|
262
262
|
assert self.resource_id is not None
|
263
263
|
|
264
|
+
# The reason we need to configure the local client here instead of
|
265
|
+
# using the `docker_client.login(...)` method is the following:
|
266
|
+
# When calling the login method on the python client, it stores the
|
267
|
+
# credentials in memory, but doesn't actually use them in future calls
|
268
|
+
# to push/pull images in case a credential store or credential helper is
|
269
|
+
# configured. If the cred store/helper contains invalid/expired
|
270
|
+
# credentials for the registry, these calls will fail.
|
271
|
+
# This solution is not ideal as we're now replacing potentially
|
272
|
+
# long-lived credentials in the cred store with our short lived ones,
|
273
|
+
# but the best we can do without modifying the docker library.
|
274
|
+
self._configure_local_client()
|
264
275
|
docker_client = docker_utils._try_get_docker_client_from_env()
|
265
|
-
|
266
276
|
self._authorize_client(docker_client, self.resource_id)
|
267
277
|
|
268
278
|
return docker_client
|
zenml/stack/stack.py
CHANGED
@@ -751,21 +751,6 @@ class Stack:
|
|
751
751
|
updated=datetime.utcnow(),
|
752
752
|
)
|
753
753
|
|
754
|
-
logger.warning(
|
755
|
-
"The stack `%s` contains components that require building "
|
756
|
-
"Docker images. Older versions of ZenML always built these "
|
757
|
-
"images locally, but since version 0.32.0 this behavior can be "
|
758
|
-
"configured using the `image_builder` stack component. This "
|
759
|
-
"stack will temporarily default to a local image builder that "
|
760
|
-
"mirrors the previous behavior, but this will be removed in "
|
761
|
-
"future versions of ZenML. Please add an image builder to this "
|
762
|
-
"stack:\n"
|
763
|
-
"`zenml image-builder register <NAME> ...\n"
|
764
|
-
"zenml stack update %s -i <NAME>`",
|
765
|
-
self.name,
|
766
|
-
self.id,
|
767
|
-
)
|
768
|
-
|
769
754
|
self._image_builder = image_builder
|
770
755
|
|
771
756
|
def prepare_pipeline_deployment(
|
zenml/stack/stack_component.py
CHANGED
@@ -421,23 +421,56 @@ class StackComponent:
|
|
421
421
|
else:
|
422
422
|
user_id = None
|
423
423
|
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
424
|
+
try:
|
425
|
+
return flavor.implementation_class(
|
426
|
+
user=user_id,
|
427
|
+
workspace=component_model.workspace.id,
|
428
|
+
name=component_model.name,
|
429
|
+
id=component_model.id,
|
430
|
+
config=configuration,
|
431
|
+
labels=component_model.labels,
|
432
|
+
flavor=component_model.flavor,
|
433
|
+
type=component_model.type,
|
434
|
+
created=component_model.created,
|
435
|
+
updated=component_model.updated,
|
436
|
+
connector_requirements=flavor.service_connector_requirements,
|
437
|
+
connector=component_model.connector.id
|
438
|
+
if component_model.connector
|
439
|
+
else None,
|
440
|
+
connector_resource_id=component_model.connector_resource_id,
|
441
|
+
)
|
442
|
+
except ImportError as e:
|
443
|
+
from zenml.integrations.registry import integration_registry
|
444
|
+
|
445
|
+
integration_requirements = " ".join(
|
446
|
+
integration_registry.select_integration_requirements(
|
447
|
+
flavor_model.integration
|
448
|
+
)
|
449
|
+
)
|
450
|
+
|
451
|
+
if integration_registry.is_installed(flavor_model.integration):
|
452
|
+
raise ImportError(
|
453
|
+
f"{e}\n\n"
|
454
|
+
f"Something went wrong while trying to import from the "
|
455
|
+
f"`{flavor_model.integration}` integration. Please make "
|
456
|
+
"sure that all its requirements are installed properly by "
|
457
|
+
"reinstalling the integration either through our CLI: "
|
458
|
+
f"`zenml integration install {flavor_model.integration} "
|
459
|
+
"-y` or by manually installing its requirements: "
|
460
|
+
f"`pip install {integration_requirements}`. If the error"
|
461
|
+
"persists, please contact the ZenML team."
|
462
|
+
) from e
|
463
|
+
else:
|
464
|
+
raise ImportError(
|
465
|
+
f"{e}\n\n"
|
466
|
+
f"The `{flavor_model.integration}` integration that you "
|
467
|
+
"are trying to use is not installed in your current "
|
468
|
+
"environment. Please make sure that it is installed by "
|
469
|
+
"either using our CLI: `zenml integration install "
|
470
|
+
f"{flavor_model.integration}` or by manually installing "
|
471
|
+
f"its requirements: `pip install "
|
472
|
+
f"{integration_requirements}`"
|
473
|
+
) from e
|
441
474
|
|
442
475
|
@property
|
443
476
|
def config(self) -> StackComponentConfig:
|
zenml/steps/base_step.py
CHANGED
@@ -592,16 +592,34 @@ class BaseStep(metaclass=BaseStepMeta):
|
|
592
592
|
from zenml.new.pipelines.pipeline import Pipeline
|
593
593
|
|
594
594
|
if not Pipeline.ACTIVE_PIPELINE:
|
595
|
-
|
596
|
-
|
597
|
-
#
|
595
|
+
from zenml import constants, get_step_context
|
596
|
+
|
597
|
+
# If the environment variable was set to explicitly not run on the
|
598
|
+
# stack, we do that.
|
598
599
|
run_without_stack = handle_bool_env_var(
|
599
600
|
ENV_ZENML_RUN_SINGLE_STEPS_WITHOUT_STACK, default=False
|
600
601
|
)
|
601
602
|
if run_without_stack:
|
602
603
|
return self.call_entrypoint(*args, **kwargs)
|
604
|
+
|
605
|
+
try:
|
606
|
+
get_step_context()
|
607
|
+
except RuntimeError:
|
608
|
+
pass
|
603
609
|
else:
|
604
|
-
|
610
|
+
# We're currently inside the execution of a different step
|
611
|
+
# -> We don't want to launch another single step pipeline here,
|
612
|
+
# but instead just call the step function
|
613
|
+
return self.call_entrypoint(*args, **kwargs)
|
614
|
+
|
615
|
+
if constants.SHOULD_PREVENT_PIPELINE_EXECUTION:
|
616
|
+
logger.info(
|
617
|
+
"Preventing execution of step '%s'.",
|
618
|
+
self.name,
|
619
|
+
)
|
620
|
+
return
|
621
|
+
|
622
|
+
return run_as_single_step_pipeline(self, *args, **kwargs)
|
605
623
|
|
606
624
|
(
|
607
625
|
input_artifacts,
|
@@ -328,6 +328,15 @@ class PipelineRunSchema(NamedSchema, table=True):
|
|
328
328
|
)
|
329
329
|
metadata = None
|
330
330
|
if include_metadata:
|
331
|
+
is_templatable = False
|
332
|
+
if (
|
333
|
+
self.deployment
|
334
|
+
and self.deployment.build
|
335
|
+
and not self.deployment.build.is_local
|
336
|
+
and self.deployment.build.stack
|
337
|
+
):
|
338
|
+
is_templatable = True
|
339
|
+
|
331
340
|
steps = {step.name: step.to_model() for step in self.step_runs}
|
332
341
|
|
333
342
|
metadata = PipelineRunResponseMetadata(
|
@@ -346,6 +355,7 @@ class PipelineRunSchema(NamedSchema, table=True):
|
|
346
355
|
template_id=self.deployment.template_id
|
347
356
|
if self.deployment
|
348
357
|
else None,
|
358
|
+
is_templatable=is_templatable,
|
349
359
|
)
|
350
360
|
|
351
361
|
resources = None
|
@@ -974,6 +974,7 @@ class SqlZenStore(BaseZenStore):
|
|
974
974
|
RuntimeError: if the schema does not have a `to_model` method.
|
975
975
|
"""
|
976
976
|
query = filter_model.apply_filter(query=query, table=table)
|
977
|
+
query = query.distinct()
|
977
978
|
|
978
979
|
# Get the total amount of items in the database for a given query
|
979
980
|
custom_fetch_result: Optional[Sequence[Any]] = None
|
@@ -7218,6 +7219,8 @@ class SqlZenStore(BaseZenStore):
|
|
7218
7219
|
)
|
7219
7220
|
|
7220
7221
|
# ----------------------------- Stacks -----------------------------
|
7222
|
+
|
7223
|
+
@track_decorator(AnalyticsEvent.REGISTERED_STACK)
|
7221
7224
|
def create_stack(self, stack: StackRequest) -> StackResponse:
|
7222
7225
|
"""Register a full stack.
|
7223
7226
|
|
{zenml_nightly-0.66.0.dev20240910.dist-info → zenml_nightly-0.66.0.dev20240918.dist-info}/RECORD
RENAMED
@@ -6,7 +6,7 @@ RELEASE_NOTES.md,sha256=GjuHlUd-5AcepXC8ETMkIRMxKVQtBekiuY_CW0oP4XQ,365106
|
|
6
6
|
ROADMAP.md,sha256=hiLSmr16BH8Dfx7SaQM4JcXCGCVl6mFZPFAwJeDTrJU,407
|
7
7
|
SECURITY.md,sha256=9DepA8y03yvCZLHEfcXLTDH4lUyKHquAdukBsccNN7c,682
|
8
8
|
zenml/README.md,sha256=827dekbOWAs1BpW7VF1a4d7EbwPbjwccX-2zdXBENZo,1777
|
9
|
-
zenml/VERSION,sha256=
|
9
|
+
zenml/VERSION,sha256=EFLZgxc91tLiAqNwF0fItVSwNRCUEwoiosAP0HS1FJI,19
|
10
10
|
zenml/__init__.py,sha256=X_JnjAYTBG2ZYgcM2_FDPssygdj7z7VTAmU9HEi17p0,2306
|
11
11
|
zenml/actions/__init__.py,sha256=mrt6wPo73iKRxK754_NqsGyJ3buW7RnVeIGXr1xEw8Y,681
|
12
12
|
zenml/actions/base_action.py,sha256=UcaHev6BTuLDwuswnyaPjdA8AgUqB5xPZ-lRtuvf2FU,25553
|
@@ -51,7 +51,7 @@ zenml/cli/pipeline.py,sha256=8UO3ZjKZbaU3tiRLBsN-N3kK_i_bD-8Qbq_YpR8mstw,17442
|
|
51
51
|
zenml/cli/secret.py,sha256=2WxDYg6iodnAVSbVJQvQEYWEgcy0oytcSBVnnyN0JOw,20135
|
52
52
|
zenml/cli/served_model.py,sha256=lIPd6kOS9kfWFOsd3DSILtiYomINpmXrdpyP5vtQlj8,14604
|
53
53
|
zenml/cli/server.py,sha256=N2cvu9C_z8CzwGu3a7P6fE2X8Se_rHEx30iq9nYMy9o,28682
|
54
|
-
zenml/cli/service_accounts.py,sha256=
|
54
|
+
zenml/cli/service_accounts.py,sha256=V6Oeomcs0tg-MIOUbYABqTcO4PsGCdM2WXJH576iqKM,17723
|
55
55
|
zenml/cli/service_connectors.py,sha256=v6o-FpTEnDXYcQXczBELwfWPCcYBi9z7b1GC90Fvp30,74397
|
56
56
|
zenml/cli/stack.py,sha256=vT-7Kac_Cf2g9XoIzwrxdQYgtkpuv_d-BpDvL-p9XUk,82862
|
57
57
|
zenml/cli/stack_components.py,sha256=BxWsqeu5e2DtP5TMjzE98d8Lqfwe5o45TC2awjil5wY,74144
|
@@ -63,7 +63,7 @@ zenml/cli/utils.py,sha256=whFzoFBxlDlldLahW7YzZc8HWcb7vGk0Jr5O5VlGcLk,91136
|
|
63
63
|
zenml/cli/version.py,sha256=nm1iSU_1V6-MUwpMKeXcwFhLYGUMLswvQL67cEuCpxA,3635
|
64
64
|
zenml/cli/web_login.py,sha256=yqJ4VRcnyz-QhWIyR2wfGpSVo_3pe3vOcRRYdluJsgI,7647
|
65
65
|
zenml/cli/workspace.py,sha256=bp02aXou574ToWPD8OAIB_cg3mvpE011H8aMKegT-nU,2970
|
66
|
-
zenml/client.py,sha256=
|
66
|
+
zenml/client.py,sha256=IZw7AGeqI84zjIE3Bv8r31NvxQY7_0KmDGsPcoAH468,279758
|
67
67
|
zenml/client_lazy_loader.py,sha256=O3PK5yB3dfqdKINfOs_LNsmnOVTvKsUl80r3JsvKldQ,6570
|
68
68
|
zenml/code_repositories/__init__.py,sha256=W5bDfzAG8OXIKZSV1L-VHuzMcSCYa9qzTdPb3jqfyYw,920
|
69
69
|
zenml/code_repositories/base_code_repository.py,sha256=_DbxIBxvJlN0PFhST0vlTIQ26Q6V3Nar0kYdeGaJrk8,4386
|
@@ -618,7 +618,7 @@ zenml/models/v2/core/model_version_pipeline_run.py,sha256=ghxCdCckYyzOwiJHhB0LU0
|
|
618
618
|
zenml/models/v2/core/pipeline.py,sha256=ZaKZ-Y0bmB6mokckLRpMXgR-UMAIwsa9NSRrdKoq6_k,8368
|
619
619
|
zenml/models/v2/core/pipeline_build.py,sha256=-Y-9V1pcHq-jI2VPEyT-Chw5hGQMljvbcDF8s2-wiko,14875
|
620
620
|
zenml/models/v2/core/pipeline_deployment.py,sha256=J10yhxqzSPXqTQZZPIN1zhe-yrZ5cEVvilkXBRiZwjg,12451
|
621
|
-
zenml/models/v2/core/pipeline_run.py,sha256=
|
621
|
+
zenml/models/v2/core/pipeline_run.py,sha256=qMwbqapkJFhBdLABtPZAjzrczmNOorNjTFdxkkpsuAE,23192
|
622
622
|
zenml/models/v2/core/run_metadata.py,sha256=u7c3LtZikb6EY6uwhXuqSIcaOgb0jDfGU8tQt3Ccerk,7863
|
623
623
|
zenml/models/v2/core/run_template.py,sha256=baa6q0z40n6sa5XgmTXxS2gJmpq-kFvu7jnXMjWu47g,11728
|
624
624
|
zenml/models/v2/core/schedule.py,sha256=QE6_2KFmamGMClS7-sE43hyNBfkVnml6rDqvmRmyiB8,10215
|
@@ -692,7 +692,7 @@ zenml/secret/schemas/azure_secret_schema.py,sha256=3WP-DRgqoHJVsJit8fQcxjd1KYX2E
|
|
692
692
|
zenml/secret/schemas/basic_auth_secret_schema.py,sha256=q-4dDtycHyWkIdZGd-qnIp4n8cxZO13qT7w_sTA4hWY,1021
|
693
693
|
zenml/secret/schemas/gcp_secret_schema.py,sha256=tDSxPXlfh4BOSICZjfJjUukfzEyBEgxpQzk4y-OV1AE,1677
|
694
694
|
zenml/service_connectors/__init__.py,sha256=gIBAVUPBZtdO6JtEBCixy9YG4wZRA1mnaxaGAxi3T1Q,645
|
695
|
-
zenml/service_connectors/docker_service_connector.py,sha256=
|
695
|
+
zenml/service_connectors/docker_service_connector.py,sha256=_6WPqYCcSUf8JPakipbkJRvaN2ghhY7zCr38WCHG0SI,13218
|
696
696
|
zenml/service_connectors/service_connector.py,sha256=HW8dTE826ZSD1vWQlqQRm8XYq08v7tDZQ8ORnJ5rTcE,55351
|
697
697
|
zenml/service_connectors/service_connector_registry.py,sha256=lP0s0k7RIp9WZEW36Q0ygHD5urzF-wUwh41rbXWS5ss,9186
|
698
698
|
zenml/service_connectors/service_connector_utils.py,sha256=h3wfVSPO0sQnARVRnih3l8P7LwkCmAgijThuHp2Z53E,18026
|
@@ -716,8 +716,8 @@ zenml/stack/__init__.py,sha256=vfHzaoRhPtS-XSlM8Vx1noJZDHF1Pj6LDz2knpn_QBg,1236
|
|
716
716
|
zenml/stack/authentication_mixin.py,sha256=sg7GkpB-Ao9Gsa7Po0jxMn-_mVYUB42etmspZ6dk8cI,3982
|
717
717
|
zenml/stack/flavor.py,sha256=rut-jFQFB6OGm25RRyMtYlJ3mm_6wrHYVI54Hmf9te4,9726
|
718
718
|
zenml/stack/flavor_registry.py,sha256=IL0fRrxxQJ9YkCYCeADP7nwWEQo4XBElJY4owMjKGbQ,6108
|
719
|
-
zenml/stack/stack.py,sha256=
|
720
|
-
zenml/stack/stack_component.py,sha256=
|
719
|
+
zenml/stack/stack.py,sha256=JIRSNX1fRCubXGPCg-qjeVtlT9fDeAX-xiToDa9CeVk,37235
|
720
|
+
zenml/stack/stack_component.py,sha256=9sgAu2EGZ2yiEn_D0dq_kmytFmlt8spJ3iG0GlHIFVU,31634
|
721
721
|
zenml/stack/stack_validator.py,sha256=hWbvvGIeWLj6NwSsF4GCc6RAxAWvxHXTcBZL9nJvcak,3111
|
722
722
|
zenml/stack/utils.py,sha256=dcJsbLZf-hJYM9Ut8BfNzrWygmz6shHegqHPRVLoLWE,5840
|
723
723
|
zenml/stack_deployments/__init__.py,sha256=-7593cQ_ZgRn774Ol-8AKXXQquIU4DSiaThVEr6TfWM,644
|
@@ -731,7 +731,7 @@ zenml/step_operators/base_step_operator.py,sha256=ZRnY6lcEHY8xZskrKKdPhgKg2BlEoh
|
|
731
731
|
zenml/step_operators/step_operator_entrypoint_configuration.py,sha256=vG0Z9D2C72PYOZ_P3eXYTmm2TvL-dS_kHhSMq-coAKE,3690
|
732
732
|
zenml/steps/__init__.py,sha256=IvxepI3tYp6LiVHFJnet9xZ7yFlH6NHCAI69SvQsfaI,1682
|
733
733
|
zenml/steps/base_parameters.py,sha256=rKnALd0lMv0jOX8E9TwHJkeP3H-ijEFXY0T5dMCu9EQ,756
|
734
|
-
zenml/steps/base_step.py,sha256=
|
734
|
+
zenml/steps/base_step.py,sha256=sQbGnPt_1-upcYAGPqqKW0xrULNZZc9NR_7fu2y5qQk,52434
|
735
735
|
zenml/steps/entrypoint_function_utils.py,sha256=25LxlZ8E-3YoWEdAUFK4UZ04hbp4GNMqpKwD2O-Rp_0,12484
|
736
736
|
zenml/steps/external_artifact.py,sha256=63ngwlSJvR8GoM93ttz1Mp6BuAg7xH-QZAsBvW3M80Q,1109
|
737
737
|
zenml/steps/step_decorator.py,sha256=_rV5MGMziqNiOoxupZUy055o-a0b8Y4RtLuB6nLyYyg,8188
|
@@ -1370,10 +1370,10 @@ zenml/zen_stores/schemas/logs_schemas.py,sha256=qv6fs3JiVgzlmTXJqb_gG5NsU5q_50e0
|
|
1370
1370
|
zenml/zen_stores/schemas/model_schemas.py,sha256=wLf1SeJPPzyq7Bm7oTTBdVHfZbOAWw027aKn_TJZ_JI,25559
|
1371
1371
|
zenml/zen_stores/schemas/pipeline_build_schemas.py,sha256=QK3sVPYhumUx_x-H3YZ-RfnsxGhKfkMGdP5FC9WrQgU,5718
|
1372
1372
|
zenml/zen_stores/schemas/pipeline_deployment_schemas.py,sha256=ihJswWXvaXilyNS8RnOfnZM1Yi1B9t7PN8t7f1vOoho,10177
|
1373
|
-
zenml/zen_stores/schemas/pipeline_run_schemas.py,sha256=
|
1373
|
+
zenml/zen_stores/schemas/pipeline_run_schemas.py,sha256=PP_r3HI9oWwV0v0lewUyf7LUUZiXlZ1FR53Y2NrWbFQ,15630
|
1374
1374
|
zenml/zen_stores/schemas/pipeline_schemas.py,sha256=HjQfuH3WDpkf_gXPv5ExN6lMrzf82mHXttTqzdSitc0,5863
|
1375
1375
|
zenml/zen_stores/schemas/run_metadata_schemas.py,sha256=pWu-WO0PCITPY5gcIB1uqGBWDT51J7LDzMrOLtNkAGg,6033
|
1376
|
-
zenml/zen_stores/schemas/run_template_schemas.py,sha256=
|
1376
|
+
zenml/zen_stores/schemas/run_template_schemas.py,sha256=4uE7lHkIQROJRNpNdvATwEJMkeij6pXnHvOsT3q3VrI,8826
|
1377
1377
|
zenml/zen_stores/schemas/schedule_schema.py,sha256=w3tAHt2mEQ7ILPz4ogRdLV4KivB7E2LtIZWkzXLzAIU,7354
|
1378
1378
|
zenml/zen_stores/schemas/schema_utils.py,sha256=2qPNPfasnTmCW1RPeViXoTAp6oO-uRnUpEZ_rugcoNw,2612
|
1379
1379
|
zenml/zen_stores/schemas/secret_schemas.py,sha256=nRzFkgR940BbS1nlBs4H3YuvFCiGGYZ1vQIsu3Y0Mvk,9884
|
@@ -1396,11 +1396,11 @@ zenml/zen_stores/secrets_stores/hashicorp_secrets_store.py,sha256=NfW1EHIA99lseb
|
|
1396
1396
|
zenml/zen_stores/secrets_stores/secrets_store_interface.py,sha256=Q2Jbnt2Pp7NGlR-u1YBfRZV2g8su2Fd0ArBMdksAE-Q,2819
|
1397
1397
|
zenml/zen_stores/secrets_stores/service_connector_secrets_store.py,sha256=kPYX-Z_OOhZCI1CP77ncfV7IsV4e8brklnTXmKxZYNc,7078
|
1398
1398
|
zenml/zen_stores/secrets_stores/sql_secrets_store.py,sha256=Bq1djrUP9saoD7vECjS7-TlA_7sjJGgw1talri4spjU,8656
|
1399
|
-
zenml/zen_stores/sql_zen_store.py,sha256=
|
1399
|
+
zenml/zen_stores/sql_zen_store.py,sha256=Sfw5nql38ZGfPbdIUNLMYsVrfMP1faRGMj0f1r1IYnk,392523
|
1400
1400
|
zenml/zen_stores/template_utils.py,sha256=UB_CBoMIfBequa8g3H7aTI6V_ke1SJr4IW1qwFCL1jc,8932
|
1401
1401
|
zenml/zen_stores/zen_store_interface.py,sha256=kzR_i8vHjULld3MquSaMorcab8lJk1e9RZquw1VXjHY,93510
|
1402
|
-
zenml_nightly-0.66.0.
|
1403
|
-
zenml_nightly-0.66.0.
|
1404
|
-
zenml_nightly-0.66.0.
|
1405
|
-
zenml_nightly-0.66.0.
|
1406
|
-
zenml_nightly-0.66.0.
|
1402
|
+
zenml_nightly-0.66.0.dev20240918.dist-info/LICENSE,sha256=wbnfEnXnafPbqwANHkV6LUsPKOtdpsd-SNw37rogLtc,11359
|
1403
|
+
zenml_nightly-0.66.0.dev20240918.dist-info/METADATA,sha256=UP3HTafnsWOeUXj64GD8CVeQeTeZGh6ekWMfQGT9whw,20961
|
1404
|
+
zenml_nightly-0.66.0.dev20240918.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
1405
|
+
zenml_nightly-0.66.0.dev20240918.dist-info/entry_points.txt,sha256=QK3ETQE0YswAM2mWypNMOv8TLtr7EjnqAFq1br_jEFE,43
|
1406
|
+
zenml_nightly-0.66.0.dev20240918.dist-info/RECORD,,
|
{zenml_nightly-0.66.0.dev20240910.dist-info → zenml_nightly-0.66.0.dev20240918.dist-info}/LICENSE
RENAMED
File without changes
|
{zenml_nightly-0.66.0.dev20240910.dist-info → zenml_nightly-0.66.0.dev20240918.dist-info}/WHEEL
RENAMED
File without changes
|
File without changes
|