From 2fdcd2e9e8e51b138f03df8e0d96e88c4b280110 Mon Sep 17 00:00:00 2001 From: David Euresti Date: Mon, 20 Mar 2017 12:10:38 -0700 Subject: [PATCH] Let MutableMapping.pop take a different default type. (#1044) This is particularly useful for the idiom `d.pop(k, None)` to remove an item if it exists. Fixes #278 --- stdlib/2/__builtin__.pyi | 1 - stdlib/2/typing.pyi | 2 +- stdlib/3/builtins.pyi | 1 - stdlib/3/typing.pyi | 2 +- 4 files changed, 2 insertions(+), 4 deletions(-) diff --git a/stdlib/2/__builtin__.pyi b/stdlib/2/__builtin__.pyi index 34d59361a..54953eb17 100644 --- a/stdlib/2/__builtin__.pyi +++ b/stdlib/2/__builtin__.pyi @@ -558,7 +558,6 @@ class dict(MutableMapping[_KT, _VT], Generic[_KT, _VT]): def has_key(self, k: _KT) -> bool: ... def clear(self) -> None: ... def copy(self) -> Dict[_KT, _VT]: ... - def pop(self, k: _KT, default: _VT = ...) -> _VT: ... def popitem(self) -> Tuple[_KT, _VT]: ... def setdefault(self, k: _KT, default: _VT = ...) -> _VT: ... @overload diff --git a/stdlib/2/typing.pyi b/stdlib/2/typing.pyi index c28fdacfb..f58940113 100644 --- a/stdlib/2/typing.pyi +++ b/stdlib/2/typing.pyi @@ -221,7 +221,7 @@ class MutableMapping(Mapping[_KT, _VT], Generic[_KT, _VT]): def __delitem__(self, v: _KT) -> None: ... def clear(self) -> None: ... - def pop(self, k: _KT, default: _VT = ...) -> _VT: ... + def pop(self, k: _KT, default: Union[_VT, _T] = ...) -> Union[_VT, _T]: ... def popitem(self) -> Tuple[_KT, _VT]: ... def setdefault(self, k: _KT, default: _VT = ...) -> _VT: ... @overload diff --git a/stdlib/3/builtins.pyi b/stdlib/3/builtins.pyi index afd0f5146..5bf826c63 100644 --- a/stdlib/3/builtins.pyi +++ b/stdlib/3/builtins.pyi @@ -611,7 +611,6 @@ class dict(MutableMapping[_KT, _VT], Generic[_KT, _VT]): def __init__(self, iterable: Iterable[Tuple[_KT, _VT]], **kwargs: _VT) -> None: ... def clear(self) -> None: ... def copy(self) -> Dict[_KT, _VT]: ... - def pop(self, k: _KT, default: _VT = None) -> _VT: ... def popitem(self) -> Tuple[_KT, _VT]: ... def setdefault(self, k: _KT, default: _VT = None) -> _VT: ... @overload diff --git a/stdlib/3/typing.pyi b/stdlib/3/typing.pyi index fa473e85c..a3ea9b68c 100644 --- a/stdlib/3/typing.pyi +++ b/stdlib/3/typing.pyi @@ -296,7 +296,7 @@ class MutableMapping(Mapping[_KT, _VT], Generic[_KT, _VT]): def __delitem__(self, v: _KT) -> None: ... def clear(self) -> None: ... - def pop(self, k: _KT, default: _VT = ...) -> _VT: ... + def pop(self, k: _KT, default: Union[_VT, _T] = ...) -> Union[_VT, _T]: ... def popitem(self) -> Tuple[_KT, _VT]: ... def setdefault(self, k: _KT, default: _VT = ...) -> _VT: ... # 'update' used to take a Union, but using overloading is better.