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
@@ -11,7 +11,7 @@
11
11
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
12
12
  # or implied. See the License for the specific language governing
13
13
  # permissions and limitations under the License.
14
- """Local ZenML server deployment service implementation."""
14
+ """Local daemon ZenML server deployment service implementation."""
15
15
 
16
16
  import ipaddress
17
17
  import os
@@ -24,16 +24,18 @@ from zenml.config.global_config import GlobalConfiguration
24
24
  from zenml.config.store_config import StoreConfiguration
25
25
  from zenml.constants import (
26
26
  DEFAULT_LOCAL_SERVICE_IP_ADDRESS,
27
- DEFAULT_ZENML_SERVER_USE_LEGACY_DASHBOARD,
27
+ ENV_ZENML_ANALYTICS_OPT_IN,
28
28
  ENV_ZENML_CONFIG_PATH,
29
29
  ENV_ZENML_DISABLE_DATABASE_MIGRATION,
30
30
  ENV_ZENML_LOCAL_STORES_PATH,
31
+ ENV_ZENML_SERVER,
32
+ ENV_ZENML_SERVER_AUTH_SCHEME,
31
33
  ENV_ZENML_SERVER_AUTO_ACTIVATE,
32
34
  ENV_ZENML_SERVER_DEPLOYMENT_TYPE,
33
- ENV_ZENML_SERVER_USE_LEGACY_DASHBOARD,
35
+ ENV_ZENML_USER_ID,
34
36
  ZEN_SERVER_ENTRYPOINT,
35
37
  )
36
- from zenml.enums import StoreType
38
+ from zenml.enums import AuthScheme, StoreType
37
39
  from zenml.logger import get_logger
38
40
  from zenml.models import ServerDeploymentType
39
41
  from zenml.services import (
@@ -43,16 +45,16 @@ from zenml.services import (
43
45
  ServiceType,
44
46
  )
45
47
  from zenml.utils.io_utils import get_global_config_directory
46
- from zenml.zen_server.deploy.deployment import ServerDeploymentConfig
48
+ from zenml.zen_server.deploy.deployment import LocalServerDeploymentConfig
47
49
 
48
50
  logger = get_logger(__name__)
49
51
 
50
52
  ZEN_SERVER_HEALTHCHECK_URL_PATH = "health"
51
- LOCAL_ZENML_SERVER_DEFAULT_TIMEOUT = 30
53
+ DAEMON_ZENML_SERVER_DEFAULT_TIMEOUT = 30
52
54
 
53
55
 
54
- class LocalServerDeploymentConfig(ServerDeploymentConfig):
55
- """Local server deployment configuration.
56
+ class DaemonServerDeploymentConfig(LocalServerDeploymentConfig):
57
+ """Daemon server deployment configuration.
56
58
 
57
59
  Attributes:
58
60
  port: The TCP port number where the server is accepting connections.
@@ -68,23 +70,31 @@ class LocalServerDeploymentConfig(ServerDeploymentConfig):
68
70
  )
69
71
  blocking: bool = False
70
72
  store: Optional[StoreConfiguration] = None
71
- use_legacy_dashboard: bool = DEFAULT_ZENML_SERVER_USE_LEGACY_DASHBOARD
73
+
74
+ @property
75
+ def url(self) -> Optional[str]:
76
+ """Get the configured server URL.
77
+
78
+ Returns:
79
+ The configured server URL.
80
+ """
81
+ return f"http://{self.ip_address}:{self.port}"
72
82
 
73
83
  model_config = ConfigDict(extra="forbid")
74
84
 
75
85
 
76
- class LocalZenServerConfig(LocalDaemonServiceConfig):
77
- """Local Zen server configuration.
86
+ class DaemonZenServerConfig(LocalDaemonServiceConfig):
87
+ """Local daemon Zen server configuration.
78
88
 
79
89
  Attributes:
80
90
  server: The deployment configuration.
