diff --git a/stdlib/builtins.pyi b/stdlib/builtins.pyi index b327deddc7d1..d877582fa25a 100644 --- a/stdlib/builtins.pyi +++ b/stdlib/builtins.pyi @@ -91,7 +91,10 @@ class object: def __class__(self, __type: type[object]) -> None: ... # type: ignore # noqa: F811 def __init__(self) -> None: ... def __new__(cls: type[Self]) -> Self: ... + # N.B. `object.__setattr__` and `object.__delattr__` are heavily special-cased by type checkers. + # Overriding them in subclasses has different semantics, even if the override has an identical signature. def __setattr__(self, __name: str, __value: Any) -> None: ... + def __delattr__(self, __name: str) -> None: ... def __eq__(self, __o: object) -> bool: ... def __ne__(self, __o: object) -> bool: ... def __str__(self) -> str: ... # noqa Y029 @@ -99,7 +102,6 @@ class object: def __hash__(self) -> int: ... def __format__(self, __format_spec: str) -> str: ... def __getattribute__(self, __name: str) -> Any: ... - def __delattr__(self, __name: str) -> None: ... def __sizeof__(self) -> int: ... # return type of pickle methods is rather hard to express in the current type system # see #6661 and https://docs.python.org/3/library/pickle.html#object.__reduce__ diff --git a/stdlib/enum.pyi b/stdlib/enum.pyi index 86fa192750c4..8e5e4e4fa9e5 100644 --- a/stdlib/enum.pyi +++ b/stdlib/enum.pyi @@ -95,8 +95,6 @@ class EnumMeta(ABCMeta): def __members__(self: type[_EnumMemberT]) -> types.MappingProxyType[str, _EnumMemberT]: ... def __len__(self) -> int: ... def __bool__(self) -> Literal[True]: ... - def __setattr__(self, name: str, value: Any) -> None: ... - def __delattr__(self, name: str) -> None: ... if sys.version_info >= (3, 11): # Simple value lookup @overload # type: ignore[override]