Skip to content

Commit 5e59deb

Browse files
try without overload (using defaul=None)
1 parent dcffb9f commit 5e59deb

File tree

4 files changed

+19
-22
lines changed

4 files changed

+19
-22
lines changed

stdlib/@tests/test_cases/builtins/check_dict.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,8 @@ def test_iterable_tuple_overload(x: Iterable[tuple[int, str]]) -> dict[int, str]
8888
# Now with context!
8989
result: str
9090
result = d_any["key"]
91-
result = d_any.get("key") # type: ignore[assignment]
91+
# FIXME: https://github.com/python/mypy/issues/20576 prevents using ignore[assignment] here
92+
result = d_any.get("key") # type: ignore
9293
# FIXME: https://github.com/python/mypy/issues/20576 prevents using ignore[assignment] here
9394
result = d_any.get("key", None) # type: ignore
9495
result = d_any.get("key", any_value)
@@ -97,7 +98,8 @@ def test_iterable_tuple_overload(x: Iterable[tuple[int, str]]) -> dict[int, str]
9798
result = d_any.get("key", int_value) # type: ignore
9899

99100
result = d_str["key"]
100-
result = d_str.get("key") # type: ignore[assignment]
101+
# FIXME: https://github.com/python/mypy/issues/20576 prevents using ignore[assignment] here
102+
result = d_str.get("key") # type: ignore
101103
# FIXME: https://github.com/python/mypy/issues/20576 prevents using ignore[assignment] here
102104
result = d_str.get("key", None) # type: ignore
103105
result = d_str.get("key", any_value)
@@ -126,7 +128,8 @@ def test_get_literal(d: dict[Literal["foo", "bar"], int], dynamic_key: str) -> N
126128

127129

128130
def test2() -> str:
129-
return d_any.get("key") # type: ignore[return-value]
131+
# FIXME: https://github.com/python/mypy/issues/20576 prevents using ignore[return-value] here
132+
return d_any.get("key") # type: ignore
130133

131134

132135
# def test3() -> str:
@@ -150,7 +153,8 @@ def test7() -> str:
150153

151154

152155
def test8() -> str:
153-
return d_str.get("key") # type: ignore[return-value]
156+
# FIXME: https://github.com/python/mypy/issues/20576 prevents using ignore[return-value] here
157+
return d_str.get("key") # type: ignore
154158

155159

156160
def test9() -> str:

stdlib/builtins.pyi

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ if sys.version_info >= (3, 14):
7979
from _typeshed import AnnotateFunc
8080

8181
_T = TypeVar("_T")
82+
_N = TypeVar("_N", default=None)
8283
_I = TypeVar("_I", default=int)
8384
_T_co = TypeVar("_T_co", covariant=True)
8485
_T_contra = TypeVar("_T_contra", contravariant=True)
@@ -1218,14 +1219,8 @@ class dict(MutableMapping[_KT, _VT]):
12181219
@classmethod
12191220
@overload
12201221
def fromkeys(cls, iterable: Iterable[_T], value: _S, /) -> dict[_T, _S]: ...
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: ...
1222+
def get(self, key: object, default: _N = None, /) -> _VT | _N: ...
1223+
def pop(self, key: object, default: _N = None, /) -> _VT | _N: ...
12291224
def __len__(self) -> int: ...
12301225
def __getitem__(self, key: _KT, /) -> _VT: ...
12311226
def __setitem__(self, key: _KT, value: _VT, /) -> None: ...

stdlib/collections/__init__.pyi

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -107,13 +107,13 @@ class UserDict(MutableMapping[_KT, _VT]):
107107
if sys.version_info >= (3, 12):
108108
# UserDict allows key and default as keyword arguments
109109
@overload
110-
def get(self, key: object) -> _VT | None: ...
111-
@overload
112110
def get(self, key: object, default: _T) -> _VT | _T: ...
113-
@overload # type: ignore[override]
114-
def pop(self, key: object) -> _VT | None: ...
111+
@overload
112+
def get(self, key: object, default: None = None) -> _VT | None: ...
115113
@overload
116114
def pop(self, key: object, default: _T) -> _VT | _T: ...
115+
@overload # type: ignore[override]
116+
def pop(self, key: object, default: None = None) -> _VT | None: ...
117117

118118
class UserList(MutableSequence[_T]):
119119
data: list[_T]
@@ -384,10 +384,10 @@ class OrderedDict(dict[_KT, _VT]):
384384
@overload
385385
def setdefault(self, key: _KT, default: _VT) -> _VT: ...
386386
# Same as dict.pop, but accepts keyword arguments
387-
@overload # type: ignore[override]
388-
def pop(self, key: object) -> _VT | None: ...
389387
@overload
390388
def pop(self, key: object, default: _T) -> _VT | _T: ...
389+
@overload # type: ignore[override]
390+
def pop(self, key: object, default: None = None) -> _VT | None: ...
391391
def __eq__(self, value: object, /) -> bool: ...
392392
@overload
393393
def __or__(self, value: dict[_KT, _VT], /) -> Self: ...

stdlib/importlib/metadata/__init__.pyi

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -165,11 +165,9 @@ if sys.version_info >= (3, 10) and sys.version_info < (3, 12):
165165
class Deprecated(Generic[_KT, _VT]):
166166
def __getitem__(self, name: _KT) -> _VT: ...
167167
@overload
168-
def get(self, name: _KT, default: None = None) -> _VT | None: ...
168+
def get(self, key: object, default: _T) -> _VT | _T: ...
169169
@overload
170-
def get(self, name: _KT, default: _VT) -> _VT: ...
171-
@overload
172-
def get(self, name: _KT, default: _T) -> _VT | _T: ...
170+
def get(self, key: object, default: None = None) -> _VT | None: ...
173171
def __iter__(self) -> Iterator[_KT]: ...
174172
def __contains__(self, *args: object) -> bool: ...
175173
def keys(self) -> dict_keys[_KT, _VT]: ...

0 commit comments

Comments
 (0)