zenml-nightly 0.71.0.dev20250107__py3-none-any.whl → 0.71.0.dev20250111__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 (143) hide show
  1. zenml/VERSION +1 -1
  2. zenml/cli/base.py +1 -1
  3. zenml/cli/formatter.py +1 -1
  4. zenml/cli/integration.py +1 -1
  5. zenml/cli/model_registry.py +1 -2
  6. zenml/cli/secret.py +1 -2
  7. zenml/cli/service_connectors.py +1 -1
  8. zenml/cli/stack.py +2 -3
  9. zenml/cli/stack_components.py +4 -6
  10. zenml/cli/text_utils.py +1 -1
  11. zenml/cli/utils.py +4 -5
  12. zenml/client.py +1 -4
  13. zenml/constants.py +1 -0
  14. zenml/entrypoints/step_entrypoint_configuration.py +15 -0
  15. zenml/integrations/azure/__init__.py +1 -1
  16. zenml/integrations/azure/azureml_utils.py +1 -1
  17. zenml/integrations/azure/orchestrators/azureml_orchestrator_entrypoint_config.py +0 -5
  18. zenml/integrations/bitbucket/plugins/event_sources/bitbucket_webhook_event_source.py +3 -3
  19. zenml/integrations/databricks/orchestrators/databricks_orchestrator.py +1 -3
  20. zenml/integrations/evidently/metrics.py +2 -2
  21. zenml/integrations/evidently/tests.py +2 -2
  22. zenml/integrations/gcp/service_connectors/gcp_service_connector.py +3 -3
  23. zenml/integrations/github/plugins/event_sources/github_webhook_event_source.py +3 -3
  24. zenml/integrations/s3/utils.py +1 -2
  25. zenml/logger.py +1 -1
  26. zenml/models/v2/base/scoped.py +37 -34
  27. zenml/models/v2/core/artifact.py +86 -2
  28. zenml/models/v2/core/model.py +81 -2
  29. zenml/models/v2/core/pipeline.py +15 -12
  30. zenml/models/v2/core/pipeline_run.py +2 -0
  31. zenml/services/container/container_service.py +1 -1
  32. zenml/stack/stack_component.py +1 -1
  33. zenml/utils/deprecation_utils.py +6 -6
  34. zenml/utils/filesync_model.py +3 -3
  35. zenml/utils/function_utils.py +1 -1
  36. zenml/utils/pipeline_docker_image_builder.py +1 -1
  37. zenml/zen_server/auth.py +2 -5
  38. zenml/zen_server/dashboard/assets/{404-Cqu3EDCm.js → 404-Dfq64Boz.js} +1 -1
  39. zenml/zen_server/dashboard/assets/{@reactflow-D2Y7BWwz.js → @reactflow-BUNIMFeC.js} +1 -1
  40. zenml/zen_server/dashboard/assets/{AlertDialogDropdownItem-BHd71pVS.js → AlertDialogDropdownItem-B73Vs10T.js} +1 -1
  41. zenml/zen_server/dashboard/assets/{CodeSnippet-DIonwetW.js → CodeSnippet-DIJRT2NT.js} +1 -1
  42. zenml/zen_server/dashboard/assets/{CollapsibleCard-CDnC97pB.js → CollapsibleCard-BzUHGZOU.js} +1 -1
  43. zenml/zen_server/dashboard/assets/{Commands-BVEXKAOj.js → Commands-BEGyld4c.js} +1 -1
  44. zenml/zen_server/dashboard/assets/{ComponentBadge-CrRvovox.js → ComponentBadge-xyKiek1s.js} +1 -1
  45. zenml/zen_server/dashboard/assets/{CopyButton-B6wGAhQv.js → CopyButton-DhW-mapu.js} +1 -1
  46. zenml/zen_server/dashboard/assets/{CsvVizualization-CjcT7LMm.js → CsvVizualization-D8oazBiE.js} +1 -1
  47. zenml/zen_server/dashboard/assets/{DeleteAlertDialog-D2ELtM2W.js → DeleteAlertDialog-WkSIIgfy.js} +1 -1
  48. zenml/zen_server/dashboard/assets/{DialogItem-DXIMhBgU.js → DialogItem-Bgroeg29.js} +1 -1
  49. zenml/zen_server/dashboard/assets/{Error-B8uUfTpL.js → Error-CY5tlu17.js} +1 -1
  50. zenml/zen_server/dashboard/assets/{ExecutionStatus-ibAdY-dG.js → ExecutionStatus-G8mjIaeA.js} +1 -1
  51. zenml/zen_server/dashboard/assets/{Helpbox-BfAfhKHw.js → Helpbox-Bb1ed--O.js} +1 -1
  52. zenml/zen_server/dashboard/assets/{Infobox-M_SMOu96.js → Infobox-Da6-76M2.js} +1 -1
  53. zenml/zen_server/dashboard/assets/{InlineAvatar-DBA0a0-a.js → InlineAvatar-DqnZaBNq.js} +1 -1
  54. zenml/zen_server/dashboard/assets/{NestedCollapsible-DpgmEFKw.js → NestedCollapsible-aK5ojKoF.js} +1 -1
  55. zenml/zen_server/dashboard/assets/{Partials-D_ldD9if.js → Partials-CqZp5NMX.js} +1 -1
  56. zenml/zen_server/dashboard/assets/{ProBadge-DQbfFotM.js → ProBadge-B4tRUYve.js} +1 -1
  57. zenml/zen_server/dashboard/assets/{ProCta-Bcpb4rcY.js → ProCta-CZuP29Qz.js} +1 -1
  58. zenml/zen_server/dashboard/assets/{ProviderIcon-BZpgPigN.js → ProviderIcon-Bd7GUQ1_.js} +1 -1
  59. zenml/zen_server/dashboard/assets/{ProviderRadio-DWPnMuQ1.js → ProviderRadio-mstdqzsS.js} +1 -1
  60. zenml/zen_server/dashboard/assets/{RunSelector-DgRGaAc6.js → RunSelector-CsruSB4i.js} +1 -1
  61. zenml/zen_server/dashboard/assets/{RunsBody-KecfSkjY.js → RunsBody-DxxtWVYz.js} +1 -1
  62. zenml/zen_server/dashboard/assets/{SearchField-n-ILHnaP.js → SearchField-D6tPxyqw.js} +1 -1
  63. zenml/zen_server/dashboard/assets/{SecretTooltip-B8MrX5yu.js → SecretTooltip-CLzJIYW_.js} +1 -1
  64. zenml/zen_server/dashboard/assets/{SetPassword-B_IVq_wg.js → SetPassword-Yn50ooBC.js} +1 -1
  65. zenml/zen_server/dashboard/assets/{StackList-TWPBYnkF.js → StackList-U537qoYd.js} +1 -1
  66. zenml/zen_server/dashboard/assets/{Tabs-Rg857zmd.js → Tabs-CNv-eTYM.js} +1 -1
  67. zenml/zen_server/dashboard/assets/{Tick-COg4A-xo.js → Tick-jEIevzVf.js} +1 -1
  68. zenml/zen_server/dashboard/assets/{UpdatePasswordSchemas-C6Aj3hm6.js → UpdatePasswordSchemas-C16GW-kX.js} +1 -1
  69. zenml/zen_server/dashboard/assets/{UsageReason-BTLbx7w4.js → UsageReason-Bf2tzhv1.js} +1 -1
  70. zenml/zen_server/dashboard/assets/{WizardFooter-BCAj69Vj.js → WizardFooter-D6i-AP1K.js} +1 -1
  71. zenml/zen_server/dashboard/assets/{all-pipeline-runs-query-DMXkDrV2.js → all-pipeline-runs-query-DUti43aF.js} +1 -1
  72. zenml/zen_server/dashboard/assets/{create-stack-HfdbhLs4.js → create-stack-Ch2WPs9U.js} +1 -1
  73. zenml/zen_server/dashboard/assets/{delete-run-DZ4hIXff.js → delete-run-Byf9hTjA.js} +1 -1
  74. zenml/zen_server/dashboard/assets/{form-schemas-B0AVEd9b.js → form-schemas-BZqKBPBF.js} +1 -1
  75. zenml/zen_server/dashboard/assets/{index-FO-p0GU7.js → index-CE0aQlv8.js} +3 -3
  76. zenml/zen_server/dashboard/assets/{index-DScjfBRb.js → index-CtdYkjUi.js} +1 -1
  77. zenml/zen_server/dashboard/assets/{index-DPqSWjug.js → index-CyBKZcpO.js} +1 -1
  78. zenml/zen_server/dashboard/assets/{index-I3bKUGUj.js → index-v6gQjDEo.js} +1 -1
  79. zenml/zen_server/dashboard/assets/{login-mutation-BQeo4wTY.js → login-mutation-DNDVp_2H.js} +1 -1
  80. zenml/zen_server/dashboard/assets/{not-found-gAJ5aDdR.js → not-found-Bmup4ctE.js} +1 -1
  81. zenml/zen_server/dashboard/assets/{page-I3nKFGie.js → page--XLMzHrn.js} +1 -1
  82. zenml/zen_server/dashboard/assets/{page-DO1UcqPX.js → page-ANYGfEUL.js} +1 -1
  83. zenml/zen_server/dashboard/assets/{page-AUwiQ14W.js → page-B5Sr8pib.js} +1 -1
  84. zenml/zen_server/dashboard/assets/{page-CcQr8CPP.js → page-BC27C_OI.js} +1 -1
  85. zenml/zen_server/dashboard/assets/{page-zaMqB_ao.js → page-BNxYrN0q.js} +1 -1
  86. zenml/zen_server/dashboard/assets/{page-CiYxgZP_.js → page-BYJfqgLN.js} +1 -1
  87. zenml/zen_server/dashboard/assets/{page-h_Stveon.js → page-B_0XkV48.js} +1 -1
  88. zenml/zen_server/dashboard/assets/{page-R5dx3xGF.js → page-BrmJp1Wt.js} +1 -1
  89. zenml/zen_server/dashboard/assets/page-C2nU3Gxn.js +1 -0
  90. zenml/zen_server/dashboard/assets/{page-Dk32IeZm.js → page-C70wZtV2.js} +1 -1
  91. zenml/zen_server/dashboard/assets/{page-CWxT5K5J.js → page-CHRn1fQm.js} +1 -1
  92. zenml/zen_server/dashboard/assets/{page-M0w-n6vn.js → page-CWr96ZKN.js} +1 -1
  93. zenml/zen_server/dashboard/assets/{page-Ce4Hrjnr.js → page-CXAbSyp9.js} +1 -1
  94. zenml/zen_server/dashboard/assets/{page-D8ObrbH8.js → page-CaeI9ptC.js} +1 -1
  95. zenml/zen_server/dashboard/assets/{page-B_Apk3xg.js → page-Cc8ZEuj4.js} +1 -1
  96. zenml/zen_server/dashboard/assets/{page-BxL4qD4_.js → page-CltCNL0T.js} +1 -1
  97. zenml/zen_server/dashboard/assets/{page-D4wdonLm.js → page-CmlYj7Nl.js} +1 -1
  98. zenml/zen_server/dashboard/assets/{page-DFuAUGt4.js → page-D6Ev5P8V.js} +1 -1
  99. zenml/zen_server/dashboard/assets/{page-u_-ZXBKb.js → page-D9Oh05fl.js} +1 -1
  100. zenml/zen_server/dashboard/assets/{page-DRYXdL5o.js → page-DGlm1RVc.js} +1 -1
  101. zenml/zen_server/dashboard/assets/{page-r8XK5vR7.js → page-DN4BVIOL.js} +1 -1
  102. zenml/zen_server/dashboard/assets/{page-DYEquBC2.js → page-Dif8CWyZ.js} +1 -1
  103. zenml/zen_server/dashboard/assets/{page-BdowiCbr.js → page-DlIi5ThM.js} +1 -1
  104. zenml/zen_server/dashboard/assets/{page-9Y9-gig0.js → page-DoW7YxTu.js} +1 -1
  105. zenml/zen_server/dashboard/assets/{page-BKZYc2Zv.js → page-Dth9X1Ih.js} +1 -1
  106. zenml/zen_server/dashboard/assets/{page-bT5pOvcB.js → page-DweqqCkF.js} +1 -1
  107. zenml/zen_server/dashboard/assets/{page-CXuQufSe.js → page-DyOJ_pq3.js} +1 -1
  108. zenml/zen_server/dashboard/assets/{page-DGazBpuP.js → page-Hn8q9iJZ.js} +1 -1
  109. zenml/zen_server/dashboard/assets/{page-hUqK889I.js → page-IhckKFnD.js} +1 -1
  110. zenml/zen_server/dashboard/assets/{page-BU9FG4sR.js → page-LyZ_l8vR.js} +1 -1
  111. zenml/zen_server/dashboard/assets/{page-Cldq1mpe.js → page-PamGpk0j.js} +1 -1
  112. zenml/zen_server/dashboard/assets/page-PxOWfKgF.js +2 -0
  113. zenml/zen_server/dashboard/assets/{persist-DAUi_3za.js → persist-DeXRG61d.js} +1 -1
  114. zenml/zen_server/dashboard/assets/{persist-AppN1B0J.js → persist-vP0-Xl4f.js} +1 -1
  115. zenml/zen_server/dashboard/assets/{service-BqqeXLEe.js → service-DH_oUqQj.js} +1 -1
  116. zenml/zen_server/dashboard/assets/{sharedSchema-uXN9FLLk.js → sharedSchema-Bw1_Wa7l.js} +1 -1
  117. zenml/zen_server/dashboard/assets/{stack-detail-query-XfZBiBP2.js → stack-detail-query-B_0R_fd6.js} +1 -1
  118. zenml/zen_server/dashboard/assets/{update-server-settings-mutation-BWmgVJwA.js → update-server-settings-mutation-D9qYhfaN.js} +1 -1
  119. zenml/zen_server/dashboard/assets/{url-BLwMbzES.js → url-Dh93fvh0.js} +1 -1
  120. zenml/zen_server/dashboard/index.html +3 -3
  121. zenml/zen_server/deploy/deployer.py +1 -1
  122. zenml/zen_server/rbac/rbac_sql_zen_store.py +3 -1
  123. zenml/zen_server/routers/webhook_endpoints.py +1 -2
  124. zenml/zen_stores/migrations/utils.py +1 -2
  125. zenml/zen_stores/migrations/versions/5330ba58bf20_rename_tables_and_foreign_keys.py +7 -9
  126. zenml/zen_stores/rest_zen_store.py +1 -1
  127. zenml/zen_stores/schemas/artifact_schemas.py +19 -19
  128. zenml/zen_stores/schemas/model_schemas.py +19 -19
  129. zenml/zen_stores/schemas/pipeline_run_schemas.py +18 -19
  130. zenml/zen_stores/schemas/pipeline_schemas.py +7 -5
  131. zenml/zen_stores/schemas/run_metadata_schemas.py +1 -45
  132. zenml/zen_stores/schemas/run_template_schemas.py +7 -5
  133. zenml/zen_stores/schemas/step_run_schemas.py +6 -8
  134. zenml/zen_stores/schemas/tag_schemas.py +5 -41
  135. zenml/zen_stores/schemas/utils.py +11 -12
  136. zenml/zen_stores/sql_zen_store.py +9 -3
  137. {zenml_nightly-0.71.0.dev20250107.dist-info → zenml_nightly-0.71.0.dev20250111.dist-info}/METADATA +2 -2
  138. {zenml_nightly-0.71.0.dev20250107.dist-info → zenml_nightly-0.71.0.dev20250111.dist-info}/RECORD +141 -141
  139. zenml/zen_server/dashboard/assets/page-B6XU7yYT.js +0 -2
  140. zenml/zen_server/dashboard/assets/page-Bg8OjTRe.js +0 -1
  141. {zenml_nightly-0.71.0.dev20250107.dist-info → zenml_nightly-0.71.0.dev20250111.dist-info}/LICENSE +0 -0
  142. {zenml_nightly-0.71.0.dev20250107.dist-info → zenml_nightly-0.71.0.dev20250111.dist-info}/WHEEL +0 -0
  143. {zenml_nightly-0.71.0.dev20250107.dist-info → zenml_nightly-0.71.0.dev20250111.dist-info}/entry_points.txt +0 -0
