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
@@ -16,7 +16,7 @@
16
16
  from hashlib import md5
17
17
  from typing import TYPE_CHECKING, Any, List, Optional
18
18
 
19
- import neptune # type: ignore[import-untyped]
19
+ import neptune
20
20
 
21
21
  import zenml
22
22
  from zenml.client import Client
@@ -38,7 +38,7 @@ class RunProvider(metaclass=SingletonMetaClass):
38
38
 
39
39
  def __init__(self) -> None:
40
40
  """Initialize RunProvider. Called with no arguments."""
41
- self._active_run = None
41
+ self._active_run: Optional["Run"] = None
42
42
  self._project: Optional[str]
43
43
  self._run_name: Optional[str]
44
44
  self._token: Optional[str]
@@ -13,10 +13,12 @@
13
13
  # permissions and limitations under the License.
14
14
  """Implementation of the S3 Artifact Store."""
15
15
 
16
+ from contextlib import contextmanager
16
17
  from typing import (
17
18
  Any,
18
19
  Callable,
19
20
  Dict,
21
+ Generator,
20
22
  Iterable,
21
23
  List,
22
24
  Optional,
@@ -25,17 +27,23 @@ from typing import (
25
27
  cast,
26
28
  )
27
29
 
30
+ import boto3
28
31
  import s3fs
32
+ from botocore.exceptions import ClientError
29
33
  from fsspec.asyn import FSTimeoutError, sync, sync_wrapper
30
34
 
31
35
  from zenml.artifact_stores import BaseArtifactStore
32
36
  from zenml.integrations.s3.flavors.s3_artifact_store_flavor import (
33
37
  S3ArtifactStoreConfig,
34
38
  )
39
+ from zenml.integrations.s3.utils import split_s3_path
35
40
  from zenml.io.fileio import convert_to_str
41
+ from zenml.logger import get_logger
36
42
  from zenml.secret.schemas import AWSSecretSchema
37
43
  from zenml.stack.authentication_mixin import AuthenticationMixin
38
44
 
45
+ logger = get_logger(__name__)
46
+
39
47
  PathType = Union[bytes, str]
40
48
 
41
49
 
@@ -111,6 +119,34 @@ class S3ArtifactStore(BaseArtifactStore, AuthenticationMixin):
111
119
 
112
120
  _filesystem: Optional[ZenMLS3Filesystem] = None
113
121
 
122
+ is_versioned: bool = False
123
+
124
+ def __init__(
125
+ self,
126
+ *args: Any,
127
+ **kwargs: Any,
128
+ ) -> None:
129
+ """Initializes the artifact store.
130
+
131
+ Args:
132
+ *args: Additional positional arguments.
133
+ **kwargs: Additional keyword arguments.
134
+ """
135
+ super().__init__(*args, **kwargs)
136
+ self._boto3_bucket_holder = None
137
+
138
+ # determine bucket versioning status
139
+ versioning = self._boto3_bucket.Versioning()
140
+ with self._shield_lack_of_versioning_permissions(
141
+ "s3:GetBucketVersioning"
142
+ ):
143
+ if versioning.status == "Enabled":
144
+ self.is_versioned = True
145
+ logger.warning(
146
+ f"The artifact store bucket `{self.config.bucket}` is versioned, "
147
+ "this may slow down logging process significantly."
148
+ )
149
+
114
150
  @property
115
151
  def config(self) -> S3ArtifactStoreConfig:
116
152
  """Get the config of this artifact store.
@@ -422,3 +458,65 @@ class S3ArtifactStore(BaseArtifactStore, AuthenticationMixin):
422
458
  # TODO [ENG-153]: Additional params
423
459
  for directory, subdirectories, files in self.filesystem.walk(path=top):
424
460
  yield f"s3://{directory}", subdirectories, files
461
+
462
+ def _remove_previous_file_versions(self, path: PathType) -> None:
463
+ """Keep only the latest file version in the given path.
464
+
465
+ Method is useful for logs stored in versioned file systems
466
+ like AWS S3.
467
+
468
+ Args:
469
+ path: The path to the file.
470
+ """
471
+ if self.is_versioned:
472
+ if isinstance(path, bytes):
473
+ path = path.decode()
474
+ _, prefix = split_s3_path(path)
475
+ with self._shield_lack_of_versioning_permissions(
476
+ "s3:ListBucketVersions"
477
+ ):
478
+ for version in self._boto3_bucket.object_versions.filter(
479
+ Prefix=prefix
480
+ ):
481
+ if not version.is_latest:
482
+ with self._shield_lack_of_versioning_permissions(
483
+ "s3:DeleteObjectVersion"
484
+ ):
485
+ version.delete()
486
+
487
+ @property
488
+ def _boto3_bucket(self) -> Any:
489
+ """Get the boto3 bucket object.
490
+
491
+ Returns:
492
+ The boto3 bucket object.
493
+ """
494
+ if self._boto3_bucket_holder and not self.connector_has_expired():
495
+ return self._boto3_bucket_holder
496
+
497
+ key, secret, token, region = self.get_credentials()
498
+ s3 = boto3.resource(
499
+ "s3",
500
+ aws_access_key_id=key,
501
+ aws_secret_access_key=secret,
502
+ aws_session_token=token,
503
+ region_name=region,
504
+ )
505
+ self._boto3_bucket_holder = s3.Bucket(self.config.bucket)
506
+ return self._boto3_bucket_holder
507
+
508
+ @contextmanager
509
+ def _shield_lack_of_versioning_permissions(
510
+ self, auth_missing: str
511
+ ) -> Generator[Any, None, None]:
512
+ try:
513
+ yield
514
+ except ClientError as e:
515
+ if "not authorized" in e.args[0] and auth_missing in e.args[0]:
516
+ logger.warning(
517
+ "Your AWS Connector is lacking critical Versioning permissions. "
518
+ f"Please check that `{auth_missing}` is granted."
519
+ "This is needed to remove previous versions of log files from your "
520
+ "Artifact Store bucket."
521
+ )
522
+ self.is_versioned = False
@@ -31,6 +31,7 @@ from zenml.artifact_stores import (
31
31
  BaseArtifactStoreFlavor,
32
32
  )
33
33
  from zenml.integrations.s3 import S3_ARTIFACT_STORE_FLAVOR
34
+ from zenml.integrations.s3.utils import split_s3_path
34
35
  from zenml.models import ServiceConnectorRequirements
35
36
  from zenml.stack.authentication_mixin import AuthenticationConfigMixin
36
37
  from zenml.utils.networking_utils import (
@@ -70,6 +71,8 @@ class S3ArtifactStoreConfig(
70
71
  config_kwargs: Optional[Dict[str, Any]] = None
71
72
  s3_additional_kwargs: Optional[Dict[str, Any]] = None
72
73
 
74
+ _bucket: Optional[str] = None
75
+
73
76
  @field_validator("client_kwargs")
74
77
  @classmethod
75
78
  def _validate_client_kwargs(
@@ -106,6 +109,17 @@ class S3ArtifactStoreConfig(
106
109
  )
107
110
  return value
108
111
 
112
+ @property
113
+ def bucket(self) -> str:
114
+ """The bucket name of the artifact store.
115
+
116
+ Returns:
117
+ The bucket name of the artifact store.
118
+ """
119
+ if self._bucket is None:
120
+ self._bucket, _ = split_s3_path(self.path)
121
+ return self._bucket
122
+
109
123
 
110
124
  class S3ArtifactStoreFlavor(BaseArtifactStoreFlavor):
111
125
  """Flavor of the S3 artifact store."""
@@ -0,0 +1,40 @@
1
+ # Copyright (c) ZenML GmbH 2022. All Rights Reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at:
6
+ #
7
+ # https://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
12
+ # or implied. See the License for the specific language governing
13
+ # permissions and limitations under the License.
14
+ """Utility methods for S3."""
15
+
16
+ from typing import Tuple
17
+
18
+
19
+ def split_s3_path(s3_path: str) -> Tuple[str, str]:
20
+ """Split S3 URI into bucket and key.
21
+
22
+ Args:
23
+ s3_path: S3 URI (e.g. "s3://bucket/path")
24
+
25
+ Returns:
26
+ A tuple of bucket and key, for "s3://bucket/path/path2"
27
+ it will return ("bucket","path/path2")
28
+
29
+ Raises:
30
+ ValueError: if the S3 URI is invalid
31
+ """
32
+ if not s3_path.startswith("s3://"):
33
+ raise ValueError(
34
+ f"Invalid S3 URI given: {s3_path}. "
35
+ "It should start with `s3://`."
36
+ )
37
+ path_parts = s3_path.replace("s3://", "").split("/")
38
+ bucket = path_parts.pop(0)
39
+ key = "/".join(path_parts)
40
+ return bucket, key
@@ -40,15 +40,6 @@ class TensorflowIntegration(Integration):
40
40
 
41
41
  from zenml.integrations.tensorflow import materializers # noqa
42
42
 
43
- if sys.version_info.minor == 8:
44
- logger.warning(
45
- "Python 3.8 with TensorFlow is not fully "
46
- "compatible with Pydantic 2 requirements. "
47
- "Consider upgrading to a higher Python "
48
- "version if you would like to use the "
49
- "Tensorflow integration."
50
- )
51
-
52
43
  @classmethod
53
44
  def get_requirements(cls, target_os: Optional[str] = None) -> List[str]:
54
45
  """Defines platform specific requirements for the integration.
@@ -28,7 +28,6 @@ from zenml.artifacts.utils import (
28
28
  _load_artifact_store,
29
29
  _load_file_from_artifact_store,
30
30
  )
31
- from zenml.client import Client
32
31
  from zenml.exceptions import DoesNotExistException
33
32
  from zenml.logger import get_logger
34
33
  from zenml.logging import (
@@ -212,6 +211,7 @@ class StepLogsStorage:
212
211
  def __init__(
213
212
  self,
214
213
  logs_uri: str,
214
+ artifact_store: "BaseArtifactStore",
215
215
  max_messages: int = STEP_LOGS_STORAGE_MAX_MESSAGES,
216
216
  time_interval: int = STEP_LOGS_STORAGE_INTERVAL_SECONDS,
217
217
  merge_files_interval: int = STEP_LOGS_STORAGE_MERGE_INTERVAL_SECONDS,
@@ -220,6 +220,7 @@ class StepLogsStorage:
220
220
 
221
221
  Args:
222
222
  logs_uri: the URI of the log file or folder.
223
+ artifact_store: Artifact Store from the current step context
223
224
  max_messages: the maximum number of messages to save in the buffer.
224
225
  time_interval: the amount of seconds before the buffer gets saved
225
226
  automatically.
@@ -237,22 +238,11 @@ class StepLogsStorage:
237
238
  self.disabled_buffer: List[str] = []
238
239
  self.last_save_time = time.time()
239
240
  self.disabled = False
240
- self._artifact_store: Optional["BaseArtifactStore"] = None
241
+ self.artifact_store = artifact_store
241
242
 
242
243
  # Immutable filesystems state
243
244
  self.last_merge_time = time.time()
244
245
 
245
- @property
246
- def artifact_store(self) -> "BaseArtifactStore":
247
- """Returns the active artifact store.
248
-
249
- Returns:
250
- The active artifact store.
251
- """
252
- if self._artifact_store is None:
253
- self._artifact_store = Client().active_stack.artifact_store
254
- return self._artifact_store
255
-
256
246
  def write(self, text: str) -> None:
257
247
  """Main write method.
258
248
 
@@ -330,6 +320,9 @@ class StepLogsStorage:
330
320
  file.write(
331
321
  f"[{timestamp} UTC] {remove_ansi_escape_codes(message)}\n"
332
322
  )
323
+ self.artifact_store._remove_previous_file_versions(
324
+ self.logs_uri
325
+ )
333
326
 
334
327
  except (OSError, IOError) as e:
335
328
  # This exception can be raised if there are issues with the
@@ -406,13 +399,18 @@ class StepLogsStorage:
406
399
  class StepLogsStorageContext:
407
400
  """Context manager which patches stdout and stderr during step execution."""
408
401
 
409
- def __init__(self, logs_uri: str) -> None:
402
+ def __init__(
403
+ self, logs_uri: str, artifact_store: "BaseArtifactStore"
404
+ ) -> None:
410
405
  """Initializes and prepares a storage object.
411
406
 
412
407
  Args:
413
408
  logs_uri: the URI of the logs file.
409
+ artifact_store: Artifact Store from the current step context.
414
410
  """
415
- self.storage = StepLogsStorage(logs_uri=logs_uri)
411
+ self.storage = StepLogsStorage(
412
+ logs_uri=logs_uri, artifact_store=artifact_store
413
+ )
416
414
 
417
415
  def __enter__(self) -> "StepLogsStorageContext":
418
416
  """Enter condition of the context manager.
@@ -31,6 +31,7 @@ from zenml.materializers.structured_string_materializer import (
31
31
  )
32
32
  from zenml.materializers.pydantic_materializer import PydanticMaterializer
33
33
  from zenml.materializers.service_materializer import ServiceMaterializer
34
+ from zenml.materializers.uuid_materializer import UUIDMaterializer
34
35
 
35
36
  __all__ = [
36
37
  "BuiltInContainerMaterializer",
@@ -40,4 +41,5 @@ __all__ = [
40
41
  "StructuredStringMaterializer",
41
42
  "PydanticMaterializer",
42
43
  "ServiceMaterializer",
44
+ "UUIDMaterializer",
43
45
  ]
@@ -0,0 +1,79 @@
1
+ # Copyright (c) ZenML GmbH 2024. All Rights Reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at:
6
+ #
7
+ # https://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
12
+ # or implied. See the License for the specific language governing
13
+ # permissions and limitations under the License.
14
+ """Implementation of ZenML's UUID materializer."""
15
+
16
+ import os
17
+ import uuid
18
+ from typing import Any, ClassVar, Dict, Optional, Tuple, Type
19
+
20
+ from zenml.artifact_stores.base_artifact_store import BaseArtifactStore
21
+ from zenml.enums import ArtifactType
22
+ from zenml.materializers.base_materializer import BaseMaterializer
23
+ from zenml.metadata.metadata_types import MetadataType
24
+
25
+ DEFAULT_FILENAME = "uuid.txt"
26
+
27
+
28
+ class UUIDMaterializer(BaseMaterializer):
29
+ """Materializer to handle UUID objects."""
30
+
31
+ ASSOCIATED_TYPES: ClassVar[Tuple[Type[Any], ...]] = (uuid.UUID,)
32
+ ASSOCIATED_ARTIFACT_TYPE: ClassVar[ArtifactType] = ArtifactType.DATA
33
+
34
+ def __init__(
35
+ self, uri: str, artifact_store: Optional[BaseArtifactStore] = None
36
+ ):
37
+ """Define `self.data_path`.
38
+
39
+ Args:
40
+ uri: The URI where the artifact data is stored.
41
+ artifact_store: The artifact store where the artifact data is stored.
42
+ """
43
+ super().__init__(uri, artifact_store)
44
+ self.data_path = os.path.join(self.uri, DEFAULT_FILENAME)
45
+
46
+ def load(self, _: Type[uuid.UUID]) -> uuid.UUID:
47
+ """Read UUID from artifact store.
48
+
49
+ Args:
50
+ _: The type of the data to be loaded.
51
+
52
+ Returns:
53
+ The loaded UUID.
54
+ """
55
+ with self.artifact_store.open(self.data_path, "r") as f:
56
+ uuid_str = f.read().strip()
57
+ return uuid.UUID(uuid_str)
58
+
59
+ def save(self, data: uuid.UUID) -> None:
60
+ """Write UUID to artifact store.
61
+
62
+ Args:
63
+ data: The UUID to be saved.
64
+ """
65
+ with self.artifact_store.open(self.data_path, "w") as f:
66
+ f.write(str(data))
67
+
68
+ def extract_metadata(self, data: uuid.UUID) -> Dict[str, MetadataType]:
69
+ """Extract metadata from the UUID.
70
+
71
+ Args:
72
+ data: The UUID to extract metadata from.
73
+
74
+ Returns:
75
+ A dictionary of metadata extracted from the UUID.
76
+ """
77
+ return {
78
+ "string_representation": str(data),
79
+ }
@@ -16,7 +16,6 @@
16
16
  from typing import TYPE_CHECKING, Optional
17
17
 
18
18
  if TYPE_CHECKING:
19
- from zenml.model.model import Model
20
19
  from zenml.models import RunMetadataResponse
21
20
 
22
21
 
@@ -30,18 +29,21 @@ class RunMetadataLazyGetter:
30
29
 
31
30
  def __init__(
32
31
  self,
33
- _lazy_load_model: "Model",
34
- _lazy_load_artifact_name: Optional[str],
35
- _lazy_load_artifact_version: Optional[str],
32
+ _lazy_load_model_name: str,
33
+ _lazy_load_model_version: Optional[str],
34
+ _lazy_load_artifact_name: Optional[str] = None,
35
+ _lazy_load_artifact_version: Optional[str] = None,
36
36
  ):
37
37
  """Initialize a RunMetadataLazyGetter.
38
38
 
39
39
  Args:
40
- _lazy_load_model: The model version.
40
+ _lazy_load_model_name: The model name.
41
+ _lazy_load_model_version: The model version.
41
42
  _lazy_load_artifact_name: The artifact name.
42
43
  _lazy_load_artifact_version: The artifact version.
43
44
  """
44
- self._lazy_load_model = _lazy_load_model
45
+ self._lazy_load_model_name = _lazy_load_model_name
46
+ self._lazy_load_model_version = _lazy_load_model_version
45
47
  self._lazy_load_artifact_name = _lazy_load_artifact_name
46
48
  self._lazy_load_artifact_version = _lazy_load_artifact_version
47
49
 
@@ -57,7 +59,8 @@ class RunMetadataLazyGetter:
57
59
  from zenml.models.v2.core.run_metadata import LazyRunMetadataResponse
58
60
 
59
61
  return LazyRunMetadataResponse(
60
- lazy_load_model=self._lazy_load_model,
62
+ lazy_load_model_name=self._lazy_load_model_name,
63
+ lazy_load_model_version=self._lazy_load_model_version,
61
64
  lazy_load_artifact_name=self._lazy_load_artifact_name,
62
65
  lazy_load_artifact_version=self._lazy_load_artifact_version,
63
66
  lazy_load_metadata_name=key,
zenml/model/lazy_load.py CHANGED
@@ -13,11 +13,15 @@
13
13
  # permissions and limitations under the License.
14
14
  """Model Version Data Lazy Loader definition."""
15
15
 
16
- from typing import Optional
16
+ from typing import TYPE_CHECKING, Any, Dict, Optional
17
17
 
18
- from pydantic import BaseModel
18
+ from pydantic import BaseModel, ConfigDict, model_validator
19
19
 
20
- from zenml.model.model import Model
20
+ from zenml.pipelines.pipeline_context import get_pipeline_context
21
+ from zenml.utils.pydantic_utils import before_validator_handler
22
+
23
+ if TYPE_CHECKING:
24
+ from zenml.models import ModelVersionResponse, PipelineRunResponse
21
25
 
22
26
 
23
27
  class ModelVersionDataLazyLoader(BaseModel):
@@ -28,7 +32,84 @@ class ModelVersionDataLazyLoader(BaseModel):
28
32
  model version during runtime time of the step.
29
33
  """
30
34
 
31
- model: Model
35
+ model_name: str
36
+ model_version: Optional[str] = None
32
37
  artifact_name: Optional[str] = None
33
38
  artifact_version: Optional[str] = None
34
39
  metadata_name: Optional[str] = None
40
+
41
+ # TODO: In Pydantic v2, the `model_` is a protected namespaces for all
42
+ # fields defined under base models. If not handled, this raises a warning.
43
+ # It is possible to suppress this warning message with the following
44
+ # configuration, however the ultimate solution is to rename these fields.
45
+ # Even though they do not cause any problems right now, if we are not
46
+ # careful we might overwrite some fields protected by pydantic.
47
+ model_config = ConfigDict(protected_namespaces=())
48
+
49
+ @model_validator(mode="before")
50
+ @classmethod
51
+ @before_validator_handler
52
+ def _root_validator(cls, data: Dict[str, Any]) -> Dict[str, Any]:
53
+ """Validate all in one.
54
+
55
+ Args:
56
+ data: Dict of values.
57
+
58
+ Returns:
59
+ Dict of validated values.
60
+
61
+ Raises:
62
+ ValueError: If the model version id, but call is not internal.
63
+ """
64
+ if data.get("model_version", None) is None:
65
+ try:
66
+ context = get_pipeline_context()
67
+ if (
68
+ not context.model
69
+ or context.model.name != data["model_name"]
70
+ ):
71
+ raise ValueError(
72
+ "`version` must be set if you use the `Model` class "
73
+ "directly in the pipeline body, otherwise, you can use "
74
+ "`get_pipeline_context().model` to lazy load the current "
75
+ "Model Version from the pipeline context."
76
+ )
77
+ except RuntimeError:
78
+ pass
79
+ data["suppress_class_validation_warnings"] = True
80
+ return data
81
+
82
+ def _get_model_response(
83
+ self, pipeline_run: "PipelineRunResponse"
84
+ ) -> "ModelVersionResponse":
85
+ # if the version/number is None -> return the model in context
86
+ if self.model_version is None:
87
+ if mv := pipeline_run.model_version:
88
+ if mv.model.name != self.model_name:
89
+ raise RuntimeError(
90
+ "Lazy loading of the model failed, since given name "
91
+ f"`{self.model_name}` does not match the model name "
92
+ f"in the pipeline context: `{mv.model.name}`."
93
+ )
94
+ return mv
95
+ else:
96
+ raise RuntimeError(
97
+ "Lazy loading of the model failed, since the model version "
98
+ "is not set in the pipeline context."
99
+ )
100
+
101
+ # else return the model version by version
102
+ else:
103
+ from zenml.client import Client
104
+
105
+ try:
106
+ return Client().get_model_version(
107
+ model_name_or_id=self.model_name,
108
+ model_version_name_or_number_or_id=self.model_version,
109
+ )
110
+ except KeyError as e:
111
+ raise RuntimeError(
112
+ "Lazy loading of the model version failed: "
113
+ f"no model `{self.model_name}` with version "
114
+ f"`{self.model_version}` could be found."
115
+ ) from e