zenml-nightly 0.67.0.dev20241002__py3-none-any.whl → 0.68.0.dev20241027__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 (528) hide show
  1. README.md +2 -2
  2. RELEASE_NOTES.md +129 -0
  3. zenml/VERSION +1 -1
  4. zenml/__init__.py +4 -9
  5. zenml/analytics/enums.py +0 -13
  6. zenml/artifact_stores/base_artifact_store.py +11 -0
  7. zenml/artifacts/artifact_config.py +19 -65
  8. zenml/artifacts/external_artifact.py +7 -53
  9. zenml/artifacts/external_artifact_config.py +21 -40
  10. zenml/artifacts/load_directory_materializer.py +91 -0
  11. zenml/artifacts/utils.py +320 -85
  12. zenml/cli/__init__.py +1 -39
  13. zenml/cli/base.py +5 -5
  14. zenml/cli/integration.py +0 -9
  15. zenml/cli/pipeline.py +1 -1
  16. zenml/cli/served_model.py +8 -1
  17. zenml/cli/server.py +8 -232
  18. zenml/cli/stack.py +1 -567
  19. zenml/cli/stack_components.py +0 -578
  20. zenml/cli/utils.py +0 -65
  21. zenml/client.py +11 -26
  22. zenml/client_lazy_loader.py +29 -12
  23. zenml/config/compiler.py +6 -11
  24. zenml/config/server_config.py +7 -5
  25. zenml/config/step_configurations.py +2 -0
  26. zenml/constants.py +3 -33
  27. zenml/enums.py +0 -3
  28. zenml/environment.py +1 -315
  29. zenml/exceptions.py +1 -41
  30. zenml/hooks/hook_validators.py +1 -8
  31. zenml/integrations/airflow/orchestrators/airflow_orchestrator.py +2 -3
  32. zenml/integrations/argilla/__init__.py +1 -1
  33. zenml/integrations/argilla/annotators/argilla_annotator.py +234 -89
  34. zenml/integrations/argilla/flavors/argilla_annotator_flavor.py +10 -5
  35. zenml/integrations/aws/flavors/sagemaker_orchestrator_flavor.py +9 -5
  36. zenml/integrations/aws/orchestrators/sagemaker_orchestrator.py +15 -2
  37. zenml/integrations/aws/service_connectors/aws_service_connector.py +6 -0
  38. zenml/integrations/azure/flavors/azureml_orchestrator_flavor.py +5 -4
  39. zenml/integrations/azure/orchestrators/azureml_orchestrator.py +1 -1
  40. zenml/integrations/bentoml/model_deployers/bentoml_model_deployer.py +85 -19
  41. zenml/integrations/bentoml/services/__init__.py +15 -4
  42. zenml/integrations/bentoml/services/bentoml_container_deployment.py +399 -0
  43. zenml/integrations/bentoml/services/{bentoml_deployment.py → bentoml_local_deployment.py} +81 -40
  44. zenml/{steps/base_parameters.py → integrations/bentoml/services/deployment_type.py} +8 -5
  45. zenml/integrations/bentoml/steps/bento_builder.py +1 -0
  46. zenml/integrations/bentoml/steps/bentoml_deployer.py +93 -41
  47. zenml/integrations/gitlab/code_repositories/gitlab_code_repository.py +6 -1
  48. zenml/integrations/huggingface/__init__.py +1 -6
  49. zenml/integrations/kaniko/image_builders/kaniko_image_builder.py +3 -3
  50. zenml/integrations/lightning/orchestrators/lightning_orchestrator.py +3 -3
  51. zenml/integrations/lightning/orchestrators/lightning_orchestrator_entrypoint.py +2 -2
  52. zenml/integrations/mlflow/experiment_trackers/mlflow_experiment_tracker.py +6 -3
  53. zenml/integrations/mlflow/model_registries/mlflow_model_registry.py +6 -0
  54. zenml/integrations/mlflow/services/mlflow_deployment.py +2 -2
  55. zenml/integrations/mlflow/steps/mlflow_deployer.py +1 -1
  56. zenml/integrations/mlflow/steps/mlflow_registry.py +1 -1
  57. zenml/integrations/neptune/experiment_trackers/run_state.py +2 -2
  58. zenml/integrations/s3/artifact_stores/s3_artifact_store.py +98 -0
  59. zenml/integrations/s3/flavors/s3_artifact_store_flavor.py +14 -0
  60. zenml/integrations/s3/utils.py +40 -0
  61. zenml/integrations/tensorflow/__init__.py +0 -9
  62. zenml/logging/step_logging.py +13 -15
  63. zenml/materializers/__init__.py +2 -0
  64. zenml/materializers/uuid_materializer.py +79 -0
  65. zenml/metadata/lazy_load.py +10 -7
  66. zenml/model/lazy_load.py +85 -4
  67. zenml/model/model.py +61 -45
  68. zenml/model/utils.py +47 -118
  69. zenml/models/__init__.py +3 -0
  70. zenml/models/v2/core/artifact_version.py +4 -15
  71. zenml/models/v2/core/model.py +1 -0
  72. zenml/models/v2/core/model_version.py +1 -1
  73. zenml/models/v2/core/pipeline_run.py +1 -2
  74. zenml/models/v2/core/run_metadata.py +2 -2
  75. zenml/models/v2/core/step_run.py +15 -12
  76. zenml/models/v2/misc/server_models.py +0 -4
  77. zenml/orchestrators/base_orchestrator.py +33 -0
  78. zenml/orchestrators/input_utils.py +52 -36
  79. zenml/orchestrators/step_launcher.py +49 -171
  80. zenml/orchestrators/step_run_utils.py +566 -0
  81. zenml/orchestrators/step_runner.py +102 -151
  82. zenml/orchestrators/utils.py +1 -158
  83. zenml/pipelines/__init__.py +3 -16
  84. zenml/{new/pipelines → pipelines}/pipeline_context.py +3 -18
  85. zenml/pipelines/pipeline_decorator.py +29 -60
  86. zenml/{new/pipelines/pipeline.py → pipelines/pipeline_definition.py} +4 -47
  87. zenml/stack/stack.py +1 -102
  88. zenml/stack/stack_component.py +0 -71
  89. zenml/stack_deployments/aws_stack_deployment.py +3 -0
  90. zenml/step_operators/step_operator_entrypoint_configuration.py +1 -1
  91. zenml/steps/__init__.py +3 -9
  92. zenml/steps/base_step.py +17 -265
  93. zenml/steps/entrypoint_function_utils.py +2 -80
  94. zenml/{new/steps → steps}/step_context.py +12 -63
  95. zenml/steps/step_decorator.py +42 -89
  96. zenml/steps/step_invocation.py +2 -55
  97. zenml/steps/utils.py +3 -23
  98. zenml/utils/dashboard_utils.py +16 -51
  99. zenml/utils/typing_utils.py +8 -28
  100. zenml/zen_server/dashboard/assets/{404-Y50hSt65.js → 404-DT4QRUqN.js} +1 -1
  101. zenml/zen_server/dashboard/assets/@radix-DP6vWzyx.js +85 -0
  102. zenml/zen_server/dashboard/assets/@react-router-BMhZulnd.js +29 -0
  103. zenml/zen_server/dashboard/assets/@reactflow-8U9qNlMR.js +17 -0
  104. zenml/zen_server/dashboard/assets/@tanstack-BUCbhJyH.js +22 -0
  105. zenml/zen_server/dashboard/assets/{AlertDialogDropdownItem-xLR9a1iw.js → AlertDialogDropdownItem-C6N2rGrB.js} +1 -1
  106. zenml/zen_server/dashboard/assets/{CodeSnippet-IxXNxUDa.js → CodeSnippet-CqybNv0k.js} +1 -1
  107. zenml/zen_server/dashboard/assets/{CollapsibleCard-BhutZbBL.js → CollapsibleCard-0r_8G2Lj.js} +1 -1
  108. zenml/zen_server/dashboard/assets/{Commands-Bf-rd1z8.js → Commands-BDjgBQKi.js} +1 -1
  109. zenml/zen_server/dashboard/assets/ComponentBadge-DUiEYJHu.js +1 -0
  110. zenml/zen_server/dashboard/assets/ComponentFallbackDialog-BFoH5K4V.js +1 -0
  111. zenml/zen_server/dashboard/assets/ComponentIcon-CAIoUis2.js +1 -0
  112. zenml/zen_server/dashboard/assets/{CopyButton-DcFHidFJ.js → CopyButton-C745BrKi.js} +1 -1
  113. zenml/zen_server/dashboard/assets/{CsvVizualization-QSbjrfxw.js → CsvVizualization-PpAq0CeZ.js} +5 -5
  114. zenml/zen_server/dashboard/assets/{DialogItem-Cd3HqST4.js → DialogItem-DcVCZEew.js} +1 -1
  115. zenml/zen_server/dashboard/assets/{DisplayDate-DkCy54Bp.js → DisplayDate-BeXgUG_C.js} +1 -1
  116. zenml/zen_server/dashboard/assets/{EmptyState-Cs3DEmso.js → EmptyState-DeK7H4pr.js} +1 -1
  117. zenml/zen_server/dashboard/assets/{Error-BhwdmqK7.js → Error-BMlzibXj.js} +1 -1
  118. zenml/zen_server/dashboard/assets/{Helpbox-0pBpTwTm.js → Helpbox-BLf40fLV.js} +1 -1
  119. zenml/zen_server/dashboard/assets/{Infobox-BTK_EUKT.js → Infobox-BwisKifi.js} +1 -1
  120. zenml/zen_server/dashboard/assets/{InlineAvatar-CA3DFMcM.js → InlineAvatar-jEgodSgX.js} +1 -1
  121. zenml/zen_server/dashboard/assets/{Lock-CmIn0szs.js → Lock-3lLt1ih0.js} +1 -1
  122. zenml/zen_server/dashboard/assets/MarkdownVisualization-8O9kTr-2.js +14 -0
  123. zenml/zen_server/dashboard/assets/{NumberBox-CrN0_kqI.js → NumberBox-T9eELfLZ.js} +1 -1
  124. zenml/zen_server/dashboard/assets/{Partials-QLOZw624.js → Partials-YPBB3V4q.js} +1 -1
  125. zenml/zen_server/dashboard/assets/{PasswordChecker-DE71J_3F.js → PasswordChecker-CW0kqY0W.js} +1 -1
  126. zenml/zen_server/dashboard/assets/{ProviderIcon-C16CCIN4.js → ProviderIcon-Bb3Xha5A.js} +1 -1
  127. zenml/zen_server/dashboard/assets/{ProviderRadio-D3FuCHf3.js → ProviderRadio-BROY1700.js} +1 -1
  128. zenml/zen_server/dashboard/assets/RunSelector-DCiL3M1c.js +1 -0
  129. zenml/zen_server/dashboard/assets/SearchField-DfUiGFVd.js +1 -0
  130. zenml/zen_server/dashboard/assets/{SecretTooltip-BaMwHF-Q.js → SecretTooltip-C_qByGWB.js} +1 -1
  131. zenml/zen_server/dashboard/assets/{SetPassword-DuIC65H9.js → SetPassword-7pRB00El.js} +1 -1
  132. zenml/zen_server/dashboard/assets/{Tick-DJTCF0Re.js → Tick-CykQFPj2.js} +1 -1
  133. zenml/zen_server/dashboard/assets/{UpdatePasswordSchemas-CUm-DMpw.js → UpdatePasswordSchemas-DckMEkFf.js} +1 -1
  134. zenml/zen_server/dashboard/assets/{UsageReason-CKw0juLF.js → UsageReason-DVceN14P.js} +1 -1
  135. zenml/zen_server/dashboard/assets/{WizardFooter-Cv9ApYWU.js → WizardFooter-CW0Cvd70.js} +1 -1
  136. zenml/zen_server/dashboard/assets/{check-circle-DOoS4yhF.js → check-circle-Dwxliy1Z.js} +1 -1
  137. zenml/zen_server/dashboard/assets/{chevron-down-Cwb-W_B_.js → chevron-down-8wLBS5pQ.js} +1 -1
  138. zenml/zen_server/dashboard/assets/{chevron-right-double-c9H46Kl8.js → chevron-right-double-DoD8iXWM.js} +1 -1
  139. zenml/zen_server/dashboard/assets/{cloud-only-BB4BVa6E.js → cloud-only-B-s_HMDm.js} +1 -1
  140. zenml/zen_server/dashboard/assets/{code-browser-BJYErIjr.js → code-browser-CZUQs3Wa.js} +1 -1
  141. zenml/zen_server/dashboard/assets/{copy-CaGlDsUy.js → copy-CaSMXwiU.js} +1 -1
  142. zenml/zen_server/dashboard/assets/{create-stack-F29xAUEx.js → create-stack-CEmaPZ4c.js} +1 -1
  143. zenml/zen_server/dashboard/assets/delete-run-D-LKbGyz.js +1 -0
  144. zenml/zen_server/dashboard/assets/{docker-BFAFXr2_.js → docker-BFNgg-z3.js} +1 -1
  145. zenml/zen_server/dashboard/assets/{dots-horizontal-C6K59vUm.js → dots-horizontal-DK5Duzx4.js} +1 -1
  146. zenml/zen_server/dashboard/assets/{form-schemas-BKXwSDK2.js → form-schemas-1AyOCx90.js} +1 -1
  147. zenml/zen_server/dashboard/assets/{gcp-Dj6ntk0L.js → gcp-7M2Yf3ZK.js} +1 -1
  148. zenml/zen_server/dashboard/assets/{help-CwN931fX.js → help-Dam461dC.js} +1 -1
  149. zenml/zen_server/dashboard/assets/{index-5GJ5ysEZ.js → index-BVJ8n2-j.js} +1 -1
  150. zenml/zen_server/dashboard/assets/index-Bpmj40BI.js +1 -0
  151. zenml/zen_server/dashboard/assets/index-CbU4Ln_E.css +1 -0
  152. zenml/zen_server/dashboard/assets/{index-D-mtoBj3.js → index-DKPhqP2B.js} +1 -1
  153. zenml/zen_server/dashboard/assets/index-QQb7wQEC.js +55 -0
  154. zenml/zen_server/dashboard/assets/index.esm-cuVep_NJ.js +1 -0
  155. zenml/zen_server/dashboard/assets/inter-cyrillic-400-normal-BLGc9T1a.woff2 +0 -0
  156. zenml/zen_server/dashboard/assets/inter-cyrillic-400-normal-ZzOtrSSW.woff +0 -0
  157. zenml/zen_server/dashboard/assets/inter-cyrillic-500-normal-D4Vwzodn.woff2 +0 -0
  158. zenml/zen_server/dashboard/assets/inter-cyrillic-500-normal-DH2hs3aW.woff +0 -0
  159. zenml/zen_server/dashboard/assets/inter-cyrillic-600-normal-BGBWG807.woff2 +0 -0
  160. zenml/zen_server/dashboard/assets/inter-cyrillic-600-normal-BuzJQFbW.woff +0 -0
  161. zenml/zen_server/dashboard/assets/inter-cyrillic-ext-400-normal-BPnxn4xp.woff +0 -0
  162. zenml/zen_server/dashboard/assets/inter-cyrillic-ext-400-normal-Dc4VJyIJ.woff2 +0 -0
  163. zenml/zen_server/dashboard/assets/inter-cyrillic-ext-500-normal-BShVwWPj.woff2 +0 -0
  164. zenml/zen_server/dashboard/assets/inter-cyrillic-ext-500-normal-CUiC4oBV.woff +0 -0
  165. zenml/zen_server/dashboard/assets/inter-cyrillic-ext-600-normal-Bt9VVOA-.woff +0 -0
  166. zenml/zen_server/dashboard/assets/inter-cyrillic-ext-600-normal-CaqZN2hq.woff2 +0 -0
  167. zenml/zen_server/dashboard/assets/inter-greek-400-normal-BZzXV7-1.woff +0 -0
  168. zenml/zen_server/dashboard/assets/inter-greek-400-normal-DxZsaF_h.woff2 +0 -0
  169. zenml/zen_server/dashboard/assets/inter-greek-500-normal-CeQXL5ds.woff2 +0 -0
  170. zenml/zen_server/dashboard/assets/inter-greek-500-normal-d_eO-yCQ.woff +0 -0
  171. zenml/zen_server/dashboard/assets/inter-greek-600-normal-CwicyhtI.woff +0 -0
  172. zenml/zen_server/dashboard/assets/inter-greek-600-normal-Dhlb-90d.woff2 +0 -0
  173. zenml/zen_server/dashboard/assets/inter-greek-ext-400-normal-Bput3-QP.woff2 +0 -0
  174. zenml/zen_server/dashboard/assets/inter-greek-ext-400-normal-DCpCPQOf.woff +0 -0
  175. zenml/zen_server/dashboard/assets/inter-greek-ext-500-normal-B6guLgqG.woff2 +0 -0
  176. zenml/zen_server/dashboard/assets/inter-greek-ext-500-normal-M2hEX8vc.woff +0 -0
  177. zenml/zen_server/dashboard/assets/inter-greek-ext-600-normal-C9WLioJ8.woff +0 -0
  178. zenml/zen_server/dashboard/assets/inter-greek-ext-600-normal-Cnui8OiR.woff2 +0 -0
  179. zenml/zen_server/dashboard/assets/inter-latin-400-normal-BOOGhInR.woff2 +0 -0
  180. zenml/zen_server/dashboard/assets/inter-latin-400-normal-gitzw0hO.woff +0 -0
  181. zenml/zen_server/dashboard/assets/inter-latin-500-normal-D2bGa7uu.woff2 +0 -0
  182. zenml/zen_server/dashboard/assets/inter-latin-500-normal-deR1Tlfd.woff +0 -0
  183. zenml/zen_server/dashboard/assets/inter-latin-600-normal-B5cFAncS.woff +0 -0
  184. zenml/zen_server/dashboard/assets/inter-latin-600-normal-D273HNI0.woff2 +0 -0
  185. zenml/zen_server/dashboard/assets/inter-latin-ext-400-normal-C1t-h-pH.woff +0 -0
  186. zenml/zen_server/dashboard/assets/inter-latin-ext-400-normal-hnt3BR84.woff2 +0 -0
  187. zenml/zen_server/dashboard/assets/inter-latin-ext-500-normal-CIS2RHJS.woff2 +0 -0
  188. zenml/zen_server/dashboard/assets/inter-latin-ext-500-normal-UMdmhHu2.woff +0 -0
  189. zenml/zen_server/dashboard/assets/inter-latin-ext-600-normal-BnYJhD27.woff2 +0 -0
  190. zenml/zen_server/dashboard/assets/inter-latin-ext-600-normal-CAF0vJDd.woff +0 -0
  191. zenml/zen_server/dashboard/assets/inter-vietnamese-400-normal-BUNmGMP1.woff +0 -0
  192. zenml/zen_server/dashboard/assets/inter-vietnamese-400-normal-DMkecbls.woff2 +0 -0
  193. zenml/zen_server/dashboard/assets/inter-vietnamese-500-normal-DOriooB6.woff2 +0 -0
  194. zenml/zen_server/dashboard/assets/inter-vietnamese-500-normal-DQPw2Hwd.woff +0 -0
  195. zenml/zen_server/dashboard/assets/inter-vietnamese-600-normal-Cc8MFFhd.woff2 +0 -0
  196. zenml/zen_server/dashboard/assets/inter-vietnamese-600-normal-Cm6aH8_k.woff +0 -0
  197. zenml/zen_server/dashboard/assets/{kubernetes-BjbR6D-1.js → kubernetes--g7r02Zu.js} +1 -1
  198. zenml/zen_server/dashboard/assets/{layout-Dru15_XR.js → layout-DCSYN7-C.js} +1 -1
  199. zenml/zen_server/dashboard/assets/{link-external-BT2L8hAQ.js → link-external-CBEk6kEG.js} +1 -1
  200. zenml/zen_server/dashboard/assets/{login-mutation-ax6iL2Mb.js → login-mutation-DTcAFP1l.js} +1 -1
  201. zenml/zen_server/dashboard/assets/{logs-GiDJXbLS.js → logs-D5bdJGur.js} +1 -1
  202. zenml/zen_server/dashboard/assets/not-found-Cc-JkRH2.js +1 -0
  203. zenml/zen_server/dashboard/assets/{package-DYKZ5jKW.js → package-Cs35Szwh.js} +1 -1
  204. zenml/zen_server/dashboard/assets/{page-HkVBdZl6.js → page-9yplj5JT.js} +1 -1
  205. zenml/zen_server/dashboard/assets/{page-uORspyRu.js → page-B-y2XKIc.js} +1 -1
  206. zenml/zen_server/dashboard/assets/page-BBpOxVcY.js +1 -0
  207. zenml/zen_server/dashboard/assets/{page-BDg1F-Ug.js → page-BQQKaabe.js} +2 -2
  208. zenml/zen_server/dashboard/assets/page-BRInM1Lg.js +1 -0
  209. zenml/zen_server/dashboard/assets/{page-CvKnNK1S.js → page-BjjlMk7s.js} +1 -1
  210. zenml/zen_server/dashboard/assets/{page-BukXK1Aa.js → page-Bvd7YH2A.js} +1 -1
  211. zenml/zen_server/dashboard/assets/{page-DcTjHmYZ.js → page-C0N5q3l7.js} +1 -1
  212. zenml/zen_server/dashboard/assets/page-CT3Nep8W.js +1 -0
  213. zenml/zen_server/dashboard/assets/{page-DuqYMYmH.js → page-C_f47pBf.js} +1 -1
  214. zenml/zen_server/dashboard/assets/{page-DRfcRK1w.js → page-ClUVkl-O.js} +1 -1
  215. zenml/zen_server/dashboard/assets/page-Cmv8C_yM.js +3 -0
  216. zenml/zen_server/dashboard/assets/{page-p0BhSAWx.js → page-CyN2bdWG.js} +1 -1
  217. zenml/zen_server/dashboard/assets/page-CzzXH4fs.js +1 -0
  218. zenml/zen_server/dashboard/assets/{page-6mfzecin.js → page-DH_Z7iW1.js} +1 -1
  219. zenml/zen_server/dashboard/assets/{page-8kYmrh0B.js → page-DIOXwhiD.js} +1 -1
  220. zenml/zen_server/dashboard/assets/{page-BXarY9K2.js → page-DLixvR-7.js} +1 -1
  221. zenml/zen_server/dashboard/assets/page-DTlGjgnG.js +1 -0
  222. zenml/zen_server/dashboard/assets/page-Dbpl86h0.js +1 -0
  223. zenml/zen_server/dashboard/assets/{page-MAXyfXBq.js → page-Ddgy6kDS.js} +1 -1
  224. zenml/zen_server/dashboard/assets/page-DtCAfBLy.js +9 -0
  225. zenml/zen_server/dashboard/assets/{page-CKHNAq7z.js → page-Dx16z7nA.js} +1 -1
  226. zenml/zen_server/dashboard/assets/{page-DMSLXKGT.js → page-DzpVUZ8f.js} +1 -1
  227. zenml/zen_server/dashboard/assets/page-McUyYbo1.js +1 -0
  228. zenml/zen_server/dashboard/assets/{page-miU2rhYG.js → page-N4qoPHKb.js} +1 -1
  229. zenml/zen_server/dashboard/assets/page-T1P3RyAR.js +1 -0
  230. zenml/zen_server/dashboard/assets/{page-3qPX9WYH.js → page-bKaULTGG.js} +1 -1
  231. zenml/zen_server/dashboard/assets/page-sbXUJy9t.js +1 -0
  232. zenml/zen_server/dashboard/assets/{persist-CfJMar_k.js → persist-CP0JmYZ4.js} +1 -1
  233. zenml/zen_server/dashboard/assets/{persist-BxIR2XZs.js → persist-DNb5cdrU.js} +1 -1
  234. zenml/zen_server/dashboard/assets/{plus-Bc8eLSDM.js → plus-C9IxgN2M.js} +1 -1
  235. zenml/zen_server/dashboard/assets/{refresh-hfgWPeto.js → refresh-BVu22P_C.js} +1 -1
  236. zenml/zen_server/dashboard/assets/{rocket-SESCGQXm.js → rocket-CONEmRmB.js} +1 -1
  237. zenml/zen_server/dashboard/assets/{sharedSchema-vub0rii3.js → sharedSchema-TMLu-nYQ.js} +1 -1
  238. zenml/zen_server/dashboard/assets/stack-detail-query-xmYxSsUY.js +1 -0
  239. zenml/zen_server/dashboard/assets/{tick-circle-m-hJG8i9.js → tick-circle-CM1ZScbQ.js} +1 -1
  240. zenml/zen_server/dashboard/assets/{trash-DUWZWzse.js → trash-DkJHMOg7.js} +1 -1
  241. zenml/zen_server/dashboard/assets/{update-server-settings-mutation-FGVP7X2U.js → update-server-settings-mutation-DsU8cNVl.js} +1 -1
  242. zenml/zen_server/dashboard/assets/{url-CbAPzsmT.js → url-D5le3J4q.js} +1 -1
  243. zenml/zen_server/dashboard/assets/zod-D89GC_vc.js +1 -0
  244. zenml/zen_server/dashboard/index.html +7 -7
  245. zenml/zen_server/deploy/__init__.py +0 -9
  246. zenml/zen_server/deploy/docker/docker_zen_server.py +0 -6
  247. zenml/zen_server/deploy/helm/Chart.yaml +1 -1
  248. zenml/zen_server/deploy/helm/README.md +2 -2
  249. zenml/zen_server/deploy/local/local_zen_server.py +0 -6
  250. zenml/zen_server/feature_gate/zenml_cloud_feature_gate.py +1 -1
  251. zenml/zen_server/routers/artifact_version_endpoints.py +1 -1
  252. zenml/zen_server/routers/runs_endpoints.py +0 -28
  253. zenml/zen_server/template_execution/runner_entrypoint_configuration.py +1 -1
  254. zenml/zen_server/template_execution/utils.py +2 -2
  255. zenml/zen_server/utils.py +10 -40
  256. zenml/zen_server/zen_server_api.py +107 -17
  257. zenml/zen_stores/base_zen_store.py +0 -2
  258. zenml/zen_stores/migrations/versions/0.68.0_release.py +23 -0
  259. zenml/zen_stores/migrations/versions/1d8f30c54477_migrate_to_new_.py +124 -0
  260. zenml/zen_stores/schemas/pipeline_run_schemas.py +12 -4
  261. zenml/zen_stores/schemas/step_run_schemas.py +2 -2
  262. zenml/zen_stores/sql_zen_store.py +29 -5
  263. {zenml_nightly-0.67.0.dev20241002.dist-info → zenml_nightly-0.68.0.dev20241027.dist-info}/METADATA +4 -8
  264. {zenml_nightly-0.67.0.dev20241002.dist-info → zenml_nightly-0.68.0.dev20241027.dist-info}/RECORD +270 -450
  265. {zenml_nightly-0.67.0.dev20241002.dist-info → zenml_nightly-0.68.0.dev20241027.dist-info}/WHEEL +1 -1
  266. zenml/cli/stack_recipes.py +0 -469
  267. zenml/lineage_graph/__init__.py +0 -34
  268. zenml/lineage_graph/edge.py +0 -24
  269. zenml/lineage_graph/lineage_graph.py +0 -244
  270. zenml/lineage_graph/node/__init__.py +0 -32
  271. zenml/lineage_graph/node/artifact_node.py +0 -51
  272. zenml/lineage_graph/node/base_node.py +0 -31
  273. zenml/lineage_graph/node/step_node.py +0 -41
  274. zenml/model/model_version.py +0 -38
  275. zenml/new/__init__.py +0 -13
  276. zenml/new/pipelines/__init__.py +0 -13
  277. zenml/new/pipelines/code_archive.py +0 -157
  278. zenml/new/pipelines/pipeline_decorator.py +0 -118
  279. zenml/new/steps/__init__.py +0 -13
  280. zenml/new/steps/step_decorator.py +0 -176
  281. zenml/pipelines/base_pipeline.py +0 -273
  282. zenml/post_execution/__init__.py +0 -30
  283. zenml/post_execution/pipeline.py +0 -55
  284. zenml/post_execution/pipeline_run.py +0 -55
  285. zenml/services/terraform/__init__.py +0 -14
  286. zenml/services/terraform/terraform_service.py +0 -441
  287. zenml/steps/external_artifact.py +0 -26
  288. zenml/steps/step_environment.py +0 -108
  289. zenml/steps/step_output.py +0 -36
  290. zenml/utils/mlstacks_utils.py +0 -635
  291. zenml/utils/terraform_utils.py +0 -43
  292. zenml/zen_server/dashboard/assets/@radix-DnFH_oo1.js +0 -85
  293. zenml/zen_server/dashboard/assets/@react-router-APVeuk-U.js +0 -29
  294. zenml/zen_server/dashboard/assets/@reactflow-ytavUpwh.js +0 -17
  295. zenml/zen_server/dashboard/assets/@tanstack-QbMbTrh5.js +0 -22
  296. zenml/zen_server/dashboard/assets/ComponentBadge-gKR1OIwG.js +0 -1
  297. zenml/zen_server/dashboard/assets/ExecutionStatus-D6r6aK8J.js +0 -1
  298. zenml/zen_server/dashboard/assets/MarkdownVisualization-DS05sfBm.js +0 -14
  299. zenml/zen_server/dashboard/assets/SearchField-BzmfxS0L.js +0 -1
  300. zenml/zen_server/dashboard/assets/all-pipeline-runs-query-BA3R2Sey.js +0 -1
  301. zenml/zen_server/dashboard/assets/delete-run-CP0pcJ3U.js +0 -1
  302. zenml/zen_server/dashboard/assets/index-BhJ6ZJxv.css +0 -1
  303. zenml/zen_server/dashboard/assets/index-Ci0nJ8EZ.js +0 -55
  304. zenml/zen_server/dashboard/assets/index.esm-BE1uqCX5.js +0 -1
  305. zenml/zen_server/dashboard/assets/inter-cyrillic-400-normal-Df6ckaLK.woff2 +0 -0
  306. zenml/zen_server/dashboard/assets/inter-cyrillic-400-normal-JrS_4yms.woff +0 -0
  307. zenml/zen_server/dashboard/assets/inter-cyrillic-500-normal-BRrLR67x.woff2 +0 -0
  308. zenml/zen_server/dashboard/assets/inter-cyrillic-500-normal-DskEQOpE.woff +0 -0
  309. zenml/zen_server/dashboard/assets/inter-cyrillic-600-normal-DDpWG8g5.woff2 +0 -0
  310. zenml/zen_server/dashboard/assets/inter-cyrillic-600-normal-iz1--dBq.woff +0 -0
  311. zenml/zen_server/dashboard/assets/inter-cyrillic-ext-400-normal-CzG7Kr3z.woff +0 -0
  312. zenml/zen_server/dashboard/assets/inter-cyrillic-ext-400-normal-tyfMZHQw.woff2 +0 -0
  313. zenml/zen_server/dashboard/assets/inter-cyrillic-ext-500-normal-DOnSzjnx.woff2 +0 -0
  314. zenml/zen_server/dashboard/assets/inter-cyrillic-ext-500-normal-Xebo2OyJ.woff +0 -0
  315. zenml/zen_server/dashboard/assets/inter-cyrillic-ext-600-normal-DpA2xaRd.woff2 +0 -0
  316. zenml/zen_server/dashboard/assets/inter-cyrillic-ext-600-normal-KAwcVx6H.woff +0 -0
  317. zenml/zen_server/dashboard/assets/inter-greek-400-normal-DQXyrmoy.woff2 +0 -0
  318. zenml/zen_server/dashboard/assets/inter-greek-400-normal-DvIPHDQ7.woff +0 -0
  319. zenml/zen_server/dashboard/assets/inter-greek-500-normal-BjpBGs91.woff +0 -0
  320. zenml/zen_server/dashboard/assets/inter-greek-500-normal-CmOavsDc.woff2 +0 -0
  321. zenml/zen_server/dashboard/assets/inter-greek-600-normal-B-l8Lzzd.woff2 +0 -0
  322. zenml/zen_server/dashboard/assets/inter-greek-600-normal-BLZsI-P3.woff +0 -0
  323. zenml/zen_server/dashboard/assets/inter-greek-ext-400-normal-CIdlr5YK.woff2 +0 -0
  324. zenml/zen_server/dashboard/assets/inter-greek-ext-400-normal-_Rr29XE2.woff +0 -0
  325. zenml/zen_server/dashboard/assets/inter-greek-ext-500-normal-2pdUafRD.woff2 +0 -0
  326. zenml/zen_server/dashboard/assets/inter-greek-ext-500-normal-Dtavx3qw.woff +0 -0
  327. zenml/zen_server/dashboard/assets/inter-greek-ext-600-normal-BmtRFZgT.woff +0 -0
  328. zenml/zen_server/dashboard/assets/inter-greek-ext-600-normal-CkBLDEl_.woff2 +0 -0
  329. zenml/zen_server/dashboard/assets/inter-latin-400-normal-BT1H-PT_.woff2 +0 -0
  330. zenml/zen_server/dashboard/assets/inter-latin-400-normal-Cdi8t5Mu.woff +0 -0
  331. zenml/zen_server/dashboard/assets/inter-latin-500-normal-D4I8BKCx.woff +0 -0
  332. zenml/zen_server/dashboard/assets/inter-latin-500-normal-kWhwEdDH.woff2 +0 -0
  333. zenml/zen_server/dashboard/assets/inter-latin-600-normal-B2Ssfs8e.woff2 +0 -0
  334. zenml/zen_server/dashboard/assets/inter-latin-600-normal-Dbvh0wvx.woff +0 -0
  335. zenml/zen_server/dashboard/assets/inter-latin-ext-400-normal-8tIzm-yw.woff +0 -0
  336. zenml/zen_server/dashboard/assets/inter-latin-ext-400-normal-D3W-OpO-.woff2 +0 -0
  337. zenml/zen_server/dashboard/assets/inter-latin-ext-500-normal-B9u8Q_zH.woff2 +0 -0
  338. zenml/zen_server/dashboard/assets/inter-latin-ext-500-normal-SuUkSNTU.woff +0 -0
  339. zenml/zen_server/dashboard/assets/inter-latin-ext-600-normal-Dg0Bk0Yr.woff +0 -0
  340. zenml/zen_server/dashboard/assets/inter-latin-ext-600-normal-ao35dkSb.woff2 +0 -0
  341. zenml/zen_server/dashboard/assets/inter-vietnamese-400-normal-Cnt0N5Vm.woff2 +0 -0
  342. zenml/zen_server/dashboard/assets/inter-vietnamese-400-normal-DIOGfGLL.woff +0 -0
  343. zenml/zen_server/dashboard/assets/inter-vietnamese-500-normal-0i6yoQMg.woff +0 -0
  344. zenml/zen_server/dashboard/assets/inter-vietnamese-500-normal-5IkPJ6Nk.woff2 +0 -0
  345. zenml/zen_server/dashboard/assets/inter-vietnamese-600-normal-BQ_dbMbg.woff +0 -0
  346. zenml/zen_server/dashboard/assets/inter-vietnamese-600-normal-DjnxGF-L.woff2 +0 -0
  347. zenml/zen_server/dashboard/assets/not-found-DbjllLY_.js +0 -1
  348. zenml/zen_server/dashboard/assets/page-B1n7_W7z.js +0 -1
  349. zenml/zen_server/dashboard/assets/page-BZZhLo2u.js +0 -1
  350. zenml/zen_server/dashboard/assets/page-Bbf_oBjn.js +0 -1
  351. zenml/zen_server/dashboard/assets/page-BjjuBvZG.js +0 -9
  352. zenml/zen_server/dashboard/assets/page-CHaQkFK5.js +0 -1
  353. zenml/zen_server/dashboard/assets/page-CS0SYFK8.js +0 -1
  354. zenml/zen_server/dashboard/assets/page-DGM1CbYT.js +0 -2
  355. zenml/zen_server/dashboard/assets/page-DOmIZ2ra.js +0 -1
  356. zenml/zen_server/dashboard/assets/page-DYVmJ9_w.js +0 -3
  357. zenml/zen_server/dashboard/assets/page-Dwow2doB.js +0 -1
  358. zenml/zen_server/dashboard/assets/stack-detail-query-DQcyzG-2.js +0 -1
  359. zenml/zen_server/dashboard/assets/zod-uFd1wBcd.js +0 -1
  360. zenml/zen_server/dashboard_legacy/_redirects +0 -1
  361. zenml/zen_server/dashboard_legacy/asset-manifest.json +0 -131
  362. zenml/zen_server/dashboard_legacy/favicon.ico +0 -0
  363. zenml/zen_server/dashboard_legacy/index.html +0 -1
  364. zenml/zen_server/dashboard_legacy/manifest.json +0 -25
  365. zenml/zen_server/dashboard_legacy/precache-manifest.6d320abb70db612019dda6c4948e7a90.js +0 -462
  366. zenml/zen_server/dashboard_legacy/robots.txt +0 -2
  367. zenml/zen_server/dashboard_legacy/service-worker.js +0 -39
  368. zenml/zen_server/dashboard_legacy/static/css/2.5b37d44a.chunk.css +0 -16
  369. zenml/zen_server/dashboard_legacy/static/css/2.5b37d44a.chunk.css.map +0 -1
  370. zenml/zen_server/dashboard_legacy/static/css/main.e79dff04.chunk.css +0 -2
  371. zenml/zen_server/dashboard_legacy/static/css/main.e79dff04.chunk.css.map +0 -1
  372. zenml/zen_server/dashboard_legacy/static/js/2.7934458d.chunk.js +0 -3
  373. zenml/zen_server/dashboard_legacy/static/js/2.7934458d.chunk.js.LICENSE.txt +0 -95
  374. zenml/zen_server/dashboard_legacy/static/js/2.7934458d.chunk.js.map +0 -1
  375. zenml/zen_server/dashboard_legacy/static/js/main.fa9299d5.chunk.js +0 -2
  376. zenml/zen_server/dashboard_legacy/static/js/main.fa9299d5.chunk.js.map +0 -1
  377. zenml/zen_server/dashboard_legacy/static/js/runtime-main.bfca2edd.js +0 -2
  378. zenml/zen_server/dashboard_legacy/static/js/runtime-main.bfca2edd.js.map +0 -1
  379. zenml/zen_server/dashboard_legacy/static/media/AlertTriangle.28aee535.svg +0 -5
  380. zenml/zen_server/dashboard_legacy/static/media/ArrowSquareOut.abfb9bc7.svg +0 -5
  381. zenml/zen_server/dashboard_legacy/static/media/Back.86c23a22.svg +0 -4
  382. zenml/zen_server/dashboard_legacy/static/media/BookOpen.5cb101ff.svg +0 -4
  383. zenml/zen_server/dashboard_legacy/static/media/BoundingBox.1eb98717.svg +0 -10
  384. zenml/zen_server/dashboard_legacy/static/media/Burger.9b1c67d7.svg +0 -3
  385. zenml/zen_server/dashboard_legacy/static/media/Cached.2381fb8d.svg +0 -1
  386. zenml/zen_server/dashboard_legacy/static/media/Calendar.356e11c7.svg +0 -3
  387. zenml/zen_server/dashboard_legacy/static/media/ChartBarHorizontal.0247447b.svg +0 -6
  388. zenml/zen_server/dashboard_legacy/static/media/ChartLine.0d79e18d.svg +0 -4
  389. zenml/zen_server/dashboard_legacy/static/media/ChatDots.2e1c9211.svg +0 -6
  390. zenml/zen_server/dashboard_legacy/static/media/Check.dad6beb2.svg +0 -3
  391. zenml/zen_server/dashboard_legacy/static/media/CheckCircleFilled.c19566d0.svg +0 -3
  392. zenml/zen_server/dashboard_legacy/static/media/Checkbox.af50e31e.svg +0 -3
  393. zenml/zen_server/dashboard_legacy/static/media/ChevronDown.f860ce32.svg +0 -3
  394. zenml/zen_server/dashboard_legacy/static/media/ChevronDownLight.6642d756.svg +0 -3
  395. zenml/zen_server/dashboard_legacy/static/media/ChevronLeft.f6edfcdb.svg +0 -3
  396. zenml/zen_server/dashboard_legacy/static/media/CircleCheck.f98fd6ca.svg +0 -1
  397. zenml/zen_server/dashboard_legacy/static/media/Clock.ffc9de95.svg +0 -3
  398. zenml/zen_server/dashboard_legacy/static/media/Close.74e9efbc.svg +0 -5
  399. zenml/zen_server/dashboard_legacy/static/media/CloseWithBorder.6960930a.svg +0 -3
  400. zenml/zen_server/dashboard_legacy/static/media/CloseWithoutBorder.cd6f71df.svg +0 -3
  401. zenml/zen_server/dashboard_legacy/static/media/CloudArrowUp.0aecb235.svg +0 -6
  402. zenml/zen_server/dashboard_legacy/static/media/Code.ef0f33b5.svg +0 -3
  403. zenml/zen_server/dashboard_legacy/static/media/Config.0be63f8a.svg +0 -1
  404. zenml/zen_server/dashboard_legacy/static/media/Connector.9fd46ef1.svg +0 -10
  405. zenml/zen_server/dashboard_legacy/static/media/Copy.36e2112a.svg +0 -1
  406. zenml/zen_server/dashboard_legacy/static/media/Dashboard.d05787e0.svg +0 -3
  407. zenml/zen_server/dashboard_legacy/static/media/Data.b1c3b5f8.svg +0 -3
  408. zenml/zen_server/dashboard_legacy/static/media/Delete.3c361b28.svg +0 -8
  409. zenml/zen_server/dashboard_legacy/static/media/Docs.7541d478.svg +0 -7
  410. zenml/zen_server/dashboard_legacy/static/media/Download.fba04d87.svg +0 -5
  411. zenml/zen_server/dashboard_legacy/static/media/Edit.490eb294.svg +0 -6
  412. zenml/zen_server/dashboard_legacy/static/media/EmptyRightArrow.23749d01.svg +0 -3
  413. zenml/zen_server/dashboard_legacy/static/media/Example.6396cd37.svg +0 -5
  414. zenml/zen_server/dashboard_legacy/static/media/Extension.1394cd4a.svg +0 -3
  415. zenml/zen_server/dashboard_legacy/static/media/Eye.d9e4ee62.svg +0 -4
  416. zenml/zen_server/dashboard_legacy/static/media/Failed.0213c1a0.svg +0 -1
  417. zenml/zen_server/dashboard_legacy/static/media/FileText.1f15bacd.svg +0 -7
  418. zenml/zen_server/dashboard_legacy/static/media/Filter.ab6b9c0d.svg +0 -3
  419. zenml/zen_server/dashboard_legacy/static/media/Folders.12b29887.svg +0 -5
  420. zenml/zen_server/dashboard_legacy/static/media/FunnelFill.6df4c143.svg +0 -3
  421. zenml/zen_server/dashboard_legacy/static/media/GitCommit.7dd9c2aa.svg +0 -5
  422. zenml/zen_server/dashboard_legacy/static/media/GitHub_Logo.cefc2023.png +0 -0
  423. zenml/zen_server/dashboard_legacy/static/media/Graph.2c63a892.svg +0 -11
  424. zenml/zen_server/dashboard_legacy/static/media/History.08329240.svg +0 -3
  425. zenml/zen_server/dashboard_legacy/static/media/Home.0843b0d5.svg +0 -3
  426. zenml/zen_server/dashboard_legacy/static/media/ImageBuilder.ea762d9c.svg +0 -6
  427. zenml/zen_server/dashboard_legacy/static/media/InProgress.304a0edc.svg +0 -1
  428. zenml/zen_server/dashboard_legacy/static/media/Info.9fe10c5c.svg +0 -3
  429. zenml/zen_server/dashboard_legacy/static/media/KeyboardReturn.491afbe3.svg +0 -3
  430. zenml/zen_server/dashboard_legacy/static/media/Link.72bbb55d.svg +0 -4
  431. zenml/zen_server/dashboard_legacy/static/media/Lock.30f5e1fe.svg +0 -5
  432. zenml/zen_server/dashboard_legacy/static/media/Lock2.a769ea52.svg +0 -3
  433. zenml/zen_server/dashboard_legacy/static/media/LockKey.92f21621.svg +0 -6
  434. zenml/zen_server/dashboard_legacy/static/media/Logs.8bf4d005.svg +0 -5
  435. zenml/zen_server/dashboard_legacy/static/media/MinusCircle.4188f418.svg +0 -4
  436. zenml/zen_server/dashboard_legacy/static/media/ModelRegistry.f0de050a.svg +0 -6
  437. zenml/zen_server/dashboard_legacy/static/media/MultiUser.a2ba7c67.svg +0 -10
  438. zenml/zen_server/dashboard_legacy/static/media/PaginationFirst.92628634.svg +0 -4
  439. zenml/zen_server/dashboard_legacy/static/media/PaginationLast.00d3c732.svg +0 -4
  440. zenml/zen_server/dashboard_legacy/static/media/PaginationNext.86158845.svg +0 -3
  441. zenml/zen_server/dashboard_legacy/static/media/PaginationPrev.60c18a88.svg +0 -3
  442. zenml/zen_server/dashboard_legacy/static/media/Pen.f2d831d4.svg +0 -6
  443. zenml/zen_server/dashboard_legacy/static/media/PhotoCamera.179d6d4c.svg +0 -3
  444. zenml/zen_server/dashboard_legacy/static/media/Pipeline.30d298b0.svg +0 -7
  445. zenml/zen_server/dashboard_legacy/static/media/Plus.5aa1c16b.svg +0 -3
  446. zenml/zen_server/dashboard_legacy/static/media/PlusCircle.92d860dd.svg +0 -5
  447. zenml/zen_server/dashboard_legacy/static/media/Repositories.71a36b8c.svg +0 -3
  448. zenml/zen_server/dashboard_legacy/static/media/RightArrow.f30d3871.svg +0 -29
  449. zenml/zen_server/dashboard_legacy/static/media/Rocket.63bf7b9d.svg +0 -3
  450. zenml/zen_server/dashboard_legacy/static/media/RocketLaunch.1bff2b59.svg +0 -6
  451. zenml/zen_server/dashboard_legacy/static/media/Rubik-Medium.c87313aa.ttf +0 -0
  452. zenml/zen_server/dashboard_legacy/static/media/Rubik-Regular.b3d0902b.ttf +0 -0
  453. zenml/zen_server/dashboard_legacy/static/media/Run.daec4fb2.svg +0 -6
  454. zenml/zen_server/dashboard_legacy/static/media/Search.d1afcce5.svg +0 -4
  455. zenml/zen_server/dashboard_legacy/static/media/Settings.59ca73ae.svg +0 -4
  456. zenml/zen_server/dashboard_legacy/static/media/Share2.46c3ff66.svg +0 -3
  457. zenml/zen_server/dashboard_legacy/static/media/SignOut.6aa718c5.svg +0 -3
  458. zenml/zen_server/dashboard_legacy/static/media/SimplePlus.5cf7ec20.svg +0 -3
  459. zenml/zen_server/dashboard_legacy/static/media/SingleUser.bef3a095.svg +0 -4
  460. zenml/zen_server/dashboard_legacy/static/media/SourceCodePro-Regular.b484b32f.ttf +0 -0
  461. zenml/zen_server/dashboard_legacy/static/media/Stack.19b604ac.svg +0 -5
  462. zenml/zen_server/dashboard_legacy/static/media/StackComponent.b1ba90b5.svg +0 -4
  463. zenml/zen_server/dashboard_legacy/static/media/Star.f0c25022.svg +0 -9
  464. zenml/zen_server/dashboard_legacy/static/media/StarOutline.94ca8cd9.svg +0 -3
  465. zenml/zen_server/dashboard_legacy/static/media/Storefront.4b4796fe.svg +0 -3
  466. zenml/zen_server/dashboard_legacy/static/media/Stream.543e3039.svg +0 -3
  467. zenml/zen_server/dashboard_legacy/static/media/SupportAgent.510ddf1f.svg +0 -8
  468. zenml/zen_server/dashboard_legacy/static/media/Table.77033750.svg +0 -6
  469. zenml/zen_server/dashboard_legacy/static/media/Tool.d5785486.svg +0 -3
  470. zenml/zen_server/dashboard_legacy/static/media/UserPlus.741a99d7.svg +0 -6
  471. zenml/zen_server/dashboard_legacy/static/media/Verified.0625b2a0.svg +0 -3
  472. zenml/zen_server/dashboard_legacy/static/media/addNew.4fb6c939.svg +0 -8
  473. zenml/zen_server/dashboard_legacy/static/media/arrowClose.cbd53f3f.svg +0 -3
  474. zenml/zen_server/dashboard_legacy/static/media/arrowOpen.6ceef0af.svg +0 -3
  475. zenml/zen_server/dashboard_legacy/static/media/check_small.30bc0138.svg +0 -3
  476. zenml/zen_server/dashboard_legacy/static/media/circleArrowSideClose.98d6013e.svg +0 -18
  477. zenml/zen_server/dashboard_legacy/static/media/circleArrowSideOpen.63653df6.svg +0 -18
  478. zenml/zen_server/dashboard_legacy/static/media/image.104fd14b.png +0 -0
  479. zenml/zen_server/dashboard_legacy/static/media/imageAddIcon.e83004a9.svg +0 -7
  480. zenml/zen_server/dashboard_legacy/static/media/logo.93333e5c.svg +0 -1
  481. zenml/zen_server/dashboard_legacy/static/media/logo_small.4204397d.svg +0 -3
  482. zenml/zen_server/dashboard_legacy/static/media/logo_white.d4b4414e.svg +0 -20
  483. zenml/zen_server/dashboard_legacy/static/media/notConnected.5e2c8ea7.svg +0 -8
  484. zenml/zen_server/dashboard_legacy/static/media/plugin-fallback.72c294e6.svg +0 -6
  485. zenml/zen_server/dashboard_legacy/static/media/share.bcd998b0.svg +0 -5
  486. zenml/zen_server/dashboard_legacy/static/media/stars.08a9b19a.svg +0 -8
  487. zenml/zen_server/deploy/terraform/__init__.py +0 -41
  488. zenml/zen_server/deploy/terraform/providers/__init__.py +0 -14
  489. zenml/zen_server/deploy/terraform/providers/aws_provider.py +0 -61
  490. zenml/zen_server/deploy/terraform/providers/azure_provider.py +0 -59
  491. zenml/zen_server/deploy/terraform/providers/gcp_provider.py +0 -59
  492. zenml/zen_server/deploy/terraform/providers/terraform_provider.py +0 -331
  493. zenml/zen_server/deploy/terraform/recipes/aws/.gitignore +0 -8
  494. zenml/zen_server/deploy/terraform/recipes/aws/helm.tf +0 -20
  495. zenml/zen_server/deploy/terraform/recipes/aws/ingress.tf +0 -30
  496. zenml/zen_server/deploy/terraform/recipes/aws/outputs.tf +0 -7
  497. zenml/zen_server/deploy/terraform/recipes/aws/printf.cmd +0 -2
  498. zenml/zen_server/deploy/terraform/recipes/aws/sql.tf +0 -62
  499. zenml/zen_server/deploy/terraform/recipes/aws/terraform.tf +0 -44
  500. zenml/zen_server/deploy/terraform/recipes/aws/variables.tf +0 -167
  501. zenml/zen_server/deploy/terraform/recipes/aws/vpc.tf +0 -47
  502. zenml/zen_server/deploy/terraform/recipes/aws/zen_server.tf +0 -103
  503. zenml/zen_server/deploy/terraform/recipes/azure/.gitignore +0 -8
  504. zenml/zen_server/deploy/terraform/recipes/azure/helm.tf +0 -20
  505. zenml/zen_server/deploy/terraform/recipes/azure/ingress.tf +0 -30
  506. zenml/zen_server/deploy/terraform/recipes/azure/key_vault.tf +0 -73
  507. zenml/zen_server/deploy/terraform/recipes/azure/outputs.tf +0 -7
  508. zenml/zen_server/deploy/terraform/recipes/azure/printf.cmd +0 -2
  509. zenml/zen_server/deploy/terraform/recipes/azure/rg.tf +0 -36
  510. zenml/zen_server/deploy/terraform/recipes/azure/sql.tf +0 -65
  511. zenml/zen_server/deploy/terraform/recipes/azure/terraform.tf +0 -52
  512. zenml/zen_server/deploy/terraform/recipes/azure/variables.tf +0 -176
  513. zenml/zen_server/deploy/terraform/recipes/azure/zen_server.tf +0 -103
  514. zenml/zen_server/deploy/terraform/recipes/gcp/.gitignore +0 -8
  515. zenml/zen_server/deploy/terraform/recipes/gcp/helm.tf +0 -20
  516. zenml/zen_server/deploy/terraform/recipes/gcp/ingress.tf +0 -30
  517. zenml/zen_server/deploy/terraform/recipes/gcp/outputs.tf +0 -7
  518. zenml/zen_server/deploy/terraform/recipes/gcp/printf.cmd +0 -2
  519. zenml/zen_server/deploy/terraform/recipes/gcp/sql.tf +0 -64
  520. zenml/zen_server/deploy/terraform/recipes/gcp/terraform.tf +0 -44
  521. zenml/zen_server/deploy/terraform/recipes/gcp/variables.tf +0 -171
  522. zenml/zen_server/deploy/terraform/recipes/gcp/zen_server.tf +0 -114
  523. zenml/zen_server/deploy/terraform/terraform_zen_server.py +0 -246
  524. /zenml/{new/pipelines → pipelines}/build_utils.py +0 -0
  525. /zenml/{new/pipelines → pipelines}/run_utils.py +0 -0
  526. /zenml/{new/steps → steps}/decorated_step.py +0 -0
  527. {zenml_nightly-0.67.0.dev20241002.dist-info → zenml_nightly-0.68.0.dev20241027.dist-info}/LICENSE +0 -0
  528. {zenml_nightly-0.67.0.dev20241002.dist-info → zenml_nightly-0.68.0.dev20241027.dist-info}/entry_points.txt +0 -0