@@ -13,12 +13,16 @@
13
13
  # permissions and limitations under the License.
14
14
  """Models representing models."""
15
15
 
16
- from typing import TYPE_CHECKING, List, Optional
16
+ from typing import TYPE_CHECKING, Any, ClassVar, List, Optional, Type, TypeVar
17
17
  from uuid import UUID
18
18
 
19
19
  from pydantic import BaseModel, Field
20
20
 
21
- from zenml.constants import STR_FIELD_MAX_LENGTH, TEXT_FIELD_MAX_LENGTH
21
+ from zenml.constants import (
22
+ SORT_BY_LATEST_VERSION_KEY,
23
+ STR_FIELD_MAX_LENGTH,
24
+ TEXT_FIELD_MAX_LENGTH,
25
+ )
22
26
  from zenml.models.v2.base.scoped import (
23
27
  WorkspaceScopedRequest,
24
28
  WorkspaceScopedResponse,
@@ -32,6 +36,11 @@ from zenml.utils.pagination_utils import depaginate
32
36
  if TYPE_CHECKING:
33
37
  from zenml.model.model import Model
34
38
  from zenml.models.v2.core.tag import TagResponse
39
+ from zenml.zen_stores.schemas import BaseSchema
40
+
41
+ AnySchema = TypeVar("AnySchema", bound=BaseSchema)
42
+
43
+ AnyQuery = TypeVar("AnyQuery", bound=Any)
35
44
 
36
45
  # ------------------ Request Model ------------------
37
46
 
@@ -320,3 +329,73 @@ class ModelFilter(WorkspaceScopedTaggableFilter):
320
329
  default=None,
321
330
  description="Name of the Model",
322
331
  )
