zenml-nightly 0.84.0.dev20250729__py3-none-any.whl → 0.84.1.dev20250731__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 (206) hide show
  1. zenml/VERSION +1 -1
  2. zenml/client.py +6 -1
  3. zenml/constants.py +28 -2
  4. zenml/integrations/gcp/__init__.py +4 -1
  5. zenml/logging/__init__.py +0 -11
  6. zenml/logging/step_logging.py +255 -149
  7. zenml/models/__init__.py +4 -0
  8. zenml/models/v2/core/service_account.py +87 -1
  9. zenml/models/v2/core/user.py +20 -6
  10. zenml/models/v2/misc/external_user.py +4 -1
  11. zenml/orchestrators/step_launcher.py +2 -4
  12. zenml/zen_server/auth.py +138 -27
  13. zenml/zen_server/dashboard/assets/{404-B5cfnwZ1.js → 404-CMbwR10f.js} +1 -1
  14. zenml/zen_server/dashboard/assets/{@radix-C_LirfyT.js → @radix-B1sy0Lhr.js} +1 -1
  15. zenml/zen_server/dashboard/assets/{@react-router-BSsrkPOd.js → @react-router-CHjLNlgw.js} +1 -1
  16. zenml/zen_server/dashboard/assets/{@reactflow-D9hglKLF.js → @reactflow-gbyyU3kq.js} +2 -2
  17. zenml/zen_server/dashboard/assets/{@tanstack-C0SeHZng.js → @tanstack-Dwlisomv.js} +1 -1
  18. zenml/zen_server/dashboard/assets/AlertDialogDropdownItem-BpLj419i.js +1 -0
  19. zenml/zen_server/dashboard/assets/ButtonGroup-DVhzbQxV.js +1 -0
  20. zenml/zen_server/dashboard/assets/{CodeSnippet-D8iBqOVv.js → CodeSnippet-B7Wd4R8u.js} +1 -1
  21. zenml/zen_server/dashboard/assets/{CollapsibleCard-D0-pQi1n.js → CollapsibleCard-DSZzbjx5.js} +1 -1
  22. zenml/zen_server/dashboard/assets/{ComponentBadge-mw2Ja_ON.js → ComponentBadge-MVT08kBV.js} +1 -1
  23. zenml/zen_server/dashboard/assets/{ComponentIcon-BXgpt-jw.js → ComponentIcon-C9AY8usJ.js} +1 -1
  24. zenml/zen_server/dashboard/assets/DeleteAlertDialog-CzhTVQaC.js +1 -0
  25. zenml/zen_server/dashboard/assets/{DialogItem-DeME0oSt.js → DialogItem-DD_7v3UY.js} +1 -1
  26. zenml/zen_server/dashboard/assets/{DisplayDate-v3KW7oez.js → DisplayDate-57lUNS79.js} +1 -1
  27. zenml/zen_server/dashboard/assets/{EmptyState-DG0m-CGv.js → EmptyState-BMA34iVR.js} +1 -1
  28. zenml/zen_server/dashboard/assets/{Error-DcVLcrLs.js → Error-Cakgjexo.js} +1 -1
  29. zenml/zen_server/dashboard/assets/{ExecutionStatus-C4tlFnlh.js → ExecutionStatus-CQbWovhV.js} +1 -1
  30. zenml/zen_server/dashboard/assets/{Helpbox-C-RGHz3S.js → Helpbox-7FZpmsHB.js} +1 -1
  31. zenml/zen_server/dashboard/assets/{Infobox-DFCWPbMb.js → Infobox-DnduZjNU.js} +1 -1
  32. zenml/zen_server/dashboard/assets/{LeftSideMenu-Czev0KCA.js → LeftSideMenu-D5UEs4vB.js} +1 -1
  33. zenml/zen_server/dashboard/assets/{Lock-CRP5J_su.js → Lock-u8WOoTTd.js} +1 -1
  34. zenml/zen_server/dashboard/assets/NestedCollapsible-0yviIfaA.js +1 -0
  35. zenml/zen_server/dashboard/assets/{NumberBox-CoQjQYDJ.js → NumberBox-C2Pju4PR.js} +1 -1
  36. zenml/zen_server/dashboard/assets/{Pagination-CcDD5yHh.js → Pagination-C1sE5Nzn.js} +1 -1
  37. zenml/zen_server/dashboard/assets/{Partials-DlMzfKgs.js → Partials-DosysQMU.js} +1 -1
  38. zenml/zen_server/dashboard/assets/{PasswordChecker-BZwoeQIm.js → PasswordChecker-DOPLfvg7.js} +1 -1
  39. zenml/zen_server/dashboard/assets/{ProCta-CU2ycJDo.js → ProCta-CUkpV3PJ.js} +1 -1
  40. zenml/zen_server/dashboard/assets/{ProviderIcon-BMAn9Jld.js → ProviderIcon-aQjTuTRX.js} +1 -1
  41. zenml/zen_server/dashboard/assets/{ProviderRadio-D_q9tE3G.js → ProviderRadio-C6pLVNxC.js} +1 -1
  42. zenml/zen_server/dashboard/assets/RunsBody-CZAiSxYK.js +1 -0
  43. zenml/zen_server/dashboard/assets/{SearchField-D_0-uAPj.js → SearchField-Byv1PtST.js} +1 -1
  44. zenml/zen_server/dashboard/assets/{SecretTooltip-BcWMKb9f.js → SecretTooltip-CErfhVgF.js} +1 -1
  45. zenml/zen_server/dashboard/assets/{SetPassword-CaKVSqAL.js → SetPassword-C4OH-cn1.js} +1 -1
  46. zenml/zen_server/dashboard/assets/{SheetHeader-7vwlsY_i.js → SheetHeader-Bb3v9rha.js} +1 -1
  47. zenml/zen_server/dashboard/assets/StackComponentList-D85oab98.js +1 -0
  48. zenml/zen_server/dashboard/assets/StackList-DSAjbVb5.js +1 -0
  49. zenml/zen_server/dashboard/assets/Tabs-2uwqXsdL.js +1 -0
  50. zenml/zen_server/dashboard/assets/Tick-BQ7_xDBl.js +1 -0
  51. zenml/zen_server/dashboard/assets/{UpdatePasswordSchemas-Da5RndbV.js → UpdatePasswordSchemas-DNkYgzN6.js} +1 -1
  52. zenml/zen_server/dashboard/assets/{Wizard-8aJzxUjb.js → Wizard-2FIi8JNY.js} +1 -1
  53. zenml/zen_server/dashboard/assets/WizardFooter-DQEnlDmZ.js +1 -0
  54. zenml/zen_server/dashboard/assets/{all-pipeline-runs-query-gorNNEaT.js → all-pipeline-runs-query-CdvWtiAY.js} +1 -1
  55. zenml/zen_server/dashboard/assets/{arrow-left-hcj2H8HY.js → arrow-left-BFB2mgJo.js} +1 -1
  56. zenml/zen_server/dashboard/assets/{bar-chart-square-check-9siI9icm.js → bar-chart-square-check-_m-oYysN.js} +1 -1
  57. zenml/zen_server/dashboard/assets/{bulk-delete-B5RTlnD_.js → bulk-delete-wdObjfps.js} +2 -2
  58. zenml/zen_server/dashboard/assets/{check-D1bHMJkL.js → check-C9Nye5lR.js} +1 -1
  59. zenml/zen_server/dashboard/assets/{check-circle-mnEgPhPF.js → check-circle-CG6XAdk-.js} +1 -1
  60. zenml/zen_server/dashboard/assets/{chevron-down-Z3nUe-0U.js → chevron-down-Bl7WwQAL.js} +1 -1
  61. zenml/zen_server/dashboard/assets/{chevron-right-double-CbRQKN4Q.js → chevron-right-double-CbMG1dOM.js} +1 -1
  62. zenml/zen_server/dashboard/assets/{clock-BMjHXT3f.js → clock-BnPvxp3D.js} +1 -1
  63. zenml/zen_server/dashboard/assets/{code-browser-DftoiCIg.js → code-browser-CzWvJ4S6.js} +1 -1
  64. zenml/zen_server/dashboard/assets/configuration-form-BbcNBQTO.js +1 -0
  65. zenml/zen_server/dashboard/assets/constants-DfvsDtcH.js +1 -0
  66. zenml/zen_server/dashboard/assets/{create-stack-BruqH_6X.js → create-stack-D4Sf7QpF.js} +1 -1
  67. zenml/zen_server/dashboard/assets/{credit-card-CH1BHrXY.js → credit-card-DfBA6dBb.js} +1 -1
  68. zenml/zen_server/dashboard/assets/{dataflow-2-qHjWt7zp.js → dataflow-2-BLkaTH0Q.js} +1 -1
  69. zenml/zen_server/dashboard/assets/{delete-run-ibBtciMR.js → delete-run-XSre8ru-.js} +1 -1
  70. zenml/zen_server/dashboard/assets/{expand-full-CD4fFvM-.js → expand-full-C8p_0jQv.js} +1 -1
  71. zenml/zen_server/dashboard/assets/{eye-CLNgIh_K.js → eye-BXcQevds.js} +1 -1
  72. zenml/zen_server/dashboard/assets/{file-text-CltVhgwZ.js → file-text-TdPXNd7s.js} +1 -1
  73. zenml/zen_server/dashboard/assets/form-C1jJgRy1.js +1 -0
  74. zenml/zen_server/dashboard/assets/{form-schemas-B9XgTS1V.js → form-schemas-BjWDRvGd.js} +1 -1
  75. zenml/zen_server/dashboard/assets/{help-B0CvBhCm.js → help-CRPfbPTO.js} +1 -1
  76. zenml/zen_server/dashboard/assets/{icon-hDriJUXY.js → icon--Tp6obFZ.js} +1 -1
  77. zenml/zen_server/dashboard/assets/{index-mA8kL088.js → index-B4ZeIaPd.js} +1 -1
  78. zenml/zen_server/dashboard/assets/{index-dCcVgFNl.js → index-BYHxFvoG.js} +1 -1
  79. zenml/zen_server/dashboard/assets/{index-BQWlHo1Y.js → index-BYzR7YrM.js} +1 -1
  80. zenml/zen_server/dashboard/assets/{index-BacoJBEQ.js → index-CO6UN3UX.js} +11 -11
  81. zenml/zen_server/dashboard/assets/{index-B7CRNU8l.js → index-d_QrPL-8.js} +1 -1
  82. zenml/zen_server/dashboard/assets/{index-BRhKF2z-.js → index-g7wOyc86.js} +1 -1
  83. zenml/zen_server/dashboard/assets/index-n_sn2ITN.css +1 -0
  84. zenml/zen_server/dashboard/assets/{index.es-DcVFDpJU.js → index.es-CZMSrR6z.js} +1 -1
  85. zenml/zen_server/dashboard/assets/{index.esm-COnaHLSh.js → index.esm-SBF9nn_P.js} +1 -1
  86. zenml/zen_server/dashboard/assets/{info-CyMih3vQ.js → info-CI2szPUG.js} +1 -1
  87. zenml/zen_server/dashboard/assets/{key-icon-HOx2gazv.js → key-icon-BiV171aI.js} +1 -1
  88. zenml/zen_server/dashboard/assets/layout-Cyc-V16c.js +1 -0
  89. zenml/zen_server/dashboard/assets/{layout-C5dgIReC.js → layout-GIiNvS10.js} +1 -1
  90. zenml/zen_server/dashboard/assets/{login-mutation-CidpsqyH.js → login-mutation-CDgTlQBD.js} +1 -1
  91. zenml/zen_server/dashboard/assets/{logs-DoLoTEfj.js → logs-lNLbZqHL.js} +1 -1
  92. zenml/zen_server/dashboard/assets/{mail-C160gvB0.js → mail-DBJRSzyu.js} +1 -1
  93. zenml/zen_server/dashboard/assets/{message-chat-square-DLz6XmPS.js → message-chat-square-C3CRCQvD.js} +1 -1
  94. zenml/zen_server/dashboard/assets/{package-BhYXGPxF.js → package-pR4bbXJp.js} +1 -1
  95. zenml/zen_server/dashboard/assets/page-1DXG7hp8.js +1 -0
  96. zenml/zen_server/dashboard/assets/{page-BCRXJXC9.js → page-43SWdz4k.js} +1 -1
  97. zenml/zen_server/dashboard/assets/{page-YdWnx9MX.js → page-AOVMuHDc.js} +1 -1
  98. zenml/zen_server/dashboard/assets/page-B4QBxV0B.js +22 -0
  99. zenml/zen_server/dashboard/assets/{page-CvllZMBF.js → page-B8ict_cR.js} +1 -1
  100. zenml/zen_server/dashboard/assets/page-BDre_qCO.js +1 -0
  101. zenml/zen_server/dashboard/assets/page-BbsvGfyi.js +18 -0
  102. zenml/zen_server/dashboard/assets/page-Bi4I23Hs.js +1 -0
  103. zenml/zen_server/dashboard/assets/page-BnAMyQZb.js +1 -0
  104. zenml/zen_server/dashboard/assets/{page-D6cvOG8w.js → page-BnZEAhNn.js} +1 -1
  105. zenml/zen_server/dashboard/assets/page-Bncp08FW.js +1 -0
  106. zenml/zen_server/dashboard/assets/{page-BTDi81N3.js → page-C4Jnp1qP.js} +1 -1
  107. zenml/zen_server/dashboard/assets/page-C7Z2sDHE.js +1 -0
  108. zenml/zen_server/dashboard/assets/page-C8t9qLdV.js +1 -0
  109. zenml/zen_server/dashboard/assets/{page-BByayrO-.js → page-C9IsnFid.js} +2 -2
  110. zenml/zen_server/dashboard/assets/page-CEHZzQ1Q.js +1 -0
  111. zenml/zen_server/dashboard/assets/page-CGtll3Jk.js +1 -0
  112. zenml/zen_server/dashboard/assets/{page-q41JNDWO.js → page-CKPkbOoE.js} +1 -1
  113. zenml/zen_server/dashboard/assets/{page-DF4FVxxW.js → page-CMvcoaSZ.js} +2 -2
  114. zenml/zen_server/dashboard/assets/page-CVwTAlzd.js +1 -0
  115. zenml/zen_server/dashboard/assets/{page-DSZfclXt.js → page-ClqRvz_V.js} +1 -1
  116. zenml/zen_server/dashboard/assets/{page-7CJ4Wq3O.js → page-CzDjN1wE.js} +1 -1
  117. zenml/zen_server/dashboard/assets/{page-BK59rZvf.js → page-D654xHWd.js} +1 -1
  118. zenml/zen_server/dashboard/assets/{page-DcXrWWWh.js → page-DLrYW-Dn.js} +1 -1
  119. zenml/zen_server/dashboard/assets/page-DOnAInjC.js +1 -0
  120. zenml/zen_server/dashboard/assets/{page-Cc8owYXQ.js → page-DQncGJeH.js} +1 -1
  121. zenml/zen_server/dashboard/assets/page-DQzNmXk3.js +1 -0
  122. zenml/zen_server/dashboard/assets/{page-FQxi1Otg.js → page-DSn1Jcvs.js} +1 -1
  123. zenml/zen_server/dashboard/assets/page-DZ5hcS1o.js +1 -0
  124. zenml/zen_server/dashboard/assets/page-DerIbaqa.js +1 -0
  125. zenml/zen_server/dashboard/assets/{page-8U20Tu_8.js → page-DgOEl3Bc.js} +1 -1
  126. zenml/zen_server/dashboard/assets/{page-DgldL5UB.js → page-DgSu4pTE.js} +2 -2
  127. zenml/zen_server/dashboard/assets/page-DgblJuXC.js +1 -0
  128. zenml/zen_server/dashboard/assets/{page-CY0LPcAJ.js → page-Dpw-xP4q.js} +1 -1
  129. zenml/zen_server/dashboard/assets/page-DsFXol8x.js +1 -0
  130. zenml/zen_server/dashboard/assets/page-Du6bFZTS.js +1 -0
  131. zenml/zen_server/dashboard/assets/{page-CeGBDh1Q.js → page-DznxxpKA.js} +1 -1
  132. zenml/zen_server/dashboard/assets/page-E9Mx9_rn.js +1 -0
  133. zenml/zen_server/dashboard/assets/page-HrebZOAM.js +1 -0
  134. zenml/zen_server/dashboard/assets/{page-BX67x4iL.js → page-O5xnz_nW.js} +1 -1
  135. zenml/zen_server/dashboard/assets/{page-DDWW21kl.js → page-hX7NkNdA.js} +1 -1
  136. zenml/zen_server/dashboard/assets/{persist-BKKcL1Kp.js → persist-B3Hb8HDW.js} +1 -1
  137. zenml/zen_server/dashboard/assets/{persist-DxiyfAax.js → persist-Dkbp9MFP.js} +1 -1
  138. zenml/zen_server/dashboard/assets/{pipeline-BJ8liDnl.js → pipeline-CDJSAXrb.js} +1 -1
  139. zenml/zen_server/dashboard/assets/{plus-cI8zD2xh.js → plus-DOrkJCmy.js} +1 -1
  140. zenml/zen_server/dashboard/assets/primary-role-CjkpP9fL.js +1 -0
  141. zenml/zen_server/dashboard/assets/{react-error-boundary.esm-DoXxY4pT.js → react-error-boundary.esm-DgOYA0wh.js} +1 -1
  142. zenml/zen_server/dashboard/assets/{refresh-3EF2R7ja.js → refresh-C8BXS3Fb.js} +1 -1
  143. zenml/zen_server/dashboard/assets/{resource-tyes-list-B5rkZcbc.js → resource-tyes-list-CugyWUAE.js} +1 -1
  144. zenml/zen_server/dashboard/assets/{resource-type-tooltip-E97WGqfk.js → resource-type-tooltip-V-zdiLKz.js} +1 -1
  145. zenml/zen_server/dashboard/assets/{service-B9aVzfAF.js → service-FjqYTmBw.js} +2 -2
  146. zenml/zen_server/dashboard/assets/{service-connectors-DL2-k_E2.js → service-connectors-nF4-OXB9.js} +1 -1
  147. zenml/zen_server/dashboard/assets/{sharedSchema-DyUO09BR.js → sharedSchema-Br1JPr8d.js} +1 -1
  148. zenml/zen_server/dashboard/assets/{slash-circle-D2Lb2FyR.js → slash-circle-B0xMh8q6.js} +1 -1
  149. zenml/zen_server/dashboard/assets/{stack-detail-query-Bc4QKlWg.js → stack-detail-query-DnyMCdVE.js} +1 -1
  150. zenml/zen_server/dashboard/assets/{terminal-BObrvDlO.js → terminal-C2tAF2XG.js} +1 -1
  151. zenml/zen_server/dashboard/assets/{terminal-square-BObrvDlO.js → terminal-square-C2tAF2XG.js} +1 -1
  152. zenml/zen_server/dashboard/assets/{transform-DFpKTKgF.js → transform-S7omcvTm.js} +1 -1
  153. zenml/zen_server/dashboard/assets/{trash-HKxXWbSG.js → trash-D9LA4VFD.js} +1 -1
  154. zenml/zen_server/dashboard/assets/{update-current-user-mutation-DSyUyHVj.js → update-current-user-mutation-B3Dpv3u6.js} +1 -1
  155. zenml/zen_server/dashboard/assets/{update-server-settings-mutation-CdM-Sdds.js → update-server-settings-mutation-s7tlHN8s.js} +1 -1
  156. zenml/zen_server/dashboard/assets/{zod-DgEcN9jD.js → zod-D48zuELD.js} +1 -1
  157. zenml/zen_server/dashboard/index.html +7 -7
  158. zenml/zen_server/rbac/zenml_cloud_rbac.py +8 -4
  159. zenml/zen_server/routers/service_accounts_endpoints.py +71 -12
  160. zenml/zen_stores/base_zen_store.py +0 -19
  161. zenml/zen_stores/migrations/versions/0.84.1_release.py +23 -0
  162. zenml/zen_stores/migrations/versions/8d4b9ba22c1f_add_user_avatar.py +39 -0
  163. zenml/zen_stores/schemas/user_schemas.py +16 -5
  164. zenml/zen_stores/sql_zen_store.py +5 -1
  165. {zenml_nightly-0.84.0.dev20250729.dist-info → zenml_nightly-0.84.1.dev20250731.dist-info}/METADATA +1 -1
  166. {zenml_nightly-0.84.0.dev20250729.dist-info → zenml_nightly-0.84.1.dev20250731.dist-info}/RECORD +169 -167
  167. zenml/zen_server/dashboard/assets/AlertDialogDropdownItem-druRNuO2.js +0 -1
  168. zenml/zen_server/dashboard/assets/ButtonGroup-SF2DlzHV.js +0 -1
  169. zenml/zen_server/dashboard/assets/DeleteAlertDialog-BbyFVnVI.js +0 -1
  170. zenml/zen_server/dashboard/assets/NestedCollapsible-CN9scBUn.js +0 -1
  171. zenml/zen_server/dashboard/assets/RunsBody-BToytB8e.js +0 -1
  172. zenml/zen_server/dashboard/assets/StackComponentList-s7eSfm8o.js +0 -1
  173. zenml/zen_server/dashboard/assets/StackList-Dt0FrIkM.js +0 -1
  174. zenml/zen_server/dashboard/assets/Tabs-B27AHUfo.js +0 -1
  175. zenml/zen_server/dashboard/assets/Tick-DDeDgTuT.js +0 -1
  176. zenml/zen_server/dashboard/assets/WizardFooter-Bt7_UE14.js +0 -1
  177. zenml/zen_server/dashboard/assets/configuration-form-Yz8m0QIG.js +0 -1
  178. zenml/zen_server/dashboard/assets/constants-DeV48DuZ.js +0 -1
  179. zenml/zen_server/dashboard/assets/form-6aSt3tIl.js +0 -1
  180. zenml/zen_server/dashboard/assets/index-eggipFZS.css +0 -1
  181. zenml/zen_server/dashboard/assets/layout-CFLL6-CM.js +0 -1
  182. zenml/zen_server/dashboard/assets/page-6huxSHEu.js +0 -1
  183. zenml/zen_server/dashboard/assets/page-BMpXak4U.js +0 -1
  184. zenml/zen_server/dashboard/assets/page-Bjmcdg64.js +0 -1
  185. zenml/zen_server/dashboard/assets/page-BsAn8p4m.js +0 -1
  186. zenml/zen_server/dashboard/assets/page-BwjPRuaY.js +0 -1
  187. zenml/zen_server/dashboard/assets/page-CDtSVkNc.js +0 -1
  188. zenml/zen_server/dashboard/assets/page-CEDU0L2T.js +0 -1
  189. zenml/zen_server/dashboard/assets/page-COJK90rG.js +0 -1
  190. zenml/zen_server/dashboard/assets/page-C_XMn4GU.js +0 -1
  191. zenml/zen_server/dashboard/assets/page-Cb3KGsPK.js +0 -22
  192. zenml/zen_server/dashboard/assets/page-CiGOVsj3.js +0 -1
  193. zenml/zen_server/dashboard/assets/page-CmLSFMkW.js +0 -1
  194. zenml/zen_server/dashboard/assets/page-CnfCptXq.js +0 -1
  195. zenml/zen_server/dashboard/assets/page-CxzglV3-.js +0 -1
  196. zenml/zen_server/dashboard/assets/page-DVLez4R1.js +0 -1
  197. zenml/zen_server/dashboard/assets/page-Dg7-H_9i.js +0 -1
  198. zenml/zen_server/dashboard/assets/page-Dw7XuiSo.js +0 -18
  199. zenml/zen_server/dashboard/assets/page-XrmOHHg7.js +0 -1
  200. zenml/zen_server/dashboard/assets/page-oRm7D4TC.js +0 -1
  201. zenml/zen_server/dashboard/assets/page-x2GXC8sI.js +0 -1
  202. zenml/zen_server/dashboard/assets/page-z2FXP4GY.js +0 -1
  203. zenml/zen_server/dashboard/assets/primary-role-CPGHymjN.js +0 -1
  204. {zenml_nightly-0.84.0.dev20250729.dist-info → zenml_nightly-0.84.1.dev20250731.dist-info}/LICENSE +0 -0
  205. {zenml_nightly-0.84.0.dev20250729.dist-info → zenml_nightly-0.84.1.dev20250731.dist-info}/WHEEL +0 -0
  206. {zenml_nightly-0.84.0.dev20250729.dist-info → zenml_nightly-0.84.1.dev20250731.dist-info}/entry_points.txt +0 -0
