Skip to content

Commit dcffb9f

Browse files
reverted Mapping.get changes, lets first try dict only
1 parent 58fe50b commit dcffb9f

File tree

3 files changed

+29
-18
lines changed

3 files changed

+29
-18
lines changed

stdlib/builtins.pyi

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1218,8 +1218,14 @@ class dict(MutableMapping[_KT, _VT]):
12181218
@classmethod
12191219
@overload
12201220
def fromkeys(cls, iterable: Iterable[_T], value: _S, /) -> dict[_T, _S]: ...
1221-
# get: inherited from Mapping
1222-
# pop: inherited from MutableMapping
1221+
@overload
1222+
def get(self, key: object, /) -> _VT | None: ...
1223+
@overload
1224+
def get(self, key: object, default: _T, /) -> _VT | _T: ...
1225+
@overload # type: ignore[override]
1226+
def pop(self, key: object, /) -> _VT | None: ...
1227+
@overload
1228+
def pop(self, key: object, default: _T, /) -> _VT | _T: ...
12231229
def __len__(self) -> int: ...
12241230
def __getitem__(self, key: _KT, /) -> _VT: ...
12251231
def __setitem__(self, key: _KT, value: _VT, /) -> None: ...

stdlib/collections/__init__.pyi

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -105,12 +105,15 @@ class UserDict(MutableMapping[_KT, _VT]):
105105
@overload
106106
def __ior__(self, other: Iterable[tuple[_KT, _VT]]) -> Self: ...
107107
if sys.version_info >= (3, 12):
108+
# UserDict allows key and default as keyword arguments
108109
@overload
109-
def get(self, key: _KT, default: None = None) -> _VT | None: ...
110+
def get(self, key: object) -> _VT | None: ...
110111
@overload
111-
def get(self, key: _KT, default: _VT) -> _VT: ...
112+
def get(self, key: object, default: _T) -> _VT | _T: ...
113+
@overload # type: ignore[override]
114+
def pop(self, key: object) -> _VT | None: ...
112115
@overload
113-
def get(self, key: _KT, default: _T) -> _VT | _T: ...
116+
def pop(self, key: object, default: _T) -> _VT | _T: ...
114117

115118
class UserList(MutableSequence[_T]):
116119
data: list[_T]
@@ -381,12 +384,10 @@ class OrderedDict(dict[_KT, _VT]):
381384
@overload
382385
def setdefault(self, key: _KT, default: _VT) -> _VT: ...
383386
# Same as dict.pop, but accepts keyword arguments
387+
@overload # type: ignore[override]
388+
def pop(self, key: object) -> _VT | None: ...
384389
@overload
385-
def pop(self, key: _KT) -> _VT: ...
386-
@overload
387-
def pop(self, key: _KT, default: _VT) -> _VT: ...
388-
@overload
389-
def pop(self, key: _KT, default: _T) -> _VT | _T: ...
390+
def pop(self, key: object, default: _T) -> _VT | _T: ...
390391
def __eq__(self, value: object, /) -> bool: ...
391392
@overload
392393
def __or__(self, value: dict[_KT, _VT], /) -> Self: ...

stdlib/typing.pyi

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -773,10 +773,12 @@ class Mapping(Collection[_KT], Generic[_KT, _VT_co]):
773773
@abstractmethod
774774
def __getitem__(self, key: _KT, /) -> _VT_co: ...
775775
# Mixin methods
776-
@overload # intentionally positional-only
777-
def get(self, key: Any, /) -> _VT_co | None: ...
778-
@overload # intentionally positional-only
779-
def get(self, key: Any, default: _T, /) -> _VT_co | _T: ...
776+
@overload
777+
def get(self, key: _KT, /) -> _VT_co | None: ...
778+
@overload
779+
def get(self, key: _KT, default: _VT_co, /) -> _VT_co: ... # type: ignore[misc] # pyright: ignore[reportGeneralTypeIssues] # Covariant type as parameter
780+
@overload
781+
def get(self, key: _KT, default: _T, /) -> _VT_co | _T: ...
780782
def items(self) -> ItemsView[_KT, _VT_co]: ...
781783
def keys(self) -> KeysView[_KT]: ...
782784
def values(self) -> ValuesView[_VT_co]: ...
@@ -789,10 +791,12 @@ class MutableMapping(Mapping[_KT, _VT]):
789791
@abstractmethod
790792
def __delitem__(self, key: _KT, /) -> None: ...
791793
def clear(self) -> None: ...
792-
@overload # intentionally positional-only
793-
def pop(self, key: Any, /) -> _VT | None: ...
794-
@overload # intentionally positional-only
795-
def pop(self, key: Any, default: _T, /) -> _VT | _T: ...
794+
@overload
795+
def pop(self, key: _KT, /) -> _VT: ...
796+
@overload
797+
def pop(self, key: _KT, default: _VT, /) -> _VT: ...
798+
@overload
799+
def pop(self, key: _KT, default: _T, /) -> _VT | _T: ...
796800
def popitem(self) -> tuple[_KT, _VT]: ...
797801
# This overload should be allowed only if the value type is compatible with None.
798802
#

0 commit comments

Comments
 (0)