11from __future__ import annotations
22
3+ from functools import partial
34from json import loads
45from time import time
56from typing import Callable , Dict , List , Tuple , Union
2021 AuthRetryableError ,
2122 AuthSessionMissingError ,
2223)
23- from ..helpers import decode_jwt_payload , parse_auth_response , parse_user_response
24+ from ..helpers import (
25+ decode_jwt_payload ,
26+ model_dump ,
27+ model_dump_json ,
28+ model_validate ,
29+ parse_auth_response ,
30+ parse_user_response ,
31+ )
2432from ..http_clients import AsyncClient
2533from ..timer import Timer
2634from ..types import (
@@ -531,7 +539,7 @@ async def _enroll(self, params: MFAEnrollParams) -> AuthMFAEnrollResponse:
531539 "factors" ,
532540 body = params ,
533541 jwt = session .access_token ,
534- xform = AuthMFAEnrollResponse . model_validate ,
542+ xform = partial ( model_validate , AuthMFAEnrollResponse ) ,
535543 )
536544 if response .totp .qr_code :
537545 response .totp .qr_code = f"data:image/svg+xml;utf-8,{ response .totp .qr_code } "
@@ -545,7 +553,7 @@ async def _challenge(self, params: MFAChallengeParams) -> AuthMFAChallengeRespon
545553 "POST" ,
546554 f"factors/{ params .get ('factor_id' )} /challenge" ,
547555 jwt = session .access_token ,
548- xform = AuthMFAChallengeResponse . model_validate ,
556+ xform = partial ( model_validate , AuthMFAChallengeResponse ) ,
549557 )
550558
551559 async def _challenge_and_verify (
@@ -574,9 +582,9 @@ async def _verify(self, params: MFAVerifyParams) -> AuthMFAVerifyResponse:
574582 f"factors/{ params .get ('factor_id' )} /verify" ,
575583 body = params ,
576584 jwt = session .access_token ,
577- xform = AuthMFAVerifyResponse . model_validate ,
585+ xform = partial ( model_validate , AuthMFAVerifyResponse ) ,
578586 )
579- session = Session . model_validate (response . model_dump ())
587+ session = model_validate (Session , model_dump (response ))
580588 await self ._save_session (session )
581589 self ._notify_all_subscribers ("MFA_CHALLENGE_VERIFIED" , session )
582590 return response
@@ -589,7 +597,7 @@ async def _unenroll(self, params: MFAUnenrollParams) -> AuthMFAUnenrollResponse:
589597 "DELETE" ,
590598 f"factors/{ params .get ('factor_id' )} " ,
591599 jwt = session .access_token ,
592- xform = AuthMFAUnenrollResponse . model_validate ,
600+ xform = partial ( AuthMFAUnenrollResponse , model_validate ) ,
593601 )
594602
595603 async def _list_factors (self ) -> AuthMFAListFactorsResponse :
@@ -751,7 +759,7 @@ async def _save_session(self, session: Session) -> None:
751759 value = (expire_in - refresh_duration_before_expires ) * 1000
752760 await self ._start_auto_refresh_token (value )
753761 if self ._persist_session and session .expires_at :
754- await self ._storage .set_item (self ._storage_key , session . model_dump_json ())
762+ await self ._storage .set_item (self ._storage_key , model_dump_json (session ))
755763
756764 async def _start_auto_refresh_token (self , value : float ) -> None :
757765 if self ._refresh_token_timer :
@@ -808,7 +816,7 @@ def _get_valid_session(
808816 except ValueError :
809817 return None
810818 try :
811- return Session . model_validate (data )
819+ return model_validate (Session , data )
812820 except Exception :
813821 return None
814822
0 commit comments