diff --git a/stubs/Authlib/METADATA.toml b/stubs/Authlib/METADATA.toml index 006051a0d7d0..8fbed7859613 100644 --- a/stubs/Authlib/METADATA.toml +++ b/stubs/Authlib/METADATA.toml @@ -1,4 +1,4 @@ -version = "1.5.0" +version = "~= 1.5.2" upstream_repository = "https://github.com/lepture/authlib" requires = ["cryptography"] partial_stub = true diff --git a/stubs/Authlib/authlib/common/urls.pyi b/stubs/Authlib/authlib/common/urls.pyi index 457993f01006..bc5a64570e64 100644 --- a/stubs/Authlib/authlib/common/urls.pyi +++ b/stubs/Authlib/authlib/common/urls.pyi @@ -16,4 +16,4 @@ def quote(s: str, safe: bytes = b"/") -> str: ... def unquote(s: str) -> str: ... def quote_url(s: str) -> str: ... def extract_params(raw: dict[str, str] | _ExplodedQueryString) -> _ExplodedQueryString: ... -def is_valid_url(url: str) -> bool: ... +def is_valid_url(url: str, fragments_allowed: bool = True) -> bool: ... diff --git a/stubs/Authlib/authlib/integrations/base_client/async_openid.pyi b/stubs/Authlib/authlib/integrations/base_client/async_openid.pyi index 24a8c634ad98..d4c21c282a1b 100644 --- a/stubs/Authlib/authlib/integrations/base_client/async_openid.pyi +++ b/stubs/Authlib/authlib/integrations/base_client/async_openid.pyi @@ -3,4 +3,4 @@ __all__ = ["AsyncOpenIDMixin"] class AsyncOpenIDMixin: async def fetch_jwk_set(self, force: bool = False): ... async def userinfo(self, **kwargs): ... - async def parse_id_token(self, token, nonce, claims_options=None): ... + async def parse_id_token(self, token, nonce, claims_options=None, claims_cls=None, leeway: int = 120): ... diff --git a/stubs/Authlib/authlib/integrations/base_client/sync_openid.pyi b/stubs/Authlib/authlib/integrations/base_client/sync_openid.pyi index 374b3fb9eb63..961395534252 100644 --- a/stubs/Authlib/authlib/integrations/base_client/sync_openid.pyi +++ b/stubs/Authlib/authlib/integrations/base_client/sync_openid.pyi @@ -1,5 +1,5 @@ class OpenIDMixin: def fetch_jwk_set(self, force: bool = False): ... def userinfo(self, **kwargs): ... - def parse_id_token(self, token, nonce, claims_options=None, leeway: int = 120): ... + def parse_id_token(self, token, nonce, claims_options=None, claims_cls=None, leeway: int = 120): ... def create_load_key(self): ... diff --git a/stubs/Authlib/authlib/jose/rfc7519/jwt.pyi b/stubs/Authlib/authlib/jose/rfc7519/jwt.pyi index 0494dd418094..ea21ff1caf96 100644 --- a/stubs/Authlib/authlib/jose/rfc7519/jwt.pyi +++ b/stubs/Authlib/authlib/jose/rfc7519/jwt.pyi @@ -1,14 +1,55 @@ from _typeshed import Incomplete +from collections.abc import Callable +from re import Pattern +from typing import Any, Final, Generic, TypedDict, TypeVar, overload, type_check_only +from typing_extensions import TypeAlias + +from ..rfc7517 import KeySet +from .claims import JWTClaims + +_T = TypeVar("_T") + +_LoadKey: TypeAlias = Callable[[Incomplete, Incomplete], Incomplete] class JsonWebToken: - SENSITIVE_NAMES: Incomplete - SENSITIVE_VALUES: Incomplete + SENSITIVE_NAMES: Final[tuple[str, ...]] + SENSITIVE_VALUES: Final[Pattern[str]] + def __init__(self, algorithms, private_headers=None) -> None: ... def check_sensitive_data(self, payload) -> None: ... def encode(self, header, payload, key, check: bool = True): ... - def decode(self, s, key, claims_cls=None, claims_options=None, claims_params=None): ... + @overload + def decode( + self, + s: str | bytes, + key: _LoadKey | KeySet | tuple[Incomplete, ...] | list[Incomplete] | str, + claims_cls: None = None, + claims_options=None, + claims_params=None, + ) -> JWTClaims: ... + @overload + def decode( + self, + s: str | bytes, + key: _LoadKey | KeySet | tuple[Incomplete, ...] | list[Incomplete] | str, + claims_cls: type[_T], + claims_options=None, + claims_params=None, + ) -> _T: ... def decode_payload(bytes_payload): ... -def prepare_raw_key(raw): ... + +_TL = TypeVar("_TL", bound=tuple[Any, ...] | list[Any]) + +@type_check_only +class _Keys(TypedDict, Generic[_TL]): + keys: _TL + +@overload +def prepare_raw_key(raw: KeySet) -> KeySet: ... +@overload +def prepare_raw_key(raw: str) -> dict[str, Any] | str: ... # dict is a JSON object +@overload +def prepare_raw_key(raw: _TL) -> _Keys[_TL]: ... def find_encode_key(key, header): ... -def create_load_key(key): ... +def create_load_key(key: KeySet | _Keys[Incomplete] | Incomplete) -> _LoadKey: ... diff --git a/stubs/Authlib/authlib/oauth2/base.pyi b/stubs/Authlib/authlib/oauth2/base.pyi index fdf2f1f22504..366694c7194e 100644 --- a/stubs/Authlib/authlib/oauth2/base.pyi +++ b/stubs/Authlib/authlib/oauth2/base.pyi @@ -2,6 +2,8 @@ from _typeshed import Incomplete from authlib.common.errors import AuthlibHTTPError +def invalid_error_characters(text: str) -> list[str]: ... + class OAuth2Error(AuthlibHTTPError): state: Incomplete redirect_uri: Incomplete