mirror of
https://github.com/davidhalter/typeshed.git
synced 2025-12-10 05:51:52 +08:00
Make deque inherit from MutableMapping (with difficulty). Fixes #43.
This commit is contained in:
@@ -18,6 +18,7 @@ from typing import (
|
||||
from typing import (
|
||||
MutableMapping as MutableMapping,
|
||||
Sequence as Sequence,
|
||||
MutableSequence as MutableSequence,
|
||||
AbstractSet as Set,
|
||||
)
|
||||
|
||||
@@ -30,17 +31,20 @@ _VT = TypeVar('_VT')
|
||||
namedtuple = object()
|
||||
|
||||
|
||||
class deque(Sized, Iterable[_T], Generic[_T]):
|
||||
# Technically, deque only derives from MutableSequence in 3.5.
|
||||
# But in practice it's not worth losing sleep over.
|
||||
class deque(MutableSequence[_T], Generic[_T]):
|
||||
maxlen = 0 # type: Optional[int] # TODO readonly
|
||||
def __init__(self, iterable: Iterable[_T] = ...,
|
||||
maxlen: int = ...) -> None: ...
|
||||
def append(self, x: _T) -> None: ...
|
||||
def appendleft(self, x: _T) -> None: ...
|
||||
def insert(self, i: int, x: _T) -> None: ...
|
||||
def clear(self) -> None: ...
|
||||
def count(self, x: _T) -> int: ...
|
||||
def extend(self, iterable: Iterable[_T]) -> None: ...
|
||||
def extendleft(self, iterable: Iterable[_T]) -> None: ...
|
||||
def pop(self) -> _T: ...
|
||||
def pop(self, i: int = ...) -> _T: ...
|
||||
def popleft(self) -> _T: ...
|
||||
def remove(self, value: _T) -> None: ...
|
||||
def reverse(self) -> None: ...
|
||||
@@ -51,9 +55,22 @@ class deque(Sized, Iterable[_T], Generic[_T]):
|
||||
def __str__(self) -> str: ...
|
||||
def __hash__(self) -> int: ...
|
||||
|
||||
def __getitem__(self, i: int) -> _T: ...
|
||||
# These methods of deque don't really take slices, but we need to
|
||||
# define them as taking a slice to satisfy MutableSequence.
|
||||
@overload
|
||||
def __getitem__(self, index: int) -> _T: ...
|
||||
@overload
|
||||
def __getitem__(self, s: slice) -> Sequence[_T]: raise TypeError
|
||||
@overload
|
||||
def __setitem__(self, i: int, x: _T) -> None: ...
|
||||
def __contains__(self, o: _T) -> bool: ...
|
||||
@overload
|
||||
def __setitem__(self, s: slice, o: Sequence[_T]) -> None: raise TypeError
|
||||
@overload
|
||||
def __delitem__(self, i: int) -> None: ...
|
||||
@overload
|
||||
def __delitem__(self, s: slice) -> None: raise TypeError
|
||||
|
||||
def __contains__(self, o: object) -> bool: ...
|
||||
|
||||
# TODO __reversed__
|
||||
|
||||
|
||||
@@ -150,8 +150,12 @@ class MutableSequence(Sequence[_T], Generic[_T]):
|
||||
@overload
|
||||
@abstractmethod
|
||||
def __setitem__(self, s: slice, o: Sequence[_T]) -> None: ...
|
||||
@overload
|
||||
@abstractmethod
|
||||
def __delitem__(self, i: Union[int, slice]) -> None: ...
|
||||
def __delitem__(self, i: int) -> None: ...
|
||||
@overload
|
||||
@abstractmethod
|
||||
def __delitem__(self, i: slice) -> None: ...
|
||||
# Mixin methods
|
||||
def append(self, object: _T) -> None: ...
|
||||
def extend(self, iterable: Iterable[_T]) -> None: ...
|
||||
|
||||
Reference in New Issue
Block a user