11import contextlib
22import json
33import uuid
4+ from collections .abc import Mapping
45from enum import Enum
5- from typing import Any , Dict , List , Mapping , Optional , Tuple , TypedDict , Union
6+ from typing import Any , Optional , TypedDict , Union
67from urllib .parse import urlencode , urlsplit , urlunsplit
78
89import httpx
@@ -87,11 +88,11 @@ class FiefAccessTokenInfo(TypedDict):
8788
8889 id : uuid .UUID
8990 """ID of the user."""
90- scope : List [str ]
91+ scope : list [str ]
9192 """List of granted scopes for this access token."""
9293 acr : FiefACR
9394 """Level of Authentication Context class Reference."""
94- permissions : List [str ]
95+ permissions : list [str ]
9596 """List of [granted permissions](https://docs.fief.dev/getting-started/access-control/) for this user."""
9697 access_token : str
9798 """Access token you can use to call the Fief API."""
@@ -128,7 +129,7 @@ class FiefUserInfo(TypedDict):
128129 """
129130 ID of the [tenant](https://docs.fief.dev/getting-started/tenants/) associated to the user.
130131 """
131- fields : Dict [str , Any ]
132+ fields : dict [str , Any ]
132133 """
133134 [User fields](https://docs.fief.dev/getting-started/user-fields/) values for this user, indexed by their slug.
134135 """
@@ -192,7 +193,7 @@ class BaseFief:
192193 encryption_key : Optional [jwk .JWK ] = None
193194 """"""
194195
195- _openid_configuration : Optional [Dict [str , Any ]] = None
196+ _openid_configuration : Optional [dict [str , Any ]] = None
196197 _jwks : Optional [jwk .JWKSet ] = None
197198
198199 _verify : VerifyTypes
@@ -236,7 +237,7 @@ def __init__(
236237
237238 def _get_endpoint_url (
238239 self ,
239- openid_configuration : Dict [str , Any ],
240+ openid_configuration : dict [str , Any ],
240241 field : str ,
241242 * ,
242243 absolute : bool = False ,
@@ -261,11 +262,11 @@ def _get_endpoint_url(
261262
262263 def _auth_url (
263264 self ,
264- openid_configuration : Dict [str , Any ],
265+ openid_configuration : dict [str , Any ],
265266 redirect_uri : str ,
266267 * ,
267268 state : Optional [str ] = None ,
268- scope : Optional [List [str ]] = None ,
269+ scope : Optional [list [str ]] = None ,
269270 code_challenge : Optional [str ] = None ,
270271 code_challenge_method : Optional [str ] = None ,
271272 lang : Optional [str ] = None ,
@@ -303,9 +304,9 @@ def _validate_access_token(
303304 access_token : str ,
304305 jwks : jwk .JWKSet ,
305306 * ,
306- required_scope : Optional [List [str ]] = None ,
307+ required_scope : Optional [list [str ]] = None ,
307308 required_acr : Optional [FiefACR ] = None ,
308- required_permissions : Optional [List [str ]] = None ,
309+ required_permissions : Optional [list [str ]] = None ,
309310 ) -> FiefAccessTokenInfo :
310311 try :
311312 decoded_token = jwt .JWT (jwt = access_token , algs = ["RS256" ], key = jwks )
@@ -325,7 +326,7 @@ def _validate_access_token(
325326 if acr < required_acr :
326327 raise FiefAccessTokenACRTooLow ()
327328
328- permissions : List [str ] = claims ["permissions" ]
329+ permissions : list [str ] = claims ["permissions" ]
329330 if required_permissions is not None :
330331 for required_permission in required_permissions :
331332 if required_permission not in permissions :
@@ -406,7 +407,7 @@ def _get_auth_refresh_token_request(
406407 * ,
407408 endpoint : str ,
408409 refresh_token : str ,
409- scope : Optional [List [str ]] = None ,
410+ scope : Optional [list [str ]] = None ,
410411 ) -> httpx .Request :
411412 data = {
412413 "client_id" : self .client_id ,
@@ -433,7 +434,7 @@ def _get_update_profile_request(
433434 * ,
434435 endpoint : str ,
435436 access_token : str ,
436- data : Dict [str , Any ],
437+ data : dict [str , Any ],
437438 ) -> httpx .Request :
438439 return client .build_request (
439440 "PATCH" ,
@@ -521,7 +522,7 @@ def auth_url(
521522 redirect_uri : str ,
522523 * ,
523524 state : Optional [str ] = None ,
524- scope : Optional [List [str ]] = None ,
525+ scope : Optional [list [str ]] = None ,
525526 code_challenge : Optional [str ] = None ,
526527 code_challenge_method : Optional [str ] = None ,
527528 lang : Optional [str ] = None ,
@@ -561,7 +562,7 @@ def auth_url(
561562
562563 def auth_callback (
563564 self , code : str , redirect_uri : str , * , code_verifier : Optional [str ] = None
564- ) -> Tuple [FiefTokenResponse , FiefUserInfo ]:
565+ ) -> tuple [FiefTokenResponse , FiefUserInfo ]:
565566 """
566567 Return a `FiefTokenResponse` and `FiefUserInfo` in exchange of an authorization code.
567568
@@ -589,8 +590,8 @@ def auth_callback(
589590 return token_response , userinfo
590591
591592 def auth_refresh_token (
592- self , refresh_token : str , * , scope : Optional [List [str ]] = None
593- ) -> Tuple [FiefTokenResponse , FiefUserInfo ]:
593+ self , refresh_token : str , * , scope : Optional [list [str ]] = None
594+ ) -> tuple [FiefTokenResponse , FiefUserInfo ]:
594595 """
595596 Return fresh `FiefTokenResponse` and `FiefUserInfo` in exchange of a refresh token
596597
@@ -632,9 +633,9 @@ def validate_access_token(
632633 self ,
633634 access_token : str ,
634635 * ,
635- required_scope : Optional [List [str ]] = None ,
636+ required_scope : Optional [list [str ]] = None ,
636637 required_acr : Optional [FiefACR ] = None ,
637- required_permissions : Optional [List [str ]] = None ,
638+ required_permissions : Optional [list [str ]] = None ,
638639 ) -> FiefAccessTokenInfo :
639640 """
640641 Check if an access token is valid and optionally that it has a required list of scopes,
@@ -726,7 +727,7 @@ def userinfo(self, access_token: str) -> FiefUserInfo:
726727
727728 return response .json ()
728729
729- def update_profile (self , access_token : str , data : Dict [str , Any ]) -> FiefUserInfo :
730+ def update_profile (self , access_token : str , data : dict [str , Any ]) -> FiefUserInfo :
730731 """
731732 Update user information with the Fief API using a valid access token.
732733
@@ -877,7 +878,7 @@ def _get_httpx_client(self):
877878 ) as client :
878879 yield client
879880
880- def _get_openid_configuration (self ) -> Dict [str , Any ]:
881+ def _get_openid_configuration (self ) -> dict [str , Any ]:
881882 if self ._openid_configuration is not None :
882883 return self ._openid_configuration
883884
@@ -948,7 +949,7 @@ async def auth_url(
948949 redirect_uri : str ,
949950 * ,
950951 state : Optional [str ] = None ,
951- scope : Optional [List [str ]] = None ,
952+ scope : Optional [list [str ]] = None ,
952953 code_challenge : Optional [str ] = None ,
953954 code_challenge_method : Optional [str ] = None ,
954955 lang : Optional [str ] = None ,
@@ -988,7 +989,7 @@ async def auth_url(
988989
989990 async def auth_callback (
990991 self , code : str , redirect_uri : str , * , code_verifier : Optional [str ] = None
991- ) -> Tuple [FiefTokenResponse , FiefUserInfo ]:
992+ ) -> tuple [FiefTokenResponse , FiefUserInfo ]:
992993 """
993994 Return a `FiefTokenResponse` and `FiefUserInfo` in exchange of an authorization code.
994995
@@ -1016,8 +1017,8 @@ async def auth_callback(
10161017 return token_response , userinfo
10171018
10181019 async def auth_refresh_token (
1019- self , refresh_token : str , * , scope : Optional [List [str ]] = None
1020- ) -> Tuple [FiefTokenResponse , FiefUserInfo ]:
1020+ self , refresh_token : str , * , scope : Optional [list [str ]] = None
1021+ ) -> tuple [FiefTokenResponse , FiefUserInfo ]:
10211022 """
10221023 Return fresh `FiefTokenResponse` and `FiefUserInfo` in exchange of a refresh token
10231024
@@ -1060,9 +1061,9 @@ async def validate_access_token(
10601061 self ,
10611062 access_token : str ,
10621063 * ,
1063- required_scope : Optional [List [str ]] = None ,
1064+ required_scope : Optional [list [str ]] = None ,
10641065 required_acr : Optional [FiefACR ] = None ,
1065- required_permissions : Optional [List [str ]] = None ,
1066+ required_permissions : Optional [list [str ]] = None ,
10661067 ) -> FiefAccessTokenInfo :
10671068 """
10681069 Check if an access token is valid and optionally that it has a required list of scopes,
@@ -1155,7 +1156,7 @@ async def userinfo(self, access_token: str) -> FiefUserInfo:
11551156 return response .json ()
11561157
11571158 async def update_profile (
1158- self , access_token : str , data : Dict [str , Any ]
1159+ self , access_token : str , data : dict [str , Any ]
11591160 ) -> FiefUserInfo :
11601161 """
11611162 Update user information with the Fief API using a valid access token.
@@ -1309,7 +1310,7 @@ async def _get_httpx_client(self):
13091310 ) as client :
13101311 yield client
13111312
1312- async def _get_openid_configuration (self ) -> Dict [str , Any ]:
1313+ async def _get_openid_configuration (self ) -> dict [str , Any ]:
13131314 if self ._openid_configuration is not None :
13141315 return self ._openid_configuration
13151316
0 commit comments