332
+
333
+ CUSTOM_SORTING_OPTIONS: ClassVar[List[str]] = [
334
+ *WorkspaceScopedTaggableFilter.CUSTOM_SORTING_OPTIONS,
335
+ SORT_BY_LATEST_VERSION_KEY,
336
+ ]
337
+
338
+ def apply_sorting(
339
+ self,
340
+ query: AnyQuery,
341
+ table: Type["AnySchema"],
342
+ ) -> AnyQuery:
343
+ """Apply sorting to the query for Models.
344
+
345
+ Args:
346
+ query: The query to which to apply the sorting.
347
+ table: The query table.
348
+
349
+ Returns:
350
+ The query with sorting applied.
351
+ """
352
+ from sqlmodel import asc, case, col, desc, func, select
353
+
354
+ from zenml.enums import SorterOps
355
+ from zenml.zen_stores.schemas import (
356
+ ModelSchema,
357
+ ModelVersionSchema,
358
+ )
359
+
360
+ sort_by, operand = self.sorting_params
361
+
362
+ if sort_by == SORT_BY_LATEST_VERSION_KEY:
363
+ # Subquery to find the latest version per model
364
+ latest_version_subquery = (
365
+ select(
366
+ ModelSchema.id,
367
+ case(
368
+ (
369
+ func.max(ModelVersionSchema.created).is_(None),
370
+ ModelSchema.created,
371
+ ),
372
+ else_=func.max(ModelVersionSchema.created),
373
+ ).label("latest_version_created"),
374
+ )
375
+ .outerjoin(
376
+ ModelVersionSchema,
377
+ ModelSchema.id == ModelVersionSchema.model_id, # type: ignore[arg-type]
378
+ )
379
+ .group_by(col(ModelSchema.id))
380
+ .subquery()
381
+ )
382
+
383
+ query = query.add_columns(
384
+ latest_version_subquery.c.latest_version_created,
385
+ ).where(ModelSchema.id == latest_version_subquery.c.id)
386
+
387
+ # Apply sorting based on the operand
388
+ if operand == SorterOps.ASCENDING:
389
+ query = query.order_by(
390
+ asc(latest_version_subquery.c.latest_version_created),
391
+ asc(ModelSchema.id),
392
+ )
393
+ else:
394
+ query = query.order_by(
395
+ desc(latest_version_subquery.c.latest_version_created),
396
+ desc(ModelSchema.id),
397
+ )
398
+ return query
399
+
400
+ # For other sorting cases, delegate to the parent class
401
+ return super().apply_sorting(query=query, table=table)
@@ -357,7 +357,7 @@ class PipelineFilter(WorkspaceScopedTaggableFilter):
357
357
  # Subquery to find the latest run per pipeline
