mirror of
https://github.com/davidhalter/typeshed.git
synced 2025-12-07 12:44:28 +08:00
Use conditional overloads to simplify several stdlib functions (#7540)
This commit is contained in:
@@ -1477,16 +1477,14 @@ def sorted(
|
||||
) -> list[SupportsRichComparisonT]: ...
|
||||
@overload
|
||||
def sorted(__iterable: Iterable[_T], *, key: Callable[[_T], SupportsRichComparison], reverse: bool = ...) -> list[_T]: ...
|
||||
@overload
|
||||
def sum(__iterable: Iterable[_T]) -> _T | Literal[0]: ...
|
||||
|
||||
if sys.version_info >= (3, 8):
|
||||
@overload
|
||||
def sum(__iterable: Iterable[_T]) -> _T | Literal[0]: ...
|
||||
@overload
|
||||
def sum(__iterable: Iterable[_T], start: _S) -> _T | _S: ...
|
||||
|
||||
else:
|
||||
@overload
|
||||
def sum(__iterable: Iterable[_T]) -> _T | Literal[0]: ...
|
||||
@overload
|
||||
def sum(__iterable: Iterable[_T], __start: _S) -> _T | _S: ...
|
||||
|
||||
|
||||
@@ -65,11 +65,20 @@ def astuple(obj: Any) -> tuple[Any, ...]: ...
|
||||
@overload
|
||||
def astuple(obj: Any, *, tuple_factory: Callable[[list[Any]], _T]) -> _T: ...
|
||||
|
||||
if sys.version_info >= (3, 10):
|
||||
if sys.version_info >= (3, 8):
|
||||
# cls argument is now positional-only
|
||||
@overload
|
||||
def dataclass(__cls: type[_T]) -> type[_T]: ...
|
||||
@overload
|
||||
def dataclass(__cls: None) -> Callable[[type[_T]], type[_T]]: ...
|
||||
|
||||
else:
|
||||
@overload
|
||||
def dataclass(_cls: type[_T]) -> type[_T]: ...
|
||||
@overload
|
||||
def dataclass(_cls: None) -> Callable[[type[_T]], type[_T]]: ...
|
||||
|
||||
if sys.version_info >= (3, 10):
|
||||
@overload
|
||||
def dataclass(
|
||||
*,
|
||||
@@ -84,22 +93,7 @@ if sys.version_info >= (3, 10):
|
||||
slots: bool = ...,
|
||||
) -> Callable[[type[_T]], type[_T]]: ...
|
||||
|
||||
elif sys.version_info >= (3, 8):
|
||||
# cls argument is now positional-only
|
||||
@overload
|
||||
def dataclass(__cls: type[_T]) -> type[_T]: ...
|
||||
@overload
|
||||
def dataclass(__cls: None) -> Callable[[type[_T]], type[_T]]: ...
|
||||
@overload
|
||||
def dataclass(
|
||||
*, init: bool = ..., repr: bool = ..., eq: bool = ..., order: bool = ..., unsafe_hash: bool = ..., frozen: bool = ...
|
||||
) -> Callable[[type[_T]], type[_T]]: ...
|
||||
|
||||
else:
|
||||
@overload
|
||||
def dataclass(_cls: type[_T]) -> type[_T]: ...
|
||||
@overload
|
||||
def dataclass(_cls: None) -> Callable[[type[_T]], type[_T]]: ...
|
||||
@overload
|
||||
def dataclass(
|
||||
*, init: bool = ..., repr: bool = ..., eq: bool = ..., order: bool = ..., unsafe_hash: bool = ..., frozen: bool = ...
|
||||
|
||||
@@ -95,11 +95,11 @@ class EnumMeta(ABCMeta):
|
||||
def __members__(self: type[_EnumMemberT]) -> types.MappingProxyType[str, _EnumMemberT]: ...
|
||||
def __len__(self) -> int: ...
|
||||
def __bool__(self) -> Literal[True]: ...
|
||||
# Simple value lookup
|
||||
@overload # type: ignore[override]
|
||||
def __call__(cls: type[_EnumMemberT], value: Any, names: None = ...) -> _EnumMemberT: ...
|
||||
# Functional Enum API
|
||||
if sys.version_info >= (3, 11):
|
||||
# Simple value lookup
|
||||
@overload # type: ignore[override]
|
||||
def __call__(cls: type[_EnumMemberT], value: Any, names: None = ...) -> _EnumMemberT: ...
|
||||
# Functional Enum API
|
||||
@overload
|
||||
def __call__(
|
||||
cls,
|
||||
@@ -113,8 +113,6 @@ class EnumMeta(ABCMeta):
|
||||
boundary: FlagBoundary | None = ...,
|
||||
) -> type[Enum]: ...
|
||||
else:
|
||||
@overload # type: ignore[override]
|
||||
def __call__(cls: type[_EnumMemberT], value: Any, names: None = ...) -> _EnumMemberT: ...
|
||||
@overload
|
||||
def __call__(
|
||||
cls,
|
||||
|
||||
@@ -732,20 +732,15 @@ class _ScandirIterator(Iterator[DirEntry[AnyStr]], AbstractContextManager[_Scand
|
||||
def __exit__(self, *args: object) -> None: ...
|
||||
def close(self) -> None: ...
|
||||
|
||||
@overload
|
||||
def scandir(path: None = ...) -> _ScandirIterator[str]: ...
|
||||
|
||||
if sys.version_info >= (3, 7):
|
||||
@overload
|
||||
def scandir(path: None = ...) -> _ScandirIterator[str]: ...
|
||||
@overload
|
||||
def scandir(path: int) -> _ScandirIterator[str]: ...
|
||||
@overload
|
||||
def scandir(path: AnyStr | PathLike[AnyStr]) -> _ScandirIterator[AnyStr]: ...
|
||||
|
||||
else:
|
||||
@overload
|
||||
def scandir(path: None = ...) -> _ScandirIterator[str]: ...
|
||||
@overload
|
||||
def scandir(path: AnyStr | PathLike[AnyStr]) -> _ScandirIterator[AnyStr]: ...
|
||||
|
||||
@overload
|
||||
def scandir(path: AnyStr | PathLike[AnyStr]) -> _ScandirIterator[AnyStr]: ...
|
||||
def stat(path: _FdOrAnyPath, *, dir_fd: int | None = ..., follow_symlinks: bool = ...) -> stat_result: ...
|
||||
|
||||
if sys.version_info < (3, 7):
|
||||
|
||||
Reference in New Issue
Block a user