81
91
  """
82
92
 
83
- server: LocalServerDeploymentConfig
93
+ server: DaemonServerDeploymentConfig
84
94
 
85
95
 
86
- class LocalZenServer(LocalDaemonService):
87
- """Service daemon that can be used to start a local ZenML Server.
96
+ class DaemonZenServer(LocalDaemonService):
97
+ """Service daemon that can be used to start a local daemon ZenML server.
88
98
 
89
99
  Attributes:
90
100
  config: service configuration
@@ -92,26 +102,26 @@ class LocalZenServer(LocalDaemonService):
92
102
  """
93
103
 
94
104
  SERVICE_TYPE = ServiceType(
95
- name="local_zenml_server",
105
+ name="daemon_zenml_server",
96
106
  type="zen_server",
97
- flavor="local",
98
- description="Local ZenML server deployment",
107
+ flavor="daemon",
108
+ description="local daemon ZenML server deployment",
99
109
  )
100
110
 
101
- config: LocalZenServerConfig
111
+ config: DaemonZenServerConfig
102
112
  endpoint: LocalDaemonServiceEndpoint
103
113
 
104
114
  @classmethod
105
115
  def config_path(cls) -> str:
106
- """Path to the directory where the local ZenML server files are located.
116
+ """Path to the directory where the local daemon ZenML server files are located.
107
117
 
108
118
  Returns:
109
- Path to the local ZenML server runtime directory.
119
+ Path to the local daemon ZenML server runtime directory.
110
120
  """
111
121
  return os.path.join(
112
122
  get_global_config_directory(),
113
123
  "zen_server",
114
- "local",
124
+ "daemon",
115
125
  )
116
126
 
117
127
  @property
@@ -124,18 +134,18 @@ class LocalZenServer(LocalDaemonService):
124
134
  return os.path.join(self.config_path(), ".zenconfig")
125
135
 
126
136
  @classmethod
127
- def get_service(cls) -> Optional["LocalZenServer"]:
128
- """Load and return the local ZenML server service, if present.
137
+ def get_service(cls) -> Optional["DaemonZenServer"]:
138
+ """Load and return the local daemon ZenML server service, if present.
129
139
 
130
140
  Returns:
131
- The local ZenML server service or None, if the local server
141
+ The local daemon ZenML server service or None, if the local server
132
142
  deployment is not found.
133
143
  """
134
144
  config_filename = os.path.join(cls.config_path(), "service.json")
135
145
  try:
136
146
  with open(config_filename, "r") as f:
137
147
  return cast(
138
- "LocalZenServer", LocalZenServer.from_json(f.read())
148
+ "DaemonZenServer", DaemonZenServer.from_json(f.read())
139
149
  )
140
150
  except FileNotFoundError:
141
151
  return None
@@ -150,8 +160,15 @@ class LocalZenServer(LocalDaemonService):
150
160
  The command to start the daemon and the environment variables to
151
161
  set for the command.
