zenml-nightly 0.66.0.dev20240928__py3-none-any.whl → 0.68.1.dev20241102__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 (596) hide show
  1. README.md +18 -12
  2. RELEASE_NOTES.md +236 -0
  3. zenml/VERSION +1 -1
  4. zenml/__init__.py +5 -10
  5. zenml/analytics/context.py +16 -1
  6. zenml/analytics/enums.py +0 -13
  7. zenml/analytics/utils.py +18 -7
  8. zenml/artifact_stores/base_artifact_store.py +11 -0
  9. zenml/artifacts/artifact_config.py +19 -65
  10. zenml/artifacts/external_artifact.py +7 -53
  11. zenml/artifacts/external_artifact_config.py +21 -40
  12. zenml/artifacts/load_directory_materializer.py +91 -0
  13. zenml/artifacts/utils.py +204 -145
  14. zenml/cli/__init__.py +62 -127
  15. zenml/cli/base.py +8 -8
  16. zenml/cli/integration.py +0 -9
  17. zenml/cli/login.py +951 -0
  18. zenml/cli/pipeline.py +1 -1
  19. zenml/cli/served_model.py +8 -1
  20. zenml/cli/server.py +462 -577
  21. zenml/cli/service_accounts.py +4 -4
  22. zenml/cli/stack.py +78 -569
  23. zenml/cli/stack_components.py +5 -594
  24. zenml/cli/user_management.py +0 -12
  25. zenml/cli/utils.py +24 -142
  26. zenml/client.py +57 -40
  27. zenml/client_lazy_loader.py +29 -12
  28. zenml/config/compiler.py +7 -11
  29. zenml/config/global_config.py +9 -0
  30. zenml/config/pipeline_configurations.py +2 -1
  31. zenml/config/pipeline_run_configuration.py +2 -1
  32. zenml/config/server_config.py +7 -5
  33. zenml/config/step_configurations.py +2 -0
  34. zenml/constants.py +6 -42
  35. zenml/enums.py +1 -4
  36. zenml/environment.py +1 -315
  37. zenml/exceptions.py +12 -41
  38. zenml/hooks/hook_validators.py +1 -8
  39. zenml/integrations/airflow/orchestrators/airflow_orchestrator.py +2 -3
  40. zenml/integrations/argilla/__init__.py +1 -1
  41. zenml/integrations/argilla/annotators/argilla_annotator.py +234 -89
  42. zenml/integrations/argilla/flavors/argilla_annotator_flavor.py +10 -5
  43. zenml/integrations/aws/flavors/sagemaker_orchestrator_flavor.py +9 -5
  44. zenml/integrations/aws/orchestrators/sagemaker_orchestrator.py +15 -2
  45. zenml/integrations/aws/service_connectors/aws_service_connector.py +6 -0
  46. zenml/integrations/azure/flavors/azureml_orchestrator_flavor.py +5 -4
  47. zenml/integrations/azure/orchestrators/azureml_orchestrator.py +1 -1
  48. zenml/integrations/bentoml/model_deployers/bentoml_model_deployer.py +85 -19
  49. zenml/integrations/bentoml/services/__init__.py +15 -4
  50. zenml/integrations/bentoml/services/bentoml_container_deployment.py +399 -0
  51. zenml/integrations/bentoml/services/{bentoml_deployment.py → bentoml_local_deployment.py} +81 -40
  52. zenml/{steps/base_parameters.py → integrations/bentoml/services/deployment_type.py} +8 -5
  53. zenml/integrations/bentoml/steps/bento_builder.py +1 -0
  54. zenml/integrations/bentoml/steps/bentoml_deployer.py +93 -41
  55. zenml/integrations/github/code_repositories/github_code_repository.py +1 -1
  56. zenml/integrations/gitlab/code_repositories/gitlab_code_repository.py +6 -1
  57. zenml/integrations/huggingface/__init__.py +1 -6
  58. zenml/integrations/kaniko/image_builders/kaniko_image_builder.py +3 -3
  59. zenml/integrations/lightning/orchestrators/lightning_orchestrator.py +3 -3
  60. zenml/integrations/lightning/orchestrators/lightning_orchestrator_entrypoint.py +2 -2
  61. zenml/integrations/mlflow/experiment_trackers/mlflow_experiment_tracker.py +6 -3
  62. zenml/integrations/mlflow/model_registries/mlflow_model_registry.py +6 -0
  63. zenml/integrations/mlflow/services/mlflow_deployment.py +2 -2
  64. zenml/integrations/mlflow/steps/mlflow_deployer.py +1 -1
  65. zenml/integrations/mlflow/steps/mlflow_registry.py +1 -1
  66. zenml/integrations/neptune/experiment_trackers/run_state.py +2 -2
  67. zenml/integrations/pytorch/materializers/base_pytorch_materializer.py +8 -2
  68. zenml/integrations/pytorch/materializers/pytorch_module_materializer.py +4 -1
  69. zenml/integrations/s3/artifact_stores/s3_artifact_store.py +98 -0
  70. zenml/integrations/s3/flavors/s3_artifact_store_flavor.py +14 -0
  71. zenml/integrations/s3/utils.py +40 -0
  72. zenml/integrations/tensorflow/__init__.py +0 -9
  73. zenml/logging/step_logging.py +13 -15
  74. zenml/{new/pipelines → login}/__init__.py +4 -1
  75. zenml/login/credentials.py +346 -0
  76. zenml/login/credentials_store.py +603 -0
  77. zenml/{new → login/pro}/__init__.py +4 -1
  78. zenml/login/pro/client.py +496 -0
  79. zenml/login/pro/constants.py +34 -0
  80. zenml/{lineage_graph/edge.py → login/pro/models.py} +9 -8
  81. zenml/{zen_server/deploy/terraform/providers → login/pro/organization}/__init__.py +2 -2
  82. zenml/login/pro/organization/client.py +79 -0
  83. zenml/{lineage_graph/node/base_node.py → login/pro/organization/models.py} +13 -12
  84. zenml/{new/steps → login/pro/tenant}/__init__.py +2 -1
  85. zenml/login/pro/tenant/client.py +92 -0
  86. zenml/login/pro/tenant/models.py +174 -0
  87. zenml/login/pro/utils.py +121 -0
  88. zenml/{cli → login}/web_login.py +64 -28
  89. zenml/materializers/__init__.py +2 -0
  90. zenml/materializers/base_materializer.py +43 -9
  91. zenml/materializers/built_in_materializer.py +1 -1
  92. zenml/materializers/uuid_materializer.py +79 -0
  93. zenml/metadata/lazy_load.py +10 -7
  94. zenml/metadata/metadata_types.py +49 -0
  95. zenml/model/lazy_load.py +85 -4
  96. zenml/model/model.py +61 -83
  97. zenml/model/utils.py +47 -118
  98. zenml/models/__init__.py +6 -0
  99. zenml/models/v2/base/base.py +12 -8
  100. zenml/models/v2/base/filter.py +9 -0
  101. zenml/models/v2/core/artifact_version.py +53 -25
  102. zenml/models/v2/core/component.py +54 -19
  103. zenml/models/v2/core/flavor.py +13 -13
  104. zenml/models/v2/core/model.py +4 -1
  105. zenml/models/v2/core/model_version.py +4 -6
  106. zenml/models/v2/core/model_version_artifact.py +3 -1
  107. zenml/models/v2/core/model_version_pipeline_run.py +3 -1
  108. zenml/models/v2/core/pipeline.py +3 -1
  109. zenml/models/v2/core/pipeline_run.py +24 -3
  110. zenml/models/v2/core/run_metadata.py +2 -2
  111. zenml/models/v2/core/run_template.py +3 -1
  112. zenml/models/v2/core/stack.py +7 -3
  113. zenml/models/v2/core/step_run.py +58 -14
  114. zenml/models/v2/misc/auth_models.py +11 -2
  115. zenml/models/v2/misc/server_models.py +2 -4
  116. zenml/orchestrators/base_orchestrator.py +41 -4
  117. zenml/orchestrators/input_utils.py +52 -36
  118. zenml/orchestrators/step_launcher.py +50 -171
  119. zenml/orchestrators/step_run_utils.py +574 -0
  120. zenml/orchestrators/step_runner.py +83 -120
  121. zenml/orchestrators/utils.py +46 -180
  122. zenml/pipelines/__init__.py +3 -16
  123. zenml/{new/pipelines → pipelines}/pipeline_context.py +3 -18
  124. zenml/pipelines/pipeline_decorator.py +34 -60
  125. zenml/{new/pipelines/pipeline.py → pipelines/pipeline_definition.py} +210 -207
  126. zenml/{new/pipelines → pipelines}/run_utils.py +11 -10
  127. zenml/services/local/local_daemon_entrypoint.py +4 -4
  128. zenml/services/service.py +2 -2
  129. zenml/stack/stack.py +3 -108
  130. zenml/stack/stack_component.py +2 -78
  131. zenml/stack/utils.py +26 -14
  132. zenml/stack_deployments/aws_stack_deployment.py +3 -0
  133. zenml/step_operators/step_operator_entrypoint_configuration.py +1 -1
  134. zenml/steps/__init__.py +3 -9
  135. zenml/steps/base_step.py +25 -267
  136. zenml/steps/entrypoint_function_utils.py +2 -80
  137. zenml/{new/steps → steps}/step_context.py +12 -66
  138. zenml/steps/step_decorator.py +42 -89
  139. zenml/steps/step_invocation.py +16 -60
  140. zenml/steps/utils.py +4 -23
  141. zenml/utils/dashboard_utils.py +16 -51
  142. zenml/utils/materializer_utils.py +1 -1
  143. zenml/utils/requirements_utils.py +71 -0
  144. zenml/utils/singleton.py +15 -3
  145. zenml/utils/source_utils.py +39 -2
  146. zenml/utils/typing_utils.py +8 -28
  147. zenml/utils/visualization_utils.py +1 -1
  148. zenml/zen_server/auth.py +44 -39
  149. zenml/zen_server/dashboard/assets/{404-Y50hSt65.js → 404-DT4QRUqN.js} +1 -1
  150. zenml/zen_server/dashboard/assets/@radix-DP6vWzyx.js +85 -0
  151. zenml/zen_server/dashboard/assets/@react-router-BMhZulnd.js +29 -0
  152. zenml/zen_server/dashboard/assets/@reactflow-8U9qNlMR.js +17 -0
  153. zenml/zen_server/dashboard/assets/@tanstack-BUCbhJyH.js +22 -0
  154. zenml/zen_server/dashboard/assets/{AlertDialogDropdownItem-xLR9a1iw.js → AlertDialogDropdownItem-C6N2rGrB.js} +1 -1
  155. zenml/zen_server/dashboard/assets/{CodeSnippet-IxXNxUDa.js → CodeSnippet-CqybNv0k.js} +1 -1
  156. zenml/zen_server/dashboard/assets/{CollapsibleCard-BhutZbBL.js → CollapsibleCard-0r_8G2Lj.js} +1 -1
  157. zenml/zen_server/dashboard/assets/{Commands-Bf-rd1z8.js → Commands-BDjgBQKi.js} +1 -1
  158. zenml/zen_server/dashboard/assets/ComponentBadge-DUiEYJHu.js +1 -0
  159. zenml/zen_server/dashboard/assets/ComponentFallbackDialog-BFoH5K4V.js +1 -0
  160. zenml/zen_server/dashboard/assets/ComponentIcon-CAIoUis2.js +1 -0
  161. zenml/zen_server/dashboard/assets/{CopyButton-DcFHidFJ.js → CopyButton-C745BrKi.js} +1 -1
  162. zenml/zen_server/dashboard/assets/{CsvVizualization-QSbjrfxw.js → CsvVizualization-PpAq0CeZ.js} +5 -5
  163. zenml/zen_server/dashboard/assets/{DialogItem-Cd3HqST4.js → DialogItem-DcVCZEew.js} +1 -1
  164. zenml/zen_server/dashboard/assets/{DisplayDate-DkCy54Bp.js → DisplayDate-BeXgUG_C.js} +1 -1
  165. zenml/zen_server/dashboard/assets/{EmptyState-Cs3DEmso.js → EmptyState-DeK7H4pr.js} +1 -1
  166. zenml/zen_server/dashboard/assets/{Error-BhwdmqK7.js → Error-BMlzibXj.js} +1 -1
  167. zenml/zen_server/dashboard/assets/{Helpbox-0pBpTwTm.js → Helpbox-BLf40fLV.js} +1 -1
  168. zenml/zen_server/dashboard/assets/{Infobox-BTK_EUKT.js → Infobox-BwisKifi.js} +1 -1
  169. zenml/zen_server/dashboard/assets/{InlineAvatar-CA3DFMcM.js → InlineAvatar-jEgodSgX.js} +1 -1
  170. zenml/zen_server/dashboard/assets/{Lock-CmIn0szs.js → Lock-3lLt1ih0.js} +1 -1
  171. zenml/zen_server/dashboard/assets/MarkdownVisualization-8O9kTr-2.js +14 -0
  172. zenml/zen_server/dashboard/assets/{NumberBox-CrN0_kqI.js → NumberBox-T9eELfLZ.js} +1 -1
  173. zenml/zen_server/dashboard/assets/{Partials-QLOZw624.js → Partials-YPBB3V4q.js} +1 -1
  174. zenml/zen_server/dashboard/assets/{PasswordChecker-DE71J_3F.js → PasswordChecker-CW0kqY0W.js} +1 -1
  175. zenml/zen_server/dashboard/assets/{ProviderIcon-C16CCIN4.js → ProviderIcon-Bb3Xha5A.js} +1 -1
  176. zenml/zen_server/dashboard/assets/{ProviderRadio-D3FuCHf3.js → ProviderRadio-BROY1700.js} +1 -1
  177. zenml/zen_server/dashboard/assets/RunSelector-DCiL3M1c.js +1 -0
  178. zenml/zen_server/dashboard/assets/SearchField-DfUiGFVd.js +1 -0
  179. zenml/zen_server/dashboard/assets/{SecretTooltip-BaMwHF-Q.js → SecretTooltip-C_qByGWB.js} +1 -1
  180. zenml/zen_server/dashboard/assets/{SetPassword-DuIC65H9.js → SetPassword-7pRB00El.js} +1 -1
  181. zenml/zen_server/dashboard/assets/{Tick-DJTCF0Re.js → Tick-CykQFPj2.js} +1 -1
  182. zenml/zen_server/dashboard/assets/{UpdatePasswordSchemas-CUm-DMpw.js → UpdatePasswordSchemas-DckMEkFf.js} +1 -1
  183. zenml/zen_server/dashboard/assets/{UsageReason-CKw0juLF.js → UsageReason-DVceN14P.js} +1 -1
  184. zenml/zen_server/dashboard/assets/{WizardFooter-Cv9ApYWU.js → WizardFooter-CW0Cvd70.js} +1 -1
  185. zenml/zen_server/dashboard/assets/{check-circle-DOoS4yhF.js → check-circle-Dwxliy1Z.js} +1 -1
  186. zenml/zen_server/dashboard/assets/{chevron-down-Cwb-W_B_.js → chevron-down-8wLBS5pQ.js} +1 -1
  187. zenml/zen_server/dashboard/assets/{chevron-right-double-c9H46Kl8.js → chevron-right-double-DoD8iXWM.js} +1 -1
  188. zenml/zen_server/dashboard/assets/{cloud-only-BB4BVa6E.js → cloud-only-B-s_HMDm.js} +1 -1
  189. zenml/zen_server/dashboard/assets/{code-browser-BJYErIjr.js → code-browser-CZUQs3Wa.js} +1 -1
  190. zenml/zen_server/dashboard/assets/{copy-CaGlDsUy.js → copy-CaSMXwiU.js} +1 -1
  191. zenml/zen_server/dashboard/assets/{create-stack-F29xAUEx.js → create-stack-CEmaPZ4c.js} +1 -1
  192. zenml/zen_server/dashboard/assets/delete-run-D-LKbGyz.js +1 -0
  193. zenml/zen_server/dashboard/assets/{docker-BFAFXr2_.js → docker-BFNgg-z3.js} +1 -1
  194. zenml/zen_server/dashboard/assets/{dots-horizontal-C6K59vUm.js → dots-horizontal-DK5Duzx4.js} +1 -1
  195. zenml/zen_server/dashboard/assets/{form-schemas-BKXwSDK2.js → form-schemas-1AyOCx90.js} +1 -1
  196. zenml/zen_server/dashboard/assets/{gcp-Dj6ntk0L.js → gcp-7M2Yf3ZK.js} +1 -1
  197. zenml/zen_server/dashboard/assets/{help-CwN931fX.js → help-Dam461dC.js} +1 -1
  198. zenml/zen_server/dashboard/assets/{index-5GJ5ysEZ.js → index-BVJ8n2-j.js} +1 -1
  199. zenml/zen_server/dashboard/assets/index-Bpmj40BI.js +1 -0
  200. zenml/zen_server/dashboard/assets/index-CbU4Ln_E.css +1 -0
  201. zenml/zen_server/dashboard/assets/{index-D-mtoBj3.js → index-DKPhqP2B.js} +1 -1
  202. zenml/zen_server/dashboard/assets/index-QQb7wQEC.js +55 -0
  203. zenml/zen_server/dashboard/assets/index.esm-cuVep_NJ.js +1 -0
  204. zenml/zen_server/dashboard/assets/inter-cyrillic-400-normal-BLGc9T1a.woff2 +0 -0
  205. zenml/zen_server/dashboard/assets/inter-cyrillic-400-normal-ZzOtrSSW.woff +0 -0
  206. zenml/zen_server/dashboard/assets/inter-cyrillic-500-normal-D4Vwzodn.woff2 +0 -0
  207. zenml/zen_server/dashboard/assets/inter-cyrillic-500-normal-DH2hs3aW.woff +0 -0
  208. zenml/zen_server/dashboard/assets/inter-cyrillic-600-normal-BGBWG807.woff2 +0 -0
  209. zenml/zen_server/dashboard/assets/inter-cyrillic-600-normal-BuzJQFbW.woff +0 -0
  210. zenml/zen_server/dashboard/assets/inter-cyrillic-ext-400-normal-BPnxn4xp.woff +0 -0
  211. zenml/zen_server/dashboard/assets/inter-cyrillic-ext-400-normal-Dc4VJyIJ.woff2 +0 -0
  212. zenml/zen_server/dashboard/assets/inter-cyrillic-ext-500-normal-BShVwWPj.woff2 +0 -0
  213. zenml/zen_server/dashboard/assets/inter-cyrillic-ext-500-normal-CUiC4oBV.woff +0 -0
  214. zenml/zen_server/dashboard/assets/inter-cyrillic-ext-600-normal-Bt9VVOA-.woff +0 -0
  215. zenml/zen_server/dashboard/assets/inter-cyrillic-ext-600-normal-CaqZN2hq.woff2 +0 -0
  216. zenml/zen_server/dashboard/assets/inter-greek-400-normal-BZzXV7-1.woff +0 -0
  217. zenml/zen_server/dashboard/assets/inter-greek-400-normal-DxZsaF_h.woff2 +0 -0
  218. zenml/zen_server/dashboard/assets/inter-greek-500-normal-CeQXL5ds.woff2 +0 -0
  219. zenml/zen_server/dashboard/assets/inter-greek-500-normal-d_eO-yCQ.woff +0 -0
  220. zenml/zen_server/dashboard/assets/inter-greek-600-normal-CwicyhtI.woff +0 -0
  221. zenml/zen_server/dashboard/assets/inter-greek-600-normal-Dhlb-90d.woff2 +0 -0
  222. zenml/zen_server/dashboard/assets/inter-greek-ext-400-normal-Bput3-QP.woff2 +0 -0
  223. zenml/zen_server/dashboard/assets/inter-greek-ext-400-normal-DCpCPQOf.woff +0 -0
  224. zenml/zen_server/dashboard/assets/inter-greek-ext-500-normal-B6guLgqG.woff2 +0 -0
  225. zenml/zen_server/dashboard/assets/inter-greek-ext-500-normal-M2hEX8vc.woff +0 -0
  226. zenml/zen_server/dashboard/assets/inter-greek-ext-600-normal-C9WLioJ8.woff +0 -0
  227. zenml/zen_server/dashboard/assets/inter-greek-ext-600-normal-Cnui8OiR.woff2 +0 -0
  228. zenml/zen_server/dashboard/assets/inter-latin-400-normal-BOOGhInR.woff2 +0 -0
  229. zenml/zen_server/dashboard/assets/inter-latin-400-normal-gitzw0hO.woff +0 -0
  230. zenml/zen_server/dashboard/assets/inter-latin-500-normal-D2bGa7uu.woff2 +0 -0
  231. zenml/zen_server/dashboard/assets/inter-latin-500-normal-deR1Tlfd.woff +0 -0
  232. zenml/zen_server/dashboard/assets/inter-latin-600-normal-B5cFAncS.woff +0 -0
  233. zenml/zen_server/dashboard/assets/inter-latin-600-normal-D273HNI0.woff2 +0 -0
  234. zenml/zen_server/dashboard/assets/inter-latin-ext-400-normal-C1t-h-pH.woff +0 -0
  235. zenml/zen_server/dashboard/assets/inter-latin-ext-400-normal-hnt3BR84.woff2 +0 -0
  236. zenml/zen_server/dashboard/assets/inter-latin-ext-500-normal-CIS2RHJS.woff2 +0 -0
  237. zenml/zen_server/dashboard/assets/inter-latin-ext-500-normal-UMdmhHu2.woff +0 -0
  238. zenml/zen_server/dashboard/assets/inter-latin-ext-600-normal-BnYJhD27.woff2 +0 -0
  239. zenml/zen_server/dashboard/assets/inter-latin-ext-600-normal-CAF0vJDd.woff +0 -0
  240. zenml/zen_server/dashboard/assets/inter-vietnamese-400-normal-BUNmGMP1.woff +0 -0
  241. zenml/zen_server/dashboard/assets/inter-vietnamese-400-normal-DMkecbls.woff2 +0 -0
  242. zenml/zen_server/dashboard/assets/inter-vietnamese-500-normal-DOriooB6.woff2 +0 -0
  243. zenml/zen_server/dashboard/assets/inter-vietnamese-500-normal-DQPw2Hwd.woff +0 -0
  244. zenml/zen_server/dashboard/assets/inter-vietnamese-600-normal-Cc8MFFhd.woff2 +0 -0
  245. zenml/zen_server/dashboard/assets/inter-vietnamese-600-normal-Cm6aH8_k.woff +0 -0
  246. zenml/zen_server/dashboard/assets/{kubernetes-BjbR6D-1.js → kubernetes--g7r02Zu.js} +1 -1
  247. zenml/zen_server/dashboard/assets/{layout-Dru15_XR.js → layout-DCSYN7-C.js} +1 -1
  248. zenml/zen_server/dashboard/assets/{link-external-BT2L8hAQ.js → link-external-CBEk6kEG.js} +1 -1
  249. zenml/zen_server/dashboard/assets/{login-mutation-ax6iL2Mb.js → login-mutation-DTcAFP1l.js} +1 -1
  250. zenml/zen_server/dashboard/assets/{logs-GiDJXbLS.js → logs-D5bdJGur.js} +1 -1
  251. zenml/zen_server/dashboard/assets/not-found-Cc-JkRH2.js +1 -0
  252. zenml/zen_server/dashboard/assets/{package-DYKZ5jKW.js → package-Cs35Szwh.js} +1 -1
  253. zenml/zen_server/dashboard/assets/{page-HkVBdZl6.js → page-9yplj5JT.js} +1 -1
  254. zenml/zen_server/dashboard/assets/{page-uORspyRu.js → page-B-y2XKIc.js} +1 -1
  255. zenml/zen_server/dashboard/assets/page-BBpOxVcY.js +1 -0
  256. zenml/zen_server/dashboard/assets/{page-BDg1F-Ug.js → page-BQQKaabe.js} +2 -2
  257. zenml/zen_server/dashboard/assets/page-BRInM1Lg.js +1 -0
  258. zenml/zen_server/dashboard/assets/{page-CvKnNK1S.js → page-BjjlMk7s.js} +1 -1
  259. zenml/zen_server/dashboard/assets/{page-BukXK1Aa.js → page-Bvd7YH2A.js} +1 -1
  260. zenml/zen_server/dashboard/assets/{page-DcTjHmYZ.js → page-C0N5q3l7.js} +1 -1
  261. zenml/zen_server/dashboard/assets/page-CT3Nep8W.js +1 -0
  262. zenml/zen_server/dashboard/assets/{page-DuqYMYmH.js → page-C_f47pBf.js} +1 -1
  263. zenml/zen_server/dashboard/assets/{page-DRfcRK1w.js → page-ClUVkl-O.js} +1 -1
  264. zenml/zen_server/dashboard/assets/page-Cmv8C_yM.js +3 -0
  265. zenml/zen_server/dashboard/assets/{page-p0BhSAWx.js → page-CyN2bdWG.js} +1 -1
  266. zenml/zen_server/dashboard/assets/page-CzzXH4fs.js +1 -0
  267. zenml/zen_server/dashboard/assets/{page-6mfzecin.js → page-DH_Z7iW1.js} +1 -1
  268. zenml/zen_server/dashboard/assets/{page-8kYmrh0B.js → page-DIOXwhiD.js} +1 -1
  269. zenml/zen_server/dashboard/assets/{page-BXarY9K2.js → page-DLixvR-7.js} +1 -1
  270. zenml/zen_server/dashboard/assets/page-DTlGjgnG.js +1 -0
  271. zenml/zen_server/dashboard/assets/page-Dbpl86h0.js +1 -0
  272. zenml/zen_server/dashboard/assets/{page-MAXyfXBq.js → page-Ddgy6kDS.js} +1 -1
  273. zenml/zen_server/dashboard/assets/page-DtCAfBLy.js +9 -0
  274. zenml/zen_server/dashboard/assets/{page-CKHNAq7z.js → page-Dx16z7nA.js} +1 -1
  275. zenml/zen_server/dashboard/assets/{page-DMSLXKGT.js → page-DzpVUZ8f.js} +1 -1
  276. zenml/zen_server/dashboard/assets/page-McUyYbo1.js +1 -0
  277. zenml/zen_server/dashboard/assets/{page-miU2rhYG.js → page-N4qoPHKb.js} +1 -1
  278. zenml/zen_server/dashboard/assets/page-T1P3RyAR.js +1 -0
  279. zenml/zen_server/dashboard/assets/{page-3qPX9WYH.js → page-bKaULTGG.js} +1 -1
  280. zenml/zen_server/dashboard/assets/page-sbXUJy9t.js +1 -0
  281. zenml/zen_server/dashboard/assets/{persist-CfJMar_k.js → persist-CP0JmYZ4.js} +1 -1
  282. zenml/zen_server/dashboard/assets/{persist-BxIR2XZs.js → persist-DNb5cdrU.js} +1 -1
  283. zenml/zen_server/dashboard/assets/{plus-Bc8eLSDM.js → plus-C9IxgN2M.js} +1 -1
  284. zenml/zen_server/dashboard/assets/{refresh-hfgWPeto.js → refresh-BVu22P_C.js} +1 -1
  285. zenml/zen_server/dashboard/assets/{rocket-SESCGQXm.js → rocket-CONEmRmB.js} +1 -1
  286. zenml/zen_server/dashboard/assets/{sharedSchema-vub0rii3.js → sharedSchema-TMLu-nYQ.js} +1 -1
  287. zenml/zen_server/dashboard/assets/stack-detail-query-xmYxSsUY.js +1 -0
  288. zenml/zen_server/dashboard/assets/{tick-circle-m-hJG8i9.js → tick-circle-CM1ZScbQ.js} +1 -1
  289. zenml/zen_server/dashboard/assets/{trash-DUWZWzse.js → trash-DkJHMOg7.js} +1 -1
  290. zenml/zen_server/dashboard/assets/{update-server-settings-mutation-FGVP7X2U.js → update-server-settings-mutation-DsU8cNVl.js} +1 -1
  291. zenml/zen_server/dashboard/assets/{url-CbAPzsmT.js → url-D5le3J4q.js} +1 -1
  292. zenml/zen_server/dashboard/assets/zod-D89GC_vc.js +1 -0
  293. zenml/zen_server/dashboard/index.html +7 -7
  294. zenml/zen_server/deploy/__init__.py +7 -16
  295. zenml/zen_server/deploy/base_provider.py +46 -73
  296. zenml/zen_server/deploy/{local → daemon}/__init__.py +3 -3
  297. zenml/zen_server/deploy/{local/local_provider.py → daemon/daemon_provider.py} +44 -63
  298. zenml/zen_server/deploy/{local/local_zen_server.py → daemon/daemon_zen_server.py} +50 -28
  299. zenml/zen_server/deploy/deployer.py +90 -171
  300. zenml/zen_server/deploy/deployment.py +20 -12
  301. zenml/zen_server/deploy/docker/docker_provider.py +9 -28
  302. zenml/zen_server/deploy/docker/docker_zen_server.py +19 -9
  303. zenml/zen_server/deploy/helm/Chart.yaml +1 -1
  304. zenml/zen_server/deploy/helm/README.md +2 -2
  305. zenml/zen_server/exceptions.py +11 -0
  306. zenml/zen_server/feature_gate/zenml_cloud_feature_gate.py +1 -1
  307. zenml/zen_server/jwt.py +9 -9
  308. zenml/zen_server/routers/artifact_version_endpoints.py +1 -1
  309. zenml/zen_server/routers/auth_endpoints.py +30 -8
  310. zenml/zen_server/routers/runs_endpoints.py +0 -28
  311. zenml/zen_server/routers/stack_components_endpoints.py +1 -1
  312. zenml/zen_server/routers/workspaces_endpoints.py +1 -1
  313. zenml/zen_server/template_execution/runner_entrypoint_configuration.py +7 -4
  314. zenml/zen_server/template_execution/utils.py +8 -63
  315. zenml/zen_server/utils.py +67 -69
  316. zenml/zen_server/zen_server_api.py +107 -17
  317. zenml/zen_stores/base_zen_store.py +4 -51
  318. zenml/zen_stores/migrations/versions/0.67.0_release.py +23 -0
  319. zenml/zen_stores/migrations/versions/0.68.0_release.py +23 -0
  320. zenml/zen_stores/migrations/versions/0.68.1_release.py +23 -0
  321. zenml/zen_stores/migrations/versions/1d8f30c54477_migrate_to_new_.py +124 -0
  322. zenml/zen_stores/migrations/versions/c22561cbb3a9_add_artifact_unique_constraints.py +86 -0
  323. zenml/zen_stores/rest_zen_store.py +325 -147
  324. zenml/zen_stores/schemas/api_key_schemas.py +9 -4
  325. zenml/zen_stores/schemas/artifact_schemas.py +21 -2
  326. zenml/zen_stores/schemas/artifact_visualization_schemas.py +1 -1
  327. zenml/zen_stores/schemas/component_schemas.py +49 -6
  328. zenml/zen_stores/schemas/device_schemas.py +9 -4
  329. zenml/zen_stores/schemas/flavor_schemas.py +1 -1
  330. zenml/zen_stores/schemas/model_schemas.py +1 -1
  331. zenml/zen_stores/schemas/pipeline_run_schemas.py +12 -4
  332. zenml/zen_stores/schemas/service_schemas.py +1 -1
  333. zenml/zen_stores/schemas/step_run_schemas.py +3 -3
  334. zenml/zen_stores/schemas/trigger_schemas.py +1 -1
  335. zenml/zen_stores/sql_zen_store.py +422 -145
  336. zenml/zen_stores/template_utils.py +3 -1
  337. {zenml_nightly-0.66.0.dev20240928.dist-info → zenml_nightly-0.68.1.dev20241102.dist-info}/METADATA +20 -18
  338. {zenml_nightly-0.66.0.dev20240928.dist-info → zenml_nightly-0.68.1.dev20241102.dist-info}/RECORD +343 -505
  339. {zenml_nightly-0.66.0.dev20240928.dist-info → zenml_nightly-0.68.1.dev20241102.dist-info}/WHEEL +1 -1
  340. zenml/api.py +0 -60
  341. zenml/cli/stack_recipes.py +0 -469
  342. zenml/lineage_graph/__init__.py +0 -34
  343. zenml/lineage_graph/lineage_graph.py +0 -244
  344. zenml/lineage_graph/node/__init__.py +0 -32
  345. zenml/lineage_graph/node/artifact_node.py +0 -51
  346. zenml/lineage_graph/node/step_node.py +0 -41
  347. zenml/model/model_version.py +0 -38
  348. zenml/new/pipelines/code_archive.py +0 -157
  349. zenml/new/pipelines/pipeline_decorator.py +0 -118
  350. zenml/new/steps/step_decorator.py +0 -176
  351. zenml/pipelines/base_pipeline.py +0 -273
  352. zenml/post_execution/__init__.py +0 -30
  353. zenml/post_execution/pipeline.py +0 -55
  354. zenml/post_execution/pipeline_run.py +0 -55
  355. zenml/services/terraform/__init__.py +0 -14
  356. zenml/services/terraform/terraform_service.py +0 -441
  357. zenml/steps/external_artifact.py +0 -26
  358. zenml/steps/step_environment.py +0 -108
  359. zenml/steps/step_output.py +0 -36
  360. zenml/utils/mlstacks_utils.py +0 -635
  361. zenml/utils/terraform_utils.py +0 -43
  362. zenml/zen_server/dashboard/assets/@radix-DnFH_oo1.js +0 -85
  363. zenml/zen_server/dashboard/assets/@react-router-APVeuk-U.js +0 -29
  364. zenml/zen_server/dashboard/assets/@reactflow-ytavUpwh.js +0 -17
  365. zenml/zen_server/dashboard/assets/@tanstack-QbMbTrh5.js +0 -22
  366. zenml/zen_server/dashboard/assets/ComponentBadge-gKR1OIwG.js +0 -1
  367. zenml/zen_server/dashboard/assets/ExecutionStatus-D6r6aK8J.js +0 -1
  368. zenml/zen_server/dashboard/assets/MarkdownVisualization-DS05sfBm.js +0 -14
  369. zenml/zen_server/dashboard/assets/SearchField-BzmfxS0L.js +0 -1
  370. zenml/zen_server/dashboard/assets/all-pipeline-runs-query-BA3R2Sey.js +0 -1
  371. zenml/zen_server/dashboard/assets/delete-run-CP0pcJ3U.js +0 -1
  372. zenml/zen_server/dashboard/assets/index-BhJ6ZJxv.css +0 -1
  373. zenml/zen_server/dashboard/assets/index-Ci0nJ8EZ.js +0 -55
  374. zenml/zen_server/dashboard/assets/index.esm-BE1uqCX5.js +0 -1
  375. zenml/zen_server/dashboard/assets/inter-cyrillic-400-normal-Df6ckaLK.woff2 +0 -0
  376. zenml/zen_server/dashboard/assets/inter-cyrillic-400-normal-JrS_4yms.woff +0 -0
  377. zenml/zen_server/dashboard/assets/inter-cyrillic-500-normal-BRrLR67x.woff2 +0 -0
  378. zenml/zen_server/dashboard/assets/inter-cyrillic-500-normal-DskEQOpE.woff +0 -0
  379. zenml/zen_server/dashboard/assets/inter-cyrillic-600-normal-DDpWG8g5.woff2 +0 -0
  380. zenml/zen_server/dashboard/assets/inter-cyrillic-600-normal-iz1--dBq.woff +0 -0
  381. zenml/zen_server/dashboard/assets/inter-cyrillic-ext-400-normal-CzG7Kr3z.woff +0 -0
  382. zenml/zen_server/dashboard/assets/inter-cyrillic-ext-400-normal-tyfMZHQw.woff2 +0 -0
  383. zenml/zen_server/dashboard/assets/inter-cyrillic-ext-500-normal-DOnSzjnx.woff2 +0 -0
  384. zenml/zen_server/dashboard/assets/inter-cyrillic-ext-500-normal-Xebo2OyJ.woff +0 -0
  385. zenml/zen_server/dashboard/assets/inter-cyrillic-ext-600-normal-DpA2xaRd.woff2 +0 -0
  386. zenml/zen_server/dashboard/assets/inter-cyrillic-ext-600-normal-KAwcVx6H.woff +0 -0
  387. zenml/zen_server/dashboard/assets/inter-greek-400-normal-DQXyrmoy.woff2 +0 -0
  388. zenml/zen_server/dashboard/assets/inter-greek-400-normal-DvIPHDQ7.woff +0 -0
  389. zenml/zen_server/dashboard/assets/inter-greek-500-normal-BjpBGs91.woff +0 -0
  390. zenml/zen_server/dashboard/assets/inter-greek-500-normal-CmOavsDc.woff2 +0 -0
  391. zenml/zen_server/dashboard/assets/inter-greek-600-normal-B-l8Lzzd.woff2 +0 -0
  392. zenml/zen_server/dashboard/assets/inter-greek-600-normal-BLZsI-P3.woff +0 -0
  393. zenml/zen_server/dashboard/assets/inter-greek-ext-400-normal-CIdlr5YK.woff2 +0 -0
  394. zenml/zen_server/dashboard/assets/inter-greek-ext-400-normal-_Rr29XE2.woff +0 -0
  395. zenml/zen_server/dashboard/assets/inter-greek-ext-500-normal-2pdUafRD.woff2 +0 -0
  396. zenml/zen_server/dashboard/assets/inter-greek-ext-500-normal-Dtavx3qw.woff +0 -0
  397. zenml/zen_server/dashboard/assets/inter-greek-ext-600-normal-BmtRFZgT.woff +0 -0
  398. zenml/zen_server/dashboard/assets/inter-greek-ext-600-normal-CkBLDEl_.woff2 +0 -0
  399. zenml/zen_server/dashboard/assets/inter-latin-400-normal-BT1H-PT_.woff2 +0 -0
  400. zenml/zen_server/dashboard/assets/inter-latin-400-normal-Cdi8t5Mu.woff +0 -0
  401. zenml/zen_server/dashboard/assets/inter-latin-500-normal-D4I8BKCx.woff +0 -0
  402. zenml/zen_server/dashboard/assets/inter-latin-500-normal-kWhwEdDH.woff2 +0 -0
  403. zenml/zen_server/dashboard/assets/inter-latin-600-normal-B2Ssfs8e.woff2 +0 -0
  404. zenml/zen_server/dashboard/assets/inter-latin-600-normal-Dbvh0wvx.woff +0 -0
  405. zenml/zen_server/dashboard/assets/inter-latin-ext-400-normal-8tIzm-yw.woff +0 -0
  406. zenml/zen_server/dashboard/assets/inter-latin-ext-400-normal-D3W-OpO-.woff2 +0 -0
  407. zenml/zen_server/dashboard/assets/inter-latin-ext-500-normal-B9u8Q_zH.woff2 +0 -0
  408. zenml/zen_server/dashboard/assets/inter-latin-ext-500-normal-SuUkSNTU.woff +0 -0
  409. zenml/zen_server/dashboard/assets/inter-latin-ext-600-normal-Dg0Bk0Yr.woff +0 -0
  410. zenml/zen_server/dashboard/assets/inter-latin-ext-600-normal-ao35dkSb.woff2 +0 -0
  411. zenml/zen_server/dashboard/assets/inter-vietnamese-400-normal-Cnt0N5Vm.woff2 +0 -0
  412. zenml/zen_server/dashboard/assets/inter-vietnamese-400-normal-DIOGfGLL.woff +0 -0
  413. zenml/zen_server/dashboard/assets/inter-vietnamese-500-normal-0i6yoQMg.woff +0 -0
  414. zenml/zen_server/dashboard/assets/inter-vietnamese-500-normal-5IkPJ6Nk.woff2 +0 -0
  415. zenml/zen_server/dashboard/assets/inter-vietnamese-600-normal-BQ_dbMbg.woff +0 -0
  416. zenml/zen_server/dashboard/assets/inter-vietnamese-600-normal-DjnxGF-L.woff2 +0 -0
  417. zenml/zen_server/dashboard/assets/not-found-DbjllLY_.js +0 -1
  418. zenml/zen_server/dashboard/assets/page-B1n7_W7z.js +0 -1
  419. zenml/zen_server/dashboard/assets/page-BZZhLo2u.js +0 -1
  420. zenml/zen_server/dashboard/assets/page-Bbf_oBjn.js +0 -1
  421. zenml/zen_server/dashboard/assets/page-BjjuBvZG.js +0 -9
  422. zenml/zen_server/dashboard/assets/page-CHaQkFK5.js +0 -1
  423. zenml/zen_server/dashboard/assets/page-CS0SYFK8.js +0 -1
  424. zenml/zen_server/dashboard/assets/page-DGM1CbYT.js +0 -2
  425. zenml/zen_server/dashboard/assets/page-DOmIZ2ra.js +0 -1
  426. zenml/zen_server/dashboard/assets/page-DYVmJ9_w.js +0 -3
  427. zenml/zen_server/dashboard/assets/page-Dwow2doB.js +0 -1
  428. zenml/zen_server/dashboard/assets/stack-detail-query-DQcyzG-2.js +0 -1
  429. zenml/zen_server/dashboard/assets/zod-uFd1wBcd.js +0 -1
  430. zenml/zen_server/dashboard_legacy/_redirects +0 -1
  431. zenml/zen_server/dashboard_legacy/asset-manifest.json +0 -131
  432. zenml/zen_server/dashboard_legacy/favicon.ico +0 -0
  433. zenml/zen_server/dashboard_legacy/index.html +0 -1
  434. zenml/zen_server/dashboard_legacy/manifest.json +0 -25
  435. zenml/zen_server/dashboard_legacy/precache-manifest.6d320abb70db612019dda6c4948e7a90.js +0 -462
  436. zenml/zen_server/dashboard_legacy/robots.txt +0 -2
  437. zenml/zen_server/dashboard_legacy/service-worker.js +0 -39
  438. zenml/zen_server/dashboard_legacy/static/css/2.5b37d44a.chunk.css +0 -16
  439. zenml/zen_server/dashboard_legacy/static/css/2.5b37d44a.chunk.css.map +0 -1
  440. zenml/zen_server/dashboard_legacy/static/css/main.e79dff04.chunk.css +0 -2
  441. zenml/zen_server/dashboard_legacy/static/css/main.e79dff04.chunk.css.map +0 -1
  442. zenml/zen_server/dashboard_legacy/static/js/2.7934458d.chunk.js +0 -3
  443. zenml/zen_server/dashboard_legacy/static/js/2.7934458d.chunk.js.LICENSE.txt +0 -95
  444. zenml/zen_server/dashboard_legacy/static/js/2.7934458d.chunk.js.map +0 -1
  445. zenml/zen_server/dashboard_legacy/static/js/main.fa9299d5.chunk.js +0 -2
  446. zenml/zen_server/dashboard_legacy/static/js/main.fa9299d5.chunk.js.map +0 -1
  447. zenml/zen_server/dashboard_legacy/static/js/runtime-main.bfca2edd.js +0 -2
  448. zenml/zen_server/dashboard_legacy/static/js/runtime-main.bfca2edd.js.map +0 -1
  449. zenml/zen_server/dashboard_legacy/static/media/AlertTriangle.28aee535.svg +0 -5
  450. zenml/zen_server/dashboard_legacy/static/media/ArrowSquareOut.abfb9bc7.svg +0 -5
  451. zenml/zen_server/dashboard_legacy/static/media/Back.86c23a22.svg +0 -4
  452. zenml/zen_server/dashboard_legacy/static/media/BookOpen.5cb101ff.svg +0 -4
  453. zenml/zen_server/dashboard_legacy/static/media/BoundingBox.1eb98717.svg +0 -10
  454. zenml/zen_server/dashboard_legacy/static/media/Burger.9b1c67d7.svg +0 -3
  455. zenml/zen_server/dashboard_legacy/static/media/Cached.2381fb8d.svg +0 -1
  456. zenml/zen_server/dashboard_legacy/static/media/Calendar.356e11c7.svg +0 -3
  457. zenml/zen_server/dashboard_legacy/static/media/ChartBarHorizontal.0247447b.svg +0 -6
  458. zenml/zen_server/dashboard_legacy/static/media/ChartLine.0d79e18d.svg +0 -4
  459. zenml/zen_server/dashboard_legacy/static/media/ChatDots.2e1c9211.svg +0 -6
  460. zenml/zen_server/dashboard_legacy/static/media/Check.dad6beb2.svg +0 -3
  461. zenml/zen_server/dashboard_legacy/static/media/CheckCircleFilled.c19566d0.svg +0 -3
  462. zenml/zen_server/dashboard_legacy/static/media/Checkbox.af50e31e.svg +0 -3
  463. zenml/zen_server/dashboard_legacy/static/media/ChevronDown.f860ce32.svg +0 -3
  464. zenml/zen_server/dashboard_legacy/static/media/ChevronDownLight.6642d756.svg +0 -3
  465. zenml/zen_server/dashboard_legacy/static/media/ChevronLeft.f6edfcdb.svg +0 -3
  466. zenml/zen_server/dashboard_legacy/static/media/CircleCheck.f98fd6ca.svg +0 -1
  467. zenml/zen_server/dashboard_legacy/static/media/Clock.ffc9de95.svg +0 -3
  468. zenml/zen_server/dashboard_legacy/static/media/Close.74e9efbc.svg +0 -5
  469. zenml/zen_server/dashboard_legacy/static/media/CloseWithBorder.6960930a.svg +0 -3
  470. zenml/zen_server/dashboard_legacy/static/media/CloseWithoutBorder.cd6f71df.svg +0 -3
  471. zenml/zen_server/dashboard_legacy/static/media/CloudArrowUp.0aecb235.svg +0 -6
  472. zenml/zen_server/dashboard_legacy/static/media/Code.ef0f33b5.svg +0 -3
  473. zenml/zen_server/dashboard_legacy/static/media/Config.0be63f8a.svg +0 -1
  474. zenml/zen_server/dashboard_legacy/static/media/Connector.9fd46ef1.svg +0 -10
  475. zenml/zen_server/dashboard_legacy/static/media/Copy.36e2112a.svg +0 -1
  476. zenml/zen_server/dashboard_legacy/static/media/Dashboard.d05787e0.svg +0 -3
  477. zenml/zen_server/dashboard_legacy/static/media/Data.b1c3b5f8.svg +0 -3
  478. zenml/zen_server/dashboard_legacy/static/media/Delete.3c361b28.svg +0 -8
  479. zenml/zen_server/dashboard_legacy/static/media/Docs.7541d478.svg +0 -7
  480. zenml/zen_server/dashboard_legacy/static/media/Download.fba04d87.svg +0 -5
  481. zenml/zen_server/dashboard_legacy/static/media/Edit.490eb294.svg +0 -6
  482. zenml/zen_server/dashboard_legacy/static/media/EmptyRightArrow.23749d01.svg +0 -3
  483. zenml/zen_server/dashboard_legacy/static/media/Example.6396cd37.svg +0 -5
  484. zenml/zen_server/dashboard_legacy/static/media/Extension.1394cd4a.svg +0 -3
  485. zenml/zen_server/dashboard_legacy/static/media/Eye.d9e4ee62.svg +0 -4
  486. zenml/zen_server/dashboard_legacy/static/media/Failed.0213c1a0.svg +0 -1
  487. zenml/zen_server/dashboard_legacy/static/media/FileText.1f15bacd.svg +0 -7
  488. zenml/zen_server/dashboard_legacy/static/media/Filter.ab6b9c0d.svg +0 -3
  489. zenml/zen_server/dashboard_legacy/static/media/Folders.12b29887.svg +0 -5
  490. zenml/zen_server/dashboard_legacy/static/media/FunnelFill.6df4c143.svg +0 -3
  491. zenml/zen_server/dashboard_legacy/static/media/GitCommit.7dd9c2aa.svg +0 -5
  492. zenml/zen_server/dashboard_legacy/static/media/GitHub_Logo.cefc2023.png +0 -0
  493. zenml/zen_server/dashboard_legacy/static/media/Graph.2c63a892.svg +0 -11
  494. zenml/zen_server/dashboard_legacy/static/media/History.08329240.svg +0 -3
  495. zenml/zen_server/dashboard_legacy/static/media/Home.0843b0d5.svg +0 -3
  496. zenml/zen_server/dashboard_legacy/static/media/ImageBuilder.ea762d9c.svg +0 -6
  497. zenml/zen_server/dashboard_legacy/static/media/InProgress.304a0edc.svg +0 -1
  498. zenml/zen_server/dashboard_legacy/static/media/Info.9fe10c5c.svg +0 -3
  499. zenml/zen_server/dashboard_legacy/static/media/KeyboardReturn.491afbe3.svg +0 -3
  500. zenml/zen_server/dashboard_legacy/static/media/Link.72bbb55d.svg +0 -4
  501. zenml/zen_server/dashboard_legacy/static/media/Lock.30f5e1fe.svg +0 -5
  502. zenml/zen_server/dashboard_legacy/static/media/Lock2.a769ea52.svg +0 -3
  503. zenml/zen_server/dashboard_legacy/static/media/LockKey.92f21621.svg +0 -6
  504. zenml/zen_server/dashboard_legacy/static/media/Logs.8bf4d005.svg +0 -5
  505. zenml/zen_server/dashboard_legacy/static/media/MinusCircle.4188f418.svg +0 -4
  506. zenml/zen_server/dashboard_legacy/static/media/ModelRegistry.f0de050a.svg +0 -6
  507. zenml/zen_server/dashboard_legacy/static/media/MultiUser.a2ba7c67.svg +0 -10
  508. zenml/zen_server/dashboard_legacy/static/media/PaginationFirst.92628634.svg +0 -4
  509. zenml/zen_server/dashboard_legacy/static/media/PaginationLast.00d3c732.svg +0 -4
  510. zenml/zen_server/dashboard_legacy/static/media/PaginationNext.86158845.svg +0 -3
  511. zenml/zen_server/dashboard_legacy/static/media/PaginationPrev.60c18a88.svg +0 -3
  512. zenml/zen_server/dashboard_legacy/static/media/Pen.f2d831d4.svg +0 -6
  513. zenml/zen_server/dashboard_legacy/static/media/PhotoCamera.179d6d4c.svg +0 -3
  514. zenml/zen_server/dashboard_legacy/static/media/Pipeline.30d298b0.svg +0 -7
  515. zenml/zen_server/dashboard_legacy/static/media/Plus.5aa1c16b.svg +0 -3
  516. zenml/zen_server/dashboard_legacy/static/media/PlusCircle.92d860dd.svg +0 -5
  517. zenml/zen_server/dashboard_legacy/static/media/Repositories.71a36b8c.svg +0 -3
  518. zenml/zen_server/dashboard_legacy/static/media/RightArrow.f30d3871.svg +0 -29
  519. zenml/zen_server/dashboard_legacy/static/media/Rocket.63bf7b9d.svg +0 -3
  520. zenml/zen_server/dashboard_legacy/static/media/RocketLaunch.1bff2b59.svg +0 -6
  521. zenml/zen_server/dashboard_legacy/static/media/Rubik-Medium.c87313aa.ttf +0 -0
  522. zenml/zen_server/dashboard_legacy/static/media/Rubik-Regular.b3d0902b.ttf +0 -0
  523. zenml/zen_server/dashboard_legacy/static/media/Run.daec4fb2.svg +0 -6
  524. zenml/zen_server/dashboard_legacy/static/media/Search.d1afcce5.svg +0 -4
  525. zenml/zen_server/dashboard_legacy/static/media/Settings.59ca73ae.svg +0 -4
  526. zenml/zen_server/dashboard_legacy/static/media/Share2.46c3ff66.svg +0 -3
  527. zenml/zen_server/dashboard_legacy/static/media/SignOut.6aa718c5.svg +0 -3
  528. zenml/zen_server/dashboard_legacy/static/media/SimplePlus.5cf7ec20.svg +0 -3
  529. zenml/zen_server/dashboard_legacy/static/media/SingleUser.bef3a095.svg +0 -4
  530. zenml/zen_server/dashboard_legacy/static/media/SourceCodePro-Regular.b484b32f.ttf +0 -0
  531. zenml/zen_server/dashboard_legacy/static/media/Stack.19b604ac.svg +0 -5
  532. zenml/zen_server/dashboard_legacy/static/media/StackComponent.b1ba90b5.svg +0 -4
  533. zenml/zen_server/dashboard_legacy/static/media/Star.f0c25022.svg +0 -9
  534. zenml/zen_server/dashboard_legacy/static/media/StarOutline.94ca8cd9.svg +0 -3
  535. zenml/zen_server/dashboard_legacy/static/media/Storefront.4b4796fe.svg +0 -3
  536. zenml/zen_server/dashboard_legacy/static/media/Stream.543e3039.svg +0 -3
  537. zenml/zen_server/dashboard_legacy/static/media/SupportAgent.510ddf1f.svg +0 -8
  538. zenml/zen_server/dashboard_legacy/static/media/Table.77033750.svg +0 -6
  539. zenml/zen_server/dashboard_legacy/static/media/Tool.d5785486.svg +0 -3
  540. zenml/zen_server/dashboard_legacy/static/media/UserPlus.741a99d7.svg +0 -6
  541. zenml/zen_server/dashboard_legacy/static/media/Verified.0625b2a0.svg +0 -3
  542. zenml/zen_server/dashboard_legacy/static/media/addNew.4fb6c939.svg +0 -8
  543. zenml/zen_server/dashboard_legacy/static/media/arrowClose.cbd53f3f.svg +0 -3
  544. zenml/zen_server/dashboard_legacy/static/media/arrowOpen.6ceef0af.svg +0 -3
  545. zenml/zen_server/dashboard_legacy/static/media/check_small.30bc0138.svg +0 -3
  546. zenml/zen_server/dashboard_legacy/static/media/circleArrowSideClose.98d6013e.svg +0 -18
  547. zenml/zen_server/dashboard_legacy/static/media/circleArrowSideOpen.63653df6.svg +0 -18
  548. zenml/zen_server/dashboard_legacy/static/media/image.104fd14b.png +0 -0
  549. zenml/zen_server/dashboard_legacy/static/media/imageAddIcon.e83004a9.svg +0 -7
  550. zenml/zen_server/dashboard_legacy/static/media/logo.93333e5c.svg +0 -1
  551. zenml/zen_server/dashboard_legacy/static/media/logo_small.4204397d.svg +0 -3
  552. zenml/zen_server/dashboard_legacy/static/media/logo_white.d4b4414e.svg +0 -20
  553. zenml/zen_server/dashboard_legacy/static/media/notConnected.5e2c8ea7.svg +0 -8
  554. zenml/zen_server/dashboard_legacy/static/media/plugin-fallback.72c294e6.svg +0 -6
  555. zenml/zen_server/dashboard_legacy/static/media/share.bcd998b0.svg +0 -5
  556. zenml/zen_server/dashboard_legacy/static/media/stars.08a9b19a.svg +0 -8
  557. zenml/zen_server/deploy/terraform/__init__.py +0 -41
  558. zenml/zen_server/deploy/terraform/providers/aws_provider.py +0 -61
  559. zenml/zen_server/deploy/terraform/providers/azure_provider.py +0 -59
  560. zenml/zen_server/deploy/terraform/providers/gcp_provider.py +0 -59
  561. zenml/zen_server/deploy/terraform/providers/terraform_provider.py +0 -331
  562. zenml/zen_server/deploy/terraform/recipes/aws/.gitignore +0 -8
  563. zenml/zen_server/deploy/terraform/recipes/aws/helm.tf +0 -20
  564. zenml/zen_server/deploy/terraform/recipes/aws/ingress.tf +0 -30
  565. zenml/zen_server/deploy/terraform/recipes/aws/outputs.tf +0 -7
  566. zenml/zen_server/deploy/terraform/recipes/aws/printf.cmd +0 -2
  567. zenml/zen_server/deploy/terraform/recipes/aws/sql.tf +0 -62
  568. zenml/zen_server/deploy/terraform/recipes/aws/terraform.tf +0 -44
  569. zenml/zen_server/deploy/terraform/recipes/aws/variables.tf +0 -167
  570. zenml/zen_server/deploy/terraform/recipes/aws/vpc.tf +0 -47
  571. zenml/zen_server/deploy/terraform/recipes/aws/zen_server.tf +0 -103
  572. zenml/zen_server/deploy/terraform/recipes/azure/.gitignore +0 -8
  573. zenml/zen_server/deploy/terraform/recipes/azure/helm.tf +0 -20
  574. zenml/zen_server/deploy/terraform/recipes/azure/ingress.tf +0 -30
  575. zenml/zen_server/deploy/terraform/recipes/azure/key_vault.tf +0 -73
  576. zenml/zen_server/deploy/terraform/recipes/azure/outputs.tf +0 -7
  577. zenml/zen_server/deploy/terraform/recipes/azure/printf.cmd +0 -2
  578. zenml/zen_server/deploy/terraform/recipes/azure/rg.tf +0 -36
  579. zenml/zen_server/deploy/terraform/recipes/azure/sql.tf +0 -65
  580. zenml/zen_server/deploy/terraform/recipes/azure/terraform.tf +0 -52
  581. zenml/zen_server/deploy/terraform/recipes/azure/variables.tf +0 -176
  582. zenml/zen_server/deploy/terraform/recipes/azure/zen_server.tf +0 -103
  583. zenml/zen_server/deploy/terraform/recipes/gcp/.gitignore +0 -8
  584. zenml/zen_server/deploy/terraform/recipes/gcp/helm.tf +0 -20
  585. zenml/zen_server/deploy/terraform/recipes/gcp/ingress.tf +0 -30
  586. zenml/zen_server/deploy/terraform/recipes/gcp/outputs.tf +0 -7
  587. zenml/zen_server/deploy/terraform/recipes/gcp/printf.cmd +0 -2
  588. zenml/zen_server/deploy/terraform/recipes/gcp/sql.tf +0 -64
  589. zenml/zen_server/deploy/terraform/recipes/gcp/terraform.tf +0 -44
  590. zenml/zen_server/deploy/terraform/recipes/gcp/variables.tf +0 -171
  591. zenml/zen_server/deploy/terraform/recipes/gcp/zen_server.tf +0 -114
  592. zenml/zen_server/deploy/terraform/terraform_zen_server.py +0 -246
  593. /zenml/{new/pipelines → pipelines}/build_utils.py +0 -0
  594. /zenml/{new/steps → steps}/decorated_step.py +0 -0
  595. {zenml_nightly-0.66.0.dev20240928.dist-info → zenml_nightly-0.68.1.dev20241102.dist-info}/LICENSE +0 -0
  596. {zenml_nightly-0.66.0.dev20240928.dist-info → zenml_nightly-0.68.1.dev20241102.dist-info}/entry_points.txt +0 -0
