zenml-nightly 0.75.0.dev20250312__py3-none-any.whl → 0.75.0.dev20250314__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 +2 -0
- zenml/analytics/context.py +7 -0
- zenml/analytics/enums.py +2 -2
- zenml/artifacts/utils.py +2 -4
- zenml/cli/__init__.py +8 -9
- zenml/cli/base.py +2 -2
- zenml/cli/code_repository.py +1 -1
- zenml/cli/login.py +6 -0
- zenml/cli/model.py +7 -15
- zenml/cli/pipeline.py +3 -3
- zenml/cli/project.py +172 -0
- zenml/cli/secret.py +47 -44
- zenml/cli/service_accounts.py +0 -1
- zenml/cli/service_connectors.py +15 -17
- zenml/cli/stack.py +0 -3
- zenml/cli/stack_components.py +2 -2
- zenml/cli/tag.py +3 -5
- zenml/cli/utils.py +25 -23
- zenml/client.py +749 -475
- zenml/config/global_config.py +48 -37
- zenml/config/pipeline_configurations.py +3 -2
- zenml/config/pipeline_run_configuration.py +2 -1
- zenml/config/secret_reference_mixin.py +1 -1
- zenml/constants.py +6 -6
- zenml/enums.py +0 -7
- zenml/event_hub/event_hub.py +3 -1
- zenml/exceptions.py +0 -24
- zenml/integrations/aws/orchestrators/sagemaker_orchestrator.py +5 -3
- zenml/integrations/bitbucket/plugins/event_sources/bitbucket_webhook_event_source.py +1 -4
- zenml/integrations/gcp/service_connectors/gcp_service_connector.py +7 -6
- zenml/integrations/github/plugins/event_sources/github_webhook_event_source.py +1 -4
- zenml/integrations/mlflow/steps/mlflow_registry.py +3 -3
- zenml/integrations/seldon/model_deployers/seldon_model_deployer.py +1 -1
- zenml/integrations/wandb/__init__.py +1 -1
- zenml/integrations/wandb/experiment_trackers/wandb_experiment_tracker.py +29 -9
- zenml/integrations/wandb/flavors/wandb_experiment_tracker_flavor.py +5 -3
- zenml/model/model.py +10 -10
- zenml/model_registries/base_model_registry.py +1 -1
- zenml/models/__init__.py +45 -28
- zenml/models/v2/base/base.py +0 -5
- zenml/models/v2/base/filter.py +2 -2
- zenml/models/v2/base/scoped.py +135 -156
- zenml/models/v2/core/action.py +12 -12
- zenml/models/v2/core/api_key.py +1 -1
- zenml/models/v2/core/artifact.py +31 -18
- zenml/models/v2/core/artifact_version.py +57 -40
- zenml/models/v2/core/code_repository.py +12 -12
- zenml/models/v2/core/component.py +22 -33
- zenml/models/v2/core/device.py +3 -2
- zenml/models/v2/core/event_source.py +14 -14
- zenml/models/v2/core/flavor.py +19 -47
- zenml/models/v2/core/logs.py +1 -2
- zenml/models/v2/core/model.py +23 -20
- zenml/models/v2/core/model_version.py +51 -42
- zenml/models/v2/core/pipeline.py +16 -16
- zenml/models/v2/core/pipeline_build.py +14 -14
- zenml/models/v2/core/pipeline_deployment.py +12 -14
- zenml/models/v2/core/pipeline_run.py +21 -29
- zenml/models/v2/core/project.py +203 -0
- zenml/models/v2/core/run_metadata.py +2 -2
- zenml/models/v2/core/run_template.py +16 -17
- zenml/models/v2/core/schedule.py +12 -21
- zenml/models/v2/core/secret.py +94 -128
- zenml/models/v2/core/server_settings.py +2 -2
- zenml/models/v2/core/service.py +57 -26
- zenml/models/v2/core/service_connector.py +14 -16
- zenml/models/v2/core/stack.py +24 -26
- zenml/models/v2/core/step_run.py +16 -28
- zenml/models/v2/core/tag.py +41 -15
- zenml/models/v2/core/trigger.py +13 -13
- zenml/models/v2/core/trigger_execution.py +2 -2
- zenml/models/v2/core/user.py +2 -2
- zenml/models/v2/misc/statistics.py +45 -0
- zenml/models/v2/misc/tag.py +27 -0
- zenml/orchestrators/cache_utils.py +7 -7
- zenml/orchestrators/input_utils.py +1 -0
- zenml/orchestrators/step_launcher.py +1 -2
- zenml/orchestrators/step_run_utils.py +2 -4
- zenml/orchestrators/step_runner.py +10 -1
- zenml/orchestrators/utils.py +4 -4
- zenml/pipelines/build_utils.py +2 -4
- zenml/pipelines/pipeline_decorator.py +3 -2
- zenml/pipelines/pipeline_definition.py +8 -9
- zenml/pipelines/run_utils.py +4 -4
- zenml/service_connectors/service_connector.py +0 -10
- zenml/service_connectors/service_connector_utils.py +0 -2
- zenml/stack/authentication_mixin.py +1 -1
- zenml/stack/flavor.py +3 -14
- zenml/stack/stack.py +0 -1
- zenml/stack/stack_component.py +1 -5
- zenml/steps/base_step.py +10 -2
- zenml/steps/step_context.py +19 -0
- zenml/utils/string_utils.py +1 -1
- zenml/utils/tag_utils.py +642 -0
- zenml/zen_server/cloud_utils.py +21 -0
- zenml/zen_server/exceptions.py +0 -6
- zenml/zen_server/rbac/endpoint_utils.py +134 -46
- zenml/zen_server/rbac/models.py +65 -3
- zenml/zen_server/rbac/rbac_interface.py +9 -0
- zenml/zen_server/rbac/rbac_sql_zen_store.py +15 -7
- zenml/zen_server/rbac/utils.py +155 -30
- zenml/zen_server/rbac/zenml_cloud_rbac.py +39 -11
- zenml/zen_server/routers/actions_endpoints.py +3 -5
- zenml/zen_server/routers/artifact_endpoint.py +0 -5
- zenml/zen_server/routers/artifact_version_endpoints.py +15 -9
- zenml/zen_server/routers/auth_endpoints.py +22 -7
- zenml/zen_server/routers/code_repositories_endpoints.py +54 -3
- zenml/zen_server/routers/devices_endpoints.py +0 -4
- zenml/zen_server/routers/event_source_endpoints.py +0 -5
- zenml/zen_server/routers/flavors_endpoints.py +0 -5
- zenml/zen_server/routers/logs_endpoints.py +0 -1
- zenml/zen_server/routers/model_versions_endpoints.py +100 -23
- zenml/zen_server/routers/models_endpoints.py +50 -69
- zenml/zen_server/routers/pipeline_builds_endpoints.py +55 -3
- zenml/zen_server/routers/pipeline_deployments_endpoints.py +56 -4
- zenml/zen_server/routers/pipelines_endpoints.py +70 -3
- zenml/zen_server/routers/plugin_endpoints.py +0 -1
- zenml/zen_server/routers/projects_endpoints.py +283 -0
- zenml/zen_server/routers/run_metadata_endpoints.py +97 -0
- zenml/zen_server/routers/run_templates_endpoints.py +64 -3
- zenml/zen_server/routers/runs_endpoints.py +58 -8
- zenml/zen_server/routers/schedule_endpoints.py +67 -6
- zenml/zen_server/routers/secrets_endpoints.py +38 -4
- zenml/zen_server/routers/server_endpoints.py +53 -1
- zenml/zen_server/routers/service_accounts_endpoints.py +14 -15
- zenml/zen_server/routers/service_connectors_endpoints.py +94 -14
- zenml/zen_server/routers/service_endpoints.py +18 -7
- zenml/zen_server/routers/stack_components_endpoints.py +66 -7
- zenml/zen_server/routers/stacks_endpoints.py +95 -6
- zenml/zen_server/routers/steps_endpoints.py +17 -11
- zenml/zen_server/routers/tag_resource_endpoints.py +115 -0
- zenml/zen_server/routers/tags_endpoints.py +6 -17
- zenml/zen_server/routers/triggers_endpoints.py +5 -8
- zenml/zen_server/routers/users_endpoints.py +9 -12
- zenml/zen_server/template_execution/utils.py +8 -7
- zenml/zen_server/utils.py +21 -0
- zenml/zen_server/zen_server_api.py +7 -2
- zenml/zen_stores/base_zen_store.py +50 -69
- zenml/zen_stores/migrations/versions/12eff0206201_rename_workspace_to_project.py +768 -0
- zenml/zen_stores/migrations/versions/1cb6477f72d6_move_artifact_save_type.py +20 -10
- zenml/zen_stores/migrations/versions/1f9d1cd00b90_add_unique_name_constraints.py +231 -0
- zenml/zen_stores/migrations/versions/288f4fb6e112_make_tags_user_scoped.py +74 -0
- zenml/zen_stores/migrations/versions/2e695a26fe7a_add_user_default_workspace.py +45 -0
- zenml/zen_stores/migrations/versions/3b1776345020_remove_workspace_from_globals.py +81 -0
- zenml/zen_stores/migrations/versions/41b28cae31ce_make_artifacts_workspace_scoped.py +136 -0
- zenml/zen_stores/migrations/versions/9e7bf0970266_adding_exclusive_attribute_to_tags.py +47 -0
- zenml/zen_stores/migrations/versions/b557b2871693_update_step_run_input_types.py +8 -4
- zenml/zen_stores/migrations/versions/cbc6acd71f92_add_workspace_display_name.py +58 -0
- zenml/zen_stores/migrations/versions/cc269488e5a9_separate_run_metadata.py +12 -6
- zenml/zen_stores/migrations/versions/f1d723fd723b_add_secret_private_attr.py +61 -0
- zenml/zen_stores/migrations/versions/f76a368a25a5_add_stack_description.py +35 -0
- zenml/zen_stores/rest_zen_store.py +223 -230
- zenml/zen_stores/schemas/__init__.py +2 -2
- zenml/zen_stores/schemas/action_schemas.py +15 -8
- zenml/zen_stores/schemas/api_key_schemas.py +8 -1
- zenml/zen_stores/schemas/artifact_schemas.py +35 -10
- zenml/zen_stores/schemas/code_repository_schemas.py +22 -17
- zenml/zen_stores/schemas/component_schemas.py +9 -14
- zenml/zen_stores/schemas/event_source_schemas.py +15 -8
- zenml/zen_stores/schemas/flavor_schemas.py +14 -20
- zenml/zen_stores/schemas/model_schemas.py +18 -17
- zenml/zen_stores/schemas/pipeline_build_schemas.py +7 -7
- zenml/zen_stores/schemas/pipeline_deployment_schemas.py +10 -8
- zenml/zen_stores/schemas/pipeline_run_schemas.py +9 -12
- zenml/zen_stores/schemas/pipeline_schemas.py +9 -9
- zenml/zen_stores/schemas/{workspace_schemas.py → project_schemas.py} +53 -65
- zenml/zen_stores/schemas/run_metadata_schemas.py +5 -5
- zenml/zen_stores/schemas/run_template_schemas.py +17 -13
- zenml/zen_stores/schemas/schedule_schema.py +16 -21
- zenml/zen_stores/schemas/secret_schemas.py +15 -25
- zenml/zen_stores/schemas/service_connector_schemas.py +8 -17
- zenml/zen_stores/schemas/service_schemas.py +7 -8
- zenml/zen_stores/schemas/stack_schemas.py +12 -15
- zenml/zen_stores/schemas/step_run_schemas.py +14 -15
- zenml/zen_stores/schemas/tag_schemas.py +30 -2
- zenml/zen_stores/schemas/trigger_schemas.py +15 -8
- zenml/zen_stores/schemas/user_schemas.py +12 -2
- zenml/zen_stores/schemas/utils.py +16 -0
- zenml/zen_stores/secrets_stores/service_connector_secrets_store.py +0 -3
- zenml/zen_stores/sql_zen_store.py +2984 -2369
- zenml/zen_stores/template_utils.py +1 -1
- zenml/zen_stores/zen_store_interface.py +136 -126
- {zenml_nightly-0.75.0.dev20250312.dist-info → zenml_nightly-0.75.0.dev20250314.dist-info}/METADATA +1 -1
- {zenml_nightly-0.75.0.dev20250312.dist-info → zenml_nightly-0.75.0.dev20250314.dist-info}/RECORD +188 -173
- zenml/cli/workspace.py +0 -86
- zenml/models/v2/core/workspace.py +0 -131
- zenml/zen_server/routers/workspaces_endpoints.py +0 -1469
- {zenml_nightly-0.75.0.dev20250312.dist-info → zenml_nightly-0.75.0.dev20250314.dist-info}/LICENSE +0 -0
- {zenml_nightly-0.75.0.dev20250312.dist-info → zenml_nightly-0.75.0.dev20250314.dist-info}/WHEEL +0 -0
- {zenml_nightly-0.75.0.dev20250312.dist-info → zenml_nightly-0.75.0.dev20250314.dist-info}/entry_points.txt +0 -0
@@ -17,17 +17,21 @@ depends_on = None
|
|
17
17
|
|
18
18
|
def upgrade() -> None:
|
19
19
|
"""Upgrade database schema and/or data, creating a new revision."""
|
20
|
-
op.execute(
|
20
|
+
op.execute(
|
21
|
+
"""
|
21
22
|
UPDATE step_run_input_artifact
|
22
23
|
SET type = 'step_output'
|
23
24
|
WHERE type = 'default'
|
24
|
-
"""
|
25
|
+
"""
|
26
|
+
)
|
25
27
|
|
26
28
|
|
27
29
|
def downgrade() -> None:
|
28
30
|
"""Downgrade database schema and/or data back to the previous revision."""
|
29
|
-
op.execute(
|
31
|
+
op.execute(
|
32
|
+
"""
|
30
33
|
UPDATE step_run_input_artifact
|
31
34
|
SET type = 'default'
|
32
35
|
WHERE type = 'step_output'
|
33
|
-
"""
|
36
|
+
"""
|
37
|
+
)
|
@@ -0,0 +1,58 @@
|
|
1
|
+
"""add workspace display name [cbc6acd71f92].
|
2
|
+
|
3
|
+
Revision ID: cbc6acd71f92
|
4
|
+
Revises: 9e7bf0970266
|
5
|
+
Create Date: 2025-03-12 19:38:57.126846
|
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 = "cbc6acd71f92"
|
15
|
+
down_revision = "9e7bf0970266"
|
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
|
+
with op.batch_alter_table("workspace", schema=None) as batch_op:
|
23
|
+
batch_op.add_column(
|
24
|
+
sa.Column(
|
25
|
+
"display_name",
|
26
|
+
sqlmodel.sql.sqltypes.AutoString(),
|
27
|
+
nullable=True,
|
28
|
+
)
|
29
|
+
)
|
30
|
+
|
31
|
+
# Migrate existing workspace names to display_name
|
32
|
+
connection = op.get_bind()
|
33
|
+
meta = sa.MetaData()
|
34
|
+
meta.reflect(bind=connection, only=("workspace",))
|
35
|
+
workspace_table = sa.Table("workspace", meta)
|
36
|
+
|
37
|
+
for workspace_id, workspace_name in connection.execute(
|
38
|
+
sa.select(
|
39
|
+
workspace_table.c.id,
|
40
|
+
workspace_table.c.name,
|
41
|
+
)
|
42
|
+
):
|
43
|
+
connection.execute(
|
44
|
+
sa.update(workspace_table)
|
45
|
+
.where(workspace_table.c.id == workspace_id)
|
46
|
+
.values(display_name=workspace_name)
|
47
|
+
)
|
48
|
+
|
49
|
+
with op.batch_alter_table("workspace", schema=None) as batch_op:
|
50
|
+
batch_op.alter_column(
|
51
|
+
"display_name", existing_type=sa.String(50), nullable=False
|
52
|
+
)
|
53
|
+
|
54
|
+
|
55
|
+
def downgrade() -> None:
|
56
|
+
"""Downgrade database schema and/or data back to the previous revision."""
|
57
|
+
with op.batch_alter_table("workspace", schema=None) as batch_op:
|
58
|
+
batch_op.drop_column("display_name")
|
@@ -41,10 +41,12 @@ def upgrade() -> None:
|
|
41
41
|
connection = op.get_bind()
|
42
42
|
|
43
43
|
run_metadata_data = connection.execute(
|
44
|
-
sa.text(
|
44
|
+
sa.text(
|
45
|
+
"""
|
45
46
|
SELECT id, resource_id, resource_type
|
46
47
|
FROM run_metadata
|
47
|
-
"""
|
48
|
+
"""
|
49
|
+
)
|
48
50
|
).fetchall()
|
49
51
|
|
50
52
|
# Prepare data with new UUIDs for bulk insert
|
@@ -107,20 +109,24 @@ def downgrade() -> None:
|
|
107
109
|
|
108
110
|
# Fetch data from `run_metadata_resource`
|
109
111
|
run_metadata_resource_data = connection.execute(
|
110
|
-
sa.text(
|
112
|
+
sa.text(
|
113
|
+
"""
|
111
114
|
SELECT resource_id, resource_type, run_metadata_id
|
112
115
|
FROM run_metadata_resource
|
113
|
-
"""
|
116
|
+
"""
|
117
|
+
)
|
114
118
|
).fetchall()
|
115
119
|
|
116
120
|
# Update `run_metadata` with the data from `run_metadata_resource`
|
117
121
|
for row in run_metadata_resource_data:
|
118
122
|
connection.execute(
|
119
|
-
sa.text(
|
123
|
+
sa.text(
|
124
|
+
"""
|
120
125
|
UPDATE run_metadata
|
121
126
|
SET resource_id = :resource_id, resource_type = :resource_type
|
122
127
|
WHERE id = :run_metadata_id
|
123
|
-
"""
|
128
|
+
"""
|
129
|
+
),
|
124
130
|
{
|
125
131
|
"resource_id": row.resource_id,
|
126
132
|
"resource_type": row.resource_type,
|
@@ -0,0 +1,61 @@
|
|
1
|
+
"""add secret private attr [f1d723fd723b].
|
2
|
+
|
3
|
+
Revision ID: f1d723fd723b
|
4
|
+
Revises: 41b28cae31ce
|
5
|
+
Create Date: 2025-02-21 19:40:14.596681
|
6
|
+
|
7
|
+
"""
|
8
|
+
|
9
|
+
import sqlalchemy as sa
|
10
|
+
from alembic import op
|
11
|
+
|
12
|
+
# revision identifiers, used by Alembic.
|
13
|
+
revision = "f1d723fd723b"
|
14
|
+
down_revision = "41b28cae31ce"
|
15
|
+
branch_labels = None
|
16
|
+
depends_on = None
|
17
|
+
|
18
|
+
|
19
|
+
def upgrade() -> None:
|
20
|
+
"""Upgrade database schema and/or data, creating a new revision."""
|
21
|
+
# Step 1: Add private column as nullable
|
22
|
+
with op.batch_alter_table("secret", schema=None) as batch_op:
|
23
|
+
batch_op.add_column(sa.Column("private", sa.Boolean(), nullable=True))
|
24
|
+
|
25
|
+
# Step 2: Update existing records based on scope
|
26
|
+
connection = op.get_bind()
|
27
|
+
connection.execute(
|
28
|
+
sa.text("UPDATE secret SET private = TRUE WHERE scope = 'user';")
|
29
|
+
)
|
30
|
+
connection.execute(
|
31
|
+
sa.text("UPDATE secret SET private = FALSE WHERE scope != 'user';")
|
32
|
+
)
|
33
|
+
|
34
|
+
# Step 3: Make private column non-nullable and drop scope
|
35
|
+
with op.batch_alter_table("secret", schema=None) as batch_op:
|
36
|
+
batch_op.alter_column(
|
37
|
+
"private", existing_type=sa.Boolean(), nullable=False
|
38
|
+
)
|
39
|
+
batch_op.drop_column("scope")
|
40
|
+
|
41
|
+
|
42
|
+
def downgrade() -> None:
|
43
|
+
"""Downgrade database schema and/or data back to the previous revision."""
|
44
|
+
with op.batch_alter_table("secret", schema=None) as batch_op:
|
45
|
+
batch_op.add_column(sa.Column("scope", sa.VARCHAR(), nullable=True))
|
46
|
+
|
47
|
+
# Restore scope values based on private flag
|
48
|
+
connection = op.get_bind()
|
49
|
+
connection.execute(
|
50
|
+
sa.text("UPDATE secret SET scope = 'user' WHERE private = TRUE;")
|
51
|
+
)
|
52
|
+
connection.execute(
|
53
|
+
sa.text("UPDATE secret SET scope = 'workspace' WHERE private = FALSE;")
|
54
|
+
)
|
55
|
+
|
56
|
+
# Make scope non-nullable and drop private
|
57
|
+
with op.batch_alter_table("secret", schema=None) as batch_op:
|
58
|
+
batch_op.alter_column(
|
59
|
+
"scope", existing_type=sa.VARCHAR(), nullable=False
|
60
|
+
)
|
61
|
+
batch_op.drop_column("private")
|
@@ -0,0 +1,35 @@
|
|
1
|
+
"""add stack description [f76a368a25a5].
|
2
|
+
|
3
|
+
Revision ID: f76a368a25a5
|
4
|
+
Revises: f1d723fd723b
|
5
|
+
Create Date: 2025-02-22 19:03:32.568076
|
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 = "f76a368a25a5"
|
15
|
+
down_revision = "f1d723fd723b"
|
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
|
+
with op.batch_alter_table("stack", schema=None) as batch_op:
|
23
|
+
batch_op.add_column(
|
24
|
+
sa.Column(
|
25
|
+
"description",
|
26
|
+
sqlmodel.sql.sqltypes.AutoString(),
|
27
|
+
nullable=True,
|
28
|
+
)
|
29
|
+
)
|
30
|
+
|
31
|
+
|
32
|
+
def downgrade() -> None:
|
33
|
+
"""Downgrade database schema and/or data back to the previous revision."""
|
34
|
+
with op.batch_alter_table("stack", schema=None) as batch_op:
|
35
|
+
batch_op.drop_column("description")
|