zenml/zen_server/utils.py CHANGED
@@ -39,7 +39,6 @@ from zenml.constants import (
39
39
  INFO,
40
40
  VERSION_1,
41
41
  )
42
- from zenml.enums import ServerProviderType
43
42
  from zenml.exceptions import IllegalOperationError, OAuthError
44
43
  from zenml.logger import get_logger
45
44
  from zenml.plugins.plugin_flavor_registry import PluginFlavorRegistry
@@ -237,45 +236,23 @@ def server_config() -> ServerConfiguration:
237
236
  return _server_config
238
237
 
239
238
 
240
- def get_active_deployment(local: bool = False) -> Optional["ServerDeployment"]:
241
- """Get the active local or remote server deployment.
239
+ def get_local_server() -> Optional["ServerDeployment"]:
240
+ """Get the active local server.
242
241
 
243
- Call this function to retrieve the local or remote server deployment that
244
- was last provisioned on this machine.
245
-
246
- Args:
247
- local: Whether to return the local active deployment or the remote one.
242
+ Call this function to retrieve the local server deployed on this machine.
248
243
 
249
244
  Returns:
250
- The local or remote active server deployment or None, if no deployment
251
- was found.
245
+ The local server deployment or None, if no local server deployment was
246
+ found.
252
247
  """
253
248
  from zenml.zen_server.deploy.deployer import ServerDeployer
254
249
 
255
250
  deployer = ServerDeployer()
256
- if local:
257
- servers = deployer.list_servers(provider_type=ServerProviderType.LOCAL)
258
- if not servers:
259
- servers = deployer.list_servers(
260
- provider_type=ServerProviderType.DOCKER
261
- )
262
- else:
263
- servers = deployer.list_servers()
264
-
251
+ servers = deployer.list_servers()
265
252
  if not servers:
266
253
  return None
267
254
 
268
- for server in servers:
269
- if server.config.provider in [
270
- ServerProviderType.LOCAL,
271
- ServerProviderType.DOCKER,
272
- ]:
273
- if local:
274
- return server
275
- elif not local:
276
- return server
277
-
278
- return None
255
+ return servers[0]
279
256
 
280
257
 
281
258
  def get_active_server_details() -> Tuple[str, Optional[int]]:
@@ -284,8 +261,7 @@ def get_active_server_details() -> Tuple[str, Optional[int]]:
284
261
  When multiple servers are present, the following precedence is used to
285
262
  determine which server to use:
286
263
  - If the client is connected to a server, that server has precedence.
287
- - If no server is connected, a server that was deployed remotely has
288
- precedence over a server that was deployed locally.
264
+ - If no server is connected, the local server is used, if present.
289
265
 
290
266
  Returns:
291
267
  The URL and port of the currently active server.
@@ -299,14 +275,8 @@ def get_active_server_details() -> Tuple[str, Optional[int]]:
299
275
  logger.debug("Getting URL of connected server.")
300
276
  parsed_url = urlparse(gc.store_configuration.url)
301
277
  return f"{parsed_url.scheme}://{parsed_url.hostname}", parsed_url.port
302
- # Else, check for deployed servers
303
- server = get_active_deployment(local=False)
304
- if server:
305
- logger.debug("Getting URL of remote server.")
306
- else:
307
- server = get_active_deployment(local=True)
308
- logger.debug("Getting URL of local server.")
309
-
278
+ # Else, check for local servers
279
+ server = get_local_server()
310
280
  if server and server.status and server.status.url:
311
281
  if isinstance(server.config, LocalServerDeploymentConfig):
312
282
  return server.status.url, server.config.port
@@ -24,7 +24,7 @@ import os
24
24
  from asyncio.log import logger
25
25
  from datetime import datetime, timedelta, timezone
26
26
  from genericpath import isfile
27
- from typing import Any, List
27
+ from typing import Any, List, Set
28
28
 
29
29
  from anyio import to_thread
30
30
  from fastapi import FastAPI, HTTPException, Request
@@ -32,8 +32,18 @@ from fastapi.exceptions import RequestValidationError
32
32
  from fastapi.responses import ORJSONResponse
33
33
  from fastapi.staticfiles import StaticFiles
34
34
  from fastapi.templating import Jinja2Templates
35
+ from starlette.middleware.base import (
36
+ BaseHTTPMiddleware,
37
+ RequestResponseEndpoint,
38
+ )
35
39
  from starlette.middleware.cors import CORSMiddleware
36
- from starlette.responses import FileResponse
40
+ from starlette.responses import (
41
+ FileResponse,
42
+ JSONResponse,
43
+ RedirectResponse,
44
+ Response,
45
+ )
46
+ from starlette.types import ASGIApp
37
47
 
38
48
  import zenml
39
49
  from zenml.analytics import source_context
@@ -43,6 +53,7 @@ from zenml.constants import (
43
53
  HEALTH,
44
54
  )
45
55
  from zenml.enums import AuthScheme, SourceContextTypes
56
+ from zenml.models import ServerDeploymentType
46
57
  from zenml.zen_server.exceptions import error_detail
47
58
  from zenml.zen_server.routers import (
48
59
  actions_endpoints,
@@ -93,10 +104,7 @@ from zenml.zen_server.utils import (
93
104
  zen_store,
94
105
  )
95
106
 
96
- if server_config().use_legacy_dashboard:
97
- DASHBOARD_DIRECTORY = "dashboard_legacy"
98
- else:
99
- DASHBOARD_DIRECTORY = "dashboard"
107
+ DASHBOARD_DIRECTORY = "dashboard"
100
108
 
101
109
 
102
110
  def relative_path(rel: str) -> str:
@@ -143,6 +151,79 @@ def validation_exception_handler(
143
151
  return ORJSONResponse(error_detail(exc, ValueError), status_code=422)
144
152
 
145
153
 
154
+ class RequestBodyLimit(BaseHTTPMiddleware):
155
+ """Limits the size of the request body."""
156
+
157
+ def __init__(self, app: ASGIApp, max_bytes: int) -> None:
158
+ """Limits the size of the request body.
159
+
160
+ Args:
161
+ app: The FastAPI app.
162
+ max_bytes: The maximum size of the request body.
163
+ """
164
+ super().__init__(app)
165
+ self.max_bytes = max_bytes
166
+
167
+ async def dispatch(
168
+ self, request: Request, call_next: RequestResponseEndpoint
169
+ ) -> Response:
170
+ """Limits the size of the request body.
171
+
172
+ Args:
173
+ request: The incoming request.
174
+ call_next: The next function to be called.
175
+
176
+ Returns:
177
+ The response to the request.
178
+ """
179
+ if content_length := request.headers.get("content-length"):
180
+ if int(content_length) > self.max_bytes:
181
+ return Response(status_code=413) # Request Entity Too Large
182
+ return await call_next(request)
183
+
184
+
185
+ class RestrictFileUploadsMiddleware(BaseHTTPMiddleware):
186
+ """Restrict file uploads to certain paths."""
187
+
188
+ def __init__(self, app: FastAPI, allowed_paths: Set[str]):
189
+ """Restrict file uploads to certain paths.
190
+
191
+ Args:
192
+ app: The FastAPI app.
193
+ allowed_paths: The allowed paths.
194
+ """
195
+ super().__init__(app)
196
+ self.allowed_paths = allowed_paths
197
+
198
+ async def dispatch(
199
+ self, request: Request, call_next: RequestResponseEndpoint
200
+ ) -> Response:
201
+ """Restrict file uploads to certain paths.
202
+
203
+ Args:
204
+ request: The incoming request.
205
+ call_next: The next function to be called.
206
+
207
+ Returns:
208
+ The response to the request.
209
+ """
210
+ if request.method == "POST":
211
+ content_type = request.headers.get("content-type", "")
212
+ if (
213
+ "multipart/form-data" in content_type
214
+ and request.url.path not in self.allowed_paths
215
+ ):
216
+ return JSONResponse(
217
+ status_code=403,
218
+ content={
219
+ "detail": "File uploads are not allowed on this endpoint."
220
+ },
221
+ )
222
+ return await call_next(request)
223
+
224
+
225
+ ALLOWED_FOR_FILE_UPLOAD: Set[str] = set()
226
+
146
227
  app.add_middleware(
147
228
  CORSMiddleware,
148
229
  allow_origins=server_config().cors_allow_origins,
@@ -151,6 +232,13 @@ app.add_middleware(
151
232
  allow_headers=["*"],
152
233
  )
153
234
 
235
+ app.add_middleware(
236
+ RequestBodyLimit, max_bytes=server_config().max_request_body_size_in_bytes
237
+ )
238
+ app.add_middleware(
239
+ RestrictFileUploadsMiddleware, allowed_paths=ALLOWED_FOR_FILE_UPLOAD
240
+ )
241
+
154
242
 
155
243
  @app.middleware("http")
156
244
  async def set_secure_headers(request: Request, call_next: Any) -> Any:
@@ -261,17 +349,14 @@ def initialize() -> None:
261
349
  initialize_secure_headers()
262
350
 
263
351
 
264
- if server_config().use_legacy_dashboard:
265
- app.mount(
266
- "/static",
267
- StaticFiles(
268
- directory=relative_path(
269
- os.path.join(DASHBOARD_DIRECTORY, "static")
270
- ),
271
- check_dir=False,
272
- ),
273
- )
274
- else:
352
+ DASHBOARD_REDIRECT_URL = None
353
+ if (
354
+ server_config().dashboard_url
355
+ and server_config().deployment_type == ServerDeploymentType.CLOUD
356
+ ):
357
+ DASHBOARD_REDIRECT_URL = server_config().dashboard_url
358
+
359
+ if not DASHBOARD_REDIRECT_URL:
275
360
  app.mount(
276
361
  "/assets",
277
362
  StaticFiles(
@@ -311,6 +396,9 @@ async def dashboard(request: Request) -> Any:
311
396
  Raises:
312
397
  HTTPException: If the dashboard files are not included.
313
398
  """