358
358
  latest_run_subquery = (
359
359
  select(
360
- PipelineRunSchema.pipeline_id,
360
+ PipelineSchema.id,
361
361
  case(
362
362
  (
363
363
  func.max(PipelineRunSchema.created).is_(None),
@@ -366,25 +366,28 @@ class PipelineFilter(WorkspaceScopedTaggableFilter):
366
366
  else_=func.max(PipelineRunSchema.created),
367
367
  ).label("latest_run"),
368
368
  )
369
- .group_by(col(PipelineRunSchema.pipeline_id))
369
+ .outerjoin(
370
+ PipelineRunSchema,
371
+ PipelineSchema.id == PipelineRunSchema.pipeline_id, # type: ignore[arg-type]
372
+ )
373
+ .group_by(col(PipelineSchema.id))
370
374
  .subquery()
371
375
  )
372
376
 
373
- # Join the subquery with the pipelines
374
- query = query.outerjoin(
375
- latest_run_subquery,
376
- PipelineSchema.id == latest_run_subquery.c.pipeline_id,
377
- )
377
+ query = query.add_columns(
378
+ latest_run_subquery.c.latest_run,
379
+ ).where(PipelineSchema.id == latest_run_subquery.c.id)
378
380
 
379
381
  if operand == SorterOps.ASCENDING:
380
382
  query = query.order_by(
381
- asc(latest_run_subquery.c.latest_run)
382
- ).order_by(col(PipelineSchema.id))
383
+ asc(latest_run_subquery.c.latest_run),
384
+ asc(PipelineSchema.id),
385
+ )
383
386
  else:
