From e33390bf2901c812216ed5462d5f78855b41545f Mon Sep 17 00:00:00 2001 From: Travis J Parker Date: Tue, 29 Aug 2017 13:25:52 -0700 Subject: [PATCH] Correct return type of sum() builtin `sum([])` always returns the integer 0. --- stdlib/2/__builtin__.pyi | 5 ++++- stdlib/3/builtins.pyi | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/stdlib/2/__builtin__.pyi b/stdlib/2/__builtin__.pyi index b781292ec2b6..0b8dfb1b3b19 100644 --- a/stdlib/2/__builtin__.pyi +++ b/stdlib/2/__builtin__.pyi @@ -789,7 +789,10 @@ def sorted(iterable: Iterable[_T], *, cmp: Callable[[_T, _T], int] = ..., key: Callable[[_T], Any] = ..., reverse: bool = ...) -> List[_T]: ... -def sum(iterable: Iterable[_T], start: _T = ...) -> _T: ... +@overload +def sum(iterable: Iterable[_T]) -> Union[_T, int]: ... +@overload +def sum(iterable: Iterable[_T], start: _S) -> Union[_T, _S]: ... def unichr(i: int) -> unicode: ... def vars(object: Any = ...) -> Dict[str, Any]: ... @overload diff --git a/stdlib/3/builtins.pyi b/stdlib/3/builtins.pyi index 80fc8e50969f..3f65e90f9df0 100644 --- a/stdlib/3/builtins.pyi +++ b/stdlib/3/builtins.pyi @@ -866,7 +866,10 @@ def setattr(object: Any, name: str, value: Any) -> None: ... def sorted(iterable: Iterable[_T], *, key: Optional[Callable[[_T], Any]] = None, reverse: bool = False) -> List[_T]: ... -def sum(iterable: Iterable[_T], start: _T = ...) -> _T: ... +@overload +def sum(iterable: Iterable[_T]) -> Union[_T, int]: ... +@overload +def sum(iterable: Iterable[_T], start: _S) -> Union[_T, _S]: ... def vars(object: Any = ...) -> Dict[str, Any]: ... @overload def zip(iter1: Iterable[_T1]) -> Iterator[Tuple[_T1]]: ...