zenml/cli/utils.py CHANGED
@@ -57,8 +57,6 @@ from zenml.console import console, zenml_style_defaults
57
57
  from zenml.constants import (
58
58
  FILTERING_DATETIME_FORMAT,
59
59
  IS_DEBUG_ENV,
60
- NOT_INSTALLED_MESSAGE,
61
- TERRAFORM_NOT_INSTALLED_MESSAGE,
62
60
  )
63
61
  from zenml.enums import GenericFilterOps, StackComponentType
64
62
  from zenml.logger import get_logger
@@ -81,7 +79,6 @@ from zenml.services import BaseService, ServiceState
81
79
  from zenml.stack import StackComponent
82
80
  from zenml.stack.stack_component import StackComponentConfig
83
81
  from zenml.utils import secret_utils
84
- from zenml.zen_server.deploy import ServerDeployment
85
82
 
86
83
  if TYPE_CHECKING:
87
84
  from uuid import UUID
@@ -225,6 +222,8 @@ def print_table(
225
222
  caption: Caption of the table.
226
223
  columns: Optional column configurations to be used in the table.
227
224
  """
225
+ from rich.text import Text
226
+
228
227
  column_keys = {key: None for dict_ in obj for key in dict_}
229
228
  column_names = [columns.get(key, key.upper()) for key in column_keys]
230
229
  rich_table = table.Table(
@@ -243,10 +242,19 @@ def print_table(
243
242
  if key is None:
244
243
  values.append(None)
245
244
  else:
246
- value = str(dict_.get(key) or " ")
247
- # escape text when square brackets are used
248
- if "[" in value:
249
- value = escape(value)
245
+ v = dict_.get(key) or " "
246
+ if isinstance(v, str) and (
247
+ v.startswith("http://") or v.startswith("https://")
248
+ ):
249
+ # Display the URL as a hyperlink in a way that doesn't break
250
+ # the URL when it needs to be wrapped over multiple lines
251
+ value: Union[str, Text] = Text(v, style=f"link {v}")
252
+ else:
253
+ value = str(v)
254
+ # Escape text when square brackets are used, but allow
255
+ # links to be decorated as rich style links
256
+ if "[" in value and "[link=" not in value:
257
+ value = escape(value)
250
258
  values.append(value)
251
259
  rich_table.add_row(*values)
252
260
  if len(rich_table.columns) > 1:
@@ -260,6 +268,7 @@ def print_pydantic_models(
260
268
  exclude_columns: Optional[List[str]] = None,
261
269
  active_models: Optional[List[T]] = None,
262
270
  show_active: bool = False,
271
+ rename_columns: Dict[str, str] = {},
263
272
  ) -> None:
264
273
  """Prints the list of Pydantic models in a table.
265
274
 
@@ -272,6 +281,7 @@ def print_pydantic_models(
272
281
  active_models: Optional list of active models of the given type T.
273
282
  show_active: Flag to decide whether to append the active model on the
274
283
  top of the list.
284
+ rename_columns: Optional dictionary to rename columns.
275
285
  """
276
286
  if exclude_columns is None:
277
287
  exclude_columns = list()
@@ -328,6 +338,8 @@ def print_pydantic_models(
328
338
 
329
339
  for k in include_columns:
330
340
  value = getattr(model, k)
341
+ if k in rename_columns:
342
+ k = rename_columns[k]
331
343
  # In case the response model contains nested `BaseResponse`s
332
344
  # we want to attempt to represent them by name, if they contain
333
345
  # such a field, else the id is used
@@ -352,6 +364,7 @@ def print_pydantic_models(
352
364
  items[k] = [str(v) for v in value]
353
365
  else:
354
366
  items[k] = str(value)
367
+
355
368
  # prepend an active marker if a function to mark active was passed
356
369
  if not active_models and not show_active:
357
370
  return items
@@ -523,43 +536,6 @@ def format_integration_list(
523
536
  return list_of_dicts
524
537
 
525
538
 
526
- def print_stack_outputs(stack: "StackResponse") -> None:
527
- """Prints outputs for stacks deployed with mlstacks.
528
-
529
- Args:
530
- stack: Instance of a stack model.
531
- """
532
- verify_mlstacks_prerequisites_installation()
533
-
534
- if not stack.stack_spec_path:
535
- declare("No stack spec path is set for this stack.")
536
- return
537
- stack_caption = f"'{stack.name}' stack"
538
- rich_table = table.Table(
539
- box=box.HEAVY_EDGE,
540
- title="MLStacks Outputs",
541
- caption=stack_caption,
542
- show_lines=True,
543
- )
544
- rich_table.add_column("OUTPUT_KEY", overflow="fold")
545
- rich_table.add_column("OUTPUT_VALUE", overflow="fold")
546
-
547
- from mlstacks.utils.terraform_utils import get_stack_outputs
548
-
549
- stack_spec_file = stack.stack_spec_path
550
- stack_outputs = get_stack_outputs(stack_path=stack_spec_file)
551
-
552
- for output_key, output_value in stack_outputs.items():
553
- rich_table.add_row(output_key, output_value)
554
-
555
- # capitalize entries in first column
556
- rich_table.columns[0]._cells = [
557
- component.upper() # type: ignore[union-attr]
558
- for component in rich_table.columns[0]._cells
559
- ]
560
- console.print(rich_table)
561
-
562
-
563
539
  def print_stack_configuration(stack: "StackResponse", active: bool) -> None:
564
540
  """Prints the configuration options of a stack.
565
541
 
@@ -609,9 +585,6 @@ def print_stack_configuration(stack: "StackResponse", active: bool) -> None:
609
585
  f"{f'owned by user {stack.user.name}.' if stack.user else 'unowned.'}"
610
586
  )
611
587
 
612
- if stack.stack_spec_path:
613
- declare(f"Stack spec path for `mlstacks`: '{stack.stack_spec_path}'")
614
-
615
588
 
616
589
  def print_flavor_list(flavors: Page["FlavorResponse"]) -> None:
617
590
  """Prints the list of flavors.
@@ -655,7 +628,7 @@ def print_stack_component_configuration(
655
628
 
656
629
  declare(
657
630
  f"{component.type.value.title()} '{component.name}' of flavor "
658
- f"'{component.flavor}' with id '{component.id}' is owned by "
631
+ f"'{component.flavor_name}' with id '{component.id}' is owned by "
659
632
  f"user '{user_name}'."
660
633
  )
661
634
 
@@ -1433,74 +1406,6 @@ def print_served_model_configuration(
1433
1406
  console.print(rich_table)
1434
1407
 
1435
1408
 
1436
- def print_server_deployment_list(servers: List["ServerDeployment"]) -> None:
1437
- """Print a table with a list of ZenML server deployments.
1438
-
1439
- Args:
1440
- servers: list of ZenML server deployments
1441
- """
1442
- server_dicts = []
1443
- for server in servers:
1444
- status = ""
1445
- url = ""
1446
- connected = ""
1447
- if server.status:
1448
- status = get_service_state_emoji(server.status.status)
1449
- if server.status.url:
1450
- url = server.status.url
1451
- if server.status.connected:
1452
- connected = ":point_left:"
1453
- server_dicts.append(
1454
- {
1455
- "STATUS": status,
1456
- "NAME": server.config.name,
1457
- "PROVIDER": server.config.provider.value,
1458
- "URL": url,
1459
- "CONNECTED": connected,
1460
- }
1461
- )
1462
- print_table(server_dicts)
1463
-
1464
-
1465
- def print_server_deployment(server: "ServerDeployment") -> None:
1466
- """Prints the configuration and status of a ZenML server deployment.
1467
-
1468
- Args:
1469
- server: Server deployment to print
1470
- """
1471
- server_name = server.config.name
1472
- title_ = f"ZenML server '{server_name}'"
1473
-
1474
- rich_table = table.Table(
1475
- box=box.HEAVY_EDGE,
1476
- title=title_,
1477
- show_header=False,
1478
- show_lines=True,
1479
- )
1480
- rich_table.add_column("", overflow="fold")
1481
- rich_table.add_column("", overflow="fold")
1482
-
1483
- server_info = []
1484
-
1485
- if server.status:
1486
- server_info.extend(
1487
- [
1488
- ("URL", server.status.url or ""),
1489
- ("STATUS", get_service_state_emoji(server.status.status)),
1490
- ("STATUS_MESSAGE", server.status.status_message or ""),
1491
- (
1492
- "CONNECTED",
1493
- ":white_check_mark:" if server.status.connected else "",
1494
- ),
1495
- ]
1496
- )
1497
-
1498
- for item in server_info:
1499
- rich_table.add_row(*item)
1500
-
1501
- console.print(rich_table)
1502
-
1503
-
1504
1409
  def describe_pydantic_object(schema_json: Dict[str, Any]) -> None:
1505
1410
  """Describes a Pydantic object based on the dict-representation of its schema.
1506
1411
 
@@ -1674,7 +1579,7 @@ def print_components_table(
1674
1579
  "ACTIVE": ":point_right:" if is_active else "",
1675
1580
  "NAME": component.name,
1676
1581
  "COMPONENT ID": component.id,
1677
- "FLAVOR": component.flavor,
1582
+ "FLAVOR": component.flavor_name,
1678
1583
  "OWNER": f"{component.user.name if component.user else '-'}",
1679
1584
  }
1680
1585
  configurations.append(component_config)
@@ -2761,32 +2666,9 @@ def print_model_url(url: Optional[str]) -> None:
2761
2666
  warning(
2762
2667
  "You can display various ZenML entities including pipelines, "
2763
2668
  "runs, stacks and much more on the ZenML Dashboard. "
2764
- "You can try it locally, by running `zenml up`, or remotely, "
2765
- "by deploying ZenML on the infrastructure of your choice."
2766
- )
2767
-
2768
-
2769
- def warn_deprecated_example_subcommand() -> None:
2770
- """Warning for deprecating example subcommand."""
2771
- warning(
2772
- "The `example` CLI subcommand has been deprecated and will be removed "
2773
- "in a future release."
2774
- )
2775
-
2776
-
2777
- def verify_mlstacks_prerequisites_installation() -> None:
2778
- """Checks if the `mlstacks` package is installed."""
2779
- try:
2780
- import mlstacks # noqa: F401
2781
- import python_terraform # noqa: F401
2782
-
2783
- subprocess.check_output(
2784
- ["terraform", "--version"], universal_newlines=True
2669
+ "You can try it locally, by running `zenml local --local`, or "
2670
+ "remotely, by deploying ZenML on the infrastructure of your choice."
2785
2671
  )
2786
- except ImportError:
2787
- error(NOT_INSTALLED_MESSAGE)
2788
- except subprocess.CalledProcessError:
2789
- error(TERRAFORM_NOT_INSTALLED_MESSAGE)
2790
2672
 
2791
2673
 
2792
2674
  def is_jupyter_installed() -> bool:
zenml/client.py CHANGED
@@ -346,6 +346,8 @@ class Client(metaclass=ClientMetaClass):
346
346
  """
347
347
 
348
348
  _active_user: Optional["UserResponse"] = None
349
+ _active_workspace: Optional["WorkspaceResponse"] = None
350
+ _active_stack: Optional["StackResponse"] = None
349
351
 
350
352
  def __init__(
351
353
  self,
@@ -1113,9 +1115,13 @@ class Client(metaclass=ClientMetaClass):
1113
1115
  Raises:
1114
1116
  RuntimeError: If the active workspace is not set.
1115
1117
  """
1116
- if ENV_ZENML_ACTIVE_WORKSPACE_ID in os.environ:
1117
- workspace_id = os.environ[ENV_ZENML_ACTIVE_WORKSPACE_ID]
1118
- return self.get_workspace(workspace_id)
1118
+ if workspace_id := os.environ.get(ENV_ZENML_ACTIVE_WORKSPACE_ID):
1119
+ if not self._active_workspace or self._active_workspace.id != UUID(
1120
+ workspace_id
1121
+ ):
1122
+ self._active_workspace = self.get_workspace(workspace_id)
1123
+
1124
+ return self._active_workspace
1119
1125
 
1120
1126
  from zenml.constants import DEFAULT_WORKSPACE_NAME
1121
1127
 
@@ -1465,8 +1471,13 @@ class Client(metaclass=ClientMetaClass):
1465
1471
  Raises:
1466
1472
  RuntimeError: If the active stack is not set.
1467
1473
  """
1468
- if ENV_ZENML_ACTIVE_STACK_ID in os.environ:
1469
- return self.get_stack(os.environ[ENV_ZENML_ACTIVE_STACK_ID])
1474
+ if env_stack_id := os.environ.get(ENV_ZENML_ACTIVE_STACK_ID):
1475
+ if not self._active_stack or self._active_stack.id != UUID(
1476
+ env_stack_id
1477
+ ):
1478
+ self._active_stack = self.get_stack(env_stack_id)
1479
+
1480
+ return self._active_stack
1470
1481
 
1471
1482
  stack_id: Optional[UUID] = None
1472
1483
 
@@ -1534,6 +1545,8 @@ class Client(metaclass=ClientMetaClass):
1534
1545
  remote_components: List[str] = []
1535
1546
  assert stack.components is not None
1536
1547
  for component_type, components in stack.components.items():
1548
+ component_flavor: Union[FlavorResponse, str]
1549
+
1537
1550
  for component in components:
1538
1551
  if isinstance(component, UUID):
1539
1552
  component_response = self.get_stack_component(
@@ -1554,7 +1567,7 @@ class Client(metaclass=ClientMetaClass):
1554
1567
 
1555
1568
  configuration = validate_stack_component_config(
1556
1569
  configuration_dict=component_config,
1557
- flavor_name=component_flavor,
1570
+ flavor=component_flavor,
1558
1571
  component_type=component_type,
1559
1572
  # Always enforce validation of custom flavors
1560
1573
  validate_custom_flavors=True,
@@ -1563,13 +1576,18 @@ class Client(metaclass=ClientMetaClass):
1563
1576
  # `validate_custom_flavors=True` above
1564
1577
  assert configuration is not None
1565
1578
  warn_if_config_server_mismatch(configuration)
1579
+ flavor_name = (
1580
+ component_flavor.name
1581
+ if isinstance(component_flavor, FlavorResponse)
1582
+ else component_flavor
1583
+ )
1566
1584
  if configuration.is_local:
1567
1585
  local_components.append(
1568
- f"{component_type.value}: {component_flavor}"
1586
+ f"{component_type.value}: {flavor_name}"
1569
1587
  )
1570
1588
  elif configuration.is_remote:
1571
1589
  remote_components.append(
1572
- f"{component_type.value}: {component_flavor}"
1590
+ f"{component_type.value}: {flavor_name}"
1573
1591
  )
1574
1592
 
1575
1593
  if local_components and remote_components:
@@ -1906,6 +1924,7 @@ class Client(metaclass=ClientMetaClass):
1906
1924
  user_id: Optional[Union[str, UUID]] = None,
1907
1925
  connector_id: Optional[Union[str, UUID]] = None,
1908
1926
  stack_id: Optional[Union[str, UUID]] = None,
1927
+ user: Optional[Union[UUID, str]] = None,
1909
1928
  hydrate: bool = False,
1910
1929
  ) -> Page[ComponentResponse]:
1911
1930
  """Lists all registered stack components.
@@ -1925,6 +1944,7 @@ class Client(metaclass=ClientMetaClass):
1925
1944
  connector_id: The id of the connector to filter by.
1926
1945
  stack_id: The id of the stack to filter by.
1927
1946
  name: The name of the component to filter by.
1947
+ user: The ID of name of the user to filter by.
1928
1948
  hydrate: Flag deciding whether to hydrate the output model(s)
1929
1949
  by including metadata fields in the response.
1930
1950
 
@@ -1946,6 +1966,7 @@ class Client(metaclass=ClientMetaClass):
1946
1966
  id=id,
1947
1967
  created=created,
1948
1968
  updated=updated,
1969
+ user=user,
1949
1970
  )
