zenml-nightly 0.55.0.dev20240124__py3-none-any.whl → 0.72.0.dev20250115__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 (1238) hide show
  1. zenml/VERSION +1 -1
  2. zenml/__init__.py +9 -12
  3. zenml/actions/__init__.py +14 -0
  4. zenml/actions/base_action.py +682 -0
  5. zenml/actions/pipeline_run/__init__.py +0 -0
  6. zenml/actions/pipeline_run/pipeline_run_action.py +223 -0
  7. zenml/analytics/context.py +70 -15
  8. zenml/analytics/enums.py +21 -17
  9. zenml/analytics/models.py +1 -0
  10. zenml/analytics/utils.py +19 -7
  11. zenml/annotators/base_annotator.py +4 -3
  12. zenml/artifact_stores/base_artifact_store.py +155 -72
  13. zenml/artifact_stores/local_artifact_store.py +3 -2
  14. zenml/artifacts/artifact_config.py +67 -58
  15. zenml/artifacts/external_artifact.py +24 -39
  16. zenml/artifacts/external_artifact_config.py +27 -37
  17. zenml/artifacts/preexisting_data_materializer.py +90 -0
  18. zenml/artifacts/unmaterialized_artifact.py +2 -12
  19. zenml/artifacts/utils.py +521 -220
  20. zenml/cli/__init__.py +1511 -456
  21. zenml/cli/annotator.py +48 -14
  22. zenml/cli/artifact.py +22 -4
  23. zenml/cli/authorized_device.py +1 -0
  24. zenml/cli/base.py +185 -22
  25. zenml/cli/code_repository.py +1 -0
  26. zenml/cli/formatter.py +1 -1
  27. zenml/cli/integration.py +119 -24
  28. zenml/cli/login.py +977 -0
  29. zenml/cli/model.py +42 -15
  30. zenml/cli/model_registry.py +1 -2
  31. zenml/cli/pipeline.py +168 -82
  32. zenml/cli/secret.py +1 -2
  33. zenml/cli/served_model.py +56 -26
  34. zenml/cli/server.py +467 -619
  35. zenml/cli/service_accounts.py +55 -14
  36. zenml/cli/service_connectors.py +97 -6
  37. zenml/cli/stack.py +821 -531
  38. zenml/cli/stack_components.py +15 -598
  39. zenml/cli/tag.py +1 -0
  40. zenml/cli/text_utils.py +36 -2
  41. zenml/cli/user_management.py +204 -6
  42. zenml/cli/utils.py +411 -290
  43. zenml/client.py +1742 -298
  44. zenml/client_lazy_loader.py +224 -0
  45. zenml/code_repositories/base_code_repository.py +5 -4
  46. zenml/code_repositories/git/local_git_repository_context.py +1 -0
  47. zenml/code_repositories/local_repository_context.py +1 -0
  48. zenml/config/__init__.py +2 -0
  49. zenml/config/base_settings.py +6 -6
  50. zenml/config/build_configuration.py +43 -17
  51. zenml/config/compiler.py +82 -49
  52. zenml/config/docker_settings.py +139 -83
  53. zenml/config/global_config.py +260 -234
  54. zenml/config/pipeline_configurations.py +32 -11
  55. zenml/config/pipeline_run_configuration.py +15 -3
  56. zenml/config/pipeline_spec.py +6 -6
  57. zenml/config/resource_settings.py +8 -9
  58. zenml/config/retry_config.py +27 -0
  59. zenml/config/schedule.py +27 -18
  60. zenml/config/secret_reference_mixin.py +8 -4
  61. zenml/config/secrets_store_config.py +16 -24
  62. zenml/config/server_config.py +297 -39
  63. zenml/config/settings_resolver.py +2 -1
  64. zenml/config/source.py +97 -31
  65. zenml/config/step_configurations.py +83 -39
  66. zenml/config/step_run_info.py +3 -0
  67. zenml/config/store_config.py +20 -54
  68. zenml/config/strict_base_model.py +2 -6
  69. zenml/console.py +0 -1
  70. zenml/constants.py +241 -74
  71. zenml/container_registries/azure_container_registry.py +1 -0
  72. zenml/container_registries/base_container_registry.py +7 -3
  73. zenml/container_registries/default_container_registry.py +4 -3
  74. zenml/container_registries/dockerhub_container_registry.py +1 -0
  75. zenml/container_registries/gcp_container_registry.py +1 -0
  76. zenml/container_registries/github_container_registry.py +2 -10
  77. zenml/data_validators/base_data_validator.py +2 -2
  78. zenml/entrypoints/base_entrypoint_configuration.py +76 -17
  79. zenml/entrypoints/pipeline_entrypoint_configuration.py +1 -0
  80. zenml/entrypoints/step_entrypoint_configuration.py +21 -2
  81. zenml/enums.py +91 -9
  82. zenml/environment.py +52 -319
  83. zenml/{steps/base_parameters.py → event_hub/__init__.py} +5 -7
  84. zenml/event_hub/base_event_hub.py +196 -0
  85. zenml/event_hub/event_hub.py +181 -0
  86. zenml/event_sources/__init__.py +14 -0
  87. zenml/{lineage_graph/edge.py → event_sources/base_event.py} +5 -7
  88. zenml/event_sources/base_event_source.py +695 -0
  89. zenml/event_sources/webhooks/__init__.py +14 -0
  90. zenml/event_sources/webhooks/base_webhook_event_source.py +231 -0
  91. zenml/exceptions.py +40 -41
  92. zenml/feature_stores/base_feature_store.py +4 -6
  93. zenml/hooks/hook_validators.py +3 -11
  94. zenml/image_builders/base_image_builder.py +5 -2
  95. zenml/image_builders/build_context.py +24 -80
  96. zenml/image_builders/local_image_builder.py +14 -6
  97. zenml/integrations/__init__.py +16 -4
  98. zenml/integrations/airflow/__init__.py +3 -5
  99. zenml/integrations/airflow/flavors/airflow_orchestrator_flavor.py +15 -7
  100. zenml/integrations/airflow/orchestrators/airflow_orchestrator.py +15 -252
  101. zenml/integrations/airflow/orchestrators/dag_generator.py +5 -3
  102. zenml/integrations/argilla/__init__.py +46 -0
  103. zenml/integrations/argilla/annotators/__init__.py +20 -0
  104. zenml/integrations/argilla/annotators/argilla_annotator.py +443 -0
  105. zenml/{post_execution → integrations/argilla/flavors}/__init__.py +9 -13
  106. zenml/integrations/argilla/flavors/argilla_annotator_flavor.py +150 -0
  107. zenml/integrations/aws/__init__.py +7 -3
  108. zenml/integrations/aws/container_registries/aws_container_registry.py +44 -8
  109. zenml/integrations/aws/flavors/__init__.py +6 -0
  110. zenml/integrations/aws/flavors/aws_container_registry_flavor.py +3 -2
  111. zenml/integrations/aws/flavors/aws_image_builder_flavor.py +146 -0
  112. zenml/integrations/aws/flavors/sagemaker_orchestrator_flavor.py +104 -16
  113. zenml/integrations/aws/flavors/sagemaker_step_operator_flavor.py +6 -2
  114. zenml/integrations/aws/image_builders/__init__.py +20 -0
  115. zenml/integrations/aws/image_builders/aws_image_builder.py +307 -0
  116. zenml/integrations/aws/orchestrators/sagemaker_orchestrator.py +421 -133
  117. zenml/integrations/aws/service_connectors/aws_service_connector.py +175 -48
  118. zenml/integrations/aws/step_operators/sagemaker_step_operator.py +1 -1
  119. zenml/integrations/azure/__init__.py +14 -5
  120. zenml/integrations/azure/azureml_utils.py +201 -0
  121. zenml/integrations/azure/flavors/__init__.py +11 -0
  122. zenml/integrations/azure/flavors/azureml.py +139 -0
  123. zenml/integrations/azure/flavors/azureml_orchestrator_flavor.py +166 -0
  124. zenml/integrations/azure/flavors/azureml_step_operator_flavor.py +71 -18
  125. zenml/integrations/azure/orchestrators/__init__.py +19 -0
  126. zenml/integrations/azure/orchestrators/azureml_orchestrator.py +583 -0
  127. zenml/integrations/azure/orchestrators/azureml_orchestrator_entrypoint_config.py +82 -0
  128. zenml/integrations/azure/service_connectors/azure_service_connector.py +15 -6
  129. zenml/integrations/azure/step_operators/azureml_step_operator.py +78 -173
  130. zenml/integrations/bentoml/__init__.py +1 -1
  131. zenml/integrations/bentoml/constants.py +1 -1
  132. zenml/integrations/bentoml/materializers/bentoml_bento_materializer.py +19 -31
  133. zenml/integrations/bentoml/model_deployers/bentoml_model_deployer.py +128 -239
  134. zenml/integrations/bentoml/services/__init__.py +15 -4
  135. zenml/integrations/bentoml/services/bentoml_container_deployment.py +399 -0
  136. zenml/integrations/bentoml/services/{bentoml_deployment.py → bentoml_local_deployment.py} +85 -43
  137. zenml/integrations/bentoml/services/deployment_type.py +23 -0
  138. zenml/integrations/bentoml/steps/bento_builder.py +2 -0
  139. zenml/integrations/bentoml/steps/bentoml_deployer.py +97 -47
  140. zenml/integrations/bitbucket/__init__.py +42 -0
  141. zenml/integrations/bitbucket/plugins/__init__.py +20 -0
  142. zenml/integrations/bitbucket/plugins/bitbucket_webhook_event_source_flavor.py +43 -0
  143. zenml/integrations/bitbucket/plugins/event_sources/__init__.py +0 -0
  144. zenml/integrations/bitbucket/plugins/event_sources/bitbucket_webhook_event_source.py +486 -0
  145. zenml/integrations/comet/__init__.py +49 -0
  146. zenml/integrations/{kserve/services → comet/experiment_trackers}/__init__.py +5 -6
  147. zenml/integrations/comet/experiment_trackers/comet_experiment_tracker.py +175 -0
  148. zenml/integrations/comet/flavors/__init__.py +24 -0
  149. zenml/integrations/comet/flavors/comet_experiment_tracker_flavor.py +129 -0
  150. zenml/integrations/constants.py +14 -2
  151. zenml/integrations/databricks/__init__.py +70 -0
  152. zenml/{lineage_graph → integrations/databricks/flavors}/__init__.py +14 -18
  153. zenml/integrations/databricks/flavors/databricks_model_deployer_flavor.py +118 -0
  154. zenml/integrations/databricks/flavors/databricks_orchestrator_flavor.py +174 -0
  155. zenml/integrations/{kserve → databricks}/model_deployers/__init__.py +5 -5
  156. zenml/integrations/databricks/model_deployers/databricks_model_deployer.py +249 -0
  157. zenml/integrations/databricks/orchestrators/__init__.py +20 -0
  158. zenml/integrations/databricks/orchestrators/databricks_orchestrator.py +501 -0
  159. zenml/integrations/databricks/orchestrators/databricks_orchestrator_entrypoint_config.py +97 -0
  160. zenml/integrations/databricks/services/__init__.py +19 -0
  161. zenml/integrations/databricks/services/databricks_deployment.py +407 -0
  162. zenml/integrations/{gcp/orchestrators/vertex_scheduler → databricks/utils}/__init__.py +2 -2
  163. zenml/integrations/databricks/utils/databricks_utils.py +87 -0
  164. zenml/integrations/deepchecks/__init__.py +30 -10
  165. zenml/integrations/deepchecks/data_validators/deepchecks_data_validator.py +59 -18
  166. zenml/integrations/deepchecks/materializers/deepchecks_dataset_materializer.py +3 -1
  167. zenml/integrations/deepchecks/materializers/deepchecks_results_materializer.py +3 -3
  168. zenml/integrations/deepchecks/validation_checks.py +62 -35
  169. zenml/integrations/discord/__init__.py +1 -0
  170. zenml/integrations/discord/steps/discord_alerter_ask_step.py +1 -0
  171. zenml/integrations/discord/steps/discord_alerter_post_step.py +1 -0
  172. zenml/integrations/evidently/__init__.py +22 -4
  173. zenml/integrations/evidently/column_mapping.py +11 -3
  174. zenml/integrations/evidently/data_validators/evidently_data_validator.py +24 -6
  175. zenml/integrations/evidently/metrics.py +7 -8
  176. zenml/integrations/evidently/tests.py +7 -8
  177. zenml/integrations/facets/__init__.py +22 -5
  178. zenml/integrations/facets/models.py +2 -7
  179. zenml/integrations/feast/__init__.py +19 -3
  180. zenml/integrations/feast/feature_stores/feast_feature_store.py +13 -32
  181. zenml/integrations/gcp/__init__.py +6 -6
  182. zenml/integrations/gcp/artifact_stores/gcp_artifact_store.py +6 -0
  183. zenml/integrations/gcp/flavors/gcp_artifact_store_flavor.py +1 -0
  184. zenml/integrations/gcp/flavors/vertex_orchestrator_flavor.py +24 -2
  185. zenml/integrations/gcp/flavors/vertex_step_operator_flavor.py +14 -1
  186. zenml/integrations/gcp/google_credentials_mixin.py +1 -1
  187. zenml/integrations/gcp/orchestrators/vertex_orchestrator.py +519 -296
  188. zenml/integrations/gcp/service_connectors/gcp_service_connector.py +788 -113
  189. zenml/integrations/gcp/step_operators/vertex_step_operator.py +9 -1
  190. zenml/integrations/github/__init__.py +15 -0
  191. zenml/integrations/github/code_repositories/github_code_repository.py +3 -2
  192. zenml/integrations/github/plugins/__init__.py +19 -0
  193. zenml/integrations/github/plugins/event_sources/__init__.py +0 -0
  194. zenml/integrations/github/plugins/event_sources/github_webhook_event_source.py +510 -0
  195. zenml/integrations/github/plugins/github_webhook_event_source_flavor.py +43 -0
  196. zenml/integrations/gitlab/code_repositories/gitlab_code_repository.py +7 -1
  197. zenml/integrations/great_expectations/__init__.py +22 -10
  198. zenml/integrations/great_expectations/data_validators/ge_data_validator.py +61 -57
  199. zenml/integrations/great_expectations/flavors/great_expectations_data_validator_flavor.py +35 -2
  200. zenml/integrations/great_expectations/ge_store_backend.py +24 -11
  201. zenml/integrations/great_expectations/materializers/ge_materializer.py +9 -9
  202. zenml/integrations/great_expectations/utils.py +5 -5
  203. zenml/integrations/huggingface/__init__.py +52 -1
  204. zenml/integrations/huggingface/flavors/__init__.py +26 -0
  205. zenml/integrations/huggingface/flavors/huggingface_model_deployer_flavor.py +130 -0
  206. zenml/integrations/huggingface/materializers/__init__.py +3 -0
  207. zenml/integrations/huggingface/materializers/huggingface_datasets_materializer.py +102 -19
  208. zenml/integrations/huggingface/materializers/huggingface_pt_model_materializer.py +18 -19
  209. zenml/integrations/huggingface/materializers/huggingface_t5_materializer.py +104 -0
  210. zenml/integrations/huggingface/materializers/huggingface_tf_model_materializer.py +18 -19
  211. zenml/integrations/huggingface/materializers/huggingface_tokenizer_materializer.py +13 -15
  212. zenml/integrations/huggingface/model_deployers/__init__.py +20 -0
  213. zenml/integrations/huggingface/model_deployers/huggingface_model_deployer.py +247 -0
  214. zenml/integrations/huggingface/services/__init__.py +19 -0
  215. zenml/integrations/huggingface/services/huggingface_deployment.py +292 -0
  216. zenml/integrations/huggingface/steps/__init__.py +21 -0
  217. zenml/integrations/huggingface/steps/accelerate_runner.py +166 -0
  218. zenml/integrations/huggingface/steps/huggingface_deployer.py +110 -0
  219. zenml/integrations/hyperai/__init__.py +53 -0
  220. zenml/integrations/hyperai/flavors/__init__.py +20 -0
  221. zenml/integrations/hyperai/flavors/hyperai_orchestrator_flavor.py +170 -0
  222. zenml/integrations/hyperai/orchestrators/__init__.py +21 -0
  223. zenml/integrations/hyperai/orchestrators/hyperai_orchestrator.py +510 -0
  224. zenml/integrations/hyperai/service_connectors/__init__.py +20 -0
  225. zenml/integrations/hyperai/service_connectors/hyperai_service_connector.py +375 -0
  226. zenml/integrations/integration.py +101 -47
  227. zenml/integrations/kaniko/flavors/kaniko_image_builder_flavor.py +6 -44
  228. zenml/integrations/kaniko/image_builders/kaniko_image_builder.py +9 -6
  229. zenml/integrations/kubeflow/__init__.py +4 -1
  230. zenml/integrations/kubeflow/flavors/kubeflow_orchestrator_flavor.py +67 -82
  231. zenml/integrations/kubeflow/orchestrators/kubeflow_orchestrator.py +306 -248
  232. zenml/integrations/kubernetes/__init__.py +6 -3
  233. zenml/integrations/kubernetes/flavors/__init__.py +8 -0
  234. zenml/integrations/kubernetes/flavors/kubernetes_orchestrator_flavor.py +43 -2
  235. zenml/integrations/kubernetes/flavors/kubernetes_step_operator_flavor.py +166 -0
  236. zenml/integrations/kubernetes/orchestrators/kube_utils.py +67 -12
  237. zenml/integrations/kubernetes/orchestrators/kubernetes_orchestrator.py +89 -21
  238. zenml/integrations/kubernetes/orchestrators/kubernetes_orchestrator_entrypoint.py +39 -7
  239. zenml/integrations/kubernetes/orchestrators/manifest_utils.py +42 -19
  240. zenml/integrations/kubernetes/pod_settings.py +21 -31
  241. zenml/integrations/kubernetes/serialization_utils.py +3 -3
  242. zenml/integrations/kubernetes/service_connectors/kubernetes_service_connector.py +14 -11
  243. zenml/integrations/kubernetes/step_operators/__init__.py +22 -0
  244. zenml/integrations/kubernetes/step_operators/kubernetes_step_operator.py +236 -0
  245. zenml/integrations/label_studio/__init__.py +1 -3
  246. zenml/integrations/label_studio/annotators/label_studio_annotator.py +46 -14
  247. zenml/integrations/label_studio/flavors/__init__.py +2 -0
  248. zenml/integrations/label_studio/flavors/label_studio_annotator_flavor.py +20 -5
  249. zenml/integrations/langchain/__init__.py +7 -1
  250. zenml/integrations/langchain/materializers/document_materializer.py +44 -8
  251. zenml/integrations/langchain/materializers/openai_embedding_materializer.py +28 -2
  252. zenml/integrations/lightgbm/__init__.py +1 -0
  253. zenml/integrations/lightgbm/materializers/lightgbm_booster_materializer.py +8 -15
  254. zenml/integrations/lightgbm/materializers/lightgbm_dataset_materializer.py +11 -16
  255. zenml/integrations/lightning/__init__.py +48 -0
  256. zenml/integrations/lightning/flavors/__init__.py +23 -0
  257. zenml/integrations/lightning/flavors/lightning_orchestrator_flavor.py +168 -0
  258. zenml/integrations/lightning/orchestrators/__init__.py +23 -0
  259. zenml/integrations/lightning/orchestrators/lightning_orchestrator.py +617 -0
  260. zenml/integrations/lightning/orchestrators/lightning_orchestrator_entrypoint.py +303 -0
  261. zenml/integrations/lightning/orchestrators/lightning_orchestrator_entrypoint_configuration.py +77 -0
  262. zenml/integrations/lightning/orchestrators/utils.py +67 -0
  263. zenml/integrations/mlflow/__init__.py +55 -8
  264. zenml/integrations/mlflow/experiment_trackers/mlflow_experiment_tracker.py +31 -13
  265. zenml/integrations/mlflow/flavors/mlflow_experiment_tracker_flavor.py +32 -37
  266. zenml/integrations/mlflow/model_deployers/mlflow_model_deployer.py +42 -233
  267. zenml/integrations/mlflow/model_registries/mlflow_model_registry.py +42 -49
  268. zenml/integrations/mlflow/services/mlflow_deployment.py +30 -5
  269. zenml/integrations/mlflow/steps/mlflow_deployer.py +25 -27
  270. zenml/integrations/mlflow/steps/mlflow_registry.py +3 -1
  271. zenml/integrations/modal/__init__.py +46 -0
  272. zenml/integrations/modal/flavors/__init__.py +26 -0
  273. zenml/integrations/modal/flavors/modal_step_operator_flavor.py +125 -0
  274. zenml/integrations/modal/step_operators/__init__.py +22 -0
  275. zenml/integrations/modal/step_operators/modal_step_operator.py +242 -0
  276. zenml/integrations/neptune/experiment_trackers/neptune_experiment_tracker.py +7 -5
  277. zenml/integrations/neptune/experiment_trackers/run_state.py +71 -55
  278. zenml/integrations/neptune/flavors/neptune_experiment_tracker_flavor.py +1 -1
  279. zenml/integrations/neural_prophet/__init__.py +6 -1
  280. zenml/integrations/numpy/__init__.py +32 -0
  281. zenml/integrations/{kserve/constants.py → numpy/materializers/__init__.py} +5 -4
  282. zenml/integrations/numpy/materializers/numpy_materializer.py +246 -0
  283. zenml/integrations/openai/__init__.py +1 -1
  284. zenml/integrations/openai/hooks/open_ai_failure_hook.py +39 -14
  285. zenml/{steps/external_artifact.py → integrations/pandas/__init__.py} +17 -11
  286. zenml/integrations/{kserve/custom_deployer → pandas/materializers}/__init__.py +5 -5
  287. zenml/integrations/pandas/materializers/pandas_materializer.py +192 -0
  288. zenml/integrations/pigeon/__init__.py +44 -0
  289. zenml/integrations/pigeon/annotators/__init__.py +20 -0
  290. zenml/integrations/pigeon/annotators/pigeon_annotator.py +330 -0
  291. zenml/integrations/{kserve → pigeon}/flavors/__init__.py +7 -7
  292. zenml/integrations/pigeon/flavors/pigeon_annotator_flavor.py +104 -0
  293. zenml/integrations/pillow/materializers/pillow_image_materializer.py +17 -20
  294. zenml/integrations/polars/__init__.py +1 -0
  295. zenml/integrations/polars/materializers/dataframe_materializer.py +26 -39
  296. zenml/integrations/prodigy/__init__.py +48 -0
  297. zenml/integrations/prodigy/annotators/__init__.py +20 -0
  298. zenml/integrations/prodigy/annotators/prodigy_annotator.py +275 -0
  299. zenml/integrations/prodigy/flavors/__init__.py +24 -0
  300. zenml/integrations/prodigy/flavors/prodigy_annotator_flavor.py +101 -0
  301. zenml/integrations/pycaret/__init__.py +6 -0
  302. zenml/integrations/pycaret/materializers/model_materializer.py +7 -22
  303. zenml/integrations/pytorch/materializers/base_pytorch_materializer.py +8 -2
  304. zenml/integrations/pytorch/materializers/pytorch_module_materializer.py +4 -1
  305. zenml/integrations/registry.py +38 -1
  306. zenml/integrations/s3/__init__.py +2 -3
  307. zenml/integrations/s3/artifact_stores/s3_artifact_store.py +191 -9
  308. zenml/integrations/s3/flavors/s3_artifact_store_flavor.py +22 -45
  309. zenml/integrations/s3/utils.py +39 -0
  310. zenml/integrations/seldon/__init__.py +18 -2
  311. zenml/integrations/seldon/model_deployers/seldon_model_deployer.py +19 -141
  312. zenml/integrations/seldon/secret_schemas/secret_schemas.py +2 -2
  313. zenml/integrations/seldon/seldon_client.py +55 -70
  314. zenml/integrations/seldon/services/seldon_deployment.py +4 -5
  315. zenml/integrations/seldon/steps/seldon_deployer.py +21 -20
  316. zenml/integrations/sklearn/__init__.py +1 -1
  317. zenml/integrations/skypilot/flavors/skypilot_orchestrator_base_vm_config.py +29 -7
  318. zenml/integrations/skypilot/orchestrators/skypilot_base_vm_orchestrator.py +47 -28
  319. zenml/integrations/skypilot/orchestrators/skypilot_orchestrator_entrypoint.py +2 -2
  320. zenml/integrations/skypilot_aws/__init__.py +3 -2
  321. zenml/integrations/skypilot_aws/flavors/skypilot_orchestrator_aws_vm_flavor.py +1 -1
  322. zenml/integrations/skypilot_azure/__init__.py +2 -4
  323. zenml/integrations/skypilot_azure/flavors/skypilot_orchestrator_azure_vm_flavor.py +1 -1
  324. zenml/integrations/skypilot_gcp/__init__.py +3 -2
  325. zenml/integrations/skypilot_gcp/flavors/skypilot_orchestrator_gcp_vm_flavor.py +1 -1
  326. zenml/integrations/skypilot_kubernetes/__init__.py +52 -0
  327. zenml/integrations/skypilot_kubernetes/flavors/__init__.py +26 -0
  328. zenml/integrations/skypilot_kubernetes/flavors/skypilot_orchestrator_kubernetes_vm_flavor.py +125 -0
  329. zenml/integrations/skypilot_kubernetes/orchestrators/__init__.py +25 -0
  330. zenml/integrations/skypilot_kubernetes/orchestrators/skypilot_kubernetes_vm_orchestrator.py +74 -0
  331. zenml/integrations/skypilot_lambda/__init__.py +50 -0
  332. zenml/integrations/{kserve/secret_schemas → skypilot_lambda/flavors}/__init__.py +9 -12
  333. zenml/integrations/skypilot_lambda/flavors/skypilot_orchestrator_lambda_vm_flavor.py +130 -0
  334. zenml/{lineage_graph/node → integrations/skypilot_lambda/orchestrators}/__init__.py +8 -15
  335. zenml/integrations/skypilot_lambda/orchestrators/skypilot_lambda_vm_orchestrator.py +92 -0
  336. zenml/integrations/slack/__init__.py +1 -0
  337. zenml/integrations/slack/alerters/slack_alerter.py +22 -2
  338. zenml/integrations/slack/flavors/__init__.py +2 -0
  339. zenml/integrations/slack/flavors/slack_alerter_flavor.py +13 -4
  340. zenml/integrations/slack/steps/slack_alerter_ask_step.py +1 -0
  341. zenml/integrations/slack/steps/slack_alerter_post_step.py +1 -0
  342. zenml/integrations/spark/flavors/spark_step_operator_flavor.py +2 -39
  343. zenml/integrations/spark/step_operators/kubernetes_step_operator.py +1 -0
  344. zenml/integrations/spark/step_operators/spark_entrypoint_configuration.py +1 -0
  345. zenml/integrations/spark/step_operators/spark_step_operator.py +2 -0
  346. zenml/integrations/tekton/__init__.py +2 -1
  347. zenml/integrations/tekton/flavors/tekton_orchestrator_flavor.py +66 -23
  348. zenml/integrations/tekton/orchestrators/tekton_orchestrator.py +549 -235
  349. zenml/integrations/tensorboard/__init__.py +1 -13
  350. zenml/integrations/tensorboard/services/tensorboard_service.py +3 -4
  351. zenml/integrations/tensorboard/visualizers/tensorboard_visualizer.py +66 -59
  352. zenml/integrations/tensorflow/__init__.py +10 -15
  353. zenml/integrations/tensorflow/materializers/keras_materializer.py +24 -27
  354. zenml/integrations/tensorflow/materializers/tf_dataset_materializer.py +9 -16
  355. zenml/integrations/vllm/__init__.py +50 -0
  356. zenml/integrations/vllm/flavors/__init__.py +21 -0
  357. zenml/integrations/vllm/flavors/vllm_model_deployer_flavor.py +91 -0
  358. zenml/integrations/vllm/model_deployers/__init__.py +19 -0
  359. zenml/integrations/vllm/model_deployers/vllm_model_deployer.py +263 -0
  360. zenml/integrations/vllm/services/__init__.py +19 -0
  361. zenml/integrations/vllm/services/vllm_deployment.py +206 -0
  362. zenml/integrations/wandb/__init__.py +1 -0
  363. zenml/integrations/wandb/flavors/wandb_experiment_tracker_flavor.py +21 -18
  364. zenml/integrations/whylogs/__init__.py +18 -2
  365. zenml/integrations/whylogs/data_validators/whylogs_data_validator.py +3 -3
  366. zenml/integrations/whylogs/flavors/whylogs_data_validator_flavor.py +1 -1
  367. zenml/integrations/whylogs/materializers/whylogs_materializer.py +14 -21
  368. zenml/integrations/xgboost/materializers/xgboost_booster_materializer.py +11 -22
  369. zenml/integrations/xgboost/materializers/xgboost_dmatrix_materializer.py +10 -19
  370. zenml/io/fileio.py +1 -0
  371. zenml/io/filesystem.py +2 -2
  372. zenml/io/local_filesystem.py +3 -3
  373. zenml/logger.py +41 -17
  374. zenml/logging/__init__.py +5 -0
  375. zenml/logging/step_logging.py +280 -32
  376. zenml/{new/steps → login}/__init__.py +4 -1
  377. zenml/login/credentials.py +346 -0
  378. zenml/login/credentials_store.py +603 -0
  379. zenml/{new/pipelines → login/pro}/__init__.py +4 -1
  380. zenml/login/pro/client.py +496 -0
  381. zenml/login/pro/constants.py +34 -0
  382. zenml/{zen_stores/schemas/identity_schemas.py → login/pro/models.py} +9 -11
  383. zenml/login/pro/organization/__init__.py +14 -0
  384. zenml/login/pro/organization/client.py +79 -0
  385. zenml/{lineage_graph/node/base_node.py → login/pro/organization/models.py} +13 -12
  386. zenml/{_hub → login/pro/tenant}/__init__.py +2 -2
  387. zenml/login/pro/tenant/client.py +92 -0
  388. zenml/login/pro/tenant/models.py +174 -0
  389. zenml/login/pro/utils.py +121 -0
  390. zenml/{cli → login}/web_login.py +66 -21
  391. zenml/materializers/__init__.py +2 -4
  392. zenml/materializers/base_materializer.py +180 -51
  393. zenml/materializers/built_in_materializer.py +50 -23
  394. zenml/materializers/cloudpickle_materializer.py +4 -5
  395. zenml/materializers/numpy_materializer.py +23 -233
  396. zenml/materializers/pandas_materializer.py +22 -174
  397. zenml/materializers/pydantic_materializer.py +2 -2
  398. zenml/materializers/service_materializer.py +12 -10
  399. zenml/materializers/structured_string_materializer.py +12 -6
  400. zenml/materializers/uuid_materializer.py +79 -0
  401. zenml/metadata/lazy_load.py +33 -17
  402. zenml/metadata/metadata_types.py +112 -3
  403. zenml/model/lazy_load.py +85 -4
  404. zenml/model/model.py +236 -226
  405. zenml/model/utils.py +99 -141
  406. zenml/model_deployers/base_model_deployer.py +319 -47
  407. zenml/model_registries/base_model_registry.py +17 -15
  408. zenml/models/__init__.py +254 -175
  409. zenml/models/v2/base/base.py +254 -112
  410. zenml/models/v2/base/base_plugin_flavor.py +76 -0
  411. zenml/models/v2/base/filter.py +530 -199
  412. zenml/models/v2/base/page.py +2 -12
  413. zenml/models/v2/base/scoped.py +292 -22
  414. zenml/models/v2/core/action.py +276 -0
  415. zenml/models/v2/core/action_flavor.py +57 -0
  416. zenml/models/v2/core/api_key.py +35 -12
  417. zenml/models/v2/core/artifact.py +126 -6
  418. zenml/models/v2/core/artifact_version.py +289 -65
  419. zenml/models/v2/core/artifact_visualization.py +10 -4
  420. zenml/models/v2/core/code_reference.py +13 -4
  421. zenml/models/v2/core/code_repository.py +39 -16
  422. zenml/models/v2/core/component.py +113 -61
  423. zenml/models/v2/core/device.py +25 -5
  424. zenml/models/v2/core/event_source.py +244 -0
  425. zenml/models/v2/core/event_source_flavor.py +67 -0
  426. zenml/models/v2/core/flavor.py +90 -27
  427. zenml/models/v2/core/logs.py +81 -12
  428. zenml/models/v2/core/model.py +91 -42
  429. zenml/models/v2/core/model_version.py +100 -55
  430. zenml/models/v2/core/model_version_artifact.py +96 -89
  431. zenml/models/v2/core/model_version_pipeline_run.py +86 -53
  432. zenml/models/v2/core/pipeline.py +205 -80
  433. zenml/models/v2/core/pipeline_build.py +110 -21
  434. zenml/models/v2/core/pipeline_deployment.py +101 -36
  435. zenml/models/v2/core/pipeline_run.py +545 -33
  436. zenml/models/v2/core/run_metadata.py +23 -181
  437. zenml/models/v2/core/run_template.py +439 -0
  438. zenml/models/v2/core/schedule.py +66 -29
  439. zenml/models/v2/core/secret.py +33 -21
  440. zenml/models/v2/core/server_settings.py +224 -0
  441. zenml/models/v2/core/service.py +500 -0
  442. zenml/models/v2/core/service_account.py +40 -15
  443. zenml/models/v2/core/service_connector.py +247 -49
  444. zenml/models/v2/core/stack.py +163 -70
  445. zenml/models/v2/core/step_run.py +210 -48
  446. zenml/models/v2/core/tag.py +21 -8
  447. zenml/models/v2/core/tag_resource.py +13 -4
  448. zenml/models/v2/core/trigger.py +422 -0
  449. zenml/models/v2/core/trigger_execution.py +119 -0
  450. zenml/models/v2/core/user.py +136 -69
  451. zenml/models/v2/core/workspace.py +26 -7
  452. zenml/models/v2/misc/auth_models.py +11 -2
  453. zenml/models/v2/misc/build_item.py +3 -3
  454. zenml/models/v2/misc/external_user.py +3 -6
  455. zenml/models/v2/misc/info_models.py +78 -0
  456. zenml/models/v2/misc/loaded_visualization.py +2 -2
  457. zenml/models/v2/misc/run_metadata.py +38 -0
  458. zenml/models/v2/misc/server_models.py +56 -0
  459. zenml/models/v2/misc/service_connector_type.py +9 -17
  460. zenml/models/v2/misc/stack_deployment.py +96 -0
  461. zenml/models/v2/misc/user_auth.py +7 -9
  462. zenml/orchestrators/__init__.py +4 -0
  463. zenml/orchestrators/base_orchestrator.py +136 -25
  464. zenml/orchestrators/containerized_orchestrator.py +1 -0
  465. zenml/orchestrators/dag_runner.py +18 -3
  466. zenml/orchestrators/input_utils.py +109 -48
  467. zenml/orchestrators/local/local_orchestrator.py +10 -0
  468. zenml/orchestrators/local_docker/local_docker_orchestrator.py +14 -42
  469. zenml/orchestrators/output_utils.py +16 -6
  470. zenml/orchestrators/publish_utils.py +12 -5
  471. zenml/orchestrators/step_launcher.py +142 -194
  472. zenml/orchestrators/step_run_utils.py +386 -0
  473. zenml/orchestrators/step_runner.py +181 -270
  474. zenml/orchestrators/utils.py +219 -84
  475. zenml/orchestrators/wheeled_orchestrator.py +147 -0
  476. zenml/pipelines/__init__.py +3 -16
  477. zenml/{new/pipelines → pipelines}/build_utils.py +287 -47
  478. zenml/{new/pipelines → pipelines}/pipeline_context.py +6 -2
  479. zenml/pipelines/pipeline_decorator.py +40 -64
  480. zenml/{new/pipelines/pipeline.py → pipelines/pipeline_definition.py} +376 -440
  481. zenml/pipelines/run_utils.py +358 -0
  482. zenml/plugins/__init__.py +0 -0
  483. zenml/plugins/base_plugin_flavor.py +88 -0
  484. zenml/plugins/plugin_flavor_registry.py +342 -0
  485. zenml/secret/base_secret.py +7 -8
  486. zenml/secret/schemas/basic_auth_secret_schema.py +0 -1
  487. zenml/service_connectors/docker_service_connector.py +19 -4
  488. zenml/service_connectors/service_connector.py +12 -14
  489. zenml/service_connectors/service_connector_registry.py +71 -55
  490. zenml/service_connectors/service_connector_utils.py +418 -0
  491. zenml/services/__init__.py +0 -2
  492. zenml/services/container/container_service.py +9 -6
  493. zenml/services/container/container_service_endpoint.py +1 -1
  494. zenml/services/container/entrypoint.py +3 -2
  495. zenml/services/local/local_daemon_entrypoint.py +9 -6
  496. zenml/services/local/local_service.py +1 -1
  497. zenml/services/local/local_service_endpoint.py +1 -1
  498. zenml/services/service.py +222 -130
  499. zenml/services/service_status.py +2 -1
  500. zenml/services/service_type.py +6 -5
  501. zenml/stack/flavor.py +25 -18
  502. zenml/stack/flavor_registry.py +4 -4
  503. zenml/stack/stack.py +20 -131
  504. zenml/stack/stack_component.py +136 -110
  505. zenml/stack/utils.py +36 -15
  506. zenml/stack_deployments/__init__.py +14 -0
  507. zenml/stack_deployments/aws_stack_deployment.py +320 -0
  508. zenml/stack_deployments/azure_stack_deployment.py +315 -0
  509. zenml/stack_deployments/gcp_stack_deployment.py +315 -0
  510. zenml/stack_deployments/stack_deployment.py +232 -0
  511. zenml/stack_deployments/utils.py +48 -0
  512. zenml/step_operators/step_operator_entrypoint_configuration.py +2 -1
  513. zenml/steps/__init__.py +3 -9
  514. zenml/steps/base_step.py +172 -315
  515. zenml/{new/steps → steps}/decorated_step.py +1 -0
  516. zenml/steps/entrypoint_function_utils.py +33 -93
  517. zenml/{new/steps → steps}/step_context.py +70 -50
  518. zenml/steps/step_decorator.py +47 -93
  519. zenml/steps/step_invocation.py +22 -60
  520. zenml/steps/utils.py +161 -48
  521. zenml/types.py +14 -1
  522. zenml/utils/archivable.py +178 -0
  523. zenml/utils/callback_registry.py +71 -0
  524. zenml/utils/code_repository_utils.py +1 -0
  525. zenml/utils/code_utils.py +346 -0
  526. zenml/utils/cuda_utils.py +50 -0
  527. zenml/utils/dashboard_utils.py +67 -21
  528. zenml/utils/deprecation_utils.py +22 -24
  529. zenml/utils/dict_utils.py +22 -0
  530. zenml/utils/docker_utils.py +34 -5
  531. zenml/utils/downloaded_repository_context.py +1 -0
  532. zenml/utils/env_utils.py +55 -1
  533. zenml/utils/filesync_model.py +65 -28
  534. zenml/utils/function_utils.py +260 -0
  535. zenml/utils/integration_utils.py +1 -0
  536. zenml/utils/json_utils.py +131 -0
  537. zenml/utils/materializer_utils.py +1 -1
  538. zenml/utils/metadata_utils.py +368 -0
  539. zenml/utils/notebook_utils.py +136 -0
  540. zenml/utils/package_utils.py +89 -0
  541. zenml/utils/pagination_utils.py +9 -7
  542. zenml/utils/pipeline_docker_image_builder.py +152 -149
  543. zenml/utils/pydantic_utils.py +276 -66
  544. zenml/utils/requirements_utils.py +71 -0
  545. zenml/utils/secret_utils.py +66 -12
  546. zenml/utils/settings_utils.py +2 -1
  547. zenml/utils/singleton.py +15 -3
  548. zenml/utils/source_code_utils.py +1 -0
  549. zenml/utils/source_utils.py +236 -14
  550. zenml/utils/string_utils.py +140 -0
  551. zenml/utils/typed_model.py +5 -3
  552. zenml/utils/typing_utils.py +223 -0
  553. zenml/utils/visualization_utils.py +5 -3
  554. zenml/utils/yaml_utils.py +1 -1
  555. zenml/zen_server/auth.py +295 -52
  556. zenml/zen_server/cache.py +208 -0
  557. zenml/zen_server/cloud_utils.py +261 -0
  558. zenml/zen_server/dashboard/assets/404-Dfq64Boz.js +1 -0
  559. zenml/zen_server/dashboard/assets/@radix-DeK6qiuw.js +85 -0
  560. zenml/zen_server/dashboard/assets/@react-router-B3Z5rLr2.js +29 -0
  561. zenml/zen_server/dashboard/assets/@reactflow-BUNIMFeC.js +17 -0
  562. zenml/zen_server/dashboard/assets/@reactflow-C26Olbza.css +1 -0
  563. zenml/zen_server/dashboard/assets/@tanstack-DT5WLu9C.js +22 -0
  564. zenml/zen_server/dashboard/assets/AlertDialogDropdownItem-B73Vs10T.js +1 -0
  565. zenml/zen_server/dashboard/assets/CodeSnippet-Bbx6fIb6.css +1 -0
  566. zenml/zen_server/dashboard/assets/CodeSnippet-DIJRT2NT.js +9 -0
  567. zenml/zen_server/dashboard/assets/CollapsibleCard-BzUHGZOU.js +1 -0
  568. zenml/zen_server/dashboard/assets/Commands-BEGyld4c.js +1 -0
  569. zenml/zen_server/dashboard/assets/ComponentBadge-xyKiek1s.js +1 -0
  570. zenml/zen_server/dashboard/assets/CopyButton-DhW-mapu.js +2 -0
  571. zenml/zen_server/dashboard/assets/CsvVizualization-D8oazBiE.js +15 -0
  572. zenml/zen_server/dashboard/assets/DeleteAlertDialog-WkSIIgfy.js +1 -0
  573. zenml/zen_server/dashboard/assets/DialogItem-Bgroeg29.js +1 -0
  574. zenml/zen_server/dashboard/assets/DisplayDate-CDMUcQHS.js +1 -0
  575. zenml/zen_server/dashboard/assets/EmptyState-BzdlCwp3.js +1 -0
  576. zenml/zen_server/dashboard/assets/Error-CY5tlu17.js +1 -0
  577. zenml/zen_server/dashboard/assets/ExecutionStatus-G8mjIaeA.js +1 -0
  578. zenml/zen_server/dashboard/assets/Helpbox-Bb1ed--O.js +1 -0
  579. zenml/zen_server/dashboard/assets/Infobox-Da6-76M2.js +1 -0
  580. zenml/zen_server/dashboard/assets/InlineAvatar-DqnZaBNq.js +1 -0
  581. zenml/zen_server/dashboard/assets/Lock-CYYy18Mm.js +1 -0
  582. zenml/zen_server/dashboard/assets/MarkdownVisualization-ylXaAxev.js +14 -0
  583. zenml/zen_server/dashboard/assets/NestedCollapsible-aK5ojKoF.js +1 -0
  584. zenml/zen_server/dashboard/assets/NumberBox-Dtp3J6g5.js +1 -0
  585. zenml/zen_server/dashboard/assets/Partials-CqZp5NMX.js +1 -0
  586. zenml/zen_server/dashboard/assets/PasswordChecker-B0nadgh6.js +1 -0
  587. zenml/zen_server/dashboard/assets/ProBadge-B4tRUYve.js +1 -0
  588. zenml/zen_server/dashboard/assets/ProCta-CZuP29Qz.js +1 -0
  589. zenml/zen_server/dashboard/assets/ProviderIcon-Bd7GUQ1_.js +1 -0
  590. zenml/zen_server/dashboard/assets/ProviderRadio-mstdqzsS.js +1 -0
  591. zenml/zen_server/dashboard/assets/RunSelector-CsruSB4i.js +1 -0
  592. zenml/zen_server/dashboard/assets/RunsBody-DxxtWVYz.js +1 -0
  593. zenml/zen_server/dashboard/assets/SearchField-D6tPxyqw.js +1 -0
  594. zenml/zen_server/dashboard/assets/SecretTooltip-CLzJIYW_.js +1 -0
  595. zenml/zen_server/dashboard/assets/SetPassword-Yn50ooBC.js +1 -0
  596. zenml/zen_server/dashboard/assets/StackList-U537qoYd.js +1 -0
  597. zenml/zen_server/dashboard/assets/Tabs-CNv-eTYM.js +1 -0
  598. zenml/zen_server/dashboard/assets/Tick-jEIevzVf.js +1 -0
  599. zenml/zen_server/dashboard/assets/UpdatePasswordSchemas-C16GW-kX.js +1 -0
  600. zenml/zen_server/dashboard/assets/UsageReason-Bf2tzhv1.js +1 -0
  601. zenml/zen_server/dashboard/assets/WizardFooter-D6i-AP1K.js +1 -0
  602. zenml/zen_server/dashboard/assets/acp-DOsXjFc7.webp +0 -0
  603. zenml/zen_server/dashboard/assets/adam-e-y0WnB_.webp +0 -0
  604. zenml/zen_server/dashboard/assets/alex-DcCuDHPg.webp +0 -0
  605. zenml/zen_server/dashboard/assets/all-pipeline-runs-query-DUti43aF.js +1 -0
  606. zenml/zen_server/dashboard/assets/baris-C0ZrZ10g.webp +0 -0
  607. zenml/zen_server/dashboard/assets/check-DloQpStc.js +1 -0
  608. zenml/zen_server/dashboard/assets/check-circle-jNbX5-sR.js +1 -0
  609. zenml/zen_server/dashboard/assets/chevron-down-6JyMkfjR.js +1 -0
  610. zenml/zen_server/dashboard/assets/chevron-right-double-D7ojK9Co.js +1 -0
  611. zenml/zen_server/dashboard/assets/cloud-squares-DeRLMopf.svg +43 -0
  612. zenml/zen_server/dashboard/assets/code-browser-CUFUIHfp.js +1 -0
  613. zenml/zen_server/dashboard/assets/code-snippets-CqONne41.js +13 -0
  614. zenml/zen_server/dashboard/assets/components-Br2ezRib.js +1 -0
  615. zenml/zen_server/dashboard/assets/connectors-video-C9qY4syJ.svg +21 -0
  616. zenml/zen_server/dashboard/assets/copy-C8XQA2Ug.js +1 -0
  617. zenml/zen_server/dashboard/assets/create-stack-Ch2WPs9U.js +1 -0
  618. zenml/zen_server/dashboard/assets/dates-3pMLCNrD.js +1 -0
  619. zenml/zen_server/dashboard/assets/delete-run-Byf9hTjA.js +1 -0
  620. zenml/zen_server/dashboard/assets/docker-BdA9vrnW.js +1 -0
  621. zenml/zen_server/dashboard/assets/dots-horizontal-otGBOSDJ.js +1 -0
  622. zenml/zen_server/dashboard/assets/flyte-Cj-xy_8I.svg +10 -0
  623. zenml/zen_server/dashboard/assets/form-schemas-BZqKBPBF.js +1 -0
  624. zenml/zen_server/dashboard/assets/gcp-CFtm4BA7.js +1 -0
  625. zenml/zen_server/dashboard/assets/hamza-NKKOZz1I.webp +0 -0
  626. zenml/zen_server/dashboard/assets/help-Cc9bBIJH.js +1 -0
  627. zenml/zen_server/dashboard/assets/index-CE0aQlv8.js +55 -0
  628. zenml/zen_server/dashboard/assets/index-CtdYkjUi.js +1 -0
  629. zenml/zen_server/dashboard/assets/index-CyBKZcpO.js +1 -0
  630. zenml/zen_server/dashboard/assets/index-DXvT1_Um.css +1 -0
  631. zenml/zen_server/dashboard/assets/index-Uu49AX48.js +1 -0
  632. zenml/zen_server/dashboard/assets/index-v6gQjDEo.js +1 -0
  633. zenml/zen_server/dashboard/assets/index.esm-Dy6Z9Ung.js +1 -0
  634. zenml/zen_server/dashboard/assets/inter-cyrillic-400-normal-BLGc9T1a.woff2 +0 -0
  635. zenml/zen_server/dashboard/assets/inter-cyrillic-400-normal-ZzOtrSSW.woff +0 -0
  636. zenml/zen_server/dashboard/assets/inter-cyrillic-500-normal-D4Vwzodn.woff2 +0 -0
  637. zenml/zen_server/dashboard/assets/inter-cyrillic-500-normal-DH2hs3aW.woff +0 -0
  638. zenml/zen_server/dashboard/assets/inter-cyrillic-600-normal-BGBWG807.woff2 +0 -0
  639. zenml/zen_server/dashboard/assets/inter-cyrillic-600-normal-BuzJQFbW.woff +0 -0
  640. zenml/zen_server/dashboard/assets/inter-cyrillic-ext-400-normal-BPnxn4xp.woff +0 -0
  641. zenml/zen_server/dashboard/assets/inter-cyrillic-ext-400-normal-Dc4VJyIJ.woff2 +0 -0
  642. zenml/zen_server/dashboard/assets/inter-cyrillic-ext-500-normal-BShVwWPj.woff2 +0 -0
  643. zenml/zen_server/dashboard/assets/inter-cyrillic-ext-500-normal-CUiC4oBV.woff +0 -0
  644. zenml/zen_server/dashboard/assets/inter-cyrillic-ext-600-normal-Bt9VVOA-.woff +0 -0
  645. zenml/zen_server/dashboard/assets/inter-cyrillic-ext-600-normal-CaqZN2hq.woff2 +0 -0
  646. zenml/zen_server/dashboard/assets/inter-greek-400-normal-BZzXV7-1.woff +0 -0
  647. zenml/zen_server/dashboard/assets/inter-greek-400-normal-DxZsaF_h.woff2 +0 -0
  648. zenml/zen_server/dashboard/assets/inter-greek-500-normal-CeQXL5ds.woff2 +0 -0
  649. zenml/zen_server/dashboard/assets/inter-greek-500-normal-d_eO-yCQ.woff +0 -0
  650. zenml/zen_server/dashboard/assets/inter-greek-600-normal-CwicyhtI.woff +0 -0
  651. zenml/zen_server/dashboard/assets/inter-greek-600-normal-Dhlb-90d.woff2 +0 -0
  652. zenml/zen_server/dashboard/assets/inter-greek-ext-400-normal-Bput3-QP.woff2 +0 -0
  653. zenml/zen_server/dashboard/assets/inter-greek-ext-400-normal-DCpCPQOf.woff +0 -0
  654. zenml/zen_server/dashboard/assets/inter-greek-ext-500-normal-B6guLgqG.woff2 +0 -0
  655. zenml/zen_server/dashboard/assets/inter-greek-ext-500-normal-M2hEX8vc.woff +0 -0
  656. zenml/zen_server/dashboard/assets/inter-greek-ext-600-normal-C9WLioJ8.woff +0 -0
  657. zenml/zen_server/dashboard/assets/inter-greek-ext-600-normal-Cnui8OiR.woff2 +0 -0
  658. zenml/zen_server/dashboard/assets/inter-latin-400-normal-BOOGhInR.woff2 +0 -0
  659. zenml/zen_server/dashboard/assets/inter-latin-400-normal-gitzw0hO.woff +0 -0
  660. zenml/zen_server/dashboard/assets/inter-latin-500-normal-D2bGa7uu.woff2 +0 -0
  661. zenml/zen_server/dashboard/assets/inter-latin-500-normal-deR1Tlfd.woff +0 -0
  662. zenml/zen_server/dashboard/assets/inter-latin-600-normal-B5cFAncS.woff +0 -0
  663. zenml/zen_server/dashboard/assets/inter-latin-600-normal-D273HNI0.woff2 +0 -0
  664. zenml/zen_server/dashboard/assets/inter-latin-ext-400-normal-C1t-h-pH.woff +0 -0
  665. zenml/zen_server/dashboard/assets/inter-latin-ext-400-normal-hnt3BR84.woff2 +0 -0
  666. zenml/zen_server/dashboard/assets/inter-latin-ext-500-normal-CIS2RHJS.woff2 +0 -0
  667. zenml/zen_server/dashboard/assets/inter-latin-ext-500-normal-UMdmhHu2.woff +0 -0
  668. zenml/zen_server/dashboard/assets/inter-latin-ext-600-normal-BnYJhD27.woff2 +0 -0
  669. zenml/zen_server/dashboard/assets/inter-latin-ext-600-normal-CAF0vJDd.woff +0 -0
  670. zenml/zen_server/dashboard/assets/inter-vietnamese-400-normal-BUNmGMP1.woff +0 -0
  671. zenml/zen_server/dashboard/assets/inter-vietnamese-400-normal-DMkecbls.woff2 +0 -0
  672. zenml/zen_server/dashboard/assets/inter-vietnamese-500-normal-DOriooB6.woff2 +0 -0
  673. zenml/zen_server/dashboard/assets/inter-vietnamese-500-normal-DQPw2Hwd.woff +0 -0
  674. zenml/zen_server/dashboard/assets/inter-vietnamese-600-normal-Cc8MFFhd.woff2 +0 -0
  675. zenml/zen_server/dashboard/assets/inter-vietnamese-600-normal-Cm6aH8_k.woff +0 -0
  676. zenml/zen_server/dashboard/assets/key-icon-aH-QIa5R.js +1 -0
  677. zenml/zen_server/dashboard/assets/kubernetes-B2wmAJ1d.js +1 -0
  678. zenml/zen_server/dashboard/assets/layout-BtHBmE4w.js +1 -0
  679. zenml/zen_server/dashboard/assets/link-external-b9AXw_sW.js +1 -0
  680. zenml/zen_server/dashboard/assets/login-command-CkqxPtV3.js +1 -0
  681. zenml/zen_server/dashboard/assets/login-mutation-DNDVp_2H.js +1 -0
  682. zenml/zen_server/dashboard/assets/logs-WMSM52RF.js +1 -0
  683. zenml/zen_server/dashboard/assets/mcp-Cb1aMeoq.webp +0 -0
  684. zenml/zen_server/dashboard/assets/metaflow-weOkWNyT.svg +10 -0
  685. zenml/zen_server/dashboard/assets/not-found-Bmup4ctE.js +1 -0
  686. zenml/zen_server/dashboard/assets/package-C6uypY4h.js +1 -0
  687. zenml/zen_server/dashboard/assets/page--XLMzHrn.js +1 -0
  688. zenml/zen_server/dashboard/assets/page-ANYGfEUL.js +1 -0
  689. zenml/zen_server/dashboard/assets/page-B5Sr8pib.js +1 -0
  690. zenml/zen_server/dashboard/assets/page-BC27C_OI.js +2 -0
  691. zenml/zen_server/dashboard/assets/page-BNxYrN0q.js +1 -0
  692. zenml/zen_server/dashboard/assets/page-BYJfqgLN.js +1 -0
  693. zenml/zen_server/dashboard/assets/page-B_0XkV48.js +1 -0
  694. zenml/zen_server/dashboard/assets/page-BrmJp1Wt.js +1 -0
  695. zenml/zen_server/dashboard/assets/page-C2nU3Gxn.js +1 -0
  696. zenml/zen_server/dashboard/assets/page-C70wZtV2.js +1 -0
  697. zenml/zen_server/dashboard/assets/page-CHRn1fQm.js +1 -0
  698. zenml/zen_server/dashboard/assets/page-CWr96ZKN.js +1 -0
  699. zenml/zen_server/dashboard/assets/page-CXAbSyp9.js +1 -0
  700. zenml/zen_server/dashboard/assets/page-CaeI9ptC.js +1 -0
  701. zenml/zen_server/dashboard/assets/page-Cc8ZEuj4.js +1 -0
  702. zenml/zen_server/dashboard/assets/page-CltCNL0T.js +1 -0
  703. zenml/zen_server/dashboard/assets/page-CmlYj7Nl.js +1 -0
  704. zenml/zen_server/dashboard/assets/page-D6Ev5P8V.js +1 -0
  705. zenml/zen_server/dashboard/assets/page-D9Oh05fl.js +1 -0
  706. zenml/zen_server/dashboard/assets/page-DGlm1RVc.js +1 -0
  707. zenml/zen_server/dashboard/assets/page-DN4BVIOL.js +1 -0
  708. zenml/zen_server/dashboard/assets/page-Dif8CWyZ.js +1 -0
  709. zenml/zen_server/dashboard/assets/page-DlIi5ThM.js +1 -0
  710. zenml/zen_server/dashboard/assets/page-DoW7YxTu.js +1 -0
  711. zenml/zen_server/dashboard/assets/page-Dth9X1Ih.js +1 -0
  712. zenml/zen_server/dashboard/assets/page-DweqqCkF.js +1 -0
  713. zenml/zen_server/dashboard/assets/page-DyOJ_pq3.js +1 -0
  714. zenml/zen_server/dashboard/assets/page-Hn8q9iJZ.js +1 -0
  715. zenml/zen_server/dashboard/assets/page-IhckKFnD.js +6 -0
  716. zenml/zen_server/dashboard/assets/page-LyZ_l8vR.js +1 -0
  717. zenml/zen_server/dashboard/assets/page-PamGpk0j.js +1 -0
  718. zenml/zen_server/dashboard/assets/page-PxOWfKgF.js +2 -0
  719. zenml/zen_server/dashboard/assets/persist-DeXRG61d.js +1 -0
  720. zenml/zen_server/dashboard/assets/persist-vP0-Xl4f.js +1 -0
  721. zenml/zen_server/dashboard/assets/plus-tf1V2hTJ.js +1 -0
  722. zenml/zen_server/dashboard/assets/refresh-BjOeWlEq.js +1 -0
  723. zenml/zen_server/dashboard/assets/repos-video-D8kpu60k.svg +9 -0
  724. zenml/zen_server/dashboard/assets/rocket-DjT2cDvG.js +1 -0
  725. zenml/zen_server/dashboard/assets/service-DH_oUqQj.js +2 -0
  726. zenml/zen_server/dashboard/assets/settings_preview-0JLrRgHP.webp +0 -0
  727. zenml/zen_server/dashboard/assets/sharedSchema-Bw1_Wa7l.js +14 -0
  728. zenml/zen_server/dashboard/assets/stack-detail-query-B_0R_fd6.js +1 -0
  729. zenml/zen_server/dashboard/assets/stefan-B08Ftbba.webp +0 -0
  730. zenml/zen_server/dashboard/assets/templates-1S_8WeSK.webp +0 -0
  731. zenml/zen_server/dashboard/assets/tick-circle-BEX_Tp4v.js +1 -0
  732. zenml/zen_server/dashboard/assets/tour-cover-BYfeen6M.webp +0 -0
  733. zenml/zen_server/dashboard/assets/trash-arLUMWMS.js +1 -0
  734. zenml/zen_server/dashboard/assets/update-server-settings-mutation-D9qYhfaN.js +1 -0
  735. zenml/zen_server/dashboard/assets/upgrade-form-CwRHBuXB.webp +0 -0
  736. zenml/zen_server/dashboard/assets/url-Dh93fvh0.js +1 -0
  737. zenml/zen_server/dashboard/assets/zod-BwEbpOxH.js +1 -0
  738. zenml/zen_server/dashboard/index.html +19 -1
  739. zenml/zen_server/deploy/__init__.py +7 -16
  740. zenml/zen_server/deploy/base_provider.py +49 -78
  741. zenml/zen_server/deploy/{local → daemon}/__init__.py +3 -3
  742. zenml/zen_server/deploy/{local/local_provider.py → daemon/daemon_provider.py} +48 -66
  743. zenml/zen_server/deploy/{local/local_zen_server.py → daemon/daemon_zen_server.py} +78 -62
  744. zenml/zen_server/deploy/deployer.py +94 -175
  745. zenml/zen_server/deploy/deployment.py +23 -17
  746. zenml/zen_server/deploy/docker/docker_provider.py +15 -31
  747. zenml/zen_server/deploy/docker/docker_zen_server.py +30 -35
  748. zenml/zen_server/deploy/helm/Chart.yaml +1 -1
  749. zenml/zen_server/deploy/helm/README.md +3 -13
  750. zenml/zen_server/deploy/helm/templates/NOTES.txt +2 -8
  751. zenml/zen_server/deploy/helm/templates/_environment.tpl +129 -3
  752. zenml/zen_server/deploy/helm/templates/server-db-job.yaml +45 -18
  753. zenml/zen_server/deploy/helm/templates/server-db-pvc.yaml +25 -0
  754. zenml/zen_server/deploy/helm/templates/server-deployment.yaml +22 -6
  755. zenml/zen_server/deploy/helm/templates/server-secret.yaml +2 -12
  756. zenml/zen_server/deploy/helm/values.yaml +134 -21
  757. zenml/zen_server/exceptions.py +20 -1
  758. zenml/zen_server/feature_gate/__init__.py +13 -0
  759. zenml/zen_server/feature_gate/endpoint_utils.py +61 -0
  760. zenml/zen_server/feature_gate/feature_gate_interface.py +49 -0
  761. zenml/zen_server/feature_gate/zenml_cloud_feature_gate.py +125 -0
  762. zenml/zen_server/jwt.py +48 -31
  763. zenml/zen_server/rate_limit.py +200 -0
  764. zenml/zen_server/rbac/endpoint_utils.py +92 -9
  765. zenml/zen_server/rbac/models.py +21 -17
  766. zenml/zen_server/rbac/rbac_sql_zen_store.py +175 -0
  767. zenml/zen_server/rbac/utils.py +71 -30
  768. zenml/zen_server/rbac/zenml_cloud_rbac.py +13 -188
  769. zenml/zen_server/routers/actions_endpoints.py +324 -0
  770. zenml/zen_server/routers/artifact_version_endpoints.py +28 -2
  771. zenml/zen_server/routers/auth_endpoints.py +205 -110
  772. zenml/zen_server/routers/code_repositories_endpoints.py +1 -0
  773. zenml/zen_server/routers/devices_endpoints.py +56 -49
  774. zenml/zen_server/routers/event_source_endpoints.py +327 -0
  775. zenml/zen_server/routers/logs_endpoints.py +66 -0
  776. zenml/zen_server/routers/model_versions_endpoints.py +59 -0
  777. zenml/zen_server/routers/models_endpoints.py +8 -1
  778. zenml/zen_server/routers/pipeline_builds_endpoints.py +6 -1
  779. zenml/zen_server/routers/pipeline_deployments_endpoints.py +35 -0
  780. zenml/zen_server/routers/pipelines_endpoints.py +19 -32
  781. zenml/zen_server/routers/plugin_endpoints.py +107 -0
  782. zenml/zen_server/routers/run_templates_endpoints.py +212 -0
  783. zenml/zen_server/routers/runs_endpoints.py +91 -32
  784. zenml/zen_server/routers/schedule_endpoints.py +1 -0
  785. zenml/zen_server/routers/secrets_endpoints.py +4 -2
  786. zenml/zen_server/routers/server_endpoints.py +186 -4
  787. zenml/zen_server/routers/service_connectors_endpoints.py +56 -0
  788. zenml/zen_server/routers/service_endpoints.py +180 -0
  789. zenml/zen_server/routers/stack_components_endpoints.py +2 -1
  790. zenml/zen_server/routers/stack_deployment_endpoints.py +164 -0
  791. zenml/zen_server/routers/steps_endpoints.py +21 -12
  792. zenml/zen_server/routers/triggers_endpoints.py +336 -0
  793. zenml/zen_server/routers/users_endpoints.py +280 -45
  794. zenml/zen_server/routers/webhook_endpoints.py +127 -0
  795. zenml/zen_server/routers/workspaces_endpoints.py +220 -185
  796. zenml/zen_server/secure_headers.py +120 -0
  797. zenml/{new → zen_server/template_execution}/__init__.py +1 -1
  798. zenml/zen_server/template_execution/runner_entrypoint_configuration.py +42 -0
  799. zenml/zen_server/template_execution/utils.py +474 -0
  800. zenml/zen_server/template_execution/workload_manager_interface.py +92 -0
  801. zenml/zen_server/utils.py +310 -74
  802. zenml/zen_server/zen_server_api.py +294 -52
  803. zenml/zen_stores/base_zen_store.py +71 -57
  804. zenml/zen_stores/migrations/alembic.py +22 -9
  805. zenml/zen_stores/migrations/env.py +2 -2
  806. zenml/zen_stores/migrations/utils.py +731 -0
  807. zenml/zen_stores/migrations/versions/0.21.0_release.py +0 -1
  808. zenml/zen_stores/migrations/versions/0.21.1_release.py +0 -1
  809. zenml/zen_stores/migrations/versions/0.22.0_release.py +0 -1
  810. zenml/zen_stores/migrations/versions/0.23.0_release.py +0 -1
  811. zenml/zen_stores/migrations/versions/0.30.0_release.py +0 -1
  812. zenml/zen_stores/migrations/versions/0.31.0_release.py +0 -1
  813. zenml/zen_stores/migrations/versions/0.31.1_release.py +0 -1
  814. zenml/zen_stores/migrations/versions/0.32.0_release.py +0 -1
  815. zenml/zen_stores/migrations/versions/0.32.1_release.py +0 -1
  816. zenml/zen_stores/migrations/versions/0.33.0_release.py +0 -1
  817. zenml/zen_stores/migrations/versions/0.34.0_release.py +0 -1
  818. zenml/zen_stores/migrations/versions/0.35.0_release.py +0 -1
  819. zenml/zen_stores/migrations/versions/0.35.1_release.py +0 -1
  820. zenml/zen_stores/migrations/versions/0.36.0_release.py +0 -1
  821. zenml/zen_stores/migrations/versions/0.36.1_release.py +0 -1
  822. zenml/zen_stores/migrations/versions/0.37.0_release.py +0 -1
  823. zenml/zen_stores/migrations/versions/0.38.0_release.py +0 -1
  824. zenml/zen_stores/migrations/versions/0.39.0_release.py +0 -1
  825. zenml/zen_stores/migrations/versions/0.39.1_release.py +0 -1
  826. zenml/zen_stores/migrations/versions/0.40.0_release.py +0 -1
  827. zenml/zen_stores/migrations/versions/0.40.1_release.py +0 -1
  828. zenml/zen_stores/migrations/versions/0.40.2_release.py +0 -1
  829. zenml/zen_stores/migrations/versions/0.40.3_release.py +0 -1
  830. zenml/zen_stores/migrations/versions/0.41.0_release.py +0 -1
  831. zenml/zen_stores/migrations/versions/0.42.0_release.py +0 -1
  832. zenml/zen_stores/migrations/versions/0.42.1_release.py +0 -1
  833. zenml/zen_stores/migrations/versions/0.43.0_release.py +0 -1
  834. zenml/zen_stores/migrations/versions/0.44.0_release.py +0 -1
  835. zenml/zen_stores/migrations/versions/0.44.1_release.py +0 -1
  836. zenml/zen_stores/migrations/versions/0.44.2_release.py +0 -1
  837. zenml/zen_stores/migrations/versions/0.44.3_release.py +0 -1
  838. zenml/zen_stores/migrations/versions/0.45.0_release.py +0 -1
  839. zenml/zen_stores/migrations/versions/0.45.1_release_0_45_1.py +0 -1
  840. zenml/zen_stores/migrations/versions/0.45.2_release.py +0 -1
  841. zenml/zen_stores/migrations/versions/0.45.3_release.py +0 -1
  842. zenml/zen_stores/migrations/versions/0.45.4_release.py +0 -1
  843. zenml/zen_stores/migrations/versions/0.45.5_release.py +0 -1
  844. zenml/zen_stores/migrations/versions/0.45.6_release.py +0 -1
  845. zenml/zen_stores/migrations/versions/0.46.0_release.py +0 -1
  846. zenml/zen_stores/migrations/versions/0.46.1_release.py +0 -1
  847. zenml/zen_stores/migrations/versions/0.47.0_release.py +0 -1
  848. zenml/zen_stores/migrations/versions/0.50.0_release.py +0 -1
  849. zenml/zen_stores/migrations/versions/0.51.0_release.py +0 -1
  850. zenml/zen_stores/migrations/versions/0.52.0_release.py +0 -1
  851. zenml/zen_stores/migrations/versions/0.53.0_release.py +0 -1
  852. zenml/zen_stores/migrations/versions/0.53.1_release.py +0 -1
  853. zenml/zen_stores/migrations/versions/0.54.0_release.py +0 -1
  854. zenml/zen_stores/migrations/versions/0.54.1_release.py +0 -1
  855. zenml/zen_stores/migrations/versions/0.55.0_release.py +0 -1
  856. zenml/zen_stores/migrations/versions/0.55.1_release.py +23 -0
  857. zenml/zen_stores/migrations/versions/0.55.2_release.py +23 -0
  858. zenml/zen_stores/migrations/versions/0.55.3_release.py +23 -0
  859. zenml/zen_stores/migrations/versions/0.55.4_release.py +23 -0
  860. zenml/zen_stores/migrations/versions/0.55.5_release.py +23 -0
  861. zenml/zen_stores/migrations/versions/0.56.0_release.py +23 -0
  862. zenml/zen_stores/migrations/versions/0.56.1_release.py +23 -0
  863. zenml/zen_stores/migrations/versions/0.56.2_release.py +23 -0
  864. zenml/zen_stores/migrations/versions/0.56.3_release.py +23 -0
  865. zenml/zen_stores/migrations/versions/0.56.4_release.py +23 -0
  866. zenml/zen_stores/migrations/versions/0.57.0.rc1_release.py +23 -0
  867. zenml/zen_stores/migrations/versions/0.57.0.rc2_release.py +23 -0
  868. zenml/zen_stores/migrations/versions/0.57.0_release.py +23 -0
  869. zenml/zen_stores/migrations/versions/0.57.1_release.py +23 -0
  870. zenml/zen_stores/migrations/versions/0.58.0_release.py +23 -0
  871. zenml/zen_stores/migrations/versions/0.58.1_release.py +23 -0
  872. zenml/zen_stores/migrations/versions/0.58.2_release.py +23 -0
  873. zenml/zen_stores/migrations/versions/0.60.0_release.py +23 -0
  874. zenml/zen_stores/migrations/versions/0.61.0_release.py +23 -0
  875. zenml/zen_stores/migrations/versions/0.62.0_release.py +23 -0
  876. zenml/zen_stores/migrations/versions/0.63.0_release.py +23 -0
  877. zenml/zen_stores/migrations/versions/0.64.0_release.py +23 -0
  878. zenml/zen_stores/migrations/versions/0.65.0_release.py +23 -0
  879. zenml/zen_stores/migrations/versions/0.66.0_release.py +23 -0
  880. zenml/zen_stores/migrations/versions/0.67.0_release.py +23 -0
  881. zenml/zen_stores/migrations/versions/0.68.0_release.py +23 -0
  882. zenml/zen_stores/migrations/versions/0.68.1_release.py +23 -0
  883. zenml/zen_stores/migrations/versions/0.70.0_release.py +23 -0
  884. zenml/zen_stores/migrations/versions/0.71.0_release.py +23 -0
  885. zenml/zen_stores/migrations/versions/0.72.0_release.py +23 -0
  886. zenml/zen_stores/migrations/versions/026d4577b6a0_add_code_path.py +39 -0
  887. zenml/zen_stores/migrations/versions/03742aa7fdd7_add_secrets.py +1 -0
  888. zenml/zen_stores/migrations/versions/0701da9951a0_added_service_table.py +94 -0
  889. zenml/zen_stores/migrations/versions/0b06faa59c93_add_service_connectors.py +1 -0
  890. zenml/zen_stores/migrations/versions/0d707865f404_adding_labels_to_stacks.py +30 -0
  891. zenml/zen_stores/migrations/versions/0e4735b23577_increase_pipeline_spec_field_length.py +1 -0
  892. zenml/zen_stores/migrations/versions/1041bc644e0d_remove_secrets_manager.py +6 -3
  893. zenml/zen_stores/migrations/versions/10a907dad202_delete_mlmd_tables.py +2 -1
  894. zenml/zen_stores/migrations/versions/14d687c8fa1c_rename_model_config_to_model_version.py +1 -0
  895. zenml/zen_stores/migrations/versions/19f27d5b234e_add_build_and_deployment_tables.py +1 -0
  896. zenml/zen_stores/migrations/versions/1a9a9d2a836d_admin_users.py +56 -0
  897. zenml/zen_stores/migrations/versions/1ac1b9c04da1_make_secrets_values_optional.py +1 -0
  898. zenml/zen_stores/migrations/versions/1cb6477f72d6_move_artifact_save_type.py +99 -0
  899. zenml/zen_stores/migrations/versions/1d74e596abb8_add_run_once_start_time_to_schedule.py +36 -0
  900. zenml/zen_stores/migrations/versions/1d8f30c54477_migrate_to_new_.py +124 -0
  901. zenml/zen_stores/migrations/versions/248dfd320b68_update_size_of_flavor_config_schema.py +1 -0
  902. zenml/zen_stores/migrations/versions/25155145c545_separate_actions_and_triggers.py +228 -0
  903. zenml/zen_stores/migrations/versions/26351d482b9e_add_step_run_unique_constraint.py +37 -0
  904. zenml/zen_stores/migrations/versions/26b776ad583e_redesign_artifacts.py +9 -10
  905. zenml/zen_stores/migrations/versions/2d201872e23c_remove_db_dependency_loop.py +29 -0
  906. zenml/zen_stores/migrations/versions/37835ce041d2_optimizing_database.py +4 -3
  907. zenml/zen_stores/migrations/versions/389046140cad_data_versioning.py +1 -0
  908. zenml/zen_stores/migrations/versions/3944116bbd56_rename_project_to_workspace.py +1 -0
  909. zenml/zen_stores/migrations/versions/3b68abe58f44_add_model_watchtower_entities.py +1 -0
  910. zenml/zen_stores/migrations/versions/3c5a367730c2_add_environment_info_to_runs.py +1 -0
  911. zenml/zen_stores/migrations/versions/3dcc5d20e82f_add_last_user_activity.py +51 -0
  912. zenml/zen_stores/migrations/versions/43a86093b60e_add_labels_for_stack_components.py +1 -0
  913. zenml/zen_stores/migrations/versions/46506f72f0ed_add_server_settings.py +123 -0
  914. zenml/zen_stores/migrations/versions/479103df60b6_add_triggers.py +162 -0
  915. zenml/zen_stores/migrations/versions/4a3087070f4e_add_step_source_code.py +1 -0
  916. zenml/zen_stores/migrations/versions/4c41c0ca42db_add_code_repository_table.py +1 -0
  917. zenml/zen_stores/migrations/versions/4d688d8f7aff_rename_model_version_to_model.py +1 -0
  918. zenml/zen_stores/migrations/versions/4e1972485075_endpoint_artifact_deployment_artifact.py +1 -0
  919. zenml/zen_stores/migrations/versions/4f66af55fbb9_rename_model_config_model_to_model_.py +1 -0
  920. zenml/zen_stores/migrations/versions/5330ba58bf20_rename_tables_and_foreign_keys.py +8 -9
  921. zenml/zen_stores/migrations/versions/5994f9ad0489_introduce_role_permissions.py +4 -2
  922. zenml/zen_stores/migrations/versions/5cc3f41cf048_add_save_models_to_registry.py +1 -0
  923. zenml/zen_stores/migrations/versions/6119cd9b93c2_tags_table.py +1 -0
  924. zenml/zen_stores/migrations/versions/623a234c11f5_add_sdk_docs_url_to_flavors.py +1 -0
  925. zenml/zen_stores/migrations/versions/6917bce75069_add_pipeline_run_unique_constraint.py +5 -4
  926. zenml/zen_stores/migrations/versions/6a28c4fd0ef2_add_caching_info.py +1 -0
  927. zenml/zen_stores/migrations/versions/6f707b385dc1_fix_model_artifacts.py +1 -0
  928. zenml/zen_stores/migrations/versions/722392c91006_make_is_service_account_mandatory.py +1 -0
  929. zenml/zen_stores/migrations/versions/72675226b2de_unique_users.py +31 -0
  930. zenml/zen_stores/migrations/versions/72722dee4686_track_server_version.py +1 -0
  931. zenml/zen_stores/migrations/versions/7280c14811d6_use_text_type.py +1 -0
  932. zenml/zen_stores/migrations/versions/728c6369cfaa_add_name_column_to_input_artifact_pk.py +4 -2
  933. zenml/zen_stores/migrations/versions/729263e47b55_fix_external_input_artifacts.py +1 -0
  934. zenml/zen_stores/migrations/versions/743ec82b1b3c_update_size_of_build_images.py +3 -2
  935. zenml/zen_stores/migrations/versions/7500f434b71c_remove_shared_columns.py +4 -2
  936. zenml/zen_stores/migrations/versions/76a7b9451ccd_add_build_template_deployment_id.py +52 -0
  937. zenml/zen_stores/migrations/versions/7834208cc3f6_artifact_project_scoping.py +9 -7
  938. zenml/zen_stores/migrations/versions/7b651bf6822e_track_secrets_in_db.py +7 -7
  939. zenml/zen_stores/migrations/versions/7d1919bb1ef0_add_run_templates.py +100 -0
  940. zenml/zen_stores/migrations/versions/7e4a481d17f7_add_identity_table.py +3 -2
  941. zenml/zen_stores/migrations/versions/7f603e583dd7_fixed_migration.py +2 -1
  942. zenml/zen_stores/migrations/versions/86fa52918b54_remove_teams_and_roles.py +1 -0
  943. zenml/zen_stores/migrations/versions/8a64fbfecda0_add_num_outputs_to_run_step.py +1 -0
  944. zenml/zen_stores/migrations/versions/8ed03137cacc_polymorthic_run_metadata.py +1 -0
  945. zenml/zen_stores/migrations/versions/904464ea4041_add_pipeline_model_run_unique_constraints.py +192 -0
  946. zenml/zen_stores/migrations/versions/909550c7c4da_remove_user_hub_token.py +36 -0
  947. zenml/zen_stores/migrations/versions/93cbda80a732_add_service_accounts.py +1 -0
  948. zenml/zen_stores/migrations/versions/979eff8fc4b1_add_code_repo_description_and_logo_url.py +1 -0
  949. zenml/zen_stores/migrations/versions/9971237fa937_artifact_visualizations.py +1 -0
  950. zenml/zen_stores/migrations/versions/9d8020441014_increase_step_configuration_length.py +1 -0
  951. zenml/zen_stores/migrations/versions/a1237ba94fd8_add_model_version_producer_run_unique_.py +68 -0
  952. zenml/zen_stores/migrations/versions/a39c4184c8ce_remove_secrets_manager_flavors.py +3 -2
  953. zenml/zen_stores/migrations/versions/a91762e6be36_artifact_version_table.py +5 -4
  954. zenml/zen_stores/migrations/versions/ade72effebaf_added_logs_table.py +1 -0
  955. zenml/zen_stores/migrations/versions/alembic_start.py +2 -1
  956. zenml/zen_stores/migrations/versions/b4eccf34dfa3_add_hub_token_to_user_model.py +1 -0
  957. zenml/zen_stores/migrations/versions/b4fca5241eea_migrate_onboarding_state.py +167 -0
  958. zenml/zen_stores/migrations/versions/b557b2871693_update_step_run_input_types.py +33 -0
  959. zenml/zen_stores/migrations/versions/b59aa68fdb1f_simplify_pipelines.py +139 -0
  960. zenml/zen_stores/migrations/versions/b73bc71f1106_remove_component_spec_path.py +36 -0
  961. zenml/zen_stores/migrations/versions/bf2120261b5a_add_configured_model_version_id.py +74 -0
  962. zenml/zen_stores/migrations/versions/c1b18cec3a48_increase_length_on_flavor_config_schema.py +1 -0
  963. zenml/zen_stores/migrations/versions/c22561cbb3a9_add_artifact_unique_constraints.py +86 -0
  964. zenml/zen_stores/migrations/versions/cc269488e5a9_separate_run_metadata.py +135 -0
  965. zenml/zen_stores/migrations/versions/cc9894cb58aa_add_user_metadata.py +41 -0
  966. zenml/zen_stores/migrations/versions/ccd68b7825ae_add_status_to_pipeline_and_step_run.py +1 -0
  967. zenml/zen_stores/migrations/versions/d02b3d3464cf_add_orchestrator_run_id_column.py +1 -0
  968. zenml/zen_stores/migrations/versions/d26471b6fe8f_update_build_filtering.py +1 -0
  969. zenml/zen_stores/migrations/versions/d7b3acf9aa46_create_schedule_table.py +1 -0
  970. zenml/zen_stores/migrations/versions/e1d66d91a099_add_stack_and_component_spec_paths_to_.py +1 -0
  971. zenml/zen_stores/migrations/versions/e5225281b4d3_add_connector_skew_tolerance.py +1 -0
  972. zenml/zen_stores/migrations/versions/e65aa6708ff7_pipeline_versioning.py +1 -0
  973. zenml/zen_stores/migrations/versions/ec0d785ca296_create_run_metadata_table.py +1 -0
  974. zenml/zen_stores/migrations/versions/ec6307720f92_simplify_model_version_links.py +119 -0
  975. zenml/zen_stores/migrations/versions/f3b3964e3a0f_add_oauth_devices.py +1 -0
  976. zenml/zen_stores/migrations/versions/f49904a80aa7_increase_length_of_artifact_table_sources.py +1 -0
  977. zenml/zen_stores/migrations/versions/fbd7f18ced1e_increase_step_run_field_lengths.py +5 -4
  978. zenml/zen_stores/rest_zen_store.py +1315 -304
  979. zenml/zen_stores/schemas/__init__.py +22 -3
  980. zenml/zen_stores/schemas/action_schemas.py +192 -0
  981. zenml/zen_stores/schemas/api_key_schemas.py +23 -10
  982. zenml/zen_stores/schemas/artifact_schemas.py +112 -49
  983. zenml/zen_stores/schemas/artifact_visualization_schemas.py +17 -8
  984. zenml/zen_stores/schemas/base_schemas.py +27 -0
  985. zenml/zen_stores/schemas/code_repository_schemas.py +25 -10
  986. zenml/zen_stores/schemas/component_schemas.py +74 -11
  987. zenml/zen_stores/schemas/constants.py +16 -0
  988. zenml/zen_stores/schemas/device_schemas.py +29 -15
  989. zenml/zen_stores/schemas/event_source_schemas.py +188 -0
  990. zenml/zen_stores/schemas/flavor_schemas.py +19 -9
  991. zenml/zen_stores/schemas/logs_schemas.py +12 -6
  992. zenml/zen_stores/schemas/model_schemas.py +192 -139
  993. zenml/zen_stores/schemas/pipeline_build_schemas.py +16 -16
  994. zenml/zen_stores/schemas/pipeline_deployment_schemas.py +58 -17
  995. zenml/zen_stores/schemas/pipeline_run_schemas.py +170 -35
  996. zenml/zen_stores/schemas/pipeline_schemas.py +51 -33
  997. zenml/zen_stores/schemas/run_metadata_schemas.py +28 -78
  998. zenml/zen_stores/schemas/run_template_schemas.py +267 -0
  999. zenml/zen_stores/schemas/schedule_schema.py +15 -5
  1000. zenml/zen_stores/schemas/secret_schemas.py +18 -10
  1001. zenml/zen_stores/schemas/server_settings_schemas.py +129 -0
  1002. zenml/zen_stores/schemas/service_connector_schemas.py +13 -6
  1003. zenml/zen_stores/schemas/service_schemas.py +258 -0
  1004. zenml/zen_stores/schemas/stack_schemas.py +23 -6
  1005. zenml/zen_stores/schemas/step_run_schemas.py +132 -41
  1006. zenml/zen_stores/schemas/tag_schemas.py +31 -50
  1007. zenml/zen_stores/schemas/trigger_schemas.py +316 -0
  1008. zenml/zen_stores/schemas/user_schemas.py +66 -23
  1009. zenml/zen_stores/schemas/utils.py +112 -0
  1010. zenml/zen_stores/schemas/workspace_schemas.py +36 -19
  1011. zenml/zen_stores/secrets_stores/aws_secrets_store.py +41 -32
  1012. zenml/zen_stores/secrets_stores/azure_secrets_store.py +20 -23
  1013. zenml/zen_stores/secrets_stores/base_secrets_store.py +80 -12
  1014. zenml/zen_stores/secrets_stores/gcp_secrets_store.py +42 -33
  1015. zenml/zen_stores/secrets_stores/hashicorp_secrets_store.py +7 -11
  1016. zenml/zen_stores/secrets_stores/secrets_store_interface.py +1 -0
  1017. zenml/zen_stores/secrets_stores/service_connector_secrets_store.py +15 -8
  1018. zenml/zen_stores/secrets_stores/sql_secrets_store.py +8 -9
  1019. zenml/zen_stores/sql_zen_store.py +4062 -799
  1020. zenml/zen_stores/template_utils.py +263 -0
  1021. zenml/zen_stores/zen_store_interface.py +614 -44
  1022. zenml_nightly-0.72.0.dev20250115.dist-info/METADATA +484 -0
  1023. zenml_nightly-0.72.0.dev20250115.dist-info/RECORD +1292 -0
  1024. {zenml_nightly-0.55.0.dev20240124.dist-info → zenml_nightly-0.72.0.dev20250115.dist-info}/WHEEL +1 -1
  1025. CLA.md +0 -110
  1026. CODE-OF-CONDUCT.md +0 -132
  1027. CONTRIBUTING.md +0 -260
  1028. README.md +0 -304
  1029. RELEASE_NOTES.md +0 -3919
  1030. ROADMAP.md +0 -5
  1031. SECURITY.md +0 -15
  1032. zenml/_hub/client.py +0 -285
  1033. zenml/_hub/constants.py +0 -21
  1034. zenml/_hub/utils.py +0 -80
  1035. zenml/api.py +0 -61
  1036. zenml/cli/hub.py +0 -1115
  1037. zenml/cli/stack_recipes.py +0 -469
  1038. zenml/integrations/gcp/google_cloud_function.py +0 -187
  1039. zenml/integrations/gcp/google_cloud_scheduler.py +0 -83
  1040. zenml/integrations/gcp/orchestrators/vertex_scheduler/main.py +0 -91
  1041. zenml/integrations/gcp/orchestrators/vertex_scheduler/requirements.txt +0 -2
  1042. zenml/integrations/kserve/__init__.py +0 -57
  1043. zenml/integrations/kserve/custom_deployer/zenml_custom_model.py +0 -175
  1044. zenml/integrations/kserve/flavors/kserve_model_deployer_flavor.py +0 -137
  1045. zenml/integrations/kserve/model_deployers/kserve_model_deployer.py +0 -1003
  1046. zenml/integrations/kserve/secret_schemas/secret_schemas.py +0 -65
  1047. zenml/integrations/kserve/services/kserve_deployment.py +0 -596
  1048. zenml/integrations/kserve/steps/__init__.py +0 -22
  1049. zenml/integrations/kserve/steps/kserve_deployer.py +0 -472
  1050. zenml/integrations/kserve/steps/kserve_step_utils.py +0 -293
  1051. zenml/integrations/kubeflow/utils.py +0 -96
  1052. zenml/lineage_graph/lineage_graph.py +0 -244
  1053. zenml/lineage_graph/node/artifact_node.py +0 -52
  1054. zenml/lineage_graph/node/step_node.py +0 -41
  1055. zenml/models/v2/base/internal.py +0 -37
  1056. zenml/models/v2/base/update.py +0 -40
  1057. zenml/models/v2/misc/hub_plugin_models.py +0 -79
  1058. zenml/new/pipelines/deserialization_utils.py +0 -291
  1059. zenml/new/pipelines/model_utils.py +0 -72
  1060. zenml/new/pipelines/pipeline_decorator.py +0 -109
  1061. zenml/new/steps/step_decorator.py +0 -160
  1062. zenml/pipelines/base_pipeline.py +0 -274
  1063. zenml/post_execution/pipeline.py +0 -58
  1064. zenml/post_execution/pipeline_run.py +0 -55
  1065. zenml/services/service_registry.py +0 -214
  1066. zenml/services/terraform/__init__.py +0 -14
  1067. zenml/services/terraform/terraform_service.py +0 -441
  1068. zenml/steps/step_environment.py +0 -108
  1069. zenml/steps/step_output.py +0 -36
  1070. zenml/utils/mlstacks_utils.py +0 -635
  1071. zenml/utils/terraform_utils.py +0 -42
  1072. zenml/zen_server/dashboard/_redirects +0 -1
  1073. zenml/zen_server/dashboard/asset-manifest.json +0 -131
  1074. zenml/zen_server/dashboard/manifest.json +0 -25
  1075. zenml/zen_server/dashboard/precache-manifest.c139638dcc4d9d3425353266447a2fad.js +0 -462
  1076. zenml/zen_server/dashboard/robots.txt +0 -2
  1077. zenml/zen_server/dashboard/service-worker.js +0 -39
  1078. zenml/zen_server/dashboard/static/css/2.5b37d44a.chunk.css +0 -16
  1079. zenml/zen_server/dashboard/static/css/2.5b37d44a.chunk.css.map +0 -1
  1080. zenml/zen_server/dashboard/static/css/main.77e46c35.chunk.css +0 -2
  1081. zenml/zen_server/dashboard/static/css/main.77e46c35.chunk.css.map +0 -1
  1082. zenml/zen_server/dashboard/static/js/2.bb4cef22.chunk.js +0 -3
  1083. zenml/zen_server/dashboard/static/js/2.bb4cef22.chunk.js.LICENSE.txt +0 -95
  1084. zenml/zen_server/dashboard/static/js/2.bb4cef22.chunk.js.map +0 -1
  1085. zenml/zen_server/dashboard/static/js/main.270838b4.chunk.js +0 -2
  1086. zenml/zen_server/dashboard/static/js/main.270838b4.chunk.js.map +0 -1
  1087. zenml/zen_server/dashboard/static/js/runtime-main.bfca2edd.js +0 -2
  1088. zenml/zen_server/dashboard/static/js/runtime-main.bfca2edd.js.map +0 -1
  1089. zenml/zen_server/dashboard/static/media/AlertTriangle.28aee535.svg +0 -5
  1090. zenml/zen_server/dashboard/static/media/ArrowSquareOut.abfb9bc7.svg +0 -5
  1091. zenml/zen_server/dashboard/static/media/Back.86c23a22.svg +0 -4
  1092. zenml/zen_server/dashboard/static/media/BookOpen.5cb101ff.svg +0 -4
  1093. zenml/zen_server/dashboard/static/media/BoundingBox.1eb98717.svg +0 -10
  1094. zenml/zen_server/dashboard/static/media/Burger.9b1c67d7.svg +0 -3
  1095. zenml/zen_server/dashboard/static/media/Cached.2381fb8d.svg +0 -1
  1096. zenml/zen_server/dashboard/static/media/Calendar.356e11c7.svg +0 -3
  1097. zenml/zen_server/dashboard/static/media/ChartBarHorizontal.0247447b.svg +0 -6
  1098. zenml/zen_server/dashboard/static/media/ChartLine.0d79e18d.svg +0 -4
  1099. zenml/zen_server/dashboard/static/media/ChatDots.2e1c9211.svg +0 -6
  1100. zenml/zen_server/dashboard/static/media/Check.dad6beb2.svg +0 -3
  1101. zenml/zen_server/dashboard/static/media/CheckCircleFilled.c19566d0.svg +0 -3
  1102. zenml/zen_server/dashboard/static/media/Checkbox.af50e31e.svg +0 -3
  1103. zenml/zen_server/dashboard/static/media/ChevronDown.f860ce32.svg +0 -3
  1104. zenml/zen_server/dashboard/static/media/ChevronDownLight.6642d756.svg +0 -3
  1105. zenml/zen_server/dashboard/static/media/ChevronLeft.f6edfcdb.svg +0 -3
  1106. zenml/zen_server/dashboard/static/media/CircleCheck.f98fd6ca.svg +0 -1
  1107. zenml/zen_server/dashboard/static/media/Clock.ffc9de95.svg +0 -3
  1108. zenml/zen_server/dashboard/static/media/Close.74e9efbc.svg +0 -5
  1109. zenml/zen_server/dashboard/static/media/CloseWithBorder.6960930a.svg +0 -3
  1110. zenml/zen_server/dashboard/static/media/CloseWithoutBorder.cd6f71df.svg +0 -3
  1111. zenml/zen_server/dashboard/static/media/CloudArrowUp.0aecb235.svg +0 -6
  1112. zenml/zen_server/dashboard/static/media/Code.ef0f33b5.svg +0 -3
  1113. zenml/zen_server/dashboard/static/media/Config.0be63f8a.svg +0 -1
  1114. zenml/zen_server/dashboard/static/media/Connector.9fd46ef1.svg +0 -10
  1115. zenml/zen_server/dashboard/static/media/Copy.36e2112a.svg +0 -1
  1116. zenml/zen_server/dashboard/static/media/Dashboard.d05787e0.svg +0 -3
  1117. zenml/zen_server/dashboard/static/media/Data.b1c3b5f8.svg +0 -3
  1118. zenml/zen_server/dashboard/static/media/Delete.3c361b28.svg +0 -8
  1119. zenml/zen_server/dashboard/static/media/Docs.7541d478.svg +0 -7
  1120. zenml/zen_server/dashboard/static/media/Download.fba04d87.svg +0 -5
  1121. zenml/zen_server/dashboard/static/media/Edit.490eb294.svg +0 -6
  1122. zenml/zen_server/dashboard/static/media/EmptyRightArrow.23749d01.svg +0 -3
  1123. zenml/zen_server/dashboard/static/media/Example.6396cd37.svg +0 -5
  1124. zenml/zen_server/dashboard/static/media/Extension.1394cd4a.svg +0 -3
  1125. zenml/zen_server/dashboard/static/media/Eye.d9e4ee62.svg +0 -4
  1126. zenml/zen_server/dashboard/static/media/Failed.0213c1a0.svg +0 -1
  1127. zenml/zen_server/dashboard/static/media/FileText.1f15bacd.svg +0 -7
  1128. zenml/zen_server/dashboard/static/media/Filter.ab6b9c0d.svg +0 -3
  1129. zenml/zen_server/dashboard/static/media/Folders.12b29887.svg +0 -5
  1130. zenml/zen_server/dashboard/static/media/FunnelFill.6df4c143.svg +0 -3
  1131. zenml/zen_server/dashboard/static/media/GitCommit.7dd9c2aa.svg +0 -5
  1132. zenml/zen_server/dashboard/static/media/GitHub_Logo.cefc2023.png +0 -0
  1133. zenml/zen_server/dashboard/static/media/Graph.2c63a892.svg +0 -11
  1134. zenml/zen_server/dashboard/static/media/History.08329240.svg +0 -3
  1135. zenml/zen_server/dashboard/static/media/Home.0843b0d5.svg +0 -3
  1136. zenml/zen_server/dashboard/static/media/ImageBuilder.ea762d9c.svg +0 -6
  1137. zenml/zen_server/dashboard/static/media/InProgress.304a0edc.svg +0 -1
  1138. zenml/zen_server/dashboard/static/media/Info.9fe10c5c.svg +0 -3
  1139. zenml/zen_server/dashboard/static/media/KeyboardReturn.491afbe3.svg +0 -3
  1140. zenml/zen_server/dashboard/static/media/Link.72bbb55d.svg +0 -4
  1141. zenml/zen_server/dashboard/static/media/Lock.30f5e1fe.svg +0 -5
  1142. zenml/zen_server/dashboard/static/media/Lock2.a769ea52.svg +0 -3
  1143. zenml/zen_server/dashboard/static/media/LockKey.92f21621.svg +0 -6
  1144. zenml/zen_server/dashboard/static/media/Logs.8bf4d005.svg +0 -5
  1145. zenml/zen_server/dashboard/static/media/MinusCircle.4188f418.svg +0 -4
  1146. zenml/zen_server/dashboard/static/media/ModelRegistry.f0de050a.svg +0 -6
  1147. zenml/zen_server/dashboard/static/media/MultiUser.a2ba7c67.svg +0 -10
  1148. zenml/zen_server/dashboard/static/media/PaginationFirst.92628634.svg +0 -4
  1149. zenml/zen_server/dashboard/static/media/PaginationLast.00d3c732.svg +0 -4
  1150. zenml/zen_server/dashboard/static/media/PaginationNext.86158845.svg +0 -3
  1151. zenml/zen_server/dashboard/static/media/PaginationPrev.60c18a88.svg +0 -3
  1152. zenml/zen_server/dashboard/static/media/Pen.f2d831d4.svg +0 -6
  1153. zenml/zen_server/dashboard/static/media/PhotoCamera.179d6d4c.svg +0 -3
  1154. zenml/zen_server/dashboard/static/media/Pipeline.30d298b0.svg +0 -7
  1155. zenml/zen_server/dashboard/static/media/Plus.5aa1c16b.svg +0 -3
  1156. zenml/zen_server/dashboard/static/media/PlusCircle.92d860dd.svg +0 -5
  1157. zenml/zen_server/dashboard/static/media/Repositories.71a36b8c.svg +0 -3
  1158. zenml/zen_server/dashboard/static/media/RightArrow.f30d3871.svg +0 -29
  1159. zenml/zen_server/dashboard/static/media/Rocket.63bf7b9d.svg +0 -3
  1160. zenml/zen_server/dashboard/static/media/RocketLaunch.1bff2b59.svg +0 -6
  1161. zenml/zen_server/dashboard/static/media/Rubik-Medium.c87313aa.ttf +0 -0
  1162. zenml/zen_server/dashboard/static/media/Rubik-Regular.b3d0902b.ttf +0 -0
  1163. zenml/zen_server/dashboard/static/media/Run.daec4fb2.svg +0 -6
  1164. zenml/zen_server/dashboard/static/media/Search.d1afcce5.svg +0 -4
  1165. zenml/zen_server/dashboard/static/media/Settings.59ca73ae.svg +0 -4
  1166. zenml/zen_server/dashboard/static/media/Share2.46c3ff66.svg +0 -3
  1167. zenml/zen_server/dashboard/static/media/SignOut.6aa718c5.svg +0 -3
  1168. zenml/zen_server/dashboard/static/media/SimplePlus.5cf7ec20.svg +0 -3
  1169. zenml/zen_server/dashboard/static/media/SingleUser.bef3a095.svg +0 -4
  1170. zenml/zen_server/dashboard/static/media/SourceCodePro-Regular.b484b32f.ttf +0 -0
  1171. zenml/zen_server/dashboard/static/media/Stack.19b604ac.svg +0 -5
  1172. zenml/zen_server/dashboard/static/media/StackComponent.b1ba90b5.svg +0 -4
  1173. zenml/zen_server/dashboard/static/media/Star.f0c25022.svg +0 -9
  1174. zenml/zen_server/dashboard/static/media/StarOutline.94ca8cd9.svg +0 -3
  1175. zenml/zen_server/dashboard/static/media/Storefront.4b4796fe.svg +0 -3
  1176. zenml/zen_server/dashboard/static/media/Stream.543e3039.svg +0 -3
  1177. zenml/zen_server/dashboard/static/media/SupportAgent.510ddf1f.svg +0 -8
  1178. zenml/zen_server/dashboard/static/media/Table.77033750.svg +0 -6
  1179. zenml/zen_server/dashboard/static/media/Tool.d5785486.svg +0 -3
  1180. zenml/zen_server/dashboard/static/media/UserPlus.741a99d7.svg +0 -6
  1181. zenml/zen_server/dashboard/static/media/Verified.0625b2a0.svg +0 -3
  1182. zenml/zen_server/dashboard/static/media/addNew.4fb6c939.svg +0 -8
  1183. zenml/zen_server/dashboard/static/media/arrowClose.cbd53f3f.svg +0 -3
  1184. zenml/zen_server/dashboard/static/media/arrowOpen.6ceef0af.svg +0 -3
  1185. zenml/zen_server/dashboard/static/media/check_small.30bc0138.svg +0 -3
  1186. zenml/zen_server/dashboard/static/media/circleArrowSideClose.98d6013e.svg +0 -18
  1187. zenml/zen_server/dashboard/static/media/circleArrowSideOpen.63653df6.svg +0 -18
  1188. zenml/zen_server/dashboard/static/media/image.104fd14b.png +0 -0
  1189. zenml/zen_server/dashboard/static/media/imageAddIcon.e83004a9.svg +0 -7
  1190. zenml/zen_server/dashboard/static/media/logo.93333e5c.svg +0 -1
  1191. zenml/zen_server/dashboard/static/media/logo_small.4204397d.svg +0 -3
  1192. zenml/zen_server/dashboard/static/media/logo_white.d4b4414e.svg +0 -20
  1193. zenml/zen_server/dashboard/static/media/notConnected.5e2c8ea7.svg +0 -8
  1194. zenml/zen_server/dashboard/static/media/plugin-fallback.72c294e6.svg +0 -6
  1195. zenml/zen_server/dashboard/static/media/share.bcd998b0.svg +0 -5
  1196. zenml/zen_server/dashboard/static/media/stars.08a9b19a.svg +0 -8
  1197. zenml/zen_server/deploy/terraform/__init__.py +0 -41
  1198. zenml/zen_server/deploy/terraform/providers/__init__.py +0 -14
  1199. zenml/zen_server/deploy/terraform/providers/aws_provider.py +0 -61
  1200. zenml/zen_server/deploy/terraform/providers/azure_provider.py +0 -59
  1201. zenml/zen_server/deploy/terraform/providers/gcp_provider.py +0 -59
  1202. zenml/zen_server/deploy/terraform/providers/terraform_provider.py +0 -332
  1203. zenml/zen_server/deploy/terraform/recipes/aws/.gitignore +0 -8
  1204. zenml/zen_server/deploy/terraform/recipes/aws/helm.tf +0 -20
  1205. zenml/zen_server/deploy/terraform/recipes/aws/ingress.tf +0 -30
  1206. zenml/zen_server/deploy/terraform/recipes/aws/outputs.tf +0 -14
  1207. zenml/zen_server/deploy/terraform/recipes/aws/printf.cmd +0 -2
  1208. zenml/zen_server/deploy/terraform/recipes/aws/sql.tf +0 -62
  1209. zenml/zen_server/deploy/terraform/recipes/aws/terraform.tf +0 -44
  1210. zenml/zen_server/deploy/terraform/recipes/aws/variables.tf +0 -179
  1211. zenml/zen_server/deploy/terraform/recipes/aws/vpc.tf +0 -47
  1212. zenml/zen_server/deploy/terraform/recipes/aws/zen_server.tf +0 -111
  1213. zenml/zen_server/deploy/terraform/recipes/azure/.gitignore +0 -8
  1214. zenml/zen_server/deploy/terraform/recipes/azure/helm.tf +0 -20
  1215. zenml/zen_server/deploy/terraform/recipes/azure/ingress.tf +0 -30
  1216. zenml/zen_server/deploy/terraform/recipes/azure/key_vault.tf +0 -73
  1217. zenml/zen_server/deploy/terraform/recipes/azure/outputs.tf +0 -14
  1218. zenml/zen_server/deploy/terraform/recipes/azure/printf.cmd +0 -2
  1219. zenml/zen_server/deploy/terraform/recipes/azure/rg.tf +0 -36
  1220. zenml/zen_server/deploy/terraform/recipes/azure/sql.tf +0 -65
  1221. zenml/zen_server/deploy/terraform/recipes/azure/terraform.tf +0 -52
  1222. zenml/zen_server/deploy/terraform/recipes/azure/variables.tf +0 -188
  1223. zenml/zen_server/deploy/terraform/recipes/azure/zen_server.tf +0 -111
  1224. zenml/zen_server/deploy/terraform/recipes/gcp/.gitignore +0 -8
  1225. zenml/zen_server/deploy/terraform/recipes/gcp/helm.tf +0 -20
  1226. zenml/zen_server/deploy/terraform/recipes/gcp/ingress.tf +0 -30
  1227. zenml/zen_server/deploy/terraform/recipes/gcp/outputs.tf +0 -14
  1228. zenml/zen_server/deploy/terraform/recipes/gcp/printf.cmd +0 -2
  1229. zenml/zen_server/deploy/terraform/recipes/gcp/sql.tf +0 -64
  1230. zenml/zen_server/deploy/terraform/recipes/gcp/terraform.tf +0 -44
  1231. zenml/zen_server/deploy/terraform/recipes/gcp/variables.tf +0 -183
  1232. zenml/zen_server/deploy/terraform/recipes/gcp/zen_server.tf +0 -122
  1233. zenml/zen_server/deploy/terraform/terraform_zen_server.py +0 -255
  1234. zenml/zen_server/routers/run_metadata_endpoints.py +0 -97
  1235. zenml_nightly-0.55.0.dev20240124.dist-info/METADATA +0 -438
  1236. zenml_nightly-0.55.0.dev20240124.dist-info/RECORD +0 -1072
  1237. {zenml_nightly-0.55.0.dev20240124.dist-info → zenml_nightly-0.72.0.dev20250115.dist-info}/LICENSE +0 -0
  1238. {zenml_nightly-0.55.0.dev20240124.dist-info → zenml_nightly-0.72.0.dev20250115.dist-info}/entry_points.txt +0 -0
