From afb664976d04611ccc3f5587a4c45c8176e4550c Mon Sep 17 00:00:00 2001 From: herr kaste Date: Fri, 8 Mar 2019 18:33:40 +0100 Subject: [PATCH 1/4] For min/max return Union type if default given --- stdlib/2and3/builtins.pyi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/stdlib/2and3/builtins.pyi b/stdlib/2and3/builtins.pyi index 9e8b05d283d6..819e4ea3fd98 100644 --- a/stdlib/2and3/builtins.pyi +++ b/stdlib/2and3/builtins.pyi @@ -1277,7 +1277,7 @@ if sys.version_info >= (3,): @overload def max(arg1: _T, arg2: _T, *args: _T, key: Callable[[_T], Any] = ...) -> _T: ... @overload - def max(iterable: Iterable[_T], key: Callable[[_T], Any] = ..., default: _T = ...) -> _T: ... + def max(iterable: Iterable[_T], key: Callable[[_T], Any] = ..., default: _VT = ...) -> Union[_T, _VT]: ... else: @overload def max(arg1: _T, arg2: _T, *args: _T, key: Callable[[_T], Any] = ...) -> _T: ... @@ -1287,7 +1287,7 @@ if sys.version_info >= (3,): @overload def min(arg1: _T, arg2: _T, *args: _T, key: Callable[[_T], Any] = ...) -> _T: ... @overload - def min(iterable: Iterable[_T], key: Callable[[_T], Any] = ..., default: _T = ...) -> _T: ... + def min(iterable: Iterable[_T], key: Callable[[_T], Any] = ..., default: _VT = ...) -> Union[_T, _VT]: ... else: @overload def min(arg1: _T, arg2: _T, *args: _T, key: Callable[[_T], Any] = ...) -> _T: ... From e6f70b6dada503e582b08a76c0b12a27608bb6c4 Mon Sep 17 00:00:00 2001 From: herr kaste Date: Fri, 8 Mar 2019 18:39:16 +0100 Subject: [PATCH 2/4] For min/max mark keyword only arguments --- stdlib/2and3/builtins.pyi | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/stdlib/2and3/builtins.pyi b/stdlib/2and3/builtins.pyi index 819e4ea3fd98..c617c2c5fbdd 100644 --- a/stdlib/2and3/builtins.pyi +++ b/stdlib/2and3/builtins.pyi @@ -1277,22 +1277,22 @@ if sys.version_info >= (3,): @overload def max(arg1: _T, arg2: _T, *args: _T, key: Callable[[_T], Any] = ...) -> _T: ... @overload - def max(iterable: Iterable[_T], key: Callable[[_T], Any] = ..., default: _VT = ...) -> Union[_T, _VT]: ... + def max(iterable: Iterable[_T], *, key: Callable[[_T], Any] = ..., default: _VT = ...) -> Union[_T, _VT]: ... else: @overload def max(arg1: _T, arg2: _T, *args: _T, key: Callable[[_T], Any] = ...) -> _T: ... @overload - def max(iterable: Iterable[_T], key: Callable[[_T], Any] = ...) -> _T: ... + def max(iterable: Iterable[_T], *, key: Callable[[_T], Any] = ...) -> _T: ... if sys.version_info >= (3,): @overload def min(arg1: _T, arg2: _T, *args: _T, key: Callable[[_T], Any] = ...) -> _T: ... @overload - def min(iterable: Iterable[_T], key: Callable[[_T], Any] = ..., default: _VT = ...) -> Union[_T, _VT]: ... + def min(iterable: Iterable[_T], *, key: Callable[[_T], Any] = ..., default: _VT = ...) -> Union[_T, _VT]: ... else: @overload def min(arg1: _T, arg2: _T, *args: _T, key: Callable[[_T], Any] = ...) -> _T: ... @overload - def min(iterable: Iterable[_T], key: Callable[[_T], Any] = ...) -> _T: ... + def min(iterable: Iterable[_T], *, key: Callable[[_T], Any] = ...) -> _T: ... @overload def next(i: Iterator[_T]) -> _T: ... @overload From 2f56b1faef4efba04557a36893a6ad40a9104f3a Mon Sep 17 00:00:00 2001 From: herr kaste Date: Fri, 8 Mar 2019 18:42:38 +0100 Subject: [PATCH 3/4] Also mark positional arguments --- stdlib/2and3/builtins.pyi | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/stdlib/2and3/builtins.pyi b/stdlib/2and3/builtins.pyi index c617c2c5fbdd..57abccd65ab0 100644 --- a/stdlib/2and3/builtins.pyi +++ b/stdlib/2and3/builtins.pyi @@ -1275,24 +1275,24 @@ else: *iterables: Iterable[Any]) -> List[_S]: ... if sys.version_info >= (3,): @overload - def max(arg1: _T, arg2: _T, *args: _T, key: Callable[[_T], Any] = ...) -> _T: ... + def max(_arg1: _T, _arg2: _T, *_args: _T, key: Callable[[_T], Any] = ...) -> _T: ... @overload - def max(iterable: Iterable[_T], *, key: Callable[[_T], Any] = ..., default: _VT = ...) -> Union[_T, _VT]: ... + def max(_iterable: Iterable[_T], *, key: Callable[[_T], Any] = ..., default: _VT = ...) -> Union[_T, _VT]: ... else: @overload - def max(arg1: _T, arg2: _T, *args: _T, key: Callable[[_T], Any] = ...) -> _T: ... + def max(_arg1: _T, _arg2: _T, *_args: _T, key: Callable[[_T], Any] = ...) -> _T: ... @overload - def max(iterable: Iterable[_T], *, key: Callable[[_T], Any] = ...) -> _T: ... + def max(_iterable: Iterable[_T], *, key: Callable[[_T], Any] = ...) -> _T: ... if sys.version_info >= (3,): @overload - def min(arg1: _T, arg2: _T, *args: _T, key: Callable[[_T], Any] = ...) -> _T: ... + def min(_arg1: _T, _arg2: _T, *_args: _T, key: Callable[[_T], Any] = ...) -> _T: ... @overload - def min(iterable: Iterable[_T], *, key: Callable[[_T], Any] = ..., default: _VT = ...) -> Union[_T, _VT]: ... + def min(_iterable: Iterable[_T], *, key: Callable[[_T], Any] = ..., default: _VT = ...) -> Union[_T, _VT]: ... else: @overload - def min(arg1: _T, arg2: _T, *args: _T, key: Callable[[_T], Any] = ...) -> _T: ... + def min(_arg1: _T, _arg2: _T, *_args: _T, key: Callable[[_T], Any] = ...) -> _T: ... @overload - def min(iterable: Iterable[_T], *, key: Callable[[_T], Any] = ...) -> _T: ... + def min(_iterable: Iterable[_T], *, key: Callable[[_T], Any] = ...) -> _T: ... @overload def next(i: Iterator[_T]) -> _T: ... @overload From 9176b9f8e783eb61ebcb7e4e681237df2a5f9dbc Mon Sep 17 00:00:00 2001 From: herr kaste Date: Fri, 8 Mar 2019 19:05:36 +0100 Subject: [PATCH 4/4] Copy changes to __builtin__.pyi --- stdlib/2/__builtin__.pyi | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/stdlib/2/__builtin__.pyi b/stdlib/2/__builtin__.pyi index 9e8b05d283d6..57abccd65ab0 100644 --- a/stdlib/2/__builtin__.pyi +++ b/stdlib/2/__builtin__.pyi @@ -1275,24 +1275,24 @@ else: *iterables: Iterable[Any]) -> List[_S]: ... if sys.version_info >= (3,): @overload - def max(arg1: _T, arg2: _T, *args: _T, key: Callable[[_T], Any] = ...) -> _T: ... + def max(_arg1: _T, _arg2: _T, *_args: _T, key: Callable[[_T], Any] = ...) -> _T: ... @overload - def max(iterable: Iterable[_T], key: Callable[[_T], Any] = ..., default: _T = ...) -> _T: ... + def max(_iterable: Iterable[_T], *, key: Callable[[_T], Any] = ..., default: _VT = ...) -> Union[_T, _VT]: ... else: @overload - def max(arg1: _T, arg2: _T, *args: _T, key: Callable[[_T], Any] = ...) -> _T: ... + def max(_arg1: _T, _arg2: _T, *_args: _T, key: Callable[[_T], Any] = ...) -> _T: ... @overload - def max(iterable: Iterable[_T], key: Callable[[_T], Any] = ...) -> _T: ... + def max(_iterable: Iterable[_T], *, key: Callable[[_T], Any] = ...) -> _T: ... if sys.version_info >= (3,): @overload - def min(arg1: _T, arg2: _T, *args: _T, key: Callable[[_T], Any] = ...) -> _T: ... + def min(_arg1: _T, _arg2: _T, *_args: _T, key: Callable[[_T], Any] = ...) -> _T: ... @overload - def min(iterable: Iterable[_T], key: Callable[[_T], Any] = ..., default: _T = ...) -> _T: ... + def min(_iterable: Iterable[_T], *, key: Callable[[_T], Any] = ..., default: _VT = ...) -> Union[_T, _VT]: ... else: @overload - def min(arg1: _T, arg2: _T, *args: _T, key: Callable[[_T], Any] = ...) -> _T: ... + def min(_arg1: _T, _arg2: _T, *_args: _T, key: Callable[[_T], Any] = ...) -> _T: ... @overload - def min(iterable: Iterable[_T], key: Callable[[_T], Any] = ...) -> _T: ... + def min(_iterable: Iterable[_T], *, key: Callable[[_T], Any] = ...) -> _T: ... @overload def next(i: Iterator[_T]) -> _T: ... @overload