152
162
  """
163
+ gc = GlobalConfiguration()
164
+
153
165
  cmd, env = super()._get_daemon_cmd()
166
+ env[ENV_ZENML_SERVER] = "true"
154
167
  env[ENV_ZENML_CONFIG_PATH] = self._global_config_path
168
+ env[ENV_ZENML_ANALYTICS_OPT_IN] = str(gc.analytics_opt_in)
169
+ env[ENV_ZENML_USER_ID] = str(gc.user_id)
170
+ # Disable authentication for the local server
171
+ env[ENV_ZENML_SERVER_AUTH_SCHEME] = AuthScheme.NO_AUTH.value
155
172
  env[ENV_ZENML_SERVER_DEPLOYMENT_TYPE] = ServerDeploymentType.LOCAL
156
173
  # Set the local stores path to the same path used by the client. This
157
174
  # ensures that the server's default store configuration is initialized
@@ -160,9 +177,6 @@ class LocalZenServer(LocalDaemonService):
160
177
  GlobalConfiguration().local_stores_path
161
178
  )
162
179
  env[ENV_ZENML_DISABLE_DATABASE_MIGRATION] = "True"
163
- env[ENV_ZENML_SERVER_USE_LEGACY_DASHBOARD] = str(
164
- self.config.server.use_legacy_dashboard
165
- )
166
180
  env[ENV_ZENML_SERVER_AUTO_ACTIVATE] = "True"
167
181
 
168
182
  return cmd, env
@@ -182,6 +196,8 @@ class LocalZenServer(LocalDaemonService):
182
196
  if not self.config.blocking:
183
197
  super().start(timeout)
184
198
  else:
199
+ gc = GlobalConfiguration()
200
+
185
201
  # In the blocking mode, we need to temporarily set the environment
186
202
  # variables for the running process to make it look like the server
187
203
  # is running in a separate environment (i.e. using a different
@@ -191,21 +207,27 @@ class LocalZenServer(LocalDaemonService):
191
207
  GlobalConfiguration._reset_instance()
192
208
  Client._reset_instance()
193
209
  original_config_path = os.environ.get(ENV_ZENML_CONFIG_PATH)
210
+ os.environ[ENV_ZENML_SERVER] = "true"
194
211
  os.environ[ENV_ZENML_CONFIG_PATH] = self._global_config_path
212
+ os.environ[ENV_ZENML_ANALYTICS_OPT_IN] = str(gc.analytics_opt_in)
213
+ os.environ[ENV_ZENML_USER_ID] = str(gc.user_id)
195
214
  # Set the local stores path to the same path used by the client.
196
215
  # This ensures that the server's default store configuration is
197
216
  # initialized to point at the same local SQLite database as the
198
217
  # client.
199
218
  os.environ[ENV_ZENML_LOCAL_STORES_PATH] = local_stores_path
219
+ os.environ[ENV_ZENML_SERVER_AUTH_SCHEME] = AuthScheme.NO_AUTH.value
200
220
  try:
201
221
  self.run()
202
222
  finally:
203
223
  # Restore the original client environment variables
224
+ del os.environ[ENV_ZENML_SERVER]
204
225
  if original_config_path:
205
226
  os.environ[ENV_ZENML_CONFIG_PATH] = original_config_path
206
227
  else:
207
228
  del os.environ[ENV_ZENML_CONFIG_PATH]
208
229
  del os.environ[ENV_ZENML_LOCAL_STORES_PATH]
230
+ del os.environ[ENV_ZENML_SERVER_AUTH_SCHEME]
209
231
  GlobalConfiguration._reset_instance()
210
232
  Client._reset_instance()
211
233
 
@@ -13,7 +13,7 @@
13
13
  # permissions and limitations under the License.
14
14
  """ZenML server deployer singleton implementation."""
15
15
 
16
- from typing import ClassVar, Dict, Generator, List, Optional, Type, Union
16
+ from typing import ClassVar, Dict, Generator, Optional, Type
17
17
 
18
18
  from zenml.config.global_config import GlobalConfiguration
19
19
  from zenml.enums import ServerProviderType, StoreType
@@ -21,22 +21,22 @@ from zenml.logger import get_logger
21
21
  from zenml.utils.singleton import SingletonMetaClass
22
22
  from zenml.zen_server.deploy.base_provider import BaseServerProvider
23
23
  from zenml.zen_server.deploy.deployment import (
24
- ServerDeployment,
25
- ServerDeploymentConfig,
24
+ LocalServerDeployment,
25
+ LocalServerDeploymentConfig,
26
26
  )
27
27
  from zenml.zen_server.deploy.exceptions import (
28
28
  ServerDeploymentError,
29
- ServerDeploymentExistsError,
30
29
  ServerDeploymentNotFoundError,
31
30
  ServerProviderNotFoundError,
32
31
  )
32
+ from zenml.zen_stores.base_zen_store import BaseZenStore
33
33
  from zenml.zen_stores.rest_zen_store import RestZenStoreConfiguration
34
34
 
35
35
  logger = get_logger(__name__)
36
36
 
37
37
 
38
- class ServerDeployer(metaclass=SingletonMetaClass):
39
- """Server deployer singleton.
38
+ class LocalServerDeployer(metaclass=SingletonMetaClass):
39
+ """Local server deployer singleton.
40
40
 
41
41
  This class is responsible for managing the various server provider
42
42
  implementations and for directing server deployment lifecycle requests to
@@ -85,126 +85,133 @@ class ServerDeployer(metaclass=SingletonMetaClass):
85
85
  )
86
86
  return cls._providers[provider_type]
87
87
 
88
+ def initialize_local_database(self) -> None:
89
+ """Initialize the local ZenML database."""
90
+ default_store_cfg = GlobalConfiguration().get_default_store()
91
+ BaseZenStore.create_store(default_store_cfg)
92
+
88
93
  def deploy_server(
89
94
  self,
90
- config: ServerDeploymentConfig,
95
+ config: LocalServerDeploymentConfig,
91
96
  timeout: Optional[int] = None,
92
- ) -> ServerDeployment:
93
- """Deploy a new ZenML server or update an existing deployment.
97
+ restart: bool = False,
98
+ ) -> LocalServerDeployment:
99
+ """Deploy the local ZenML server or update the existing deployment.
94
100
 
95
101
  Args:
96
102
  config: The server deployment configuration.
97
103
  timeout: The timeout in seconds to wait until the deployment is
98
104
  successful. If not supplied, the default timeout value specified
99
105
  by the provider is used.
106
+ restart: If True, the existing server deployment will be torn down
107
+ and a new server will be deployed.
100
108
 
101
109
  Returns:
102
- The server deployment.
110
+ The local server deployment.
103
111
  """
