zenml-nightly 0.64.0.dev20240811__py3-none-any.whl → 0.66.0.dev20240910__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 (291) hide show
  1. README.md +1 -1
  2. RELEASE_NOTES.md +126 -4
  3. zenml/VERSION +1 -1
  4. zenml/artifacts/utils.py +13 -6
  5. zenml/cli/__init__.py +1 -1
  6. zenml/cli/base.py +4 -4
  7. zenml/cli/integration.py +48 -9
  8. zenml/cli/pipeline.py +9 -2
  9. zenml/cli/stack.py +39 -27
  10. zenml/cli/utils.py +13 -0
  11. zenml/client.py +15 -17
  12. zenml/config/compiler.py +34 -0
  13. zenml/config/server_config.py +30 -0
  14. zenml/config/source.py +3 -7
  15. zenml/constants.py +5 -3
  16. zenml/entrypoints/base_entrypoint_configuration.py +41 -27
  17. zenml/entrypoints/step_entrypoint_configuration.py +5 -2
  18. zenml/enums.py +2 -0
  19. zenml/environment.py +31 -0
  20. zenml/feature_stores/base_feature_store.py +4 -6
  21. zenml/integrations/__init__.py +3 -0
  22. zenml/integrations/airflow/flavors/airflow_orchestrator_flavor.py +9 -0
  23. zenml/integrations/aws/__init__.py +2 -2
  24. zenml/integrations/aws/orchestrators/sagemaker_orchestrator.py +2 -1
  25. zenml/integrations/azure/__init__.py +2 -2
  26. zenml/integrations/azure/azureml_utils.py +201 -0
  27. zenml/integrations/azure/flavors/azureml.py +139 -0
  28. zenml/integrations/azure/flavors/azureml_orchestrator_flavor.py +20 -118
  29. zenml/integrations/azure/flavors/azureml_step_operator_flavor.py +67 -14
  30. zenml/integrations/azure/orchestrators/azureml_orchestrator.py +58 -172
  31. zenml/integrations/azure/orchestrators/azureml_orchestrator_entrypoint_config.py +1 -0
  32. zenml/integrations/azure/service_connectors/azure_service_connector.py +4 -0
  33. zenml/integrations/azure/step_operators/azureml_step_operator.py +78 -177
  34. zenml/integrations/constants.py +3 -0
  35. zenml/integrations/databricks/__init__.py +22 -4
  36. zenml/integrations/databricks/flavors/databricks_orchestrator_flavor.py +9 -0
  37. zenml/integrations/deepchecks/__init__.py +29 -11
  38. zenml/integrations/deepchecks/materializers/deepchecks_dataset_materializer.py +3 -1
  39. zenml/integrations/deepchecks/validation_checks.py +0 -30
  40. zenml/integrations/evidently/__init__.py +17 -2
  41. zenml/integrations/facets/__init__.py +21 -5
  42. zenml/integrations/feast/__init__.py +19 -6
  43. zenml/integrations/gcp/__init__.py +2 -2
  44. zenml/integrations/gcp/flavors/vertex_orchestrator_flavor.py +9 -0
  45. zenml/integrations/gcp/orchestrators/vertex_orchestrator.py +10 -1
  46. zenml/integrations/great_expectations/__init__.py +21 -7
  47. zenml/integrations/huggingface/__init__.py +39 -15
  48. zenml/integrations/huggingface/materializers/__init__.py +3 -0
  49. zenml/integrations/huggingface/materializers/huggingface_datasets_materializer.py +3 -1
  50. zenml/integrations/huggingface/materializers/huggingface_pt_model_materializer.py +1 -1
  51. zenml/integrations/huggingface/materializers/huggingface_t5_materializer.py +107 -0
  52. zenml/integrations/huggingface/materializers/huggingface_tf_model_materializer.py +1 -1
  53. zenml/integrations/huggingface/materializers/huggingface_tokenizer_materializer.py +2 -2
  54. zenml/integrations/huggingface/steps/accelerate_runner.py +108 -85
  55. zenml/integrations/hyperai/flavors/hyperai_orchestrator_flavor.py +9 -0
  56. zenml/integrations/kubeflow/flavors/kubeflow_orchestrator_flavor.py +9 -0
  57. zenml/integrations/kubeflow/orchestrators/kubeflow_orchestrator.py +10 -1
  58. zenml/integrations/kubernetes/flavors/kubernetes_orchestrator_flavor.py +9 -0
  59. zenml/integrations/kubernetes/orchestrators/kubernetes_orchestrator.py +10 -1
  60. zenml/integrations/lightning/__init__.py +48 -0
  61. zenml/integrations/lightning/flavors/__init__.py +23 -0
  62. zenml/integrations/lightning/flavors/lightning_orchestrator_flavor.py +148 -0
  63. zenml/integrations/lightning/orchestrators/__init__.py +23 -0
  64. zenml/integrations/lightning/orchestrators/lightning_orchestrator.py +596 -0
  65. zenml/integrations/lightning/orchestrators/lightning_orchestrator_entrypoint.py +307 -0
  66. zenml/integrations/lightning/orchestrators/lightning_orchestrator_entrypoint_configuration.py +77 -0
  67. zenml/integrations/lightning/orchestrators/utils.py +67 -0
  68. zenml/integrations/mlflow/__init__.py +43 -5
  69. zenml/integrations/mlflow/services/mlflow_deployment.py +26 -0
  70. zenml/integrations/numpy/__init__.py +32 -0
  71. zenml/integrations/numpy/materializers/__init__.py +18 -0
  72. zenml/integrations/numpy/materializers/numpy_materializer.py +246 -0
  73. zenml/integrations/pandas/__init__.py +32 -0
  74. zenml/integrations/pandas/materializers/__init__.py +18 -0
  75. zenml/integrations/pandas/materializers/pandas_materializer.py +192 -0
  76. zenml/integrations/prodigy/annotators/prodigy_annotator.py +1 -1
  77. zenml/integrations/seldon/__init__.py +18 -3
  78. zenml/integrations/sklearn/__init__.py +1 -1
  79. zenml/integrations/skypilot_azure/__init__.py +1 -1
  80. zenml/integrations/tensorboard/__init__.py +1 -1
  81. zenml/integrations/tensorflow/__init__.py +2 -2
  82. zenml/integrations/tensorflow/materializers/tf_dataset_materializer.py +2 -2
  83. zenml/integrations/whylogs/__init__.py +18 -2
  84. zenml/logging/step_logging.py +9 -2
  85. zenml/materializers/__init__.py +0 -4
  86. zenml/materializers/base_materializer.py +4 -0
  87. zenml/materializers/numpy_materializer.py +23 -234
  88. zenml/materializers/pandas_materializer.py +22 -179
  89. zenml/model/model.py +91 -2
  90. zenml/model/utils.py +5 -5
  91. zenml/models/__init__.py +16 -3
  92. zenml/models/v2/core/model_version.py +1 -1
  93. zenml/models/v2/core/pipeline_run.py +31 -1
  94. zenml/models/v2/core/stack.py +51 -20
  95. zenml/models/v2/core/step_run.py +28 -0
  96. zenml/models/v2/misc/info_models.py +78 -0
  97. zenml/new/pipelines/pipeline.py +65 -25
  98. zenml/new/pipelines/run_utils.py +57 -136
  99. zenml/new/steps/step_context.py +17 -6
  100. zenml/orchestrators/base_orchestrator.py +9 -0
  101. zenml/orchestrators/step_launcher.py +37 -14
  102. zenml/orchestrators/step_runner.py +14 -13
  103. zenml/orchestrators/utils.py +107 -7
  104. zenml/service_connectors/service_connector_utils.py +2 -2
  105. zenml/stack/utils.py +11 -2
  106. zenml/stack_deployments/azure_stack_deployment.py +2 -1
  107. zenml/steps/base_step.py +62 -25
  108. zenml/steps/utils.py +115 -3
  109. zenml/utils/cloud_utils.py +8 -8
  110. zenml/utils/code_utils.py +130 -32
  111. zenml/utils/function_utils.py +7 -7
  112. zenml/utils/notebook_utils.py +14 -0
  113. zenml/utils/pipeline_docker_image_builder.py +1 -11
  114. zenml/utils/pydantic_utils.py +3 -3
  115. zenml/utils/secret_utils.py +2 -2
  116. zenml/utils/settings_utils.py +1 -1
  117. zenml/utils/source_utils.py +67 -21
  118. zenml/utils/string_utils.py +29 -0
  119. zenml/zen_server/dashboard/assets/{404-CRAA_Lew.js → 404-iO8vpun1.js} +1 -1
  120. zenml/zen_server/dashboard/assets/{@radix-BXWm7HOa.js → @radix-DnFH_oo1.js} +1 -1
  121. zenml/zen_server/dashboard/assets/{@react-router-l3lMcXA2.js → @react-router-APVeuk-U.js} +1 -1
  122. zenml/zen_server/dashboard/assets/{@reactflow-CeVxyqYT.js → @reactflow-B6kq9fJZ.js} +2 -2
  123. zenml/zen_server/dashboard/assets/{@tanstack-FmcYZMuX.js → @tanstack-QbMbTrh5.js} +1 -1
  124. zenml/zen_server/dashboard/assets/AlertDialogDropdownItem-BXeSvmMY.js +1 -0
  125. zenml/zen_server/dashboard/assets/{CodeSnippet-D0VLxT2A.js → CodeSnippet-DNWdQmbo.js} +2 -2
  126. zenml/zen_server/dashboard/assets/CollapsibleCard-B2OVjWYE.js +1 -0
  127. zenml/zen_server/dashboard/assets/Commands-DsoaVElZ.js +1 -0
  128. zenml/zen_server/dashboard/assets/CopyButton-BqE_-PHO.js +2 -0
  129. zenml/zen_server/dashboard/assets/{CsvVizualization-D3kAypDj.js → CsvVizualization-Dyasr2jU.js} +6 -6
  130. zenml/zen_server/dashboard/assets/{edit-C0MVvPD2.js → DialogItem-Cz1VLRwa.js} +1 -1
  131. zenml/zen_server/dashboard/assets/{DisplayDate-DizbSeT-.js → DisplayDate-DkCy54Bp.js} +1 -1
  132. zenml/zen_server/dashboard/assets/EditSecretDialog-Du423_3U.js +1 -0
  133. zenml/zen_server/dashboard/assets/{EmptyState-BHblM39I.js → EmptyState-Cs3DEmso.js} +1 -1
  134. zenml/zen_server/dashboard/assets/{Error-C6LeJSER.js → Error-DorJD_va.js} +1 -1
  135. zenml/zen_server/dashboard/assets/ExecutionStatus-CIfQTutR.js +1 -0
  136. zenml/zen_server/dashboard/assets/{Helpbox-aAB2XP-z.js → Helpbox-CmfvtNeq.js} +1 -1
  137. zenml/zen_server/dashboard/assets/Infobox-BL9NOS37.js +1 -0
  138. zenml/zen_server/dashboard/assets/{InlineAvatar-DpTLgM3Q.js → InlineAvatar-Ds2ZFHPc.js} +1 -1
  139. zenml/zen_server/dashboard/assets/{Lock-CNyJvf2r.js → Lock-CmIn0szs.js} +1 -1
  140. zenml/zen_server/dashboard/assets/{MarkdownVisualization-Bajxn0HY.js → MarkdownVisualization-DS05sfBm.js} +1 -1
  141. zenml/zen_server/dashboard/assets/{NumberBox-BmKE0qnO.js → NumberBox-CrN0_kqI.js} +1 -1
  142. zenml/zen_server/dashboard/assets/Partials-DX-8iEa1.js +1 -0
  143. zenml/zen_server/dashboard/assets/{PasswordChecker-yGGoJSB-.js → PasswordChecker-DE71J_3F.js} +1 -1
  144. zenml/zen_server/dashboard/assets/ProviderIcon-BOQJgapd.js +1 -0
  145. zenml/zen_server/dashboard/assets/ProviderRadio-BsYBw9YA.js +1 -0
  146. zenml/zen_server/dashboard/assets/SearchField-W3GXpLlI.js +1 -0
  147. zenml/zen_server/dashboard/assets/SetPassword-B-0a8UCj.js +1 -0
  148. zenml/zen_server/dashboard/assets/{Tick-uxv80Q6a.js → Tick-i1DYsVcX.js} +1 -1
  149. zenml/zen_server/dashboard/assets/{UpdatePasswordSchemas-oN4G3sKz.js → UpdatePasswordSchemas-C6Zb7ASL.js} +1 -1
  150. zenml/zen_server/dashboard/assets/UsageReason-CCnzmwS8.js +1 -0
  151. zenml/zen_server/dashboard/assets/WizardFooter-BHbO7zOa.js +1 -0
  152. zenml/zen_server/dashboard/assets/all-pipeline-runs-query-BBEe6I9-.js +1 -0
  153. zenml/zen_server/dashboard/assets/{check-circle-1_I207rW.js → check-circle-DOoS4yhF.js} +1 -1
  154. zenml/zen_server/dashboard/assets/{chevron-down-BpaF8JqM.js → chevron-down-Cwb-W_B_.js} +1 -1
  155. zenml/zen_server/dashboard/assets/{chevron-right-double-Dk8e2L99.js → chevron-right-double-c9H46Kl8.js} +1 -1
  156. zenml/zen_server/dashboard/assets/{cloud-only-BkUuI0lZ.js → cloud-only-BuP4Kt_7.js} +1 -1
  157. zenml/zen_server/dashboard/assets/code-browser-BJYErIjr.js +1 -0
  158. zenml/zen_server/dashboard/assets/codespaces-BitYDX9d.gif +0 -0
  159. zenml/zen_server/dashboard/assets/{copy-f3XGPPxt.js → copy-CaGlDsUy.js} +1 -1
  160. zenml/zen_server/dashboard/assets/create-stack-B2x2d4r1.js +1 -0
  161. zenml/zen_server/dashboard/assets/{docker-8uj__HHK.js → docker-BFAFXr2_.js} +1 -1
  162. zenml/zen_server/dashboard/assets/{dots-horizontal-sKQlWEni.js → dots-horizontal-C6K59vUm.js} +1 -1
  163. zenml/zen_server/dashboard/assets/flyte-Cj-xy_8I.svg +10 -0
  164. zenml/zen_server/dashboard/assets/form-schemas-Bap0f854.js +1 -0
  165. zenml/zen_server/dashboard/assets/gcp-Dj6ntk0L.js +1 -0
  166. zenml/zen_server/dashboard/assets/{help-FuHlZwn0.js → help-CwN931fX.js} +1 -1
  167. zenml/zen_server/dashboard/assets/{index-Bd1xgUQG.js → index-5GJ5ysEZ.js} +1 -1
  168. zenml/zen_server/dashboard/assets/{index-DaGknux4.css → index-6DYjZgDn.css} +1 -1
  169. zenml/zen_server/dashboard/assets/index-B9wVwe7u.js +55 -0
  170. zenml/zen_server/dashboard/assets/index-DFi8BroH.js +1 -0
  171. zenml/zen_server/dashboard/assets/{index.esm-DT4uyn2i.js → index.esm-BE1uqCX5.js} +1 -1
  172. zenml/zen_server/dashboard/assets/kubernetes-BjbR6D-1.js +1 -0
  173. zenml/zen_server/dashboard/assets/{layout-D6oiSbfd.js → layout-Dru15_XR.js} +1 -1
  174. zenml/zen_server/dashboard/assets/link-external-BT2L8hAQ.js +1 -0
  175. zenml/zen_server/dashboard/assets/{login-mutation-13A_JSVA.js → login-mutation-DwxUz8VA.js} +1 -1
  176. zenml/zen_server/dashboard/assets/{logs-CgeE2vZP.js → logs-GiDJXbLS.js} +1 -1
  177. zenml/zen_server/dashboard/assets/metaflow-weOkWNyT.svg +10 -0
  178. zenml/zen_server/dashboard/assets/{not-found-B0Mmb90p.js → not-found-D5i9DunU.js} +1 -1
  179. zenml/zen_server/dashboard/assets/{package-DdkziX79.js → package-DYKZ5jKW.js} +1 -1
  180. zenml/zen_server/dashboard/assets/page-BFuJICXM.js +9 -0
  181. zenml/zen_server/dashboard/assets/{page-BGwA9B1M.js → page-BiF8hLbO.js} +1 -1
  182. zenml/zen_server/dashboard/assets/{page-DugsjcQ_.js → page-BitfWsiW.js} +1 -1
  183. zenml/zen_server/dashboard/assets/page-CDOQLrPC.js +1 -0
  184. zenml/zen_server/dashboard/assets/page-CEJWu1YO.js +1 -0
  185. zenml/zen_server/dashboard/assets/page-CIbehp7V.js +1 -0
  186. zenml/zen_server/dashboard/assets/page-CLiRGfWo.js +1 -0
  187. zenml/zen_server/dashboard/assets/page-CV44mQn9.js +1 -0
  188. zenml/zen_server/dashboard/assets/page-CrSdkteO.js +2 -0
  189. zenml/zen_server/dashboard/assets/page-D5F3DJjm.js +1 -0
  190. zenml/zen_server/dashboard/assets/page-DE03uZZR.js +1 -0
  191. zenml/zen_server/dashboard/assets/page-DFCK65G9.js +1 -0
  192. zenml/zen_server/dashboard/assets/{page-RnG-qhv9.js → page-DGMa3ZQL.js} +1 -1
  193. zenml/zen_server/dashboard/assets/page-DI-qTWrm.js +1 -0
  194. zenml/zen_server/dashboard/assets/page-DQGCHKrQ.js +1 -0
  195. zenml/zen_server/dashboard/assets/{page-DSTQnBk-.js → page-DQdwZZ9x.js} +1 -1
  196. zenml/zen_server/dashboard/assets/page-DgM-N9RL.js +1 -0
  197. zenml/zen_server/dashboard/assets/page-Dt8VgzbE.js +1 -0
  198. zenml/zen_server/dashboard/assets/{page-DLpOnf7u.js → page-J0s8Sq3N.js} +1 -1
  199. zenml/zen_server/dashboard/assets/page-WCQ659by.js +1 -0
  200. zenml/zen_server/dashboard/assets/page-bimkItOg.js +1 -0
  201. zenml/zen_server/dashboard/assets/{page-hQaiQXfg.js → page-iwoJnwPv.js} +1 -1
  202. zenml/zen_server/dashboard/assets/{page-YiF_fNbe.js → page-oS4hqS8M.js} +1 -1
  203. zenml/zen_server/dashboard/assets/page-oSqx9dkH.js +1 -0
  204. zenml/zen_server/dashboard/assets/page-p3GqEAUW.js +1 -0
  205. zenml/zen_server/dashboard/assets/page-qvcUVPE-.js +1 -0
  206. zenml/zen_server/dashboard/assets/page-xQG6GmFJ.js +1 -0
  207. zenml/zen_server/dashboard/assets/{persist-3-5nOJ6m.js → persist-mEZN_fgH.js} +1 -1
  208. zenml/zen_server/dashboard/assets/persist-xsYgVtR1.js +1 -0
  209. zenml/zen_server/dashboard/assets/{plus-FB9-lEq_.js → plus-Bc8eLSDM.js} +1 -1
  210. zenml/zen_server/dashboard/assets/{refresh-COb6KYDi.js → refresh-hfgWPeto.js} +1 -1
  211. zenml/zen_server/dashboard/assets/rocket-SESCGQXm.js +1 -0
  212. zenml/zen_server/dashboard/assets/sharedSchema-BfZcy7aP.js +14 -0
  213. zenml/zen_server/dashboard/assets/stack-detail-query-CU4egfhp.js +1 -0
  214. zenml/zen_server/dashboard/assets/templates-1S_8WeSK.webp +0 -0
  215. zenml/zen_server/dashboard/assets/{trash-Cd5CSFqA.js → trash-DUWZWzse.js} +1 -1
  216. zenml/zen_server/dashboard/assets/{update-server-settings-mutation-B8GB_ubU.js → update-server-settings-mutation-DNqmQXDM.js} +1 -1
  217. zenml/zen_server/dashboard/assets/{url-hcMJkz8p.js → url-DwbuKk1b.js} +1 -1
  218. zenml/zen_server/dashboard/assets/{zod-CnykDKJj.js → zod-uFd1wBcd.js} +1 -1
  219. zenml/zen_server/dashboard/index.html +7 -7
  220. zenml/zen_server/dashboard_legacy/asset-manifest.json +4 -4
  221. zenml/zen_server/dashboard_legacy/index.html +1 -1
  222. zenml/zen_server/dashboard_legacy/{precache-manifest.9c473c96a43298343a7ce1256183123b.js → precache-manifest.290b95d5b43efa3368b3dc63d20c4782.js} +4 -4
  223. zenml/zen_server/dashboard_legacy/service-worker.js +1 -1
  224. zenml/zen_server/dashboard_legacy/static/js/{main.463c90b9.chunk.js → main.840d1bf0.chunk.js} +2 -2
  225. zenml/zen_server/dashboard_legacy/static/js/{main.463c90b9.chunk.js.map → main.840d1bf0.chunk.js.map} +1 -1
  226. zenml/zen_server/deploy/helm/Chart.yaml +1 -1
  227. zenml/zen_server/deploy/helm/README.md +2 -2
  228. zenml/zen_server/routers/service_connectors_endpoints.py +2 -4
  229. zenml/zen_server/routers/workspaces_endpoints.py +20 -66
  230. zenml/zen_server/secure_headers.py +120 -0
  231. zenml/zen_server/template_execution/runner_entrypoint_configuration.py +0 -2
  232. zenml/zen_server/template_execution/utils.py +1 -0
  233. zenml/zen_server/utils.py +0 -100
  234. zenml/zen_server/zen_server_api.py +4 -2
  235. zenml/zen_stores/migrations/versions/0.65.0_release.py +23 -0
  236. zenml/zen_stores/migrations/versions/0.66.0_release.py +23 -0
  237. zenml/zen_stores/migrations/versions/bf2120261b5a_add_configured_model_version_id.py +74 -0
  238. zenml/zen_stores/rest_zen_store.py +4 -21
  239. zenml/zen_stores/schemas/constants.py +16 -0
  240. zenml/zen_stores/schemas/model_schemas.py +9 -3
  241. zenml/zen_stores/schemas/pipeline_run_schemas.py +22 -8
  242. zenml/zen_stores/schemas/step_run_schemas.py +23 -12
  243. zenml/zen_stores/sql_zen_store.py +312 -300
  244. zenml/zen_stores/zen_store_interface.py +0 -16
  245. {zenml_nightly-0.64.0.dev20240811.dist-info → zenml_nightly-0.66.0.dev20240910.dist-info}/METADATA +10 -12
  246. {zenml_nightly-0.64.0.dev20240811.dist-info → zenml_nightly-0.66.0.dev20240910.dist-info}/RECORD +249 -217
  247. zenml/models/v2/misc/full_stack.py +0 -129
  248. zenml/new/pipelines/model_utils.py +0 -72
  249. zenml/zen_server/dashboard/assets/AlertDialogDropdownItem-ErO9aOgK.js +0 -1
  250. zenml/zen_server/dashboard/assets/AwarenessChannel-CLXo5rKM.js +0 -1
  251. zenml/zen_server/dashboard/assets/CollapsibleCard-BaUPiVg0.js +0 -1
  252. zenml/zen_server/dashboard/assets/Commands-JrcZK-3j.js +0 -1
  253. zenml/zen_server/dashboard/assets/CopyButton-Dbo52T1K.js +0 -2
  254. zenml/zen_server/dashboard/assets/EditSecretDialog-Bd7mFLS4.js +0 -1
  255. zenml/zen_server/dashboard/assets/ExecutionStatus-jH4OrWBq.js +0 -1
  256. zenml/zen_server/dashboard/assets/Infobox-BQ0aty32.js +0 -1
  257. zenml/zen_server/dashboard/assets/ProviderRadio-BBqkIuTd.js +0 -1
  258. zenml/zen_server/dashboard/assets/RadioItem-xLhXoiFV.js +0 -1
  259. zenml/zen_server/dashboard/assets/SearchField-C9R0mdaX.js +0 -1
  260. zenml/zen_server/dashboard/assets/SetPassword-52sNxNiO.js +0 -1
  261. zenml/zen_server/dashboard/assets/SuccessStep-DlkItqYG.js +0 -1
  262. zenml/zen_server/dashboard/assets/aws-0_3UsPif.js +0 -1
  263. zenml/zen_server/dashboard/assets/database-cXYNX9tt.js +0 -1
  264. zenml/zen_server/dashboard/assets/file-text-B9JibxTs.js +0 -1
  265. zenml/zen_server/dashboard/assets/index-DhIZtpxB.js +0 -55
  266. zenml/zen_server/dashboard/assets/page-7-v2OBm-.js +0 -1
  267. zenml/zen_server/dashboard/assets/page-B3ozwdD1.js +0 -1
  268. zenml/zen_server/dashboard/assets/page-BkjAUyTA.js +0 -1
  269. zenml/zen_server/dashboard/assets/page-BnacgBiy.js +0 -1
  270. zenml/zen_server/dashboard/assets/page-BxF_KMQ3.js +0 -2
  271. zenml/zen_server/dashboard/assets/page-C4POHC0K.js +0 -1
  272. zenml/zen_server/dashboard/assets/page-C9kudd44.js +0 -9
  273. zenml/zen_server/dashboard/assets/page-CA1j3GpJ.js +0 -1
  274. zenml/zen_server/dashboard/assets/page-CCY6yfmu.js +0 -1
  275. zenml/zen_server/dashboard/assets/page-CgTe7Bme.js +0 -1
  276. zenml/zen_server/dashboard/assets/page-Cgn-6v2Y.js +0 -1
  277. zenml/zen_server/dashboard/assets/page-CxQmQqDw.js +0 -1
  278. zenml/zen_server/dashboard/assets/page-D2Goey3H.js +0 -1
  279. zenml/zen_server/dashboard/assets/page-DTysUGOy.js +0 -1
  280. zenml/zen_server/dashboard/assets/page-D_EXUFJb.js +0 -1
  281. zenml/zen_server/dashboard/assets/page-Db15QzsM.js +0 -1
  282. zenml/zen_server/dashboard/assets/page-OFKSPyN7.js +0 -1
  283. zenml/zen_server/dashboard/assets/page-T2BtjwPl.js +0 -1
  284. zenml/zen_server/dashboard/assets/page-TXe1Eo3Z.js +0 -1
  285. zenml/zen_server/dashboard/assets/play-circle-XSkLR12B.js +0 -1
  286. zenml/zen_server/dashboard/assets/sharedSchema-BoYx_B_L.js +0 -14
  287. zenml/zen_server/dashboard/assets/stack-detail-query-B-US_-wa.js +0 -1
  288. zenml/zen_server/dashboard/assets/terminal-grtjrIEJ.js +0 -1
  289. {zenml_nightly-0.64.0.dev20240811.dist-info → zenml_nightly-0.66.0.dev20240910.dist-info}/LICENSE +0 -0
  290. {zenml_nightly-0.64.0.dev20240811.dist-info → zenml_nightly-0.66.0.dev20240910.dist-info}/WHEEL +0 -0
  291. {zenml_nightly-0.64.0.dev20240811.dist-info → zenml_nightly-0.66.0.dev20240910.dist-info}/entry_points.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  apiVersion: v2
