zenml-nightly 0.75.0.dev20250312__py3-none-any.whl → 0.75.0.dev20250313__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 (160) hide show
  1. zenml/VERSION +1 -1
  2. zenml/__init__.py +2 -0
  3. zenml/analytics/context.py +7 -0
  4. zenml/artifacts/utils.py +0 -2
  5. zenml/cli/login.py +6 -0
  6. zenml/cli/model.py +7 -15
  7. zenml/cli/secret.py +47 -44
  8. zenml/cli/service_connectors.py +0 -1
  9. zenml/cli/stack.py +0 -1
  10. zenml/cli/tag.py +3 -5
  11. zenml/cli/utils.py +25 -23
  12. zenml/cli/workspace.py +79 -5
  13. zenml/client.py +615 -348
  14. zenml/config/global_config.py +16 -3
  15. zenml/config/pipeline_configurations.py +3 -2
  16. zenml/config/pipeline_run_configuration.py +2 -1
  17. zenml/config/secret_reference_mixin.py +1 -1
  18. zenml/constants.py +1 -3
  19. zenml/enums.py +0 -7
  20. zenml/event_hub/event_hub.py +3 -1
  21. zenml/exceptions.py +0 -24
  22. zenml/integrations/aws/orchestrators/sagemaker_orchestrator.py +5 -3
  23. zenml/integrations/bitbucket/plugins/event_sources/bitbucket_webhook_event_source.py +1 -4
  24. zenml/integrations/github/plugins/event_sources/github_webhook_event_source.py +1 -4
  25. zenml/integrations/mlflow/steps/mlflow_registry.py +1 -1
  26. zenml/integrations/seldon/model_deployers/seldon_model_deployer.py +1 -1
  27. zenml/integrations/wandb/flavors/wandb_experiment_tracker_flavor.py +3 -3
  28. zenml/model/model.py +8 -8
  29. zenml/models/__init__.py +18 -1
  30. zenml/models/v2/base/base.py +0 -5
  31. zenml/models/v2/base/filter.py +1 -1
  32. zenml/models/v2/base/scoped.py +104 -121
  33. zenml/models/v2/core/api_key.py +1 -1
  34. zenml/models/v2/core/artifact.py +31 -18
  35. zenml/models/v2/core/artifact_version.py +42 -25
  36. zenml/models/v2/core/component.py +22 -33
  37. zenml/models/v2/core/device.py +3 -2
  38. zenml/models/v2/core/event_source.py +2 -2
  39. zenml/models/v2/core/flavor.py +19 -47
  40. zenml/models/v2/core/logs.py +1 -2
  41. zenml/models/v2/core/model.py +7 -4
  42. zenml/models/v2/core/model_version.py +36 -27
  43. zenml/models/v2/core/pipeline.py +1 -1
  44. zenml/models/v2/core/pipeline_run.py +5 -13
  45. zenml/models/v2/core/run_template.py +1 -2
  46. zenml/models/v2/core/schedule.py +0 -9
  47. zenml/models/v2/core/secret.py +93 -127
  48. zenml/models/v2/core/server_settings.py +2 -2
  49. zenml/models/v2/core/service.py +43 -12
  50. zenml/models/v2/core/service_connector.py +14 -16
  51. zenml/models/v2/core/stack.py +24 -26
  52. zenml/models/v2/core/step_run.py +3 -15
  53. zenml/models/v2/core/tag.py +41 -15
  54. zenml/models/v2/core/user.py +19 -2
  55. zenml/models/v2/misc/statistics.py +45 -0
  56. zenml/models/v2/misc/tag.py +27 -0
  57. zenml/orchestrators/cache_utils.py +1 -1
  58. zenml/orchestrators/input_utils.py +1 -0
  59. zenml/orchestrators/step_launcher.py +0 -1
  60. zenml/orchestrators/step_run_utils.py +0 -2
  61. zenml/orchestrators/step_runner.py +10 -1
  62. zenml/pipelines/build_utils.py +0 -2
  63. zenml/pipelines/pipeline_decorator.py +3 -2
  64. zenml/pipelines/pipeline_definition.py +4 -5
  65. zenml/pipelines/run_utils.py +3 -3
  66. zenml/service_connectors/service_connector.py +0 -7
  67. zenml/service_connectors/service_connector_utils.py +0 -1
  68. zenml/stack/authentication_mixin.py +1 -1
  69. zenml/stack/flavor.py +3 -14
  70. zenml/stack/stack_component.py +1 -5
  71. zenml/steps/step_context.py +19 -0
  72. zenml/utils/string_utils.py +1 -1
  73. zenml/utils/tag_utils.py +642 -0
  74. zenml/zen_server/cloud_utils.py +21 -0
  75. zenml/zen_server/exceptions.py +0 -6
  76. zenml/zen_server/rbac/endpoint_utils.py +134 -46
  77. zenml/zen_server/rbac/models.py +65 -3
  78. zenml/zen_server/rbac/rbac_interface.py +9 -0
  79. zenml/zen_server/rbac/rbac_sql_zen_store.py +15 -7
  80. zenml/zen_server/rbac/utils.py +156 -29
  81. zenml/zen_server/rbac/zenml_cloud_rbac.py +43 -11
  82. zenml/zen_server/routers/actions_endpoints.py +3 -5
  83. zenml/zen_server/routers/artifact_endpoint.py +0 -5
  84. zenml/zen_server/routers/artifact_version_endpoints.py +15 -9
  85. zenml/zen_server/routers/auth_endpoints.py +22 -7
  86. zenml/zen_server/routers/code_repositories_endpoints.py +56 -3
  87. zenml/zen_server/routers/devices_endpoints.py +0 -4
  88. zenml/zen_server/routers/event_source_endpoints.py +0 -5
  89. zenml/zen_server/routers/flavors_endpoints.py +0 -5
  90. zenml/zen_server/routers/logs_endpoints.py +0 -1
  91. zenml/zen_server/routers/model_versions_endpoints.py +102 -23
  92. zenml/zen_server/routers/models_endpoints.py +51 -68
  93. zenml/zen_server/routers/pipeline_builds_endpoints.py +58 -4
  94. zenml/zen_server/routers/pipeline_deployments_endpoints.py +58 -4
  95. zenml/zen_server/routers/pipelines_endpoints.py +73 -4
  96. zenml/zen_server/routers/plugin_endpoints.py +0 -1
  97. zenml/zen_server/routers/run_metadata_endpoints.py +99 -0
  98. zenml/zen_server/routers/run_templates_endpoints.py +66 -3
  99. zenml/zen_server/routers/runs_endpoints.py +60 -8
  100. zenml/zen_server/routers/schedule_endpoints.py +69 -6
  101. zenml/zen_server/routers/secrets_endpoints.py +40 -4
  102. zenml/zen_server/routers/server_endpoints.py +53 -1
  103. zenml/zen_server/routers/service_accounts_endpoints.py +14 -15
  104. zenml/zen_server/routers/service_connectors_endpoints.py +96 -14
  105. zenml/zen_server/routers/service_endpoints.py +20 -7
  106. zenml/zen_server/routers/stack_components_endpoints.py +68 -7
  107. zenml/zen_server/routers/stacks_endpoints.py +98 -7
  108. zenml/zen_server/routers/steps_endpoints.py +17 -11
  109. zenml/zen_server/routers/tag_resource_endpoints.py +115 -0
  110. zenml/zen_server/routers/tags_endpoints.py +6 -17
  111. zenml/zen_server/routers/triggers_endpoints.py +5 -8
  112. zenml/zen_server/routers/users_endpoints.py +47 -12
  113. zenml/zen_server/routers/workspaces_endpoints.py +56 -1285
  114. zenml/zen_server/template_execution/utils.py +5 -4
  115. zenml/zen_server/utils.py +21 -0
  116. zenml/zen_server/zen_server_api.py +4 -0
  117. zenml/zen_stores/base_zen_store.py +29 -44
  118. zenml/zen_stores/migrations/versions/1cb6477f72d6_move_artifact_save_type.py +20 -10
  119. zenml/zen_stores/migrations/versions/1f9d1cd00b90_add_unique_name_constraints.py +231 -0
  120. zenml/zen_stores/migrations/versions/288f4fb6e112_make_tags_user_scoped.py +74 -0
  121. zenml/zen_stores/migrations/versions/2e695a26fe7a_add_user_default_workspace.py +45 -0
  122. zenml/zen_stores/migrations/versions/3b1776345020_remove_workspace_from_globals.py +81 -0
  123. zenml/zen_stores/migrations/versions/41b28cae31ce_make_artifacts_workspace_scoped.py +136 -0
  124. zenml/zen_stores/migrations/versions/9e7bf0970266_adding_exclusive_attribute_to_tags.py +47 -0
  125. zenml/zen_stores/migrations/versions/b557b2871693_update_step_run_input_types.py +8 -4
  126. zenml/zen_stores/migrations/versions/cc269488e5a9_separate_run_metadata.py +12 -6
  127. zenml/zen_stores/migrations/versions/f1d723fd723b_add_secret_private_attr.py +61 -0
  128. zenml/zen_stores/migrations/versions/f76a368a25a5_add_stack_description.py +35 -0
  129. zenml/zen_stores/rest_zen_store.py +172 -171
  130. zenml/zen_stores/schemas/action_schemas.py +8 -1
  131. zenml/zen_stores/schemas/api_key_schemas.py +8 -1
  132. zenml/zen_stores/schemas/artifact_schemas.py +28 -1
  133. zenml/zen_stores/schemas/code_repository_schemas.py +8 -1
  134. zenml/zen_stores/schemas/component_schemas.py +9 -14
  135. zenml/zen_stores/schemas/event_source_schemas.py +8 -1
  136. zenml/zen_stores/schemas/flavor_schemas.py +14 -20
  137. zenml/zen_stores/schemas/model_schemas.py +3 -0
  138. zenml/zen_stores/schemas/pipeline_deployment_schemas.py +3 -1
  139. zenml/zen_stores/schemas/pipeline_run_schemas.py +0 -3
  140. zenml/zen_stores/schemas/run_template_schemas.py +8 -4
  141. zenml/zen_stores/schemas/schedule_schema.py +9 -14
  142. zenml/zen_stores/schemas/secret_schemas.py +15 -25
  143. zenml/zen_stores/schemas/service_connector_schemas.py +8 -17
  144. zenml/zen_stores/schemas/service_schemas.py +0 -1
  145. zenml/zen_stores/schemas/stack_schemas.py +12 -15
  146. zenml/zen_stores/schemas/step_run_schemas.py +7 -8
  147. zenml/zen_stores/schemas/tag_schemas.py +30 -2
  148. zenml/zen_stores/schemas/trigger_schemas.py +8 -1
  149. zenml/zen_stores/schemas/user_schemas.py +24 -2
  150. zenml/zen_stores/schemas/utils.py +16 -0
  151. zenml/zen_stores/schemas/workspace_schemas.py +7 -25
  152. zenml/zen_stores/secrets_stores/service_connector_secrets_store.py +0 -3
  153. zenml/zen_stores/sql_zen_store.py +2905 -2280
  154. zenml/zen_stores/template_utils.py +1 -1
  155. zenml/zen_stores/zen_store_interface.py +82 -58
  156. {zenml_nightly-0.75.0.dev20250312.dist-info → zenml_nightly-0.75.0.dev20250313.dist-info}/METADATA +1 -1
  157. {zenml_nightly-0.75.0.dev20250312.dist-info → zenml_nightly-0.75.0.dev20250313.dist-info}/RECORD +160 -147
  158. {zenml_nightly-0.75.0.dev20250312.dist-info → zenml_nightly-0.75.0.dev20250313.dist-info}/LICENSE +0 -0
  159. {zenml_nightly-0.75.0.dev20250312.dist-info → zenml_nightly-0.75.0.dev20250313.dist-info}/WHEEL +0 -0
  160. {zenml_nightly-0.75.0.dev20250312.dist-info → zenml_nightly-0.75.0.dev20250313.dist-info}/entry_points.txt +0 -0
