zenml-nightly 0.66.0.dev20240927__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 (597) 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/__init__.py +6 -2
  47. zenml/integrations/azure/flavors/azureml_orchestrator_flavor.py +5 -4
  48. zenml/integrations/azure/orchestrators/azureml_orchestrator.py +1 -1
  49. zenml/integrations/bentoml/model_deployers/bentoml_model_deployer.py +85 -19
  50. zenml/integrations/bentoml/services/__init__.py +15 -4
  51. zenml/integrations/bentoml/services/bentoml_container_deployment.py +399 -0
  52. zenml/integrations/bentoml/services/{bentoml_deployment.py → bentoml_local_deployment.py} +81 -40
  53. zenml/{steps/base_parameters.py → integrations/bentoml/services/deployment_type.py} +8 -5
  54. zenml/integrations/bentoml/steps/bento_builder.py +1 -0
  55. zenml/integrations/bentoml/steps/bentoml_deployer.py +93 -41
  56. zenml/integrations/github/code_repositories/github_code_repository.py +1 -1
  57. zenml/integrations/gitlab/code_repositories/gitlab_code_repository.py +6 -1
  58. zenml/integrations/huggingface/__init__.py +1 -6
  59. zenml/integrations/kaniko/image_builders/kaniko_image_builder.py +3 -3
  60. zenml/integrations/lightning/orchestrators/lightning_orchestrator.py +3 -3
  61. zenml/integrations/lightning/orchestrators/lightning_orchestrator_entrypoint.py +2 -2
  62. zenml/integrations/mlflow/experiment_trackers/mlflow_experiment_tracker.py +6 -3
  63. zenml/integrations/mlflow/model_registries/mlflow_model_registry.py +6 -0
  64. zenml/integrations/mlflow/services/mlflow_deployment.py +2 -2
  65. zenml/integrations/mlflow/steps/mlflow_deployer.py +1 -1
  66. zenml/integrations/mlflow/steps/mlflow_registry.py +1 -1
  67. zenml/integrations/neptune/experiment_trackers/run_state.py +2 -2
  68. zenml/integrations/pytorch/materializers/base_pytorch_materializer.py +8 -2
  69. zenml/integrations/pytorch/materializers/pytorch_module_materializer.py +4 -1
  70. zenml/integrations/s3/artifact_stores/s3_artifact_store.py +98 -0
  71. zenml/integrations/s3/flavors/s3_artifact_store_flavor.py +14 -0
  72. zenml/integrations/s3/utils.py +40 -0
  73. zenml/integrations/tensorflow/__init__.py +0 -9
  74. zenml/logging/step_logging.py +13 -15
  75. zenml/{new/pipelines → login}/__init__.py +4 -1
  76. zenml/login/credentials.py +346 -0
  77. zenml/login/credentials_store.py +603 -0
  78. zenml/{new → login/pro}/__init__.py +4 -1
  79. zenml/login/pro/client.py +496 -0
  80. zenml/login/pro/constants.py +34 -0
  81. zenml/{lineage_graph/edge.py → login/pro/models.py} +9 -8
  82. zenml/{zen_server/deploy/terraform/providers → login/pro/organization}/__init__.py +2 -2
  83. zenml/login/pro/organization/client.py +79 -0
  84. zenml/{lineage_graph/node/base_node.py → login/pro/organization/models.py} +13 -12
  85. zenml/{new/steps → login/pro/tenant}/__init__.py +2 -1
  86. zenml/login/pro/tenant/client.py +92 -0
  87. zenml/login/pro/tenant/models.py +174 -0
  88. zenml/login/pro/utils.py +121 -0
  89. zenml/{cli → login}/web_login.py +64 -28
  90. zenml/materializers/__init__.py +2 -0
  91. zenml/materializers/base_materializer.py +43 -9
  92. zenml/materializers/built_in_materializer.py +1 -1
  93. zenml/materializers/uuid_materializer.py +79 -0
  94. zenml/metadata/lazy_load.py +10 -7
  95. zenml/metadata/metadata_types.py +49 -0
  96. zenml/model/lazy_load.py +85 -4
  97. zenml/model/model.py +61 -83
  98. zenml/model/utils.py +47 -118
  99. zenml/models/__init__.py +6 -0
  100. zenml/models/v2/base/base.py +12 -8
  101. zenml/models/v2/base/filter.py +9 -0
  102. zenml/models/v2/core/artifact_version.py +53 -25
  103. zenml/models/v2/core/component.py +54 -19
  104. zenml/models/v2/core/flavor.py +13 -13
  105. zenml/models/v2/core/model.py +4 -1
  106. zenml/models/v2/core/model_version.py +4 -6
  107. zenml/models/v2/core/model_version_artifact.py +3 -1
  108. zenml/models/v2/core/model_version_pipeline_run.py +3 -1
  109. zenml/models/v2/core/pipeline.py +3 -1
  110. zenml/models/v2/core/pipeline_run.py +24 -3
  111. zenml/models/v2/core/run_metadata.py +2 -2
  112. zenml/models/v2/core/run_template.py +3 -1
  113. zenml/models/v2/core/stack.py +7 -3
  114. zenml/models/v2/core/step_run.py +58 -14
  115. zenml/models/v2/misc/auth_models.py +11 -2
  116. zenml/models/v2/misc/server_models.py +2 -4
  117. zenml/orchestrators/base_orchestrator.py +41 -4
  118. zenml/orchestrators/input_utils.py +52 -36
  119. zenml/orchestrators/step_launcher.py +50 -171
  120. zenml/orchestrators/step_run_utils.py +574 -0
  121. zenml/orchestrators/step_runner.py +83 -120
  122. zenml/orchestrators/utils.py +46 -180
  123. zenml/pipelines/__init__.py +3 -16
  124. zenml/{new/pipelines → pipelines}/pipeline_context.py +3 -18
  125. zenml/pipelines/pipeline_decorator.py +34 -60
  126. zenml/{new/pipelines/pipeline.py → pipelines/pipeline_definition.py} +210 -207
  127. zenml/{new/pipelines → pipelines}/run_utils.py +11 -10
  128. zenml/services/local/local_daemon_entrypoint.py +4 -4
  129. zenml/services/service.py +2 -2
  130. zenml/stack/stack.py +3 -108
  131. zenml/stack/stack_component.py +2 -78
  132. zenml/stack/utils.py +26 -14
  133. zenml/stack_deployments/aws_stack_deployment.py +3 -0
  134. zenml/step_operators/step_operator_entrypoint_configuration.py +1 -1
  135. zenml/steps/__init__.py +3 -9
  136. zenml/steps/base_step.py +25 -267
  137. zenml/steps/entrypoint_function_utils.py +2 -80
  138. zenml/{new/steps → steps}/step_context.py +12 -66
  139. zenml/steps/step_decorator.py +42 -89
  140. zenml/steps/step_invocation.py +16 -60
  141. zenml/steps/utils.py +4 -23
  142. zenml/utils/dashboard_utils.py +16 -51
  143. zenml/utils/materializer_utils.py +1 -1
  144. zenml/utils/requirements_utils.py +71 -0
  145. zenml/utils/singleton.py +15 -3
  146. zenml/utils/source_utils.py +39 -2
  147. zenml/utils/typing_utils.py +8 -28
  148. zenml/utils/visualization_utils.py +1 -1
  149. zenml/zen_server/auth.py +44 -39
  150. zenml/zen_server/dashboard/assets/{404-Y50hSt65.js → 404-DT4QRUqN.js} +1 -1
  151. zenml/zen_server/dashboard/assets/@radix-DP6vWzyx.js +85 -0
  152. zenml/zen_server/dashboard/assets/@react-router-BMhZulnd.js +29 -0
  153. zenml/zen_server/dashboard/assets/@reactflow-8U9qNlMR.js +17 -0
  154. zenml/zen_server/dashboard/assets/@tanstack-BUCbhJyH.js +22 -0
  155. zenml/zen_server/dashboard/assets/{AlertDialogDropdownItem-xLR9a1iw.js → AlertDialogDropdownItem-C6N2rGrB.js} +1 -1
  156. zenml/zen_server/dashboard/assets/{CodeSnippet-IxXNxUDa.js → CodeSnippet-CqybNv0k.js} +1 -1
  157. zenml/zen_server/dashboard/assets/{CollapsibleCard-BhutZbBL.js → CollapsibleCard-0r_8G2Lj.js} +1 -1
  158. zenml/zen_server/dashboard/assets/{Commands-Bf-rd1z8.js → Commands-BDjgBQKi.js} +1 -1
  159. zenml/zen_server/dashboard/assets/ComponentBadge-DUiEYJHu.js +1 -0
  160. zenml/zen_server/dashboard/assets/ComponentFallbackDialog-BFoH5K4V.js +1 -0
  161. zenml/zen_server/dashboard/assets/ComponentIcon-CAIoUis2.js +1 -0
  162. zenml/zen_server/dashboard/assets/{CopyButton-DcFHidFJ.js → CopyButton-C745BrKi.js} +1 -1
  163. zenml/zen_server/dashboard/assets/{CsvVizualization-QSbjrfxw.js → CsvVizualization-PpAq0CeZ.js} +5 -5
  164. zenml/zen_server/dashboard/assets/{DialogItem-Cd3HqST4.js → DialogItem-DcVCZEew.js} +1 -1
  165. zenml/zen_server/dashboard/assets/{DisplayDate-DkCy54Bp.js → DisplayDate-BeXgUG_C.js} +1 -1
  166. zenml/zen_server/dashboard/assets/{EmptyState-Cs3DEmso.js → EmptyState-DeK7H4pr.js} +1 -1
  167. zenml/zen_server/dashboard/assets/{Error-BhwdmqK7.js → Error-BMlzibXj.js} +1 -1
  168. zenml/zen_server/dashboard/assets/{Helpbox-0pBpTwTm.js → Helpbox-BLf40fLV.js} +1 -1
  169. zenml/zen_server/dashboard/assets/{Infobox-BTK_EUKT.js → Infobox-BwisKifi.js} +1 -1
  170. zenml/zen_server/dashboard/assets/{InlineAvatar-CA3DFMcM.js → InlineAvatar-jEgodSgX.js} +1 -1
  171. zenml/zen_server/dashboard/assets/{Lock-CmIn0szs.js → Lock-3lLt1ih0.js} +1 -1
  172. zenml/zen_server/dashboard/assets/MarkdownVisualization-8O9kTr-2.js +14 -0
  173. zenml/zen_server/dashboard/assets/{NumberBox-CrN0_kqI.js → NumberBox-T9eELfLZ.js} +1 -1
  174. zenml/zen_server/dashboard/assets/{Partials-QLOZw624.js → Partials-YPBB3V4q.js} +1 -1
  175. zenml/zen_server/dashboard/assets/{PasswordChecker-DE71J_3F.js → PasswordChecker-CW0kqY0W.js} +1 -1
  176. zenml/zen_server/dashboard/assets/{ProviderIcon-C16CCIN4.js → ProviderIcon-Bb3Xha5A.js} +1 -1
  177. zenml/zen_server/dashboard/assets/{ProviderRadio-D3FuCHf3.js → ProviderRadio-BROY1700.js} +1 -1
  178. zenml/zen_server/dashboard/assets/RunSelector-DCiL3M1c.js +1 -0
  179. zenml/zen_server/dashboard/assets/SearchField-DfUiGFVd.js +1 -0
  180. zenml/zen_server/dashboard/assets/{SecretTooltip-BaMwHF-Q.js → SecretTooltip-C_qByGWB.js} +1 -1
  181. zenml/zen_server/dashboard/assets/{SetPassword-DuIC65H9.js → SetPassword-7pRB00El.js} +1 -1
  182. zenml/zen_server/dashboard/assets/{Tick-DJTCF0Re.js → Tick-CykQFPj2.js} +1 -1
  183. zenml/zen_server/dashboard/assets/{UpdatePasswordSchemas-CUm-DMpw.js → UpdatePasswordSchemas-DckMEkFf.js} +1 -1
  184. zenml/zen_server/dashboard/assets/{UsageReason-CKw0juLF.js → UsageReason-DVceN14P.js} +1 -1
  185. zenml/zen_server/dashboard/assets/{WizardFooter-Cv9ApYWU.js → WizardFooter-CW0Cvd70.js} +1 -1
  186. zenml/zen_server/dashboard/assets/{check-circle-DOoS4yhF.js → check-circle-Dwxliy1Z.js} +1 -1
  187. zenml/zen_server/dashboard/assets/{chevron-down-Cwb-W_B_.js → chevron-down-8wLBS5pQ.js} +1 -1
  188. zenml/zen_server/dashboard/assets/{chevron-right-double-c9H46Kl8.js → chevron-right-double-DoD8iXWM.js} +1 -1
  189. zenml/zen_server/dashboard/assets/{cloud-only-BB4BVa6E.js → cloud-only-B-s_HMDm.js} +1 -1
  190. zenml/zen_server/dashboard/assets/{code-browser-BJYErIjr.js → code-browser-CZUQs3Wa.js} +1 -1
  191. zenml/zen_server/dashboard/assets/{copy-CaGlDsUy.js → copy-CaSMXwiU.js} +1 -1
  192. zenml/zen_server/dashboard/assets/{create-stack-F29xAUEx.js → create-stack-CEmaPZ4c.js} +1 -1
  193. zenml/zen_server/dashboard/assets/delete-run-D-LKbGyz.js +1 -0
  194. zenml/zen_server/dashboard/assets/{docker-BFAFXr2_.js → docker-BFNgg-z3.js} +1 -1
  195. zenml/zen_server/dashboard/assets/{dots-horizontal-C6K59vUm.js → dots-horizontal-DK5Duzx4.js} +1 -1
  196. zenml/zen_server/dashboard/assets/{form-schemas-BKXwSDK2.js → form-schemas-1AyOCx90.js} +1 -1
  197. zenml/zen_server/dashboard/assets/{gcp-Dj6ntk0L.js → gcp-7M2Yf3ZK.js} +1 -1
  198. zenml/zen_server/dashboard/assets/{help-CwN931fX.js → help-Dam461dC.js} +1 -1
  199. zenml/zen_server/dashboard/assets/{index-5GJ5ysEZ.js → index-BVJ8n2-j.js} +1 -1
  200. zenml/zen_server/dashboard/assets/index-Bpmj40BI.js +1 -0
  201. zenml/zen_server/dashboard/assets/index-CbU4Ln_E.css +1 -0
  202. zenml/zen_server/dashboard/assets/{index-D-mtoBj3.js → index-DKPhqP2B.js} +1 -1
  203. zenml/zen_server/dashboard/assets/index-QQb7wQEC.js +55 -0
  204. zenml/zen_server/dashboard/assets/index.esm-cuVep_NJ.js +1 -0
  205. zenml/zen_server/dashboard/assets/inter-cyrillic-400-normal-BLGc9T1a.woff2 +0 -0
  206. zenml/zen_server/dashboard/assets/inter-cyrillic-400-normal-ZzOtrSSW.woff +0 -0
  207. zenml/zen_server/dashboard/assets/inter-cyrillic-500-normal-D4Vwzodn.woff2 +0 -0
  208. zenml/zen_server/dashboard/assets/inter-cyrillic-500-normal-DH2hs3aW.woff +0 -0
  209. zenml/zen_server/dashboard/assets/inter-cyrillic-600-normal-BGBWG807.woff2 +0 -0
  210. zenml/zen_server/dashboard/assets/inter-cyrillic-600-normal-BuzJQFbW.woff +0 -0
  211. zenml/zen_server/dashboard/assets/inter-cyrillic-ext-400-normal-BPnxn4xp.woff +0 -0
  212. zenml/zen_server/dashboard/assets/inter-cyrillic-ext-400-normal-Dc4VJyIJ.woff2 +0 -0
  213. zenml/zen_server/dashboard/assets/inter-cyrillic-ext-500-normal-BShVwWPj.woff2 +0 -0
  214. zenml/zen_server/dashboard/assets/inter-cyrillic-ext-500-normal-CUiC4oBV.woff +0 -0
  215. zenml/zen_server/dashboard/assets/inter-cyrillic-ext-600-normal-Bt9VVOA-.woff +0 -0
  216. zenml/zen_server/dashboard/assets/inter-cyrillic-ext-600-normal-CaqZN2hq.woff2 +0 -0
  217. zenml/zen_server/dashboard/assets/inter-greek-400-normal-BZzXV7-1.woff +0 -0
  218. zenml/zen_server/dashboard/assets/inter-greek-400-normal-DxZsaF_h.woff2 +0 -0
  219. zenml/zen_server/dashboard/assets/inter-greek-500-normal-CeQXL5ds.woff2 +0 -0
  220. zenml/zen_server/dashboard/assets/inter-greek-500-normal-d_eO-yCQ.woff +0 -0
  221. zenml/zen_server/dashboard/assets/inter-greek-600-normal-CwicyhtI.woff +0 -0
  222. zenml/zen_server/dashboard/assets/inter-greek-600-normal-Dhlb-90d.woff2 +0 -0
  223. zenml/zen_server/dashboard/assets/inter-greek-ext-400-normal-Bput3-QP.woff2 +0 -0
  224. zenml/zen_server/dashboard/assets/inter-greek-ext-400-normal-DCpCPQOf.woff +0 -0
  225. zenml/zen_server/dashboard/assets/inter-greek-ext-500-normal-B6guLgqG.woff2 +0 -0
  226. zenml/zen_server/dashboard/assets/inter-greek-ext-500-normal-M2hEX8vc.woff +0 -0
  227. zenml/zen_server/dashboard/assets/inter-greek-ext-600-normal-C9WLioJ8.woff +0 -0
  228. zenml/zen_server/dashboard/assets/inter-greek-ext-600-normal-Cnui8OiR.woff2 +0 -0
  229. zenml/zen_server/dashboard/assets/inter-latin-400-normal-BOOGhInR.woff2 +0 -0
  230. zenml/zen_server/dashboard/assets/inter-latin-400-normal-gitzw0hO.woff +0 -0
  231. zenml/zen_server/dashboard/assets/inter-latin-500-normal-D2bGa7uu.woff2 +0 -0
  232. zenml/zen_server/dashboard/assets/inter-latin-500-normal-deR1Tlfd.woff +0 -0
  233. zenml/zen_server/dashboard/assets/inter-latin-600-normal-B5cFAncS.woff +0 -0
  234. zenml/zen_server/dashboard/assets/inter-latin-600-normal-D273HNI0.woff2 +0 -0
  235. zenml/zen_server/dashboard/assets/inter-latin-ext-400-normal-C1t-h-pH.woff +0 -0
  236. zenml/zen_server/dashboard/assets/inter-latin-ext-400-normal-hnt3BR84.woff2 +0 -0
  237. zenml/zen_server/dashboard/assets/inter-latin-ext-500-normal-CIS2RHJS.woff2 +0 -0
  238. zenml/zen_server/dashboard/assets/inter-latin-ext-500-normal-UMdmhHu2.woff +0 -0
  239. zenml/zen_server/dashboard/assets/inter-latin-ext-600-normal-BnYJhD27.woff2 +0 -0
  240. zenml/zen_server/dashboard/assets/inter-latin-ext-600-normal-CAF0vJDd.woff +0 -0
  241. zenml/zen_server/dashboard/assets/inter-vietnamese-400-normal-BUNmGMP1.woff +0 -0
  242. zenml/zen_server/dashboard/assets/inter-vietnamese-400-normal-DMkecbls.woff2 +0 -0
  243. zenml/zen_server/dashboard/assets/inter-vietnamese-500-normal-DOriooB6.woff2 +0 -0
  244. zenml/zen_server/dashboard/assets/inter-vietnamese-500-normal-DQPw2Hwd.woff +0 -0
  245. zenml/zen_server/dashboard/assets/inter-vietnamese-600-normal-Cc8MFFhd.woff2 +0 -0
  246. zenml/zen_server/dashboard/assets/inter-vietnamese-600-normal-Cm6aH8_k.woff +0 -0
  247. zenml/zen_server/dashboard/assets/{kubernetes-BjbR6D-1.js → kubernetes--g7r02Zu.js} +1 -1
  248. zenml/zen_server/dashboard/assets/{layout-Dru15_XR.js → layout-DCSYN7-C.js} +1 -1
  249. zenml/zen_server/dashboard/assets/{link-external-BT2L8hAQ.js → link-external-CBEk6kEG.js} +1 -1
  250. zenml/zen_server/dashboard/assets/{login-mutation-ax6iL2Mb.js → login-mutation-DTcAFP1l.js} +1 -1
  251. zenml/zen_server/dashboard/assets/{logs-GiDJXbLS.js → logs-D5bdJGur.js} +1 -1
  252. zenml/zen_server/dashboard/assets/not-found-Cc-JkRH2.js +1 -0
  253. zenml/zen_server/dashboard/assets/{package-DYKZ5jKW.js → package-Cs35Szwh.js} +1 -1
  254. zenml/zen_server/dashboard/assets/{page-HkVBdZl6.js → page-9yplj5JT.js} +1 -1
  255. zenml/zen_server/dashboard/assets/{page-uORspyRu.js → page-B-y2XKIc.js} +1 -1
  256. zenml/zen_server/dashboard/assets/page-BBpOxVcY.js +1 -0
  257. zenml/zen_server/dashboard/assets/{page-BDg1F-Ug.js → page-BQQKaabe.js} +2 -2
  258. zenml/zen_server/dashboard/assets/page-BRInM1Lg.js +1 -0
  259. zenml/zen_server/dashboard/assets/{page-CvKnNK1S.js → page-BjjlMk7s.js} +1 -1
  260. zenml/zen_server/dashboard/assets/{page-BukXK1Aa.js → page-Bvd7YH2A.js} +1 -1
  261. zenml/zen_server/dashboard/assets/{page-DcTjHmYZ.js → page-C0N5q3l7.js} +1 -1
  262. zenml/zen_server/dashboard/assets/page-CT3Nep8W.js +1 -0
  263. zenml/zen_server/dashboard/assets/{page-DuqYMYmH.js → page-C_f47pBf.js} +1 -1
  264. zenml/zen_server/dashboard/assets/{page-DRfcRK1w.js → page-ClUVkl-O.js} +1 -1
  265. zenml/zen_server/dashboard/assets/page-Cmv8C_yM.js +3 -0
  266. zenml/zen_server/dashboard/assets/{page-p0BhSAWx.js → page-CyN2bdWG.js} +1 -1
  267. zenml/zen_server/dashboard/assets/page-CzzXH4fs.js +1 -0
  268. zenml/zen_server/dashboard/assets/{page-6mfzecin.js → page-DH_Z7iW1.js} +1 -1
  269. zenml/zen_server/dashboard/assets/{page-8kYmrh0B.js → page-DIOXwhiD.js} +1 -1
  270. zenml/zen_server/dashboard/assets/{page-BXarY9K2.js → page-DLixvR-7.js} +1 -1
  271. zenml/zen_server/dashboard/assets/page-DTlGjgnG.js +1 -0
  272. zenml/zen_server/dashboard/assets/page-Dbpl86h0.js +1 -0
  273. zenml/zen_server/dashboard/assets/{page-MAXyfXBq.js → page-Ddgy6kDS.js} +1 -1
  274. zenml/zen_server/dashboard/assets/page-DtCAfBLy.js +9 -0
  275. zenml/zen_server/dashboard/assets/{page-CKHNAq7z.js → page-Dx16z7nA.js} +1 -1
  276. zenml/zen_server/dashboard/assets/{page-DMSLXKGT.js → page-DzpVUZ8f.js} +1 -1
  277. zenml/zen_server/dashboard/assets/page-McUyYbo1.js +1 -0
  278. zenml/zen_server/dashboard/assets/{page-miU2rhYG.js → page-N4qoPHKb.js} +1 -1
  279. zenml/zen_server/dashboard/assets/page-T1P3RyAR.js +1 -0
  280. zenml/zen_server/dashboard/assets/{page-3qPX9WYH.js → page-bKaULTGG.js} +1 -1
  281. zenml/zen_server/dashboard/assets/page-sbXUJy9t.js +1 -0
  282. zenml/zen_server/dashboard/assets/{persist-CfJMar_k.js → persist-CP0JmYZ4.js} +1 -1
  283. zenml/zen_server/dashboard/assets/{persist-BxIR2XZs.js → persist-DNb5cdrU.js} +1 -1
  284. zenml/zen_server/dashboard/assets/{plus-Bc8eLSDM.js → plus-C9IxgN2M.js} +1 -1
  285. zenml/zen_server/dashboard/assets/{refresh-hfgWPeto.js → refresh-BVu22P_C.js} +1 -1
  286. zenml/zen_server/dashboard/assets/{rocket-SESCGQXm.js → rocket-CONEmRmB.js} +1 -1
  287. zenml/zen_server/dashboard/assets/{sharedSchema-vub0rii3.js → sharedSchema-TMLu-nYQ.js} +1 -1
  288. zenml/zen_server/dashboard/assets/stack-detail-query-xmYxSsUY.js +1 -0
  289. zenml/zen_server/dashboard/assets/{tick-circle-m-hJG8i9.js → tick-circle-CM1ZScbQ.js} +1 -1
  290. zenml/zen_server/dashboard/assets/{trash-DUWZWzse.js → trash-DkJHMOg7.js} +1 -1
  291. zenml/zen_server/dashboard/assets/{update-server-settings-mutation-FGVP7X2U.js → update-server-settings-mutation-DsU8cNVl.js} +1 -1
  292. zenml/zen_server/dashboard/assets/{url-CbAPzsmT.js → url-D5le3J4q.js} +1 -1
  293. zenml/zen_server/dashboard/assets/zod-D89GC_vc.js +1 -0
  294. zenml/zen_server/dashboard/index.html +7 -7
  295. zenml/zen_server/deploy/__init__.py +7 -16
  296. zenml/zen_server/deploy/base_provider.py +46 -73
  297. zenml/zen_server/deploy/{local → daemon}/__init__.py +3 -3
  298. zenml/zen_server/deploy/{local/local_provider.py → daemon/daemon_provider.py} +44 -63
  299. zenml/zen_server/deploy/{local/local_zen_server.py → daemon/daemon_zen_server.py} +50 -28
  300. zenml/zen_server/deploy/deployer.py +90 -171
  301. zenml/zen_server/deploy/deployment.py +20 -12
  302. zenml/zen_server/deploy/docker/docker_provider.py +9 -28
  303. zenml/zen_server/deploy/docker/docker_zen_server.py +19 -9
  304. zenml/zen_server/deploy/helm/Chart.yaml +1 -1
  305. zenml/zen_server/deploy/helm/README.md +2 -2
  306. zenml/zen_server/exceptions.py +11 -0
  307. zenml/zen_server/feature_gate/zenml_cloud_feature_gate.py +1 -1
  308. zenml/zen_server/jwt.py +9 -9
  309. zenml/zen_server/routers/artifact_version_endpoints.py +1 -1
  310. zenml/zen_server/routers/auth_endpoints.py +30 -8
  311. zenml/zen_server/routers/runs_endpoints.py +0 -28
  312. zenml/zen_server/routers/stack_components_endpoints.py +1 -1
  313. zenml/zen_server/routers/workspaces_endpoints.py +1 -1
  314. zenml/zen_server/template_execution/runner_entrypoint_configuration.py +7 -4
  315. zenml/zen_server/template_execution/utils.py +8 -63
  316. zenml/zen_server/utils.py +67 -69
  317. zenml/zen_server/zen_server_api.py +107 -17
  318. zenml/zen_stores/base_zen_store.py +4 -51
  319. zenml/zen_stores/migrations/versions/0.67.0_release.py +23 -0
  320. zenml/zen_stores/migrations/versions/0.68.0_release.py +23 -0
  321. zenml/zen_stores/migrations/versions/0.68.1_release.py +23 -0
  322. zenml/zen_stores/migrations/versions/1d8f30c54477_migrate_to_new_.py +124 -0
  323. zenml/zen_stores/migrations/versions/c22561cbb3a9_add_artifact_unique_constraints.py +86 -0
  324. zenml/zen_stores/rest_zen_store.py +325 -147
  325. zenml/zen_stores/schemas/api_key_schemas.py +9 -4
  326. zenml/zen_stores/schemas/artifact_schemas.py +21 -2
  327. zenml/zen_stores/schemas/artifact_visualization_schemas.py +1 -1
  328. zenml/zen_stores/schemas/component_schemas.py +49 -6
  329. zenml/zen_stores/schemas/device_schemas.py +9 -4
  330. zenml/zen_stores/schemas/flavor_schemas.py +1 -1
  331. zenml/zen_stores/schemas/model_schemas.py +1 -1
  332. zenml/zen_stores/schemas/pipeline_run_schemas.py +12 -4
  333. zenml/zen_stores/schemas/service_schemas.py +1 -1
  334. zenml/zen_stores/schemas/step_run_schemas.py +3 -3
  335. zenml/zen_stores/schemas/trigger_schemas.py +1 -1
  336. zenml/zen_stores/sql_zen_store.py +422 -145
  337. zenml/zen_stores/template_utils.py +3 -1
  338. {zenml_nightly-0.66.0.dev20240927.dist-info → zenml_nightly-0.68.1.dev20241102.dist-info}/METADATA +20 -18
  339. {zenml_nightly-0.66.0.dev20240927.dist-info → zenml_nightly-0.68.1.dev20241102.dist-info}/RECORD +344 -506
  340. {zenml_nightly-0.66.0.dev20240927.dist-info → zenml_nightly-0.68.1.dev20241102.dist-info}/WHEEL +1 -1
  341. zenml/api.py +0 -60
  342. zenml/cli/stack_recipes.py +0 -469
  343. zenml/lineage_graph/__init__.py +0 -34
  344. zenml/lineage_graph/lineage_graph.py +0 -244
  345. zenml/lineage_graph/node/__init__.py +0 -32
  346. zenml/lineage_graph/node/artifact_node.py +0 -51
  347. zenml/lineage_graph/node/step_node.py +0 -41
  348. zenml/model/model_version.py +0 -38
  349. zenml/new/pipelines/code_archive.py +0 -157
  350. zenml/new/pipelines/pipeline_decorator.py +0 -118
  351. zenml/new/steps/step_decorator.py +0 -176
  352. zenml/pipelines/base_pipeline.py +0 -273
  353. zenml/post_execution/__init__.py +0 -30
  354. zenml/post_execution/pipeline.py +0 -55
  355. zenml/post_execution/pipeline_run.py +0 -55
  356. zenml/services/terraform/__init__.py +0 -14
  357. zenml/services/terraform/terraform_service.py +0 -441
  358. zenml/steps/external_artifact.py +0 -26
  359. zenml/steps/step_environment.py +0 -108
  360. zenml/steps/step_output.py +0 -36
  361. zenml/utils/mlstacks_utils.py +0 -635
  362. zenml/utils/terraform_utils.py +0 -43
  363. zenml/zen_server/dashboard/assets/@radix-DnFH_oo1.js +0 -85
  364. zenml/zen_server/dashboard/assets/@react-router-APVeuk-U.js +0 -29
  365. zenml/zen_server/dashboard/assets/@reactflow-ytavUpwh.js +0 -17
  366. zenml/zen_server/dashboard/assets/@tanstack-QbMbTrh5.js +0 -22
  367. zenml/zen_server/dashboard/assets/ComponentBadge-gKR1OIwG.js +0 -1
  368. zenml/zen_server/dashboard/assets/ExecutionStatus-D6r6aK8J.js +0 -1
  369. zenml/zen_server/dashboard/assets/MarkdownVisualization-DS05sfBm.js +0 -14
  370. zenml/zen_server/dashboard/assets/SearchField-BzmfxS0L.js +0 -1
  371. zenml/zen_server/dashboard/assets/all-pipeline-runs-query-BA3R2Sey.js +0 -1
  372. zenml/zen_server/dashboard/assets/delete-run-CP0pcJ3U.js +0 -1
  373. zenml/zen_server/dashboard/assets/index-BhJ6ZJxv.css +0 -1
  374. zenml/zen_server/dashboard/assets/index-Ci0nJ8EZ.js +0 -55
  375. zenml/zen_server/dashboard/assets/index.esm-BE1uqCX5.js +0 -1
  376. zenml/zen_server/dashboard/assets/inter-cyrillic-400-normal-Df6ckaLK.woff2 +0 -0
  377. zenml/zen_server/dashboard/assets/inter-cyrillic-400-normal-JrS_4yms.woff +0 -0
  378. zenml/zen_server/dashboard/assets/inter-cyrillic-500-normal-BRrLR67x.woff2 +0 -0
  379. zenml/zen_server/dashboard/assets/inter-cyrillic-500-normal-DskEQOpE.woff +0 -0
  380. zenml/zen_server/dashboard/assets/inter-cyrillic-600-normal-DDpWG8g5.woff2 +0 -0
  381. zenml/zen_server/dashboard/assets/inter-cyrillic-600-normal-iz1--dBq.woff +0 -0
  382. zenml/zen_server/dashboard/assets/inter-cyrillic-ext-400-normal-CzG7Kr3z.woff +0 -0
  383. zenml/zen_server/dashboard/assets/inter-cyrillic-ext-400-normal-tyfMZHQw.woff2 +0 -0
  384. zenml/zen_server/dashboard/assets/inter-cyrillic-ext-500-normal-DOnSzjnx.woff2 +0 -0
  385. zenml/zen_server/dashboard/assets/inter-cyrillic-ext-500-normal-Xebo2OyJ.woff +0 -0
  386. zenml/zen_server/dashboard/assets/inter-cyrillic-ext-600-normal-DpA2xaRd.woff2 +0 -0
  387. zenml/zen_server/dashboard/assets/inter-cyrillic-ext-600-normal-KAwcVx6H.woff +0 -0
  388. zenml/zen_server/dashboard/assets/inter-greek-400-normal-DQXyrmoy.woff2 +0 -0
  389. zenml/zen_server/dashboard/assets/inter-greek-400-normal-DvIPHDQ7.woff +0 -0
  390. zenml/zen_server/dashboard/assets/inter-greek-500-normal-BjpBGs91.woff +0 -0
  391. zenml/zen_server/dashboard/assets/inter-greek-500-normal-CmOavsDc.woff2 +0 -0
  392. zenml/zen_server/dashboard/assets/inter-greek-600-normal-B-l8Lzzd.woff2 +0 -0
  393. zenml/zen_server/dashboard/assets/inter-greek-600-normal-BLZsI-P3.woff +0 -0
  394. zenml/zen_server/dashboard/assets/inter-greek-ext-400-normal-CIdlr5YK.woff2 +0 -0
  395. zenml/zen_server/dashboard/assets/inter-greek-ext-400-normal-_Rr29XE2.woff +0 -0
  396. zenml/zen_server/dashboard/assets/inter-greek-ext-500-normal-2pdUafRD.woff2 +0 -0
  397. zenml/zen_server/dashboard/assets/inter-greek-ext-500-normal-Dtavx3qw.woff +0 -0
  398. zenml/zen_server/dashboard/assets/inter-greek-ext-600-normal-BmtRFZgT.woff +0 -0
  399. zenml/zen_server/dashboard/assets/inter-greek-ext-600-normal-CkBLDEl_.woff2 +0 -0
  400. zenml/zen_server/dashboard/assets/inter-latin-400-normal-BT1H-PT_.woff2 +0 -0
  401. zenml/zen_server/dashboard/assets/inter-latin-400-normal-Cdi8t5Mu.woff +0 -0
  402. zenml/zen_server/dashboard/assets/inter-latin-500-normal-D4I8BKCx.woff +0 -0
  403. zenml/zen_server/dashboard/assets/inter-latin-500-normal-kWhwEdDH.woff2 +0 -0
  404. zenml/zen_server/dashboard/assets/inter-latin-600-normal-B2Ssfs8e.woff2 +0 -0
  405. zenml/zen_server/dashboard/assets/inter-latin-600-normal-Dbvh0wvx.woff +0 -0
  406. zenml/zen_server/dashboard/assets/inter-latin-ext-400-normal-8tIzm-yw.woff +0 -0
  407. zenml/zen_server/dashboard/assets/inter-latin-ext-400-normal-D3W-OpO-.woff2 +0 -0
  408. zenml/zen_server/dashboard/assets/inter-latin-ext-500-normal-B9u8Q_zH.woff2 +0 -0
  409. zenml/zen_server/dashboard/assets/inter-latin-ext-500-normal-SuUkSNTU.woff +0 -0
  410. zenml/zen_server/dashboard/assets/inter-latin-ext-600-normal-Dg0Bk0Yr.woff +0 -0
  411. zenml/zen_server/dashboard/assets/inter-latin-ext-600-normal-ao35dkSb.woff2 +0 -0
  412. zenml/zen_server/dashboard/assets/inter-vietnamese-400-normal-Cnt0N5Vm.woff2 +0 -0
  413. zenml/zen_server/dashboard/assets/inter-vietnamese-400-normal-DIOGfGLL.woff +0 -0
  414. zenml/zen_server/dashboard/assets/inter-vietnamese-500-normal-0i6yoQMg.woff +0 -0
  415. zenml/zen_server/dashboard/assets/inter-vietnamese-500-normal-5IkPJ6Nk.woff2 +0 -0
  416. zenml/zen_server/dashboard/assets/inter-vietnamese-600-normal-BQ_dbMbg.woff +0 -0
  417. zenml/zen_server/dashboard/assets/inter-vietnamese-600-normal-DjnxGF-L.woff2 +0 -0
  418. zenml/zen_server/dashboard/assets/not-found-DbjllLY_.js +0 -1
  419. zenml/zen_server/dashboard/assets/page-B1n7_W7z.js +0 -1
  420. zenml/zen_server/dashboard/assets/page-BZZhLo2u.js +0 -1
  421. zenml/zen_server/dashboard/assets/page-Bbf_oBjn.js +0 -1
  422. zenml/zen_server/dashboard/assets/page-BjjuBvZG.js +0 -9
  423. zenml/zen_server/dashboard/assets/page-CHaQkFK5.js +0 -1
  424. zenml/zen_server/dashboard/assets/page-CS0SYFK8.js +0 -1
  425. zenml/zen_server/dashboard/assets/page-DGM1CbYT.js +0 -2
  426. zenml/zen_server/dashboard/assets/page-DOmIZ2ra.js +0 -1
  427. zenml/zen_server/dashboard/assets/page-DYVmJ9_w.js +0 -3
  428. zenml/zen_server/dashboard/assets/page-Dwow2doB.js +0 -1
  429. zenml/zen_server/dashboard/assets/stack-detail-query-DQcyzG-2.js +0 -1
  430. zenml/zen_server/dashboard/assets/zod-uFd1wBcd.js +0 -1
  431. zenml/zen_server/dashboard_legacy/_redirects +0 -1
  432. zenml/zen_server/dashboard_legacy/asset-manifest.json +0 -131
  433. zenml/zen_server/dashboard_legacy/favicon.ico +0 -0
  434. zenml/zen_server/dashboard_legacy/index.html +0 -1
  435. zenml/zen_server/dashboard_legacy/manifest.json +0 -25
  436. zenml/zen_server/dashboard_legacy/precache-manifest.6d320abb70db612019dda6c4948e7a90.js +0 -462
  437. zenml/zen_server/dashboard_legacy/robots.txt +0 -2
  438. zenml/zen_server/dashboard_legacy/service-worker.js +0 -39
  439. zenml/zen_server/dashboard_legacy/static/css/2.5b37d44a.chunk.css +0 -16
  440. zenml/zen_server/dashboard_legacy/static/css/2.5b37d44a.chunk.css.map +0 -1
  441. zenml/zen_server/dashboard_legacy/static/css/main.e79dff04.chunk.css +0 -2
  442. zenml/zen_server/dashboard_legacy/static/css/main.e79dff04.chunk.css.map +0 -1
  443. zenml/zen_server/dashboard_legacy/static/js/2.7934458d.chunk.js +0 -3
  444. zenml/zen_server/dashboard_legacy/static/js/2.7934458d.chunk.js.LICENSE.txt +0 -95
  445. zenml/zen_server/dashboard_legacy/static/js/2.7934458d.chunk.js.map +0 -1
  446. zenml/zen_server/dashboard_legacy/static/js/main.fa9299d5.chunk.js +0 -2
  447. zenml/zen_server/dashboard_legacy/static/js/main.fa9299d5.chunk.js.map +0 -1
  448. zenml/zen_server/dashboard_legacy/static/js/runtime-main.bfca2edd.js +0 -2
  449. zenml/zen_server/dashboard_legacy/static/js/runtime-main.bfca2edd.js.map +0 -1
  450. zenml/zen_server/dashboard_legacy/static/media/AlertTriangle.28aee535.svg +0 -5
  451. zenml/zen_server/dashboard_legacy/static/media/ArrowSquareOut.abfb9bc7.svg +0 -5
  452. zenml/zen_server/dashboard_legacy/static/media/Back.86c23a22.svg +0 -4
  453. zenml/zen_server/dashboard_legacy/static/media/BookOpen.5cb101ff.svg +0 -4
  454. zenml/zen_server/dashboard_legacy/static/media/BoundingBox.1eb98717.svg +0 -10
  455. zenml/zen_server/dashboard_legacy/static/media/Burger.9b1c67d7.svg +0 -3
  456. zenml/zen_server/dashboard_legacy/static/media/Cached.2381fb8d.svg +0 -1
  457. zenml/zen_server/dashboard_legacy/static/media/Calendar.356e11c7.svg +0 -3
  458. zenml/zen_server/dashboard_legacy/static/media/ChartBarHorizontal.0247447b.svg +0 -6
  459. zenml/zen_server/dashboard_legacy/static/media/ChartLine.0d79e18d.svg +0 -4
  460. zenml/zen_server/dashboard_legacy/static/media/ChatDots.2e1c9211.svg +0 -6
  461. zenml/zen_server/dashboard_legacy/static/media/Check.dad6beb2.svg +0 -3
  462. zenml/zen_server/dashboard_legacy/static/media/CheckCircleFilled.c19566d0.svg +0 -3
  463. zenml/zen_server/dashboard_legacy/static/media/Checkbox.af50e31e.svg +0 -3
  464. zenml/zen_server/dashboard_legacy/static/media/ChevronDown.f860ce32.svg +0 -3
  465. zenml/zen_server/dashboard_legacy/static/media/ChevronDownLight.6642d756.svg +0 -3
  466. zenml/zen_server/dashboard_legacy/static/media/ChevronLeft.f6edfcdb.svg +0 -3
  467. zenml/zen_server/dashboard_legacy/static/media/CircleCheck.f98fd6ca.svg +0 -1
  468. zenml/zen_server/dashboard_legacy/static/media/Clock.ffc9de95.svg +0 -3
  469. zenml/zen_server/dashboard_legacy/static/media/Close.74e9efbc.svg +0 -5
  470. zenml/zen_server/dashboard_legacy/static/media/CloseWithBorder.6960930a.svg +0 -3
  471. zenml/zen_server/dashboard_legacy/static/media/CloseWithoutBorder.cd6f71df.svg +0 -3
  472. zenml/zen_server/dashboard_legacy/static/media/CloudArrowUp.0aecb235.svg +0 -6
  473. zenml/zen_server/dashboard_legacy/static/media/Code.ef0f33b5.svg +0 -3
  474. zenml/zen_server/dashboard_legacy/static/media/Config.0be63f8a.svg +0 -1
  475. zenml/zen_server/dashboard_legacy/static/media/Connector.9fd46ef1.svg +0 -10
  476. zenml/zen_server/dashboard_legacy/static/media/Copy.36e2112a.svg +0 -1
  477. zenml/zen_server/dashboard_legacy/static/media/Dashboard.d05787e0.svg +0 -3
  478. zenml/zen_server/dashboard_legacy/static/media/Data.b1c3b5f8.svg +0 -3
  479. zenml/zen_server/dashboard_legacy/static/media/Delete.3c361b28.svg +0 -8
  480. zenml/zen_server/dashboard_legacy/static/media/Docs.7541d478.svg +0 -7
  481. zenml/zen_server/dashboard_legacy/static/media/Download.fba04d87.svg +0 -5
  482. zenml/zen_server/dashboard_legacy/static/media/Edit.490eb294.svg +0 -6
  483. zenml/zen_server/dashboard_legacy/static/media/EmptyRightArrow.23749d01.svg +0 -3
  484. zenml/zen_server/dashboard_legacy/static/media/Example.6396cd37.svg +0 -5
  485. zenml/zen_server/dashboard_legacy/static/media/Extension.1394cd4a.svg +0 -3
  486. zenml/zen_server/dashboard_legacy/static/media/Eye.d9e4ee62.svg +0 -4
  487. zenml/zen_server/dashboard_legacy/static/media/Failed.0213c1a0.svg +0 -1
  488. zenml/zen_server/dashboard_legacy/static/media/FileText.1f15bacd.svg +0 -7
  489. zenml/zen_server/dashboard_legacy/static/media/Filter.ab6b9c0d.svg +0 -3
  490. zenml/zen_server/dashboard_legacy/static/media/Folders.12b29887.svg +0 -5
  491. zenml/zen_server/dashboard_legacy/static/media/FunnelFill.6df4c143.svg +0 -3
  492. zenml/zen_server/dashboard_legacy/static/media/GitCommit.7dd9c2aa.svg +0 -5
  493. zenml/zen_server/dashboard_legacy/static/media/GitHub_Logo.cefc2023.png +0 -0
  494. zenml/zen_server/dashboard_legacy/static/media/Graph.2c63a892.svg +0 -11
  495. zenml/zen_server/dashboard_legacy/static/media/History.08329240.svg +0 -3
  496. zenml/zen_server/dashboard_legacy/static/media/Home.0843b0d5.svg +0 -3
  497. zenml/zen_server/dashboard_legacy/static/media/ImageBuilder.ea762d9c.svg +0 -6
  498. zenml/zen_server/dashboard_legacy/static/media/InProgress.304a0edc.svg +0 -1
  499. zenml/zen_server/dashboard_legacy/static/media/Info.9fe10c5c.svg +0 -3
  500. zenml/zen_server/dashboard_legacy/static/media/KeyboardReturn.491afbe3.svg +0 -3
  501. zenml/zen_server/dashboard_legacy/static/media/Link.72bbb55d.svg +0 -4
  502. zenml/zen_server/dashboard_legacy/static/media/Lock.30f5e1fe.svg +0 -5
  503. zenml/zen_server/dashboard_legacy/static/media/Lock2.a769ea52.svg +0 -3
  504. zenml/zen_server/dashboard_legacy/static/media/LockKey.92f21621.svg +0 -6
  505. zenml/zen_server/dashboard_legacy/static/media/Logs.8bf4d005.svg +0 -5
  506. zenml/zen_server/dashboard_legacy/static/media/MinusCircle.4188f418.svg +0 -4
  507. zenml/zen_server/dashboard_legacy/static/media/ModelRegistry.f0de050a.svg +0 -6
  508. zenml/zen_server/dashboard_legacy/static/media/MultiUser.a2ba7c67.svg +0 -10
  509. zenml/zen_server/dashboard_legacy/static/media/PaginationFirst.92628634.svg +0 -4
  510. zenml/zen_server/dashboard_legacy/static/media/PaginationLast.00d3c732.svg +0 -4
  511. zenml/zen_server/dashboard_legacy/static/media/PaginationNext.86158845.svg +0 -3
  512. zenml/zen_server/dashboard_legacy/static/media/PaginationPrev.60c18a88.svg +0 -3
  513. zenml/zen_server/dashboard_legacy/static/media/Pen.f2d831d4.svg +0 -6
  514. zenml/zen_server/dashboard_legacy/static/media/PhotoCamera.179d6d4c.svg +0 -3
  515. zenml/zen_server/dashboard_legacy/static/media/Pipeline.30d298b0.svg +0 -7
  516. zenml/zen_server/dashboard_legacy/static/media/Plus.5aa1c16b.svg +0 -3
  517. zenml/zen_server/dashboard_legacy/static/media/PlusCircle.92d860dd.svg +0 -5
  518. zenml/zen_server/dashboard_legacy/static/media/Repositories.71a36b8c.svg +0 -3
  519. zenml/zen_server/dashboard_legacy/static/media/RightArrow.f30d3871.svg +0 -29
  520. zenml/zen_server/dashboard_legacy/static/media/Rocket.63bf7b9d.svg +0 -3
  521. zenml/zen_server/dashboard_legacy/static/media/RocketLaunch.1bff2b59.svg +0 -6
  522. zenml/zen_server/dashboard_legacy/static/media/Rubik-Medium.c87313aa.ttf +0 -0
  523. zenml/zen_server/dashboard_legacy/static/media/Rubik-Regular.b3d0902b.ttf +0 -0
  524. zenml/zen_server/dashboard_legacy/static/media/Run.daec4fb2.svg +0 -6
  525. zenml/zen_server/dashboard_legacy/static/media/Search.d1afcce5.svg +0 -4
  526. zenml/zen_server/dashboard_legacy/static/media/Settings.59ca73ae.svg +0 -4
  527. zenml/zen_server/dashboard_legacy/static/media/Share2.46c3ff66.svg +0 -3
  528. zenml/zen_server/dashboard_legacy/static/media/SignOut.6aa718c5.svg +0 -3
  529. zenml/zen_server/dashboard_legacy/static/media/SimplePlus.5cf7ec20.svg +0 -3
  530. zenml/zen_server/dashboard_legacy/static/media/SingleUser.bef3a095.svg +0 -4
  531. zenml/zen_server/dashboard_legacy/static/media/SourceCodePro-Regular.b484b32f.ttf +0 -0
  532. zenml/zen_server/dashboard_legacy/static/media/Stack.19b604ac.svg +0 -5
  533. zenml/zen_server/dashboard_legacy/static/media/StackComponent.b1ba90b5.svg +0 -4
  534. zenml/zen_server/dashboard_legacy/static/media/Star.f0c25022.svg +0 -9
  535. zenml/zen_server/dashboard_legacy/static/media/StarOutline.94ca8cd9.svg +0 -3
  536. zenml/zen_server/dashboard_legacy/static/media/Storefront.4b4796fe.svg +0 -3
  537. zenml/zen_server/dashboard_legacy/static/media/Stream.543e3039.svg +0 -3
  538. zenml/zen_server/dashboard_legacy/static/media/SupportAgent.510ddf1f.svg +0 -8
  539. zenml/zen_server/dashboard_legacy/static/media/Table.77033750.svg +0 -6
  540. zenml/zen_server/dashboard_legacy/static/media/Tool.d5785486.svg +0 -3
  541. zenml/zen_server/dashboard_legacy/static/media/UserPlus.741a99d7.svg +0 -6
  542. zenml/zen_server/dashboard_legacy/static/media/Verified.0625b2a0.svg +0 -3
  543. zenml/zen_server/dashboard_legacy/static/media/addNew.4fb6c939.svg +0 -8
  544. zenml/zen_server/dashboard_legacy/static/media/arrowClose.cbd53f3f.svg +0 -3
  545. zenml/zen_server/dashboard_legacy/static/media/arrowOpen.6ceef0af.svg +0 -3
  546. zenml/zen_server/dashboard_legacy/static/media/check_small.30bc0138.svg +0 -3
  547. zenml/zen_server/dashboard_legacy/static/media/circleArrowSideClose.98d6013e.svg +0 -18
  548. zenml/zen_server/dashboard_legacy/static/media/circleArrowSideOpen.63653df6.svg +0 -18
  549. zenml/zen_server/dashboard_legacy/static/media/image.104fd14b.png +0 -0
  550. zenml/zen_server/dashboard_legacy/static/media/imageAddIcon.e83004a9.svg +0 -7
  551. zenml/zen_server/dashboard_legacy/static/media/logo.93333e5c.svg +0 -1
  552. zenml/zen_server/dashboard_legacy/static/media/logo_small.4204397d.svg +0 -3
  553. zenml/zen_server/dashboard_legacy/static/media/logo_white.d4b4414e.svg +0 -20
  554. zenml/zen_server/dashboard_legacy/static/media/notConnected.5e2c8ea7.svg +0 -8
  555. zenml/zen_server/dashboard_legacy/static/media/plugin-fallback.72c294e6.svg +0 -6
  556. zenml/zen_server/dashboard_legacy/static/media/share.bcd998b0.svg +0 -5
  557. zenml/zen_server/dashboard_legacy/static/media/stars.08a9b19a.svg +0 -8
  558. zenml/zen_server/deploy/terraform/__init__.py +0 -41
  559. zenml/zen_server/deploy/terraform/providers/aws_provider.py +0 -61
  560. zenml/zen_server/deploy/terraform/providers/azure_provider.py +0 -59
  561. zenml/zen_server/deploy/terraform/providers/gcp_provider.py +0 -59
  562. zenml/zen_server/deploy/terraform/providers/terraform_provider.py +0 -331
  563. zenml/zen_server/deploy/terraform/recipes/aws/.gitignore +0 -8
  564. zenml/zen_server/deploy/terraform/recipes/aws/helm.tf +0 -20
  565. zenml/zen_server/deploy/terraform/recipes/aws/ingress.tf +0 -30
  566. zenml/zen_server/deploy/terraform/recipes/aws/outputs.tf +0 -7
  567. zenml/zen_server/deploy/terraform/recipes/aws/printf.cmd +0 -2
  568. zenml/zen_server/deploy/terraform/recipes/aws/sql.tf +0 -62
  569. zenml/zen_server/deploy/terraform/recipes/aws/terraform.tf +0 -44
  570. zenml/zen_server/deploy/terraform/recipes/aws/variables.tf +0 -167
  571. zenml/zen_server/deploy/terraform/recipes/aws/vpc.tf +0 -47
  572. zenml/zen_server/deploy/terraform/recipes/aws/zen_server.tf +0 -103
  573. zenml/zen_server/deploy/terraform/recipes/azure/.gitignore +0 -8
  574. zenml/zen_server/deploy/terraform/recipes/azure/helm.tf +0 -20
  575. zenml/zen_server/deploy/terraform/recipes/azure/ingress.tf +0 -30
  576. zenml/zen_server/deploy/terraform/recipes/azure/key_vault.tf +0 -73
  577. zenml/zen_server/deploy/terraform/recipes/azure/outputs.tf +0 -7
  578. zenml/zen_server/deploy/terraform/recipes/azure/printf.cmd +0 -2
  579. zenml/zen_server/deploy/terraform/recipes/azure/rg.tf +0 -36
  580. zenml/zen_server/deploy/terraform/recipes/azure/sql.tf +0 -65
  581. zenml/zen_server/deploy/terraform/recipes/azure/terraform.tf +0 -52
  582. zenml/zen_server/deploy/terraform/recipes/azure/variables.tf +0 -176
  583. zenml/zen_server/deploy/terraform/recipes/azure/zen_server.tf +0 -103
  584. zenml/zen_server/deploy/terraform/recipes/gcp/.gitignore +0 -8
  585. zenml/zen_server/deploy/terraform/recipes/gcp/helm.tf +0 -20
  586. zenml/zen_server/deploy/terraform/recipes/gcp/ingress.tf +0 -30
  587. zenml/zen_server/deploy/terraform/recipes/gcp/outputs.tf +0 -7
  588. zenml/zen_server/deploy/terraform/recipes/gcp/printf.cmd +0 -2
  589. zenml/zen_server/deploy/terraform/recipes/gcp/sql.tf +0 -64
  590. zenml/zen_server/deploy/terraform/recipes/gcp/terraform.tf +0 -44
  591. zenml/zen_server/deploy/terraform/recipes/gcp/variables.tf +0 -171
  592. zenml/zen_server/deploy/terraform/recipes/gcp/zen_server.tf +0 -114
  593. zenml/zen_server/deploy/terraform/terraform_zen_server.py +0 -246
  594. /zenml/{new/pipelines → pipelines}/build_utils.py +0 -0
  595. /zenml/{new/steps → steps}/decorated_step.py +0 -0
  596. {zenml_nightly-0.66.0.dev20240927.dist-info → zenml_nightly-0.68.1.dev20241102.dist-info}/LICENSE +0 -0
  597. {zenml_nightly-0.66.0.dev20240927.dist-info → zenml_nightly-0.68.1.dev20241102.dist-info}/entry_points.txt +0 -0
