Skip to content

Commit 355f30c

Browse files
teeparkJelleZijlstra
authored andcommitted
Correct return type of sum() builtin (#1582)
`sum([])` always returns the integer 0.
1 parent 0000417 commit 355f30c

File tree

2 files changed

+8
-2
lines changed

2 files changed

+8
-2
lines changed

stdlib/2/__builtin__.pyi

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -789,7 +789,10 @@ def sorted(iterable: Iterable[_T], *,
789789
cmp: Callable[[_T, _T], int] = ...,
790790
key: Callable[[_T], Any] = ...,
791791
reverse: bool = ...) -> List[_T]: ...
792-
def sum(iterable: Iterable[_T], start: _T = ...) -> _T: ...
792+
@overload
793+
def sum(iterable: Iterable[_T]) -> Union[_T, int]: ...
794+
@overload
795+
def sum(iterable: Iterable[_T], start: _S) -> Union[_T, _S]: ...
793796
def unichr(i: int) -> unicode: ...
794797
def vars(object: Any = ...) -> Dict[str, Any]: ...
795798
@overload

stdlib/3/builtins.pyi

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -861,7 +861,10 @@ def setattr(object: Any, name: str, value: Any) -> None: ...
861861
def sorted(iterable: Iterable[_T], *,
862862
key: Optional[Callable[[_T], Any]] = None,
863863
reverse: bool = False) -> List[_T]: ...
864-
def sum(iterable: Iterable[_T], start: _T = ...) -> _T: ...
864+
@overload
865+
def sum(iterable: Iterable[_T]) -> Union[_T, int]: ...
866+
@overload
867+
def sum(iterable: Iterable[_T], start: _S) -> Union[_T, _S]: ...
865868
def vars(object: Any = ...) -> Dict[str, Any]: ...
866869
@overload
867870
def zip(iter1: Iterable[_T1]) -> Iterator[Tuple[_T1]]: ...

0 commit comments

Comments
 (0)