Use conditional overloads to simplify several stdlib functions (#7540)

This commit is contained in:
Alex Waygood
2022-03-25 08:47:03 +01:00
committed by GitHub
parent b69d64df60
commit b63c963077
4 changed files with 21 additions and 36 deletions

View File

@@ -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 = ...