@@ -397,8 +397,13 @@ class GlobalConfiguration(BaseModel, metaclass=GlobalConfigMetaClass):
397
397
  self.active_stack_id,
398
398
  config_name="global",
399
399
  )
400
- self.active_workspace_name = active_workspace.name
401
- self._active_workspace = active_workspace
400
+ if active_workspace:
401
+ self.active_workspace_name = active_workspace.name
402
+ self._active_workspace = active_workspace
403
+ else:
404
+ self.active_workspace_name = None
405
+ self._active_workspace = None
406
+
402
407
  self.set_active_stack(active_stack)
403
408
 
404
409
  @property
@@ -763,10 +768,18 @@ class GlobalConfiguration(BaseModel, metaclass=GlobalConfigMetaClass):
763
768
 
764
769
  Returns:
765
770
  The name of the active workspace.
771
+
772
+ Raises:
773
+ RuntimeError: If the active workspace is not set.
766
774
  """
767
775
  if self.active_workspace_name is None:
768
776
  _ = self.zen_store
769
- assert self.active_workspace_name is not None
777
+ if self.active_workspace_name is None:
778
+ raise RuntimeError(
779
+ "No workspace is currently set as active. Please set the "
780
+ "active workspace using the `zenml workspace set` CLI "
781
+ "command."
782
+ )
770
783
 
771
784
  return self.active_workspace_name
772
785
 
@@ -14,7 +14,7 @@
14
14
  """Pipeline configuration classes."""
15
15
 
16
16
  from datetime import datetime
17
- from typing import TYPE_CHECKING, Any, Dict, List, Optional
17
+ from typing import TYPE_CHECKING, Any, Dict, List, Optional, Union
18
18
 
19
19
  from pydantic import SerializeAsAny, field_validator
20
20
 
@@ -23,6 +23,7 @@ from zenml.config.retry_config import StepRetryConfig
23
23
  from zenml.config.source import SourceWithValidator
24
24
  from zenml.config.strict_base_model import StrictBaseModel
25
25
  from zenml.model.model import Model
26
+ from zenml.utils.tag_utils import Tag
26
27
  from zenml.utils.time_utils import utc_now
27
28
 
28
29
  if TYPE_CHECKING:
@@ -41,7 +42,7 @@ class PipelineConfigurationUpdate(StrictBaseModel):
41
42
  enable_artifact_visualization: Optional[bool] = None
42
43
  enable_step_logs: Optional[bool] = None
43
44
  settings: Dict[str, SerializeAsAny[BaseSettings]] = {}
44
- tags: Optional[List[str]] = None
45
+ tags: Optional[List[Union[str, "Tag"]]] = None
45
46
  extra: Dict[str, Any] = {}
46
47
  failure_hook_source: Optional[SourceWithValidator] = None
47
48
  success_hook_source: Optional[SourceWithValidator] = None
@@ -27,6 +27,7 @@ from zenml.config.strict_base_model import StrictBaseModel
27
27
  from zenml.model.model import Model
28
28
  from zenml.models import PipelineBuildBase
29
29
  from zenml.utils import pydantic_utils
30
+ from zenml.utils.tag_utils import Tag
30
31
 
31
32
 
32
33
  class PipelineRunConfiguration(
@@ -45,7 +46,7 @@ class PipelineRunConfiguration(
45
46
  )
46
47
  steps: Dict[str, StepConfigurationUpdate] = {}
47
48
  settings: Dict[str, SerializeAsAny[BaseSettings]] = {}
48
- tags: Optional[List[str]] = None
49
+ tags: Optional[List[Union[str, Tag]]] = None
49
50
  extra: Dict[str, Any] = {}
50
51
  model: Optional[Model] = None
51
52
  parameters: Optional[Dict[str, Any]] = None
@@ -115,7 +115,7 @@ class SecretReferenceMixin(BaseModel):
115
115
 
116
116
  # Try to resolve the secret using the secret store
117
117
  try:
118
- secret = Client().get_secret_by_name_and_scope(
118
+ secret = Client().get_secret_by_name_and_private_status(
119
119
  name=secret_ref.name,
120
120
  )
121
121
  except (KeyError, NotImplementedError):
zenml/constants.py CHANGED
@@ -163,7 +163,6 @@ ENV_ZENML_PAGINATION_DEFAULT_LIMIT = "ZENML_PAGINATION_DEFAULT_LIMIT"
163
163
  ENV_ZENML_DISABLE_CLIENT_SERVER_MISMATCH_WARNING = (
164
164
  "ZENML_DISABLE_CLIENT_SERVER_MISMATCH_WARNING"
165
165
  )
166
- ENV_ZENML_DISABLE_WORKSPACE_WARNINGS = "ZENML_DISABLE_WORKSPACE_WARNINGS"
167
166
  ENV_ZENML_SKIP_IMAGE_BUILDER_DEFAULT = "ZENML_SKIP_IMAGE_BUILDER_DEFAULT"
168
167
  ENV_ZENML_SKIP_STACK_VALIDATION = "ZENML_SKIP_STACK_VALIDATION"
169
168
  ENV_ZENML_SERVER = "ZENML_SERVER"
@@ -331,7 +330,6 @@ DEFAULT_ZENML_SERVER_REPORT_USER_ACTIVITY_TO_DB_SECONDS = 30
331
330
  DEFAULT_ZENML_SERVER_MAX_REQUEST_BODY_SIZE_IN_BYTES = 256 * 1024 * 1024
332
331
 
333
332
  DEFAULT_REPORTABLE_RESOURCES = ["pipeline", "pipeline_run", "model"]
334
- REQUIRES_CUSTOM_RESOURCE_REPORTING = ["pipeline", "pipeline_run"]
335
333
 
336
334
  # API Endpoint paths:
337
335
  ACTIVATE = "/activate"
@@ -358,7 +356,6 @@ EMAIL_ANALYTICS = "/email-opt-in"
358
356
  EVENT_FLAVORS = "/event-flavors"
359
357
  EVENT_SOURCES = "/event-sources"
360
358
  FLAVORS = "/flavors"
361
- GET_OR_CREATE = "/get-or-create"
362
359
  HEALTH = "/health"
363
360
  INFO = "/info"
364
361
  LOAD_INFO = "/load-info"
@@ -402,6 +399,7 @@ STATUS = "/status"
402
399
  STEP_CONFIGURATION = "/step-configuration"
403
400
  STEPS = "/steps"
404
401
  TAGS = "/tags"
402
+ TAG_RESOURCES = "/tag_resources"
405
403
  TRIGGERS = "/triggers"
406
404
  TRIGGER_EXECUTIONS = "/trigger_executions"
407
405
  ONBOARDING_STATE = "/onboarding_state"
zenml/enums.py CHANGED
@@ -135,13 +135,6 @@ class StackComponentType(StrEnum):
135
135
  return f"{self.value}s"
136
136
 
137
137
 
138
- class SecretScope(StrEnum):
139
- """Enum for the scope of a secret."""
140
-
141
- WORKSPACE = "workspace"
142
- USER = "user"
143
-
144
-
145
138
  class StoreType(StrEnum):
146
139
  """Zen Store Backend Types."""
147
140
 
@@ -126,7 +126,9 @@ class InternalEventHub(BaseEventHub):
126
126
  triggers: List[TriggerResponse] = depaginate(
127
127
  self.zen_store.list_triggers,
128
128
  trigger_filter_model=TriggerFilter(
129
- event_source_id=event_source.id, is_active=True
129
+ workspace=event_source.workspace.id,
130
+ event_source_id=event_source.id,
131
+ is_active=True,
130
132
  ),
131
133
  hydrate=True,
132
134
  )
zenml/exceptions.py CHANGED
@@ -172,34 +172,10 @@ class EntityCreationError(ZenMLBaseException, RuntimeError):
172
172
  """Raised when failing to create an entity."""
173
173
 
174
174
 
175
- class ActionExistsError(EntityExistsError):
176
- """Raised when registering an action with a name that already exists."""
177
-
178
-
179
- class TriggerExistsError(EntityExistsError):
180
- """Raised when registering a trigger with name that already exists."""
181
-
182
-
183
175
  class WebhookInactiveError(ZenMLBaseException):
184
176
  """Raised when source is inactive."""
185
177
 
186
178
 
187
- class StackExistsError(EntityExistsError):
188
- """Raised when trying to register a stack with name that already exists."""
189
-
190
-
191
- class StackComponentExistsError(EntityExistsError):
192
- """Raised when trying to register a stack component with existing name."""
193
-
194
-
195
- class EventSourceExistsError(EntityExistsError):
196
- """Raised when trying to register an event source with existing name."""
197
-
198
-
199
- class SecretExistsError(EntityExistsError):
200
- """Raised when trying to register a secret with existing name."""
201
-
202
-
203
179
  class StackValidationError(ZenMLBaseException):
204
180
  """Raised when a stack configuration is not valid."""
205
181
 
@@ -870,9 +870,11 @@ class SagemakerOrchestrator(ContainerizedOrchestrator):
870
870
  the URL to the dashboard view in SageMaker.
871
871
  """
