mirror of
https://github.com/davidhalter/typeshed.git
synced 2025-12-15 08:17:07 +08:00
Eliminated the use of "bare" TypeVars in stdlib stubs (#5041)
Eliminated the use of "bare" TypeVars (i.e. a TypeVar that appears only once) within generic methods. While not considered an error in PEP 484, these are a common source of bugs in code, and some type checkers (including pytype and pyright) flag them as errors. Co-authored-by: Eric Traut <erictr@microsoft.com>
This commit is contained in:
@@ -3,7 +3,7 @@ from typing import Any, Callable, Iterable, List, Optional, TypeVar
|
||||
|
||||
_T = TypeVar("_T")
|
||||
|
||||
def heapify(__heap: List[_T]) -> None: ...
|
||||
def heapify(__heap: List[Any]) -> None: ...
|
||||
def heappop(__heap: List[_T]) -> _T: ...
|
||||
def heappush(__heap: List[_T], __item: _T) -> None: ...
|
||||
def heappushpop(__heap: List[_T], __item: _T) -> _T: ...
|
||||
|
||||
@@ -23,7 +23,7 @@ class WeakSet(MutableSet[_T], Generic[_T]):
|
||||
def __ior__(self, other: Iterable[_S]) -> WeakSet[Union[_S, _T]]: ...
|
||||
def difference(self: _SelfT, other: Iterable[_T]) -> _SelfT: ...
|
||||
def __sub__(self: _SelfT, other: Iterable[_T]) -> _SelfT: ...
|
||||
def difference_update(self: _SelfT, other: Iterable[_T]) -> None: ...
|
||||
def difference_update(self, other: Iterable[_T]) -> None: ...
|
||||
def __isub__(self: _SelfT, other: Iterable[_T]) -> _SelfT: ...
|
||||
def intersection(self: _SelfT, other: Iterable[_T]) -> _SelfT: ...
|
||||
def __and__(self: _SelfT, other: Iterable[_T]) -> _SelfT: ...
|
||||
@@ -38,7 +38,7 @@ class WeakSet(MutableSet[_T], Generic[_T]):
|
||||
def __eq__(self, other: object) -> bool: ...
|
||||
def symmetric_difference(self, other: Iterable[_S]) -> WeakSet[Union[_S, _T]]: ...
|
||||
def __xor__(self, other: Iterable[_S]) -> WeakSet[Union[_S, _T]]: ...
|
||||
def symmetric_difference_update(self, other: Iterable[_S]) -> None: ...
|
||||
def symmetric_difference_update(self, other: Iterable[Any]) -> None: ...
|
||||
def __ixor__(self, other: Iterable[_S]) -> WeakSet[Union[_S, _T]]: ...
|
||||
def union(self, other: Iterable[_S]) -> WeakSet[Union[_S, _T]]: ...
|
||||
def __or__(self, other: Iterable[_S]) -> WeakSet[Union[_S, _T]]: ...
|
||||
|
||||
@@ -1200,9 +1200,9 @@ def reversed(__sequence: Sequence[_T]) -> Iterator[_T]: ...
|
||||
def reversed(__sequence: Reversible[_T]) -> Iterator[_T]: ...
|
||||
def repr(__obj: object) -> str: ...
|
||||
@overload
|
||||
def round(number: SupportsRound[_T]) -> int: ...
|
||||
def round(number: SupportsRound[Any]) -> int: ...
|
||||
@overload
|
||||
def round(number: SupportsRound[_T], ndigits: None) -> int: ...
|
||||
def round(number: SupportsRound[Any], ndigits: None) -> int: ...
|
||||
@overload
|
||||
def round(number: SupportsRound[_T], ndigits: int) -> _T: ...
|
||||
def setattr(__obj: Any, __name: str, __value: Any) -> None: ...
|
||||
|
||||
@@ -13,7 +13,7 @@ _S = TypeVar("_S", bound=Type[Enum])
|
||||
class EnumMeta(ABCMeta):
|
||||
def __iter__(self: Type[_T]) -> Iterator[_T]: ...
|
||||
def __reversed__(self: Type[_T]) -> Iterator[_T]: ...
|
||||
def __contains__(self: Type[_T], member: object) -> bool: ...
|
||||
def __contains__(self: Type[Any], member: object) -> bool: ...
|
||||
def __getitem__(self: Type[_T], name: str) -> _T: ...
|
||||
@property
|
||||
def __members__(self: Type[_T]) -> Mapping[str, _T]: ...
|
||||
|
||||
@@ -123,7 +123,7 @@ if sys.version_info >= (3, 8):
|
||||
@overload
|
||||
def __get__(self, instance: None, owner: Optional[Type[Any]] = ...) -> cached_property[_T]: ...
|
||||
@overload
|
||||
def __get__(self, instance: _S, owner: Optional[Type[Any]] = ...) -> _T: ...
|
||||
def __get__(self, instance: object, owner: Optional[Type[Any]] = ...) -> _T: ...
|
||||
def __set_name__(self, owner: Type[Any], name: str) -> None: ...
|
||||
if sys.version_info >= (3, 9):
|
||||
def __class_getitem__(cls, item: Any) -> GenericAlias: ...
|
||||
|
||||
@@ -52,7 +52,7 @@ def translation(
|
||||
domain: str,
|
||||
localedir: Optional[StrPath] = ...,
|
||||
languages: Optional[Iterable[str]] = ...,
|
||||
class_: Type[_T] = ...,
|
||||
class_: Type[Any] = ...,
|
||||
fallback: Literal[True] = ...,
|
||||
codeset: Optional[str] = ...,
|
||||
) -> Any: ...
|
||||
|
||||
@@ -6,9 +6,9 @@ _T = TypeVar("_T")
|
||||
def heappush(__heap: List[_T], __item: _T) -> None: ...
|
||||
def heappop(__heap: List[_T]) -> _T: ...
|
||||
def heappushpop(__heap: List[_T], __item: _T) -> _T: ...
|
||||
def heapify(__heap: List[_T]) -> None: ...
|
||||
def heapify(__heap: List[Any]) -> None: ...
|
||||
def heapreplace(__heap: List[_T], __item: _T) -> _T: ...
|
||||
def merge(*iterables: Iterable[_T], key: Optional[Callable[[_T], Any]] = ..., reverse: bool = ...) -> Iterable[_T]: ...
|
||||
def nlargest(n: int, iterable: Iterable[_T], key: Optional[Callable[[_T], SupportsLessThan]] = ...) -> List[_T]: ...
|
||||
def nsmallest(n: int, iterable: Iterable[_T], key: Optional[Callable[[_T], SupportsLessThan]] = ...) -> List[_T]: ...
|
||||
def _heapify_max(__x: List[_T]) -> None: ... # undocumented
|
||||
def _heapify_max(__x: List[Any]) -> None: ... # undocumented
|
||||
|
||||
@@ -86,17 +86,17 @@ def contains(__a: Container[Any], __b: Any) -> bool: ...
|
||||
def __contains__(a: Container[Any], b: Any) -> bool: ...
|
||||
def countOf(__a: Container[Any], __b: Any) -> int: ...
|
||||
@overload
|
||||
def delitem(__a: MutableSequence[_T], __b: int) -> None: ...
|
||||
def delitem(__a: MutableSequence[Any], __b: int) -> None: ...
|
||||
@overload
|
||||
def delitem(__a: MutableSequence[_T], __b: slice) -> None: ...
|
||||
def delitem(__a: MutableSequence[Any], __b: slice) -> None: ...
|
||||
@overload
|
||||
def delitem(__a: MutableMapping[_K, _V], __b: _K) -> None: ...
|
||||
def delitem(__a: MutableMapping[_K, Any], __b: _K) -> None: ...
|
||||
@overload
|
||||
def __delitem__(a: MutableSequence[_T], b: int) -> None: ...
|
||||
def __delitem__(a: MutableSequence[Any], b: int) -> None: ...
|
||||
@overload
|
||||
def __delitem__(a: MutableSequence[_T], b: slice) -> None: ...
|
||||
def __delitem__(a: MutableSequence[Any], b: slice) -> None: ...
|
||||
@overload
|
||||
def __delitem__(a: MutableMapping[_K, _V], b: _K) -> None: ...
|
||||
def __delitem__(a: MutableMapping[_K, Any], b: _K) -> None: ...
|
||||
|
||||
if sys.version_info < (3,):
|
||||
def delslice(a: MutableSequence[Any], b: int, c: int) -> None: ...
|
||||
|
||||
@@ -362,7 +362,7 @@ class MutableSet(AbstractSet[_T], Generic[_T]):
|
||||
def __isub__(self, s: AbstractSet[Any]) -> MutableSet[_T]: ...
|
||||
|
||||
class MappingView(Sized):
|
||||
def __init__(self, mapping: Mapping[_KT_co, _VT_co]) -> None: ... # undocumented
|
||||
def __init__(self, mapping: Mapping[Any, Any]) -> None: ... # undocumented
|
||||
def __len__(self) -> int: ...
|
||||
|
||||
class ItemsView(MappingView, AbstractSet[Tuple[_KT_co, _VT_co]], Generic[_KT_co, _VT_co]):
|
||||
@@ -381,7 +381,7 @@ class ItemsView(MappingView, AbstractSet[Tuple[_KT_co, _VT_co]], Generic[_KT_co,
|
||||
def __rxor__(self, o: Iterable[_T]) -> Set[Union[Tuple[_KT_co, _VT_co], _T]]: ...
|
||||
|
||||
class KeysView(MappingView, AbstractSet[_KT_co], Generic[_KT_co]):
|
||||
def __init__(self, mapping: Mapping[_KT_co, _VT_co]) -> None: ... # undocumented
|
||||
def __init__(self, mapping: Mapping[_KT_co, Any]) -> None: ... # undocumented
|
||||
def __and__(self, o: Iterable[Any]) -> Set[_KT_co]: ...
|
||||
def __rand__(self, o: Iterable[_T]) -> Set[_T]: ...
|
||||
def __contains__(self, o: object) -> bool: ...
|
||||
@@ -396,7 +396,7 @@ class KeysView(MappingView, AbstractSet[_KT_co], Generic[_KT_co]):
|
||||
def __rxor__(self, o: Iterable[_T]) -> Set[Union[_KT_co, _T]]: ...
|
||||
|
||||
class ValuesView(MappingView, Iterable[_VT_co], Generic[_VT_co]):
|
||||
def __init__(self, mapping: Mapping[_KT_co, _VT_co]) -> None: ... # undocumented
|
||||
def __init__(self, mapping: Mapping[Any, _VT_co]) -> None: ... # undocumented
|
||||
def __contains__(self, o: object) -> bool: ...
|
||||
def __iter__(self) -> Iterator[_VT_co]: ...
|
||||
if sys.version_info >= (3, 8):
|
||||
@@ -661,7 +661,7 @@ class _TypedDict(Mapping[str, object], metaclass=ABCMeta):
|
||||
# can go through.
|
||||
def setdefault(self, k: NoReturn, default: object) -> object: ...
|
||||
# Mypy plugin hook for 'pop' expects that 'default' has a type variable type.
|
||||
def pop(self, k: NoReturn, default: _T = ...) -> object: ...
|
||||
def pop(self, k: NoReturn, default: _T = ...) -> object: ... # type: ignore
|
||||
def update(self: _T, __m: _T) -> None: ...
|
||||
def __delitem__(self, k: NoReturn) -> None: ...
|
||||
def items(self) -> ItemsView[str, object]: ...
|
||||
|
||||
Reference in New Issue
Block a user