1950
1971
  component_filter_model.set_scope_workspace(self.active_workspace.id)
1951
1972
 
@@ -1982,7 +2003,7 @@ class Client(metaclass=ClientMetaClass):
1982
2003
 
1983
2004
  validated_config = validate_stack_component_config(
1984
2005
  configuration_dict=configuration,
1985
- flavor_name=flavor,
2006
+ flavor=flavor,
1986
2007
  component_type=component_type,
1987
2008
  # Always enforce validation of custom flavors
1988
2009
  validate_custom_flavors=True,
@@ -2083,7 +2104,7 @@ class Client(metaclass=ClientMetaClass):
2083
2104
 
2084
2105
  validated_config = validate_stack_component_config(
2085
2106
  configuration_dict=existing_configuration,
2086
- flavor_name=component.flavor,
2107
+ flavor=component.flavor,
2087
2108
  component_type=component.type,
2088
2109
  # Always enforce validation of custom flavors
2089
2110
  validate_custom_flavors=True,
@@ -2494,7 +2515,7 @@ class Client(metaclass=ClientMetaClass):
2494
2515
  Returns:
2495
2516
  Model of the pipeline run.
2496
2517
  """
2497
- from zenml.new.pipelines.run_utils import (
2518
+ from zenml.pipelines.run_utils import (
2498
2519
  validate_run_config_is_runnable_from_server,
2499
2520
  validate_stack_is_runnable_from_server,
2500
2521
  wait_for_pipeline_run_to_finish,
@@ -3778,6 +3799,7 @@ class Client(metaclass=ClientMetaClass):
3778
3799
  code_repository: Optional[Union[UUID, str]] = None,
3779
3800
  model: Optional[Union[UUID, str]] = None,
3780
3801
  stack: Optional[Union[UUID, str]] = None,
3802
+ stack_component: Optional[Union[UUID, str]] = None,
3781
3803
  hydrate: bool = False,
3782
3804
  ) -> Page[PipelineRunResponse]:
3783
3805
  """List all pipeline runs.
@@ -3816,6 +3838,7 @@ class Client(metaclass=ClientMetaClass):
3816
3838
  code_repository: Filter by code repository name/ID.
3817
3839
  model: Filter by model name/ID.
3818
3840
  stack: Filter by stack name/ID.
3841
+ stack_component: Filter by stack component name/ID.
3819
3842
  hydrate: Flag deciding whether to hydrate the output model(s)
3820
3843
  by including metadata fields in the response.
3821
3844
 
@@ -3854,6 +3877,7 @@ class Client(metaclass=ClientMetaClass):
3854
3877
  code_repository=code_repository,
3855
3878
  stack=stack,
3856
3879
  model=model,
3880
+ stack_component=stack_component,
3857
3881
  templatable=templatable,
3858
3882
  )
3859
3883
  runs_filter_model.set_scope_workspace(self.active_workspace.id)
@@ -3862,21 +3886,6 @@ class Client(metaclass=ClientMetaClass):
3862
3886
  hydrate=hydrate,
3863
3887
  )