zenml/cli/server.py CHANGED
@@ -14,35 +14,36 @@
14
14
  """CLI for managing ZenML server deployments."""
15
15
 
16
16
  import ipaddress
17
- import os
18
- import sys
19
- from typing import Any, Dict, Optional, Union
17
+ import re
18
+ from typing import List, Optional, Union
20
19
 
21
20
  import click
22
- import yaml
23
21
  from rich.errors import MarkupError
24
22
 
25
23
  import zenml
26
- from zenml.analytics.enums import AnalyticsEvent
27
- from zenml.analytics.utils import track_handler
28
24
  from zenml.cli import utils as cli_utils
29
- from zenml.cli.cli import cli
30
- from zenml.cli.web_login import web_login
25
+ from zenml.cli.cli import TagGroup, cli
26
+ from zenml.cli.login import login, logout
31
27
  from zenml.client import Client
32
28
  from zenml.config.global_config import GlobalConfiguration
33
29
  from zenml.console import console
34
- from zenml.enums import ServerProviderType, StoreType
35
- from zenml.exceptions import IllegalOperationError
30
+ from zenml.enums import CliCategories, StoreType
31
+ from zenml.exceptions import AuthorizationException
36
32
  from zenml.logger import get_logger
37
- from zenml.utils import terraform_utils, yaml_utils
38
- from zenml.zen_server.utils import get_active_deployment
33
+ from zenml.login.credentials import ServerCredentials, ServerType
34
+ from zenml.services.service_status import ServiceState
35
+ from zenml.zen_server.utils import connected_to_local_server, get_local_server
39
36
 
