diff --git a/stdlib/@tests/stubtest_allowlists/common.txt b/stdlib/@tests/stubtest_allowlists/common.txt index 451875d795f1..f3cb0b2b52e7 100644 --- a/stdlib/@tests/stubtest_allowlists/common.txt +++ b/stdlib/@tests/stubtest_allowlists/common.txt @@ -4,7 +4,6 @@ # Please keep sorted alphabetically -builtins.dict.get collections\.ChainMap\.fromkeys # https://github.com/python/mypy/issues/17023 http.client.HTTPConnection.response_class # the actual type at runtime is abc.ABCMeta importlib.abc.Loader.exec_module # See Lib/importlib/_abc.py. Might be defined for backwards compatibility diff --git a/stdlib/@tests/test_cases/builtins/check_dict.py b/stdlib/@tests/test_cases/builtins/check_dict.py index dd4569eccbe5..d89c3a27d489 100644 --- a/stdlib/@tests/test_cases/builtins/check_dict.py +++ b/stdlib/@tests/test_cases/builtins/check_dict.py @@ -67,7 +67,7 @@ def test_iterable_tuple_overload(x: Iterable[tuple[int, str]]) -> dict[int, str] assert_type(d_any["key"], Any) assert_type(d_any.get("key"), Union[Any, None]) -assert_type(d_any.get("key", None), Any) +assert_type(d_any.get("key", None), Union[Any, None]) assert_type(d_any.get("key", any_value), Any) assert_type(d_any.get("key", str_value), Any) 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] result: str result = d_any["key"] result = d_any.get("key") # type: ignore[assignment] -result = d_any.get("key", None) +result = d_any.get("key", None) # type: ignore[assignment] result = d_any.get("key", any_value) result = d_any.get("key", str_value) result = d_any.get("key", int_value) result = d_str["key"] result = d_str.get("key") # type: ignore[assignment] -result = d_str.get("key", None) # type: ignore[arg-type] -result = d_str.get("key", any_value) +result = d_str.get("key", None) # type: ignore[assignment] +# Pyright has str | None here, see https://github.com/microsoft/pyright/discussions/9570 +result = d_str.get("key", any_value) # pyright: ignore[reportAssignmentType] result = d_str.get("key", str_value) result = d_str.get("key", int_value) # type: ignore[arg-type] @@ -134,11 +135,11 @@ def test8() -> str: def test9() -> str: - return d_str.get("key", None) # type: ignore[arg-type] + return d_str.get("key", None) # type: ignore[return-value] def test10() -> str: - return d_str.get("key", any_value) + return d_str.get("key", any_value) # type: ignore[no-any-return] def test11() -> str: diff --git a/stdlib/builtins.pyi b/stdlib/builtins.pyi index b9a1f3c9e456..4e2484509c1d 100644 --- a/stdlib/builtins.pyi +++ b/stdlib/builtins.pyi @@ -1143,7 +1143,7 @@ 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: _KT, default: None = None, /) -> _VT | None: ... @overload def get(self, key: _KT, default: _VT, /) -> _VT: ... @overload diff --git a/stdlib/importlib/metadata/__init__.pyi b/stdlib/importlib/metadata/__init__.pyi index 5e26f8987277..8ab7a0c4a9e8 100644 --- a/stdlib/importlib/metadata/__init__.pyi +++ b/stdlib/importlib/metadata/__init__.pyi @@ -139,7 +139,7 @@ if sys.version_info >= (3, 10) and sys.version_info < (3, 12): class Deprecated(Generic[_KT, _VT]): def __getitem__(self, name: _KT) -> _VT: ... @overload - def get(self, name: _KT) -> _VT | None: ... + def get(self, name: _KT, default: None = None) -> _VT | None: ... @overload def get(self, name: _KT, default: _T) -> _VT | _T: ... def __iter__(self) -> Iterator[_KT]: ...