3864
3888
 
3865
- def list_runs(self, **kwargs: Any) -> Page[PipelineRunResponse]:
3866
- """(Deprecated) List all pipeline runs.
3867
-
3868
- Args:
3869
- **kwargs: The filter arguments passed to `list_pipeline_runs`.
3870
-
3871
- Returns:
3872
- A page with Pipeline Runs fitting the filter description
3873
- """
3874
- logger.warning(
3875
- "`Client.list_runs()` is deprecated and will be removed in a "
3876
- "future release. Please use `Client.list_pipeline_runs()` instead."
3877
- )
3878
- return self.list_pipeline_runs(**kwargs)
3879
-
3880
3889
  def delete_pipeline_run(
3881
3890
  self,
3882
3891
  name_id_or_prefix: Union[str, UUID],
@@ -3923,18 +3932,18 @@ class Client(metaclass=ClientMetaClass):
3923
3932
  created: Optional[Union[datetime, str]] = None,
3924
3933
  updated: Optional[Union[datetime, str]] = None,
3925
3934
  name: Optional[str] = None,
3926
- entrypoint_name: Optional[str] = None,
3927
- code_hash: Optional[str] = None,
3928
3935
  cache_key: Optional[str] = None,
3936
+ code_hash: Optional[str] = None,
3929
3937
  status: Optional[str] = None,
3930
3938
  start_time: Optional[Union[datetime, str]] = None,
3931
3939
  end_time: Optional[Union[datetime, str]] = None,
3932
3940
  pipeline_run_id: Optional[Union[str, UUID]] = None,
3941
+ deployment_id: Optional[Union[str, UUID]] = None,
3933
3942
  original_step_run_id: Optional[Union[str, UUID]] = None,
3934
3943
  workspace_id: Optional[Union[str, UUID]] = None,
3935
3944
  user_id: Optional[Union[str, UUID]] = None,
3936
3945
  model_version_id: Optional[Union[str, UUID]] = None,
3937
- num_outputs: Optional[Union[int, str]] = None,
3946
+ model: Optional[Union[UUID, str]] = None,
3938
3947
  hydrate: bool = False,
3939
3948
  ) -> Page[StepRunResponse]:
3940
3949
  """List all pipelines.
@@ -3951,15 +3960,15 @@ class Client(metaclass=ClientMetaClass):
3951
3960
  end_time: Use to filter by the time when the step finished running
3952
3961
  workspace_id: The id of the workspace to filter by.
3953
3962
  user_id: The id of the user to filter by.
3954
- pipeline_run_id: The id of the pipeline run to filter by.
3955
- original_step_run_id: The id of the pipeline run to filter by.
3963
+ pipeline_run_id: The id of the pipeline run to filter by.
3964
+ deployment_id: The id of the deployment to filter by.
3965
+ original_step_run_id: The id of the original step run to filter by.
3956
3966
  model_version_id: The ID of the model version to filter by.
3957
- name: The name of the run to filter by.
3958
- entrypoint_name: The entrypoint_name of the run to filter by.
3959
- code_hash: The code_hash of the run to filter by.
3960
- cache_key: The cache_key of the run to filter by.
3967
+ model: Filter by model name/ID.
3968
+ name: The name of the step run to filter by.
3969
+ cache_key: The cache key of the step run to filter by.
3970
+ code_hash: The code hash of the step run to filter by.
3961
3971
  status: The name of the run to filter by.
3962
- num_outputs: The number of outputs for the step run
3963
3972
  hydrate: Flag deciding whether to hydrate the output model(s)
3964
3973
  by including metadata fields in the response.
3965
3974
 
@@ -3972,10 +3981,10 @@ class Client(metaclass=ClientMetaClass):
3972
3981
  size=size,
3973
3982
  logical_operator=logical_operator,
3974
3983
  id=id,
3975
- entrypoint_name=entrypoint_name,
3976
- code_hash=code_hash,
3977
3984
  cache_key=cache_key,
3985
+ code_hash=code_hash,
3978
3986
  pipeline_run_id=pipeline_run_id,
3987
+ deployment_id=deployment_id,
3979
3988
  original_step_run_id=original_step_run_id,
3980
3989
  status=status,
3981
3990
  created=created,
@@ -3986,7 +3995,7 @@ class Client(metaclass=ClientMetaClass):
3986
3995
  workspace_id=workspace_id,
3987
3996
  user_id=user_id,
3988
3997
  model_version_id=model_version_id,
3989
- num_outputs=num_outputs,
3998
+ model=model,
3990
3999
  )
3991
4000
  step_run_filter_model.set_scope_workspace(self.active_workspace.id)
3992
4001
  return self.zen_store.list_run_steps(
@@ -7258,6 +7267,7 @@ class Client(metaclass=ClientMetaClass):
7258
7267
  NotImplementedError: If the client is not connected to a ZenML
7259
7268
  server.
7260
7269
  """