104
- # We do this here to ensure that the zenml store is always initialized
105
- # before the server is deployed. This is necessary because the server
106
- # may require access to the local store configuration or database.
107
- gc = GlobalConfiguration()
108
-
109
- _ = gc.zen_store
112
+ # Ensure that the local database is always initialized before any local
113
+ # server is deployed or updated.
114
+ self.initialize_local_database()
110
115
 
111
116
  try:
112
- self.get_server(config.name)
117
+ self.get_server()
113
118
  except ServerDeploymentNotFoundError:
114
119
  pass
115
120
  else:
116
- return self.update_server(config=config, timeout=timeout)
121
+ return self.update_server(
122
+ config=config, timeout=timeout, restart=restart
123
+ )
117
124
 
118
125
  provider_name = config.provider.value
119
126
  provider = self.get_provider(config.provider)
120
127
 
121
- logger.info(
122
- f"Deploying a {provider_name} ZenML server with name "
123
- f"'{config.name}'."
124
- )
128
+ logger.info(f"Deploying a local {provider_name} ZenML server.")
125
129
  return provider.deploy_server(config, timeout=timeout)
126
130
 
127
131
  def update_server(
128
132
  self,
129
- config: ServerDeploymentConfig,
133
+ config: LocalServerDeploymentConfig,
130
134
  timeout: Optional[int] = None,
131
- ) -> ServerDeployment:
132
- """Update an existing ZenML server deployment.
135
+ restart: bool = False,
136
+ ) -> LocalServerDeployment:
137
+ """Update an existing local ZenML server deployment.
133
138
 
134
139
  Args:
135
140
  config: The new server deployment configuration.
136
141
  timeout: The timeout in seconds to wait until the deployment is
137
142
  successful. If not supplied, a default timeout value of 30
138
143
  seconds is used.
144
+ restart: If True, the existing server deployment will be torn down
145
+ and a new server will be deployed.
139
146
 
140
147
  Returns:
141
148
  The updated server deployment.
