zenml-nightly 0.68.1.dev20241112__py3-none-any.whl → 0.70.0.dev20241114__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 (186) hide show
  1. README.md +1 -1
  2. RELEASE_NOTES.md +77 -0
  3. zenml/VERSION +1 -1
  4. zenml/__init__.py +2 -0
  5. zenml/artifacts/utils.py +5 -1
  6. zenml/client.py +6 -1
  7. zenml/config/server_config.py +17 -1
  8. zenml/constants.py +1 -7
  9. zenml/enums.py +8 -0
  10. zenml/model/utils.py +5 -0
  11. zenml/models/v2/base/filter.py +121 -8
  12. zenml/models/v2/core/artifact_version.py +23 -0
  13. zenml/models/v2/core/model_version.py +23 -0
  14. zenml/models/v2/core/pipeline_run.py +22 -1
  15. zenml/models/v2/core/step_run.py +22 -0
  16. zenml/orchestrators/base_orchestrator.py +12 -1
  17. zenml/orchestrators/step_launcher.py +2 -1
  18. zenml/orchestrators/utils.py +45 -26
  19. zenml/steps/utils.py +5 -0
  20. zenml/utils/metadata_utils.py +335 -0
  21. zenml/zen_server/auth.py +221 -3
  22. zenml/zen_server/cache.py +208 -0
  23. zenml/zen_server/dashboard/assets/{404-DT4QRUqN.js → 404-NVXKFp-x.js} +1 -1
  24. zenml/zen_server/dashboard/assets/{@radix-DP6vWzyx.js → @radix-DeK6qiuw.js} +1 -1
  25. zenml/zen_server/dashboard/assets/{@react-router-BMhZulnd.js → @react-router-B3Z5rLr2.js} +1 -1
  26. zenml/zen_server/dashboard/assets/{@reactflow-8U9qNlMR.js → @reactflow-CK0KJUen.js} +2 -2
  27. zenml/zen_server/dashboard/assets/{@tanstack-BUCbhJyH.js → @tanstack-DT5WLu9C.js} +1 -1
  28. zenml/zen_server/dashboard/assets/AlertDialogDropdownItem-DezXKmDf.js +1 -0
  29. zenml/zen_server/dashboard/assets/{CodeSnippet-CqybNv0k.js → CodeSnippet-JzR8CEtw.js} +2 -2
  30. zenml/zen_server/dashboard/assets/{CollapsibleCard-0r_8G2Lj.js → CollapsibleCard-DQW_ktMO.js} +1 -1
  31. zenml/zen_server/dashboard/assets/{Commands-BDjgBQKi.js → Commands-DL2kwkRd.js} +1 -1
  32. zenml/zen_server/dashboard/assets/ComponentBadge-D_g62Wv8.js +1 -0
  33. zenml/zen_server/dashboard/assets/{CopyButton-C745BrKi.js → CopyButton-LNcWaa14.js} +1 -1
  34. zenml/zen_server/dashboard/assets/{CsvVizualization-PpAq0CeZ.js → CsvVizualization-DknpE5ej.js} +5 -5
  35. zenml/zen_server/dashboard/assets/{DialogItem-DcVCZEew.js → DialogItem-Bxf8FuAT.js} +1 -1
  36. zenml/zen_server/dashboard/assets/{DisplayDate-BeXgUG_C.js → DisplayDate-CDMUcQHS.js} +1 -1
  37. zenml/zen_server/dashboard/assets/{EmptyState-DeK7H4pr.js → EmptyState-BzdlCwp3.js} +1 -1
  38. zenml/zen_server/dashboard/assets/{Error-BMlzibXj.js → Error-DYflYyps.js} +1 -1
  39. zenml/zen_server/dashboard/assets/ExecutionStatus-C7zyIQKZ.js +1 -0
  40. zenml/zen_server/dashboard/assets/{Helpbox-BLf40fLV.js → Helpbox-oYSGpLqd.js} +1 -1
  41. zenml/zen_server/dashboard/assets/{Infobox-BwisKifi.js → Infobox-Cx4xGoXR.js} +1 -1
  42. zenml/zen_server/dashboard/assets/{InlineAvatar-jEgodSgX.js → InlineAvatar-DiGOWNKF.js} +1 -1
  43. zenml/zen_server/dashboard/assets/{Lock-3lLt1ih0.js → Lock-CYYy18Mm.js} +1 -1
  44. zenml/zen_server/dashboard/assets/{MarkdownVisualization-8O9kTr-2.js → MarkdownVisualization-ylXaAxev.js} +1 -1
  45. zenml/zen_server/dashboard/assets/NestedCollapsible-DYbgyKxK.js +1 -0
  46. zenml/zen_server/dashboard/assets/{NumberBox-T9eELfLZ.js → NumberBox-Dtp3J6g5.js} +1 -1
  47. zenml/zen_server/dashboard/assets/Partials-03iZf8-N.js +1 -0
  48. zenml/zen_server/dashboard/assets/{PasswordChecker-CW0kqY0W.js → PasswordChecker-B0nadgh6.js} +1 -1
  49. zenml/zen_server/dashboard/assets/ProBadge-D_EB8HNo.js +1 -0
  50. zenml/zen_server/dashboard/assets/ProCta-DqNS4v3x.js +1 -0
  51. zenml/zen_server/dashboard/assets/ProviderIcon-Bki2aw8w.js +1 -0
  52. zenml/zen_server/dashboard/assets/{ProviderRadio-BROY1700.js → ProviderRadio-8f43sPD4.js} +1 -1
  53. zenml/zen_server/dashboard/assets/RunSelector-DkPiIiNr.js +1 -0
  54. zenml/zen_server/dashboard/assets/RunsBody-07YEO7qI.js +1 -0
  55. zenml/zen_server/dashboard/assets/SearchField-lp1KgU4e.js +1 -0
  56. zenml/zen_server/dashboard/assets/{SecretTooltip-C_qByGWB.js → SecretTooltip-CgnbyeOx.js} +1 -1
  57. zenml/zen_server/dashboard/assets/{SetPassword-7pRB00El.js → SetPassword-CpP418A2.js} +1 -1
  58. zenml/zen_server/dashboard/assets/StackList-WvuKQusZ.js +1 -0
  59. zenml/zen_server/dashboard/assets/Tabs-BktHkCJJ.js +1 -0
  60. zenml/zen_server/dashboard/assets/Tick-BlMoIlJT.js +1 -0
  61. zenml/zen_server/dashboard/assets/{UpdatePasswordSchemas-DckMEkFf.js → UpdatePasswordSchemas-Sc0A0pP-.js} +1 -1
  62. zenml/zen_server/dashboard/assets/{UsageReason-DVceN14P.js → UsageReason-YYduL4fj.js} +1 -1
  63. zenml/zen_server/dashboard/assets/{WizardFooter-CW0Cvd70.js → WizardFooter-dgmizSJC.js} +1 -1
  64. zenml/zen_server/dashboard/assets/all-pipeline-runs-query-D-c2G6lV.js +1 -0
  65. zenml/zen_server/dashboard/assets/check-DloQpStc.js +1 -0
  66. zenml/zen_server/dashboard/assets/{check-circle-Dwxliy1Z.js → check-circle-jNbX5-sR.js} +1 -1
  67. zenml/zen_server/dashboard/assets/{chevron-down-8wLBS5pQ.js → chevron-down-6JyMkfjR.js} +1 -1
  68. zenml/zen_server/dashboard/assets/{chevron-right-double-DoD8iXWM.js → chevron-right-double-D7ojK9Co.js} +1 -1
  69. zenml/zen_server/dashboard/assets/{code-browser-CZUQs3Wa.js → code-browser-CUFUIHfp.js} +1 -1
  70. zenml/zen_server/dashboard/assets/{copy-CaSMXwiU.js → copy-C8XQA2Ug.js} +1 -1
  71. zenml/zen_server/dashboard/assets/create-stack-DM_JPgef.js +1 -0
  72. zenml/zen_server/dashboard/assets/delete-run-CJdh1P_h.js +1 -0
  73. zenml/zen_server/dashboard/assets/{docker-BFNgg-z3.js → docker-BdA9vrnW.js} +1 -1
  74. zenml/zen_server/dashboard/assets/{dots-horizontal-DK5Duzx4.js → dots-horizontal-otGBOSDJ.js} +1 -1
  75. zenml/zen_server/dashboard/assets/{form-schemas-1AyOCx90.js → form-schemas-K6FYKjwa.js} +1 -1
  76. zenml/zen_server/dashboard/assets/{gcp-7M2Yf3ZK.js → gcp-CFtm4BA7.js} +1 -1
  77. zenml/zen_server/dashboard/assets/{help-Dam461dC.js → help-Cc9bBIJH.js} +1 -1
  78. zenml/zen_server/dashboard/assets/index-B1mVPYxf.js +1 -0
  79. zenml/zen_server/dashboard/assets/index-BAkC7FXi.js +1 -0
  80. zenml/zen_server/dashboard/assets/{index-QQb7wQEC.js → index-CCOPpudF.js} +8 -8
  81. zenml/zen_server/dashboard/assets/index-CEV4Cvaf.js +1 -0
  82. zenml/zen_server/dashboard/assets/index-DlGvJQPn.css +1 -0
  83. zenml/zen_server/dashboard/assets/{index-BVJ8n2-j.js → index-Uu49AX48.js} +1 -1
  84. zenml/zen_server/dashboard/assets/{index.esm-cuVep_NJ.js → index.esm-Dy6Z9Ung.js} +1 -1
  85. zenml/zen_server/dashboard/assets/{kubernetes--g7r02Zu.js → kubernetes-B2wmAJ1d.js} +1 -1
  86. zenml/zen_server/dashboard/assets/{layout-DCSYN7-C.js → layout-BtHBmE4w.js} +1 -1
  87. zenml/zen_server/dashboard/assets/{link-external-CBEk6kEG.js → link-external-b9AXw_sW.js} +1 -1
  88. zenml/zen_server/dashboard/assets/{login-mutation-DTcAFP1l.js → login-mutation-hf-lK87O.js} +1 -1
  89. zenml/zen_server/dashboard/assets/{logs-D5bdJGur.js → logs-WMSM52RF.js} +1 -1
  90. zenml/zen_server/dashboard/assets/{not-found-Cc-JkRH2.js → not-found-BGirLjU-.js} +1 -1
  91. zenml/zen_server/dashboard/assets/{package-Cs35Szwh.js → package-C6uypY4h.js} +1 -1
  92. zenml/zen_server/dashboard/assets/page-0JE_-Ec1.js +1 -0
  93. zenml/zen_server/dashboard/assets/{page-DH_Z7iW1.js → page-6m6yHHlE.js} +1 -1
  94. zenml/zen_server/dashboard/assets/page-BDigxVpo.js +1 -0
  95. zenml/zen_server/dashboard/assets/page-BR68V0V1.js +1 -0
  96. zenml/zen_server/dashboard/assets/page-BRLpxOt0.js +1 -0
  97. zenml/zen_server/dashboard/assets/{page-BQQKaabe.js → page-BU7huvKw.js} +3 -3
  98. zenml/zen_server/dashboard/assets/page-BvqLv2Ky.js +1 -0
  99. zenml/zen_server/dashboard/assets/page-C00YAkaB.js +1 -0
  100. zenml/zen_server/dashboard/assets/{page-N4qoPHKb.js → page-CD-DcWoy.js} +1 -1
  101. zenml/zen_server/dashboard/assets/page-COXXJj1k.js +1 -0
  102. zenml/zen_server/dashboard/assets/page-CbpvrsDL.js +1 -0
  103. zenml/zen_server/dashboard/assets/page-CdMWnQak.js +1 -0
  104. zenml/zen_server/dashboard/assets/{page-ClUVkl-O.js → page-CjGdWY13.js} +1 -1
  105. zenml/zen_server/dashboard/assets/page-CwxrFarU.js +1 -0
  106. zenml/zen_server/dashboard/assets/{page-DLixvR-7.js → page-D01JhjQB.js} +1 -1
  107. zenml/zen_server/dashboard/assets/page-D6uU2ax4.js +1 -0
  108. zenml/zen_server/dashboard/assets/page-D7S3aCbF.js +1 -0
  109. zenml/zen_server/dashboard/assets/{page-9yplj5JT.js → page-DLC-bNBP.js} +1 -1
  110. zenml/zen_server/dashboard/assets/page-DXSTpqRD.js +1 -0
  111. zenml/zen_server/dashboard/assets/{page-DzpVUZ8f.js → page-DakHVWXF.js} +1 -1
  112. zenml/zen_server/dashboard/assets/{page-DIOXwhiD.js → page-Df-Fw0aq.js} +1 -1
  113. zenml/zen_server/dashboard/assets/{page-B-y2XKIc.js → page-DfbXf_8s.js} +1 -1
  114. zenml/zen_server/dashboard/assets/page-DjRJCGb3.js +1 -0
  115. zenml/zen_server/dashboard/assets/{page-C0N5q3l7.js → page-Djikxq_S.js} +1 -1
  116. zenml/zen_server/dashboard/assets/page-Dnovpa0i.js +3 -0
  117. zenml/zen_server/dashboard/assets/page-Dot3LPmL.js +1 -0
  118. zenml/zen_server/dashboard/assets/page-Vcxara9U.js +1 -0
  119. zenml/zen_server/dashboard/assets/page-Xynx4btY.js +14 -0
  120. zenml/zen_server/dashboard/assets/page-YpKAqVSa.js +1 -0
  121. zenml/zen_server/dashboard/assets/page-yYC9OI-E.js +1 -0
  122. zenml/zen_server/dashboard/assets/{persist-DNb5cdrU.js → persist-Coz7ZWvz.js} +1 -1
  123. zenml/zen_server/dashboard/assets/{persist-CP0JmYZ4.js → persist-GjC8PZoC.js} +1 -1
  124. zenml/zen_server/dashboard/assets/{plus-C9IxgN2M.js → plus-tf1V2hTJ.js} +1 -1
  125. zenml/zen_server/dashboard/assets/{refresh-BVu22P_C.js → refresh-BjOeWlEq.js} +1 -1
  126. zenml/zen_server/dashboard/assets/{rocket-CONEmRmB.js → rocket-DjT2cDvG.js} +1 -1
  127. zenml/zen_server/dashboard/assets/sharedSchema-CQb14VSr.js +14 -0
  128. zenml/zen_server/dashboard/assets/stack-detail-query-OPEW-cDJ.js +1 -0
  129. zenml/zen_server/dashboard/assets/{tick-circle-CM1ZScbQ.js → tick-circle-BEX_Tp4v.js} +1 -1
  130. zenml/zen_server/dashboard/assets/{trash-DkJHMOg7.js → trash-arLUMWMS.js} +1 -1
  131. zenml/zen_server/dashboard/assets/{update-server-settings-mutation-DsU8cNVl.js → update-server-settings-mutation-LwuQfHYn.js} +1 -1
  132. zenml/zen_server/dashboard/assets/upgrade-form-CwRHBuXB.webp +0 -0
  133. zenml/zen_server/dashboard/assets/url-CkvKAnwF.js +1 -0
  134. zenml/zen_server/dashboard/assets/{zod-D89GC_vc.js → zod-BwEbpOxH.js} +1 -1
  135. zenml/zen_server/dashboard/index.html +7 -7
  136. zenml/zen_server/deploy/helm/Chart.yaml +1 -1
  137. zenml/zen_server/deploy/helm/README.md +2 -2
  138. zenml/zen_server/jwt.py +30 -13
  139. zenml/zen_server/routers/auth_endpoints.py +134 -102
  140. zenml/zen_server/template_execution/utils.py +14 -16
  141. zenml/zen_server/utils.py +27 -0
  142. zenml/zen_server/zen_server_api.py +4 -1
  143. zenml/zen_stores/migrations/versions/0.70.0_release.py +23 -0
  144. zenml/zen_stores/rest_zen_store.py +13 -10
  145. {zenml_nightly-0.68.1.dev20241112.dist-info → zenml_nightly-0.70.0.dev20241114.dist-info}/METADATA +2 -2
  146. {zenml_nightly-0.68.1.dev20241112.dist-info → zenml_nightly-0.70.0.dev20241114.dist-info}/RECORD +149 -137
  147. zenml/zen_server/dashboard/assets/AlertDialogDropdownItem-C6N2rGrB.js +0 -1
  148. zenml/zen_server/dashboard/assets/ComponentBadge-DUiEYJHu.js +0 -1
  149. zenml/zen_server/dashboard/assets/ComponentFallbackDialog-BFoH5K4V.js +0 -1
  150. zenml/zen_server/dashboard/assets/ComponentIcon-CAIoUis2.js +0 -1
  151. zenml/zen_server/dashboard/assets/Partials-YPBB3V4q.js +0 -1
  152. zenml/zen_server/dashboard/assets/ProviderIcon-Bb3Xha5A.js +0 -1
  153. zenml/zen_server/dashboard/assets/RunSelector-DCiL3M1c.js +0 -1
  154. zenml/zen_server/dashboard/assets/SearchField-DfUiGFVd.js +0 -1
  155. zenml/zen_server/dashboard/assets/Tick-CykQFPj2.js +0 -1
  156. zenml/zen_server/dashboard/assets/cloud-only-B-s_HMDm.js +0 -1
  157. zenml/zen_server/dashboard/assets/codespaces-BitYDX9d.gif +0 -0
  158. zenml/zen_server/dashboard/assets/create-stack-CEmaPZ4c.js +0 -1
  159. zenml/zen_server/dashboard/assets/delete-run-D-LKbGyz.js +0 -1
  160. zenml/zen_server/dashboard/assets/index-Bpmj40BI.js +0 -1
  161. zenml/zen_server/dashboard/assets/index-CbU4Ln_E.css +0 -1
  162. zenml/zen_server/dashboard/assets/index-DKPhqP2B.js +0 -1
  163. zenml/zen_server/dashboard/assets/page-BBpOxVcY.js +0 -1
  164. zenml/zen_server/dashboard/assets/page-BRInM1Lg.js +0 -1
  165. zenml/zen_server/dashboard/assets/page-BjjlMk7s.js +0 -1
  166. zenml/zen_server/dashboard/assets/page-Bvd7YH2A.js +0 -1
  167. zenml/zen_server/dashboard/assets/page-CT3Nep8W.js +0 -1
  168. zenml/zen_server/dashboard/assets/page-C_f47pBf.js +0 -1
  169. zenml/zen_server/dashboard/assets/page-Cmv8C_yM.js +0 -3
  170. zenml/zen_server/dashboard/assets/page-CyN2bdWG.js +0 -1
  171. zenml/zen_server/dashboard/assets/page-CzzXH4fs.js +0 -1
  172. zenml/zen_server/dashboard/assets/page-DTlGjgnG.js +0 -1
  173. zenml/zen_server/dashboard/assets/page-Dbpl86h0.js +0 -1
  174. zenml/zen_server/dashboard/assets/page-Ddgy6kDS.js +0 -1
  175. zenml/zen_server/dashboard/assets/page-DtCAfBLy.js +0 -9
  176. zenml/zen_server/dashboard/assets/page-Dx16z7nA.js +0 -1
  177. zenml/zen_server/dashboard/assets/page-McUyYbo1.js +0 -1
  178. zenml/zen_server/dashboard/assets/page-T1P3RyAR.js +0 -1
  179. zenml/zen_server/dashboard/assets/page-bKaULTGG.js +0 -1
  180. zenml/zen_server/dashboard/assets/page-sbXUJy9t.js +0 -1
  181. zenml/zen_server/dashboard/assets/sharedSchema-TMLu-nYQ.js +0 -14
  182. zenml/zen_server/dashboard/assets/stack-detail-query-xmYxSsUY.js +0 -1
  183. zenml/zen_server/dashboard/assets/url-D5le3J4q.js +0 -1
  184. {zenml_nightly-0.68.1.dev20241112.dist-info → zenml_nightly-0.70.0.dev20241114.dist-info}/LICENSE +0 -0
  185. {zenml_nightly-0.68.1.dev20241112.dist-info → zenml_nightly-0.70.0.dev20241114.dist-info}/WHEEL +0 -0
  186. {zenml_nightly-0.68.1.dev20241112.dist-info → zenml_nightly-0.70.0.dev20241114.dist-info}/entry_points.txt +0 -0
