zenml-nightly 0.75.0.dev20250316__py3-none-any.whl → 0.75.0.dev20250318__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.
zenml/VERSION CHANGED
@@ -1 +1 @@
1
- 0.75.0.dev20250316
1
+ 0.75.0.dev20250318
@@ -476,6 +476,11 @@ class VertexOrchestrator(ContainerizedOrchestrator, GoogleCredentialsMixin):
476
476
  "Volume mounts are set but not supported in "
477
477
  "Vertex with Kubeflow Pipelines 2.x. Ignoring..."
478
478
  )
479
+ if pod_settings.env or pod_settings.env_from:
480
+ logger.warning(
481
+ "Environment variables are set but not supported "
482
+ "in Vertex with Vertex Pipelines 2.x. Ignoring..."
483
+ )
479
484
  for key in pod_settings.node_selectors:
480
485
  if (
481
486
  key
@@ -20,6 +20,7 @@ from uuid import uuid4
20
20
 
21
21
  import requests
22
22
  from github import Consts, Github, GithubException
23
+ from github.Auth import Token
23
24
  from github.Repository import Repository
24
25
 
25
26
  from zenml.code_repositories import (
@@ -145,9 +146,10 @@ class GitHubCodeRepository(BaseCodeRepository):
145
146
  """
146
147
  try:
147
148
  self._github_session = Github(
148
- login_or_token=self.config.token,
149
149
  base_url=self.config.api_url or Consts.DEFAULT_BASE_URL,
150
+ auth=Token(self.config.token) if self.config.token else None,
150
151
  )
152
+
151
153
  if self.config.token:
152
154
  user = self._github_session.get_user().login
153
155
  logger.debug(f"Logged in as {user}")
@@ -578,6 +578,12 @@ class KubeflowOrchestrator(ContainerizedOrchestrator):
578
578
  "Volume mounts are set but not supported in "
579
579
  "Kubeflow with Kubeflow Pipelines 2.x. Ignoring..."
580
580
  )
581
+ if pod_settings.env or pod_settings.env_from:
582
+ logger.warning(
583
+ "Environment variables are set but not supported "
584
+ "in Kubeflow with Kubeflow Pipelines 2.x. "
585
+ "Ignoring..."
586
+ )
581
587
 
582
588
  # apply pod settings
583
589
  if (
@@ -222,6 +222,18 @@ def add_pod_settings(
222
222
  else:
223
223
  container.volume_mounts = settings.volume_mounts
224
224
 
225
+ if settings.env:
226
+ if container.env:
227
+ container.env.extend(settings.env)
228
+ else:
229
+ container.env = settings.env
230
+
231
+ if settings.env_from:
232
+ if container.env_from:
233
+ container.env_from.extend(settings.env_from)
234
+ else:
235
+ container.env_from = settings.env_from
236
+
225
237
  if settings.volumes:
226
238
  if pod_spec.volumes:
227
239
  pod_spec.volumes.extend(settings.volumes)
@@ -35,6 +35,8 @@ class KubernetesPodSettings(BaseSettings):
35
35
  host_ipc: Whether to enable host IPC for the pod.
36
36
  image_pull_secrets: Image pull secrets to use for the pod.
37
37
  labels: Labels to apply to the pod.
38
+ env: Environment variables to apply to the container.
39
+ env_from: Environment variables to apply to the container.
38
40
  """
39
41
 
40
42
  node_selectors: Dict[str, str] = {}
@@ -47,6 +49,8 @@ class KubernetesPodSettings(BaseSettings):
47
49
  host_ipc: bool = False
48
50
  image_pull_secrets: List[str] = []
49
51
  labels: Dict[str, str] = {}
52
+ env: List[Dict[str, Any]] = []
53
+ env_from: List[Dict[str, Any]] = []
50
54
 
51
55
  @field_validator("volumes", mode="before")
52
56
  @classmethod
@@ -155,3 +159,51 @@ class KubernetesPodSettings(BaseSettings):
155
159
  return serialization_utils.serialize_kubernetes_model(value)
156
160
  else:
157
161
  return value
162
+
163
+ @field_validator("env", mode="before")
164
+ @classmethod
165
+ def _convert_env(cls, value: Any) -> Any:
166
+ """Converts Kubernetes EnvVar to a dict.
167
+
168
+ Args:
169
+ value: The env value.
170
+
171
+ Returns:
172
+ The converted value.
173
+ """
174
+ from kubernetes.client.models import V1EnvVar
175
+
176
+ result = []
177
+ for element in value:
178
+ if isinstance(element, V1EnvVar):
179
+ result.append(
180
+ serialization_utils.serialize_kubernetes_model(element)
181
+ )
182
+ else:
183
+ result.append(element)
184
+
185
+ return result
186
+
187
+ @field_validator("env_from", mode="before")
188
+ @classmethod
189
+ def _convert_env_from(cls, value: Any) -> Any:
190
+ """Converts Kubernetes EnvFromSource to a dict.
191
+
192
+ Args:
193
+ value: The env from value.
194
+
195
+ Returns:
196
+ The converted value.
197
+ """
198
+ from kubernetes.client.models import V1EnvFromSource
199
+
200
+ result = []
201
+ for element in value:
202
+ if isinstance(element, V1EnvFromSource):
203
+ result.append(
204
+ serialization_utils.serialize_kubernetes_model(element)
205
+ )
206
+ else:
207
+ result.append(element)
208
+
209
+ return result
@@ -547,6 +547,11 @@ class TektonOrchestrator(ContainerizedOrchestrator):
547
547
  "Volume mounts are set but not supported in "
548
548
  "Tekton with Tekton Pipelines 2.x. Ignoring..."
549
549
  )
550
+ if pod_settings.env or pod_settings.env_from:
551
+ logger.warning(
552
+ "Environment variables are set but not supported "
553
+ "in Tekton with Tekton Pipelines 2.x. Ignoring..."
554
+ )
550
555
  # apply pod settings
551
556
  if (
552
557
  KFP_ACCELERATOR_NODE_SELECTOR_CONSTRAINT_LABEL
zenml/login/pro/utils.py CHANGED
@@ -35,6 +35,7 @@ def get_troubleshooting_instructions(url: str) -> str:
35
35
  credentials_store = get_credentials_store()
36
36
 
37
37
  credentials = credentials_store.get_credentials(url)
38
+ pro_api_url = None
38
39
  if credentials and credentials.type == ServerType.PRO:
39
40
  pro_api_url = credentials.pro_api_url or ZENML_PRO_API_URL
40
41
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: zenml-nightly
3
- Version: 0.75.0.dev20250316
3
+ Version: 0.75.0.dev20250318
4
4
  Summary: ZenML: Write production-ready ML code.
5
5
  License: Apache-2.0
6
6
  Keywords: machine learning,production,pipeline,mlops,devops
@@ -79,12 +79,11 @@ Requires-Dist: kfp (>=2.6.0) ; extra == "vertex"
79
79
  Requires-Dist: kubernetes (>=18.20.0) ; extra == "connectors-kubernetes" or extra == "connectors-aws" or extra == "connectors-gcp" or extra == "connectors-azure"
80
80
  Requires-Dist: maison (<2.0) ; extra == "dev"
81
81
  Requires-Dist: mike (>=1.1.2,<2.0.0) ; extra == "dev"
82
- Requires-Dist: mkdocs (>=1.4.0,<2.0.0) ; extra == "dev"
83
- Requires-Dist: mkdocs-autorefs (>=0.4.1,<1.0.0) ; extra == "dev"
84
- Requires-Dist: mkdocs-awesome-pages-plugin (>=2.6.1,<3.0.0) ; extra == "dev"
85
- Requires-Dist: mkdocs-material (>=9.0.0,<10.0.0) ; extra == "dev"
86
- Requires-Dist: mkdocstrings (>=0.20.0,<1.0.0) ; extra == "dev"
87
- Requires-Dist: mkdocstrings-python (>=1.1.0,<2.0.0) ; extra == "dev"
82
+ Requires-Dist: mkdocs (>=1.6.1,<2.0.0) ; extra == "dev"
83
+ Requires-Dist: mkdocs-autorefs (>=1.4.0,<2.0.0) ; extra == "dev"
84
+ Requires-Dist: mkdocs-awesome-pages-plugin (>=2.10.1,<3.0.0) ; extra == "dev"
85
+ Requires-Dist: mkdocs-material (>=9.6.5,<10.0.0) ; extra == "dev"
86
+ Requires-Dist: mkdocstrings[python] (>=0.28.1,<0.29.0) ; extra == "dev"
88
87
  Requires-Dist: mypy (==1.7.1) ; extra == "dev"
89
88
  Requires-Dist: orjson (>=3.10.0,<3.11.0) ; extra == "server"
90
89
  Requires-Dist: packaging (>=24.1)
@@ -1,5 +1,5 @@
1
1
  zenml/README.md,sha256=827dekbOWAs1BpW7VF1a4d7EbwPbjwccX-2zdXBENZo,1777
2
- zenml/VERSION,sha256=SRamYg8RObx01aikckh_j2rSYXXhh4NnZvuAdSjY5qE,19
2
+ zenml/VERSION,sha256=45FN9ROkAa_Ug1UpjB1qzVHjXhBemobOUKG4fNFxj0A,19
3
3
  zenml/__init__.py,sha256=MJlPgyX_3UnXfwAcxeFyJNxBKjmXjBoMHEWFh3hGXJc,2207
4
4
  zenml/actions/__init__.py,sha256=mrt6wPo73iKRxK754_NqsGyJ3buW7RnVeIGXr1xEw8Y,681
5
5
  zenml/actions/base_action.py,sha256=UcaHev6BTuLDwuswnyaPjdA8AgUqB5xPZ-lRtuvf2FU,25553
@@ -269,7 +269,7 @@ zenml/integrations/gcp/google_credentials_mixin.py,sha256=bPy3JYCCcyuTmPiVFqbY81
269
269
  zenml/integrations/gcp/image_builders/__init__.py,sha256=2IvTL6U2YpUoxGQXeXew-6WFoL5hHIxkqr4DaA5Ez9w,786
270
270
  zenml/integrations/gcp/image_builders/gcp_image_builder.py,sha256=5T6BXsHxLhvp1BF_rslXl1oZzykJUPuZ3E_7-9ZZYLk,9019
271
271
  zenml/integrations/gcp/orchestrators/__init__.py,sha256=6xLFJKZKQk73fHPF-XdpbQO87zjQNGTsNHjJjLfG_Kg,805
272
- zenml/integrations/gcp/orchestrators/vertex_orchestrator.py,sha256=nv2dWvSWWW0TX-YHYX24udi3C9_ofkKKFc9DwXrKw2o,38922
272
+ zenml/integrations/gcp/orchestrators/vertex_orchestrator.py,sha256=TSCl_q-T9FHCh7pPUmkb3GgsLrTjvaV5mShdVcxd0Vw,39212
273
273
  zenml/integrations/gcp/service_connectors/__init__.py,sha256=fdydawaor8KAtMYvRZieiTuA1i5QATxXXgI-yV1lsn8,788
274
274
  zenml/integrations/gcp/service_connectors/gcp_service_connector.py,sha256=JGrFTKkQV4ZDn_yTEqX-AtBMraFasFgzLVws2mvhS64,94915
275
275
  zenml/integrations/gcp/step_operators/__init__.py,sha256=iPkob2LtPIQ-OHszhbNz_ojhoovL6SprmTx37It4EJ8,808
@@ -277,7 +277,7 @@ zenml/integrations/gcp/step_operators/vertex_step_operator.py,sha256=X8CCniyAo7N
277
277
  zenml/integrations/gcp/vertex_custom_job_parameters.py,sha256=cK1Xf2sYoES_vRdMUbpnyrwzA9MTjaVp-p6CfKaY9rg,2475
278
278
  zenml/integrations/github/__init__.py,sha256=A8Yd--BbAG3HEfbWYOIEy_kzyLs2tBiawiLMosXd1Do,1467
279
279
  zenml/integrations/github/code_repositories/__init__.py,sha256=ub_hSE2ks2mZB1aeHRjQYz7QIRQIgOw2s080IIqJaGs,817
280
- zenml/integrations/github/code_repositories/github_code_repository.py,sha256=CBXrnLRu8wFJObBr9nTo2VU-4ObSNgf2Lg0AMZ3oewk,8252
280
+ zenml/integrations/github/code_repositories/github_code_repository.py,sha256=VAFbiqzpnf4MDbXllGfc8bdYRFJ-7WAKQoYWGwnZl_o,8311
281
281
  zenml/integrations/github/plugins/__init__.py,sha256=yf7xkBs8wEUMP2-nFbDIVeXs1omHtZoyZBgobMYB1l0,804
282
282
  zenml/integrations/github/plugins/event_sources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
283
283
  zenml/integrations/github/plugins/event_sources/github_webhook_event_source.py,sha256=nU--Wk9s2W7koF-JrtWIrSpuNWNVouftHQDiEY8dkdQ,17101
@@ -330,7 +330,7 @@ zenml/integrations/kubeflow/__init__.py,sha256=ab3v3sJBwo09vbyI2UQ5SnKfL0C9j8hrx
330
330
  zenml/integrations/kubeflow/flavors/__init__.py,sha256=l560A0oIpYeTpVVrdrVVYj-2-Y5CeyCSQMfwErZROxY,878
331
331
  zenml/integrations/kubeflow/flavors/kubeflow_orchestrator_flavor.py,sha256=b7W4oASHLYN9o2n__-W3zajb_MXhPaY0UutecsW0Xw4,10381
332
332
  zenml/integrations/kubeflow/orchestrators/__init__.py,sha256=J879DBt9WbpojBTdOXy7CO6F5OuTMntBeZ8aUY2EGO8,821
333
- zenml/integrations/kubeflow/orchestrators/kubeflow_orchestrator.py,sha256=H4rpm3f8k2MOeA4JZOByzkDHDCm4560EQKwnMU3Hnvg,39202
333
+ zenml/integrations/kubeflow/orchestrators/kubeflow_orchestrator.py,sha256=tyJkjYYDvWl7FJJLM2Xh4E54QNj7aejGdN4Zn97u1UQ,39527
334
334
  zenml/integrations/kubeflow/orchestrators/local_deployment_utils.py,sha256=qszoOdvBpgIp40XkncphXAr9dRKnyZzGiz2mJ56bYmw,15448
335
335
  zenml/integrations/kubernetes/__init__.py,sha256=UzU5CaogX6ud5ChCK8JSZ06eoW18eIudbgntgPijYSc,1853
336
336
  zenml/integrations/kubernetes/flavors/__init__.py,sha256=a5gU45qCj3FkLwl_uVjlIkL_2F5DHk-w1gdcZrvVjBI,1266
@@ -341,8 +341,8 @@ zenml/integrations/kubernetes/orchestrators/kube_utils.py,sha256=PIR6EICNaoxONtn
341
341
  zenml/integrations/kubernetes/orchestrators/kubernetes_orchestrator.py,sha256=W6YpTQXXzQcpfskJcuYwN1LMiN8eUJQHWJ4QXMmADFs,22899
342
342
  zenml/integrations/kubernetes/orchestrators/kubernetes_orchestrator_entrypoint.py,sha256=4BBy8-0xJahRjpkFc9fYy90uIRxOoy-s-GmXZeFE2tQ,6442
343
343
  zenml/integrations/kubernetes/orchestrators/kubernetes_orchestrator_entrypoint_configuration.py,sha256=Y7uGU8eksMluGyXYsf688CwpiXwI_W6WYLscYwRZXRY,2494
344
- zenml/integrations/kubernetes/orchestrators/manifest_utils.py,sha256=urcPGUm51vRA1a5eZk2jEGjFrDLPHqD4jTVJDpxngnU,11486
345
- zenml/integrations/kubernetes/pod_settings.py,sha256=NMp4aHKRG29mh1Nq5uvV78Hzj1cMZj93poWCBiwov-M,4898
344
+ zenml/integrations/kubernetes/orchestrators/manifest_utils.py,sha256=EfgsDYchOkpHPaZqSNbE_gF8a-3wQhDvSB1BCv7FW8A,11856
345
+ zenml/integrations/kubernetes/pod_settings.py,sha256=fP2NeHf1XxT__D4g_6oHQf8pkiiamFUFYmfNor2OoP8,6386
346
346
  zenml/integrations/kubernetes/serialization_utils.py,sha256=cPSe4szdBLzDnUZT9nQc2CCA8h84aj5oTA8vsUE36ig,7000
347
347
  zenml/integrations/kubernetes/service_connectors/__init__.py,sha256=Uf6zlHIapYrRDl3xOPWQ2jA7jt85SXx1U7DmSxzxTvQ,818
348
348
  zenml/integrations/kubernetes/service_connectors/kubernetes_service_connector.py,sha256=Cv4tiVxoQOz9ex0lf3JdJrooEkgMwfDfwt5GOeNRpQU,19669
@@ -531,7 +531,7 @@ zenml/integrations/tekton/__init__.py,sha256=WukQ041QAzuFIy5xXAyLRBFE-61fQqyTfX-
531
531
  zenml/integrations/tekton/flavors/__init__.py,sha256=-S5XuwcZKWyGb9tVfl_gEFJj1KSXX6kwIfe-EhE0TmM,864
532
532
  zenml/integrations/tekton/flavors/tekton_orchestrator_flavor.py,sha256=XgFgzJUlje9J1o5zwBvs_ycpgQjGdi50KZFA9_tT0vc,8268
533
533
  zenml/integrations/tekton/orchestrators/__init__.py,sha256=yCJEM-PCechO4DF_YQeg82y76nwBKeXTy_SIXRWX2DE,811
534
- zenml/integrations/tekton/orchestrators/tekton_orchestrator.py,sha256=t0TsocPqGMb92rSKKujhapU34jlJ2LO7HCghZVeOkbM,35282
534
+ zenml/integrations/tekton/orchestrators/tekton_orchestrator.py,sha256=aL0v_vYuwiAW3OKzXDdB_qdOqBFS2pC0sjKl2xewGVw,35572
535
535
  zenml/integrations/tensorboard/__init__.py,sha256=68Js570rS5PwoWMkrjGtadGg3j5JeGbYVczfpDTnL3g,1538
536
536
  zenml/integrations/tensorboard/services/__init__.py,sha256=Y-YVPLxJkFSpXNDZSk8gEBISsXJGk_DgGIyVIIFIa40,798
537
537
  zenml/integrations/tensorboard/services/tensorboard_service.py,sha256=nSNWeUDMM4H1hjFL8FireSxQI5SeLl75GJVmY83yXAg,4398
@@ -588,7 +588,7 @@ zenml/login/pro/models.py,sha256=UyIozykWVyq7SV1yk5e81YBcT7rAfkPmm226dVeSLNY,907
588
588
  zenml/login/pro/organization/__init__.py,sha256=zK8RdBK_vgL_pEJyUlbpjf7m61EQ12-C-Bm7gN4F2D8,650
589
589
  zenml/login/pro/organization/client.py,sha256=xcYfj2inTj_lTDIMwAFgMyZNo0QV5T55IAYlXUwyhKk,2148
590
590
  zenml/login/pro/organization/models.py,sha256=w3eNH3PCOEvpuy4F58OTjubtUbHCrcSIX_r_le2Xru8,983
591
- zenml/login/pro/utils.py,sha256=iI9wovi7eGsRf_O44hywhPkAPTR_RwhtPX1GiPrS9ts,5175
591
+ zenml/login/pro/utils.py,sha256=6JWo1mxMwedhM8mETFKb-8UlUCjWttRnvSEDKmwQIS4,5198
592
592
  zenml/login/pro/workspace/__init__.py,sha256=WHKwRfiYsFD3HXMOqWiwMndwWEqqt5Ssi37uj73cmlw,647
593
593
  zenml/login/pro/workspace/client.py,sha256=S5kasWuEd8MMFkgAxbjvzrmYGQr4-evwp2Aw45Ng6FI,2824
594
594
  zenml/login/pro/workspace/models.py,sha256=godIY1q2dUxB0QILaOFOeqV1I3WglWUjZC11nDWVxSw,5408
@@ -1306,8 +1306,8 @@ zenml/zen_stores/secrets_stores/sql_secrets_store.py,sha256=nEO0bAPlULBLxLVk-UTR
1306
1306
  zenml/zen_stores/sql_zen_store.py,sha256=rdDJBFWNGuURDGY58701BzMWeWIIwqzrKl4QNZ6uOXU,440274
1307
1307
  zenml/zen_stores/template_utils.py,sha256=GWBP5QEOyvhzndS_MLPmvh28sQaOPpPoZFXCIX9CRL4,9065
1308
1308
  zenml/zen_stores/zen_store_interface.py,sha256=fF_uL_FplnvGvM5o3jOQ8i1zHXhuhKLL2n4nvIKSR7E,92090
1309
- zenml_nightly-0.75.0.dev20250316.dist-info/LICENSE,sha256=wbnfEnXnafPbqwANHkV6LUsPKOtdpsd-SNw37rogLtc,11359
1310
- zenml_nightly-0.75.0.dev20250316.dist-info/METADATA,sha256=9ETnOcC83wOMwVXGVIK6-a-M-3nul2lDZjRMMfGHdj4,24274
1311
- zenml_nightly-0.75.0.dev20250316.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
1312
- zenml_nightly-0.75.0.dev20250316.dist-info/entry_points.txt,sha256=QK3ETQE0YswAM2mWypNMOv8TLtr7EjnqAFq1br_jEFE,43
1313
- zenml_nightly-0.75.0.dev20250316.dist-info/RECORD,,
1309
+ zenml_nightly-0.75.0.dev20250318.dist-info/LICENSE,sha256=wbnfEnXnafPbqwANHkV6LUsPKOtdpsd-SNw37rogLtc,11359
1310
+ zenml_nightly-0.75.0.dev20250318.dist-info/METADATA,sha256=VaDygNA-1zBgmMR9YxUytWNTCgMrSwGBnkig2O2Z6bA,24215
1311
+ zenml_nightly-0.75.0.dev20250318.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
1312
+ zenml_nightly-0.75.0.dev20250318.dist-info/entry_points.txt,sha256=QK3ETQE0YswAM2mWypNMOv8TLtr7EjnqAFq1br_jEFE,43
1313
+ zenml_nightly-0.75.0.dev20250318.dist-info/RECORD,,