142
-
143
- Raises:
144
- ServerDeploymentExistsError: If an existing deployment with the same
145
- name but a different provider type is found.
146
149
  """
147
150
  # this will also raise ServerDeploymentNotFoundError if the server
148
151
  # does not exist
149
- existing_server = self.get_server(config.name)
152
+ existing_server = self.get_server()
150
153
 
151
154
  provider = self.get_provider(config.provider)
152
- existing_provider = existing_server.config.provider
153
-
154
- if existing_provider != config.provider:
155
- raise ServerDeploymentExistsError(
156
- f"A server deployment with the same name '{config.name}' but "
157
- f"with a different provider '{existing_provider.value}'."
158
- f"is already provisioned. Please choose a different name or "
159
- f"tear down the existing deployment."
155
+ if existing_server.config.provider != config.provider or restart:
156
+ existing_provider = self.get_provider(
157
+ existing_server.config.provider
158
+ )
159
+
160
+ # Tear down the existing server deployment
161
+ existing_provider.remove_server(
162
+ existing_server.config, timeout=timeout
160
163
  )
161
164
 
165
+ # Deploy a new server with the new provider
166
+ return provider.deploy_server(config, timeout=timeout)
167
+
162
168
  return provider.update_server(config, timeout=timeout)
163
169
 
164
170
  def remove_server(
165
171
  self,
166
- server_name: str,
167
172
  timeout: Optional[int] = None,
168
173
  ) -> None:
169
- """Tears down and removes all resources and files associated with a ZenML server deployment.
174
+ """Tears down and removes all resources and files associated with the local ZenML server deployment.
170
175
 
171
176
  Args:
172
- server_name: The server deployment name.
173
177
  timeout: The timeout in seconds to wait until the deployment is
174
178
  successfully torn down. If not supplied, a provider specific
175
179
  default timeout value is used.
176
180
  """
177
181
  # this will also raise ServerDeploymentNotFoundError if the server
178
182
  # does not exist
179
- server = self.get_server(server_name)
183
+ try:
184
+ server = self.get_server()
185
+ except ServerDeploymentNotFoundError:
186
+ return
180
187
 
181
188
  provider_name = server.config.provider.value
182
189
  provider = self.get_provider(server.config.provider)
183
190
 
184
- if self.is_connected_to_server(server_name):
191
+ if self.is_connected_to_server():
185
192
  try:
186
- self.disconnect_from_server(server_name)
193
+ self.disconnect_from_server()
187
194
  except Exception as e:
188
- logger.warning(f"Failed to disconnect from the server: {e}")
195
+ logger.warning(
196
+ f"Failed to disconnect from the local server: {e}"
197
+ )
189
198
 
190
- logger.info(
191
- f"Tearing down the '{server_name}' {provider_name} ZenML server."
192
- )
199
+ logger.info(f"Tearing down the local {provider_name} ZenML server.")
193
200
  provider.remove_server(server.config, timeout=timeout)
194
201
 
195
- def is_connected_to_server(self, server_name: str) -> bool:
196
- """Check if the ZenML client is currently connected to a ZenML server.
197
-
198
- Args:
199
- server_name: The server deployment name.
202
+ def is_connected_to_server(self) -> bool:
203
+ """Check if the ZenML client is currently connected to the local ZenML server.
200
204
 
201
205
  Returns:
202
- True if the ZenML client is connected to the ZenML server, False
206
+ True if the ZenML client is connected to the local ZenML server, False
203
207
  otherwise.
204
208
  """
205
209
  # this will also raise ServerDeploymentNotFoundError if the server
206
210
  # does not exist
207
- server = self.get_server(server_name)
211
+ try:
212
+ server = self.get_server()
213
+ except ServerDeploymentNotFoundError:
214
+ return False
208
215
 
209
216
  gc = GlobalConfiguration()
210
217
  return (
@@ -215,188 +222,101 @@ class ServerDeployer(metaclass=SingletonMetaClass):
215
222
 
216
223
  def connect_to_server(
217
224
  self,
218
- server_name: str,
219
- username: str,
220
- password: str,
221
- verify_ssl: Union[bool, str] = True,
222
225
  ) -> None:
223
- """Connect to a ZenML server instance.
224
-
225
- Args:
226
- server_name: The server deployment name.
227
- username: The username to use to connect to the server.
228
- password: The password to use to connect to the server.
229
- verify_ssl: Either a boolean, in which case it controls whether we
230
- verify the server's TLS certificate, or a string, in which case
231
- it must be a path to a CA bundle to use or the CA bundle value
232
- itself.
226
+ """Connect to the local ZenML server instance.
233
227
 
234
228
  Raises:
235
- ServerDeploymentError: If the ZenML server is not running or
229
+ ServerDeploymentError: If the local ZenML server is not running or
236
230
  is unreachable.
237
231
  """