@@ -42,7 +42,7 @@ from zenml.pipelines.run_utils import (
42
42
  )
43
43
  from zenml.stack.flavor import Flavor
44
44
  from zenml.utils import dict_utils, requirements_utils, settings_utils
45
- from zenml.zen_server.auth import AuthContext
45
+ from zenml.zen_server.auth import AuthContext, generate_access_token
46
46
  from zenml.zen_server.template_execution.runner_entrypoint_configuration import (
47
47
  RunnerEntrypointConfiguration,
48
48
  )
@@ -111,17 +111,6 @@ def run_template(
111
111
 
112
112
  new_deployment = zen_store().create_deployment(deployment_request)
113
113
 
114
- if auth_context.access_token:
115
- token = auth_context.access_token
116
- token.pipeline_id = deployment_request.pipeline
117
-
118
- # We create a non-expiring token to make sure its active for the entire
119
- # duration of the pipeline run
120
- api_token = token.encode(expires=None)
121
- else:
122
- assert auth_context.encoded_access_token
123
- api_token = auth_context.encoded_access_token
124
-
125
114
  server_url = server_config().server_url
126
115
  if not server_url:
127
116
  raise RuntimeError(
@@ -130,6 +119,18 @@ def run_template(
130
119
  assert build.zenml_version
131
120
  zenml_version = build.zenml_version
132
121
 
122
+ placeholder_run = create_placeholder_run(deployment=new_deployment)
123
+ assert placeholder_run
124
+
125
+ # We create an API token scoped to the pipeline run
126
+ api_token = generate_access_token(
127
+ user_id=auth_context.user.id,
128
+ pipeline_run_id=placeholder_run.id,
129
+ # Keep the original API key or device scopes, if any
130
+ api_key=auth_context.api_key,
131
+ device=auth_context.device,
132
+ ).access_token
133
+
133
134
  environment = {
134
135
  ENV_ZENML_ACTIVE_WORKSPACE_ID: str(new_deployment.workspace.id),
135
136
  ENV_ZENML_ACTIVE_STACK_ID: str(stack.id),
@@ -145,9 +146,6 @@ def run_template(
145
146
  deployment_id=new_deployment.id
146
147
  )
147
148
 
148
- placeholder_run = create_placeholder_run(deployment=new_deployment)
149
- assert placeholder_run
150
-
151
149
  def _task() -> None:
152
150
  pypi_requirements, apt_packages = (
153
151
  requirements_utils.get_requirements_for_stack(stack=stack)
@@ -350,7 +348,7 @@ def deployment_request_from_template(
350
348
  )
351
349
 
352
350
  step_config_dict_base = pipeline_configuration.model_dump(
353
- exclude={"name", "parameters"}
351
+ exclude={"name", "parameters", "tags"}
354
352
  )
355
353
  steps = {}
356
354
  for invocation_id, step in deployment.step_configurations.items():
zenml/zen_server/utils.py CHANGED
@@ -43,6 +43,7 @@ from zenml.enums import StoreType
43
43
  from zenml.exceptions import IllegalOperationError, OAuthError
44
44
  from zenml.logger import get_logger
45
45
  from zenml.plugins.plugin_flavor_registry import PluginFlavorRegistry
46
+ from zenml.zen_server.cache import MemoryCache
46
47
  from zenml.zen_server.deploy.deployment import (
47
48
  LocalServerDeployment,
48
49
  )
@@ -67,6 +68,7 @@ _rbac: Optional[RBACInterface] = None
67
68
  _feature_gate: Optional[FeatureGateInterface] = None
68
69
  _workload_manager: Optional[WorkloadManagerInterface] = None
69
70
  _plugin_flavor_registry: Optional[PluginFlavorRegistry] = None
71
+ _memcache: Optional[MemoryCache] = None
70
72
 
71
73
 
72
74
  def zen_store() -> "SqlZenStore":
@@ -222,6 +224,31 @@ def initialize_zen_store() -> None:
222
224
  _zen_store = zen_store_
223
225
 
224
226
 
227
+ def initialize_memcache(max_capacity: int, default_expiry: int) -> None:
228
+ """Initialize the memory cache.
229
+
230
+ Args:
231
+ max_capacity: The maximum capacity of the cache.
232
+ default_expiry: The default expiry time in seconds.
233
+ """
234
+ global _memcache
235
+ _memcache = MemoryCache(max_capacity, default_expiry)
236
+
237
+
238
+ def memcache() -> MemoryCache:
239
+ """Return the memory cache.
240
+
241
+ Returns:
242
+ The memory cache.
243
+
244
+ Raises:
245
+ RuntimeError: If the memory cache is not initialized.
246
+ """
247
+ if _memcache is None:
248
+ raise RuntimeError("Memory cache not initialized")
249
+ return _memcache
250
+
251
+
225
252
  _server_config: Optional[ServerConfiguration] = None
226
253
 
227
254
 
@@ -95,6 +95,7 @@ from zenml.zen_server.secure_headers import (
95
95
  )
96
96
  from zenml.zen_server.utils import (
97
97
  initialize_feature_gate,
98
+ initialize_memcache,
98
99
  initialize_plugins,
99
100
  initialize_rbac,
100
101
  initialize_workload_manager,
@@ -335,9 +336,10 @@ async def infer_source_context(request: Request, call_next: Any) -> Any:
335
336
  @app.on_event("startup")
336
337
  def initialize() -> None:
337
338
  """Initialize the ZenML server."""
339
+ cfg = server_config()
338
340
  # Set the maximum number of worker threads
339
341
  to_thread.current_default_thread_limiter().total_tokens = (
340
- server_config().thread_pool_size
342
+ cfg.thread_pool_size
341
343
  )
342
344
  # IMPORTANT: these need to be run before the fastapi app starts, to avoid
343
345
  # race conditions
@@ -347,6 +349,7 @@ def initialize() -> None:
347
349
  initialize_workload_manager()
348
350
  initialize_plugins()
349
351
  initialize_secure_headers()
352
+ initialize_memcache(cfg.memcache_max_capacity, cfg.memcache_default_expiry)
350
353
 
351
354
 
352
355
  DASHBOARD_REDIRECT_URL = None
@@ -0,0 +1,23 @@
1
+ """Release [0.70.0].
2
+
3
+ Revision ID: 0.70.0
4
+ Revises: 904464ea4041
5
+ Create Date: 2024-11-12 12:20:05.537646
6
+
7
+ """
8
+
9
+ # revision identifiers, used by Alembic.
10
+ revision = "0.70.0"
11
+ down_revision = "904464ea4041"
12
+ branch_labels = None
13
+ depends_on = None
14
+
15
+
16
+ def upgrade() -> None:
17
+ """Upgrade database schema and/or data, creating a new revision."""
18
+ pass
19
+
20
+
21
+ def downgrade() -> None:
22
+ """Downgrade database schema and/or data back to the previous revision."""
23
+ pass
@@ -110,6 +110,7 @@ from zenml.constants import (
110
110
  WORKSPACES,
111
111
  )
112
112
  from zenml.enums import (
113
+ APITokenType,
113
114
  OAuthGrantTypes,
114
115
  StackDeploymentProvider,
115
116
  StoreType,
@@ -3872,17 +3873,16 @@ class RestZenStore(BaseZenStore):
3872
3873
 
3873
3874
  def get_api_token(
3874
3875
  self,
3875
- pipeline_id: Optional[UUID] = None,
3876
3876
  schedule_id: Optional[UUID] = None,
3877
- expires_minutes: Optional[int] = None,
3877
+ pipeline_run_id: Optional[UUID] = None,
3878
+ step_run_id: Optional[UUID] = None,
3878
3879
  ) -> str:
3879
3880
  """Get an API token for a workload.
3880
3881
 
3881
3882
  Args:
3882
- pipeline_id: The ID of the pipeline to get a token for.
3883
3883
  schedule_id: The ID of the schedule to get a token for.
3884
- expires_minutes: The number of minutes for which the token should
3885
- be valid. If not provided, the token will be valid indefinitely.
3884
+ pipeline_run_id: The ID of the pipeline run to get a token for.
3885
+ step_run_id: The ID of the step run to get a token for.
3886
3886
 
3887
3887
  Returns:
3888
3888
  The API token.
@@ -3890,13 +3890,16 @@ class RestZenStore(BaseZenStore):
3890
3890
  Raises:
3891
3891
  ValueError: if the server response is not valid.
3892
3892
  """
3893
- params: Dict[str, Any] = {}
3894
- if pipeline_id:
3895
- params["pipeline_id"] = pipeline_id
3893
+ params: Dict[str, Any] = {
3894
+ # Python clients may only request workload tokens.
3895
+ "token_type": APITokenType.WORKLOAD.value,
3896
+ }
3896
3897
  if schedule_id:
3897
3898
  params["schedule_id"] = schedule_id
3898
- if expires_minutes:
3899
- params["expires_minutes"] = expires_minutes
3899
+ if pipeline_run_id:
3900
+ params["pipeline_run_id"] = pipeline_run_id
3901
+ if step_run_id:
3902
+ params["step_run_id"] = step_run_id
3900
3903
  response_body = self.get(API_TOKEN, params=params)
3901
3904
  if not isinstance(response_body, str):
3902
3905
  raise ValueError(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: zenml-nightly
3
- Version: 0.68.1.dev20241112
3
+ Version: 0.70.0.dev20241114
4
4
  Summary: ZenML: Write production-ready ML code.
5
5
  Home-page: https://zenml.io
6
6
  License: Apache-2.0
@@ -474,7 +474,7 @@ the Apache License Version 2.0.
474
474
  <a href="https://github.com/zenml-io/zenml-projects">Projects Showcase</a>
475
475
  <br />
476
476
  <br />
477
- 🎉 Version 0.68.1 is out. Check out the release notes
477
+ 🎉 Version 0.70.0 is out. Check out the release notes
478
478
  <a href="https://github.com/zenml-io/zenml/releases">here</a>.
479
479
  <br />
480
480
  🖥️ Download our VS Code Extension <a href="https://marketplace.visualstudio.com/items?itemName=ZenML.zenml-vscode">here</a>.