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.
Files changed (145) hide show
  1. zenml/VERSION +1 -1
  2. zenml/analytics/context.py +4 -4
  3. zenml/analytics/enums.py +2 -2
  4. zenml/artifacts/utils.py +2 -2
  5. zenml/cli/__init__.py +8 -9
  6. zenml/cli/base.py +2 -2
  7. zenml/cli/code_repository.py +1 -1
  8. zenml/cli/login.py +21 -18
  9. zenml/cli/pipeline.py +3 -3
  10. zenml/cli/project.py +172 -0
  11. zenml/cli/server.py +5 -5
  12. zenml/cli/service_accounts.py +0 -1
  13. zenml/cli/service_connectors.py +15 -16
  14. zenml/cli/stack.py +0 -2
  15. zenml/cli/stack_components.py +2 -2
  16. zenml/cli/utils.py +3 -3
  17. zenml/client.py +352 -341
  18. zenml/config/global_config.py +41 -43
  19. zenml/config/server_config.py +9 -9
  20. zenml/constants.py +5 -3
  21. zenml/event_hub/event_hub.py +1 -1
  22. zenml/integrations/gcp/__init__.py +1 -0
  23. zenml/integrations/gcp/flavors/vertex_orchestrator_flavor.py +5 -0
  24. zenml/integrations/gcp/flavors/vertex_step_operator_flavor.py +5 -28
  25. zenml/integrations/gcp/orchestrators/vertex_orchestrator.py +125 -78
  26. zenml/integrations/gcp/service_connectors/gcp_service_connector.py +7 -6
  27. zenml/integrations/gcp/vertex_custom_job_parameters.py +50 -0
  28. zenml/integrations/mlflow/steps/mlflow_registry.py +3 -3
  29. zenml/integrations/wandb/__init__.py +1 -1
  30. zenml/integrations/wandb/experiment_trackers/wandb_experiment_tracker.py +29 -9
  31. zenml/integrations/wandb/flavors/wandb_experiment_tracker_flavor.py +2 -0
  32. zenml/login/credentials.py +26 -27
  33. zenml/login/credentials_store.py +5 -5
  34. zenml/login/pro/client.py +9 -9
  35. zenml/login/pro/utils.py +8 -8
  36. zenml/login/pro/{tenant → workspace}/__init__.py +1 -1
  37. zenml/login/pro/{tenant → workspace}/client.py +25 -25
  38. zenml/login/pro/{tenant → workspace}/models.py +27 -28
  39. zenml/model/model.py +2 -2
  40. zenml/model_registries/base_model_registry.py +1 -1
  41. zenml/models/__init__.py +29 -29
  42. zenml/models/v2/base/filter.py +1 -1
  43. zenml/models/v2/base/scoped.py +49 -53
  44. zenml/models/v2/core/action.py +12 -12
  45. zenml/models/v2/core/artifact.py +15 -15
  46. zenml/models/v2/core/artifact_version.py +15 -15
  47. zenml/models/v2/core/code_repository.py +12 -12
  48. zenml/models/v2/core/event_source.py +12 -12
  49. zenml/models/v2/core/model.py +26 -18
  50. zenml/models/v2/core/model_version.py +15 -15
  51. zenml/models/v2/core/pipeline.py +15 -15
  52. zenml/models/v2/core/pipeline_build.py +14 -14
  53. zenml/models/v2/core/pipeline_deployment.py +12 -14
  54. zenml/models/v2/core/pipeline_run.py +16 -16
  55. zenml/models/v2/core/project.py +203 -0
  56. zenml/models/v2/core/run_metadata.py +2 -2
  57. zenml/models/v2/core/run_template.py +15 -15
  58. zenml/models/v2/core/schedule.py +12 -12
  59. zenml/models/v2/core/secret.py +1 -1
  60. zenml/models/v2/core/service.py +14 -14
  61. zenml/models/v2/core/step_run.py +13 -13
  62. zenml/models/v2/core/tag.py +96 -3
  63. zenml/models/v2/core/trigger.py +13 -13
  64. zenml/models/v2/core/trigger_execution.py +2 -2
  65. zenml/models/v2/core/user.py +0 -17
  66. zenml/models/v2/misc/server_models.py +6 -6
  67. zenml/models/v2/misc/statistics.py +4 -4
  68. zenml/orchestrators/cache_utils.py +7 -7
  69. zenml/orchestrators/input_utils.py +1 -1
  70. zenml/orchestrators/step_launcher.py +1 -1
  71. zenml/orchestrators/step_run_utils.py +3 -3
  72. zenml/orchestrators/utils.py +4 -4
  73. zenml/pipelines/build_utils.py +2 -2
  74. zenml/pipelines/pipeline_definition.py +5 -5
  75. zenml/pipelines/run_utils.py +1 -1
  76. zenml/service_connectors/service_connector.py +0 -3
  77. zenml/service_connectors/service_connector_utils.py +0 -1
  78. zenml/stack/stack.py +0 -1
  79. zenml/steps/base_step.py +10 -2
  80. zenml/utils/dashboard_utils.py +1 -1
  81. zenml/utils/tag_utils.py +0 -12
  82. zenml/zen_server/cloud_utils.py +3 -3
  83. zenml/zen_server/feature_gate/endpoint_utils.py +1 -1
  84. zenml/zen_server/feature_gate/zenml_cloud_feature_gate.py +1 -1
  85. zenml/zen_server/rbac/endpoint_utils.py +17 -17
  86. zenml/zen_server/rbac/models.py +47 -22
  87. zenml/zen_server/rbac/rbac_sql_zen_store.py +3 -3
  88. zenml/zen_server/rbac/utils.py +23 -25
  89. zenml/zen_server/rbac/zenml_cloud_rbac.py +7 -74
  90. zenml/zen_server/routers/artifact_version_endpoints.py +10 -10
  91. zenml/zen_server/routers/auth_endpoints.py +6 -6
  92. zenml/zen_server/routers/code_repositories_endpoints.py +12 -14
  93. zenml/zen_server/routers/model_versions_endpoints.py +13 -15
  94. zenml/zen_server/routers/models_endpoints.py +7 -9
  95. zenml/zen_server/routers/pipeline_builds_endpoints.py +14 -16
  96. zenml/zen_server/routers/pipeline_deployments_endpoints.py +13 -15
  97. zenml/zen_server/routers/pipelines_endpoints.py +16 -18
  98. zenml/zen_server/routers/{workspaces_endpoints.py → projects_endpoints.py} +111 -68
  99. zenml/zen_server/routers/run_metadata_endpoints.py +7 -9
  100. zenml/zen_server/routers/run_templates_endpoints.py +15 -17
  101. zenml/zen_server/routers/runs_endpoints.py +12 -14
  102. zenml/zen_server/routers/schedule_endpoints.py +12 -14
  103. zenml/zen_server/routers/secrets_endpoints.py +1 -3
  104. zenml/zen_server/routers/server_endpoints.py +7 -7
  105. zenml/zen_server/routers/service_connectors_endpoints.py +11 -13
  106. zenml/zen_server/routers/service_endpoints.py +7 -9
  107. zenml/zen_server/routers/stack_components_endpoints.py +9 -11
  108. zenml/zen_server/routers/stacks_endpoints.py +9 -11
  109. zenml/zen_server/routers/steps_endpoints.py +6 -6
  110. zenml/zen_server/routers/users_endpoints.py +5 -43
  111. zenml/zen_server/template_execution/utils.py +4 -4
  112. zenml/zen_server/utils.py +10 -10
  113. zenml/zen_server/zen_server_api.py +6 -5
  114. zenml/zen_stores/base_zen_store.py +38 -42
  115. zenml/zen_stores/migrations/versions/12eff0206201_rename_workspace_to_project.py +768 -0
  116. zenml/zen_stores/migrations/versions/41b28cae31ce_make_artifacts_workspace_scoped.py +3 -3
  117. zenml/zen_stores/migrations/versions/cbc6acd71f92_add_workspace_display_name.py +58 -0
  118. zenml/zen_stores/rest_zen_store.py +55 -63
  119. zenml/zen_stores/schemas/__init__.py +2 -2
  120. zenml/zen_stores/schemas/action_schemas.py +9 -9
  121. zenml/zen_stores/schemas/artifact_schemas.py +15 -17
  122. zenml/zen_stores/schemas/code_repository_schemas.py +16 -18
  123. zenml/zen_stores/schemas/event_source_schemas.py +9 -9
  124. zenml/zen_stores/schemas/model_schemas.py +15 -17
  125. zenml/zen_stores/schemas/pipeline_build_schemas.py +7 -7
  126. zenml/zen_stores/schemas/pipeline_deployment_schemas.py +7 -7
  127. zenml/zen_stores/schemas/pipeline_run_schemas.py +9 -9
  128. zenml/zen_stores/schemas/pipeline_schemas.py +9 -9
  129. zenml/zen_stores/schemas/{workspace_schemas.py → project_schemas.py} +47 -41
  130. zenml/zen_stores/schemas/run_metadata_schemas.py +5 -5
  131. zenml/zen_stores/schemas/run_template_schemas.py +9 -9
  132. zenml/zen_stores/schemas/schedule_schema.py +9 -9
  133. zenml/zen_stores/schemas/service_schemas.py +7 -7
  134. zenml/zen_stores/schemas/step_run_schemas.py +7 -7
  135. zenml/zen_stores/schemas/trigger_schemas.py +9 -9
  136. zenml/zen_stores/schemas/user_schemas.py +0 -12
  137. zenml/zen_stores/sql_zen_store.py +318 -275
  138. zenml/zen_stores/zen_store_interface.py +56 -70
  139. {zenml_nightly-0.75.0.dev20250313.dist-info → zenml_nightly-0.75.0.dev20250315.dist-info}/METADATA +1 -1
  140. {zenml_nightly-0.75.0.dev20250313.dist-info → zenml_nightly-0.75.0.dev20250315.dist-info}/RECORD +143 -140
  141. zenml/cli/workspace.py +0 -160
  142. zenml/models/v2/core/workspace.py +0 -131
  143. {zenml_nightly-0.75.0.dev20250313.dist-info → zenml_nightly-0.75.0.dev20250315.dist-info}/LICENSE +0 -0
  144. {zenml_nightly-0.75.0.dev20250313.dist-info → zenml_nightly-0.75.0.dev20250315.dist-info}/WHEEL +0 -0
  145. {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(WorkspaceScopedRequest):
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(WorkspaceScopedResponseBody):
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(WorkspaceScopedResponseMetadata):
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(WorkspaceScopedResponseResources):
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
- WorkspaceScopedResponse[
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(WorkspaceScopedFilter, TaggableFilter):
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
- *WorkspaceScopedFilter.FILTER_EXCLUDE_FIELDS,
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
- *WorkspaceScopedFilter.CUSTOM_SORTING_OPTIONS,
489
+ *ProjectScopedFilter.CUSTOM_SORTING_OPTIONS,
490
490
  *TaggableFilter.CUSTOM_SORTING_OPTIONS,
491
491
  ]
492
492
  CLI_EXCLUDE_FIELDS: ClassVar[List[str]] = [
493
- *WorkspaceScopedFilter.CLI_EXCLUDE_FIELDS,
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
- WorkspaceScopedFilter,
25
- WorkspaceScopedRequest,
26
- WorkspaceScopedResponse,
27
- WorkspaceScopedResponseBody,
28
- WorkspaceScopedResponseMetadata,
29
- WorkspaceScopedResponseResources,
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(WorkspaceScopedRequest):
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(WorkspaceScopedResponseBody):
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(WorkspaceScopedResponseMetadata):
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(WorkspaceScopedResponseResources):
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
- WorkspaceScopedResponse[
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(WorkspaceScopedFilter):
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
- WorkspaceScopedFilter,
27
- WorkspaceScopedRequest,
28
- WorkspaceScopedResponse,
29
- WorkspaceScopedResponseBody,
30
- WorkspaceScopedResponseMetadata,
31
- WorkspaceScopedResponseResources,
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(WorkspaceScopedRequest):
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(WorkspaceScopedResponseBody):
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(WorkspaceScopedResponseMetadata):
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(WorkspaceScopedResponseResources):
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
- WorkspaceScopedResponse[
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(WorkspaceScopedFilter):
229
+ class EventSourceFilter(ProjectScopedFilter):
230
230
  """Model to enable advanced filtering of all EventSourceModels."""
231
231
 
232
232
  name: Optional[str] = Field(
@@ -13,7 +13,15 @@
13
13
  # permissions and limitations under the License.
14
14
  """Models representing models."""
15
15
 
16
- from typing import TYPE_CHECKING, Any, ClassVar, List, Optional, Type, TypeVar
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(WorkspaceScopedRequest):
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(WorkspaceScopedResponseBody):
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(WorkspaceScopedResponseMetadata):
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(WorkspaceScopedResponseResources):
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
- WorkspaceScopedResponse[
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
- workspace=self.workspace.id,
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(WorkspaceScopedFilter, TaggableFilter):
330
- """Model to enable advanced filtering of all Workspaces."""
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
- *WorkspaceScopedFilter.FILTER_EXCLUDE_FIELDS,
346
+ *ProjectScopedFilter.FILTER_EXCLUDE_FIELDS,
339
347
  *TaggableFilter.FILTER_EXCLUDE_FIELDS,
340
348
  ]
341
349
  CUSTOM_SORTING_OPTIONS: ClassVar[List[str]] = [
342
- *WorkspaceScopedFilter.CUSTOM_SORTING_OPTIONS,
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
- *WorkspaceScopedFilter.CLI_EXCLUDE_FIELDS,
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(WorkspaceScopedRequest):
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(WorkspaceScopedResponseBody):
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(WorkspaceScopedResponseMetadata):
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(WorkspaceScopedResponseResources):
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
- WorkspaceScopedResponse[
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(WorkspaceScopedFilter, TaggableFilter):
569
+ class ModelVersionFilter(ProjectScopedFilter, TaggableFilter):
570
570
  """Filter model for model versions."""
571
571
 
572
572
  FILTER_EXCLUDE_FIELDS: ClassVar[List[str]] = [
573
- *WorkspaceScopedFilter.FILTER_EXCLUDE_FIELDS,
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
- *WorkspaceScopedFilter.CUSTOM_SORTING_OPTIONS,
579
+ *ProjectScopedFilter.CUSTOM_SORTING_OPTIONS,
580
580
  *TaggableFilter.CUSTOM_SORTING_OPTIONS,
581
581
  ]
582
582
  CLI_EXCLUDE_FIELDS: ClassVar[List[str]] = [
583
- *WorkspaceScopedFilter.CLI_EXCLUDE_FIELDS,
583
+ *ProjectScopedFilter.CLI_EXCLUDE_FIELDS,
584
584
  *TaggableFilter.CLI_EXCLUDE_FIELDS,
585
585
  "model",
586
586
  ]
@@ -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(WorkspaceScopedRequest):
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(WorkspaceScopedResponseBody):
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(WorkspaceScopedResponseMetadata):
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(WorkspaceScopedResponseResources):
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
- WorkspaceScopedResponse[
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(WorkspaceScopedFilter, TaggableFilter):
260
+ class PipelineFilter(ProjectScopedFilter, TaggableFilter):
261
261
  """Pipeline filter model."""
262
262
 
263
263
  CUSTOM_SORTING_OPTIONS: ClassVar[List[str]] = [
264
- *WorkspaceScopedFilter.CUSTOM_SORTING_OPTIONS,
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
- *WorkspaceScopedFilter.FILTER_EXCLUDE_FIELDS,
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
- *WorkspaceScopedFilter.CLI_EXCLUDE_FIELDS,
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
- WorkspaceScopedFilter,
35
- WorkspaceScopedRequest,
36
- WorkspaceScopedResponse,
37
- WorkspaceScopedResponseBody,
38
- WorkspaceScopedResponseMetadata,
39
- WorkspaceScopedResponseResources,
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, WorkspaceScopedRequest):
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(WorkspaceScopedResponseBody):
196
+ class PipelineBuildResponseBody(ProjectScopedResponseBody):
197
197
  """Response body for pipeline builds."""
198
198
 
199
199
 
200
- class PipelineBuildResponseMetadata(WorkspaceScopedResponseMetadata):
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(WorkspaceScopedResponseResources):
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
- WorkspaceScopedResponse[
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
- "workspace",
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(WorkspaceScopedFilter):
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
- *WorkspaceScopedFilter.FILTER_EXCLUDE_FIELDS,
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
- WorkspaceScopedFilter,
28
- WorkspaceScopedRequest,
29
- WorkspaceScopedResponse,
30
- WorkspaceScopedResponseBody,
31
- WorkspaceScopedResponseMetadata,
32
- WorkspaceScopedResponseResources,
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(WorkspaceScopedResponseBody):
130
+ class PipelineDeploymentResponseBody(ProjectScopedResponseBody):
133
131
  """Response body for pipeline deployments."""
134
132
 
135
133
 
136
- class PipelineDeploymentResponseMetadata(WorkspaceScopedResponseMetadata):
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(WorkspaceScopedResponseResources):
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
- WorkspaceScopedResponse[
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(WorkspaceScopedFilter):
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(