7270
+ from zenml.login.credentials_store import get_credentials_store
7261
7271
  from zenml.zen_stores.rest_zen_store import RestZenStore
7262
7272
 
7263
7273
  zen_store = self.zen_store
@@ -7266,8 +7276,15 @@ class Client(metaclass=ClientMetaClass):
7266
7276
  "API key configuration is only supported if connected to a "
7267
7277
  "ZenML server."
7268
7278
  )
7279
+
7280
+ credentials_store = get_credentials_store()
7269
7281
  assert isinstance(zen_store, RestZenStore)
7270
- zen_store.set_api_key(api_key=key)
7282
+
7283
+ credentials_store.set_api_key(server_url=zen_store.url, api_key=key)
7284
+
7285
+ # Force a re-authentication to start using the new API key
7286
+ # right away.
7287
+ zen_store.authenticate(force=True)
7271
7288
 
7272
7289
  def list_api_keys(
7273
7290
  self,
@@ -16,17 +16,21 @@
16
16
  import contextlib
17
17
  from typing import TYPE_CHECKING, Any, Callable, Dict, List, Optional, Type
18
18
 
19
- from pydantic import BaseModel
19
+ from pydantic import BaseModel, Field
20
+
21
+ from zenml.logger import get_logger
20
22
 
21
23
  if TYPE_CHECKING:
22
24
  from zenml.client import Client
23
25
 
26
+ logger = get_logger(__name__)
27
+
24
28
 
25
29
  class _CallStep(BaseModel):
26
30
  attribute_name: Optional[str] = None
27
- is_call: Optional[bool] = False
28
- call_args: Optional[List[Any]] = []
29
- call_kwargs: Optional[Dict[str, Any]] = {}
31
+ is_call: bool = False
32
+ call_args: List[Any] = Field(default_factory=list)
33
+ call_kwargs: Dict[str, Any] = Field(default_factory=dict)
30
34
  selector: Optional[Any] = None
31
35
 
32
36
 
@@ -112,11 +116,20 @@ class ClientLazyLoader(BaseModel):
112
116
  "Invalid call chain. Reach out to the ZenML team."
113
117
  )