238
232
  # this will also raise ServerDeploymentNotFoundError if the server
239
233
  # does not exist
240
- server = self.get_server(server_name)
234
+ server = self.get_server()
241
235
  provider_name = server.config.provider.value
242
236
 
243
237
  gc = GlobalConfiguration()
244
238
  if not server.status or not server.status.url:
245
239
  raise ServerDeploymentError(
246
- f"The {provider_name} {server_name} ZenML "
247
- f"server is not currently running or is unreachable."
240
+ f"The local {provider_name} ZenML server is not currently "
241
+ "running or is unreachable."
248
242
  )
249
243
 
250
244
  store_config = RestZenStoreConfiguration(
251
245
  url=server.status.url,
252
- username=username,
253
- password=password,
254
- verify_ssl=verify_ssl,
255
246
  )
256
247
 
257
248
  if gc.store_configuration == store_config:
258
249
  logger.info(
259
- f"ZenML is already connected to the '{server_name}' "
250
+ "Your client is already connected to the local "
260
251
  f"{provider_name} ZenML server."
261
252
  )
262
253
  return
263
254
 
264
255
  logger.info(
265
- f"Connecting ZenML to the '{server_name}' "
266
- f"{provider_name} ZenML server ({store_config.url})."
256
+ f"Connecting to the local {provider_name} ZenML server "
257
+ f"({store_config.url})."
267
258
  )
268
259
 
269
260
  gc.set_store(store_config)
270
261
 
271
262
  logger.info(
272
- f"Connected ZenML to the '{server_name}' "
273
- f"{provider_name} ZenML server ({store_config.url})."
263
+ f"Connected to the local {provider_name} ZenML server "
264
+ f"({store_config.url})."
274
265
  )
275
266
 
276
267
  def disconnect_from_server(
277
268
  self,
278
- server_name: Optional[str] = None,
279
269
  ) -> None:
280
- """Disconnect from a ZenML server instance.
281
-
282
- Args:
283
- server_name: The server deployment name. If supplied, the deployer
284
- will check if the ZenML client is indeed connected to the server
285
- and disconnect only if that is the case. Otherwise the deployer
286
- will disconnect from any ZenML server.
287
- """
270
+ """Disconnect from the ZenML server instance."""
288
271
  gc = GlobalConfiguration()
289
272
  store_cfg = gc.store_configuration
290
273
 
291
274
  if store_cfg.type != StoreType.REST:
292
- logger.info("ZenML is not currently connected to a ZenML server.")
293
- return
294
-
295
- if server_name:
296
- # this will also raise ServerDeploymentNotFoundError if the server
297
- # does not exist
298
- server = self.get_server(server_name)
299
- provider_name = server.config.provider.value
300
-
301
- if not self.is_connected_to_server(server_name):
302
- logger.info(
303
- f"ZenML is not currently connected to the '{server_name}' "
304
- f"{provider_name} ZenML server."
305
- )
306
- return
307
-
308
- logger.info(
309
- f"Disconnecting ZenML from the '{server_name}' "
310
- f"{provider_name} ZenML server ({store_cfg.url})."
311
- )
312
- else:
313
275
  logger.info(
314
- f"Disconnecting ZenML from the {store_cfg.url} ZenML server."
276
+ "Your client is not currently connected to a ZenML server."
315
277
  )
