From 10942bbeb0354a303778d3e4e68295975ad708db Mon Sep 17 00:00:00 2001 From: Refael Ackermann Date: Wed, 17 Sep 2025 19:29:12 -0400 Subject: [PATCH] dict: on retrieval, key allowed to be null --- stdlib/builtins.pyi | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/stdlib/builtins.pyi b/stdlib/builtins.pyi index b0912b8872d7..d38750ee2f90 100644 --- a/stdlib/builtins.pyi +++ b/stdlib/builtins.pyi @@ -1077,6 +1077,7 @@ class list(MutableSequence[_T]): def __class_getitem__(cls, item: Any, /) -> GenericAlias: ... class dict(MutableMapping[_KT, _VT]): + _KTN = _KT | None # __init__ should be kept roughly in line with `collections.UserDict.__init__`, which has similar semantics # Also multiprocessing.managers.SyncManager.dict() @overload @@ -1124,17 +1125,17 @@ class dict(MutableMapping[_KT, _VT]): def fromkeys(cls, iterable: Iterable[_T], value: _S, /) -> dict[_T, _S]: ... # Positional-only in dict, but not in MutableMapping @overload # type: ignore[override] - def get(self, key: _KT, /) -> _VT | None: ... + def get(self, key: _KTN, /) -> _VT | None: ... @overload - def get(self, key: _KT, default: _VT, /) -> _VT: ... + def get(self, key: _KTN, default: _VT, /) -> _VT: ... @overload - def get(self, key: _KT, default: _T, /) -> _VT | _T: ... + def get(self, key: _KTN, default: _T, /) -> _VT | _T: ... @overload - def pop(self, key: _KT, /) -> _VT: ... + def pop(self, key: _KTN, /) -> _VT: ... @overload - def pop(self, key: _KT, default: _VT, /) -> _VT: ... + def pop(self, key: _KTN, default: _VT, /) -> _VT: ... @overload - def pop(self, key: _KT, default: _T, /) -> _VT | _T: ... + def pop(self, key: _KTN, default: _T, /) -> _VT | _T: ... def __len__(self) -> int: ... def __getitem__(self, key: _KT, /) -> _VT: ... def __setitem__(self, key: _KT, value: _VT, /) -> None: ...