399
+ if DASHBOARD_REDIRECT_URL:
400
+ return RedirectResponse(url=DASHBOARD_REDIRECT_URL)
401
+
314
402
  if not os.path.isfile(
315
403
  os.path.join(relative_path(DASHBOARD_DIRECTORY), "index.html")
316
404
  ):
@@ -419,6 +507,8 @@ async def catch_all(request: Request, file_path: str) -> Any:
419
507
  Returns:
420
508
  The ZenML dashboard.
421
509
  """
510
+ if DASHBOARD_REDIRECT_URL:
511
+ return RedirectResponse(url=DASHBOARD_REDIRECT_URL)
422
512
  # some static files need to be served directly from the root dashboard
423
513
  # directory
424
514
  if file_path and file_path in root_static_files:
@@ -426,7 +426,6 @@ class BaseZenStore(
426
426
  secrets_store_type = SecretsStoreType.NONE
427
427
  if isinstance(self, SqlZenStore) and self.config.secrets_store:
428
428
  secrets_store_type = self.config.secrets_store.type
429
- use_legacy_dashboard = server_config.use_legacy_dashboard
430
429
  return ServerModel(
431
430
  id=GlobalConfiguration().user_id,
432
431
  active=True,
@@ -440,7 +439,6 @@ class BaseZenStore(
440
439
  dashboard_url=server_config.dashboard_url or "",
441
440
  analytics_enabled=GlobalConfiguration().analytics_opt_in,
442
441
  metadata=metadata,
443
- use_legacy_dashboard=use_legacy_dashboard,
444
442
  )
445
443
 
446
444
  def is_local_store(self) -> bool:
@@ -0,0 +1,23 @@
1
+ """Release [0.68.0].
2
+
3
+ Revision ID: 0.68.0
4
+ Revises: 1d8f30c54477
5
+ Create Date: 2024-10-24 13:14:56.912159
6
+
7
+ """
8
+
9
+ # revision identifiers, used by Alembic.
10
+ revision = "0.68.0"
11
+ down_revision = "1d8f30c54477"
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,124 @@
1
+ """migrate to new ModelVersionDataLazyLoader structures [1d8f30c54477].
2
+
3
+ Revision ID: 1d8f30c54477
4
+ Revises: 0.67.0
5
+ Create Date: 2024-10-08 15:55:34.727543
6
+
7
+ """
8
+
9
+ import json
10
+
11
+ import sqlalchemy as sa
12
+ import sqlmodel
13
+ from alembic import op
14
+
15
+ # revision identifiers, used by Alembic.
16
+ revision = "1d8f30c54477"
17
+ down_revision = "0.67.0"
18
+ branch_labels = None
19
+ depends_on = None
20
+
21
+
22
+ update_query_pd = sa.text(
23
+ "UPDATE pipeline_deployment SET step_configurations = :data WHERE id = :id_"
24
+ )
25
+
26
+ update_query_sr = sa.text(
27
+ "UPDATE step_run SET step_configuration = :data WHERE id = :id_"
28
+ )
29
+
30
+
31
+ def upgrade() -> None:
32
+ """Upgrade database schema and/or data, creating a new revision."""
33
+ bind = op.get_bind()
34
+ session = sqlmodel.Session(bind=bind)
35
+ # update pipeline_deployment
36
+ rows_pd = session.execute(
37
+ sa.text(
38
+ """
39
+ SELECT id, step_configurations
40
+ FROM pipeline_deployment
41
+ WHERE step_configurations IS NOT NULL
42
+ """
43
+ )
44
+ )
45
+ for id_, data in rows_pd:
46
+ try:
47
+ data_dict = json.loads(data)
48
+ except json.JSONDecodeError:
49
+ continue
50
+ has_changes = False
51
+ for k in data_dict:
52
+ if config := data_dict[k].get("config", {}):
53
+ if model_artifacts_or_metadata := config.get(
54
+ "model_artifacts_or_metadata", {}
55
+ ):
56
+ for (
57
+ inp_name,
58
+ inp_config,
59
+ ) in model_artifacts_or_metadata.items():
60
+ if model := inp_config.get("model", {}):
61
+ del data_dict[k]["config"][
62
+ "model_artifacts_or_metadata"
63
+ ][inp_name]["model"]
64
+ data_dict[k]["config"][
65
+ "model_artifacts_or_metadata"
66
+ ][inp_name]["model_name"] = model["name"]
67
+ data_dict[k]["config"][
68
+ "model_artifacts_or_metadata"
69
+ ][inp_name]["model_version"] = str(
70
+ model["version"]
71
+ )
72
+ has_changes = True
73
+ if has_changes:
74
+ data = json.dumps(data_dict)
75
+ session.execute(update_query_pd, params=(dict(data=data, id_=id_)))
76
+
77
+ # update step_run
78
+ rows_sr = session.execute(
79
+ sa.text(
80
+ """
81
+ SELECT id, step_configuration
82
+ FROM step_run
83
+ WHERE step_configuration IS NOT NULL
84
+ """
85
+ )
86
+ )
87
+ for id_, data in rows_sr:
88
+ try:
89
+ data_dict = json.loads(data)
90
+ except json.JSONDecodeError:
91
+ continue
92
+ has_changes = False
93
+ if config := data_dict.get("config", {}):
94
+ if model_artifacts_or_metadata := config.get(
95
+ "model_artifacts_or_metadata", {}
96
+ ):
97
+ for (
98
+ inp_name,
99
+ inp_config,
100
+ ) in model_artifacts_or_metadata.items():
101
+ if model := inp_config.get("model", {}):
102
+ del data_dict["config"]["model_artifacts_or_metadata"][
103
+ inp_name
104
+ ]["model"]
105
+ data_dict["config"]["model_artifacts_or_metadata"][
106
+ inp_name
107
+ ]["model_name"] = model["name"]
108
+ data_dict["config"]["model_artifacts_or_metadata"][
109
+ inp_name
110
+ ]["model_version"] = str(model["version"])
111
+ has_changes = True
112
+ if has_changes:
113
+ data = json.dumps(data_dict)
114
+ session.execute(update_query_sr, params=(dict(data=data, id_=id_)))
115
+ session.commit()
116
+
117
+
118
+ def downgrade() -> None:
119
+ """Downgrade database schema and/or data back to the previous revision.
120
+
121
+ Raises:
122
+ NotImplementedError: Downgrade is not supported for this migration.
123
+ """
124
+ raise NotImplementedError("Downgrade is not supported for this migration.")
@@ -412,10 +412,7 @@ class PipelineRunSchema(NamedSchema, table=True):
412
412
  Returns:
413
413
  The updated `PipelineRunSchema`.
414
414
  """