@@ -52,8 +52,6 @@ from zenml.models import (
52
52
  ServerModel,
53
53
  StackFilter,
54
54
  StackResponse,
55
- UserFilter,
56
- UserResponse,
57
55
  )
58
56
  from zenml.utils.pydantic_utils import before_validator_handler
59
57
  from zenml.zen_stores.zen_store_interface import ZenStoreInterface
@@ -470,23 +468,6 @@ class BaseZenStore(
470
468
  raise KeyError("No default stack found.")
471
469
  return default_stacks.items[0]
472
470
 
473
- def get_external_user(self, user_id: UUID) -> UserResponse:
474
- """Get a user by external ID.
475
-
476
- Args:
477
- user_id: The external ID of the user.
478
-
479
- Returns:
480
- The user with the supplied external ID.
481
-
482
- Raises:
483
- KeyError: If the user doesn't exist.
484
- """
485
- users = self.list_users(UserFilter(external_user_id=user_id))
486
- if users.total == 0:
487
- raise KeyError(f"User with external ID '{user_id}' not found.")
488
- return users.items[0]
489
-
490
471
  model_config = ConfigDict(
491
472
  # Validate attributes when assigning them. We need to set this in order
492
473
  # to have a mix of mutable and immutable attributes
@@ -0,0 +1,23 @@
1
+ """Release [0.84.1].
2
+
3
+ Revision ID: 0.84.1
4
+ Revises: 8d4b9ba22c1f
5
+ Create Date: 2025-07-29 08:56:44.756559
6
+
7
+ """
8
+
9
+ # revision identifiers, used by Alembic.
10
+ revision = "0.84.1"
11
+ down_revision = "8d4b9ba22c1f"
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
@@ -0,0 +1,39 @@
1
+ """add user avatar [8d4b9ba22c1f].
2
+
3
+ Revision ID: 8d4b9ba22c1f
4
+ Revises: d4591f95ac07
5
+ Create Date: 2025-07-18 17:13:54.513273
6
+
7
+ """
8
+
9
+ import sqlalchemy as sa
10
+ import sqlmodel
11
+ from alembic import op
12
+
13
+ # revision identifiers, used by Alembic.
14
+ revision = "8d4b9ba22c1f"
15
+ down_revision = "d4591f95ac07"
16
+ branch_labels = None
17
+ depends_on = None
18
+
19
+
20
+ def upgrade() -> None:
21
+ """Upgrade database schema and/or data, creating a new revision."""
22
+ # ### commands auto generated by Alembic - please adjust! ###
23
+ with op.batch_alter_table("user", schema=None) as batch_op:
24
+ batch_op.add_column(
25
+ sa.Column(
26
+ "avatar_url", sqlmodel.sql.sqltypes.AutoString(), nullable=True
27
+ )
28
+ )
29
+
30
+ # ### end Alembic commands ###
31
+
32
+
33
+ def downgrade() -> None:
34
+ """Downgrade database schema and/or data back to the previous revision."""
35
+ # ### commands auto generated by Alembic - please adjust! ###
36
+ with op.batch_alter_table("user", schema=None) as batch_op:
37
+ batch_op.drop_column("avatar_url")
38
+
39
+ # ### end Alembic commands ###
@@ -14,13 +14,14 @@
14
14
  """SQLModel implementation of user tables."""
15
15
 
16
16
  import json
17
- from typing import TYPE_CHECKING, Any, List, Optional
17
+ from typing import TYPE_CHECKING, Any, List, Optional, Union
18
18
  from uuid import UUID
19
19
 
20
20
  from sqlalchemy import TEXT, Column, UniqueConstraint
21
21
  from sqlmodel import Field, Relationship
22
22
 
23
23
  from zenml.models import (
24
+ ServiceAccountInternalRequest,
24
25
  ServiceAccountRequest,
25
26
  ServiceAccountResponse,
26
27
  ServiceAccountResponseBody,
@@ -76,6 +77,7 @@ class UserSchema(NamedSchema, table=True):
76
77
  full_name: str
77
78
  description: Optional[str] = Field(sa_column=Column(TEXT, nullable=True))
78
79
  email: Optional[str] = Field(nullable=True)
80
+ avatar_url: Optional[str] = Field(default=None, nullable=True)
79
81
  active: bool
80
82
  password: Optional[str] = Field(nullable=True)
81
83
  activation_token: Optional[str] = Field(nullable=True)
@@ -184,6 +186,7 @@ class UserSchema(NamedSchema, table=True):
184
186
  return cls(
185
187
  name=model.name,
186
188
  full_name=model.full_name,
189
+ avatar_url=model.avatar_url,
187
190
  active=model.active,
188
191
  password=model.create_hashed_password(),
189
192
  activation_token=model.create_hashed_activation_token(),
@@ -199,25 +202,29 @@ class UserSchema(NamedSchema, table=True):
199
202
 
200
203
  @classmethod
201
204
  def from_service_account_request(
202
- cls, model: ServiceAccountRequest
205
+ cls, model: Union[ServiceAccountRequest, ServiceAccountInternalRequest]
203
206
  ) -> "UserSchema":
204
207
  """Create a `UserSchema` from a Service Account request.
205
208
 
206
209
  Args:
207
- model: The `ServiceAccountRequest` from which to create the
208
- schema.
210
+ model: The `ServiceAccountRequest` or `ServiceAccountInternalRequest`
211
+ from which to create the schema.
209
212
 
210
213
  Returns:
211
214
  The created `UserSchema`.
212
215
  """
213
216
  return cls(
214
217
  name=model.name,
218
+ full_name=model.full_name,
215
219
  description=model.description or "",
220
+ external_user_id=model.external_user_id
221
+ if isinstance(model, ServiceAccountInternalRequest)
222
+ else None,
216
223
  active=model.active,
217
224
  is_service_account=True,
218
225
  email_opted_in=False,
219
- full_name="",
220
226
  is_admin=False,
227
+ avatar_url=model.avatar_url,
221
228
  )
222
229
 
223
230
  def update_user(self, user_update: UserUpdate) -> "UserSchema":
@@ -310,6 +317,7 @@ class UserSchema(NamedSchema, table=True):
310
317
  updated=self.updated,
311
318
  is_admin=self.is_admin,
312
319
  default_project_id=self.default_project_id,
320
+ avatar_url=self.avatar_url,
313
321
  ),
314
322
  metadata=metadata,
315
323
  )
@@ -330,12 +338,15 @@ class UserSchema(NamedSchema, table=True):
330
338
  if include_metadata:
331
339
  metadata = ServiceAccountResponseMetadata(
332
340
  description=self.description or "",
341
+ external_user_id=self.external_user_id,
333
342
  )
334
343
 
335
344
  body = ServiceAccountResponseBody(
345
+ full_name=self.full_name,
336
346
  created=self.created,
337
347
  updated=self.updated,
338
348
  active=self.active,
349
+ avatar_url=self.avatar_url,
339
350
  )
340
351
 
341
352
  return ServiceAccountResponse(
@@ -260,6 +260,7 @@ from zenml.models import (
260
260
  ServerSettingsResponse,
261
261
  ServerSettingsUpdate,
262
262
  ServiceAccountFilter,
263
+ ServiceAccountInternalRequest,
263
264
  ServiceAccountRequest,
264
265
  ServiceAccountResponse,
265
266
  ServiceAccountUpdate,
@@ -7296,7 +7297,10 @@ class SqlZenStore(BaseZenStore):
7296
7297
 
7297
7298
  @track_decorator(AnalyticsEvent.CREATED_SERVICE_ACCOUNT)
7298
7299
  def create_service_account(
7299
- self, service_account: ServiceAccountRequest
7300
+ self,
7301
+ service_account: Union[
7302
+ ServiceAccountRequest, ServiceAccountInternalRequest
7303
+ ],
7300
7304
  ) -> ServiceAccountResponse:
7301
7305
  """Creates a new service account.
7302
7306
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: zenml-nightly
3
- Version: 0.84.0.dev20250729
3
+ Version: 0.84.1.dev20250731
4
4
  Summary: ZenML: Write production-ready ML code.
5
5
  License: Apache-2.0
6
6
  Keywords: machine learning,production,pipeline,mlops,devops