872
872
  try:
873
- region_name, pipeline_name, execution_id = (
874
- dissect_pipeline_execution_arn(execution_arn)
875
- )
873
+ (
874
+ region_name,
875
+ pipeline_name,
876
+ execution_id,
877
+ ) = dissect_pipeline_execution_arn(execution_arn)
876
878
 
877
879
  # Get the Sagemaker session
878
880
  session = self._get_sagemaker_session()
@@ -18,7 +18,6 @@ from uuid import UUID
18
18
 
19
19
  from pydantic import BaseModel, ConfigDict, Field
20
20
 
21
- from zenml.enums import SecretScope
22
21
  from zenml.event_sources.base_event import (
23
22
  BaseEvent,
24
23
  )
@@ -335,9 +334,7 @@ class BitbucketWebhookEventSourceHandler(BaseWebhookEventSourceHandler):
335
334
  webhook_secret = SecretRequest(
336
335
  name=f"event_source-{str(event_source.id)}-{random_str(4)}".lower(),
337
336
  values={"webhook_secret": secret_key_value},
338
- workspace=event_source.workspace.id,
339
- user=event_source.user.id,
340
- scope=SecretScope.WORKSPACE,
337
+ private=False,
341
338
  )
342
339
  secret = self.zen_store.create_secret(webhook_secret)