384
387
  query = query.order_by(
385
- desc(latest_run_subquery.c.latest_run)
386
- ).order_by(col(PipelineSchema.id))
387
-
388
+ desc(latest_run_subquery.c.latest_run),
389
+ desc(PipelineSchema.id),
390
+ )
388
391
  return query
389
392
  else:
390
393
  return super().apply_sorting(query=query, table=table)
@@ -982,6 +982,8 @@ class PipelineRunFilter(WorkspaceScopedTaggableFilter):
982
982
  else:
983
983
  return super().apply_sorting(query=query, table=table)
984
984
 
985
+ query = query.add_columns(column)
986
+
985
987
  if operand == SorterOps.ASCENDING:
986
988
  query = query.order_by(asc(column))
987
989
  else:
@@ -415,7 +415,7 @@ class ContainerService(BaseService):
415
415
  # to ensure that the local database can be shared
416
416
  # with the container.
417
417
  logger.debug(
418
- "Setting UID and GID to local user/group " "in container."
418
+ "Setting UID and GID to local user/group in container."
419
419
  )
420
420
  uid_args = dict(
421
421
  user=os.getuid(),
@@ -452,7 +452,7 @@ class StackComponent:
452
452
  "reinstalling the integration either through our CLI: "
453
453
  f"`zenml integration install {flavor_model.integration} "
454
454
  "-y` or by manually installing its requirements: "
455
- f"`pip install {integration_requirements}`. If the error"
455
+ f"`pip install {integration_requirements}`. If the error "
456
456
  "persists, please contact the ZenML team."
457
457
  ) from e
