+++ /dev/null
-from collections.abc import Callable
-from collections.abc import Iterable
-from collections.abc import Iterator
-from collections.abc import Mapping
-from typing import Any
-from typing import Generic
-from typing import Literal
-from typing import NoReturn
-from typing import overload
-from typing import TypeVar
-
-from .mixins import (
- ImmutableDictMixin,
- ImmutableListMixin,
- ImmutableMultiDictMixin,
- UpdateDictMixin,
-)
-
-D = TypeVar("D")
-K = TypeVar("K")
-T = TypeVar("T")
-V = TypeVar("V")
-_CD = TypeVar("_CD", bound="CallbackDict")
-
-def is_immutable(self: object) -> NoReturn: ...
-def iter_multi_items(
- mapping: Mapping[K, V | Iterable[V]] | Iterable[tuple[K, V]]
-) -> Iterator[tuple[K, V]]: ...
-
-class ImmutableList(ImmutableListMixin[V]): ...
-
-class TypeConversionDict(dict[K, V]):
- @overload
- def get(self, key: K, default: None = ..., type: None = ...) -> V | None: ...
- @overload
- def get(self, key: K, default: D, type: None = ...) -> D | V: ...
- @overload
- def get(self, key: K, default: D, type: Callable[[V], T]) -> D | T: ...
- @overload
- def get(self, key: K, type: Callable[[V], T]) -> T | None: ...
-
-class ImmutableTypeConversionDict(ImmutableDictMixin[K, V], TypeConversionDict[K, V]):
- def copy(self) -> TypeConversionDict[K, V]: ...
- def __copy__(self) -> ImmutableTypeConversionDict: ...
-
-class MultiDict(TypeConversionDict[K, V]):
- def __init__(
- self,
- mapping: Mapping[K, Iterable[V] | V] | Iterable[tuple[K, V]] | None = None,
- ) -> None: ...
- def __getitem__(self, item: K) -> V: ...
- def __setitem__(self, key: K, value: V) -> None: ...
- def add(self, key: K, value: V) -> None: ...
- @overload
- def getlist(self, key: K) -> list[V]: ...
- @overload
- def getlist(self, key: K, type: Callable[[V], T] = ...) -> list[T]: ...
- def setlist(self, key: K, new_list: Iterable[V]) -> None: ...
- def setdefault(self, key: K, default: V | None = None) -> V: ...
- def setlistdefault(
- self, key: K, default_list: Iterable[V] | None = None
- ) -> list[V]: ...
- def items(self, multi: bool = False) -> Iterator[tuple[K, V]]: ... # type: ignore
- def lists(self) -> Iterator[tuple[K, list[V]]]: ...
- def values(self) -> Iterator[V]: ... # type: ignore
- def listvalues(self) -> Iterator[list[V]]: ...
- def copy(self) -> MultiDict[K, V]: ...
- def deepcopy(self, memo: Any = None) -> MultiDict[K, V]: ...
- @overload
- def to_dict(self) -> dict[K, V]: ...
- @overload
- def to_dict(self, flat: Literal[False]) -> dict[K, list[V]]: ...
- def update( # type: ignore
- self, mapping: Mapping[K, Iterable[V] | V] | Iterable[tuple[K, V]]
- ) -> None: ...
- @overload
- def pop(self, key: K) -> V: ...
- @overload
- def pop(self, key: K, default: V | T = ...) -> V | T: ...
- def popitem(self) -> tuple[K, V]: ...
- def poplist(self, key: K) -> list[V]: ...
- def popitemlist(self) -> tuple[K, list[V]]: ...
- def __copy__(self) -> MultiDict[K, V]: ...
- def __deepcopy__(self, memo: Any) -> MultiDict[K, V]: ...
-
-class _omd_bucket(Generic[K, V]):
- prev: _omd_bucket | None
- next: _omd_bucket | None
- key: K
- value: V
- def __init__(self, omd: OrderedMultiDict, key: K, value: V) -> None: ...
- def unlink(self, omd: OrderedMultiDict) -> None: ...
-
-class OrderedMultiDict(MultiDict[K, V]):
- _first_bucket: _omd_bucket | None
- _last_bucket: _omd_bucket | None
- def __init__(self, mapping: Mapping[K, V] | None = None) -> None: ...
- def __eq__(self, other: object) -> bool: ...
- def __getitem__(self, key: K) -> V: ...
- def __setitem__(self, key: K, value: V) -> None: ...
- def __delitem__(self, key: K) -> None: ...
- def keys(self) -> Iterator[K]: ... # type: ignore
- def __iter__(self) -> Iterator[K]: ...
- def values(self) -> Iterator[V]: ... # type: ignore
- def items(self, multi: bool = False) -> Iterator[tuple[K, V]]: ... # type: ignore
- def lists(self) -> Iterator[tuple[K, list[V]]]: ...
- def listvalues(self) -> Iterator[list[V]]: ...
- def add(self, key: K, value: V) -> None: ...
- @overload
- def getlist(self, key: K) -> list[V]: ...
- @overload
- def getlist(self, key: K, type: Callable[[V], T] = ...) -> list[T]: ...
- def setlist(self, key: K, new_list: Iterable[V]) -> None: ...
- def setlistdefault(
- self, key: K, default_list: Iterable[V] | None = None
- ) -> list[V]: ...
- def update( # type: ignore
- self, mapping: Mapping[K, V] | Iterable[tuple[K, V]]
- ) -> None: ...
- def poplist(self, key: K) -> list[V]: ...
- @overload
- def pop(self, key: K) -> V: ...
- @overload
- def pop(self, key: K, default: V | T = ...) -> V | T: ...
- def popitem(self) -> tuple[K, V]: ...
- def popitemlist(self) -> tuple[K, list[V]]: ...
-
-class CombinedMultiDict(ImmutableMultiDictMixin[K, V], MultiDict[K, V]): # type: ignore
- dicts: list[MultiDict[K, V]]
- def __init__(self, dicts: Iterable[MultiDict[K, V]] | None) -> None: ...
- @classmethod
- def fromkeys(cls, keys: Any, value: Any = None) -> NoReturn: ...
- def __getitem__(self, key: K) -> V: ...
- @overload # type: ignore
- def get(self, key: K) -> V | None: ...
- @overload
- def get(self, key: K, default: V | T = ...) -> V | T: ...
- @overload
- def get(
- self, key: K, default: T | None = None, type: Callable[[V], T] = ...
- ) -> T | None: ...
- @overload
- def getlist(self, key: K) -> list[V]: ...
- @overload
- def getlist(self, key: K, type: Callable[[V], T] = ...) -> list[T]: ...
- def _keys_impl(self) -> set[K]: ...
- def keys(self) -> set[K]: ... # type: ignore
- def __iter__(self) -> set[K]: ... # type: ignore
- def items(self, multi: bool = False) -> Iterator[tuple[K, V]]: ... # type: ignore
- def values(self) -> Iterator[V]: ... # type: ignore
- def lists(self) -> Iterator[tuple[K, list[V]]]: ...
- def listvalues(self) -> Iterator[list[V]]: ...
- def copy(self) -> MultiDict[K, V]: ...
- @overload
- def to_dict(self) -> dict[K, V]: ...
- @overload
- def to_dict(self, flat: Literal[False]) -> dict[K, list[V]]: ...
- def __contains__(self, key: K) -> bool: ... # type: ignore
- def has_key(self, key: K) -> bool: ...
-
-class ImmutableDict(ImmutableDictMixin[K, V], dict[K, V]):
- def copy(self) -> dict[K, V]: ...
- def __copy__(self) -> ImmutableDict[K, V]: ...
-
-class ImmutableMultiDict( # type: ignore
- ImmutableMultiDictMixin[K, V], MultiDict[K, V]
-):
- def copy(self) -> MultiDict[K, V]: ...
- def __copy__(self) -> ImmutableMultiDict[K, V]: ...
-
-class ImmutableOrderedMultiDict( # type: ignore
- ImmutableMultiDictMixin[K, V], OrderedMultiDict[K, V]
-):
- def _iter_hashitems(self) -> Iterator[tuple[int, tuple[K, V]]]: ...
- def copy(self) -> OrderedMultiDict[K, V]: ...
- def __copy__(self) -> ImmutableOrderedMultiDict[K, V]: ...
-
-class CallbackDict(UpdateDictMixin[K, V], dict[K, V]):
- def __init__(
- self,
- initial: Mapping[K, V] | Iterable[tuple[K, V]] | None = None,
- on_update: Callable[[_CD], None] | None = None,
- ) -> None: ...
-
-class HeaderSet(set[str]):
- _headers: list[str]
- _set: set[str]
- on_update: Callable[[HeaderSet], None] | None
- def __init__(
- self,
- headers: Iterable[str] | None = None,
- on_update: Callable[[HeaderSet], None] | None = None,
- ) -> None: ...
- def add(self, header: str) -> None: ...
- def remove(self, header: str) -> None: ...
- def update(self, iterable: Iterable[str]) -> None: ... # type: ignore
- def discard(self, header: str) -> None: ...
- def find(self, header: str) -> int: ...
- def index(self, header: str) -> int: ...
- def clear(self) -> None: ...
- def as_set(self, preserve_casing: bool = False) -> set[str]: ...
- def to_header(self) -> str: ...
- def __getitem__(self, idx: int) -> str: ...
- def __delitem__(self, idx: int) -> None: ...
- def __setitem__(self, idx: int, value: str) -> None: ...
- def __contains__(self, header: str) -> bool: ... # type: ignore
- def __len__(self) -> int: ...
- def __iter__(self) -> Iterator[str]: ...