From cd3e7b2c971e55ad78ab2cb3a4740675c04ecabe Mon Sep 17 00:00:00 2001 From: Randolf Scholz Date: Fri, 16 Jan 2026 20:33:15 +0100 Subject: [PATCH] allow arbirary types in set.discard --- stdlib/@tests/test_cases/builtins/check_set.py | 4 ++++ stdlib/builtins.pyi | 2 +- stdlib/typing.pyi | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/stdlib/@tests/test_cases/builtins/check_set.py b/stdlib/@tests/test_cases/builtins/check_set.py index 604251b0bb67..5557b03f745e 100644 --- a/stdlib/@tests/test_cases/builtins/check_set.py +++ b/stdlib/@tests/test_cases/builtins/check_set.py @@ -12,3 +12,7 @@ def test_set_difference(x: set[Literal["foo", "bar"]], y: set[str], z: set[int]) assert_type(z - x, set[int]) assert_type(y - z, set[str]) assert_type(z - y, set[int]) + + +def test_set_discard(x: set[Literal["foo", "bar"]], key: str) -> None: + x.discard(key) # OK diff --git a/stdlib/builtins.pyi b/stdlib/builtins.pyi index 693dd0b77087..15a58fe88693 100644 --- a/stdlib/builtins.pyi +++ b/stdlib/builtins.pyi @@ -1264,7 +1264,7 @@ class set(MutableSet[_T]): def copy(self) -> set[_T]: ... def difference(self, *s: Iterable[Any]) -> set[_T]: ... def difference_update(self, *s: Iterable[Any]) -> None: ... - def discard(self, element: _T, /) -> None: ... + def discard(self, element: object, /) -> None: ... def intersection(self, *s: Iterable[Any]) -> set[_T]: ... def intersection_update(self, *s: Iterable[Any]) -> None: ... def isdisjoint(self, s: Iterable[Any], /) -> bool: ... diff --git a/stdlib/typing.pyi b/stdlib/typing.pyi index 5521055bdef3..defad008fd20 100644 --- a/stdlib/typing.pyi +++ b/stdlib/typing.pyi @@ -716,7 +716,7 @@ class MutableSet(AbstractSet[_T]): @abstractmethod def add(self, value: _T) -> None: ... @abstractmethod - def discard(self, value: _T) -> None: ... + def discard(self, value: Any) -> None: ... # Mixin methods def clear(self) -> None: ... def pop(self) -> _T: ...