zenml/cli/stack.py CHANGED
@@ -14,12 +14,10 @@
14
14
  """CLI for manipulating ZenML local and global config file."""
15
15
 
16
16
  import getpass
17
- import os
18
17
  import re
19
18
  import time
20
19
  import webbrowser
21
20
  from datetime import datetime
22
- from pathlib import Path
23
21
  from typing import (
24
22
  TYPE_CHECKING,
25
23
  Any,
@@ -46,23 +44,14 @@ from zenml.cli.cli import TagGroup, cli
46
44
  from zenml.cli.text_utils import OldSchoolMarkdownHeading
47
45
  from zenml.cli.utils import (
48
46
  _component_display_name,
49
- confirmation,
50
- declare,
51
- error,
52
47
  is_sorted_or_filtered,
53
48
  list_options,
54
49
  print_model_url,
55
50
  print_page_info,
56
51
  print_stacks_table,
57
- verify_mlstacks_prerequisites_installation,
58
52
  )
59
53
  from zenml.client import Client
60
54
  from zenml.console import console
61
- from zenml.constants import (
62
- ALPHA_MESSAGE,
63
- MLSTACKS_SUPPORTED_STACK_COMPONENTS,
64
- STACK_RECIPE_MODULAR_RECIPES,
65
- )
66
55
  from zenml.enums import (
67
56
  CliCategories,
68
57
  StackComponentType,
@@ -70,9 +59,7 @@ from zenml.enums import (
70
59
  )
71
60
  from zenml.exceptions import (
72
61
  IllegalOperationError,
73
- ProvisioningError,
74
62
  )
75
- from zenml.io.fileio import rmtree
76
63
  from zenml.logger import get_logger
77
64
  from zenml.models import (
78
65
  ComponentInfo,
@@ -88,17 +75,8 @@ from zenml.models.v2.core.service_connector import (
88
75
  from zenml.service_connectors.service_connector_utils import (
89
76
  get_resources_options_from_resource_model_for_full_stack,
90
77
  )
78
+ from zenml.utils import requirements_utils
91
79
  from zenml.utils.dashboard_utils import get_component_url, get_stack_url
92
- from zenml.utils.io_utils import create_dir_recursive_if_not_exists
93
- from zenml.utils.mlstacks_utils import (
94
- convert_click_params_to_mlstacks_primitives,
95
- convert_mlstacks_primitives_to_dicts,
96
- deploy_mlstacks_stack,
97
- get_stack_spec_file_path,
98
- stack_exists,
99
- stack_spec_exists,
100
- verify_spec_and_tf_files_exist,
101
- )
102
80
  from zenml.utils.yaml_utils import read_yaml, write_yaml
103
81
 
104
82
  if TYPE_CHECKING:
@@ -451,7 +429,7 @@ def register_stack(
451
429
  object_type=component_type.value.replace("_", " "),
452
430
  choices=[
453
431
  [
454
- component.flavor,
432
+ component.flavor_name,
455
433
  component.name,
456
434
  component.configuration or "",
457
435
  component.connector_resource_id,
@@ -990,21 +968,11 @@ def list_stacks(ctx: click.Context, **kwargs: Any) -> None:
990
968
  type=click.STRING,
991
969
  required=False,
992
970
  )
993
- @click.option(
994
- "--outputs",
995
- "-o",
996
- is_flag=True,
997
- default=False,
998
- help="Include the outputs from mlstacks deployments.",
999
- )
1000
- def describe_stack(
1001
- stack_name_or_id: Optional[str] = None, outputs: bool = False
1002
- ) -> None:
971
+ def describe_stack(stack_name_or_id: Optional[str] = None) -> None:
1003
972
  """Show details about a named stack or the active stack.
1004
973
 
1005
974
  Args:
1006
975
  stack_name_or_id: Name of the stack to describe.
1007
- outputs: Include the outputs from mlstacks deployments.
1008
976
  """
1009
977
  client = Client()
1010
978
 
@@ -1020,8 +988,6 @@ def describe_stack(
1020
988
  stack=stack_,
1021
989
  active=stack_.id == client.active_stack_model.id,
1022
990
  )
1023
- if outputs:
1024
- cli_utils.print_stack_outputs(stack_)
1025
991
 
1026
992
  print_model_url(get_stack_url(stack_))
1027
993
 
@@ -1126,51 +1092,6 @@ def get_active_stack() -> None:
1126
1092
  cli_utils.error(str(err))
1127
1093
 
1128
1094
 
1129
- @stack.command("up")
1130
- def up_stack() -> None:
1131
- """Provisions resources for the active stack."""
1132
- stack_ = Client().active_stack
1133
-
1134
- cli_utils.declare(
1135
- f"Provisioning resources for active stack '{stack_.name}'."
1136
- )
1137
- try:
1138
- stack_.provision()
1139
- stack_.resume()
1140
- except ProvisioningError as e:
1141
- cli_utils.error(str(e))
1142
-
1143
-
1144
- @stack.command(
1145
- "down", help="Suspends resources of the active stack deployment."
1146
- )
1147
- @click.option(
1148
- "--force",
1149
- "-f",
1150
- "force",
1151
- is_flag=True,
1152
- help="Deprovisions local resources instead of suspending them.",
1153
- )
1154
- def down_stack(force: bool = False) -> None:
1155
- """Suspends resources of the active stack deployment.
1156
-
1157
- Args:
1158
- force: Deprovisions local resources instead of suspending them.
1159
- """
1160
- stack_ = Client().active_stack
1161
-
1162
- if force:
1163
- cli_utils.declare(
1164
- f"Deprovisioning resources for active stack '{stack_.name}'."
1165
- )
1166
- stack_.deprovision()
1167
- else:
1168
- cli_utils.declare(
1169
- f"Suspending resources for active stack '{stack_.name}'."
1170
- )
1171
- stack_.suspend()
1172
-
1173
-
1174
1095
  @stack.command("export", help="Exports a stack to a YAML file.")
1175
1096
  @click.argument("stack_name_or_id", type=str, required=False)
1176
1097
  @click.argument("filename", type=str, required=False)
@@ -1487,105 +1408,6 @@ def register_secrets(
1487
1408
  client.update_secret(secret_name, add_or_update_values=secret_values)
1488
1409
 
1489
1410
 
1490
- def _get_deployment_params_interactively(
1491
- click_params: Dict[str, Any],
1492
- ) -> Dict[str, Any]:
1493
- """Get deployment values from command line arguments.
1494
-
1495
- Args:
1496
- click_params: Required and pre-existing values.
1497
-
1498
- Returns:
1499
- Full deployment arguments.
1500
- """
1501
- deployment_values = {
1502
- "provider": click_params["provider"],
1503
- "stack_name": click_params["stack_name"],
1504
- "region": click_params["region"],
1505
- }
1506
- for component_type in MLSTACKS_SUPPORTED_STACK_COMPONENTS:
1507
- verify_mlstacks_prerequisites_installation()
1508
- from mlstacks.constants import ALLOWED_FLAVORS
1509
-
1510
- if (
1511
- click.prompt(
1512
- f"Enable {component_type}?",
1513
- type=click.Choice(["y", "n"]),
1514
- default="n",
1515
- )
1516
- == "y"
1517
- ):
1518
- component_flavor = click.prompt(
1519
- f" Enter {component_type} flavor",
1520
- type=click.Choice(ALLOWED_FLAVORS[component_type]),
1521
- )
1522
- deployment_values[component_type] = component_flavor
1523
-
1524
- if (
1525
- click.prompt(
1526
- "Deploy using debug_mode?",
1527
- type=click.Choice(["y", "n"]),
1528
- default="n",
1529
- )
1530
- == "y"
1531
- ):
1532
- deployment_values["debug_mode"] = True
1533
-
1534
- extra_config = []
1535
- # use click.prompt to populate extra_config until someone just hits enter
1536
- while True:
1537
- declare(
1538
- "\nAdd to extra_config for stack deployment -->\n",
1539
- bold=True,
1540
- )
1541
- key = click.prompt(
1542
- "Enter `extra_config` key or hit enter to skip",
1543
- type=str,
1544
- default="",
1545
- )
1546
- if key == "":
1547
- break
1548
- value = click.prompt(
1549
- f"Enter value for '{key}'",
1550
- type=str,
1551
- )
1552
- extra_config.append(f"{key}={value}")
1553
-
1554
- # get mandatory GCP project_id if provider is GCP
1555
- # skip if project_id already specified in extra_config
1556
- if click_params["provider"] == "gcp" and not any(
1557
- s.startswith("project_id=") for s in extra_config
1558
- ):
1559
- project_id = click.prompt("What is your GCP project_id?", type=str)
1560
- extra_config.append(f"project_id={project_id}")
1561
- declare(f"Project ID '{project_id}' added to extra_config.")
1562
-
1563
- deployment_values["extra_config"] = extra_config
1564
-
1565
- tags = []
1566
- # use click.prompt to populate tags until someone just hits enter
1567
- while True:
1568
- declare(
1569
- "\nAdd to tags for stack deployment -->\n",
1570
- bold=True,
1571
- )
1572
- tag = click.prompt(
1573
- "Enter `tags` key or hit enter to skip",
1574
- type=str,
1575
- default="",
1576
- )
1577
- if tag == "":
1578
- break
1579
- value = click.prompt(
1580
- f"Enter value for '{tag}'",
1581
- type=str,
1582
- )
1583
- tags.append(f"{tag}={value}")
1584
- deployment_values["tags"] = tags
1585
-
1586
- return deployment_values
1587
-
1588
-
1589
1411
  def validate_name(ctx: click.Context, param: str, value: str) -> str:
1590
1412
  """Validate the name of the stack.
1591
1413
 
@@ -1803,7 +1625,7 @@ Stack [{deployed_stack.stack.name}]({get_stack_url(deployed_stack.stack)}):\n"""
1803
1625
  if components:
1804
1626
  component = components[0]
1805
1627
  stack_desc += (
1806
- f" * `{component.flavor}` {component_type.value}: "
1628
+ f" * `{component.flavor_name}` {component_type.value}: "
1807
1629
  f"[{component.name}]({get_component_url(component)})\n"
1808
1630
  )
1809
1631
 
@@ -1838,393 +1660,6 @@ To use the `{deployed_stack.stack.name}` stack to run pipelines:
1838
1660
  )
1839
1661
 
1840
1662
 
1841
- @stack.command(help="[DEPRECATED] Deploy a stack using mlstacks.")
1842
- @click.option(
1843
- "--provider",
1844
- "-p",
1845
- "provider",
1846
- required=True,
1847
- type=click.Choice(STACK_RECIPE_MODULAR_RECIPES),
1848
- )
1849
- @click.option(
1850
- "--name",
1851
- "-n",
1852
- "stack_name",
1853
- type=click.STRING,
1854
- required=True,
1855
- help="Set a name for the ZenML stack that will be imported from the YAML "
1856
- "configuration file which gets generated after deploying the stack recipe. "
1857
- "Defaults to the name of the stack recipe being deployed.",
1858
- )
1859
- @click.option(
1860
- "--region",
1861
- "-r",
1862
- "region",
1863
- type=click.STRING,
1864
- required=True,
1865
- help="The region to deploy the stack to.",
1866
- )
1867
- @click.option(
1868
- "--no-import",
1869
- "-ni",
1870
- "no_import_stack_flag",
1871
- is_flag=True,
1872
- help="If you don't want the stack to be imported automatically.",
1873
- )
1874
- @click.option(
1875
- "--artifact-store",
1876
- "-a",
1877
- "artifact_store",
1878
- required=False,
1879
- is_flag=True,
1880
- help="Whether to deploy an artifact store.",
1881
- )
1882
- @click.option(
1883
- "--container-registry",
1884
- "-c",
1885
- "container_registry",
1886
- required=False,
1887
- is_flag=True,
1888
- help="Whether to deploy a container registry.",
1889
- )
1890
- @click.option(
1891
- "--mlops-platform",
1892
- "-m",
1893
- "mlops_platform",
1894
- type=click.Choice(["zenml"]),
1895
- required=False,
1896
- help="The flavor of MLOps platform to use."
1897
- "If not specified, the default MLOps platform will be used.",
1898
- )
1899
- @click.option(
1900
- "--orchestrator",
1901
- "-o",
1902
- required=False,
1903
- type=click.Choice(
1904
- [
1905
- "kubernetes",
1906
- "kubeflow",
1907
- "tekton",
1908
- "sagemaker",
1909
- "skypilot",
1910
- "vertex",
1911
- ]
1912
- ),
1913
- help="The flavor of orchestrator to use. "
1914
- "If not specified, the default orchestrator will be used.",
1915
- )
1916
- @click.option(
1917
- "--model-deployer",
1918
- "-md",
1919
- "model_deployer",
1920
- required=False,
1921
- type=click.Choice(["mlflow", "seldon"]),
1922
- help="The flavor of model deployer to use. ",
1923
- )
1924
- @click.option(
1925
- "--experiment-tracker",
1926
- "-e",
1927
- "experiment_tracker",
1928
- required=False,
1929
- type=click.Choice(["mlflow"]),
1930
- help="The flavor of experiment tracker to use.",
1931
- )
1932
- @click.option(
1933
- "--step-operator",
1934
- "-s",
1935
- "step_operator",
1936
- required=False,
1937
- type=click.Choice(["sagemaker"]),
1938
- help="The flavor of step operator to use.",
1939
- )
1940
- @click.option(
1941
- "--file",
1942
- "-f",
1943
- "file",
1944
- required=False,
1945
- type=click.Path(exists=True, dir_okay=False, readable=True),
1946
- help="Use a YAML specification file as the basis of the stack deployment.",
1947
- )
1948
- @click.option(
1949
- "--debug-mode",
1950
- "-d",
1951
- "debug_mode",
1952
- is_flag=True,
1953
- default=False,
1954
- help="Whether to run the stack deployment in debug mode.",
1955
- )
1956
- @click.option(
1957
- "--extra-config",
1958
- "-x",
1959
- "extra_config",
1960
- multiple=True,
1961
- help="Extra configurations as key=value pairs. This option can be used multiple times.",
1962
- )
1963
- @click.option(
1964
- "--tags",
1965
- "-t",
1966
- "tags",
1967
- required=False,
1968
- type=click.STRING,
1969
- help="Pass one or more tags.",
1970
- multiple=True,
1971
- )
1972
- @click.option(
1973
- "--interactive",
1974
- "-i",
1975
- "interactive",
1976
- is_flag=True,
1977
- default=False,
1978
- help="Deploy the stack interactively.",
1979
- )
1980
- @click.pass_context
1981
- def deploy_mlstack(
1982
- ctx: click.Context,
1983
- provider: str,
1984
- stack_name: str,
1985
- region: str,
1986
- mlops_platform: Optional[str] = None,
1987
- orchestrator: Optional[str] = None,
1988
- model_deployer: Optional[str] = None,
1989
- experiment_tracker: Optional[str] = None,
1990
- step_operator: Optional[str] = None,
1991
- no_import_stack_flag: bool = False,
1992
- artifact_store: Optional[bool] = None,
1993
- container_registry: Optional[bool] = None,
1994
- file: Optional[str] = None,
1995
- debug_mode: bool = False,
1996
- tags: Optional[List[str]] = None,
1997
- extra_config: Optional[List[str]] = None,
1998
- interactive: bool = False,
1999
- ) -> None:
2000
- """Deploy a stack with mlstacks.
2001
-
2002
- `zenml stack_recipe pull <STACK_RECIPE_NAME>` has to be called with the
2003
- same relative path before the `deploy` command.
2004
-
2005
- Args:
2006
- ctx: The click context.
2007
- provider: The cloud provider to deploy the stack to.
2008
- stack_name: A name for the ZenML stack that gets imported as a result
2009
- of the recipe deployment.
2010
- no_import_stack_flag: If you don't want the stack to be imported into
2011
- ZenML after deployment.
2012
- artifact_store: The flavor of artifact store to deploy. In the case of
2013
- the artifact store, it doesn't matter what you specify here, as
2014
- there's only one flavor per cloud provider and that will be deployed.
2015
- orchestrator: The flavor of orchestrator to use.
2016
- container_registry: The flavor of container registry to deploy. In the case of
2017
- the container registry, it doesn't matter what you specify here, as
2018
- there's only one flavor per cloud provider and that will be deployed.
2019
- model_deployer: The flavor of model deployer to deploy.
2020
- experiment_tracker: The flavor of experiment tracker to deploy.
2021
- step_operator: The flavor of step operator to deploy.
2022
- extra_config: Extra configurations as key=value pairs.
2023
- tags: Pass one or more tags.
2024
- debug_mode: Whether to run the stack deployment in debug mode.
2025
- file: Use a YAML specification file as the basis of the stack
2026
- deployment.
2027
- mlops_platform: The flavor of MLOps platform to use.
2028
- region: The region to deploy the stack to.
2029
- interactive: Deploy the stack interactively.
2030
- """
2031
- cli_utils.warning(
2032
- "The `zenml stack deploy-mlstack` (former `zenml stack deploy`) CLI "
2033
- "command has been deprecated and will be removed in a future release. "
2034
- "Please use `zenml stack deploy` instead for a simplified "
2035
- "experience."
2036
- )
2037
-
2038
- with track_handler(
2039
- event=AnalyticsEvent.DEPLOY_STACK,
2040
- ) as analytics_handler:
2041
- if stack_exists(stack_name):
2042
- cli_utils.error(
2043
- f"Stack with name '{stack_name}' already exists. Please choose a "
2044
- "different name."
2045
- )
2046
- elif stack_spec_exists(stack_name):
2047
- cli_utils.error(
2048
- f"Stack spec for stack named '{stack_name}' already exists. "
2049
- "Please choose a different name."
2050
- )
2051
-
2052
- cli_utils.declare("Checking prerequisites are installed...")
2053
- cli_utils.verify_mlstacks_prerequisites_installation()
2054
- cli_utils.warning(ALPHA_MESSAGE)
2055
-
2056
- if not file:
2057
- cli_params: Dict[str, Any] = ctx.params
2058
- if interactive:
2059
- cli_params = _get_deployment_params_interactively(cli_params)
2060
- stack, components = convert_click_params_to_mlstacks_primitives(
2061
- cli_params
2062
- )
2063
-
2064
- from mlstacks.utils import zenml_utils
2065
-
2066
- cli_utils.declare("Checking flavor compatibility...")
2067
- if not zenml_utils.has_valid_flavor_combinations(
2068
- stack, components
2069
- ):
2070
- cli_utils.error(
2071
- "The specified stack and component flavors are not compatible "
2072
- "with the provider or with one another. Please try again."
2073
- )
2074
-
2075
- stack_dict, component_dicts = convert_mlstacks_primitives_to_dicts(
2076
- stack, components
2077
- )
2078
- # write the stack and component yaml files
2079
- from mlstacks.constants import MLSTACKS_PACKAGE_NAME
2080
-
2081
- spec_dir = os.path.join(
2082
- click.get_app_dir(MLSTACKS_PACKAGE_NAME),
2083
- "stack_specs",
2084
- stack.name,
2085
- )
2086
- cli_utils.declare(f"Writing spec files to {spec_dir}...")
2087
- create_dir_recursive_if_not_exists(spec_dir)
2088
-
2089
- stack_file_path = os.path.join(
2090
- spec_dir, f"stack-{stack.name}.yaml"
2091
- )
2092
- write_yaml(file_path=stack_file_path, contents=stack_dict)
2093
- for component in component_dicts:
2094
- write_yaml(
2095
- file_path=os.path.join(
2096
- spec_dir, f"{component['name']}.yaml"
2097
- ),
2098
- contents=component,
2099
- )
2100
- else:
2101
- declare("Importing from stack specification file...")
2102
- stack_file_path = file
2103
-
2104
- from mlstacks.utils.yaml_utils import load_stack_yaml
2105
-
2106
- stack = load_stack_yaml(stack_file_path)
2107
-
2108
- analytics_handler.metadata = {
2109
- "stack_provider": stack.provider,
2110
- "debug_mode": debug_mode,
2111
- "no_import_stack_flag": no_import_stack_flag,
2112
- "user_created_spec": bool(file),
2113
- "mlops_platform": mlops_platform,
2114
- "orchestrator": orchestrator,
2115
- "model_deployer": model_deployer,
2116
- "experiment_tracker": experiment_tracker,
2117
- "step_operator": step_operator,
2118
- "artifact_store": artifact_store,
2119
- "container_registry": container_registry,
2120
- }
2121
-
2122
- deploy_mlstacks_stack(
2123
- spec_file_path=stack_file_path,
2124
- stack_name=stack.name,
2125
- stack_provider=stack.provider,
2126
- debug_mode=debug_mode,
2127
- no_import_stack_flag=no_import_stack_flag,
2128
- user_created_spec=bool(file),
2129
- )
2130
-
2131
-
2132
- @stack.command(
2133
- help="Destroy stack components created previously with "
2134
- "`zenml stack deploy`"
2135
- )
2136
- @click.argument("stack_name", required=True)
2137
- @click.option(
2138
- "--debug",
2139
- "-d",
2140
- "debug_mode",
2141
- is_flag=True,
2142
- default=False,
2143
- help="Whether to run Terraform in debug mode.",
2144
- )
2145
- def destroy(
2146
- stack_name: str,
2147
- debug_mode: bool = False,
2148
- ) -> None:
2149
- """Destroy all resources previously created with `zenml stack deploy`.
2150
-
2151
- Args:
2152
- stack_name: Name of the stack
2153
- debug_mode: Whether to run Terraform in debug mode.
2154
- """
2155
- if not confirmation(
2156
- f"Are you sure you want to destroy stack '{stack_name}' and all "
2157
- "associated infrastructure?"
2158
- ):
2159
- error("Aborting stack destroy...")
2160
-
2161
- with track_handler(
2162
- event=AnalyticsEvent.DESTROY_STACK,
2163
- ) as analytics_handler:
2164
- analytics_handler.metadata["debug_mode"] = debug_mode
2165
- cli_utils.verify_mlstacks_prerequisites_installation()
2166
- from mlstacks.constants import MLSTACKS_PACKAGE_NAME
2167
-
2168
- # check the stack actually exists
2169
- if not stack_exists(stack_name):
2170
- cli_utils.error(
2171
- f"Stack with name '{stack_name}' does not exist. Please check and "
2172
- "try again."
2173
- )
2174
-
2175
- spec_file_path = get_stack_spec_file_path(stack_name)
2176
- spec_files_dir: str = os.path.join(
2177
- click.get_app_dir(MLSTACKS_PACKAGE_NAME), "stack_specs", stack_name
2178
- )
2179
- user_created_spec = str(Path(spec_file_path).parent) != spec_files_dir
2180
-
2181
- provider = read_yaml(file_path=spec_file_path).get("provider")
2182
- tf_definitions_path: str = os.path.join(
2183
- click.get_app_dir(MLSTACKS_PACKAGE_NAME),
2184
- "terraform",
2185
- f"{provider}-modular",
2186
- )
2187
-
2188
- cli_utils.declare(
2189
- "Checking Terraform definitions and spec files are present..."
2190
- )
2191
- verify_spec_and_tf_files_exist(spec_file_path, tf_definitions_path)
2192
-
2193
- from mlstacks.utils import terraform_utils
2194
-
2195
- cli_utils.declare(
2196
- f"Destroying stack '{stack_name}' using Terraform..."
2197
- )
2198
- terraform_utils.destroy_stack(
2199
- stack_path=spec_file_path, debug_mode=debug_mode
2200
- )
2201
- cli_utils.declare(f"Stack '{stack_name}' successfully destroyed.")
2202
-
2203
- if cli_utils.confirmation(
2204
- f"Would you like to recursively delete the associated ZenML "
2205
- f"stack '{stack_name}'?\nThis will delete the stack and any "
2206
- "underlying stack components."
2207
- ):
2208
- from zenml.client import Client
2209
-
2210
- client = Client()
2211
- client.delete_stack(name_id_or_prefix=stack_name, recursive=True)
2212
- cli_utils.declare(
2213
- f"Stack '{stack_name}' successfully deleted from ZenML."
2214
- )
2215
-
2216
- spec_dir = os.path.dirname(spec_file_path)
2217
- if not user_created_spec and cli_utils.confirmation(
2218
- f"Would you like to delete the `mlstacks` spec directory for "
2219
- f"this stack, located at {spec_dir}?"
2220
- ):
2221
- rmtree(spec_files_dir)
2222
- cli_utils.declare(
2223
- f"Spec directory for stack '{stack_name}' successfully deleted."
2224
- )
2225
- cli_utils.declare(f"Stack '{stack_name}' successfully destroyed.")
2226
-
2227
-
2228
1663
  @stack.command(
2229
1664
  "connect",
2230
1665
  help="Connect a service-connector to a stack's components. "
@@ -2510,3 +1945,77 @@ def _get_stack_component_info(
2510
1945
  service_connector_index=service_connector_index,
2511
1946
  service_connector_resource_id=service_connector_resource_id,
2512
1947
  )
1948
+
1949
+
1950
+ @stack.command(
1951
+ name="export-requirements", help="Export the stack requirements."
1952
+ )
1953
+ @click.argument(
1954
+ "stack_name_or_id",
1955
+ type=click.STRING,
1956
+ required=False,
1957
+ )
1958
+ @click.option(
1959
+ "--output-file",
1960
+ "-o",
1961
+ "output_file",
1962
+ type=str,
1963
+ required=False,
1964
+ help="File to which to export the stack requirements. If not "
1965
+ "provided, the requirements will be printed to stdout instead.",
1966
+ )
1967
+ @click.option(
1968
+ "--overwrite",
1969
+ "-ov",
1970
+ "overwrite",
1971
+ type=bool,
1972
+ required=False,
1973
+ is_flag=True,
1974
+ help="Overwrite the output file if it already exists. This option is "
1975
+ "only valid if the output file is provided.",
1976
+ )
1977
+ def export_requirements(
1978
+ stack_name_or_id: Optional[str] = None,
1979
+ output_file: Optional[str] = None,
1980
+ overwrite: bool = False,
1981
+ ) -> None:
1982
+ """Exports stack requirements so they can be installed using pip.
1983
+
1984
+ Args:
1985
+ stack_name_or_id: Stack name or ID. If not given, the active stack will
1986
+ be used.
1987
+ output_file: Optional path to the requirements output file.
1988
+ overwrite: Overwrite the output file if it already exists. This option
1989
+ is only valid if the output file is provided.
1990
+ """
1991
+ try:
1992
+ stack_model: "StackResponse" = Client().get_stack(
1993
+ name_id_or_prefix=stack_name_or_id
1994
+ )
1995
+ except KeyError as err:
1996
+ cli_utils.error(str(err))
1997
+
1998
+ requirements, _ = requirements_utils.get_requirements_for_stack(
1999
+ stack_model
2000
+ )
2001
+
2002
+ if not requirements:
2003
+ cli_utils.declare(f"Stack `{stack_model.name}` has no requirements.")
2004
+ return
2005
+
2006
+ if output_file:
2007
+ try:
2008
+ with open(output_file, "x") as f:
2009
+ f.write("\n".join(requirements))
2010
+ except FileExistsError:
2011
+ if overwrite or cli_utils.confirmation(
2012
+ "A file already exists at the specified path. "
2013
+ "Would you like to overwrite it?"
2014
+ ):
2015
+ with open(output_file, "w") as f:
2016
+ f.write("\n".join(requirements))
2017
+ cli_utils.declare(
2018
+ f"Requirements for stack `{stack_model.name}` exported to {output_file}."
2019
+ )
2020
+ else:
2021
+ click.echo(" ".join(requirements), nl=False)