zenml-nightly 0.58.2.dev20240625__py3-none-any.whl → 0.60.0.dev20240627__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 (75) hide show
  1. README.md +1 -1
  2. RELEASE_NOTES.md +206 -0
  3. zenml/VERSION +1 -1
  4. zenml/artifact_stores/base_artifact_store.py +7 -1
  5. zenml/artifacts/utils.py +13 -10
  6. zenml/cli/service_connectors.py +1 -0
  7. zenml/client.py +8 -3
  8. zenml/integrations/gcp/google_credentials_mixin.py +1 -1
  9. zenml/integrations/gcp/service_connectors/gcp_service_connector.py +64 -15
  10. zenml/integrations/s3/artifact_stores/s3_artifact_store.py +76 -3
  11. zenml/logging/step_logging.py +54 -51
  12. zenml/stack/stack_component.py +4 -0
  13. zenml/zen_server/dashboard/assets/{404-CDPQCl4D.js → 404-C1mcUujL.js} +1 -1
  14. zenml/zen_server/dashboard/assets/{@reactflow-CHBapDaj.js → @reactflow-DYIyhCfd.js} +1 -1
  15. zenml/zen_server/dashboard/assets/{AwarenessChannel-nXGpmj_f.js → AwarenessChannel-B2KR83Tr.js} +1 -1
  16. zenml/zen_server/dashboard/assets/{Cards-nwsvQLVS.js → Cards-DSEdjsk8.js} +1 -1
  17. zenml/zen_server/dashboard/assets/{CodeSnippet-BidtnWOi.js → CodeSnippet-WEzpO0az.js} +1 -1
  18. zenml/zen_server/dashboard/assets/{Commands-DuIWKg_Q.js → Commands-CTlhyic5.js} +1 -1
  19. zenml/zen_server/dashboard/assets/{CopyButton-B_YSm-Ds.js → CopyButton-CTrzKmUO.js} +1 -1
  20. zenml/zen_server/dashboard/assets/{CsvVizualization-BOuez-fG.js → CsvVizualization-Bx931j4U.js} +1 -1
  21. zenml/zen_server/dashboard/assets/{Error-B6M0dPph.js → Error-4sKxHad4.js} +1 -1
  22. zenml/zen_server/dashboard/assets/{Helpbox-BQoqCm04.js → Helpbox-DW21i5LD.js} +1 -1
  23. zenml/zen_server/dashboard/assets/{Infobox-Ce9mefqU.js → Infobox-C7bf70VS.js} +1 -1
  24. zenml/zen_server/dashboard/assets/{InlineAvatar-DGf3dVhV.js → InlineAvatar-Dxrtafpg.js} +1 -1
  25. zenml/zen_server/dashboard/assets/{PageHeader-DGaemzjc.js → PageHeader-B0pUife2.js} +1 -1
  26. zenml/zen_server/dashboard/assets/{Pagination-DVYfBCCc.js → Pagination-B9WG_9cJ.js} +1 -1
  27. zenml/zen_server/dashboard/assets/{SetPassword-B5s7DJug.js → SetPassword-CiNhT15a.js} +1 -1
  28. zenml/zen_server/dashboard/assets/{SuccessStep-ZzczaM7g.js → SuccessStep-CykrFndS.js} +1 -1
  29. zenml/zen_server/dashboard/assets/{UpdatePasswordSchemas-DnM-c11H.js → UpdatePasswordSchemas-CKrd3UZz.js} +1 -1
  30. zenml/zen_server/dashboard/assets/{cloud-only-Ba_ShBR5.js → cloud-only-Bkawp7CJ.js} +1 -1
  31. zenml/zen_server/dashboard/assets/{index-QORVVTMN.js → index-BawkpTlr.js} +3 -3
  32. zenml/zen_server/dashboard/assets/index-CRmm7QhS.css +1 -0
  33. zenml/zen_server/dashboard/assets/{login-mutation-wzzl23C6.js → login-mutation-Bk2tn324.js} +1 -1
  34. zenml/zen_server/dashboard/assets/{not-found-Dh2la7kh.js → not-found-BAuhP4Jb.js} +1 -1
  35. zenml/zen_server/dashboard/assets/{page-DdaIt20-.js → page--5YvAHg3.js} +1 -1
  36. zenml/zen_server/dashboard/assets/{page-AQKopn_4.js → page-8vRWJ5b8.js} +1 -1
  37. zenml/zen_server/dashboard/assets/{page-LqLs24Ot.js → page-B0RAq4s_.js} +1 -1
  38. zenml/zen_server/dashboard/assets/{page-ByrHy6Ss.js → page-BePtEPHl.js} +1 -1
  39. zenml/zen_server/dashboard/assets/page-C1pra1Bc.js +9 -0
  40. zenml/zen_server/dashboard/assets/{page-BW6Ket3a.js → page-C6v3o0Qj.js} +1 -1
  41. zenml/zen_server/dashboard/assets/page-CBuSUrE9.js +1 -0
  42. zenml/zen_server/dashboard/assets/{page-CuT1SUik.js → page-CCtCgG-x.js} +1 -1
  43. zenml/zen_server/dashboard/assets/{page-yN4rZ-ZS.js → page-CH26py0a.js} +1 -1
  44. zenml/zen_server/dashboard/assets/{page-Bi5AI0S7.js → page-COafKNbw.js} +1 -1
  45. zenml/zen_server/dashboard/assets/{page-DAQQyLxT.js → page-CSs4C9jL.js} +1 -1
  46. zenml/zen_server/dashboard/assets/{page-CmmukLsl.js → page-Cf2XSej0.js} +1 -1
  47. zenml/zen_server/dashboard/assets/{page-BQxVFlUl.js → page-ClPUAE_f.js} +1 -1
  48. zenml/zen_server/dashboard/assets/{page-BmkSiYeQ.js → page-D12Rvf0j.js} +2 -2
  49. zenml/zen_server/dashboard/assets/{page-B0BrqfS8.js → page-D8pf2vis.js} +1 -1
  50. zenml/zen_server/dashboard/assets/{page-B-vWk8a6.js → page-DHKMmIQH.js} +1 -1
  51. zenml/zen_server/dashboard/assets/{page-lebv0c7C.js → page-DMZ0VOda.js} +1 -1
  52. zenml/zen_server/dashboard/assets/{page-CPtY4Kv_.js → page-Dcg-yQv_.js} +1 -1
  53. zenml/zen_server/dashboard/assets/{page-B-5jAKoO.js → page-DoAK5FSB.js} +1 -1
  54. zenml/zen_server/dashboard/assets/{page-BzVZGExK.js → page-Dw9-aJV6.js} +1 -1
  55. zenml/zen_server/dashboard/assets/{page-DZCbwOEs.js → page-iXiDqE0J.js} +1 -1
  56. zenml/zen_server/dashboard/assets/{update-server-settings-mutation-0Wgz8pUE.js → update-server-settings-mutation-bKxf7U9h.js} +1 -1
  57. zenml/zen_server/dashboard/assets/{url-6_xv0WJS.js → url-CgvM-IVM.js} +1 -1
  58. zenml/zen_server/dashboard/index.html +4 -4
  59. zenml/zen_server/dashboard_legacy/asset-manifest.json +4 -4
  60. zenml/zen_server/dashboard_legacy/index.html +1 -1
  61. zenml/zen_server/dashboard_legacy/{precache-manifest.f4abc5b7cfa7d90c1caf5521918e29a8.js → precache-manifest.e7c29295aae591541ef59d1734d79387.js} +4 -4
  62. zenml/zen_server/dashboard_legacy/service-worker.js +1 -1
  63. zenml/zen_server/dashboard_legacy/static/js/{main.ac2f17d0.chunk.js → main.53857d8b.chunk.js} +2 -2
  64. zenml/zen_server/dashboard_legacy/static/js/{main.ac2f17d0.chunk.js.map → main.53857d8b.chunk.js.map} +1 -1
  65. zenml/zen_server/deploy/helm/Chart.yaml +1 -1
  66. zenml/zen_server/deploy/helm/README.md +2 -2
  67. zenml/zen_stores/migrations/versions/0.60.0_release.py +23 -0
  68. {zenml_nightly-0.58.2.dev20240625.dist-info → zenml_nightly-0.60.0.dev20240627.dist-info}/METADATA +3 -3
  69. {zenml_nightly-0.58.2.dev20240625.dist-info → zenml_nightly-0.60.0.dev20240627.dist-info}/RECORD +72 -71
  70. zenml/zen_server/dashboard/assets/index-CWJ3xbIf.css +0 -1
  71. zenml/zen_server/dashboard/assets/page-D2D-7qyr.js +0 -9
  72. zenml/zen_server/dashboard/assets/page-DHkUMl_E.js +0 -1
  73. {zenml_nightly-0.58.2.dev20240625.dist-info → zenml_nightly-0.60.0.dev20240627.dist-info}/LICENSE +0 -0
  74. {zenml_nightly-0.58.2.dev20240625.dist-info → zenml_nightly-0.60.0.dev20240627.dist-info}/WHEEL +0 -0
  75. {zenml_nightly-0.58.2.dev20240625.dist-info → zenml_nightly-0.60.0.dev20240627.dist-info}/entry_points.txt +0 -0