114
118
  except Exception as e:
115
- raise RuntimeError(
119
+ logger.debug(
116
120
  f"Failed to evaluate lazy load chain `{self.method_name}` "
117
- f"+ `{self.call_chain}`. Reach out to the ZenML team via "
118
- "Slack or GitHub to check further."
119
- ) from e
121
+ f"+ `{next_step}` + `{self.call_chain}`."
122
+ )
123
+ msg = f"`{self.method_name}("
124
+ if next_step:
125
+ for arg in next_step.call_args:
126
+ msg += f"'{arg}',"
127
+ for k, v in next_step.call_kwargs.items():
128
+ msg += f"{k}='{v}',"
129
+ msg = msg[:-1]
130
+ msg += f")` failed during lazy load with error: {e}"
131
+ logger.error(msg)
132
+ raise RuntimeError(msg)
120
133
  return self_
121
134
 
122
135
  self_ = getattr(Client(), self.method_name)
@@ -172,10 +185,10 @@ def evaluate_all_lazy_load_args_in_client_methods(
172
185
  """
173
186
  import inspect
174
187
 
175
- def _evaluate_args(func: Callable[..., Any]) -> Any:
188
+ def _evaluate_args(
189
+ func: Callable[..., Any], is_instance_method: bool
190
+ ) -> Any:
176
191
  def _inner(*args: Any, **kwargs: Any) -> Any:
177
- is_instance_method = "self" in inspect.getfullargspec(func).args
178
-
179
192
  args_ = list(args)
180
193
  if not is_instance_method:
181
194
  from zenml.client import Client
@@ -201,7 +214,11 @@ def evaluate_all_lazy_load_args_in_client_methods(
201
214
 
202
215
  def _decorate() -> Type["Client"]:
203
216
  for name, fn in inspect.getmembers(cls, inspect.isfunction):
204
- setattr(cls, name, _evaluate_args(fn))
217
+ setattr(
218
+ cls,
219
+ name,
220
+ _evaluate_args(fn, "self" in inspect.getfullargspec(fn).args),
221
+ )
205
222
  return cls
206
223
 
207
224
  return _decorate()
zenml/config/compiler.py CHANGED
@@ -39,12 +39,12 @@ from zenml.config.step_configurations import (
39
39
  from zenml.environment import get_run_environment_dict
40
40
  from zenml.exceptions import StackValidationError
41
41
  from zenml.models import PipelineDeploymentBase
42
- from zenml.new.pipelines.run_utils import get_default_run_name
42
+ from zenml.pipelines.run_utils import get_default_run_name
43
43
  from zenml.utils import pydantic_utils, settings_utils
44
44
 
45
45
  if TYPE_CHECKING:
46
46
  from zenml.config.source import Source
47
- from zenml.new.pipelines.pipeline import Pipeline
47
+ from zenml.pipelines.pipeline_definition import Pipeline
48
48
  from zenml.stack import Stack, StackComponent
49
49
  from zenml.steps.step_invocation import StepInvocation
50
50
 
@@ -208,6 +208,7 @@ class Compiler:
208
208
  enable_artifact_visualization=config.enable_artifact_visualization,
209
209
  enable_step_logs=config.enable_step_logs,
210
210
  settings=config.settings,
211
+ tags=config.tags,
211
212
  extra=config.extra,
212
213
  model=config.model,
213
214
  parameters=config.parameters,
@@ -583,8 +584,6 @@ class Compiler:
583
584
  Raises:
584
585
  ValueError: If the pipeline has no steps.
585
586
  """
586
- from zenml.pipelines import BasePipeline
587
-
588
587
  if not step_specs:
589
588
  raise ValueError(
590
589
  f"Pipeline '{pipeline.name}' cannot be compiled because it has "
@@ -594,13 +593,10 @@ class Compiler:
594
593
  "https://docs.zenml.io/user-guide/starter-guide."
595
594
  )
596
595
 
597
- additional_spec_args: Dict[str, Any] = {}
598
- if isinstance(pipeline, BasePipeline):
599
- # use older spec version for legacy pipelines
600
- additional_spec_args["version"] = "0.3"
601
- else:
602
- additional_spec_args["source"] = pipeline.resolve()
603
- additional_spec_args["parameters"] = pipeline._parameters
596
+ additional_spec_args: Dict[str, Any] = {
597
+ "source": pipeline.resolve(),
598
+ "parameters": pipeline._parameters,
599
+ }
604
600
 
605
601
  return PipelineSpec(steps=step_specs, **additional_spec_args)
606
602
 
@@ -689,6 +689,15 @@ class GlobalConfiguration(BaseModel, metaclass=GlobalConfigMetaClass):
689
689
  self._configure_store(config, skip_default_registrations, **kwargs)
690
690
  logger.info("Updated the global store configuration.")
691
691
 
692
+ @property
693
+ def is_initialized(self) -> bool:
694
+ """Check if the global configuration is initialized.
695
+
696
+ Returns:
697
+ `True` if the global configuration is initialized.
698
+ """
699
+ return self._zen_store is not None
700
+
692
701
  @property
693
702
  def zen_store(self) -> "BaseZenStore":
694
703
  """Initialize and/or return the global zen store.
@@ -13,7 +13,7 @@
13
13
  # permissions and limitations under the License.
14
14
  """Pipeline configuration classes."""
15
15
 
16
- from typing import TYPE_CHECKING, Any, Dict, Optional
16
+ from typing import TYPE_CHECKING, Any, Dict, List, Optional
17
17
 
18
18
  from pydantic import SerializeAsAny, field_validator
19
19
 
@@ -39,6 +39,7 @@ class PipelineConfigurationUpdate(StrictBaseModel):
39
39
  enable_artifact_visualization: Optional[bool] = None
40
40
  enable_step_logs: Optional[bool] = None
41
41
  settings: Dict[str, SerializeAsAny[BaseSettings]] = {}
42
+ tags: Optional[List[str]] = None
42
43
  extra: Dict[str, Any] = {}
43
44
  failure_hook_source: Optional[SourceWithValidator] = None
44
45
  success_hook_source: Optional[SourceWithValidator] = None