From f033cf1e110852eacba613d26432d31b2d6f1d72 Mon Sep 17 00:00:00 2001 From: Semyon Moroz Date: Wed, 8 Oct 2025 15:40:46 +0400 Subject: [PATCH] [www-authenticate] Add stubs (#14688) --- stubs/www-authenticate/METADATA.toml | 2 ++ stubs/www-authenticate/www_authenticate.pyi | 34 +++++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 stubs/www-authenticate/METADATA.toml create mode 100644 stubs/www-authenticate/www_authenticate.pyi diff --git a/stubs/www-authenticate/METADATA.toml b/stubs/www-authenticate/METADATA.toml new file mode 100644 index 000000000..189310bac --- /dev/null +++ b/stubs/www-authenticate/METADATA.toml @@ -0,0 +1,2 @@ +version = "0.9.*" +upstream_repository = "https://github.com/alexsdutton/www-authenticate" diff --git a/stubs/www-authenticate/www_authenticate.pyi b/stubs/www-authenticate/www_authenticate.pyi new file mode 100644 index 000000000..9dbaaa1ce --- /dev/null +++ b/stubs/www-authenticate/www_authenticate.pyi @@ -0,0 +1,34 @@ +from _typeshed import Incomplete +from collections import OrderedDict +from typing import Protocol, TypeVar, overload, type_check_only + +_T = TypeVar("_T") +_VT = TypeVar("_VT") + +@type_check_only +class _SupportsCasefold(Protocol): + def casefold(self) -> str: ... + +@type_check_only +class _SupportsLower(Protocol): + def lower(self) -> str: ... + +class CaseFoldedOrderedDict(OrderedDict[str, _VT]): + def __getitem__(self, key: _SupportsCasefold | _SupportsLower) -> _VT: ... + def __setitem__(self, key: _SupportsCasefold | _SupportsLower, value: _VT) -> None: ... + def __contains__(self, key: _SupportsCasefold | _SupportsLower) -> bool: ... # type: ignore[override] + # See overloads for dict class: + @overload + def get(self, key: _SupportsCasefold | _SupportsLower, default: None = None) -> _VT | None: ... + @overload + def get(self, key: _SupportsCasefold | _SupportsLower, default: _VT) -> _VT: ... + @overload + def get(self, key: _SupportsCasefold | _SupportsLower, default: _T) -> _VT | _T: ... + @overload # type: ignore[override] + def pop(self, key: _SupportsCasefold | _SupportsLower, default: None = None) -> _VT | None: ... + @overload + def pop(self, key: _SupportsCasefold | _SupportsLower, default: _VT) -> _VT: ... + @overload + def pop(self, key: _SupportsCasefold | _SupportsLower, default: _T) -> _VT | _T: ... + +def parse(value: str) -> CaseFoldedOrderedDict[Incomplete]: ...