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 +1 -1
- zenml/zen_server/auth.py +21 -2
- zenml/zen_server/routers/auth_endpoints.py +2 -1
- zenml/zen_stores/rest_zen_store.py +11 -1
- {zenml_nightly-0.71.0.dev20250106.dist-info → zenml_nightly-0.71.0.dev20250108.dist-info}/METADATA +1 -1
- {zenml_nightly-0.71.0.dev20250106.dist-info → zenml_nightly-0.71.0.dev20250108.dist-info}/RECORD +9 -9
- {zenml_nightly-0.71.0.dev20250106.dist-info → zenml_nightly-0.71.0.dev20250108.dist-info}/LICENSE +0 -0
- {zenml_nightly-0.71.0.dev20250106.dist-info → zenml_nightly-0.71.0.dev20250108.dist-info}/WHEEL +0 -0
- {zenml_nightly-0.71.0.dev20250106.dist-info → zenml_nightly-0.71.0.dev20250108.dist-info}/entry_points.txt +0 -0
zenml/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.71.0.
|
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
|
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(
|
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
|
-
|
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
|
{zenml_nightly-0.71.0.dev20250106.dist-info → zenml_nightly-0.71.0.dev20250108.dist-info}/RECORD
RENAMED
@@ -1,5 +1,5 @@
|
|
1
1
|
zenml/README.md,sha256=827dekbOWAs1BpW7VF1a4d7EbwPbjwccX-2zdXBENZo,1777
|
2
|
-
zenml/VERSION,sha256=
|
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=
|
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=
|
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=
|
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.
|
1288
|
-
zenml_nightly-0.71.0.
|
1289
|
-
zenml_nightly-0.71.0.
|
1290
|
-
zenml_nightly-0.71.0.
|
1291
|
-
zenml_nightly-0.71.0.
|
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,,
|
{zenml_nightly-0.71.0.dev20250106.dist-info → zenml_nightly-0.71.0.dev20250108.dist-info}/LICENSE
RENAMED
File without changes
|
{zenml_nightly-0.71.0.dev20250106.dist-info → zenml_nightly-0.71.0.dev20250108.dist-info}/WHEEL
RENAMED
File without changes
|
File without changes
|