diff --git a/src/frozendict/__init__.pyi b/src/frozendict/__init__.pyi index 42246db..018e5e4 100644 --- a/src/frozendict/__init__.pyi +++ b/src/frozendict/__init__.pyi @@ -1,7 +1,5 @@ from __future__ import annotations -import sys - from typing import ( TypeVar, overload, @@ -21,10 +19,10 @@ except ImportError: Tuple = tuple Type = type -if sys.version_info >= (3, 11): - from typing import Self as SelfT -else: - SelfT = TypeVar("SelfT", bound=frozendict[K, V]) +try: + from typing import Self +except ImportError: + Self = TypeVar("Self", bound=frozendict[K, V]) K = TypeVar("K") V = TypeVar("V", covariant=True) @@ -34,70 +32,70 @@ V2 = TypeVar("V2", covariant=True) # noinspection PyPep8Naming class frozendict(Mapping[K, V]): @overload - def __new__(cls: Type[SelfT]) -> SelfT: ... + def __new__(cls: Type[Self]) -> Self: ... @overload - def __new__(cls: Type[SelfT], **kwargs: V) -> frozendict[str, V]: ... + def __new__(cls: Type[Self], **kwargs: V) -> frozendict[str, V]: ... @overload - def __new__(cls: Type[SelfT], mapping: Mapping[K, V]) -> SelfT: ... + def __new__(cls: Type[Self], mapping: Mapping[K, V]) -> Self: ... @overload - def __new__(cls: Type[SelfT], iterable: Iterable[Tuple[K, V]]) -> SelfT: ... + def __new__(cls: Type[Self], iterable: Iterable[Tuple[K, V]]) -> Self: ... - def __getitem__(self: SelfT, key: K) -> V: ... - def __len__(self: SelfT) -> int: ... - def __iter__(self: SelfT) -> Iterator[K]: ... - def __hash__(self: SelfT) -> int: ... - def __reversed__(self: SelfT) -> Iterator[K]: ... - def copy(self: SelfT) -> SelfT: ... - def __copy__(self: SelfT) -> SelfT: ... - def __deepcopy__(self: SelfT) -> SelfT: ... - def delete(self: SelfT, key: K) -> SelfT: ... + def __getitem__(self: Self, key: K) -> V: ... + def __len__(self: Self) -> int: ... + def __iter__(self: Self) -> Iterator[K]: ... + def __hash__(self: Self) -> int: ... + def __reversed__(self: Self) -> Iterator[K]: ... + def copy(self: Self) -> Self: ... + def __copy__(self: Self) -> Self: ... + def __deepcopy__(self: Self) -> Self: ... + def delete(self: Self, key: K) -> Self: ... @overload - def key(self: SelfT, index: int) -> K: ... + def key(self: Self, index: int) -> K: ... @overload - def key(self: SelfT) -> K: ... + def key(self: Self) -> K: ... @overload - def value(self: SelfT, index: int) -> V: ... + def value(self: Self, index: int) -> V: ... @overload - def value(self: SelfT) -> V: ... + def value(self: Self) -> V: ... @overload - def item(self: SelfT, index: int) -> Tuple[K, V]: ... + def item(self: Self, index: int) -> Tuple[K, V]: ... @overload - def item(self: SelfT) -> Tuple[K, V]: ... + def item(self: Self) -> Tuple[K, V]: ... @overload - def __or__(self: SelfT, other: Mapping[K, V]) -> SelfT: ... + def __or__(self: Self, other: Mapping[K, V]) -> Self: ... @overload - def __or__(self: SelfT, other: Mapping[K2, V]) -> frozendict[Union[K, K2], V]: ... + def __or__(self: Self, other: Mapping[K2, V]) -> frozendict[Union[K, K2], V]: ... @overload - def __or__(self: SelfT, other: Mapping[K, V2]) -> frozendict[K, Union[V, V2]]: ... + def __or__(self: Self, other: Mapping[K, V2]) -> frozendict[K, Union[V, V2]]: ... @overload - def __or__(self: SelfT, other: Mapping[K2, V2]) -> frozendict[Union[K, K2], Union[V, V2]]: ... + def __or__(self: Self, other: Mapping[K2, V2]) -> frozendict[Union[K, K2], Union[V, V2]]: ... @overload - def set(self: SelfT, key: K, value: V) -> SelfT: ... + def set(self: Self, key: K, value: V) -> Self: ... @overload - def set(self: SelfT, key: K2, value: V) -> frozendict[Union[K, K2], V]: ... + def set(self: Self, key: K2, value: V) -> frozendict[Union[K, K2], V]: ... @overload - def set(self: SelfT, key: K, value: V2) -> frozendict[K, Union[V, V2]]: ... + def set(self: Self, key: K, value: V2) -> frozendict[K, Union[V, V2]]: ... @overload - def set(self: SelfT, key: K2, value: V2) -> frozendict[Union[K, K2], Union[V, V2]]: ... + def set(self: Self, key: K2, value: V2) -> frozendict[Union[K, K2], Union[V, V2]]: ... @overload - def setdefault(self: SelfT, key: K) -> SelfT: ... + def setdefault(self: Self, key: K) -> Self: ... @overload - def setdefault(self: SelfT, key: K2) -> SelfT: ... + def setdefault(self: Self, key: K2) -> Self: ... @overload - def setdefault(self: SelfT, key: K, default: V) -> SelfT: ... + def setdefault(self: Self, key: K, default: V) -> Self: ... @overload - def setdefault(self: SelfT, key: K2, default: V) -> frozendict[Union[K, K2], V]: ... + def setdefault(self: Self, key: K2, default: V) -> frozendict[Union[K, K2], V]: ... @overload - def setdefault(self: SelfT, key: K, default: V2) -> frozendict[K, Union[V, V2]]: ... + def setdefault(self: Self, key: K, default: V2) -> frozendict[K, Union[V, V2]]: ... @overload - def setdefault(self: SelfT, key: K2, default: V2) -> frozendict[Union[K, K2], Union[V, V2]]: ... + def setdefault(self: Self, key: K2, default: V2) -> frozendict[Union[K, K2], Union[V, V2]]: ... @classmethod def fromkeys( - cls: Type[SelfT], + cls: Type[Self], seq: Iterable[K], value: Optional[V] = None - ) -> SelfT: ... + ) -> Self: ... FrozenOrderedDict = frozendict