278
+ return
279
+
280
+ logger.info(
281
+ f"Disconnecting from the local ({store_cfg.url}) ZenML server."
282
+ )
316
283
 
317
284
  gc.set_default_store()
318
285
 
319
- logger.info("Disconnected ZenML from the ZenML server.")
286
+ logger.info("Disconnected from the local ZenML server.")
320
287
 
321
288
  def get_server(
322
289
  self,
323
- server_name: str,
324
- ) -> ServerDeployment:
325
- """Get a server deployment.
326
-
327
- Args:
328
- server_name: The server deployment name.
290
+ ) -> LocalServerDeployment:
291
+ """Get the local server deployment.
329
292
 
330
293
  Returns:
331
- The requested server deployment.
294
+ The local server deployment.
332
295
 
333
296
  Raises:
334
- ServerDeploymentNotFoundError: If no server deployment with the
335
- given name is found.
297
+ ServerDeploymentNotFoundError: If no local server deployment is
298
+ found.
336
299
  """
337
300
  for provider in self._providers.values():
338
301
  try:
339
302
  return provider.get_server(
340
- ServerDeploymentConfig(
341
- name=server_name, provider=provider.TYPE
342
- )
303
+ LocalServerDeploymentConfig(provider=provider.TYPE)
343
304
  )
344
305
  except ServerDeploymentNotFoundError:
345
306
  pass
346
307
 
347
308
  raise ServerDeploymentNotFoundError(
348
- f"Server deployment '{server_name}' not found."
309
+ "No local server deployment was found."
349
310
  )
350
311
 
351
- def list_servers(
352
- self,
353
- server_name: Optional[str] = None,
354
- provider_type: Optional[ServerProviderType] = None,
355
- ) -> List[ServerDeployment]:
356
- """List all server deployments.
357
-
358
- Args:
359
- server_name: The server deployment name to filter by.
360
- provider_type: The server provider type to filter by.
361
-
362
- Returns:
363
- The list of server deployments.
364
- """
365
- providers: List[BaseServerProvider] = []
366
- if provider_type:
367
- providers = [self.get_provider(provider_type)]
368
- else:
369
- providers = list(self._providers.values())
370
-
371
- servers: List[ServerDeployment] = []
372
- for provider in providers:
373
- if server_name:
374
- try:
375
- servers.append(
376
- provider.get_server(
377
- ServerDeploymentConfig(
378
- name=server_name,
379
- provider=provider.TYPE,
380
- )
381
- )
382
- )
383
- except ServerDeploymentNotFoundError:
384
- pass
385
- else:
386
- servers.extend(provider.list_servers())
387
-
388
- return servers
389
-
390
312
  def get_server_logs(
391
313
  self,
392
- server_name: str,
393
314
  follow: bool = False,
394
315
  tail: Optional[int] = None,
395
316
  ) -> Generator[str, bool, None]:
396
- """Retrieve the logs of a ZenML server.
317
+ """Retrieve the logs for the local ZenML server.
397
318
 
398
319
  Args:
399
- server_name: The server deployment name.
400
320
  follow: if True, the logs will be streamed as they are written
401
321
  tail: only retrieve the last NUM lines of log output.
402
322
 
@@ -405,14 +325,13 @@ class ServerDeployer(metaclass=SingletonMetaClass):
405
325
  """
406
326
  # this will also raise ServerDeploymentNotFoundError if the server
407
327
  # does not exist
408
- server = self.get_server(server_name)
328
+ server = self.get_server()
409
329
 
410
330
  provider_name = server.config.provider.value
411
331
  provider = self.get_provider(server.config.provider)
412
332
 
413
333
  logger.info(
414
- f"Fetching logs from the '{server_name}' {provider_name} ZenML "
415
- f"server..."
334
+ f"Fetching logs from the local {provider_name} ZenML " f"server..."
416
335
  )
417
336
  return provider.get_server_logs(
418
337
  server.config, follow=follow, tail=tail