343
340
 
@@ -19,7 +19,6 @@ from uuid import UUID
19
19
 
20
20
  from pydantic import BaseModel, ConfigDict, Field
21
21
 
22
- from zenml.enums import SecretScope
23
22
  from zenml.event_sources.base_event import (
24
23
  BaseEvent,
25
24
  )
@@ -361,9 +360,7 @@ class GithubWebhookEventSourceHandler(BaseWebhookEventSourceHandler):
361
360
  webhook_secret = SecretRequest(
362
361
  name=f"event_source-{str(event_source.id)}-{random_str(4)}".lower(),
363
362
  values={"webhook_secret": secret_key_value},
364
- workspace=event_source.workspace.id,
365
- user=event_source.user.id,
366
- scope=SecretScope.WORKSPACE,
363
+ private=False,
367
364
  )
368
365
  secret = self.zen_store.create_secret(webhook_secret)
369
366
 
@@ -92,7 +92,7 @@ def mlflow_register_model_step(
92
92
  pipeline_name = step_context.pipeline.name
93
93
  current_run_name = step_context.pipeline_run.name
94
94
  pipeline_run_uuid = str(step_context.pipeline_run.id)
95
- zenml_workspace = str(model_registry.workspace)
95
+ zenml_workspace = str(step_context.pipeline.workspace.name)
96
96
 
97
97
  # Get MLflow run ID either from params or from experiment tracker using
98
98
  # pipeline name and run name
@@ -245,7 +245,7 @@ class SeldonModelDeployer(BaseModelDeployer):
245
245
  )
