Skip to content

Commit 846d167

Browse files
authored
Fix default of dict.get (#13222)
1 parent 0cdb5e9 commit 846d167

File tree

4 files changed

+9
-9
lines changed

4 files changed

+9
-9
lines changed

stdlib/@tests/stubtest_allowlists/common.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
# Please keep sorted alphabetically
66

7-
builtins.dict.get
87
collections\.ChainMap\.fromkeys # https://github.com/python/mypy/issues/17023
98
http.client.HTTPConnection.response_class # the actual type at runtime is abc.ABCMeta
109
importlib.abc.Loader.exec_module # See Lib/importlib/_abc.py. Might be defined for backwards compatibility

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

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ def test_iterable_tuple_overload(x: Iterable[tuple[int, str]]) -> dict[int, str]
6767

6868
assert_type(d_any["key"], Any)
6969
assert_type(d_any.get("key"), Union[Any, None])
70-
assert_type(d_any.get("key", None), Any)
70+
assert_type(d_any.get("key", None), Union[Any, None])
7171
assert_type(d_any.get("key", any_value), Any)
7272
assert_type(d_any.get("key", str_value), Any)
7373
assert_type(d_any.get("key", int_value), Any)
@@ -84,15 +84,16 @@ def test_iterable_tuple_overload(x: Iterable[tuple[int, str]]) -> dict[int, str]
8484
result: str
8585
result = d_any["key"]
8686
result = d_any.get("key") # type: ignore[assignment]
87-
result = d_any.get("key", None)
87+
result = d_any.get("key", None) # type: ignore[assignment]
8888
result = d_any.get("key", any_value)
8989
result = d_any.get("key", str_value)
9090
result = d_any.get("key", int_value)
9191

9292
result = d_str["key"]
9393
result = d_str.get("key") # type: ignore[assignment]
94-
result = d_str.get("key", None) # type: ignore[arg-type]
95-
result = d_str.get("key", any_value)
94+
result = d_str.get("key", None) # type: ignore[assignment]
95+
# Pyright has str | None here, see https://github.com/microsoft/pyright/discussions/9570
96+
result = d_str.get("key", any_value) # pyright: ignore[reportAssignmentType]
9697
result = d_str.get("key", str_value)
9798
result = d_str.get("key", int_value) # type: ignore[arg-type]
9899

@@ -134,11 +135,11 @@ def test8() -> str:
134135

135136

136137
def test9() -> str:
137-
return d_str.get("key", None) # type: ignore[arg-type]
138+
return d_str.get("key", None) # type: ignore[return-value]
138139

139140

140141
def test10() -> str:
141-
return d_str.get("key", any_value)
142+
return d_str.get("key", any_value) # type: ignore[no-any-return]
142143

143144

144145
def test11() -> str:

stdlib/builtins.pyi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1143,7 +1143,7 @@ class dict(MutableMapping[_KT, _VT]):
11431143
def fromkeys(cls, iterable: Iterable[_T], value: _S, /) -> dict[_T, _S]: ...
11441144
# Positional-only in dict, but not in MutableMapping
11451145
@overload # type: ignore[override]
1146-
def get(self, key: _KT, /) -> _VT | None: ...
1146+
def get(self, key: _KT, default: None = None, /) -> _VT | None: ...
11471147
@overload
11481148
def get(self, key: _KT, default: _VT, /) -> _VT: ...
11491149
@overload

stdlib/importlib/metadata/__init__.pyi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ if sys.version_info >= (3, 10) and sys.version_info < (3, 12):
139139
class Deprecated(Generic[_KT, _VT]):
140140
def __getitem__(self, name: _KT) -> _VT: ...
141141
@overload
142-
def get(self, name: _KT) -> _VT | None: ...
142+
def get(self, name: _KT, default: None = None) -> _VT | None: ...
143143
@overload
144144
def get(self, name: _KT, default: _T) -> _VT | _T: ...
145145
def __iter__(self) -> Iterator[_KT]: ...

0 commit comments

Comments
 (0)