diff --git a/stdlib/_typeshed/__init__.pyi b/stdlib/_typeshed/__init__.pyi index 7201819b25ed..fa6678289347 100644 --- a/stdlib/_typeshed/__init__.pyi +++ b/stdlib/_typeshed/__init__.pyi @@ -82,19 +82,22 @@ class SupportsNext(Protocol[_T_co]): class SupportsAnext(Protocol[_T_co]): def __anext__(self) -> Awaitable[_T_co]: ... +class SupportsBool(Protocol): + def __bool__(self) -> bool: ... + # Comparison protocols class SupportsDunderLT(Protocol[_T_contra]): - def __lt__(self, other: _T_contra, /) -> bool: ... + def __lt__(self, other: _T_contra, /) -> SupportsBool: ... class SupportsDunderGT(Protocol[_T_contra]): - def __gt__(self, other: _T_contra, /) -> bool: ... + def __gt__(self, other: _T_contra, /) -> SupportsBool: ... class SupportsDunderLE(Protocol[_T_contra]): - def __le__(self, other: _T_contra, /) -> bool: ... + def __le__(self, other: _T_contra, /) -> SupportsBool: ... class SupportsDunderGE(Protocol[_T_contra]): - def __ge__(self, other: _T_contra, /) -> bool: ... + def __ge__(self, other: _T_contra, /) -> SupportsBool: ... class SupportsAllComparisons( SupportsDunderLT[Any], SupportsDunderGT[Any], SupportsDunderLE[Any], SupportsDunderGE[Any], Protocol diff --git a/stdlib/builtins.pyi b/stdlib/builtins.pyi index 2fea1b29a434..6d0b0ef612cc 100644 --- a/stdlib/builtins.pyi +++ b/stdlib/builtins.pyi @@ -19,6 +19,7 @@ from _typeshed import ( SupportsAdd, SupportsAiter, SupportsAnext, + SupportsBool, SupportsDivMod, SupportsFlush, SupportsIter, @@ -908,7 +909,12 @@ class memoryview(Sequence[_I]): @final class bool(int): - def __new__(cls, o: object = ..., /) -> Self: ... + @overload + def __new__(cls) -> Literal[False]: ... + @overload + def __new__(cls, o: SupportsBool | Sized, /) -> bool: ... + @overload + def __new__(cls, o: object, /) -> Literal[True]: ... # The following overloads could be represented more elegantly with a TypeVar("_B", bool, int), # however mypy has a bug regarding TypeVar constraints (https://github.com/python/mypy/issues/11880). @overload