123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- # stub for SortedDict. This is a lightly edited copy of
- # https://github.com/grantjenks/python-sortedcontainers/blob/eea42df1f7bad2792e8da77335ff888f04b9e5ae/sortedcontainers/sorteddict.pyi
- # (from https://github.com/grantjenks/python-sortedcontainers/pull/107)
- from typing import (
- Any,
- Callable,
- Dict,
- Hashable,
- ItemsView,
- Iterable,
- Iterator,
- KeysView,
- List,
- Mapping,
- Optional,
- Sequence,
- Tuple,
- Type,
- TypeVar,
- Union,
- ValuesView,
- overload,
- )
- _T = TypeVar("_T")
- _S = TypeVar("_S")
- _T_h = TypeVar("_T_h", bound=Hashable)
- _KT = TypeVar("_KT", bound=Hashable) # Key type.
- _VT = TypeVar("_VT") # Value type.
- _KT_co = TypeVar("_KT_co", covariant=True, bound=Hashable)
- _VT_co = TypeVar("_VT_co", covariant=True)
- _SD = TypeVar("_SD", bound=SortedDict)
- _Key = Callable[[_T], Any]
- class SortedDict(Dict[_KT, _VT]):
- @overload
- def __init__(self, **kwargs: _VT) -> None: ...
- @overload
- def __init__(self, __map: Mapping[_KT, _VT], **kwargs: _VT) -> None: ...
- @overload
- def __init__(
- self, __iterable: Iterable[Tuple[_KT, _VT]], **kwargs: _VT
- ) -> None: ...
- @overload
- def __init__(self, __key: _Key[_KT], **kwargs: _VT) -> None: ...
- @overload
- def __init__(
- self, __key: _Key[_KT], __map: Mapping[_KT, _VT], **kwargs: _VT
- ) -> None: ...
- @overload
- def __init__(
- self, __key: _Key[_KT], __iterable: Iterable[Tuple[_KT, _VT]], **kwargs: _VT
- ) -> None: ...
- @property
- def key(self) -> Optional[_Key[_KT]]: ...
- @property
- def iloc(self) -> SortedKeysView[_KT]: ...
- def clear(self) -> None: ...
- def __delitem__(self, key: _KT) -> None: ...
- def __iter__(self) -> Iterator[_KT]: ...
- def __reversed__(self) -> Iterator[_KT]: ...
- def __setitem__(self, key: _KT, value: _VT) -> None: ...
- def _setitem(self, key: _KT, value: _VT) -> None: ...
- def copy(self: _SD) -> _SD: ...
- def __copy__(self: _SD) -> _SD: ...
- @classmethod
- @overload
- def fromkeys(
- cls, seq: Iterable[_T_h], value: None = ...
- ) -> SortedDict[_T_h, None]: ...
- @classmethod
- @overload
- def fromkeys(cls, seq: Iterable[_T_h], value: _S) -> SortedDict[_T_h, _S]: ...
- # As of Python 3.10, `dict_{keys,items,values}` have an extra `mapping` attribute and so
- # `Sorted{Keys,Items,Values}View` are no longer compatible with them.
- # See https://github.com/python/typeshed/issues/6837
- def keys(self) -> SortedKeysView[_KT]: ... # type: ignore[override]
- def items(self) -> SortedItemsView[_KT, _VT]: ... # type: ignore[override]
- def values(self) -> SortedValuesView[_VT]: ... # type: ignore[override]
- @overload
- def pop(self, key: _KT) -> _VT: ...
- @overload
- def pop(self, key: _KT, default: _T = ...) -> Union[_VT, _T]: ...
- def popitem(self, index: int = ...) -> Tuple[_KT, _VT]: ...
- def peekitem(self, index: int = ...) -> Tuple[_KT, _VT]: ...
- def setdefault(self, key: _KT, default: Optional[_VT] = ...) -> _VT: ...
- # Mypy now reports the first overload as an error, because typeshed widened the type
- # of `__map` to its internal `_typeshed.SupportsKeysAndGetItem` type in
- # https://github.com/python/typeshed/pull/6653
- # Since sorteddicts don't change the signature of `update` from that of `dict`, we
- # let the stubs for `update` inherit from the stubs for `dict`. (I suspect we could
- # do the same for many othe methods.) We leave the stubs commented to better track
- # how this file has evolved from the original stubs.
- # @overload
- # def update(self, __map: Mapping[_KT, _VT], **kwargs: _VT) -> None: ...
- # @overload
- # def update(self, __iterable: Iterable[Tuple[_KT, _VT]], **kwargs: _VT) -> None: ...
- # @overload
- # def update(self, **kwargs: _VT) -> None: ...
- def __reduce__(
- self,
- ) -> Tuple[
- Type[SortedDict[_KT, _VT]],
- Tuple[Callable[[_KT], Any], List[Tuple[_KT, _VT]]],
- ]: ...
- def __repr__(self) -> str: ...
- def _check(self) -> None: ...
- def islice(
- self,
- start: Optional[int] = ...,
- stop: Optional[int] = ...,
- reverse: bool = ...,
- ) -> Iterator[_KT]: ...
- def bisect_left(self, value: _KT) -> int: ...
- def bisect_right(self, value: _KT) -> int: ...
- class SortedKeysView(KeysView[_KT_co], Sequence[_KT_co]):
- @overload
- def __getitem__(self, index: int) -> _KT_co: ...
- @overload
- def __getitem__(self, index: slice) -> List[_KT_co]: ...
- def __delitem__(self, index: Union[int, slice]) -> None: ...
- class SortedItemsView(ItemsView[_KT_co, _VT_co], Sequence[Tuple[_KT_co, _VT_co]]):
- def __iter__(self) -> Iterator[Tuple[_KT_co, _VT_co]]: ...
- @overload
- def __getitem__(self, index: int) -> Tuple[_KT_co, _VT_co]: ...
- @overload
- def __getitem__(self, index: slice) -> List[Tuple[_KT_co, _VT_co]]: ...
- def __delitem__(self, index: Union[int, slice]) -> None: ...
- class SortedValuesView(ValuesView[_VT_co], Sequence[_VT_co]):
- @overload
- def __getitem__(self, index: int) -> _VT_co: ...
- @overload
- def __getitem__(self, index: slice) -> List[_VT_co]: ...
- def __delitem__(self, index: Union[int, slice]) -> None: ...
|