40
37
  logger = get_logger(__name__)
41
38
 
42
- LOCAL_ZENML_SERVER_NAME = "local"
43
39
 
40
+ @cli.command(
41
+ "up",
42
+ help="""Start the ZenML dashboard locally.
44
43
 
45
- @cli.command("up", help="Start the ZenML dashboard locally.")
44
+ DEPRECATED: Please use `zenml login --local` instead.
45
+ """,
46
+ )
46
47
  @click.option(
47
48
  "--docker",
48
49
  is_flag=True,
@@ -72,14 +73,6 @@ LOCAL_ZENML_SERVER_NAME = "local"
72
73
  default=False,
73
74
  type=click.BOOL,
74
75
  )
75
- @click.option(
76
- "--connect",
77
- is_flag=True,
78
- help="Connect the client to the local server even when already connected "
79
- "to a remote ZenML server.",
80
- default=False,
81
- type=click.BOOL,
82
- )
83
76
  @click.option(
84
77
  "--image",
85
78
  type=str,
@@ -100,7 +93,6 @@ def up(
100
93
  ] = None,
101
94
  port: Optional[int] = None,
102
95
  blocking: bool = False,
103
- connect: bool = False,
104
96
  image: Optional[str] = None,
105
97
  ngrok_token: Optional[str] = None,
106
98
  ) -> None:
@@ -111,127 +103,44 @@ def up(
111
103
  ip_address: The IP address to bind the server to.
112
104
  port: The port to bind the server to.
113
105
  blocking: Block the CLI while the server is running.
114
- connect: Connect the client to the local server even when already
115
- connected to a remote ZenML server.
116
106
  image: A custom Docker image to use for the server, when the
117
107
  `--docker` flag is set.
118
108
  ngrok_token: An ngrok auth token to use for exposing the ZenML dashboard
119
109
  on a public domain. Primarily used for accessing the dashboard in
120
110
  Colab.
121
111
  """
122
- from zenml.zen_server.deploy.deployer import ServerDeployer
123
-
124
- if connect:
125
- logger.warning(
126
- "The `--connect` flag is deprecated, has no effect, and will be "
127
- "removed in a future release."
128
- )
129
-
130
- gc = GlobalConfiguration()
131
-
132
- # Raise an error if the client is already connected to a remote server.
133
- if gc.store is not None and gc.store.type == StoreType.REST:
134
- if not gc.zen_store.is_local_store():
135
- cli_utils.error(
136
- "Your ZenML client is already connected to a remote server. If "
137
- "you want to spin up a local ZenML server, please disconnect "
138
- "from the remote server first by running `zenml disconnect`."
139
- )
140
-
141
- if docker:
142
- from zenml.utils.docker_utils import check_docker
143
-
144
- if not check_docker():
145
- cli_utils.error(
146
- "Docker does not seem to be installed on your system. Please "
147
- "install Docker to use the Docker ZenML server local "
148
- "deployment or use one of the other deployment options."
149
- )
150
- provider = ServerProviderType.DOCKER
151
- else:
152
- if sys.platform == "win32" and not blocking:
153
- cli_utils.error(
154
- "Running the ZenML server locally as a background process is "
155
- "not supported on Windows. Please use the `--blocking` flag "
156
- "to run the server in blocking mode, or run the server in "
157
- "a Docker container by setting `--docker` instead."
158
- )
159
- else:
160
- pass
161
- provider = ServerProviderType.LOCAL
162
-
163
- deployer = ServerDeployer()
164
-
165
- server = get_active_deployment(local=True)
166
- if server and server.config.provider != provider:
167
- deployer.remove_server(LOCAL_ZENML_SERVER_NAME)
168
-
169
- config_attrs: Dict[str, Any] = dict(
170
- name=LOCAL_ZENML_SERVER_NAME,
171
- provider=provider,
112
+ cli_utils.warning(
113
+ "The `zenml up` command is deprecated and will be removed in a "
114
+ "future release. Please use the `zenml login --local` command instead."
172
115
  )
173
- if not docker:
174
- config_attrs["blocking"] = blocking
175
- elif image:
176
- config_attrs["image"] = image
177
- if port is not None:
178
- config_attrs["port"] = port
179
- if ip_address is not None and provider in [
180
- ServerProviderType.LOCAL,
181
- ServerProviderType.DOCKER,
182
- ]:
183
- config_attrs["ip_address"] = ip_address
184
-
185
- from zenml.zen_server.deploy.deployment import ServerDeploymentConfig
186
-
187
- server_config = ServerDeploymentConfig(**config_attrs)
188
- if blocking:
189
- from zenml.constants import (
190
- DEFAULT_USERNAME,
191
- )
192
-
193
- cli_utils.declare(
194
- "The local ZenML dashboard is about to deploy in a "
195
- "blocking process. You can connect to it using the "
196
- f"'{DEFAULT_USERNAME}' username and an empty password."
197
- )
198
- server = deployer.deploy_server(server_config)
199
-
200
- assert gc.store is not None
201
-
202
- if not blocking:
203
- from zenml.constants import (
204
- DEFAULT_PASSWORD,
205
- DEFAULT_USERNAME,
206
- )
207
116
 
208
- deployer.connect_to_server(
209
- LOCAL_ZENML_SERVER_NAME,
210
- DEFAULT_USERNAME,
211
- DEFAULT_PASSWORD,
212
- )
117
+ # Calling the `zenml login` command
118
+ cli_utils.declare("Calling `zenml login --local`...")
119
+ login.callback( # type: ignore[misc]
120
+ local=True,
121
+ docker=docker,
122
+ ip_address=ip_address,
123
+ port=port,
124
+ blocking=blocking,
125
+ image=image,
126
+ ngrok_token=ngrok_token,
127
+ )
213
128
 
214
- if server.status and server.status.url:
215
- cli_utils.declare(
216
- f"The local ZenML dashboard is available at "
217
- f"'{server.status.url}'. You can connect to it using the "
218
- f"'{DEFAULT_USERNAME}' username and an empty password. "
219
- )
220
- zenml.show(
221
- ngrok_token=ngrok_token,
222
- username=DEFAULT_USERNAME,
223
- password=DEFAULT_PASSWORD,
224
- )
225
129
 
130
+ @cli.command(
131
+ "show",
132
+ help="""Show the ZenML dashboard.
226
133
 
134
+ DEPRECATED: Please use `zenml server show` instead.
135
+ """,
136
+ )
227
137
  @click.option(
228
138
  "--ngrok-token",
229
139
  type=str,
230
140
  default=None,
231
141
  help="Specify an ngrok auth token to use for exposing the ZenML server.",
232
142
  )
233
- @cli.command("show", help="Show the ZenML dashboard.")
234
- def show(ngrok_token: Optional[str] = None) -> None:
143
+ def legacy_show(ngrok_token: Optional[str] = None) -> None:
235
144
  """Show the ZenML dashboard.
236
145
 
237
146
  Args:
@@ -239,286 +148,124 @@ def show(ngrok_token: Optional[str] = None) -> None:
239
148
  on a public domain. Primarily used for accessing the dashboard in
240
149
  Colab.
241
150
  """
242
- try:
243
- zenml.show(ngrok_token=ngrok_token)
244
- except RuntimeError as e:
245
- cli_utils.error(str(e))
246
-
151
+ cli_utils.warning(
152
+ "The `zenml show` command is deprecated and will be removed in a "
153
+ "future release. Please use the `zenml server show` command "
154
+ "instead."
155
+ )
247
156
 
248
- @cli.command("down", help="Shut down the local ZenML dashboard.")
249
- def down() -> None:
250
- """Shut down the local ZenML dashboard."""
251
- server = get_active_deployment(local=True)
157
+ # Calling the `zenml server show` command
158
+ cli_utils.declare("Calling `zenml server show`...")
159
+ show(local=False, ngrok_token=ngrok_token)
252
160
 
253
- if not server:
254
- cli_utils.declare("The local ZenML dashboard is not running.")
255
161
 
256
- else:
257
- from zenml.zen_server.deploy.deployer import ServerDeployer
162
+ @cli.command(
163
+ "down",
164
+ help="""Shut down the local ZenML dashboard.
258
165
 
259
- deployer = ServerDeployer()
260
- deployer.remove_server(server.config.name)
261
- cli_utils.declare("The local ZenML dashboard has been shut down.")
166
+ DEPRECATED: Please use `zenml logout local` instead.
167
+ """,
168
+ )
169
+ def down() -> None:
170
+ """Shut down the local ZenML dashboard."""
171
+ cli_utils.warning(
172
+ "The `zenml down` command is deprecated and will be removed in a "
173
+ "future release. Please use the `zenml logout --local` command instead."
174
+ )
262
175
 
263
- gc = GlobalConfiguration()
264
- gc.set_default_store()
176
+ # Calling the `zenml logout` command
177
+ cli_utils.declare("Calling `zenml logout --local`...")
178
+ logout.callback( # type: ignore[misc]
179
+ local=True
180
+ )
265
181
 
266
182
 
267
- @cli.command("deploy", help="Deploy ZenML in the cloud.")
268
- @click.option(
269
- "--provider",
270
- "-p",
271
- type=click.Choice(
272
- [
273
- ServerProviderType.AWS.value,
274
- ServerProviderType.GCP.value,
275
- ServerProviderType.AZURE.value,
276
- ],
277
- case_sensitive=True,
278
- ),
279
- default=None,
280
- help="Server deployment provider.",
281
- )
282
- @click.option(
283
- "--name",
284
- type=str,
285
- help="A name for the ZenML server deployment. This is used as a prefix for "
286
- "the names of deployed resources, such as database services and Kubernetes "
287
- "resources.",
288
- )
289
- @click.option(
290
- "--username",
291
- type=str,
292
- default=None,
293
- help="The username to use for the provisioned admin account.",
294
- )
295
- @click.option(
296
- "--password",
297
- type=str,
298
- default=None,
299
- help="The initial password to use for the provisioned admin account.",
300
- )
301
- @click.option(
302
- "--timeout",
303
- "-t",
304
- type=click.INT,
305
- default=None,
306
- help="Time in seconds to wait for the server to be deployed.",
307
- )
308
- @click.option(
309
- "--config",
310
- help="Use a YAML or JSON configuration or configuration file.",
311
- required=False,
312
- type=str,
313
- )
314
- @click.option(
315
- "--connect",
316
- is_flag=True,
317
- help="Connect your client to the ZenML server after it is successfully "
318
- "deployed.",
319
- default=False,
320
- type=click.BOOL,
321
- )
322
- @click.option(
323
- "--gcp-project-id",
324
- help="The project in GCP to deploy the server to. ",
325
- required=False,
326
- type=str,
183
+ @cli.command(
184
+ "status", help="Show information about the current configuration."
327
185
  )
328
- def deploy(
329
- provider: Optional[str] = None,
330
- connect: bool = False,
331
- username: Optional[str] = None,
332
- password: Optional[str] = None,
333
- name: Optional[str] = None,
334
- timeout: Optional[int] = None,
335
- config: Optional[str] = None,
336
- gcp_project_id: Optional[str] = None,
337
- ) -> None:
338
- """Deploy the ZenML server in a cloud provider.
186
+ def status() -> None:
187
+ """Show details about the current configuration."""
188
+ from zenml.login.credentials_store import get_credentials_store
189
+ from zenml.login.pro.client import ZenMLProClient
339
190
 
340
- Args:
341
- name: Name for the ZenML server deployment.
342
- provider: ZenML server provider name.
343
- connect: Connecting the client to the ZenML server.
344
- username: The username for the provisioned admin account.
345
- password: The initial password to use for the provisioned admin account.
346
- timeout: Time in seconds to wait for the server to start.
347
- config: A YAML or JSON configuration or configuration file to use.
348
- gcp_project_id: The project in GCP to deploy the server to.
349
- """
350
- with track_handler(
351
- event=AnalyticsEvent.ZENML_SERVER_DEPLOYED
352
- ) as analytics_handler:
353
- try:
354
- terraform_utils.verify_terraform_installation()
355
- except RuntimeError as e:
356
- cli_utils.error(str(e))
191
+ gc = GlobalConfiguration()
192
+ client = Client()
357
193
 
358
- config_dict: Dict[str, Any] = {}
194
+ store_cfg = gc.store_configuration
359
195
 
360
- if config:
361
- if os.path.isfile(config):
362
- config_dict = yaml_utils.read_yaml(config)
363
- else:
364
- config_dict = yaml.safe_load(config)
365
- if not isinstance(config_dict, dict):
366
- cli_utils.error(
367
- "The configuration argument must be JSON/YAML content or "
368
- "point to a valid configuration file."
196
+ # Write about the current ZenML client
197
+ cli_utils.declare("-----ZenML Client Status-----")
198
+ if gc.uses_default_store():
199
+ cli_utils.declare(
200
+ f"Connected to the local ZenML database: '{store_cfg.url}'"
201
+ )
202
+ elif connected_to_local_server():
203
+ cli_utils.declare(
204
+ f"Connected to the local ZenML server: {store_cfg.url}"
205
+ )
206
+ elif re.match(r"^mysql://", store_cfg.url):
207
+ cli_utils.declare(
208
+ f"Connected directly to a SQL database: '{store_cfg.url}'"
209
+ )
210
+ else:
211
+ credentials_store = get_credentials_store()
212
+ server = credentials_store.get_credentials(store_cfg.url)
213
+ if server:
214
+ if server.type == ServerType.PRO:
215
+ # If connected to a ZenML Pro server, refresh the server info
216
+ pro_credentials = credentials_store.get_pro_credentials(
217
+ allow_expired=False
369
218
  )
370
-
371
- name = config_dict.get("name", name)
372
- provider = config_dict.get("provider", provider)
373
- username = config_dict.get("username", username)
374
- password = config_dict.get("password", password)
375
-
376
- if not name:
377
- name = click.prompt(
378
- "ZenML server name (used as a prefix for the names of deployed "
379
- "resources)",
380
- default="zenml",
381
- )
382
- config_dict["name"] = name
383
-
384
- if not provider:
385
- provider = click.prompt(
386
- "ZenML server provider",
387
- type=click.Choice(
388
- [
389
- ServerProviderType.AWS.value,
390
- ServerProviderType.GCP.value,
391
- ServerProviderType.AZURE.value,
392
- ],
393
- case_sensitive=True,
394
- ),
395
- default=ServerProviderType.AWS.value,
396
- )
397
- config_dict["provider"] = provider
398
-
399
- if provider == ServerProviderType.GCP.value:
400
- if "project_id" not in config_dict:
401
- if not gcp_project_id:
402
- gcp_project_id = click.prompt(
403
- "GCP project ID",
219
+ if pro_credentials:
220
+ pro_client = ZenMLProClient()
221
+ pro_servers = pro_client.tenant.list(
222
+ url=store_cfg.url, member_only=True
404
223
  )
405
- config_dict["project_id"] = gcp_project_id
406
-
407
- if not username:
408
- username = click.prompt(
409
- "ZenML admin account username", default="default"
410
- )
411
- config_dict["username"] = username
412
-
413
- password = password or config_dict.get("password", None)
414
- if not password:
415
- password = click.prompt(
416
- "ZenML admin account password", hide_input=True
417
- )
418
- config_dict["password"] = password
419
-
420
- from zenml.zen_server.deploy.deployment import ServerDeploymentConfig
421
-
422
- server_config = ServerDeploymentConfig.parse_obj(config_dict)
423
-
424
- from zenml.zen_server.deploy.deployer import ServerDeployer
425
-
426
- deployer = ServerDeployer()
427
-
428
- server = get_active_deployment(local=False)
429
- if server:
430
- if server.config.provider != provider:
431
- cli_utils.error(
432
- "ZenML is already deployed using a different provider "
433
- f"({server.config.provider}). Please tear down the "
434
- "existing deployment by running `zenml destroy` before "
435
- "deploying a new one."
224
+ if pro_servers:
225
+ credentials_store.update_server_info(
226
+ server_url=store_cfg.url,
227
+ server_info=pro_servers[0],
228
+ )
229
+
230
+ cli_utils.declare(
231
+ f"Connected to a ZenML Pro server: `{server.server_name_hyperlink}`"
232
+ f" [{server.server_id_hyperlink}]"
436
233
  )
437
234
 
438
- if server.config.name != name:
439
- cli_utils.error(
440
- f"An existing deployment with a different name "
441
- f"'{server.config.name}' already exists. Please tear down "
442
- f"the existing deployment by running `zenml destroy` "
443
- f"before deploying a new one."
235
+ cli_utils.declare(
236
+ f" ZenML Pro Organization: {server.organization_hyperlink}"
444
237
  )
445
-
446
- server = deployer.deploy_server(server_config, timeout=timeout)
447
-
448
- metadata = {
449
- "server_deployment": str(server.config.provider),
450
- }
451
-
452
- analytics_handler.metadata = metadata
453
-
454
- if server.status and server.status.url:
455
- cli_utils.declare(
456
- f"ZenML server '{name}' running at '{server.status.url}'."
457
- )
458
-
459
- if connect and username:
460
- deployer.connect_to_server(
461
- server_config.name,
462
- username,
463
- password or "",
464
- verify_ssl=server.status.ca_crt
465
- if server.status.ca_crt is not None
466
- else False,
238
+ if pro_credentials:
239
+ cli_utils.declare(
240
+ f" ZenML Pro authentication: {pro_credentials.auth_status}"
241
+ )
242
+ else:
243
+ cli_utils.declare(
244
+ f"Connected to a remote ZenML server: `{server.dashboard_hyperlink}`"
467
245
  )
468
246
 
247
+ cli_utils.declare(f" Dashboard: {server.dashboard_hyperlink}")
248
+ cli_utils.declare(f" API: {server.api_hyperlink}")
249
+ cli_utils.declare(f" Server status: '{server.status}'")
250
+ cli_utils.declare(f" Server authentication: {server.auth_status}")
469
251
 
470
- @cli.command(
471
- "destroy", help="Tear down and clean up the cloud ZenML deployment."
472
- )
473
- def destroy() -> None:
474
- """Tear down and clean up a cloud ZenML deployment."""
475
- server = get_active_deployment(local=False)
476
- if not server:
477
- cli_utils.declare("No cloud ZenML server has been deployed.")
478
- return
479
-
480
- from zenml.zen_server.deploy.deployer import ServerDeployer
481
-
482
- deployer = ServerDeployer()
483
- deployer.remove_server(server.config.name)
484
-
485
- cli_utils.declare(
486
- "The ZenML server has been torn down and all resources removed."
487
- )
488
-
489
-
490
- @cli.command(
491
- "status", help="Show information about the current configuration."
492
- )
493
- def status() -> None:
494
- """Show details about the current configuration."""
495
- gc = GlobalConfiguration()
496
- client = Client()
497
-
498
- store_cfg = gc.store
499
-
500
- # Write about the current ZenML server
501
- cli_utils.declare("-----ZenML Server Status-----")
502
- if store_cfg is not None:
503
- if gc.uses_default_store():
504
- cli_utils.declare(
505
- f"Connected to a local ZenML database: ('{store_cfg.url}')"
506
- )
507
252
  else:
508
253
  cli_utils.declare(
509
- f"Connected to a ZenML server: '{store_cfg.url}'"
254
+ f"Connected to a remote ZenML server: [link={store_cfg.url}]"
255
+ f"{store_cfg.url}[/link]"
510
256
  )
511
257
 
512
- # Write about the active entities
513
- scope = "repository" if client.uses_local_configuration else "global"
514
- cli_utils.declare(f" The active user is: '{client.active_user.name}'")
515
- cli_utils.declare(
516
- f" The active workspace is: '{client.active_workspace.name}' "
517
- f"({scope})"
518
- )
519
- cli_utils.declare(
520
- f" The active stack is: '{client.active_stack_model.name}' ({scope})"
521
- )
258
+ try:
259
+ client.zen_store.get_store_info()
260
+ except Exception as e:
261
+ cli_utils.warning(f"Error while initializing client: {e}")
262
+ else:
263
+ # Write about the active entities
264
+ scope = "repository" if client.uses_local_configuration else "global"
265
+ cli_utils.declare(f" The active user is: '{client.active_user.name}'")
266
+ cli_utils.declare(
267
+ f" The active stack is: '{client.active_stack_model.name}' ({scope})"
268
+ )
522
269
 
523
270
  if client.root:
524
271
  cli_utils.declare(f"Active repository root: {client.root}")
@@ -529,17 +276,34 @@ def status() -> None:
529
276
  f"Local store files are located at: '{gc.local_stores_path}'"
530
277
  )
531
278
 
532
- server = get_active_deployment(local=True)
533
- if server:
534
- cli_utils.declare("The status of the local dashboard:")
535
- cli_utils.print_server_deployment(server)
536
-
537
- server = get_active_deployment(local=False)
538
- if server:
539
- cli_utils.declare(
540
- "The status of the cloud ZenML server deployed from this host:"
541
- )
542
- cli_utils.print_server_deployment(server)
279
+ cli_utils.declare("\n-----Local ZenML Server Status-----")
280
+ local_server = get_local_server()
281
+ if local_server:
282
+ if local_server.status:
283
+ if local_server.status.status == ServiceState.ACTIVE:
284
+ cli_utils.declare(
285
+ f"The local {local_server.config.provider} server is "
286
+ f"running at: {local_server.status.url}"
287
+ )
288
+ else:
289
+ cli_utils.declare(
290
+ f"The local {local_server.config.provider} server is not "
291
+ "available."
292
+ )
293
+ cli_utils.declare(
294
+ f" Server state: {local_server.status.status}"
295
+ )
296
+ if local_server.status.status_message:
297
+ cli_utils.declare(
298
+ f" Status message: {local_server.status.status_message}"
299
+ )
300
+ else:
301
+ cli_utils.declare(
302
+ f"The local {local_server.config.provider} server is not "
303
+ "running."
304
+ )
305
+ else:
306
+ cli_utils.declare("The local server has not been started.")
543
307
 
544
308
 
545
309
  @cli.command(
@@ -547,57 +311,17 @@ def status() -> None:
547
311
  help=(
548
312
  """Connect to a remote ZenML server.
549
313
 
550
- Examples:
551
-
552
- * to connect to a ZenML deployment using web login:
553
-
554
- zenml connect --url=http://zenml.example.com:8080
555
-
556
- * to connect to a ZenML deployment using command line arguments:
557
-
558
- zenml connect --url=http://zenml.example.com:8080 --username=admin
559
-
560
- * to use a configuration file:
561
-
562
- zenml connect --config=/path/to/zenml_config.yaml
563
-
564
- * when no arguments are supplied, ZenML will attempt to connect to the
565
- last ZenML server deployed from the local host using the 'zenml deploy'
566
- command.
567
-
568
- The configuration file must be a YAML or JSON file with the following
569
- attributes:
314
+ DEPRECATED: Please use `zenml login` instead.
570
315
 
571
- url: The URL of the ZenML server.
572
-
573
- username: The username to use for authentication.
574
-
575
- password: The password to use for authentication.
576
-
577
- verify_ssl: Either a boolean, in which case it controls whether the
578
- server's TLS certificate is verified, or a string, in which case it
579
- must be a path to a CA certificate bundle to use or the CA bundle
580
- value itself.
316
+ Examples:
581
317
 
582
- http_timeout: The number of seconds to wait for HTTP requests to the
583
- ZenML server to be successful before issuing a timeout error
584
- (default: 5).
318
+ * to re-login to the current ZenML server or connect to a ZenML Pro server:
585
319
 
586
- Example configuration:
320
+ zenml connect
587
321
 
588
- url: https://ac8ef63af203226194a7725ee71d85a-7635928635.us-east-1.elb.amazonaws.com/zenml\n
589
- username: admin\n
590
- password: Pa$$word123\n
591
- verify_ssl: |\n
592
- -----BEGIN CERTIFICATE-----
593
- MIIDETCCAfmgAwIBAgIQYUmQg2LR/pHAMZb/vQwwXjANBgkqhkiG9w0BAQsFADAT
594
- MREwDwYDVQQDEwh6ZW5tbC1jYTAeFw0yMjA5MjYxMzI3NDhaFw0yMzA5MjYxMzI3\n
595
- ...\n
596
- ULnzA0JkRWRnFqH6uXeJo1KAVqtxn1xf8PYxx3NlNDr9wi8KKwARf2lwm6sH4mvq
597
- 1aZ/0iYnGKCu7rLJzxeguliMf69E\n
598
- -----END CERTIFICATE-----
599
- http_timeout: 10
322
+ * to log in to a particular ZenML server:
600
323
 
324
+ zenml connect --url=http://zenml.example.com:8080
601
325
  """
602
326
  ),
603
327
  )
@@ -610,15 +334,15 @@ def status() -> None:
610
334
  )
611
335
  @click.option(
612
336
  "--username",
613
- help="The username that is used to authenticate with a ZenML server. If "
614
- "omitted, the web login will be used.",
337
+ help="(Deprecated) The username that is used to authenticate with a ZenML "
338
+ "server. If omitted, the web login will be used.",
615
339
  required=False,
616
340
  type=str,
617
341
  )
618
342
  @click.option(
619
343
  "--password",
620
- help="The password that is used to authenticate with a ZenML server. If "
621
- "omitted, a prompt will be shown to enter the password.",
344
+ help="(Deprecated) The password that is used to authenticate with a ZenML "
345
+ "server. If omitted, a prompt will be shown to enter the password.",
622
346
  required=False,
623
347
  type=str,
624
348
  )
@@ -629,12 +353,6 @@ def status() -> None:
629
353
  required=False,
630
354
  type=str,
631
355
  )
632
- @click.option(
633
- "--workspace",
634
- help="The workspace to use when connecting to the ZenML server.",
635
- required=False,
636
- type=str,
637
- )
638
356
  @click.option(
639
357
  "--no-verify-ssl",
640
358
  is_flag=True,
@@ -648,29 +366,13 @@ def status() -> None:
648
366
  required=False,
649
367
  type=str,
650
368
  )
651
- @click.option(
652
- "--config",
653
- help="Use a YAML or JSON configuration or configuration file.",
654
- required=False,
655
- type=str,
656
- )
657
- @click.option(
658
- "--raw-config",
659
- is_flag=True,
660
- help="Whether to use the configuration without prompting for missing "
661
- "fields.",
662
- default=False,
663
- )
664
369
  def connect(
665
370
  url: Optional[str] = None,
666
371
  username: Optional[str] = None,
667
372
  password: Optional[str] = None,
668
373
  api_key: Optional[str] = None,
669
- workspace: Optional[str] = None,
670
374
  no_verify_ssl: bool = False,
671
375
  ssl_ca_cert: Optional[str] = None,
672
- config: Optional[str] = None,
673
- raw_config: bool = False,
674
376
  ) -> None:
675
377
  """Connect to a remote ZenML server.
676
378
 
@@ -682,159 +384,56 @@ def connect(
682
384
  server.
683
385
  api_key: The API key that is used to authenticate with the ZenML
684
386
  server.
685
- workspace: The active workspace that is used to connect to the ZenML
686
- server.
687
387
  no_verify_ssl: Whether to verify the server's TLS certificate.
688
388
  ssl_ca_cert: A path to a CA bundle to use to verify the server's TLS
689
389
  certificate or the CA bundle value itself.
690
- config: A YAML or JSON configuration or configuration file to use.
691
- raw_config: Whether to use the configuration without prompting for
692
- missing fields.
693
390
  """
694
- from zenml.config.store_config import StoreConfiguration
695
- from zenml.zen_stores.base_zen_store import BaseZenStore
696
-
697
- # Raise an error if a local server is running when trying to connect to
698
- # another server
699
- active_deployment = get_active_deployment(local=True)
700
- if (
701
- active_deployment
702
- and active_deployment.status
703
- and active_deployment.status.url != url
704
- ):
705
- cli_utils.error(
706
- "You're trying to connect to a remote ZenML server but already "
707
- "have a local server running. This can lead to unexpected "
708
- "behavior. Please shut down the local server by running "
709
- "`zenml down` before connecting to a remote server."
710
- )
711
-
712
- store_dict: Dict[str, Any] = {}
713
- verify_ssl: Union[str, bool] = (
714
- ssl_ca_cert if ssl_ca_cert is not None else not no_verify_ssl
391
+ cli_utils.warning(
392
+ "The `zenml connect` command is deprecated and will be removed in a "
393
+ "future release. Please use the `zenml login` command instead. "
715
394
  )
716
395
 
717
- if config:
718
- if os.path.isfile(config):
719
- store_dict = yaml_utils.read_yaml(config)
720
- else:
721
- store_dict = yaml.safe_load(config)
722
- if not isinstance(store_dict, dict):
723
- cli_utils.error(
724
- "The configuration argument must be JSON/YAML content or "
725
- "point to a valid configuration file."
726
- )
727
-
728
- if raw_config:
729
- store_config = StoreConfiguration.parse_obj(store_dict)
730
- GlobalConfiguration().set_store(store_config)
731
- return
732
-
733
- url = store_dict.get("url", url)
734
- username = username or store_dict.get("username")
735
- password = password or store_dict.get("password")
736
- api_key = api_key or store_dict.get("api_key")
737
- verify_ssl = store_dict.get("verify_ssl", verify_ssl)
738
-
739
- elif url is None:
740
- server = get_active_deployment(local=False)
741
-
742
- if server is None or not server.status or not server.status.url:
743
- cli_utils.warning(
744
- "Running `zenml connect` without arguments can only be used to "
745
- "connect to a ZenML server previously deployed from this host "
746
- "with `zenml deploy`, but no such active deployment was found. "
747
- "Please use the `--url` or `--config` command line arguments "
748
- "to configure how to connect to a remote third party ZenML "
749
- "server. Alternatively, call `zenml up` to start the ZenML "
750
- "dashboard locally."
751
- )
752
- return
753
- url = server.status.url
754
- if server.status.ca_crt:
755
- verify_ssl = server.status.ca_crt
756
-
757
- if not url:
758
- url = click.prompt("ZenML server URL", type=str)
759
- else:
760
- cli_utils.declare(f"Connecting to: '{url}'...")
761
- assert url is not None
762
-
763
- store_dict["url"] = url
764
- store_type = BaseZenStore.get_store_type(url)
765
- if store_type == StoreType.REST:
766
- store_dict["verify_ssl"] = verify_ssl
767
-
768
- if not username and not api_key:
769
- if store_type == StoreType.REST:
770
- store_dict["api_token"] = web_login(url=url, verify_ssl=verify_ssl)
771
- else:
772
- username = click.prompt("Username", type=str)
773
-
774
- if username:
775
- store_dict["username"] = username
776
-
777
- if password is None:
778
- password = click.prompt(
779
- f"Password for user {username} (press ENTER for empty password)",
780
- default="",
781
- hide_input=True,
782
- )
783
- store_dict["password"] = password
784
- elif api_key:
785
- store_dict["api_key"] = api_key
786
-
787
- store_config_class = BaseZenStore.get_store_config_class(store_type)
788
- assert store_config_class is not None
789
-
790
- store_config = store_config_class.parse_obj(store_dict)
791
- try:
792
- GlobalConfiguration().set_store(store_config)
793
- except IllegalOperationError:
396
+ if password is not None or username is not None:
794
397
  cli_utils.warning(
795
- f"User '{username}' does not have sufficient permissions to "
796
- f"access the server at '{url}'."
398
+ "Connecting to a ZenML server using a username and password is "
399
+ "insecure because the password is locally stored on your "
400
+ "filesystem and is no longer supported. The web login workflow will "
401
+ "be used instead. An alternative for non-interactive environments "
402
+ "is to create and use a service account API key (see "
403
+ "https://docs.zenml.io/how-to/connecting-to-zenml/connect-with-a-service-account "
404
+ "for more information)."
797
405
  )
798
406
 
799
- if workspace:
800
- try:
801
- Client().set_active_workspace(workspace_name_or_id=workspace)
802
- except KeyError:
803
- cli_utils.warning(
804
- f"The workspace {workspace} does not exist or is not accessible. "
805
- f"Please set another workspace by running `zenml "
806
- f"workspace set`."
807
- )
407
+ # Calling the `zenml login` command
408
+ cli_utils.declare("Calling `zenml login`...")
409
+ login.callback( # type: ignore[misc]
410
+ server=url,
411
+ api_key=api_key,
412
+ no_verify_ssl=no_verify_ssl,
413
+ ssl_ca_cert=ssl_ca_cert,
414
+ )
808
415
 
809
416
 
810
- @cli.command("disconnect", help="Disconnect from a ZenML server.")
417
+ @cli.command(
418
+ "disconnect",
419
+ help="""Disconnect from a ZenML server.
420
+
421
+ DEPRECATED: Please use `zenml logout` instead.
422
+ """,
423
+ )
811
424
  def disconnect_server() -> None:
812
425
  """Disconnect from a ZenML server."""
813
- from zenml.zen_server.deploy.deployer import ServerDeployer
814
- from zenml.zen_stores.base_zen_store import BaseZenStore
815
-
816
- gc = GlobalConfiguration()
817
-
818
- if gc.store is None:
819
- cli_utils.warning("No ZenML server is currently connected.")
820
- return
426
+ cli_utils.warning(
427
+ "The `zenml disconnect` command is deprecated and will be removed in a "
428
+ "future release. Please use the `zenml logout` command instead."
429
+ )
821
430
 
822
- url = gc.store.url
823
- store_type = BaseZenStore.get_store_type(url)
824
- if store_type == StoreType.REST:
825
- deployer = ServerDeployer()
826
- deployer.disconnect_from_server()
827
- else:
828
- gc.set_default_store()
829
- cli_utils.declare("Restored default store configuration.")
431
+ # Calling the `zenml logout` command
432
+ cli_utils.declare("Calling `zenml logout`...")
433
+ logout.callback() # type: ignore[misc]
830
434
 
831
435
 
832
- @cli.command("logs", help="Show the logs for the local or cloud ZenML server.")
833
- @click.option(
834
- "--local",
835
- is_flag=True,
836
- help="Show the logs for the local ZenML server.",
837
- )
436
+ @cli.command("logs", help="Show the logs for the local ZenML server.")
838
437
  @click.option(
839
438
  "--follow",
840
439
  "-f",
@@ -855,7 +454,6 @@ def disconnect_server() -> None:
855
454
  help="Show raw log contents (don't pretty-print logs).",
856
455
  )
857
456
  def logs(
858
- local: bool = False,
859
457
  follow: bool = False,
860
458
  raw: bool = False,
861
459
  tail: Optional[int] = None,
@@ -863,37 +461,31 @@ def logs(
863
461
  """Display the logs for a ZenML server.
864
462
 
865
463
  Args:
866
- local: Whether to show the logs for the local ZenML server.
867
464
  follow: Continue to output new log data as it becomes available.
868
465
  tail: Only show the last NUM lines of log output.
869
466
  raw: Show raw log contents (don't pretty-print logs).
870
467
  """
871
- server = get_active_deployment(local=True)
872
- if not local:
873
- remote_server = get_active_deployment(local=False)
874
- if remote_server is not None:
875
- server = remote_server
876
-
468
+ server = get_local_server()
877
469
  if server is None:
878
470
  cli_utils.error(
879
471
  "The local ZenML dashboard is not running. Please call `zenml "
880
- "up` first to start the ZenML dashboard locally."
472
+ "login --local` first to start the ZenML dashboard locally."
881
473
  )
882
474
 
883
- server_name = server.config.name
884
-
885
- from zenml.zen_server.deploy.deployer import ServerDeployer
475
+ from zenml.zen_server.deploy.deployer import LocalServerDeployer
886
476
 
887
- deployer = ServerDeployer()
477
+ deployer = LocalServerDeployer()
888
478
 
889
- cli_utils.declare(f"Showing logs for server: {server_name}")
479
+ cli_utils.declare(
480
+ f"Showing logs for the local {server.config.provider} server"
481
+ )
890
482
 
891
483
  from zenml.zen_server.deploy.exceptions import (
892
484
  ServerDeploymentNotFoundError,
893
485
  )
894
486
 
895
487
  try:
896
- logs = deployer.get_server_logs(server_name, follow=follow, tail=tail)
488
+ logs = deployer.get_server_logs(follow=follow, tail=tail)
897
489
  except ServerDeploymentNotFoundError as e:
898
490
  cli_utils.error(f"Server not found: {e}")
899
491
 
@@ -906,3 +498,259 @@ def logs(
906
498
  console.print(line)
907
499
  except MarkupError:
908
500
  console.print(line, markup=False)
501
+
502
+
503
+ @cli.group(cls=TagGroup, tag=CliCategories.MANAGEMENT_TOOLS)
504
+ def server() -> None:
505
+ """Commands for managing ZenML servers."""
506
+
507
+
508
+ @server.command(
509
+ "list",
510
+ help="""List all ZenML servers that this client is authenticated to.
511
+
512
+ The CLI can be authenticated to multiple ZenML servers at the same time,
513
+ even though it can only be connected to one server at a time. You can list
514
+ all the ZenML servers that the client is currently authenticated to by
515
+ using this command.
516
+
517
+ When logged in to ZenML Pro, this list will also include all ZenML Pro
518
+ servers that the authenticated user can access or could potentially access,
519
+ including details such as their current state and the organization they
520
+ belong to.
521
+
522
+ The complete list of servers displayed by this command includes the
523
+ following:
524
+
525
+ * ZenML Pro servers that the authenticated ZenML Pro user can or could
526
+ access. The client needs to be logged to ZenML Pro via
527
+ `zenml login --pro` to access these servers.
528
+
529
+ * ZenML servers that the client has logged in to via
530
+ `zenml login --url` in the past.
531
+
532
+ * the local ZenML server started with `zenml login --local`, if one is
533
+ running.
534
+
535
+ By default, this command does not display ZenML servers that are not
536
+ accessible: servers that are not running, are no longer accessible due to
537
+ an expired authentication and ZenML Pro servers where the user is not a
538
+ member. To include these servers in the list, use the `--all` flag.
539
+ """,
540
+ )
541
+ @click.option(
542
+ "--verbose",
543
+ "-v",
544
+ is_flag=True,
545
+ help="Show verbose output.",
546
+ )
547
+ @click.option(
548
+ "--all",
549
+ "-a",
550
+ is_flag=True,
551
+ help="Show all ZenML servers, including those that are not running "
552
+ "and those with an expired authentication.",
553
+ )
554
+ def server_list(verbose: bool = False, all: bool = False) -> None:
555
+ """List all ZenML servers that this client is authorized to access.
556
+
557
+ Args:
558
+ verbose: Whether to show verbose output.
559
+ all: Whether to show all ZenML servers.
560
+ """
561
+ from zenml.login.credentials_store import get_credentials_store
562
+ from zenml.login.pro.client import ZenMLProClient
563
+ from zenml.login.pro.tenant.models import TenantRead, TenantStatus
564
+
565
+ credentials_store = get_credentials_store()
566
+ pro_token = credentials_store.get_pro_token(allow_expired=True)
567
+ current_store_config = GlobalConfiguration().store_configuration
568
+
569
+ # The list of ZenML Pro servers kept in the credentials store
570
+ pro_servers = credentials_store.list_credentials(type=ServerType.PRO)
571
+ # The list of regular remote ZenML servers kept in the credentials store
572
+ servers = list(credentials_store.list_credentials(type=ServerType.REMOTE))
573
+ # The list of local ZenML servers kept in the credentials store
574
+ local_servers = list(
575
+ credentials_store.list_credentials(type=ServerType.LOCAL)
576
+ )
577
+
578
+ if pro_token and not pro_token.expired:
579
+ # If the ZenML Pro authentication is still valid, we include all ZenML
580
+ # Pro servers that the current ZenML Pro user can access, even those
581
+ # that the user has never connected to (and are therefore not stored in
582
+ # the credentials store).
583
+
584
+ accessible_pro_servers: List[TenantRead] = []
585
+ try:
586
+ client = ZenMLProClient()
587
+ accessible_pro_servers = client.tenant.list(member_only=not all)
588
+ except AuthorizationException as e:
589
+ cli_utils.warning(f"ZenML Pro authorization error: {e}")
590
+
591
+ # We update the list of stored ZenML Pro servers with the ones that the
592
+ # client is a member of
593
+ for accessible_server in accessible_pro_servers:
594
+ for idx, stored_server in enumerate(pro_servers):
595
+ if stored_server.server_id == accessible_server.id:
596
+ # All ZenML Pro servers accessible by the current ZenML Pro
597
+ # user have an authentication that is valid at least until
598
+ # the current ZenML Pro authentication token expires.
599
+ stored_server.update_server_info(
600
+ accessible_server,
601
+ )
602
+ updated_server = stored_server.model_copy()
603
+ # Replace the current server API token with the current
604
+ # ZenML Pro API token to reflect the current authentication
605
+ # status.
606
+ updated_server.api_token = pro_token
607
+ pro_servers[idx] = updated_server
608
+ break
609
+ else:
610
+ stored_server = ServerCredentials(
611
+ url=accessible_server.url or "",
612
+ api_token=pro_token,
613
+ )
614
+ stored_server.update_server_info(accessible_server)
615
+ pro_servers.append(stored_server)
616
+
617
+ if not all:
618
+ accessible_pro_servers = [
619
+ s
620
+ for s in accessible_pro_servers
621
+ if s.status == TenantStatus.AVAILABLE
622
+ ]
623
+
624
+ if not accessible_pro_servers:
625
+ cli_utils.declare(
626
+ "No ZenML Pro servers that are accessible to the current "
627
+ "user could be found."
628
+ )
629
+ if not all:
630
+ cli_utils.declare(
631
+ "Hint: use the `--all` flag to show all ZenML servers, "
632
+ "including those that the client is not currently "
633
+ "authorized to access or are not running."
634
+ )
635
+
636
+ elif pro_servers:
637
+ cli_utils.warning(
638
+ "The ZenML Pro authentication has expired. Please re-login "
639
+ "to ZenML Pro using `zenml login` to include all ZenML Pro servers "
640
+ "that you are a member of in the list."
641
+ )
642
+
643
+ # We add the local server to the list of servers, if it is running
644
+ local_server = get_local_server()
645
+ if local_server:
646
+ url = (
647
+ local_server.status.url if local_server.status else None
648
+ ) or local_server.config.url
649
+ status = local_server.status.status if local_server.status else ""
650
+ local_servers.append(
651
+ ServerCredentials(
652
+ url=url or "",
653
+ status=status,
654
+ version=zenml.__version__,
655
+ server_id=GlobalConfiguration().user_id,
656
+ server_name=f"local {local_server.config.provider} server",
657
+ )
658
+ )
659
+
660
+ all_servers = pro_servers + local_servers + servers
661
+
662
+ if not all:
663
+ # Filter out servers that are expired or not running
664
+ all_servers = [s for s in all_servers if s.is_available]
665
+
666
+ if verbose:
667
+ columns = [
668
+ "type",
669
+ "server_id_hyperlink",
670
+ "server_name_hyperlink",
671
+ "organization_hyperlink" if pro_servers else "",
672
+ "version",
673
+ "status",
674
+ "dashboard_url",
675
+ "api_hyperlink",
676
+ "auth_status",
677
+ ]
678
+ elif all:
679
+ columns = [
680
+ "type",
681
+ "server_id_hyperlink",
682
+ "server_name_hyperlink",
683
+ "organization_hyperlink" if pro_servers else "",
684
+ "version",
685
+ "status",
686
+ "api_hyperlink",
687
+ ]
688
+ else:
689
+ columns = [
690
+ "type",
691
+ "server_id_hyperlink" if pro_servers else "",
692
+ "server_name_hyperlink",
693
+ "organization_hyperlink" if pro_servers else "",
694
+ "version",
695
+ "api_hyperlink" if servers else "",
696
+ ]
697
+
698
+ # Remove empty columns
699
+ columns = [c for c in columns if c]
700
+
701
+ # Figure out if the client is already connected to one of the
702
+ # servers in the list
703
+ current_server: List[ServerCredentials] = []
704
+ if current_store_config.type == StoreType.REST:
705
+ current_server = [
706
+ s for s in all_servers if s.url == current_store_config.url
707
+ ]
708
+
709
+ cli_utils.print_pydantic_models( # type: ignore[type-var]
710
+ all_servers,
711
+ columns=columns,
712
+ rename_columns={
713
+ "server_name_hyperlink": "name",
714
+ "server_id_hyperlink": "ID",
715
+ "organization_hyperlink": "organization",
716
+ "dashboard_url": "dashboard URL",
717
+ "api_hyperlink": "API URL",
718
+ "auth_status": "auth status",
719
+ },
720
+ active_models=current_server,
721
+ show_active=True,
722
+ )
723
+
724
+
725
+ @server.command(
726
+ "show",
727
+ help="Show the ZenML dashboard for the server that the client is connected to.",
728
+ )
729
+ @click.option(
730
+ "--local",
731
+ is_flag=True,
732
+ help="Show the ZenML dashboard for the local server.",
733
+ default=False,
734
+ type=click.BOOL,
735
+ )
736
+ @click.option(
737
+ "--ngrok-token",
738
+ type=str,
739
+ default=None,
740
+ help="Specify an ngrok auth token to use for exposing the local ZenML "
741
+ "server. Only used when `--local` is set. Primarily used for accessing the "
742
+ "local dashboard in Colab.",
743
+ )
744
+ def show(local: bool = False, ngrok_token: Optional[str] = None) -> None:
745
+ """Show the ZenML dashboard.
746
+
747
+ Args:
748
+ local: Whether to show the ZenML dashboard for the local server.
749
+ ngrok_token: An ngrok auth token to use for exposing the ZenML dashboard
750
+ on a public domain. Primarily used for accessing the local dashboard
751
+ in Colab.
752
+ """
753
+ try:
754
+ zenml.show(ngrok_token=ngrok_token)
755
+ except RuntimeError as e:
756
+ cli_utils.error(str(e))