246
246
 
247
247
  try:
248
- zenml_secret = Client().get_secret_by_name_and_scope(
248
+ zenml_secret = Client().get_secret_by_name_and_private_status(
249
249
  name=self.config.secret,
250
250
  )
251
251
  except KeyError as e:
@@ -23,7 +23,7 @@ from typing import (
23
23
  cast,
24
24
  )
25
25
 
26
- from pydantic import field_validator, BaseModel
26
+ from pydantic import BaseModel, field_validator
27
27
 
28
28
  from zenml.config.base_settings import BaseSettings
29
29
  from zenml.experiment_trackers.base_experiment_tracker import (
@@ -69,8 +69,8 @@ class WandbExperimentTrackerSettings(BaseSettings):
69
69
  import wandb
70
70
 
71
71
  if isinstance(value, wandb.Settings):
72
- # Depending on the wandb version, either `model_dump`,
73
- # `make_static` or `to_dict` is available to convert the settings
72
+ # Depending on the wandb version, either `model_dump`,
73
+ # `make_static` or `to_dict` is available to convert the settings
74
74
  # to a dictionary
75
75
  if isinstance(value, BaseModel):
76
76
  return value.model_dump()
zenml/model/model.py CHANGED
@@ -532,9 +532,11 @@ class Model(BaseModel):
532
532
  )
533
533
  model = mv.model
534
534
  else:
535
+ # TODO: This whole thing needs to be refactored as a get_or_create
536
+ # REST API call.
535
537
  try:
536
- model = zenml_client.zen_store.get_model(
537
- model_name_or_id=self.name
538
+ model = zenml_client.get_model(
539
+ model_name_or_id=self.name, bypass_lazy_loader=True
538
540
  )
539
541
  except KeyError:
540
542
  model_request = ModelRequest(
@@ -546,7 +548,6 @@ class Model(BaseModel):
546
548
  limitations=self.limitations,
547
549
  trade_offs=self.trade_offs,
548
550
  ethics=self.ethics,
549
- user=zenml_client.active_user.id,
550
551
  workspace=zenml_client.active_workspace.id,
551
552
  save_models_to_registry=self.save_models_to_registry,
552
553
  )
@@ -559,8 +560,8 @@ class Model(BaseModel):
559
560
  f"New model `{self.name}` was created implicitly."
560
561
  )
561
562
  except EntityExistsError:
562
- model = zenml_client.zen_store.get_model(
563
- model_name_or_id=self.name
563
+ model = zenml_client.get_model(
564
+ model_name_or_id=self.name, bypass_lazy_loader=True
564
565
  )
565
566
 
566
567
  self._model_id = model.id
@@ -686,7 +687,7 @@ class Model(BaseModel):
686
687
  "model version in given stage exists. It might be missing, if "
687
688
  "the pipeline promoting model version to this stage failed,"
688
689
  " as an example. You can explore model versions using "
689
- f"`zenml model version list -n {self.name}` CLI command."
690
+ f"`zenml model version list {self.name}` CLI command."
690
691
  )
691
692
  if str(self.version).isnumeric():
692
693
  raise RuntimeError(
@@ -696,12 +697,11 @@ class Model(BaseModel):
696
697
  "model version with given number exists. It might be missing, if "
697
698
  "the pipeline creating model version failed,"
698
699
  " as an example. You can explore model versions using "
699
- f"`zenml model version list -n {self.name}` CLI command."
700
+ f"`zenml model version list {self.name}` CLI command."
700
701
  )
701
702
 
702
703
  client = Client()
703
704
  model_version_request = ModelVersionRequest(
704
- user=client.active_user.id,
705
705
  workspace=client.active_workspace.id,
706
706
  name=str(self.version) if self.version else None,
707
707
  description=self.description,
zenml/models/__init__.py CHANGED
@@ -133,7 +133,8 @@ from zenml.models.v2.core.component import (
133
133
  ComponentResponse,
134
134
  ComponentResponseBody,
135
135
  ComponentResponseMetadata,
136
- ComponentResponseResources
136
+ ComponentResponseResources,
137
+ DefaultComponentRequest,
137
138
  )
138
139
  from zenml.models.v2.core.event_source_flavor import (
139
140
  EventSourceFlavorResponse,
@@ -275,6 +276,7 @@ from zenml.models.v2.core.service_connector import (
275
276
  ServiceConnectorResponseMetadata,
276
277
  )
277
278
  from zenml.models.v2.core.stack import (
279
+ DefaultStackRequest,
278
280
  StackRequest,
279
281
  StackUpdate,
280
282
  StackFilter,
@@ -282,6 +284,10 @@ from zenml.models.v2.core.stack import (
282
284
  StackResponseBody,
283
285
  StackResponseMetadata,
284
286
  )
287
+ from zenml.models.v2.misc.statistics import (
288
+ WorkspaceStatistics,
289
+ ServerStatistics,
290
+ )
285
291
  from zenml.models.v2.core.step_run import (
286
292
  StepRunRequest,
287
293
  StepRunUpdate,
@@ -295,6 +301,7 @@ from zenml.models.v2.core.tag import (
295
301
  TagFilter,
296
302
  TagResponse,
297
303
  TagResponseBody,
304
+ TagResponseMetadata,
298
305
  TagRequest,
299
306
  TagUpdate,
300
307
  )
@@ -395,6 +402,9 @@ from zenml.models.v2.misc.stack_deployment import (
395
402
  StackDeploymentConfig,
396
403
  StackDeploymentInfo,
397
404
  )
405
+ from zenml.models.v2.misc.tag import (
406
+ TagResource,
407
+ )
398
408
  from zenml.models.v2.misc.info_models import (
399
409
  ComponentInfo,
400
410
  ServiceConnectorInfo,
@@ -440,6 +450,7 @@ PipelineDeploymentRequest.model_rebuild()
440
450
  PipelineDeploymentResponseBody.model_rebuild()
441
451
  PipelineDeploymentResponseMetadata.model_rebuild()
442
452
  PipelineDeploymentResponseResources.model_rebuild()
453
+ PipelineRunRequest.model_rebuild()
443
454
  PipelineRunResponseBody.model_rebuild()
444
455
  PipelineRunResponseMetadata.model_rebuild()
445
456
  PipelineRunResponseResources.model_rebuild()
@@ -562,6 +573,8 @@ __all__ = [
562
573
  "ComponentResponseBody",
563
574
  "ComponentResponseMetadata",
564
575
  "ComponentResponseResources",
576
+ "DefaultComponentRequest",
577
+ "DefaultStackRequest",
565
578
  "EventSourceFlavorResponse",
566
579
  "EventSourceFlavorResponseBody",
567
580
  "EventSourceFlavorResponseMetadata",
@@ -695,6 +708,7 @@ __all__ = [
695
708
  "TagResourceRequest",
696
709
  "TagResponse",
697
710
  "TagResponseBody",
711
+ "TagResponseMetadata",
698
712
  "TagRequest",
699
713
  "TagUpdate",
700
714
  "TriggerResponse",
@@ -745,6 +759,7 @@ __all__ = [
745
759
  "ServerModel",
746
760
  "ServerDatabaseType",
747
761
  "ServerDeploymentType",
762
+ "ServerStatistics",
748
763
  "StackDeploymentConfig",
749
764
  "StackDeploymentInfo",
750
765
  "OAuthDeviceAuthorizationRequest",
@@ -757,7 +772,9 @@ __all__ = [
757
772
  "ComponentInfo",
758
773
  "ServiceConnectorInfo",
759
774
  "ServiceConnectorResourcesInfo",
775
+ "TagResource",
760
776
  "ResourcesInfo",
761
777
  "RunMetadataEntry",
762
778
  "RunMetadataResource",
779
+ "WorkspaceStatistics",
763
780
  ]
@@ -65,11 +65,6 @@ class BaseUpdate(BaseZenModel):
65
65
  Used as a base class for all update models.
66
66
  """
67
67
 
68
- model_config = ConfigDict(
69
- # Ignore extras on all update models.
70
- extra="ignore",
71
- )
72
-
73
68
 
74
69
  # -------------------- Response Model --------------------
75
70
 
@@ -716,7 +716,7 @@ class BaseFilter(BaseModel):
716
716
  value: The filter value.
717
717
  table: The table to filter.
718
718
  additional_columns: Additional table columns that should also
719
- filtered for the given value as part of the or condition.
719
+ filter for the given value as part of the or condition.
720
720
 
721
721
  Returns:
722
722
  The query conditions.