zenml-nightly 0.71.0.dev20250106__py3-none-any.whl → 0.71.0.dev20250108__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.71.0.dev20250106
1
+ 0.71.0.dev20250108
zenml/zen_server/auth.py CHANGED
@@ -37,7 +37,12 @@ from zenml.constants import (
37
37
  LOGIN,
38
38
  VERSION_1,
39
39
  )
40
- from zenml.enums import AuthScheme, ExecutionStatus, OAuthDeviceStatus
40
+ from zenml.enums import (
41
+ AuthScheme,
42
+ ExecutionStatus,
43
+ OAuthDeviceStatus,
44
+ OnboardingStep,
45
+ )
41
46
  from zenml.exceptions import (
42
47
  AuthorizationException,
43
48
  CredentialsNotValid,
@@ -630,12 +635,15 @@ def authenticate_device(client_id: UUID, device_code: str) -> AuthContext:
630
635
  return AuthContext(user=device_model.user, device=device_model)
631
636
 
632
637
 
633
- def authenticate_external_user(external_access_token: str) -> AuthContext:
638
+ def authenticate_external_user(
639
+ external_access_token: str, request: Request
640
+ ) -> AuthContext:
634
641
  """Implement external authentication.
635
642
 
636
643
  Args:
637
644
  external_access_token: The access token used to authenticate the user
638
645
  to the external authenticator.
646
+ request: The request object.
639
647
 
640
648
  Returns:
641
649
  The authentication context reflecting the authenticated user.
@@ -761,6 +769,17 @@ def authenticate_external_user(external_access_token: str) -> AuthContext:
761
769
  )
762
770
  context.alias(user_id=external_user.id, previous_id=user.id)
763
771
 
772
+ # This is the best spot to update the onboarding state to mark the
773
+ # "zenml login" step as completed for ZenML Pro servers, because the
774
+ # user has just successfully logged in. However, we need to differentiate
775
+ # between web clients (i.e. the dashboard) and CLI clients (i.e. the
776
+ # zenml CLI).
777
+ user_agent = request.headers.get("User-Agent", "").lower()
778
+ if "zenml/" in user_agent:
779
+ store.update_onboarding_state(
780
+ completed_steps={OnboardingStep.DEVICE_VERIFIED}
781
+ )
782
+
764
783
  return AuthContext(user=user)
765
784
 
766
785
 
@@ -287,7 +287,8 @@ def token(
287
287
  return OAuthRedirectResponse(authorization_url=authorization_url)
288
288
 
289
289
  auth_context = authenticate_external_user(
290
- external_access_token=external_access_token
290
+ external_access_token=external_access_token,
291
+ request=request,
291
292
  )
292
293
 
293
294
  else:
@@ -4053,7 +4053,12 @@ class RestZenStore(BaseZenStore):
4053
4053
  )
4054
4054
 
4055
4055
  data: Optional[Dict[str, str]] = None
4056
- headers: Dict[str, str] = {}
4056
+
4057
+ # Use a custom user agent to identify the ZenML client in the server
4058
+ # logs.
4059
+ headers: Dict[str, str] = {
4060
+ "User-Agent": "zenml/" + zenml.__version__,
4061
+ }
4057
4062
 
4058
4063
  # Check if an API key is configured
4059
4064
  api_key = credentials_store.get_api_key(self.url)
@@ -4218,6 +4223,11 @@ class RestZenStore(BaseZenStore):
4218
4223
  self._session.mount("https://", HTTPAdapter(max_retries=retries))
4219
4224
  self._session.mount("http://", HTTPAdapter(max_retries=retries))
4220
4225
  self._session.verify = self.config.verify_ssl
4226
+ # Use a custom user agent to identify the ZenML client in the server
4227
+ # logs.
4228
+ self._session.headers.update(
4229
+ {"User-Agent": "zenml/" + zenml.__version__}
4230
+ )
4221
4231
 
4222
4232
  # Note that we return an unauthenticated session here. An API token
4223
4233
  # is only fetched and set in the authorization header when and if it is
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: zenml-nightly
3
- Version: 0.71.0.dev20250106
3
+ Version: 0.71.0.dev20250108
4
4
  Summary: ZenML: Write production-ready ML code.
5
5
  Home-page: https://zenml.io
6
6
  License: Apache-2.0
@@ -1,5 +1,5 @@
1
1
  zenml/README.md,sha256=827dekbOWAs1BpW7VF1a4d7EbwPbjwccX-2zdXBENZo,1777
2
- zenml/VERSION,sha256=fp_zawiSq82BXkNE8Ez_Lrc_lZUBocgK7Nn8hoKxnyo,19
2
+ zenml/VERSION,sha256=kXAb5vvm1eFXj-rfDLJTZBuypRZHbBeElffLCorlhtk,19
3
3
  zenml/__init__.py,sha256=SkMObQA41ajqdZqGErN00S1Vf3KAxpLvbZ-OBy5uYoo,2130
4
4
  zenml/actions/__init__.py,sha256=mrt6wPo73iKRxK754_NqsGyJ3buW7RnVeIGXr1xEw8Y,681
5
5
  zenml/actions/base_action.py,sha256=UcaHev6BTuLDwuswnyaPjdA8AgUqB5xPZ-lRtuvf2FU,25553
@@ -791,7 +791,7 @@ zenml/utils/uuid_utils.py,sha256=aOGQ2SdREexcVQICPU2jUAgjvAJxTmh4ESdM52PEhck,204
791
791
  zenml/utils/visualization_utils.py,sha256=bRhgho_c8oKSBGtT4ptWj0PsXsKTKs64L3qZty3sBTM,4702
792
792
  zenml/utils/yaml_utils.py,sha256=DsbvKcJ_HYXDnNT2uSF1oKsPgP9xGpZ6G-qTFg6nQn4,5759
793
793
  zenml/zen_server/__init__.py,sha256=WyltI9TzFW2mEHZVOs6alLWMCQrrZaFALtrQXs83STA,1355
794
- zenml/zen_server/auth.py,sha256=MPmzFgZ_NHtAmadeWE6oF6riNHN9mmqVwuwq62ohojE,34887
794
+ zenml/zen_server/auth.py,sha256=Hb1xR6O5HW3qnLqBUu-U7xNVsNUZng_EZz23IGicu-g,35503
795
795
  zenml/zen_server/cache.py,sha256=Tc4TSugmsU1bhThxlYfE8rv0KmltIX1CcVHgzrJ0Eus,6633
796
796
  zenml/zen_server/cloud_utils.py,sha256=Pb0tpLyVy1XkXZgZHqA9kUC5V39hikEW2YqReBtArS4,8458
797
797
  zenml/zen_server/dashboard/assets/404-Cqu3EDCm.js,sha256=8NWcDgDkY8menHwtGdwbEZnHuJi2iLbjPuCFuGytmBg,1033
@@ -1022,7 +1022,7 @@ zenml/zen_server/routers/__init__.py,sha256=ViyAhWL-ogHxE9wBvB_iMcur5H1NRVrzXkpo
1022
1022
  zenml/zen_server/routers/actions_endpoints.py,sha256=TgFFU9fMu43iqTu-ybnxJ5QokzV-eivRAd6pW2TrFe0,9549
1023
1023
  zenml/zen_server/routers/artifact_endpoint.py,sha256=XhbOat2pddDluiT0a_QH2RfNcqlwtf3yf2Fh92a6ZDw,5175
1024
1024
  zenml/zen_server/routers/artifact_version_endpoints.py,sha256=TZpBPhNI6njJLKI-QX8wbNIn9-fFFGXKWqaVdiXFZVw,8528
1025
- zenml/zen_server/routers/auth_endpoints.py,sha256=fBxV7rYZTJUXpvaJZO_XfT6MF4OzI-bMP9eYTUhcgsg,22323
1025
+ zenml/zen_server/routers/auth_endpoints.py,sha256=tGYZ1Eg-U2lvtcZ-lnu6pVU0QW4e54h-cqIge_NeOmw,22353
1026
1026
  zenml/zen_server/routers/code_repositories_endpoints.py,sha256=WFCRPsv3Qrm8QtCr5zxfSdgCS5WI1DPNCF4Y6vLXGow,4747
1027
1027
  zenml/zen_server/routers/devices_endpoints.py,sha256=luqj7owGuQ-2LyAC6Pka7GjEVpYpfi_QDdFKXhWlXek,10712
1028
1028
  zenml/zen_server/routers/event_source_endpoints.py,sha256=dXupWrySV3LtxsqMVoYpUJ-OK7q6o6ehfuYW_RU1JlA,10379
@@ -1238,7 +1238,7 @@ zenml/zen_stores/migrations/versions/ec6307720f92_simplify_model_version_links.p
1238
1238
  zenml/zen_stores/migrations/versions/f3b3964e3a0f_add_oauth_devices.py,sha256=2CR4R-7Vx6j_AXxo-e5Guy6OX-ZnS47HSKSGfqlO-y0,3065
1239
1239
  zenml/zen_stores/migrations/versions/f49904a80aa7_increase_length_of_artifact_table_sources.py,sha256=kLgfDUnQdAb5_SyFx3VKXDLC0YbuBKf9iXRDNeBin7Q,1618
1240
1240
  zenml/zen_stores/migrations/versions/fbd7f18ced1e_increase_step_run_field_lengths.py,sha256=kn-ng5EHe_mmLfffIFbz7T59z-to3oMx8III_4wOsz4,1956
1241
- zenml/zen_stores/rest_zen_store.py,sha256=jCZXIhV_ylTzltN2pxCQ3UevmvZfggtyVHqzu75gHlc,159507
1241
+ zenml/zen_stores/rest_zen_store.py,sha256=PRbKEqFZNvlj_TIZnVuUJBba08N03yBz3YcstkZ8zFY,159900
1242
1242
  zenml/zen_stores/schemas/__init__.py,sha256=vMb0Pyf94aMWZDWpPKuRaxNoMsTp9DZNKSQScm9Vd5I,4339
1243
1243
  zenml/zen_stores/schemas/action_schemas.py,sha256=vNnDF4zRy0eWgNwtcU7yY0JXyqe4I3Nns2LHRHWwiDs,6293
1244
1244
  zenml/zen_stores/schemas/api_key_schemas.py,sha256=pCvoTSXSHz-im6aRt-opSBnmIhw3wDRIsi-NJP5WtCQ,7243
@@ -1284,8 +1284,8 @@ zenml/zen_stores/secrets_stores/sql_secrets_store.py,sha256=Bq1djrUP9saoD7vECjS7
1284
1284
  zenml/zen_stores/sql_zen_store.py,sha256=8f3ZKcbK00ozjS0bBSsoBs8COfuoKeUGqEfi6Nqaw18,416026
1285
1285
  zenml/zen_stores/template_utils.py,sha256=EKYBgmDLTS_PSMWaIO5yvHPLiQvMqHcsAe6NUCrv-i4,9068
1286
1286
  zenml/zen_stores/zen_store_interface.py,sha256=vf2gKBWfUUPtcGZC35oQB6pPNVzWVyQC8nWxVLjfrxM,92692
1287
- zenml_nightly-0.71.0.dev20250106.dist-info/LICENSE,sha256=wbnfEnXnafPbqwANHkV6LUsPKOtdpsd-SNw37rogLtc,11359
1288
- zenml_nightly-0.71.0.dev20250106.dist-info/METADATA,sha256=Zxd7cNTRs-PzbHCl3-Ogiy-oSN9NKx9EmylBB215NO4,21215
1289
- zenml_nightly-0.71.0.dev20250106.dist-info/WHEEL,sha256=RaoafKOydTQ7I_I3JTrPCg6kUmTgtm4BornzOqyEfJ8,88
1290
- zenml_nightly-0.71.0.dev20250106.dist-info/entry_points.txt,sha256=QK3ETQE0YswAM2mWypNMOv8TLtr7EjnqAFq1br_jEFE,43
1291
- zenml_nightly-0.71.0.dev20250106.dist-info/RECORD,,
1287
+ zenml_nightly-0.71.0.dev20250108.dist-info/LICENSE,sha256=wbnfEnXnafPbqwANHkV6LUsPKOtdpsd-SNw37rogLtc,11359
1288
+ zenml_nightly-0.71.0.dev20250108.dist-info/METADATA,sha256=MvvHn-oletFU-65nD_v2Th5U4EAailkb3T1kCyNxW8w,21215
1289
+ zenml_nightly-0.71.0.dev20250108.dist-info/WHEEL,sha256=RaoafKOydTQ7I_I3JTrPCg6kUmTgtm4BornzOqyEfJ8,88
1290
+ zenml_nightly-0.71.0.dev20250108.dist-info/entry_points.txt,sha256=QK3ETQE0YswAM2mWypNMOv8TLtr7EjnqAFq1br_jEFE,43
1291
+ zenml_nightly-0.71.0.dev20250108.dist-info/RECORD,,