2
2
  name: zenml
3
- version: "0.64.0"
3
+ version: "0.66.0"
4
4
  description: Open source MLOps framework for portable production ready ML pipelines
5
5
  keywords:
6
6
  - mlops
@@ -20,8 +20,8 @@ ZenML is an open-source MLOps framework designed to help you create robust, main
20
20
  To install the ZenML chart directly from Amazon ECR, use the following command:
21
21
 
22
22
  ```bash
23
- # example command for version 0.64.0
24
- helm install my-zenml oci://public.ecr.aws/zenml/zenml --version 0.64.0
23
+ # example command for version 0.66.0
24
+ helm install my-zenml oci://public.ecr.aws/zenml/zenml --version 0.66.0
25
25
  ```
26
26
 
27
27
  Note: Ensure you have OCI support enabled in your Helm client and that you are authenticated with Amazon ECR.
@@ -30,16 +30,14 @@ from zenml.constants import (
30
30
  from zenml.models import (
31
31
  Page,
32
32
  ServiceConnectorFilter,
33
+ ServiceConnectorInfo,
33
34
  ServiceConnectorRequest,
35
+ ServiceConnectorResourcesInfo,
34
36
  ServiceConnectorResourcesModel,
35
37
  ServiceConnectorResponse,
36
38
  ServiceConnectorTypeModel,
37
39
  ServiceConnectorUpdate,
38
40
  )
39
- from zenml.models.v2.misc.full_stack import (
40
- ServiceConnectorInfo,
41
- ServiceConnectorResourcesInfo,
42
- )
43
41
  from zenml.service_connectors.service_connector_utils import (
44
42
  get_resources_options_from_resource_model_for_full_stack,
45
43
  )
@@ -22,7 +22,6 @@ from zenml.constants import (
22
22
  API,
23
23
  ARTIFACTS,
24
24
  CODE_REPOSITORIES,
25
- FULL_STACK,
26
25
  GET_OR_CREATE,
27
26
  MODEL_VERSIONS,
28
27
  MODELS,
@@ -53,7 +52,6 @@ from zenml.models import (
53
52
  ComponentFilter,
54
53
  ComponentRequest,
55
54
  ComponentResponse,
56
- FullStackRequest,
57
55
  ModelRequest,
58
56
  ModelResponse,
59
57
  ModelVersionArtifactRequest,
@@ -113,7 +111,6 @@ from zenml.zen_server.rbac.endpoint_utils import (
113
111
  )
114
112
  from zenml.zen_server.rbac.models import Action, ResourceType
115
113
  from zenml.zen_server.rbac.utils import (
116
- batch_verify_permissions_for_models,
117
114
  get_allowed_resource_ids,
118
115
  verify_permission,
119
116
  verify_permission_for_model,
@@ -315,62 +312,13 @@ def list_workspace_stacks(
315
312
  def create_stack(
316
313
  workspace_name_or_id: Union[str, UUID],
317
314
  stack: StackRequest,
318
- _: AuthContext = Security(authorize),
319
- ) -> StackResponse:
320
- """Creates a stack for a particular workspace.
321
-
322
- Args:
323
- workspace_name_or_id: Name or ID of the workspace.
324
- stack: Stack to register.
325
-
326
- Returns:
327
- The created stack.
328
-
329
- Raises:
330
- IllegalOperationError: If the workspace specified in the stack
331
- does not match the current workspace.
332
- """
333
- workspace = zen_store().get_workspace(workspace_name_or_id)
334
-
335
- if stack.workspace != workspace.id:
336
- raise IllegalOperationError(
337
- "Creating stacks outside of the workspace scope "
338
- f"of this endpoint `{workspace_name_or_id}` is "
339
- f"not supported."
340
- )
341
-
342
- if stack.components:
343
- components = [
344
- zen_store().get_stack_component(id)
345
- for ids in stack.components.values()
346
- for id in ids
347
- ]
348
-
349
- batch_verify_permissions_for_models(components, action=Action.READ)
350
-
351
- return verify_permissions_and_create_entity(
352
- request_model=stack,
353
- resource_type=ResourceType.STACK,
354
- create_method=zen_store().create_stack,
355
- )
356
-
357
-
358
- @router.post(
359
- WORKSPACES + "/{workspace_name_or_id}" + FULL_STACK,
360
- response_model=StackResponse,
361
- responses={401: error_response, 409: error_response, 422: error_response},
362
- )
363
- @handle_exceptions
364
- def create_full_stack(
365
- workspace_name_or_id: Union[str, UUID],
366
- full_stack: FullStackRequest,
367
315
  auth_context: AuthContext = Security(authorize),
368
316
  ) -> StackResponse:
369
317
  """Creates a stack for a particular workspace.
370
318
 
371
319
  Args:
372
320
  workspace_name_or_id: Name or ID of the workspace.
373
- full_stack: Stack to register.
321
+ stack: Stack to register.
374
322
  auth_context: Authentication context.
375
323
 
376
324
  Returns:
@@ -378,8 +326,9 @@ def create_full_stack(
378
326
  """
379
327
  workspace = zen_store().get_workspace(workspace_name_or_id)
380
328
 
329
+ # Check the service connector creation
381
330
  is_connector_create_needed = False
382
- for connector_id_or_info in full_stack.service_connectors:
331
+ for connector_id_or_info in stack.service_connectors:
383
332
  if isinstance(connector_id_or_info, UUID):
384
333
  service_connector = zen_store().get_service_connector(
385
334
  connector_id_or_info, hydrate=False
@@ -389,32 +338,37 @@ def create_full_stack(
389
338
  )
390
339
  else:
391
340
  is_connector_create_needed = True
341
+
342
+ # Check the component creation
392
343
  if is_connector_create_needed:
393
344
  verify_permission(
394
345
  resource_type=ResourceType.SERVICE_CONNECTOR, action=Action.CREATE
395
346
  )
396
-
397
347
  is_component_create_needed = False
398
- for component_id_or_info in full_stack.components.values():
399
- if isinstance(component_id_or_info, UUID):
400
- component = zen_store().get_stack_component(
401
- component_id_or_info, hydrate=False
402
- )
403
- verify_permission_for_model(model=component, action=Action.READ)
404
- else:
405
- is_component_create_needed = True
348
+ for components in stack.components.values():
349
+ for component_id_or_info in components:
350
+ if isinstance(component_id_or_info, UUID):
351
+ component = zen_store().get_stack_component(
352
+ component_id_or_info, hydrate=False
353
+ )
354
+ verify_permission_for_model(
355
+ model=component, action=Action.READ
356
+ )
357
+ else:
358
+ is_component_create_needed = True
406
359
  if is_component_create_needed:
407
360
  verify_permission(
408
361
  resource_type=ResourceType.STACK_COMPONENT,
409
362
  action=Action.CREATE,
410
363
  )
411
364
 
365
+ # Check the stack creation
412
366
  verify_permission(resource_type=ResourceType.STACK, action=Action.CREATE)
413
367
 
414
- full_stack.user = auth_context.user.id
415
- full_stack.workspace = workspace.id
368
+ stack.user = auth_context.user.id
369
+ stack.workspace = workspace.id
416
370
 
417
- return zen_store().create_full_stack(full_stack)
371
+ return zen_store().create_stack(stack)
418
372
 
419
373
 
420
374
  @router.get(
@@ -0,0 +1,120 @@
1
+ # Copyright (c) ZenML GmbH 2024. All Rights Reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at:
6
+ #
7
+ # https://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
12
+ # or implied. See the License for the specific language governing
13
+ # permissions and limitations under the License.
14
+ """Secure headers for the ZenML Server."""
15
+
16
+ from typing import Optional
17
+
18
+ import secure
19
+
20
+ from zenml.zen_server.utils import server_config
21
+
22
+ _secure_headers: Optional[secure.Secure] = None
23
+
24
+
25
+ def secure_headers() -> secure.Secure:
26
+ """Return the secure headers component.
27
+
28
+ Returns:
29
+ The secure headers component.
30
+
31
+ Raises:
32
+ RuntimeError: If the secure headers component is not initialized.
33
+ """
34
+ global _secure_headers
35
+ if _secure_headers is None:
36
+ raise RuntimeError("Secure headers component not initialized")
37
+ return _secure_headers
38
+
39
+
40
+ def initialize_secure_headers() -> None:
41
+ """Initialize the secure headers component."""
42
+ global _secure_headers
43
+
44
+ config = server_config()
45
+
46
+ # For each of the secure headers supported by the `secure` library, we
47
+ # check if the corresponding configuration is set in the server
48
+ # configuration:
49
+ #
50
+ # - if set to `True`, we use the default value for the header
51
+ # - if set to a string, we use the string as the value for the header
52
+ # - if set to `False`, we don't set the header
53
+
54
+ server: Optional[secure.Server] = None
55
+ if config.secure_headers_server:
56
+ server = secure.Server()
57
+ if isinstance(config.secure_headers_server, str):
58
+ server.set(config.secure_headers_server)
59
+ else:
60
+ server.set(str(config.deployment_id))
61
+
62
+ hsts: Optional[secure.StrictTransportSecurity] = None
63
+ if config.secure_headers_hsts:
64
+ hsts = secure.StrictTransportSecurity()
65
+ if isinstance(config.secure_headers_hsts, str):
66
+ hsts.set(config.secure_headers_hsts)
67
+
68
+ xfo: Optional[secure.XFrameOptions] = None
69
+ if config.secure_headers_xfo:
70
+ xfo = secure.XFrameOptions()
71
+ if isinstance(config.secure_headers_xfo, str):
72
+ xfo.set(config.secure_headers_xfo)
73
+
74
+ xxp: Optional[secure.XXSSProtection] = None
75
+ if config.secure_headers_xxp:
76
+ xxp = secure.XXSSProtection()
77
+ if isinstance(config.secure_headers_xxp, str):
78
+ xxp.set(config.secure_headers_xxp)
79
+
80
+ csp: Optional[secure.ContentSecurityPolicy] = None
81
+ if config.secure_headers_csp:
82
+ csp = secure.ContentSecurityPolicy()
83
+ if isinstance(config.secure_headers_csp, str):
84
+ csp.set(config.secure_headers_csp)
85
+
86
+ content: Optional[secure.XContentTypeOptions] = None
87
+ if config.secure_headers_content:
88
+ content = secure.XContentTypeOptions()
89
+ if isinstance(config.secure_headers_content, str):
90
+ content.set(config.secure_headers_content)
91
+
92
+ referrer: Optional[secure.ReferrerPolicy] = None
93
+ if config.secure_headers_referrer:
94
+ referrer = secure.ReferrerPolicy()
95
+ if isinstance(config.secure_headers_referrer, str):
96
+ referrer.set(config.secure_headers_referrer)
97
+
98
+ cache: Optional[secure.CacheControl] = None
99
+ if config.secure_headers_cache:
100
+ cache = secure.CacheControl()
101
+ if isinstance(config.secure_headers_cache, str):
102
+ cache.set(config.secure_headers_cache)
103
+
104
+ permissions: Optional[secure.PermissionsPolicy] = None
105
+ if config.secure_headers_permissions:
106
+ permissions = secure.PermissionsPolicy()
107
+ if isinstance(config.secure_headers_permissions, str):
108
+ permissions.value = config.secure_headers_permissions
109
+
110
+ _secure_headers = secure.Secure(
111
+ server=server,
112
+ hsts=hsts,
113
+ xfo=xfo,
114
+ xxp=xxp,
115
+ csp=csp,
116
+ content=content,
117
+ referrer=referrer,
118
+ cache=cache,
119
+ permissions=permissions,
120
+ )
@@ -19,7 +19,6 @@ from zenml.entrypoints.base_entrypoint_configuration import (
19
19
  )
20
20
  from zenml.new.pipelines.run_utils import (
21
21
  deploy_pipeline,
22
- prepare_model_versions,
23
22
  )
24
23
 
25
24
 
@@ -37,5 +36,4 @@ class RunnerEntrypointConfiguration(BaseEntrypointConfiguration):
37
36
  stack = Client().active_stack
38
37
  assert deployment.stack and stack.id == deployment.stack.id
39
38
 
40
- prepare_model_versions(deployment=deployment)
41
39
  deploy_pipeline(deployment=deployment, stack=stack)
@@ -474,6 +474,7 @@ def deployment_request_from_template(
474
474
  build=deployment.build.id,
475
475
  schedule=None,
476
476
  code_reference=code_reference_request,
477
+ code_path=deployment.code_path,
477
478
  template=template.id,
478
479
  pipeline_version_hash=deployment.pipeline_version_hash,
479
480
  pipeline_spec=deployment.pipeline_spec,
zenml/zen_server/utils.py CHANGED
@@ -29,7 +29,6 @@ from typing import (
29
29
  )
30
30
  from urllib.parse import urlparse
31
31
 
32
- import secure
33
32
  from pydantic import BaseModel, ValidationError
34
33
 
35
34
  from zenml.config.global_config import GlobalConfiguration
@@ -68,7 +67,6 @@ _rbac: Optional[RBACInterface] = None
68
67
  _feature_gate: Optional[FeatureGateInterface] = None
69
68
  _workload_manager: Optional[WorkloadManagerInterface] = None
70
69
  _plugin_flavor_registry: Optional[PluginFlavorRegistry] = None
71
- _secure_headers: Optional[secure.Secure] = None
72
70
 
73
71
 
74
72
  def zen_store() -> "SqlZenStore":
@@ -224,104 +222,6 @@ def initialize_zen_store() -> None:
224
222
  _zen_store = zen_store_
225
223
 
226
224
 
227
- def secure_headers() -> secure.Secure:
228
- """Return the secure headers component.
229
-
230
- Returns:
231
- The secure headers component.
232
-
233
- Raises:
234
- RuntimeError: If the secure headers component is not initialized.
235
- """
236
- global _secure_headers
237
- if _secure_headers is None:
238
- raise RuntimeError("Secure headers component not initialized")
239
- return _secure_headers
240
-
241
-
242
- def initialize_secure_headers() -> None:
243
- """Initialize the secure headers component."""
244
- global _secure_headers
245
-
246
- config = server_config()
247
-
248
- # For each of the secure headers supported by the `secure` library, we
249
- # check if the corresponding configuration is set in the server
250
- # configuration:
251
- #
252
- # - if set to `True`, we use the default value for the header
253
- # - if set to a string, we use the string as the value for the header
254
- # - if set to `False`, we don't set the header
255
-
256
- server: Optional[secure.Server] = None
257
- if config.secure_headers_server:
258
- server = secure.Server()
259
- if isinstance(config.secure_headers_server, str):
260
- server.set(config.secure_headers_server)
261
- else:
262
- server.set(str(config.deployment_id))
263
-
264
- hsts: Optional[secure.StrictTransportSecurity] = None
265
- if config.secure_headers_hsts:
266
- hsts = secure.StrictTransportSecurity()
267
- if isinstance(config.secure_headers_hsts, str):
268
- hsts.set(config.secure_headers_hsts)
269
-
270
- xfo: Optional[secure.XFrameOptions] = None
271
- if config.secure_headers_xfo:
272
- xfo = secure.XFrameOptions()
273
- if isinstance(config.secure_headers_xfo, str):
274
- xfo.set(config.secure_headers_xfo)
275
-
276
- xxp: Optional[secure.XXSSProtection] = None
277
- if config.secure_headers_xxp:
278
- xxp = secure.XXSSProtection()
279
- if isinstance(config.secure_headers_xxp, str):
280
- xxp.set(config.secure_headers_xxp)
281
-
282
- csp: Optional[secure.ContentSecurityPolicy] = None
283
- if config.secure_headers_csp:
284
- csp = secure.ContentSecurityPolicy()
285
- if isinstance(config.secure_headers_csp, str):
286
- csp.set(config.secure_headers_csp)
287
-
288
- content: Optional[secure.XContentTypeOptions] = None
289
- if config.secure_headers_content:
290
- content = secure.XContentTypeOptions()
291
- if isinstance(config.secure_headers_content, str):
292
- content.set(config.secure_headers_content)
293
-
294
- referrer: Optional[secure.ReferrerPolicy] = None
295
- if config.secure_headers_referrer:
296
- referrer = secure.ReferrerPolicy()
297
- if isinstance(config.secure_headers_referrer, str):
298
- referrer.set(config.secure_headers_referrer)
299
-
300
- cache: Optional[secure.CacheControl] = None
301
- if config.secure_headers_cache:
302
- cache = secure.CacheControl()
303
- if isinstance(config.secure_headers_cache, str):
304
- cache.set(config.secure_headers_cache)
305
-
306
- permissions: Optional[secure.PermissionsPolicy] = None
307
- if config.secure_headers_permissions:
308
- permissions = secure.PermissionsPolicy()
309
- if isinstance(config.secure_headers_permissions, str):
310
- permissions.value = config.secure_headers_permissions
311
-
312
- _secure_headers = secure.Secure(
313
- server=server,
314
- hsts=hsts,
315
- xfo=xfo,
316
- xxp=xxp,
317
- csp=csp,
318
- content=content,
319
- referrer=referrer,
320
- cache=cache,
321
- permissions=permissions,
322
- )
323
-
324
-
325
225
  _server_config: Optional[ServerConfiguration] = None
326
226
 
327
227
 
@@ -78,15 +78,17 @@ from zenml.zen_server.routers import (
78
78
  webhook_endpoints,
79
79
  workspaces_endpoints,
80
80
  )
81
+ from zenml.zen_server.secure_headers import (
82
+ initialize_secure_headers,
83
+ secure_headers,
84
+ )
81
85
  from zenml.zen_server.utils import (
82
86
  initialize_feature_gate,
83
87
  initialize_plugins,
84
88
  initialize_rbac,
85
- initialize_secure_headers,
86
89
  initialize_workload_manager,
87
90
  initialize_zen_store,
88
91
  is_user_request,
89
- secure_headers,
90
92
  server_config,
91
93
  zen_store,
92
94
  )
@@ -0,0 +1,23 @@
1
+ """Release [0.65.0].
2
+
3
+ Revision ID: 0.65.0
4
+ Revises: bf2120261b5a
5
+ Create Date: 2024-08-28 15:42:13.858104
6
+
7
+ """
8
+
9
+ # revision identifiers, used by Alembic.
10
+ revision = "0.65.0"
11
+ down_revision = "bf2120261b5a"
12
+ branch_labels = None
13
+ depends_on = None
14
+
15
+
16
+ def upgrade() -> None:
17
+ """Upgrade database schema and/or data, creating a new revision."""
18
+ pass
19
+
20
+
21
+ def downgrade() -> None:
22
+ """Downgrade database schema and/or data back to the previous revision."""
23
+ pass
@@ -0,0 +1,23 @@
1
+ """Release [0.66.0].
2
+
3
+ Revision ID: 0.66.0
4
+ Revises: 0.65.0
5
+ Create Date: 2024-09-09 14:12:13.152805
6
+
7
+ """
8
+
9
+ # revision identifiers, used by Alembic.
10
+ revision = "0.66.0"
11
+ down_revision = "0.65.0"
12
+ branch_labels = None
13
+ depends_on = None
14
+
15
+
16
+ def upgrade() -> None:
17
+ """Upgrade database schema and/or data, creating a new revision."""
18
+ pass
19
+
20
+
21
+ def downgrade() -> None:
22
+ """Downgrade database schema and/or data back to the previous revision."""
23
+ pass
@@ -0,0 +1,74 @@
1
+ """add model_version_id [bf2120261b5a].
2
+
3
+ Revision ID: bf2120261b5a
4
+ Revises: 0.64.0
5
+ Create Date: 2024-08-07 11:31:00.661089
6
+
7
+ """
8
+
9
+ import sqlalchemy as sa
10
+ import sqlmodel
11
+ from alembic import op
12
+
13
+ # revision identifiers, used by Alembic.
14
+ revision = "bf2120261b5a"
15
+ down_revision = "0.64.0"
16
+ branch_labels = None
17
+ depends_on = None
18
+
19
+
20
+ def upgrade() -> None:
21
+ """Upgrade database schema and/or data, creating a new revision."""
22
+ # ### commands auto generated by Alembic - please adjust! ###
23
+ with op.batch_alter_table("pipeline_run", schema=None) as batch_op:
24
+ batch_op.add_column(
25
+ sa.Column(
26
+ "model_version_id",
27
+ sqlmodel.sql.sqltypes.GUID(),
28
+ nullable=True,
29
+ )
30
+ )
31
+ batch_op.create_foreign_key(
32
+ "fk_pipeline_run_model_version_id_model_version",
33
+ "model_version",
34
+ ["model_version_id"],
35
+ ["id"],
36
+ ondelete="SET NULL",
37
+ )
38
+
39
+ with op.batch_alter_table("step_run", schema=None) as batch_op:
40
+ batch_op.add_column(
41
+ sa.Column(
42
+ "model_version_id",
43
+ sqlmodel.sql.sqltypes.GUID(),
44
+ nullable=True,
45
+ )
46
+ )
47
+ batch_op.create_foreign_key(
48
+ "fk_step_run_model_version_id_model_version",
49
+ "model_version",
50
+ ["model_version_id"],
51
+ ["id"],
52
+ ondelete="SET NULL",
53
+ )
54
+
55
+ # ### end Alembic commands ###
56
+
57
+
58
+ def downgrade() -> None:
59
+ """Downgrade database schema and/or data back to the previous revision."""
60
+ # ### commands auto generated by Alembic - please adjust! ###
61
+ with op.batch_alter_table("step_run", schema=None) as batch_op:
62
+ batch_op.drop_constraint(
63
+ "fk_step_run_model_version_id_model_version", type_="foreignkey"
64
+ )
65
+ batch_op.drop_column("model_version_id")
66
+
67
+ with op.batch_alter_table("pipeline_run", schema=None) as batch_op:
68
+ batch_op.drop_constraint(
69
+ "fk_pipeline_run_model_version_id_model_version",
70
+ type_="foreignkey",
71
+ )
72
+ batch_op.drop_column("model_version_id")
73
+
74
+ # ### end Alembic commands ###
@@ -67,7 +67,6 @@ from zenml.constants import (
67
67
  ENV_ZENML_DISABLE_CLIENT_SERVER_MISMATCH_WARNING,
68
68
  EVENT_SOURCES,
69
69
  FLAVORS,
70
- FULL_STACK,
71
70
  GET_OR_CREATE,
72
71
  INFO,
73
72
  LOGIN,
@@ -156,7 +155,6 @@ from zenml.models import (
156
155
  FlavorRequest,
157
156
  FlavorResponse,
158
157
  FlavorUpdate,
159
- FullStackRequest,
160
158
  LogsResponse,
161
159
  ModelFilter,
162
160
  ModelRequest,
@@ -2832,27 +2830,12 @@ class RestZenStore(BaseZenStore):
2832
2830
  Returns:
2833
2831
  The registered stack.
2834
2832
  """
2835
- return self._create_workspace_scoped_resource(
2836
- resource=stack,
2837
- route=STACKS,
2838
- response_model=StackResponse,
2839
- )
2840
-
2841
- def create_full_stack(self, full_stack: FullStackRequest) -> StackResponse:
2842
- """Register a full-stack.
2843
-
2844
- Args:
2845
- full_stack: The full stack configuration.
2846
-
2847
- Returns:
2848
- The registered stack.
2849
- """
2850
- assert full_stack.workspace is not None
2833
+ assert stack.workspace is not None
2851
2834
 
2852
2835
  return self._create_resource(
2853
- resource=full_stack,
2836
+ resource=stack,
2854
2837
  response_model=StackResponse,
2855
- route=f"{WORKSPACES}/{str(full_stack.workspace)}{FULL_STACK}",
2838
+ route=f"{WORKSPACES}/{str(stack.workspace)}{STACKS}",
2856
2839
  )
2857
2840
 
2858
2841
  def get_stack(self, stack_id: UUID, hydrate: bool = True) -> StackResponse:
@@ -4108,7 +4091,7 @@ class RestZenStore(BaseZenStore):
4108
4091
  f"{self.config.url}` should solve this issue. "
4109
4092
  "If you're seeing this error from an automated workload, "
4110
4093
  "you should probably use a service account to start that "
4111
- "workload to prevent this error."
4094
+ "workload to prevent this error"
4112
4095
  )
4113
4096
 
4114
4097
  @staticmethod
@@ -0,0 +1,16 @@
1
+ # Copyright (c) ZenML GmbH 2024. All Rights Reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at:
6
+ #
7
+ # https://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
12
+ # or implied. See the License for the specific language governing
13
+ # permissions and limitations under the License.
14
+ """Constant values needed by schema objects."""
15
+
16
+ MODEL_VERSION_TABLENAME = "model_version"