458
458
  else:
@@ -109,13 +109,13 @@ def deprecate_pydantic_attributes(
109
109
  else:
110
110
  deprecated_attribute, replacement_attribute = attribute
111
111
 
112
- assert (
113
- replacement_attribute in cls.model_fields
114
- ), f"Unable to find attribute {replacement_attribute}."
112
+ assert replacement_attribute in cls.model_fields, (
113
+ f"Unable to find attribute {replacement_attribute}."
114
+ )
115
115
 
116
- assert (
117
- deprecated_attribute in cls.model_fields
118
- ), f"Unable to find attribute {deprecated_attribute}."
116
+ assert deprecated_attribute in cls.model_fields, (
117
+ f"Unable to find attribute {deprecated_attribute}."
118
+ )
119
119
 
120
120
  if cls.model_fields[deprecated_attribute].is_required():
121
121
  raise TypeError(
@@ -80,9 +80,9 @@ class FileSyncModel(BaseModel):
80
80
 
81
81
  if isinstance(data, dict):
82
82
  # Assert that the config file is defined
83
- assert (
84
- "config_file" in data
85
- ), "You have to provide a path for the configuration file."
83
+ assert "config_file" in data, (
84
+ "You have to provide a path for the configuration file."
85
+ )
86
86
 
87
87
  config_file = data.pop("config_file")
88
88
 
@@ -196,7 +196,7 @@ def _cli_wrapped_function(func: F) -> F:
196
196
  return function
197
197
 
198
198
  func.__doc__ = (
199
- f"{func.__doc__}\n\nThis is ZenML-generated " "CLI wrapper function."
199
+ f"{func.__doc__}\n\nThis is ZenML-generated CLI wrapper function."
200
200
  )
201
201
 
202
202
  return wrapper(func)
@@ -201,7 +201,7 @@ class PipelineDockerImageBuilder:
201
201
  )
202
202
 
203
203
  repository = repository or DEFAULT_ZENML_DOCKER_REPOSITORY
204
- user_image_name = f"{repository}:" f"{tag}-intermediate-build"
204
+ user_image_name = f"{repository}:{tag}-intermediate-build"
205
205
  if push and container_registry:
206
206
  user_image_name = (
207
207
  f"{container_registry.config.uri}/{user_image_name}"
zenml/zen_server/auth.py CHANGED
@@ -130,9 +130,7 @@ def _fetch_and_verify_api_key(
130
130
  try:
131
131
  api_key = zen_store().get_internal_api_key(api_key_id)
132
132
  except KeyError:
133
- error = (
134
- f"Authentication error: error retrieving API key " f"{api_key_id}"
135
- )
133
+ error = f"Authentication error: error retrieving API key {api_key_id}"
136
134
  logger.error(error)
137
135
  raise CredentialsNotValid(error)
138
136
 
@@ -673,8 +671,7 @@ def authenticate_external_user(
673
671
  )
674
672
  except Exception as e:
675
673
  logger.exception(
676
- f"Error fetching user information from external authenticator: "
677
- f"{e}"
674
+ f"Error fetching user information from external authenticator: {e}"
678
675
  )
679
676
  raise AuthorizationException(
680
677
  "Error fetching user information from external authenticator."
@@ -1 +1 @@
1
- import{j as e}from"./@radix-DeK6qiuw.js";import{f as s,r as t}from"./index-FO-p0GU7.js";import{E as r}from"./EmptyState-BzdlCwp3.js";import{S as a}from"./help-Cc9bBIJH.js";import{L as o}from"./@react-router-B3Z5rLr2.js";import"./@tanstack-DT5WLu9C.js";import"./@reactflow-D2Y7BWwz.js";function d(){return e.jsx("div",{className:"flex min-h-screen w-full flex-col",children:e.jsx(r,{icon:e.jsx(a,{className:"h-[120px] w-[120px] fill-neutral-300"}),children:e.jsxs("div",{className:"text-center",children:[e.jsx("h1",{className:"mb-2 text-display-xs font-semibold",children:"We can't find the page you are looking for"}),e.jsx("p",{className:"text-lg text-theme-text-secondary",children:"You can try typing a different URL or we can bring you back to your Homepage."}),e.jsx("div",{className:"mt-5 flex justify-center",children:e.jsx(s,{size:"md",asChild:!0,children:e.jsx(o,{className:"w-min self-center whitespace-nowrap",to:t.home,children:e.jsx("span",{className:"px-0.5",children:"Go to Home"})})})})]})})})}export{d as default};
1
+ import{j as e}from"./@radix-DeK6qiuw.js";import{f as s,r as t}from"./index-CE0aQlv8.js";import{E as r}from"./EmptyState-BzdlCwp3.js";import{S as a}from"./help-Cc9bBIJH.js";import{L as o}from"./@react-router-B3Z5rLr2.js";import"./@tanstack-DT5WLu9C.js";import"./@reactflow-BUNIMFeC.js";function d(){return e.jsx("div",{className:"flex min-h-screen w-full flex-col",children:e.jsx(r,{icon:e.jsx(a,{className:"h-[120px] w-[120px] fill-neutral-300"}),children:e.jsxs("div",{className:"text-center",children:[e.jsx("h1",{className:"mb-2 text-display-xs font-semibold",children:"We can't find the page you are looking for"}),e.jsx("p",{className:"text-lg text-theme-text-secondary",children:"You can try typing a different URL or we can bring you back to your Homepage."}),e.jsx("div",{className:"mt-5 flex justify-center",children:e.jsx(s,{size:"md",asChild:!0,children:e.jsx(o,{className:"w-min self-center whitespace-nowrap",to:t.home,children:e.jsx("span",{className:"px-0.5",children:"Go to Home"})})})})]})})})}export{d as default};