415
- if (
416
- self.orchestrator_run_id
417
- or self.status != ExecutionStatus.INITIALIZING
418
- ):
415
+ if not self.is_placeholder_run():
419
416
  raise RuntimeError(
420
417
  f"Unable to replace pipeline run {self.id} which is not a "
421
418
  "placeholder run."
@@ -439,3 +436,14 @@ class PipelineRunSchema(NamedSchema, table=True):
439
436
  self.updated = datetime.utcnow()
440
437
 
441
438
  return self
439
+
440
+ def is_placeholder_run(self) -> bool:
441
+ """Whether the pipeline run is a placeholder run.
442
+
443
+ Returns:
444
+ Whether the pipeline run is a placeholder run.
445
+ """
446
+ return (
447
+ self.orchestrator_run_id is None
448
+ and self.status == ExecutionStatus.INITIALIZING
449
+ )
@@ -262,6 +262,8 @@ class StepRunSchema(NamedSchema, table=True):
262
262
  body = StepRunResponseBody(
263
263
  user=self.user.to_model() if self.user else None,
264
264
  status=ExecutionStatus(self.status),
265
+ start_time=self.start_time,
266
+ end_time=self.end_time,
265
267
  inputs=input_artifacts,
266
268
  outputs=output_artifacts,
267
269
  created=self.created,
@@ -278,8 +280,6 @@ class StepRunSchema(NamedSchema, table=True):
278
280
  code_hash=self.code_hash,
279
281
  docstring=self.docstring,
280
282
  source_code=self.source_code,
281
- start_time=self.start_time,
282
- end_time=self.end_time,
283
283
  logs=self.logs.to_model() if self.logs else None,
284
284
  deployment_id=self.deployment_id,
285
285
  pipeline_run_id=self.pipeline_run_id,
@@ -973,7 +973,6 @@ class SqlZenStore(BaseZenStore):
973
973
  ValueError: if the filtered page number is out of bounds.
974
974
  RuntimeError: if the schema does not have a `to_model` method.
975
975
  """
976
- query = query.distinct()
977
976
  query = filter_model.apply_filter(query=query, table=table)
978
977
  query = query.distinct()
979
978
 
@@ -4108,7 +4107,8 @@ class SqlZenStore(BaseZenStore):
4108
4107
  Returns:
4109
4108
  A list of all pipelines matching the filter criteria.
4110
4109
  """
4111
- query = select(PipelineSchema)
4110
+ query: Union[Select[Any], SelectOfScalar[Any]] = select(PipelineSchema)
4111
+ _custom_conversion: Optional[Callable[[Any], PipelineResponse]] = None
4112
4112
 
4113
4113
  column, operand = pipeline_filter_model.sorting_params
4114
4114
  if column == SORT_PIPELINES_BY_LATEST_RUN_KEY:
@@ -4141,7 +4141,12 @@ class SqlZenStore(BaseZenStore):
4141
4141
  sort_clause = asc
4142
4142
 
4143
4143
  query = (
4144
- query.where(PipelineSchema.id == max_date_subquery.c.id)
4144
+ # We need to include the subquery in the select here to
4145
+ # make this query work with the distinct statement. This
4146
+ # result will be removed in the custom conversion function
4147
+ # applied later
4148
+ select(PipelineSchema, max_date_subquery.c.run_or_created)
4149
+ .where(PipelineSchema.id == max_date_subquery.c.id)
4145
4150
  .order_by(sort_clause(max_date_subquery.c.run_or_created))
4146
4151
  # We always add the `id` column as a tiebreaker to ensure a
4147
4152
  # stable, repeatable order of items, otherwise subsequent
@@ -4149,6 +4154,14 @@ class SqlZenStore(BaseZenStore):
4149
4154
  .order_by(col(PipelineSchema.id))
4150
4155
  )
4151
4156
 
4157
+ def _custom_conversion(row: Any) -> PipelineResponse:
4158
+ return cast(
4159
+ PipelineResponse,
4160
+ row[0].to_model(
4161
+ include_metadata=hydrate, include_resources=True
4162
+ ),
4163
+ )
4164
+
4152
4165
  with Session(self.engine) as session:
4153
4166
  return self.filter_and_paginate(
4154
4167
  session=session,
@@ -4156,6 +4169,7 @@ class SqlZenStore(BaseZenStore):
4156
4169
  table=PipelineSchema,
4157
4170
  filter_model=pipeline_filter_model,
4158
4171
  hydrate=hydrate,
4172
+ custom_schema_to_model_conversion=_custom_conversion,
4159
4173
  )
4160
4174
 
4161
4175
  def count_pipelines(self, filter_model: Optional[PipelineFilter]) -> int:
@@ -8093,7 +8107,9 @@ class SqlZenStore(BaseZenStore):
8093
8107
  session.commit()
8094
8108
  session.refresh(existing_step_run)
8095
8109
 
8096
- return existing_step_run.to_model(include_metadata=True)
8110
+ return existing_step_run.to_model(
8111
+ include_metadata=True, include_resources=True
8112
+ )
8097
8113
 
8098
8114
  @staticmethod
8099
8115
  def _set_run_step_parent_step(
@@ -8304,6 +8320,14 @@ class SqlZenStore(BaseZenStore):
8304
8320
  num_steps=num_steps,
8305
8321
  )
8306
8322
 
8323
+ if pipeline_run.is_placeholder_run() and not new_status.is_finished:
8324
+ # If the pipeline run is a placeholder run, no step has been started
8325
+ # for the run yet. This means the orchestrator hasn't started
8326
+ # running yet, and this method is most likely being called as
8327
+ # part of the creation of some cached steps. In this case, we don't
8328
+ # update the status unless the run is finished.
8329
+ return
8330
+
8307
8331
  if new_status != pipeline_run.status:
8308
8332
  run_update = PipelineRunUpdate(status=new_status)
8309
8333
  if new_status in {
@@ -9181,7 +9205,7 @@ class SqlZenStore(BaseZenStore):
9181
9205
  # Running inside server with external auth
9182
9206
  return False
9183
9207
 
9184
- if config.auto_activate or config.use_legacy_dashboard:
9208
+ if config.auto_activate:
9185
9209
  return True
9186
9210
 
9187
9211
  else:
@@ -1,20 +1,19 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: zenml-nightly
3
- Version: 0.67.0.dev20241002
3
+ Version: 0.68.0.dev20241027
4
4
  Summary: ZenML: Write production-ready ML code.
5
5
  Home-page: https://zenml.io
6
6
  License: Apache-2.0
7
7
  Keywords: machine learning,production,pipeline,mlops,devops
8
8
  Author: ZenML GmbH
9
9
  Author-email: info@zenml.io
10
- Requires-Python: >=3.8,<3.13
10
+ Requires-Python: >=3.9,<3.13
11
11
  Classifier: Development Status :: 4 - Beta
12
12
  Classifier: Intended Audience :: Developers
13
13
  Classifier: Intended Audience :: Science/Research
14
14
  Classifier: Intended Audience :: System Administrators
15
15
  Classifier: License :: OSI Approved :: Apache Software License
16
16
  Classifier: Programming Language :: Python :: 3
17
- Classifier: Programming Language :: Python :: 3.8
18
17
  Classifier: Programming Language :: Python :: 3.9
19
18
  Classifier: Programming Language :: Python :: 3.10
20
19
  Classifier: Programming Language :: Python :: 3.11
@@ -31,7 +30,6 @@ Provides-Extra: connectors-gcp
31
30
  Provides-Extra: connectors-kubernetes
32
31
  Provides-Extra: dev
33
32
  Provides-Extra: gcsfs
34
- Provides-Extra: mlstacks
35
33
  Provides-Extra: s3fs
36
34
  Provides-Extra: sagemaker
37
35
  Provides-Extra: secrets-aws
@@ -85,7 +83,6 @@ Requires-Dist: mkdocs (>=1.2.3,<2.0.0) ; extra == "dev"
85
83
  Requires-Dist: mkdocs-awesome-pages-plugin (>=2.6.1,<3.0.0) ; extra == "dev"
86
84
  Requires-Dist: mkdocs-material (>=8.1.7,<9.0.0) ; extra == "dev"
87
85
  Requires-Dist: mkdocstrings (>=0.17.0,<0.18.0) ; extra == "dev"
88
- Requires-Dist: mlstacks (==0.10.0) ; extra == "mlstacks"
89
86
  Requires-Dist: mypy (==1.7.1) ; extra == "dev"
90
87
  Requires-Dist: orjson (>=3.10.0,<3.11.0) ; extra == "server"
91
88
  Requires-Dist: packaging (>=24.1)
@@ -105,7 +102,6 @@ Requires-Dist: pytest-rerunfailures (>=13.0) ; extra == "dev"
105
102
  Requires-Dist: pytest-split (>=0.8.1,<0.9.0) ; extra == "dev"
106
103
  Requires-Dist: python-dateutil (>=2.8.1,<3.0.0)
107
104
  Requires-Dist: python-multipart (>=0.0.9,<0.1.0) ; extra == "server"
108
- Requires-Dist: python-terraform (>=0.10.1,<0.11.0) ; extra == "terraform"
109
105
  Requires-Dist: pyyaml (>=6.0.1)
110
106
  Requires-Dist: pyyaml-include (<2.0) ; extra == "templates"
111
107
  Requires-Dist: rich[jupyter] (>=12.0.0)
@@ -231,7 +227,7 @@ Thank you for your support! 🌟
231
227
  ## 🤸 Quickstart
232
228
  [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/zenml-io/zenml/blob/main/examples/quickstart/quickstart.ipynb)
233
229
 
234
- [Install ZenML](https://docs.zenml.io/getting-started/installation) via [PyPI](https://pypi.org/project/zenml/). Python 3.8 - 3.11 is required:
230
+ [Install ZenML](https://docs.zenml.io/getting-started/installation) via [PyPI](https://pypi.org/project/zenml/). Python 3.9 - 3.12 is required:
235
231
 
236
232
  ```bash
237
233
  pip install "zenml[server]" notebook
@@ -472,7 +468,7 @@ the Apache License Version 2.0.
472
468
  <a href="https://github.com/zenml-io/zenml-projects">Projects Showcase</a>
473
469
  <br />
474
470
  <br />
475
- 🎉 Version 0.67.0 is out. Check out the release notes
471
+ 🎉 Version 0.68.0 is out. Check out the release notes
476
472
  <a href="https://github.com/zenml-io/zenml/releases">here</a>.
477
473
  <br />
478
474
  🖥️ Download our VS Code Extension <a href="https://marketplace.visualstudio.com/items?itemName=ZenML.zenml-vscode">here</a>.