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
@@ -32,10 +32,10 @@ from zenml.utils.time_utils import utc_now
32
32
  from zenml.zen_stores.schemas.base_schemas import NamedSchema
33
33
  from zenml.zen_stores.schemas.component_schemas import StackComponentSchema
34
34
  from zenml.zen_stores.schemas.pipeline_schemas import PipelineSchema
35
+ from zenml.zen_stores.schemas.project_schemas import ProjectSchema
35
36
  from zenml.zen_stores.schemas.schema_utils import build_foreign_key_field
36
37
  from zenml.zen_stores.schemas.user_schemas import UserSchema
37
38
  from zenml.zen_stores.schemas.utils import RunMetadataInterface
38
- from zenml.zen_stores.schemas.workspace_schemas import WorkspaceSchema
39
39
 
40
40
  if TYPE_CHECKING:
41
41
  from zenml.zen_stores.schemas.pipeline_deployment_schemas import (
@@ -53,20 +53,20 @@ class ScheduleSchema(NamedSchema, RunMetadataInterface, table=True):
53
53
  __table_args__ = (
54
54
  UniqueConstraint(
55
55
  "name",
56
- "workspace_id",
57
- name="unique_schedule_name_in_workspace",
56
+ "project_id",
57
+ name="unique_schedule_name_in_project",
58
58
  ),
59
59
  )
60
60
 
61
- workspace_id: UUID = build_foreign_key_field(
61
+ project_id: UUID = build_foreign_key_field(
62
62
  source=__tablename__,
63
- target=WorkspaceSchema.__tablename__,
64
- source_column="workspace_id",
63
+ target=ProjectSchema.__tablename__,
64
+ source_column="project_id",
65
65
  target_column="id",
66
66
  ondelete="CASCADE",
67
67
  nullable=False,
68
68
  )
69
- workspace: "WorkspaceSchema" = Relationship(back_populates="schedules")
69
+ project: "ProjectSchema" = Relationship(back_populates="schedules")
70
70
 
71
71
  user_id: Optional[UUID] = build_foreign_key_field(
72
72
  source=__tablename__,
@@ -138,7 +138,7 @@ class ScheduleSchema(NamedSchema, RunMetadataInterface, table=True):
138
138
  interval_second = None
139
139
  return cls(
140
140
  name=schedule_request.name,
141
- workspace_id=schedule_request.workspace,
141
+ project_id=schedule_request.project,
142
142
  user_id=schedule_request.user,
143
143
  pipeline_id=schedule_request.pipeline_id,
144
144
  orchestrator_id=schedule_request.orchestrator_id,
@@ -203,7 +203,7 @@ class ScheduleSchema(NamedSchema, RunMetadataInterface, table=True):
203
203
  metadata = None
204
204
  if include_metadata:
205
205
  metadata = ScheduleResponseMetadata(
206
- workspace=self.workspace.to_model(),
206
+ project=self.project.to_model(),
207
207
  pipeline_id=self.pipeline_id,
208
208
  orchestrator_id=self.orchestrator_id,
209
209
  run_metadata=self.fetch_metadata(),
@@ -35,9 +35,9 @@ from zenml.utils.time_utils import utc_now
35
35
  from zenml.zen_stores.schemas.base_schemas import NamedSchema
36
36
  from zenml.zen_stores.schemas.model_schemas import ModelVersionSchema
37
37
  from zenml.zen_stores.schemas.pipeline_run_schemas import PipelineRunSchema
38
+ from zenml.zen_stores.schemas.project_schemas import ProjectSchema
38
39
  from zenml.zen_stores.schemas.schema_utils import build_foreign_key_field
39
40
  from zenml.zen_stores.schemas.user_schemas import UserSchema
40
- from zenml.zen_stores.schemas.workspace_schemas import WorkspaceSchema
41
41
 
42
42
 
43
43
  class ServiceSchema(NamedSchema, table=True):
@@ -45,15 +45,15 @@ class ServiceSchema(NamedSchema, table=True):
45
45
 
46
46
  __tablename__ = "service"
47
47
 
48
- workspace_id: UUID = build_foreign_key_field(
48
+ project_id: UUID = build_foreign_key_field(
49
49
  source=__tablename__,
50
- target=WorkspaceSchema.__tablename__,
51
- source_column="workspace_id",
50
+ target=ProjectSchema.__tablename__,
51
+ source_column="project_id",
52
52
  target_column="id",
53
53
  ondelete="CASCADE",
54
54
  nullable=False,
55
55
  )
56
- workspace: "WorkspaceSchema" = Relationship(back_populates="services")
56
+ project: "ProjectSchema" = Relationship(back_populates="services")
57
57
 
58
58
  user_id: Optional[UUID] = build_foreign_key_field(
59
59
  source=__tablename__,
@@ -146,7 +146,7 @@ class ServiceSchema(NamedSchema, table=True):
146
146
  metadata = None
147
147
  if include_metadata:
148
148
  metadata = ServiceResponseMetadata(
149
- workspace=self.workspace.to_model(),
149
+ project=self.project.to_model(),
150
150
  service_source=self.service_source,
151
151
  config=json.loads(base64.b64decode(self.config).decode()),
152
152
  status=json.loads(base64.b64decode(self.status).decode())
@@ -226,7 +226,7 @@ class ServiceSchema(NamedSchema, table=True):
226
226
  """
227
227
  return cls(
228
228
  name=service_request.name,
229
- workspace_id=service_request.workspace,
229
+ project_id=service_request.project,
230
230
  user_id=service_request.user,
231
231
  service_source=service_request.service_source,
232
232
  service_type=service_request.service_type.model_dump_json(),
@@ -50,10 +50,10 @@ from zenml.zen_stores.schemas.pipeline_deployment_schemas import (
50
50
  PipelineDeploymentSchema,
51
51
  )
52
52
  from zenml.zen_stores.schemas.pipeline_run_schemas import PipelineRunSchema
53
+ from zenml.zen_stores.schemas.project_schemas import ProjectSchema
53
54
  from zenml.zen_stores.schemas.schema_utils import build_foreign_key_field
54
55
  from zenml.zen_stores.schemas.user_schemas import UserSchema
55
56
  from zenml.zen_stores.schemas.utils import RunMetadataInterface
56
- from zenml.zen_stores.schemas.workspace_schemas import WorkspaceSchema
57
57
 
58
58
  if TYPE_CHECKING:
59
59
  from zenml.zen_stores.schemas.artifact_schemas import ArtifactVersionSchema
@@ -126,10 +126,10 @@ class StepRunSchema(NamedSchema, RunMetadataInterface, table=True):
126
126
  ondelete="SET NULL",
127
127
  nullable=True,
128
128
  )
129
- workspace_id: UUID = build_foreign_key_field(
129
+ project_id: UUID = build_foreign_key_field(
130
130
  source=__tablename__,
131
- target=WorkspaceSchema.__tablename__,
132
- source_column="workspace_id",
131
+ target=ProjectSchema.__tablename__,
132
+ source_column="project_id",
133
133
  target_column="id",
134
134
  ondelete="CASCADE",
135
135
  nullable=False,
@@ -144,7 +144,7 @@ class StepRunSchema(NamedSchema, RunMetadataInterface, table=True):
144
144
  )
145
145
 
146
146
  # Relationships
147
- workspace: "WorkspaceSchema" = Relationship(back_populates="step_runs")
147
+ project: "ProjectSchema" = Relationship(back_populates="step_runs")
148
148
  user: Optional["UserSchema"] = Relationship(back_populates="step_runs")
149
149
  deployment: Optional["PipelineDeploymentSchema"] = Relationship(
150
150
  back_populates="step_runs"
@@ -200,7 +200,7 @@ class StepRunSchema(NamedSchema, RunMetadataInterface, table=True):
200
200
  """
201
201
  return cls(
202
202
  name=request.name,
203
- workspace_id=request.workspace,
203
+ project_id=request.project,
204
204
  user_id=request.user,
205
205
  start_time=request.start_time,
206
206
  end_time=request.end_time,
@@ -310,7 +310,7 @@ class StepRunSchema(NamedSchema, RunMetadataInterface, table=True):
310
310
  metadata = None
311
311
  if include_metadata:
312
312
  metadata = StepRunResponseMetadata(
313
- workspace=self.workspace.to_model(),
313
+ project=self.project.to_model(),
314
314
  config=full_step_config.config,
315
315
  spec=full_step_config.spec,
316
316
  cache_key=self.cache_key,
@@ -41,10 +41,10 @@ from zenml.utils.time_utils import utc_now
41
41
  from zenml.zen_stores.schemas.action_schemas import ActionSchema
42
42
  from zenml.zen_stores.schemas.base_schemas import BaseSchema, NamedSchema
43
43
  from zenml.zen_stores.schemas.event_source_schemas import EventSourceSchema
44
+ from zenml.zen_stores.schemas.project_schemas import ProjectSchema
44
45
  from zenml.zen_stores.schemas.schema_utils import build_foreign_key_field
45
46
  from zenml.zen_stores.schemas.user_schemas import UserSchema
46
47
  from zenml.zen_stores.schemas.utils import get_page_from_list
47
- from zenml.zen_stores.schemas.workspace_schemas import WorkspaceSchema
48
48
 
49
49
 
50
50
  class TriggerSchema(NamedSchema, table=True):
@@ -54,20 +54,20 @@ class TriggerSchema(NamedSchema, table=True):
54
54
  __table_args__ = (
55
55
  UniqueConstraint(
56
56
  "name",
57
- "workspace_id",
58
- name="unique_trigger_name_in_workspace",
57
+ "project_id",
58
+ name="unique_trigger_name_in_project",
59
59
  ),
60
60
  )
61
61
 
62
- workspace_id: UUID = build_foreign_key_field(
62
+ project_id: UUID = build_foreign_key_field(
63
63
  source=__tablename__,
64
- target=WorkspaceSchema.__tablename__,
65
- source_column="workspace_id",
64
+ target=ProjectSchema.__tablename__,
65
+ source_column="project_id",
66
66
  target_column="id",
67
67
  ondelete="CASCADE",
68
68
  nullable=False,
69
69
  )
70
- workspace: "WorkspaceSchema" = Relationship(back_populates="triggers")
70
+ project: "ProjectSchema" = Relationship(back_populates="triggers")
71
71
 
72
72
  user_id: Optional[UUID] = build_foreign_key_field(
73
73
  source=__tablename__,
@@ -155,7 +155,7 @@ class TriggerSchema(NamedSchema, table=True):
155
155
  """
156
156
  return cls(
157
157
  name=request.name,
158
- workspace_id=request.workspace,
158
+ project_id=request.project,
159
159
  user_id=request.user,
160
160
  action_id=request.action_id,
161
161
  event_source_id=request.event_source_id,
@@ -208,7 +208,7 @@ class TriggerSchema(NamedSchema, table=True):
208
208
  metadata = None
209
209
  if include_metadata:
210
210
  metadata = TriggerResponseMetadata(
211
- workspace=self.workspace.to_model(),
211
+ project=self.project.to_model(),
212
212
  event_filter=json.loads(
213
213
  base64.b64decode(self.event_filter).decode()
214
214
  ),
@@ -34,8 +34,6 @@ from zenml.models import (
34
34
  )
35
35
  from zenml.utils.time_utils import utc_now
36
36
  from zenml.zen_stores.schemas.base_schemas import NamedSchema
37
- from zenml.zen_stores.schemas.schema_utils import build_foreign_key_field
38
- from zenml.zen_stores.schemas.workspace_schemas import WorkspaceSchema
39
37
 
40
38
  if TYPE_CHECKING:
41
39
  from zenml.zen_stores.schemas import (
@@ -84,14 +82,6 @@ class UserSchema(NamedSchema, table=True):
84
82
  external_user_id: Optional[UUID] = Field(nullable=True)
85
83
  is_admin: bool = Field(default=False)
86
84
  user_metadata: Optional[str] = Field(nullable=True)
87
- default_workspace_id: Optional[UUID] = build_foreign_key_field(
88
- source=__tablename__,
89
- target=WorkspaceSchema.__tablename__,
90
- source_column="default_workspace_id",
91
- target_column="id",
92
- ondelete="SET NULL",
93
- nullable=True,
94
- )
95
85
 
96
86
  stacks: List["StackSchema"] = Relationship(back_populates="user")
97
87
  components: List["StackComponentSchema"] = Relationship(
@@ -195,7 +185,6 @@ class UserSchema(NamedSchema, table=True):
195
185
  user_metadata=json.dumps(model.user_metadata)
196
186
  if model.user_metadata
197
187
  else None,
198
- default_workspace_id=model.default_workspace_id,
199
188
  )
200
189
 
201
190
  @classmethod
@@ -310,7 +299,6 @@ class UserSchema(NamedSchema, table=True):
310
299
  created=self.created,
311
300
  updated=self.updated,
312
301
  is_admin=self.is_admin,
313
- default_workspace_id=self.default_workspace_id,
314
302
  ),
315
303
  metadata=metadata,
316
304
  )