zenml-nightly 0.68.1.dev20241106__py3-none-any.whl → 0.68.1.dev20241107__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 CHANGED
@@ -1 +1 @@
1
- 0.68.1.dev20241106
1
+ 0.68.1.dev20241107
zenml/artifacts/utils.py CHANGED
@@ -82,6 +82,114 @@ logger = get_logger(__name__)
82
82
  # ----------
83
83
 
84
84
 
85
+ def _save_artifact_visualizations(
86
+ data: Any, materializer: "BaseMaterializer"
87
+ ) -> List[ArtifactVisualizationRequest]:
88
+ """Save artifact visualizations.
89
+
90
+ Args:
91
+ data: The data for which to save the visualizations.
92
+ materializer: The materializer that should be used to generate and
93
+ save the visualizations.
94
+
95
+ Returns:
96
+ List of requests for the saved visualizations.
97
+ """
98
+ try:
99
+ visualizations = materializer.save_visualizations(data)
100
+ except Exception as e:
101
+ logger.warning("Failed to save artifact visualizations: %s", e)
102
+ return []
103
+
104
+ return [
105
+ ArtifactVisualizationRequest(
106
+ type=type,
107
+ uri=uri,
108
+ )
109
+ for uri, type in visualizations.items()
110
+ ]
111
+
112
+
113
+ def _store_artifact_data_and_prepare_request(
114
+ data: Any,
115
+ name: str,
116
+ uri: str,
117
+ materializer_class: Type["BaseMaterializer"],
118
+ version: Optional[Union[int, str]] = None,
119
+ tags: Optional[List[str]] = None,
120
+ store_metadata: bool = True,
121
+ store_visualizations: bool = True,
122
+ has_custom_name: bool = True,
123
+ metadata: Optional[Dict[str, "MetadataType"]] = None,
124
+ ) -> ArtifactVersionRequest:
125
+ """Store artifact data and prepare a request to the server.
126
+
127
+ Args:
128
+ data: The artifact data.
129
+ name: The artifact name.
130
+ uri: The artifact URI.
131
+ materializer_class: The materializer class to use for storing the
132
+ artifact data.
133
+ version: The artifact version.
134
+ tags: Tags for the artifact version.
135
+ store_metadata: Whether to store metadata for the artifact version.
136
+ store_visualizations: Whether to store visualizations for the artifact
137
+ version.
138
+ has_custom_name: Whether the artifact has a custom name.
139
+ metadata: Metadata to store for the artifact version. This will be
140
+ ignored if `store_metadata` is set to `False`.
141
+
142
+ Returns:
143
+ Artifact version request for the artifact data that was stored.
144
+ """
145
+ artifact_store = Client().active_stack.artifact_store
146
+ artifact_store.makedirs(uri)
147
+
148
+ materializer = materializer_class(uri=uri, artifact_store=artifact_store)
149
+ materializer.uri = materializer.uri.replace("\\", "/")
150
+
151
+ data_type = type(data)
152
+ materializer.validate_save_type_compatibility(data_type)
153
+ materializer.save(data)
154
+
155
+ visualizations = (
156
+ _save_artifact_visualizations(data=data, materializer=materializer)
157
+ if store_visualizations
158
+ else None
159
+ )
160
+
161
+ combined_metadata: Dict[str, "MetadataType"] = {}
162
+ if store_metadata:
163
+ try:
164
+ combined_metadata = materializer.extract_full_metadata(data)
165
+ except Exception as e:
166
+ logger.warning("Failed to extract materializer metadata: %s", e)
167
+
168
+ # Update with user metadata to potentially overwrite values coming from
169
+ # the materializer
170
+ combined_metadata.update(metadata or {})
171
+
172
+ artifact_version_request = ArtifactVersionRequest(
173
+ artifact_name=name,
174
+ version=version,
175
+ tags=tags,
176
+ type=materializer.ASSOCIATED_ARTIFACT_TYPE,
177
+ uri=materializer.uri,
178
+ materializer=source_utils.resolve(materializer.__class__),
179
+ data_type=source_utils.resolve(data_type),
180
+ user=Client().active_user.id,
181
+ workspace=Client().active_workspace.id,
182
+ artifact_store_id=artifact_store.id,
183
+ visualizations=visualizations,
184
+ has_custom_name=has_custom_name,
185
+ metadata=validate_metadata(combined_metadata)
186
+ if combined_metadata
187
+ else None,
188
+ )
189
+
190
+ return artifact_version_request
191
+
192
+
85
193
  def save_artifact(
86
194
  data: Any,
87
195
  name: str,
@@ -89,13 +197,14 @@ def save_artifact(
89
197
  tags: Optional[List[str]] = None,
90
198
  extract_metadata: bool = True,
91
199
  include_visualizations: bool = True,
92
- has_custom_name: bool = True,
93
200
  user_metadata: Optional[Dict[str, "MetadataType"]] = None,
94
201
  materializer: Optional["MaterializerClassOrSource"] = None,
95
202
  uri: Optional[str] = None,
96
203
  is_model_artifact: bool = False,
97
204
  is_deployment_artifact: bool = False,
205
+ # TODO: remove these once external artifact does not use this function anymore
98
206
  manual_save: bool = True,
207
+ has_custom_name: bool = True,
99
208
  ) -> "ArtifactVersionResponse":
100
209
  """Upload and publish an artifact.
101
210
 
@@ -107,8 +216,6 @@ def save_artifact(
107
216
  tags: Tags to associate with the artifact.
108
217
  extract_metadata: If artifact metadata should be extracted and returned.
109
218
  include_visualizations: If artifact visualizations should be generated.
110
- has_custom_name: If the artifact name is custom and should be listed in
111
- the dashboard "Artifacts" tab.
112
219
  user_metadata: User-provided metadata to store with the artifact.
113
220
  materializer: The materializer to use for saving the artifact to the
114
221
  artifact store.
@@ -119,6 +226,8 @@ def save_artifact(
119
226
  is_deployment_artifact: If the artifact is a deployment artifact.
120
227
  manual_save: If this function is called manually and should therefore
121
228
  link the artifact to the current step run.
229
+ has_custom_name: If the artifact name is custom and should be listed in
230
+ the dashboard "Artifacts" tab.
122
231
 
123
232
  Returns:
124
233
  The saved artifact response.
@@ -129,11 +238,8 @@ def save_artifact(
129
238
  from zenml.utils import source_utils
130
239
 
131
240
  client = Client()
132
-
133
- # Get the current artifact store
134
241
  artifact_store = client.active_stack.artifact_store
135
242
 
136
- # Build and check the artifact URI
137
243
  if not uri:
138
244
  uri = os.path.join("custom_artifacts", name, str(uuid4()))
139
245
  if not uri.startswith(artifact_store.path):
@@ -147,9 +253,7 @@ def save_artifact(
147
253
  uri=uri,
148
254
  name=name,
149
255
  )
150
- artifact_store.makedirs(uri)
151
256
 
152
- # Find and initialize the right materializer class
153
257
  if isinstance(materializer, type):
154
258
  materializer_class = materializer
155
259
  elif materializer:
@@ -158,60 +262,18 @@ def save_artifact(
158
262
  )
159
263
  else:
160
264
  materializer_class = materializer_registry[type(data)]
161
- materializer_object = materializer_class(uri)
162
-
163
- # Force URIs to have forward slashes
164
- materializer_object.uri = materializer_object.uri.replace("\\", "/")
165
-
166
- # Save the artifact to the artifact store
167
- data_type = type(data)
168
- materializer_object.validate_save_type_compatibility(data_type)
169
- materializer_object.save(data)
170
265
 
171
- # Save visualizations of the artifact
172
- visualizations: List[ArtifactVisualizationRequest] = []
173
- if include_visualizations:
174
- try:
175
- vis_data = materializer_object.save_visualizations(data)
176
- for vis_uri, vis_type in vis_data.items():
177
- vis_model = ArtifactVisualizationRequest(
178
- type=vis_type,
179
- uri=vis_uri,
180
- )
181
- visualizations.append(vis_model)
182
- except Exception as e:
183
- logger.warning(
184
- f"Failed to save visualization for output artifact '{name}': "
185
- f"{e}"
186
- )
187
-
188
- # Save metadata of the artifact
189
- artifact_metadata: Dict[str, "MetadataType"] = {}
190
- if extract_metadata:
191
- try:
192
- artifact_metadata = materializer_object.extract_full_metadata(data)
193
- artifact_metadata.update(user_metadata or {})
194
- except Exception as e:
195
- logger.warning(
196
- f"Failed to extract metadata for output artifact '{name}': {e}"
197
- )
198
-
199
- artifact_version_request = ArtifactVersionRequest(
200
- artifact_name=name,
266
+ artifact_version_request = _store_artifact_data_and_prepare_request(
267
+ data=data,
268
+ name=name,
269
+ uri=uri,
270
+ materializer_class=materializer_class,
201
271
  version=version,
202
272
  tags=tags,
203
- type=materializer_object.ASSOCIATED_ARTIFACT_TYPE,
204
- uri=materializer_object.uri,
205
- materializer=source_utils.resolve(materializer_object.__class__),
206
- data_type=source_utils.resolve(data_type),
207
- user=Client().active_user.id,
208
- workspace=Client().active_workspace.id,
209
- artifact_store_id=artifact_store.id,
210
- visualizations=visualizations,
273
+ store_metadata=extract_metadata,
274
+ store_visualizations=include_visualizations,
211
275
  has_custom_name=has_custom_name,
212
- metadata=validate_metadata(artifact_metadata)
213
- if artifact_metadata
214
- else None,
276
+ metadata=user_metadata,
215
277
  )
216
278
  artifact_version = client.zen_store.create_artifact_version(
217
279
  artifact_version=artifact_version_request
zenml/constants.py CHANGED
@@ -338,6 +338,7 @@ ARTIFACTS = "/artifacts"
338
338
  ARTIFACT_VERSIONS = "/artifact_versions"
339
339
  ARTIFACT_VISUALIZATIONS = "/artifact_visualizations"
340
340
  AUTH = "/auth"
341
+ BATCH = "/batch"
341
342
  CODE_REFERENCES = "/code_references"
342
343
  CODE_REPOSITORIES = "/code_repositories"
343
344
  COMPONENT_TYPES = "/component-types"
@@ -33,7 +33,7 @@ from zenml.stack import Flavor
33
33
 
34
34
  # Fix numba errors in Docker and suppress logs and deprecation warning spam
35
35
  try:
36
- from numba.core.errors import ( # type: ignore[import-not-found]
36
+ from numba.core.errors import (
37
37
  NumbaDeprecationWarning,
38
38
  NumbaPendingDeprecationWarning,
39
39
  )
@@ -13,6 +13,7 @@
13
13
  # permissions and limitations under the License.
14
14
  """Implementation of the vLLM Inference Server Service."""
15
15
 
16
+ import argparse
16
17
  import os
17
18
  from typing import Any, List, Optional, Union
18
19
 
@@ -137,15 +138,23 @@ class VLLMDeploymentService(LocalDaemonService, BaseDeploymentService):
137
138
  self.endpoint.prepare_for_start()
138
139
 
139
140
  import uvloop
140
- from vllm.entrypoints.openai.api_server import run_server
141
- from vllm.entrypoints.openai.cli_args import make_arg_parser
142
- from vllm.utils import FlexibleArgumentParser
141
+ from vllm.entrypoints.openai.api_server import (
142
+ run_server,
143
+ )
144
+ from vllm.entrypoints.openai.cli_args import (
145
+ make_arg_parser,
146
+ )
147
+ from vllm.utils import (
148
+ FlexibleArgumentParser,
149
+ )
143
150
 
144
151
  try:
145
- parser = make_arg_parser(FlexibleArgumentParser())
146
- args = parser.parse_args()
152
+ parser: argparse.ArgumentParser = make_arg_parser(
153
+ FlexibleArgumentParser()
154
+ )
155
+ args: argparse.Namespace = parser.parse_args()
147
156
  # Override port with the available port
148
- self.config.port = self.endpoint.status.port
157
+ self.config.port = self.endpoint.status.port or self.config.port
149
158
  # Update the arguments in place
150
159
  args.__dict__.update(self.config.model_dump())
151
160
  uvloop.run(run_server(args=args))
@@ -161,7 +170,7 @@ class VLLMDeploymentService(LocalDaemonService, BaseDeploymentService):
161
170
  """
162
171
  if not self.is_running:
163
172
  return None
164
- return self.endpoint.prediction_url_path
173
+ return self.endpoint.prediction_url
165
174
 
166
175
  def predict(self, data: "Any") -> "Any":
167
176
  """Make a prediction using the service.
@@ -28,7 +28,8 @@ from typing import (
28
28
  )
29
29
 
30
30
  from zenml.artifacts.unmaterialized_artifact import UnmaterializedArtifact
31
- from zenml.artifacts.utils import save_artifact
31
+ from zenml.artifacts.utils import _store_artifact_data_and_prepare_request
32
+ from zenml.client import Client
32
33
  from zenml.config.step_configurations import StepConfiguration
33
34
  from zenml.config.step_run_info import StepRunInfo
34
35
  from zenml.constants import (
@@ -534,7 +535,7 @@ class StepRunner:
534
535
  The IDs of the published output artifacts.
535
536
  """
536
537
  step_context = get_step_context()
537
- output_artifacts: Dict[str, "ArtifactVersionResponse"] = {}
538
+ artifact_requests = []
538
539
 
539
540
  for output_name, return_value in output_data.items():
540
541
  data_type = type(return_value)
@@ -595,22 +596,24 @@ class StepRunner:
595
596
  # Get full set of tags
596
597
  tags = step_context.get_output_tags(output_name)
597
598
 
598
- artifact = save_artifact(
599
+ artifact_request = _store_artifact_data_and_prepare_request(
599
600
  name=artifact_name,
600
601
  data=return_value,
601
- materializer=materializer_class,
602
+ materializer_class=materializer_class,
602
603
  uri=uri,
603
- extract_metadata=artifact_metadata_enabled,
604
- include_visualizations=artifact_visualization_enabled,
604
+ store_metadata=artifact_metadata_enabled,
605
+ store_visualizations=artifact_visualization_enabled,
605
606
  has_custom_name=has_custom_name,
606
607
  version=version,
607
608
  tags=tags,
608
- user_metadata=user_metadata,
609
- manual_save=False,
609
+ metadata=user_metadata,
610
610
  )
611
- output_artifacts[output_name] = artifact
611
+ artifact_requests.append(artifact_request)
612
612
 
613
- return output_artifacts
613
+ responses = Client().zen_store.batch_create_artifact_versions(
614
+ artifact_requests
615
+ )
616
+ return dict(zip(output_data.keys(), responses))
614
617
 
615
618
  def load_and_run_hook(
616
619
  self,
@@ -13,7 +13,7 @@
13
13
  # permissions and limitations under the License.
14
14
  """High-level helper functions to write endpoints with RBAC."""
15
15
 
16
- from typing import Any, Callable, TypeVar, Union
16
+ from typing import Any, Callable, List, TypeVar, Union
17
17
  from uuid import UUID
18
18
 
19
19
  from pydantic import BaseModel
@@ -96,6 +96,48 @@ def verify_permissions_and_create_entity(
96
96
  return created
97
97
 
98
98
 
99
+ def verify_permissions_and_batch_create_entity(
100
+ batch: List[AnyRequest],
101
+ resource_type: ResourceType,
102
+ create_method: Callable[[List[AnyRequest]], List[AnyResponse]],
103
+ ) -> List[AnyResponse]:
104
+ """Verify permissions and create a batch of entities if authorized.
105
+
106
+ Args:
107
+ batch: The batch to create.
108
+ resource_type: The resource type of the entities to create.
109
+ create_method: The method to create the entities.
110
+
111
+ Raises:
112
+ IllegalOperationError: If the request model has a different owner then
113
+ the currently authenticated user.
114
+ RuntimeError: If the resource type is usage-tracked.
115
+
116
+ Returns:
117
+ The created entities.
118
+ """
119
+ auth_context = get_auth_context()
120
+ assert auth_context
121
+
122
+ for request_model in batch:
123
+ if isinstance(request_model, UserScopedRequest):
124
+ if request_model.user != auth_context.user.id:
125
+ raise IllegalOperationError(
126
+ f"Not allowed to create resource '{resource_type}' for a "
127
+ "different user."
128
+ )
129
+
130
+ verify_permission(resource_type=resource_type, action=Action.CREATE)
131
+
132
+ if resource_type in REPORTABLE_RESOURCES:
133
+ raise RuntimeError(
134
+ "Batch requests are currently not possible with usage-tracked features."
135
+ )
136
+
137
+ created = create_method(batch)
138
+ return created
139
+
140
+
99
141
  def verify_permissions_and_get_entity(
100
142
  id: UUIDOrStr,
101
143
  get_method: Callable[[UUIDOrStr], AnyResponse],
@@ -13,12 +13,13 @@
13
13
  # permissions and limitations under the License.
14
14
  """Endpoint definitions for artifact versions."""
15
15
 
16
+ from typing import List
16
17
  from uuid import UUID
17
18
 
18
19
  from fastapi import APIRouter, Depends, Security
19
20
 
20
21
  from zenml.artifacts.utils import load_artifact_visualization
21
- from zenml.constants import API, ARTIFACT_VERSIONS, VERSION_1, VISUALIZE
22
+ from zenml.constants import API, ARTIFACT_VERSIONS, BATCH, VERSION_1, VISUALIZE
22
23
  from zenml.models import (
23
24
  ArtifactVersionFilter,
24
25
  ArtifactVersionRequest,
@@ -30,6 +31,7 @@ from zenml.models import (
30
31
  from zenml.zen_server.auth import AuthContext, authorize
31
32
  from zenml.zen_server.exceptions import error_response
32
33
  from zenml.zen_server.rbac.endpoint_utils import (
34
+ verify_permissions_and_batch_create_entity,
33
35
  verify_permissions_and_create_entity,
34
36
  verify_permissions_and_delete_entity,
35
37
  verify_permissions_and_get_entity,
@@ -118,6 +120,30 @@ def create_artifact_version(
118
120
  )
119
121
 
120
122
 
123
+ @artifact_version_router.post(
124
+ BATCH,
125
+ responses={401: error_response, 409: error_response, 422: error_response},
126
+ )
127
+ @handle_exceptions
128
+ def batch_create_artifact_version(
129
+ artifact_versions: List[ArtifactVersionRequest],
130
+ _: AuthContext = Security(authorize),
131
+ ) -> List[ArtifactVersionResponse]:
132
+ """Create a batch of artifact versions.
133
+
134
+ Args:
135
+ artifact_versions: The artifact versions to create.
136
+
137
+ Returns:
138
+ The created artifact versions.
139
+ """
140
+ return verify_permissions_and_batch_create_entity(
141
+ batch=artifact_versions,
142
+ resource_type=ResourceType.ARTIFACT_VERSION,
143
+ create_method=zen_store().batch_create_artifact_versions,
144
+ )
145
+
146
+
121
147
  @artifact_version_router.get(
122
148
  "/{artifact_version_id}",
123
149
  response_model=ArtifactVersionResponse,
@@ -57,6 +57,7 @@ from zenml.constants import (
57
57
  ARTIFACT_VERSIONS,
58
58
  ARTIFACT_VISUALIZATIONS,
59
59
  ARTIFACTS,
60
+ BATCH,
60
61
  CODE_REFERENCES,
61
62
  CODE_REPOSITORIES,
62
63
  CONFIG,
@@ -991,6 +992,23 @@ class RestZenStore(BaseZenStore):
991
992
  route=ARTIFACT_VERSIONS,
992
993
  )
993
994
 
995
+ def batch_create_artifact_versions(
996
+ self, artifact_versions: List[ArtifactVersionRequest]
997
+ ) -> List[ArtifactVersionResponse]:
998
+ """Creates a batch of artifact versions.
999
+
1000
+ Args:
1001
+ artifact_versions: The artifact versions to create.
1002
+
1003
+ Returns:
1004
+ The created artifact versions.
1005
+ """
1006
+ return self._batch_create_resources(
1007
+ resources=artifact_versions,
1008
+ response_model=ArtifactVersionResponse,
1009
+ route=ARTIFACT_VERSIONS,
1010
+ )
1011
+
994
1012
  def get_artifact_version(
995
1013
  self, artifact_version_id: UUID, hydrate: bool = True
996
1014
  ) -> ArtifactVersionResponse:
@@ -4518,6 +4536,40 @@ class RestZenStore(BaseZenStore):
4518
4536
 
4519
4537
  return response_model.model_validate(response_body)
4520
4538
 
4539
+ def _batch_create_resources(
4540
+ self,
4541
+ resources: List[AnyRequest],
4542
+ response_model: Type[AnyResponse],
4543
+ route: str,
4544
+ params: Optional[Dict[str, Any]] = None,
4545
+ ) -> List[AnyResponse]:
4546
+ """Create a new batch of resources.
4547
+
4548
+ Args:
4549
+ resources: The resources to create.
4550
+ response_model: The response model of an individual resource.
4551
+ route: The resource REST route to use.
4552
+ params: Optional query parameters to pass to the endpoint.
4553
+
4554
+ Returns:
4555
+ List of response models.
4556
+ """
4557
+ json_data = [
4558
+ resource.model_dump(mode="json") for resource in resources
4559
+ ]
4560
+ response = self._request(
4561
+ "POST",
4562
+ self.url + API + VERSION_1 + route + BATCH,
4563
+ json=json_data,
4564
+ params=params,
4565
+ )
4566
+ assert isinstance(response, list)
4567
+
4568
+ return [
4569
+ response_model.model_validate(model_data)
4570
+ for model_data in response
4571
+ ]
4572
+
4521
4573
  def _create_workspace_scoped_resource(
4522
4574
  self,
4523
4575
  resource: AnyWorkspaceScopedRequest,
@@ -2915,6 +2915,22 @@ class SqlZenStore(BaseZenStore):
2915
2915
  include_metadata=True, include_resources=True
2916
2916
  )
2917
2917
 
2918
+ def batch_create_artifact_versions(
2919
+ self, artifact_versions: List[ArtifactVersionRequest]
2920
+ ) -> List[ArtifactVersionResponse]:
2921
+ """Creates a batch of artifact versions.
2922
+
2923
+ Args:
2924
+ artifact_versions: The artifact versions to create.
2925
+
2926
+ Returns:
2927
+ The created artifact versions.
2928
+ """
2929
+ return [
2930
+ self.create_artifact_version(artifact_version)
2931
+ for artifact_version in artifact_versions
2932
+ ]
2933
+
2918
2934
  def get_artifact_version(
2919
2935
  self, artifact_version_id: UUID, hydrate: bool = True
2920
2936
  ) -> ArtifactVersionResponse:
@@ -663,6 +663,19 @@ class ZenStoreInterface(ABC):
663
663
  The created artifact version.
664
664
  """
665
665
 
666
+ @abstractmethod
667
+ def batch_create_artifact_versions(
668
+ self, artifact_versions: List[ArtifactVersionRequest]
669
+ ) -> List[ArtifactVersionResponse]:
670
+ """Creates a batch of artifact versions.
671
+
672
+ Args:
673
+ artifact_versions: The artifact versions to create.
674
+
675
+ Returns:
676
+ The created artifact versions.
677
+ """
678
+
666
679
  @abstractmethod
667
680
  def get_artifact_version(
668
681
  self, artifact_version_id: UUID, hydrate: bool = True
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: zenml-nightly
3
- Version: 0.68.1.dev20241106
3
+ Version: 0.68.1.dev20241107
4
4
  Summary: ZenML: Write production-ready ML code.
5
5
  Home-page: https://zenml.io
6
6
  License: Apache-2.0
@@ -6,7 +6,7 @@ RELEASE_NOTES.md,sha256=oShLQurhMKncKnc_y7tiasEfgy1aCOOjxdpax-MlGI8,381641
6
6
  ROADMAP.md,sha256=hiLSmr16BH8Dfx7SaQM4JcXCGCVl6mFZPFAwJeDTrJU,407
7
7
  SECURITY.md,sha256=9DepA8y03yvCZLHEfcXLTDH4lUyKHquAdukBsccNN7c,682
8
8
  zenml/README.md,sha256=827dekbOWAs1BpW7VF1a4d7EbwPbjwccX-2zdXBENZo,1777
9
- zenml/VERSION,sha256=1X9WqtnqfLS74C58qLY6IyBxpzYk6xpa5Lg0H13w6s8,19
9
+ zenml/VERSION,sha256=QDKeVhbF6fs029-SW9Q5z3reEeQtoNgK6UdydkwWesA,19
10
10
  zenml/__init__.py,sha256=XhLh9kV87ErcivCctQJaTtUOjl6kugT3pVyqqLKzBP8,2058
11
11
  zenml/actions/__init__.py,sha256=mrt6wPo73iKRxK754_NqsGyJ3buW7RnVeIGXr1xEw8Y,681
12
12
  zenml/actions/base_action.py,sha256=UcaHev6BTuLDwuswnyaPjdA8AgUqB5xPZ-lRtuvf2FU,25553
@@ -32,7 +32,7 @@ zenml/artifacts/external_artifact.py,sha256=2zmU9XQHwDefuODlBjKAdin91IWwZTJ8pVbg
32
32
  zenml/artifacts/external_artifact_config.py,sha256=P172p0JOu8Xx1F8RCQut1dnRpt5lpWXGNqMbY-V90sI,3323
33
33
  zenml/artifacts/preexisting_data_materializer.py,sha256=dcahDcHUD3Lvn0-6zE2BG84bkyo_ydAgzBWxtbyJJZQ,3325
34
34
  zenml/artifacts/unmaterialized_artifact.py,sha256=JNPKq_sNifQx5wP8jEw7TGBEi26zwKirPGlWX9uxbJI,1300
35
- zenml/artifacts/utils.py,sha256=lGqFxfCE24jgDl-ITjNUH51JnSUggZXweU6sIZuORCE,33181
35
+ zenml/artifacts/utils.py,sha256=mEbWT2V7yQ64jMc_cKLddkVx-JZK8DLQn8ggwKINicU,35058
36
36
  zenml/cli/__init__.py,sha256=o72CwXCP9TxQpS-FH9RZuDfA2FifFpIsISESNORh6aI,74915
37
37
  zenml/cli/annotator.py,sha256=tEdducGdFn57DFLJVZQ-MyXH1auTGFueRmDc78N-vPQ,6970
38
38
  zenml/cli/artifact.py,sha256=7lsAS52DroBTFkFWxkyb-lIDOGP5jPL_Se_RDG_2jgg,9564
@@ -92,7 +92,7 @@ zenml/config/step_run_info.py,sha256=KiVRSTtKmZ1GbvseDTap2imr7XwMHD3jSFVpyLNEK1I
92
92
  zenml/config/store_config.py,sha256=Cla5p5dTB6nNlo8_OZDs9hod5hspi64vxwtZj882XgU,3559
93
93
  zenml/config/strict_base_model.py,sha256=iHnO9qOmLUP_eiy9IjRr3JjIs1l1I_CsRQ76EyAneYU,860
94
94
  zenml/console.py,sha256=hj_KerPQKwnyKACj0ehSqUQX0mGVCJBKE1QvCt6ik3A,1160
95
- zenml/constants.py,sha256=gI8DP3f0f2NO5YNPmkIpuA3YS-FGpD1QM83gCjcnSDY,15625
95
+ zenml/constants.py,sha256=Zxy9gG0oDayzv7ULgng5ikgY1ojLLvNCl4R8R2T7yfQ,15642
96
96
  zenml/container_registries/__init__.py,sha256=ZSPbBIOnzhg88kQSpYgKe_POLuru14m629665-kAVAA,2200
97
97
  zenml/container_registries/azure_container_registry.py,sha256=t1sfDa94Vzbyqtb1iPFNutJ2EXV5_p9CUNITasoiQ70,2667
98
98
  zenml/container_registries/base_container_registry.py,sha256=6c2e32wuqxYHJXm5OV2LY1MtX9yopB7WZtes9fmTAz0,7625
@@ -234,7 +234,7 @@ zenml/integrations/discord/flavors/discord_alerter_flavor.py,sha256=9hX7R7dfxSwi
234
234
  zenml/integrations/discord/steps/__init__.py,sha256=stSDntUMzrHzwMJm1V1-jm7otII7uW6Fxj7qYB7MWrc,663
235
235
  zenml/integrations/discord/steps/discord_alerter_ask_step.py,sha256=puBERGjhpBRaift8GCygAgnjgZHbeqclRywxJjjjEG8,2553
236
236
  zenml/integrations/discord/steps/discord_alerter_post_step.py,sha256=te4M4Q47e1nShPHLLv414bjDuG_r7XCxDUbLgwGXEtI,2283
237
- zenml/integrations/evidently/__init__.py,sha256=wTCZZq1zl3aKxW-Qgsp0SKQydaEq4Q_9P2DE_vZ0Cms,3103
237
+ zenml/integrations/evidently/__init__.py,sha256=ISgJ8GB5QMLm3L55-Ipo7adrJqltJpobU-mUTOtNzUM,3069
238
238
  zenml/integrations/evidently/column_mapping.py,sha256=slZwGaArhYZNZnXfwYFXZEt7bqq2jswvb1vwkedvGRE,3555
239
239
  zenml/integrations/evidently/data_validators/__init__.py,sha256=7H1HCXAefk-asnSAYqfud-l17rsBFfhCrgps2abhmFY,830
240
240
  zenml/integrations/evidently/data_validators/evidently_data_validator.py,sha256=V34Nze3Mi4JpTlJJQf-i582WxAZrg5-yAv1HcUf7ULE,10316
@@ -543,7 +543,7 @@ zenml/integrations/vllm/flavors/vllm_model_deployer_flavor.py,sha256=_3P0-qyjdsV
543
543
  zenml/integrations/vllm/model_deployers/__init__.py,sha256=Z38oWIfkArNsxCm3rQkTdYK4dbtx2BpTUw1gw_kl6Do,803
544
544
  zenml/integrations/vllm/model_deployers/vllm_model_deployer.py,sha256=OYPNSkB-I5r4eQ_7kr4F7GDwNj6efcsio8WRteQ5cYI,9665
545
545
  zenml/integrations/vllm/services/__init__.py,sha256=Id28GEfHECI0RnGAGGNioD9eZ6aJxdNebe112VgC59g,788
546
- zenml/integrations/vllm/services/vllm_deployment.py,sha256=jPVKstcJ2AFmEG7R0Q6CcNUz0EEybBZok56F0QSgdTI,6619
546
+ zenml/integrations/vllm/services/vllm_deployment.py,sha256=mp42O5_DaTIoJzerPMVuukEPT3XQkrzVQcSJdEto-wI,6800
547
547
  zenml/integrations/wandb/__init__.py,sha256=LBlnX4chpaB3atIsxkF0RSz2AJs9gHQWRptkgkqF6lw,1711
548
548
  zenml/integrations/wandb/experiment_trackers/__init__.py,sha256=8nFyyvh-PTF5d9ZfjS7xFSWTWSpreRB1azePv-Ex2sc,771
549
549
  zenml/integrations/wandb/experiment_trackers/wandb_experiment_tracker.py,sha256=xNkF-3-WwpC8OV38T5evV35t6rH5o3O6uBlX4cimsKs,5092
@@ -681,7 +681,7 @@ zenml/orchestrators/output_utils.py,sha256=Gz7SX2cbQ3w4eyfU0XuhKEKGtalQGBoc6moDR
681
681
  zenml/orchestrators/publish_utils.py,sha256=aNwgTDmVSq9qCDP3Ldk77YNXnWx_YHjYNTEJwYeZo9s,4579
682
682
  zenml/orchestrators/step_launcher.py,sha256=SHmATi2qlGYLJzGdGvuTeurYfl1-OosJlEkeVcJRiIY,17741
683
683
  zenml/orchestrators/step_run_utils.py,sha256=y_O8_Vt943-vzj1dHajx7mHc4ih1xCm6ptgR-SdivaE,20333
684
- zenml/orchestrators/step_runner.py,sha256=Qb80a1MFHXgN1RhdT0084qmXEbN4m7Z35mzDHVE0qgQ,24610
684
+ zenml/orchestrators/step_runner.py,sha256=EEHCbCNRBHddumAswqSknNbp-zYvF0RsQMU_egaxWEA,24766
685
685
  zenml/orchestrators/topsort.py,sha256=D8evz3X47zwpXd90NMLsJD-_uCeXtV6ClzNfDUrq7cM,5784
686
686
  zenml/orchestrators/utils.py,sha256=U52BKVhsvSyClwmNRtH2hHQIGd0u9us7SAAcDjKn9BI,10260
687
687
  zenml/orchestrators/wheeled_orchestrator.py,sha256=eOnMcnd3sCzfhA2l6qRAzF0rOXzaojbjvvYvTkqixQo,4791
@@ -992,7 +992,7 @@ zenml/zen_server/feature_gate/zenml_cloud_feature_gate.py,sha256=X6sQGR70SHHFxQe
992
992
  zenml/zen_server/jwt.py,sha256=plUREdNvezUvTWaMTbewBfgJ5pOAQ5IGSr-BWsLMzVg,6124
993
993
  zenml/zen_server/rate_limit.py,sha256=rOg5H_6rOGQ_qiSCtMKPREmL1LL3bZyn4czKILtImJg,6057
994
994
  zenml/zen_server/rbac/__init__.py,sha256=nACbn_G7nZt_AWM3zeFL0FCmELvQnvaOFMwvTG3-6ZE,637
995
- zenml/zen_server/rbac/endpoint_utils.py,sha256=F_l2LyucuOiN3OEOtw-Xs6bxJPrJNPlfZxZX9hAyqfU,6507
995
+ zenml/zen_server/rbac/endpoint_utils.py,sha256=Q2QqnoDky_UF8DB0cs4SC6U75lZLNmGPs3-pUo1-y6w,7903
996
996
  zenml/zen_server/rbac/models.py,sha256=U3I-nw6yWhbuqK0IHJkgct6G3B4XQJZSC96ghj1a27Y,2404
997
997
  zenml/zen_server/rbac/rbac_interface.py,sha256=pNdfNtis5YhQgpWYkli7xNwfzNT_uXQlBaYKlSFi5HA,2881
998
998
  zenml/zen_server/rbac/utils.py,sha256=bgHBwIJ-fl1FL2hJBP8lBuA4Xb7keu30HyDIl0mh12M,19942
@@ -1000,7 +1000,7 @@ zenml/zen_server/rbac/zenml_cloud_rbac.py,sha256=mFWwskAEmeZyNCVF4aImEZpZNqm4SWA
1000
1000
  zenml/zen_server/routers/__init__.py,sha256=ViyAhWL-ogHxE9wBvB_iMcur5H1NRVrzXkpogVY7FBA,641
1001
1001
  zenml/zen_server/routers/actions_endpoints.py,sha256=TgFFU9fMu43iqTu-ybnxJ5QokzV-eivRAd6pW2TrFe0,9549
1002
1002
  zenml/zen_server/routers/artifact_endpoint.py,sha256=XhbOat2pddDluiT0a_QH2RfNcqlwtf3yf2Fh92a6ZDw,5175
1003
- zenml/zen_server/routers/artifact_version_endpoints.py,sha256=CMQf9uPUA46iX_MYy1IfxJI-zDUsJ70hc1-GbsAcmvs,7750
1003
+ zenml/zen_server/routers/artifact_version_endpoints.py,sha256=TZpBPhNI6njJLKI-QX8wbNIn9-fFFGXKWqaVdiXFZVw,8528
1004
1004
  zenml/zen_server/routers/auth_endpoints.py,sha256=ZcLnz1P_jW4F9ttntpZxd_lRK9wXf2pL9WJZFU-8BNU,20334
1005
1005
  zenml/zen_server/routers/code_repositories_endpoints.py,sha256=WFCRPsv3Qrm8QtCr5zxfSdgCS5WI1DPNCF4Y6vLXGow,4747
1006
1006
  zenml/zen_server/routers/devices_endpoints.py,sha256=luqj7owGuQ-2LyAC6Pka7GjEVpYpfi_QDdFKXhWlXek,10712
@@ -1207,7 +1207,7 @@ zenml/zen_stores/migrations/versions/ec0d785ca296_create_run_metadata_table.py,s
1207
1207
  zenml/zen_stores/migrations/versions/f3b3964e3a0f_add_oauth_devices.py,sha256=2CR4R-7Vx6j_AXxo-e5Guy6OX-ZnS47HSKSGfqlO-y0,3065
1208
1208
  zenml/zen_stores/migrations/versions/f49904a80aa7_increase_length_of_artifact_table_sources.py,sha256=kLgfDUnQdAb5_SyFx3VKXDLC0YbuBKf9iXRDNeBin7Q,1618
1209
1209
  zenml/zen_stores/migrations/versions/fbd7f18ced1e_increase_step_run_field_lengths.py,sha256=kn-ng5EHe_mmLfffIFbz7T59z-to3oMx8III_4wOsz4,1956
1210
- zenml/zen_stores/rest_zen_store.py,sha256=OIgR001H7y-_EbvMg9-37b5Mt_YRMnRNiUhnCZ2wBGg,156215
1210
+ zenml/zen_stores/rest_zen_store.py,sha256=x_Cusp-aeUiMfjL0W6fSaOIsR_XyiNRRV3Ff1xMSUWk,157791
1211
1211
  zenml/zen_stores/schemas/__init__.py,sha256=D0T3cSqZ1wIewUI181WD76iY2pLyKX4HWCbx6JjXR7I,4266
1212
1212
  zenml/zen_stores/schemas/action_schemas.py,sha256=vNnDF4zRy0eWgNwtcU7yY0JXyqe4I3Nns2LHRHWwiDs,6293
1213
1213
  zenml/zen_stores/schemas/api_key_schemas.py,sha256=pCvoTSXSHz-im6aRt-opSBnmIhw3wDRIsi-NJP5WtCQ,7243
@@ -1250,11 +1250,11 @@ zenml/zen_stores/secrets_stores/hashicorp_secrets_store.py,sha256=NfW1EHIA99lseb
1250
1250
  zenml/zen_stores/secrets_stores/secrets_store_interface.py,sha256=Q2Jbnt2Pp7NGlR-u1YBfRZV2g8su2Fd0ArBMdksAE-Q,2819
1251
1251
  zenml/zen_stores/secrets_stores/service_connector_secrets_store.py,sha256=kPYX-Z_OOhZCI1CP77ncfV7IsV4e8brklnTXmKxZYNc,7078
1252
1252
  zenml/zen_stores/secrets_stores/sql_secrets_store.py,sha256=Bq1djrUP9saoD7vECjS7-TlA_7sjJGgw1talri4spjU,8656
1253
- zenml/zen_stores/sql_zen_store.py,sha256=n5LWV-VBX2cfLDNQDk1F_xBCIklEs8Tug54Iafr7_YU,402789
1253
+ zenml/zen_stores/sql_zen_store.py,sha256=CM3ClHBWDpZVWba-dsK-vZL1mRIOAoxrFZyuHFlnIGU,403273
1254
1254
  zenml/zen_stores/template_utils.py,sha256=EKYBgmDLTS_PSMWaIO5yvHPLiQvMqHcsAe6NUCrv-i4,9068
1255
- zenml/zen_stores/zen_store_interface.py,sha256=kzR_i8vHjULld3MquSaMorcab8lJk1e9RZquw1VXjHY,93510
1256
- zenml_nightly-0.68.1.dev20241106.dist-info/LICENSE,sha256=wbnfEnXnafPbqwANHkV6LUsPKOtdpsd-SNw37rogLtc,11359
1257
- zenml_nightly-0.68.1.dev20241106.dist-info/METADATA,sha256=W9_Y6sjuYd-pTqTTw8HRdh_gHrKjp3JpiaNkF8aY-OI,21208
1258
- zenml_nightly-0.68.1.dev20241106.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
1259
- zenml_nightly-0.68.1.dev20241106.dist-info/entry_points.txt,sha256=QK3ETQE0YswAM2mWypNMOv8TLtr7EjnqAFq1br_jEFE,43
1260
- zenml_nightly-0.68.1.dev20241106.dist-info/RECORD,,
1255
+ zenml/zen_stores/zen_store_interface.py,sha256=ULNbbpimQ6I1COd2o_B-t4PRwo-pb6MKsk1W8ht8Cjg,93874
1256
+ zenml_nightly-0.68.1.dev20241107.dist-info/LICENSE,sha256=wbnfEnXnafPbqwANHkV6LUsPKOtdpsd-SNw37rogLtc,11359
1257
+ zenml_nightly-0.68.1.dev20241107.dist-info/METADATA,sha256=EFLdsT_HLfZhJGwPNu83C-PetvN1onLYyZEi-5vk7Qc,21208
1258
+ zenml_nightly-0.68.1.dev20241107.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
1259
+ zenml_nightly-0.68.1.dev20241107.dist-info/entry_points.txt,sha256=QK3ETQE0YswAM2mWypNMOv8TLtr7EjnqAFq1br_jEFE,43
1260
+ zenml_nightly-0.68.1.dev20241107.dist-info/RECORD,,