From 80d4676a087ff88d07e5be414eb18044652f358b Mon Sep 17 00:00:00 2001 From: "Michael J. Sullivan" Date: Mon, 25 Mar 2019 13:16:19 -0700 Subject: [PATCH 1/3] Add overloads for min/max that don't take default PR #2833 introduced more flexible handling for the type of the default parameter, but the extra type variable caused some issues. Add another overload for the case where there is no default param. This is I think related to the issues we have had with `get` recently? --- stdlib/2/__builtin__.pyi | 4 ++++ stdlib/2and3/builtins.pyi | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/stdlib/2/__builtin__.pyi b/stdlib/2/__builtin__.pyi index db00c557ef22..0340b3829233 100644 --- a/stdlib/2/__builtin__.pyi +++ b/stdlib/2/__builtin__.pyi @@ -1283,6 +1283,8 @@ 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] = ...,) -> _T: ... + @overload def max(_iterable: Iterable[_T], *, key: Callable[[_T], Any] = ..., default: _VT = ...) -> Union[_T, _VT]: ... else: @overload @@ -1293,6 +1295,8 @@ 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] = ...) -> _T: ... + @overload def min(_iterable: Iterable[_T], *, key: Callable[[_T], Any] = ..., default: _VT = ...) -> Union[_T, _VT]: ... else: @overload diff --git a/stdlib/2and3/builtins.pyi b/stdlib/2and3/builtins.pyi index db00c557ef22..0340b3829233 100644 --- a/stdlib/2and3/builtins.pyi +++ b/stdlib/2and3/builtins.pyi @@ -1283,6 +1283,8 @@ 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] = ...,) -> _T: ... + @overload def max(_iterable: Iterable[_T], *, key: Callable[[_T], Any] = ..., default: _VT = ...) -> Union[_T, _VT]: ... else: @overload @@ -1293,6 +1295,8 @@ 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] = ...) -> _T: ... + @overload def min(_iterable: Iterable[_T], *, key: Callable[[_T], Any] = ..., default: _VT = ...) -> Union[_T, _VT]: ... else: @overload From 3fd8ad534c28d692f2f76c41a6579044459d94f1 Mon Sep 17 00:00:00 2001 From: "Michael J. Sullivan" Date: Mon, 25 Mar 2019 13:34:02 -0700 Subject: [PATCH 2/3] fix things --- stdlib/2and3/builtins.pyi | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/stdlib/2and3/builtins.pyi b/stdlib/2and3/builtins.pyi index 0340b3829233..ede9aa00e9c7 100644 --- a/stdlib/2and3/builtins.pyi +++ b/stdlib/2and3/builtins.pyi @@ -1283,9 +1283,9 @@ 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] = ...,) -> _T: ... + def max(_iterable: Iterable[_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: ... @@ -1297,7 +1297,7 @@ if sys.version_info >= (3,): @overload def min(_iterable: Iterable[_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: ... From 0a131a9ea59952667ce505ceb8bf8d556f90e29a Mon Sep 17 00:00:00 2001 From: "Michael J. Sullivan" Date: Mon, 25 Mar 2019 13:37:31 -0700 Subject: [PATCH 3/3] ugh __builtins__ --- stdlib/2/__builtin__.pyi | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/stdlib/2/__builtin__.pyi b/stdlib/2/__builtin__.pyi index 0340b3829233..ede9aa00e9c7 100644 --- a/stdlib/2/__builtin__.pyi +++ b/stdlib/2/__builtin__.pyi @@ -1283,9 +1283,9 @@ 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] = ...,) -> _T: ... + def max(_iterable: Iterable[_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: ... @@ -1297,7 +1297,7 @@ if sys.version_info >= (3,): @overload def min(_iterable: Iterable[_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: ...