@@ -145,61 +145,64 @@ def fetch_logs(
145
145
  )
146
146
 
147
147
  artifact_store = _load_artifact_store(artifact_store_id, zen_store)
148
- if not artifact_store.isdir(logs_uri):
149
- return _read_file(logs_uri, offset, length)
150
- else:
151
- files = artifact_store.listdir(logs_uri)
152
- if len(files) == 1:
153
- return _read_file(
154
- os.path.join(logs_uri, str(files[0])), offset, length
155
- )
148
+ try:
149
+ if not artifact_store.isdir(logs_uri):
150
+ return _read_file(logs_uri, offset, length)
156
151
  else:
157
- is_negative_offset = offset < 0
158
- files.sort(reverse=is_negative_offset)
159
-
160
- # search for the first file we need to read
161
- latest_file_id = 0
162
- for i, file in enumerate(files):
163
- file_size: int = artifact_store.size(
164
- os.path.join(logs_uri, str(file))
165
- ) # type: ignore[assignment]
166
-
167
- if is_negative_offset:
168
- if file_size >= -offset:
169
- latest_file_id = -(i + 1)
170
- break
152
+ files = artifact_store.listdir(logs_uri)
153
+ if len(files) == 1:
154
+ return _read_file(
155
+ os.path.join(logs_uri, str(files[0])), offset, length
156
+ )
157
+ else:
158
+ is_negative_offset = offset < 0
159
+ files.sort(reverse=is_negative_offset)
160
+
161
+ # search for the first file we need to read
162
+ latest_file_id = 0
163
+ for i, file in enumerate(files):
164
+ file_size: int = artifact_store.size(
165
+ os.path.join(logs_uri, str(file))
166
+ ) # type: ignore[assignment]
167
+
168
+ if is_negative_offset:
169
+ if file_size >= -offset:
170
+ latest_file_id = -(i + 1)
171
+ break
172
+ else:
173
+ offset += file_size
171
174
  else:
172
- offset += file_size
173
- else:
174
- if file_size > offset:
175
- latest_file_id = i
175
+ if file_size > offset:
176
+ latest_file_id = i
177
+ break
178
+ else:
179
+ offset -= file_size
180
+
181
+ # read the files according to pre-filtering
182
+ files.sort()
183
+ ret = []
184
+ for file in files[latest_file_id:]:
185
+ ret.append(
186
+ _read_file(
187
+ os.path.join(logs_uri, str(file)),
188
+ offset,
189
+ length,
190
+ )
191
+ )
192
+ offset = 0
193
+ length -= len(ret[-1])
194
+ if length <= 0:
195
+ # stop further reading, if the whole length is already read
176
196
  break
177
- else:
178
- offset -= file_size
179
-
180
- # read the files according to pre-filtering
181
- files.sort()
182
- ret = []
183
- for file in files[latest_file_id:]:
184
- ret.append(
185
- _read_file(
186
- os.path.join(logs_uri, str(file)),
187
- offset,
188
- length,
197
+
198
+ if not ret:
199
+ raise DoesNotExistException(
200
+ f"Folder '{logs_uri}' is empty in artifact store "
201
+ f"'{artifact_store.name}'."
189
202
  )
190
- )
191
- offset = 0
192
- length -= len(ret[-1])
193
- if length <= 0:
194
- # stop further reading, if the whole length is already read
195
- break
196
-
197
- if not ret:
198
- raise DoesNotExistException(
199
- f"Folder '{logs_uri}' is empty in artifact store "
200
- f"'{artifact_store.name}'."
201
- )
202
- return "".join(ret)
203
+ return "".join(ret)
204
+ finally:
205
+ artifact_store.cleanup()
203
206
 
204
207
 
205
208
  class StepLogsStorage:
@@ -827,6 +827,10 @@ class StackComponent:
827
827
  f"Suspending provisioned resources not implemented for {self}."
828
828
  )
829
829
 
830
+ def cleanup(self) -> None:
831
+ """Cleans up the component after it has been used."""
832
+ pass
833
+
830
834
  def __repr__(self) -> str:
831
835
  """String representation of the stack component.
832
836
 
@@ -1 +1 @@
1
- import{j as e}from"./@tanstack-CEbkxrhX.js";import{h as s,r as t}from"./index-QORVVTMN.js";import{E as r}from"./EmptyState-BkooiGtL.js";import{H as a}from"./help-B8rqCvqn.js";import{L as o}from"./@react-router-DYovave8.js";import"./@radix-C9DBgJhe.js";import"./@reactflow-CHBapDaj.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"./@tanstack-CEbkxrhX.js";import{h as s,r as t}from"./index-BawkpTlr.js";import{E as r}from"./EmptyState-BkooiGtL.js";import{H as a}from"./help-B8rqCvqn.js";import{L as o}from"./@react-router-DYovave8.js";import"./@radix-C9DBgJhe.js";import"./@reactflow-DYIyhCfd.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};