zenml-nightly 0.75.0.dev20250313__py3-none-any.whl → 0.75.0.dev20250315__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/analytics/context.py +4 -4
- zenml/analytics/enums.py +2 -2
- zenml/artifacts/utils.py +2 -2
- zenml/cli/__init__.py +8 -9
- zenml/cli/base.py +2 -2
- zenml/cli/code_repository.py +1 -1
- zenml/cli/login.py +21 -18
- zenml/cli/pipeline.py +3 -3
- zenml/cli/project.py +172 -0
- zenml/cli/server.py +5 -5
- zenml/cli/service_accounts.py +0 -1
- zenml/cli/service_connectors.py +15 -16
- zenml/cli/stack.py +0 -2
- zenml/cli/stack_components.py +2 -2
- zenml/cli/utils.py +3 -3
- zenml/client.py +352 -341
- zenml/config/global_config.py +41 -43
- zenml/config/server_config.py +9 -9
- zenml/constants.py +5 -3
- zenml/event_hub/event_hub.py +1 -1
- zenml/integrations/gcp/__init__.py +1 -0
- zenml/integrations/gcp/flavors/vertex_orchestrator_flavor.py +5 -0
- zenml/integrations/gcp/flavors/vertex_step_operator_flavor.py +5 -28
- zenml/integrations/gcp/orchestrators/vertex_orchestrator.py +125 -78
- zenml/integrations/gcp/service_connectors/gcp_service_connector.py +7 -6
- zenml/integrations/gcp/vertex_custom_job_parameters.py +50 -0
- zenml/integrations/mlflow/steps/mlflow_registry.py +3 -3
- 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 +2 -0
- zenml/login/credentials.py +26 -27
- zenml/login/credentials_store.py +5 -5
- zenml/login/pro/client.py +9 -9
- zenml/login/pro/utils.py +8 -8
- zenml/login/pro/{tenant → workspace}/__init__.py +1 -1
- zenml/login/pro/{tenant → workspace}/client.py +25 -25
- zenml/login/pro/{tenant → workspace}/models.py +27 -28
- zenml/model/model.py +2 -2
- zenml/model_registries/base_model_registry.py +1 -1
- zenml/models/__init__.py +29 -29
- zenml/models/v2/base/filter.py +1 -1
- zenml/models/v2/base/scoped.py +49 -53
- zenml/models/v2/core/action.py +12 -12
- zenml/models/v2/core/artifact.py +15 -15
- zenml/models/v2/core/artifact_version.py +15 -15
- zenml/models/v2/core/code_repository.py +12 -12
- zenml/models/v2/core/event_source.py +12 -12
- zenml/models/v2/core/model.py +26 -18
- zenml/models/v2/core/model_version.py +15 -15
- zenml/models/v2/core/pipeline.py +15 -15
- 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 +16 -16
- zenml/models/v2/core/project.py +203 -0
- zenml/models/v2/core/run_metadata.py +2 -2
- zenml/models/v2/core/run_template.py +15 -15
- zenml/models/v2/core/schedule.py +12 -12
- zenml/models/v2/core/secret.py +1 -1
- zenml/models/v2/core/service.py +14 -14
- zenml/models/v2/core/step_run.py +13 -13
- zenml/models/v2/core/tag.py +96 -3
- zenml/models/v2/core/trigger.py +13 -13
- zenml/models/v2/core/trigger_execution.py +2 -2
- zenml/models/v2/core/user.py +0 -17
- zenml/models/v2/misc/server_models.py +6 -6
- zenml/models/v2/misc/statistics.py +4 -4
- zenml/orchestrators/cache_utils.py +7 -7
- zenml/orchestrators/input_utils.py +1 -1
- zenml/orchestrators/step_launcher.py +1 -1
- zenml/orchestrators/step_run_utils.py +3 -3
- zenml/orchestrators/utils.py +4 -4
- zenml/pipelines/build_utils.py +2 -2
- zenml/pipelines/pipeline_definition.py +5 -5
- zenml/pipelines/run_utils.py +1 -1
- zenml/service_connectors/service_connector.py +0 -3
- zenml/service_connectors/service_connector_utils.py +0 -1
- zenml/stack/stack.py +0 -1
- zenml/steps/base_step.py +10 -2
- zenml/utils/dashboard_utils.py +1 -1
- zenml/utils/tag_utils.py +0 -12
- zenml/zen_server/cloud_utils.py +3 -3
- zenml/zen_server/feature_gate/endpoint_utils.py +1 -1
- zenml/zen_server/feature_gate/zenml_cloud_feature_gate.py +1 -1
- zenml/zen_server/rbac/endpoint_utils.py +17 -17
- zenml/zen_server/rbac/models.py +47 -22
- zenml/zen_server/rbac/rbac_sql_zen_store.py +3 -3
- zenml/zen_server/rbac/utils.py +23 -25
- zenml/zen_server/rbac/zenml_cloud_rbac.py +7 -74
- zenml/zen_server/routers/artifact_version_endpoints.py +10 -10
- zenml/zen_server/routers/auth_endpoints.py +6 -6
- zenml/zen_server/routers/code_repositories_endpoints.py +12 -14
- zenml/zen_server/routers/model_versions_endpoints.py +13 -15
- zenml/zen_server/routers/models_endpoints.py +7 -9
- zenml/zen_server/routers/pipeline_builds_endpoints.py +14 -16
- zenml/zen_server/routers/pipeline_deployments_endpoints.py +13 -15
- zenml/zen_server/routers/pipelines_endpoints.py +16 -18
- zenml/zen_server/routers/{workspaces_endpoints.py → projects_endpoints.py} +111 -68
- zenml/zen_server/routers/run_metadata_endpoints.py +7 -9
- zenml/zen_server/routers/run_templates_endpoints.py +15 -17
- zenml/zen_server/routers/runs_endpoints.py +12 -14
- zenml/zen_server/routers/schedule_endpoints.py +12 -14
- zenml/zen_server/routers/secrets_endpoints.py +1 -3
- zenml/zen_server/routers/server_endpoints.py +7 -7
- zenml/zen_server/routers/service_connectors_endpoints.py +11 -13
- zenml/zen_server/routers/service_endpoints.py +7 -9
- zenml/zen_server/routers/stack_components_endpoints.py +9 -11
- zenml/zen_server/routers/stacks_endpoints.py +9 -11
- zenml/zen_server/routers/steps_endpoints.py +6 -6
- zenml/zen_server/routers/users_endpoints.py +5 -43
- zenml/zen_server/template_execution/utils.py +4 -4
- zenml/zen_server/utils.py +10 -10
- zenml/zen_server/zen_server_api.py +6 -5
- zenml/zen_stores/base_zen_store.py +38 -42
- zenml/zen_stores/migrations/versions/12eff0206201_rename_workspace_to_project.py +768 -0
- zenml/zen_stores/migrations/versions/41b28cae31ce_make_artifacts_workspace_scoped.py +3 -3
- zenml/zen_stores/migrations/versions/cbc6acd71f92_add_workspace_display_name.py +58 -0
- zenml/zen_stores/rest_zen_store.py +55 -63
- zenml/zen_stores/schemas/__init__.py +2 -2
- zenml/zen_stores/schemas/action_schemas.py +9 -9
- zenml/zen_stores/schemas/artifact_schemas.py +15 -17
- zenml/zen_stores/schemas/code_repository_schemas.py +16 -18
- zenml/zen_stores/schemas/event_source_schemas.py +9 -9
- zenml/zen_stores/schemas/model_schemas.py +15 -17
- zenml/zen_stores/schemas/pipeline_build_schemas.py +7 -7
- zenml/zen_stores/schemas/pipeline_deployment_schemas.py +7 -7
- zenml/zen_stores/schemas/pipeline_run_schemas.py +9 -9
- zenml/zen_stores/schemas/pipeline_schemas.py +9 -9
- zenml/zen_stores/schemas/{workspace_schemas.py → project_schemas.py} +47 -41
- zenml/zen_stores/schemas/run_metadata_schemas.py +5 -5
- zenml/zen_stores/schemas/run_template_schemas.py +9 -9
- zenml/zen_stores/schemas/schedule_schema.py +9 -9
- zenml/zen_stores/schemas/service_schemas.py +7 -7
- zenml/zen_stores/schemas/step_run_schemas.py +7 -7
- zenml/zen_stores/schemas/trigger_schemas.py +9 -9
- zenml/zen_stores/schemas/user_schemas.py +0 -12
- zenml/zen_stores/sql_zen_store.py +318 -275
- zenml/zen_stores/zen_store_interface.py +56 -70
- {zenml_nightly-0.75.0.dev20250313.dist-info → zenml_nightly-0.75.0.dev20250315.dist-info}/METADATA +1 -1
- {zenml_nightly-0.75.0.dev20250313.dist-info → zenml_nightly-0.75.0.dev20250315.dist-info}/RECORD +143 -140
- zenml/cli/workspace.py +0 -160
- zenml/models/v2/core/workspace.py +0 -131
- {zenml_nightly-0.75.0.dev20250313.dist-info → zenml_nightly-0.75.0.dev20250315.dist-info}/LICENSE +0 -0
- {zenml_nightly-0.75.0.dev20250313.dist-info → zenml_nightly-0.75.0.dev20250315.dist-info}/WHEEL +0 -0
- {zenml_nightly-0.75.0.dev20250313.dist-info → zenml_nightly-0.75.0.dev20250315.dist-info}/entry_points.txt +0 -0
@@ -41,13 +41,13 @@ from zenml.metadata.metadata_types import MetadataType
|
|
41
41
|
from zenml.models.v2.base.base import BaseUpdate
|
42
42
|
from zenml.models.v2.base.filter import FilterGenerator
|
43
43
|
from zenml.models.v2.base.scoped import (
|
44
|
+
ProjectScopedFilter,
|
45
|
+
ProjectScopedRequest,
|
46
|
+
ProjectScopedResponse,
|
47
|
+
ProjectScopedResponseBody,
|
48
|
+
ProjectScopedResponseMetadata,
|
49
|
+
ProjectScopedResponseResources,
|
44
50
|
TaggableFilter,
|
45
|
-
WorkspaceScopedFilter,
|
46
|
-
WorkspaceScopedRequest,
|
47
|
-
WorkspaceScopedResponse,
|
48
|
-
WorkspaceScopedResponseBody,
|
49
|
-
WorkspaceScopedResponseMetadata,
|
50
|
-
WorkspaceScopedResponseResources,
|
51
51
|
)
|
52
52
|
from zenml.models.v2.core.artifact import ArtifactResponse
|
53
53
|
from zenml.models.v2.core.tag import TagResponse
|
@@ -71,7 +71,7 @@ logger = get_logger(__name__)
|
|
71
71
|
# ------------------ Request Model ------------------
|
72
72
|
|
73
73
|
|
74
|
-
class ArtifactVersionRequest(
|
74
|
+
class ArtifactVersionRequest(ProjectScopedRequest):
|
75
75
|
"""Request model for artifact versions."""
|
76
76
|
|
77
77
|
artifact_id: Optional[UUID] = Field(
|
@@ -176,7 +176,7 @@ class ArtifactVersionUpdate(BaseUpdate):
|
|
176
176
|
# ------------------ Response Model ------------------
|
177
177
|
|
178
178
|
|
179
|
-
class ArtifactVersionResponseBody(
|
179
|
+
class ArtifactVersionResponseBody(ProjectScopedResponseBody):
|
180
180
|
"""Response body for artifact versions."""
|
181
181
|
|
182
182
|
artifact: ArtifactResponse = Field(
|
@@ -230,7 +230,7 @@ class ArtifactVersionResponseBody(WorkspaceScopedResponseBody):
|
|
230
230
|
return value
|
231
231
|
|
232
232
|
|
233
|
-
class ArtifactVersionResponseMetadata(
|
233
|
+
class ArtifactVersionResponseMetadata(ProjectScopedResponseMetadata):
|
234
234
|
"""Response metadata for artifact versions."""
|
235
235
|
|
236
236
|
producer_step_run_id: Optional[UUID] = Field(
|
@@ -245,12 +245,12 @@ class ArtifactVersionResponseMetadata(WorkspaceScopedResponseMetadata):
|
|
245
245
|
)
|
246
246
|
|
247
247
|
|
248
|
-
class ArtifactVersionResponseResources(
|
248
|
+
class ArtifactVersionResponseResources(ProjectScopedResponseResources):
|
249
249
|
"""Class for all resource models associated with the artifact version entity."""
|
250
250
|
|
251
251
|
|
252
252
|
class ArtifactVersionResponse(
|
253
|
-
|
253
|
+
ProjectScopedResponse[
|
254
254
|
ArtifactVersionResponseBody,
|
255
255
|
ArtifactVersionResponseMetadata,
|
256
256
|
ArtifactVersionResponseResources,
|
@@ -470,11 +470,11 @@ class ArtifactVersionResponse(
|
|
470
470
|
# ------------------ Filter Model ------------------
|
471
471
|
|
472
472
|
|
473
|
-
class ArtifactVersionFilter(
|
473
|
+
class ArtifactVersionFilter(ProjectScopedFilter, TaggableFilter):
|
474
474
|
"""Model to enable advanced filtering of artifact versions."""
|
475
475
|
|
476
476
|
FILTER_EXCLUDE_FIELDS: ClassVar[List[str]] = [
|
477
|
-
*
|
477
|
+
*ProjectScopedFilter.FILTER_EXCLUDE_FIELDS,
|
478
478
|
*TaggableFilter.FILTER_EXCLUDE_FIELDS,
|
479
479
|
"artifact_id",
|
480
480
|
"artifact",
|
@@ -486,11 +486,11 @@ class ArtifactVersionFilter(WorkspaceScopedFilter, TaggableFilter):
|
|
486
486
|
"run_metadata",
|
487
487
|
]
|
488
488
|
CUSTOM_SORTING_OPTIONS: ClassVar[List[str]] = [
|
489
|
-
*
|
489
|
+
*ProjectScopedFilter.CUSTOM_SORTING_OPTIONS,
|
490
490
|
*TaggableFilter.CUSTOM_SORTING_OPTIONS,
|
491
491
|
]
|
492
492
|
CLI_EXCLUDE_FIELDS: ClassVar[List[str]] = [
|
493
|
-
*
|
493
|
+
*ProjectScopedFilter.CLI_EXCLUDE_FIELDS,
|
494
494
|
*TaggableFilter.CLI_EXCLUDE_FIELDS,
|
495
495
|
"artifact_id",
|
496
496
|
]
|
@@ -21,18 +21,18 @@ from zenml.config.source import Source, SourceWithValidator
|
|
21
21
|
from zenml.constants import STR_FIELD_MAX_LENGTH, TEXT_FIELD_MAX_LENGTH
|
22
22
|
from zenml.models.v2.base.base import BaseUpdate
|
23
23
|
from zenml.models.v2.base.scoped import (
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
24
|
+
ProjectScopedFilter,
|
25
|
+
ProjectScopedRequest,
|
26
|
+
ProjectScopedResponse,
|
27
|
+
ProjectScopedResponseBody,
|
28
|
+
ProjectScopedResponseMetadata,
|
29
|
+
ProjectScopedResponseResources,
|
30
30
|
)
|
31
31
|
|
32
32
|
# ------------------ Request Model ------------------
|
33
33
|
|
34
34
|
|
35
|
-
class CodeRepositoryRequest(
|
35
|
+
class CodeRepositoryRequest(ProjectScopedRequest):
|
36
36
|
"""Request model for code repositories."""
|
37
37
|
|
38
38
|
name: str = Field(
|
@@ -88,7 +88,7 @@ class CodeRepositoryUpdate(BaseUpdate):
|
|
88
88
|
# ------------------ Response Model ------------------
|
89
89
|
|
90
90
|
|
91
|
-
class CodeRepositoryResponseBody(
|
91
|
+
class CodeRepositoryResponseBody(ProjectScopedResponseBody):
|
92
92
|
"""Response body for code repositories."""
|
93
93
|
|
94
94
|
source: Source = Field(description="The code repository source.")
|
@@ -99,7 +99,7 @@ class CodeRepositoryResponseBody(WorkspaceScopedResponseBody):
|
|
99
99
|
)
|
100
100
|
|
101
101
|
|
102
|
-
class CodeRepositoryResponseMetadata(
|
102
|
+
class CodeRepositoryResponseMetadata(ProjectScopedResponseMetadata):
|
103
103
|
"""Response metadata for code repositories."""
|
104
104
|
|
105
105
|
config: Dict[str, Any] = Field(
|
@@ -112,12 +112,12 @@ class CodeRepositoryResponseMetadata(WorkspaceScopedResponseMetadata):
|
|
112
112
|
)
|
113
113
|
|
114
114
|
|
115
|
-
class CodeRepositoryResponseResources(
|
115
|
+
class CodeRepositoryResponseResources(ProjectScopedResponseResources):
|
116
116
|
"""Class for all resource models associated with the code repository entity."""
|
117
117
|
|
118
118
|
|
119
119
|
class CodeRepositoryResponse(
|
120
|
-
|
120
|
+
ProjectScopedResponse[
|
121
121
|
CodeRepositoryResponseBody,
|
122
122
|
CodeRepositoryResponseMetadata,
|
123
123
|
CodeRepositoryResponseResources,
|
@@ -181,7 +181,7 @@ class CodeRepositoryResponse(
|
|
181
181
|
# ------------------ Filter Model ------------------
|
182
182
|
|
183
183
|
|
184
|
-
class CodeRepositoryFilter(
|
184
|
+
class CodeRepositoryFilter(ProjectScopedFilter):
|
185
185
|
"""Model to enable advanced filtering of all code repositories."""
|
186
186
|
|
187
187
|
name: Optional[str] = Field(
|
@@ -23,19 +23,19 @@ from zenml.enums import PluginSubType
|
|
23
23
|
from zenml.models.v2.base.base import BaseUpdate
|
24
24
|
from zenml.models.v2.base.page import Page
|
25
25
|
from zenml.models.v2.base.scoped import (
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
26
|
+
ProjectScopedFilter,
|
27
|
+
ProjectScopedRequest,
|
28
|
+
ProjectScopedResponse,
|
29
|
+
ProjectScopedResponseBody,
|
30
|
+
ProjectScopedResponseMetadata,
|
31
|
+
ProjectScopedResponseResources,
|
32
32
|
)
|
33
33
|
from zenml.models.v2.core.trigger import TriggerResponse
|
34
34
|
|
35
35
|
# ------------------ Request Model ------------------
|
36
36
|
|
37
37
|
|
38
|
-
class EventSourceRequest(
|
38
|
+
class EventSourceRequest(ProjectScopedRequest):
|
39
39
|
"""BaseModel for all event sources."""
|
40
40
|
|
41
41
|
name: str = Field(
|
@@ -108,7 +108,7 @@ class EventSourceUpdate(BaseUpdate):
|
|
108
108
|
# ------------------ Response Model ------------------
|
109
109
|
|
110
110
|
|
111
|
-
class EventSourceResponseBody(
|
111
|
+
class EventSourceResponseBody(ProjectScopedResponseBody):
|
112
112
|
"""ResponseBody for event sources."""
|
113
113
|
|
114
114
|
flavor: str = Field(
|
@@ -123,7 +123,7 @@ class EventSourceResponseBody(WorkspaceScopedResponseBody):
|
|
123
123
|
)
|
124
124
|
|
125
125
|
|
126
|
-
class EventSourceResponseMetadata(
|
126
|
+
class EventSourceResponseMetadata(ProjectScopedResponseMetadata):
|
127
127
|
"""Response metadata for event sources."""
|
128
128
|
|
129
129
|
description: str = Field(
|
@@ -136,7 +136,7 @@ class EventSourceResponseMetadata(WorkspaceScopedResponseMetadata):
|
|
136
136
|
)
|
137
137
|
|
138
138
|
|
139
|
-
class EventSourceResponseResources(
|
139
|
+
class EventSourceResponseResources(ProjectScopedResponseResources):
|
140
140
|
"""Class for all resource models associated with the code repository entity."""
|
141
141
|
|
142
142
|
triggers: Page[TriggerResponse] = Field(
|
@@ -145,7 +145,7 @@ class EventSourceResponseResources(WorkspaceScopedResponseResources):
|
|
145
145
|
|
146
146
|
|
147
147
|
class EventSourceResponse(
|
148
|
-
|
148
|
+
ProjectScopedResponse[
|
149
149
|
EventSourceResponseBody,
|
150
150
|
EventSourceResponseMetadata,
|
151
151
|
EventSourceResponseResources,
|
@@ -226,7 +226,7 @@ class EventSourceResponse(
|
|
226
226
|
# ------------------ Filter Model ------------------
|
227
227
|
|
228
228
|
|
229
|
-
class EventSourceFilter(
|
229
|
+
class EventSourceFilter(ProjectScopedFilter):
|
230
230
|
"""Model to enable advanced filtering of all EventSourceModels."""
|
231
231
|
|
232
232
|
name: Optional[str] = Field(
|
zenml/models/v2/core/model.py
CHANGED
@@ -13,7 +13,15 @@
|
|
13
13
|
# permissions and limitations under the License.
|
14
14
|
"""Models representing models."""
|
15
15
|
|
16
|
-
from typing import
|
16
|
+
from typing import (
|
17
|
+
TYPE_CHECKING,
|
18
|
+
Any,
|
19
|
+
ClassVar,
|
20
|
+
List,
|
21
|
+
Optional,
|
22
|
+
Type,
|
23
|
+
TypeVar,
|
24
|
+
)
|
17
25
|
from uuid import UUID
|
18
26
|
|
19
27
|
from pydantic import Field
|
@@ -25,13 +33,13 @@ from zenml.constants import (
|
|
25
33
|
)
|
26
34
|
from zenml.models.v2.base.base import BaseUpdate
|
27
35
|
from zenml.models.v2.base.scoped import (
|
36
|
+
ProjectScopedFilter,
|
37
|
+
ProjectScopedRequest,
|
38
|
+
ProjectScopedResponse,
|
39
|
+
ProjectScopedResponseBody,
|
40
|
+
ProjectScopedResponseMetadata,
|
41
|
+
ProjectScopedResponseResources,
|
28
42
|
TaggableFilter,
|
29
|
-
WorkspaceScopedFilter,
|
30
|
-
WorkspaceScopedRequest,
|
31
|
-
WorkspaceScopedResponse,
|
32
|
-
WorkspaceScopedResponseBody,
|
33
|
-
WorkspaceScopedResponseMetadata,
|
34
|
-
WorkspaceScopedResponseResources,
|
35
43
|
)
|
36
44
|
from zenml.utils.pagination_utils import depaginate
|
37
45
|
|
@@ -47,7 +55,7 @@ AnyQuery = TypeVar("AnyQuery", bound=Any)
|
|
47
55
|
# ------------------ Request Model ------------------
|
48
56
|
|
49
57
|
|
50
|
-
class ModelRequest(
|
58
|
+
class ModelRequest(ProjectScopedRequest):
|
51
59
|
"""Request model for models."""
|
52
60
|
|
53
61
|
name: str = Field(
|
@@ -121,7 +129,7 @@ class ModelUpdate(BaseUpdate):
|
|
121
129
|
# ------------------ Response Model ------------------
|
122
130
|
|
123
131
|
|
124
|
-
class ModelResponseBody(
|
132
|
+
class ModelResponseBody(ProjectScopedResponseBody):
|
125
133
|
"""Response body for models."""
|
126
134
|
|
127
135
|
tags: List["TagResponse"] = Field(
|
@@ -131,7 +139,7 @@ class ModelResponseBody(WorkspaceScopedResponseBody):
|
|
131
139
|
latest_version_id: Optional[UUID] = None
|
132
140
|
|
133
141
|
|
134
|
-
class ModelResponseMetadata(
|
142
|
+
class ModelResponseMetadata(ProjectScopedResponseMetadata):
|
135
143
|
"""Response metadata for models."""
|
136
144
|
|
137
145
|
license: Optional[str] = Field(
|
@@ -175,12 +183,12 @@ class ModelResponseMetadata(WorkspaceScopedResponseMetadata):
|
|
175
183
|
)
|
176
184
|
|
177
185
|
|
178
|
-
class ModelResponseResources(
|
186
|
+
class ModelResponseResources(ProjectScopedResponseResources):
|
179
187
|
"""Class for all resource models associated with the model entity."""
|
180
188
|
|
181
189
|
|
182
190
|
class ModelResponse(
|
183
|
-
|
191
|
+
ProjectScopedResponse[
|
184
192
|
ModelResponseBody, ModelResponseMetadata, ModelResponseResources
|
185
193
|
]
|
186
194
|
):
|
@@ -315,7 +323,7 @@ class ModelResponse(
|
|
315
323
|
model_versions = depaginate(
|
316
324
|
client.list_model_versions,
|
317
325
|
model_name_or_id=self.id,
|
318
|
-
|
326
|
+
project=self.project.id,
|
319
327
|
)
|
320
328
|
return [
|
321
329
|
mv.to_model_class(suppress_class_validation_warnings=True)
|
@@ -326,8 +334,8 @@ class ModelResponse(
|
|
326
334
|
# ------------------ Filter Model ------------------
|
327
335
|
|
328
336
|
|
329
|
-
class ModelFilter(
|
330
|
-
"""Model to enable advanced filtering of all
|
337
|
+
class ModelFilter(ProjectScopedFilter, TaggableFilter):
|
338
|
+
"""Model to enable advanced filtering of all models."""
|
331
339
|
|
332
340
|
name: Optional[str] = Field(
|
333
341
|
default=None,
|
@@ -335,16 +343,16 @@ class ModelFilter(WorkspaceScopedFilter, TaggableFilter):
|
|
335
343
|
)
|
336
344
|
|
337
345
|
FILTER_EXCLUDE_FIELDS: ClassVar[List[str]] = [
|
338
|
-
*
|
346
|
+
*ProjectScopedFilter.FILTER_EXCLUDE_FIELDS,
|
339
347
|
*TaggableFilter.FILTER_EXCLUDE_FIELDS,
|
340
348
|
]
|
341
349
|
CUSTOM_SORTING_OPTIONS: ClassVar[List[str]] = [
|
342
|
-
*
|
350
|
+
*ProjectScopedFilter.CUSTOM_SORTING_OPTIONS,
|
343
351
|
*TaggableFilter.CUSTOM_SORTING_OPTIONS,
|
344
352
|
SORT_BY_LATEST_VERSION_KEY,
|
345
353
|
]
|
346
354
|
CLI_EXCLUDE_FIELDS: ClassVar[List[str]] = [
|
347
|
-
*
|
355
|
+
*ProjectScopedFilter.CLI_EXCLUDE_FIELDS,
|
348
356
|
*TaggableFilter.CLI_EXCLUDE_FIELDS,
|
349
357
|
]
|
350
358
|
|
@@ -34,13 +34,13 @@ from zenml.models.v2.base.base import BaseUpdate
|
|
34
34
|
from zenml.models.v2.base.filter import AnyQuery
|
35
35
|
from zenml.models.v2.base.page import Page
|
36
36
|
from zenml.models.v2.base.scoped import (
|
37
|
+
ProjectScopedFilter,
|
38
|
+
ProjectScopedRequest,
|
39
|
+
ProjectScopedResponse,
|
40
|
+
ProjectScopedResponseBody,
|
41
|
+
ProjectScopedResponseMetadata,
|
42
|
+
ProjectScopedResponseResources,
|
37
43
|
TaggableFilter,
|
38
|
-
WorkspaceScopedFilter,
|
39
|
-
WorkspaceScopedRequest,
|
40
|
-
WorkspaceScopedResponse,
|
41
|
-
WorkspaceScopedResponseBody,
|
42
|
-
WorkspaceScopedResponseMetadata,
|
43
|
-
WorkspaceScopedResponseResources,
|
44
44
|
)
|
45
45
|
from zenml.models.v2.core.service import ServiceResponse
|
46
46
|
from zenml.models.v2.core.tag import TagResponse
|
@@ -60,7 +60,7 @@ if TYPE_CHECKING:
|
|
60
60
|
# ------------------ Request Model ------------------
|
61
61
|
|
62
62
|
|
63
|
-
class ModelVersionRequest(
|
63
|
+
class ModelVersionRequest(ProjectScopedRequest):
|
64
64
|
"""Request model for model versions."""
|
65
65
|
|
66
66
|
name: Optional[str] = Field(
|
@@ -135,7 +135,7 @@ class ModelVersionUpdate(BaseUpdate):
|
|
135
135
|
# ------------------ Response Model ------------------
|
136
136
|
|
137
137
|
|
138
|
-
class ModelVersionResponseBody(
|
138
|
+
class ModelVersionResponseBody(ProjectScopedResponseBody):
|
139
139
|
"""Response body for model versions."""
|
140
140
|
|
141
141
|
stage: Optional[str] = Field(
|
@@ -178,7 +178,7 @@ class ModelVersionResponseBody(WorkspaceScopedResponseBody):
|
|
178
178
|
model_config = ConfigDict(protected_namespaces=())
|
179
179
|
|
180
180
|
|
181
|
-
class ModelVersionResponseMetadata(
|
181
|
+
class ModelVersionResponseMetadata(ProjectScopedResponseMetadata):
|
182
182
|
"""Response metadata for model versions."""
|
183
183
|
|
184
184
|
description: Optional[str] = Field(
|
@@ -192,7 +192,7 @@ class ModelVersionResponseMetadata(WorkspaceScopedResponseMetadata):
|
|
192
192
|
)
|
193
193
|
|
194
194
|
|
195
|
-
class ModelVersionResponseResources(
|
195
|
+
class ModelVersionResponseResources(ProjectScopedResponseResources):
|
196
196
|
"""Class for all resource models associated with the model version entity."""
|
197
197
|
|
198
198
|
services: Page[ServiceResponse] = Field(
|
@@ -201,7 +201,7 @@ class ModelVersionResponseResources(WorkspaceScopedResponseResources):
|
|
201
201
|
|
202
202
|
|
203
203
|
class ModelVersionResponse(
|
204
|
-
|
204
|
+
ProjectScopedResponse[
|
205
205
|
ModelVersionResponseBody,
|
206
206
|
ModelVersionResponseMetadata,
|
207
207
|
ModelVersionResponseResources,
|
@@ -566,21 +566,21 @@ class ModelVersionResponse(
|
|
566
566
|
# ------------------ Filter Model ------------------
|
567
567
|
|
568
568
|
|
569
|
-
class ModelVersionFilter(
|
569
|
+
class ModelVersionFilter(ProjectScopedFilter, TaggableFilter):
|
570
570
|
"""Filter model for model versions."""
|
571
571
|
|
572
572
|
FILTER_EXCLUDE_FIELDS: ClassVar[List[str]] = [
|
573
|
-
*
|
573
|
+
*ProjectScopedFilter.FILTER_EXCLUDE_FIELDS,
|
574
574
|
*TaggableFilter.FILTER_EXCLUDE_FIELDS,
|
575
575
|
"model",
|
576
576
|
"run_metadata",
|
577
577
|
]
|
578
578
|
CUSTOM_SORTING_OPTIONS: ClassVar[List[str]] = [
|
579
|
-
*
|
579
|
+
*ProjectScopedFilter.CUSTOM_SORTING_OPTIONS,
|
580
580
|
*TaggableFilter.CUSTOM_SORTING_OPTIONS,
|
581
581
|
]
|
582
582
|
CLI_EXCLUDE_FIELDS: ClassVar[List[str]] = [
|
583
|
-
*
|
583
|
+
*ProjectScopedFilter.CLI_EXCLUDE_FIELDS,
|
584
584
|
*TaggableFilter.CLI_EXCLUDE_FIELDS,
|
585
585
|
"model",
|
586
586
|
]
|
zenml/models/v2/core/pipeline.py
CHANGED
@@ -34,13 +34,13 @@ from zenml.constants import (
|
|
34
34
|
from zenml.enums import ExecutionStatus
|
35
35
|
from zenml.models.v2.base.base import BaseUpdate
|
36
36
|
from zenml.models.v2.base.scoped import (
|
37
|
+
ProjectScopedFilter,
|
38
|
+
ProjectScopedRequest,
|
39
|
+
ProjectScopedResponse,
|
40
|
+
ProjectScopedResponseBody,
|
41
|
+
ProjectScopedResponseMetadata,
|
42
|
+
ProjectScopedResponseResources,
|
37
43
|
TaggableFilter,
|
38
|
-
WorkspaceScopedFilter,
|
39
|
-
WorkspaceScopedRequest,
|
40
|
-
WorkspaceScopedResponse,
|
41
|
-
WorkspaceScopedResponseBody,
|
42
|
-
WorkspaceScopedResponseMetadata,
|
43
|
-
WorkspaceScopedResponseResources,
|
44
44
|
)
|
45
45
|
from zenml.models.v2.core.tag import TagResponse
|
46
46
|
|
@@ -55,7 +55,7 @@ AnyQuery = TypeVar("AnyQuery", bound=Any)
|
|
55
55
|
# ------------------ Request Model ------------------
|
56
56
|
|
57
57
|
|
58
|
-
class PipelineRequest(
|
58
|
+
class PipelineRequest(ProjectScopedRequest):
|
59
59
|
"""Request model for pipelines."""
|
60
60
|
|
61
61
|
name: str = Field(
|
@@ -95,7 +95,7 @@ class PipelineUpdate(BaseUpdate):
|
|
95
95
|
# ------------------ Response Model ------------------
|
96
96
|
|
97
97
|
|
98
|
-
class PipelineResponseBody(
|
98
|
+
class PipelineResponseBody(ProjectScopedResponseBody):
|
99
99
|
"""Response body for pipelines."""
|
100
100
|
|
101
101
|
latest_run_id: Optional[UUID] = Field(
|
@@ -108,7 +108,7 @@ class PipelineResponseBody(WorkspaceScopedResponseBody):
|
|
108
108
|
)
|
109
109
|
|
110
110
|
|
111
|
-
class PipelineResponseMetadata(
|
111
|
+
class PipelineResponseMetadata(ProjectScopedResponseMetadata):
|
112
112
|
"""Response metadata for pipelines."""
|
113
113
|
|
114
114
|
description: Optional[str] = Field(
|
@@ -117,7 +117,7 @@ class PipelineResponseMetadata(WorkspaceScopedResponseMetadata):
|
|
117
117
|
)
|
118
118
|
|
119
119
|
|
120
|
-
class PipelineResponseResources(
|
120
|
+
class PipelineResponseResources(ProjectScopedResponseResources):
|
121
121
|
"""Class for all resource models associated with the pipeline entity."""
|
122
122
|
|
123
123
|
latest_run_user: Optional["UserResponse"] = Field(
|
@@ -130,7 +130,7 @@ class PipelineResponseResources(WorkspaceScopedResponseResources):
|
|
130
130
|
|
131
131
|
|
132
132
|
class PipelineResponse(
|
133
|
-
|
133
|
+
ProjectScopedResponse[
|
134
134
|
PipelineResponseBody,
|
135
135
|
PipelineResponseMetadata,
|
136
136
|
PipelineResponseResources,
|
@@ -257,21 +257,21 @@ class PipelineResponse(
|
|
257
257
|
# ------------------ Filter Model ------------------
|
258
258
|
|
259
259
|
|
260
|
-
class PipelineFilter(
|
260
|
+
class PipelineFilter(ProjectScopedFilter, TaggableFilter):
|
261
261
|
"""Pipeline filter model."""
|
262
262
|
|
263
263
|
CUSTOM_SORTING_OPTIONS: ClassVar[List[str]] = [
|
264
|
-
*
|
264
|
+
*ProjectScopedFilter.CUSTOM_SORTING_OPTIONS,
|
265
265
|
*TaggableFilter.CUSTOM_SORTING_OPTIONS,
|
266
266
|
SORT_PIPELINES_BY_LATEST_RUN_KEY,
|
267
267
|
]
|
268
268
|
FILTER_EXCLUDE_FIELDS: ClassVar[List[str]] = [
|
269
|
-
*
|
269
|
+
*ProjectScopedFilter.FILTER_EXCLUDE_FIELDS,
|
270
270
|
*TaggableFilter.FILTER_EXCLUDE_FIELDS,
|
271
271
|
"latest_run_status",
|
272
272
|
]
|
273
273
|
CLI_EXCLUDE_FIELDS: ClassVar[List[str]] = [
|
274
|
-
*
|
274
|
+
*ProjectScopedFilter.CLI_EXCLUDE_FIELDS,
|
275
275
|
*TaggableFilter.CLI_EXCLUDE_FIELDS,
|
276
276
|
]
|
277
277
|
|
@@ -31,12 +31,12 @@ from pydantic import Field
|
|
31
31
|
|
32
32
|
from zenml.models.v2.base.base import BaseZenModel
|
33
33
|
from zenml.models.v2.base.scoped import (
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
34
|
+
ProjectScopedFilter,
|
35
|
+
ProjectScopedRequest,
|
36
|
+
ProjectScopedResponse,
|
37
|
+
ProjectScopedResponseBody,
|
38
|
+
ProjectScopedResponseMetadata,
|
39
|
+
ProjectScopedResponseResources,
|
40
40
|
)
|
41
41
|
from zenml.models.v2.misc.build_item import BuildItem
|
42
42
|
|
@@ -171,7 +171,7 @@ class PipelineBuildBase(BaseZenModel):
|
|
171
171
|
)
|
172
172
|
|
173
173
|
|
174
|
-
class PipelineBuildRequest(PipelineBuildBase,
|
174
|
+
class PipelineBuildRequest(PipelineBuildBase, ProjectScopedRequest):
|
175
175
|
"""Request model for pipelines builds."""
|
176
176
|
|
177
177
|
checksum: Optional[str] = Field(title="The build checksum.", default=None)
|
@@ -193,11 +193,11 @@ class PipelineBuildRequest(PipelineBuildBase, WorkspaceScopedRequest):
|
|
193
193
|
|
194
194
|
|
195
195
|
# ------------------ Response Model ------------------
|
196
|
-
class PipelineBuildResponseBody(
|
196
|
+
class PipelineBuildResponseBody(ProjectScopedResponseBody):
|
197
197
|
"""Response body for pipeline builds."""
|
198
198
|
|
199
199
|
|
200
|
-
class PipelineBuildResponseMetadata(
|
200
|
+
class PipelineBuildResponseMetadata(ProjectScopedResponseMetadata):
|
201
201
|
"""Response metadata for pipeline builds."""
|
202
202
|
|
203
203
|
pipeline: Optional["PipelineResponse"] = Field(
|
@@ -231,12 +231,12 @@ class PipelineBuildResponseMetadata(WorkspaceScopedResponseMetadata):
|
|
231
231
|
)
|
232
232
|
|
233
233
|
|
234
|
-
class PipelineBuildResponseResources(
|
234
|
+
class PipelineBuildResponseResources(ProjectScopedResponseResources):
|
235
235
|
"""Class for all resource models associated with the pipeline build entity."""
|
236
236
|
|
237
237
|
|
238
238
|
class PipelineBuildResponse(
|
239
|
-
|
239
|
+
ProjectScopedResponse[
|
240
240
|
PipelineBuildResponseBody,
|
241
241
|
PipelineBuildResponseMetadata,
|
242
242
|
PipelineBuildResponseResources,
|
@@ -278,7 +278,7 @@ class PipelineBuildResponse(
|
|
278
278
|
exclude={
|
279
279
|
"pipeline",
|
280
280
|
"stack",
|
281
|
-
"
|
281
|
+
"project",
|
282
282
|
}
|
283
283
|
)
|
284
284
|
)
|
@@ -473,11 +473,11 @@ class PipelineBuildResponse(
|
|
473
473
|
# ------------------ Filter Model ------------------
|
474
474
|
|
475
475
|
|
476
|
-
class PipelineBuildFilter(
|
476
|
+
class PipelineBuildFilter(ProjectScopedFilter):
|
477
477
|
"""Model to enable advanced filtering of all pipeline builds."""
|
478
478
|
|
479
479
|
FILTER_EXCLUDE_FIELDS: ClassVar[List[str]] = [
|
480
|
-
*
|
480
|
+
*ProjectScopedFilter.FILTER_EXCLUDE_FIELDS,
|
481
481
|
"container_registry_id",
|
482
482
|
]
|
483
483
|
|
@@ -24,12 +24,12 @@ from zenml.config.step_configurations import Step
|
|
24
24
|
from zenml.models.v2.base.base import BaseZenModel
|
25
25
|
from zenml.models.v2.base.page import Page
|
26
26
|
from zenml.models.v2.base.scoped import (
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
27
|
+
ProjectScopedFilter,
|
28
|
+
ProjectScopedRequest,
|
29
|
+
ProjectScopedResponse,
|
30
|
+
ProjectScopedResponseBody,
|
31
|
+
ProjectScopedResponseMetadata,
|
32
|
+
ProjectScopedResponseResources,
|
33
33
|
)
|
34
34
|
from zenml.models.v2.core.code_reference import (
|
35
35
|
CodeReferenceRequest,
|
@@ -93,9 +93,7 @@ class PipelineDeploymentBase(BaseZenModel):
|
|
93
93
|
)
|
94
94
|
|
95
95
|
|
96
|
-
class PipelineDeploymentRequest(
|
97
|
-
PipelineDeploymentBase, WorkspaceScopedRequest
|
98
|
-
):
|
96
|
+
class PipelineDeploymentRequest(PipelineDeploymentBase, ProjectScopedRequest):
|
99
97
|
"""Request model for pipeline deployments."""
|
100
98
|
|
101
99
|
stack: UUID = Field(title="The stack associated with the deployment.")
|
@@ -129,11 +127,11 @@ class PipelineDeploymentRequest(
|
|
129
127
|
# ------------------ Response Model ------------------
|
130
128
|
|
131
129
|
|
132
|
-
class PipelineDeploymentResponseBody(
|
130
|
+
class PipelineDeploymentResponseBody(ProjectScopedResponseBody):
|
133
131
|
"""Response body for pipeline deployments."""
|
134
132
|
|
135
133
|
|
136
|
-
class PipelineDeploymentResponseMetadata(
|
134
|
+
class PipelineDeploymentResponseMetadata(ProjectScopedResponseMetadata):
|
137
135
|
"""Response metadata for pipeline deployments."""
|
138
136
|
|
139
137
|
run_name_template: str = Field(
|
@@ -188,7 +186,7 @@ class PipelineDeploymentResponseMetadata(WorkspaceScopedResponseMetadata):
|
|
188
186
|
)
|
189
187
|
|
190
188
|
|
191
|
-
class PipelineDeploymentResponseResources(
|
189
|
+
class PipelineDeploymentResponseResources(ProjectScopedResponseResources):
|
192
190
|
"""Class for all resource models associated with the pipeline deployment entity."""
|
193
191
|
|
194
192
|
triggers: TriggerPage = Field( # type: ignore[valid-type]
|
@@ -197,7 +195,7 @@ class PipelineDeploymentResponseResources(WorkspaceScopedResponseResources):
|
|
197
195
|
|
198
196
|
|
199
197
|
class PipelineDeploymentResponse(
|
200
|
-
|
198
|
+
ProjectScopedResponse[
|
201
199
|
PipelineDeploymentResponseBody,
|
202
200
|
PipelineDeploymentResponseMetadata,
|
203
201
|
PipelineDeploymentResponseResources,
|
@@ -355,7 +353,7 @@ class PipelineDeploymentResponse(
|
|
355
353
|
# ------------------ Filter Model ------------------
|
356
354
|
|
357
355
|
|
358
|
-
class PipelineDeploymentFilter(
|
356
|
+
class PipelineDeploymentFilter(ProjectScopedFilter):
|
359
357
|
"""Model to enable advanced filtering of all pipeline deployments."""
|
360
358
|
|
361
359
|
pipeline_id: Optional[Union[UUID, str]] = Field(
|