Skip to content

Commit 2d6ab4d

Browse files
authored
Fix several mypy errors when run on the 3.11 stdlib (#7389)
1 parent 95df201 commit 2d6ab4d

File tree

3 files changed

+29
-48
lines changed

3 files changed

+29
-48
lines changed

stdlib/asyncio/base_events.pyi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,7 @@ class BaseEventLoop(AbstractEventLoop):
298298
self, protocol_factory: Callable[[], _ProtocolT], sock: socket, *, ssl: _SSLContext = ...
299299
) -> tuple[BaseTransport, _ProtocolT]: ...
300300
if sys.version_info >= (3, 11):
301-
async def create_datagram_endpoint(
301+
async def create_datagram_endpoint( # type: ignore[override]
302302
self,
303303
protocol_factory: Callable[[], _ProtocolT],
304304
local_addr: tuple[str, int] | None = ...,

stdlib/builtins.pyi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1710,7 +1710,7 @@ if sys.version_info >= (3, 10):
17101710
class EncodingWarning(Warning): ...
17111711

17121712
if sys.version_info >= (3, 11):
1713-
_SplitCondition = type[BaseException] | tuple[type[BaseException], ...] | Callable[[BaseException], bool]
1713+
_SplitCondition = Union[type[BaseException], tuple[type[BaseException], ...], Callable[[BaseException], bool]]
17141714

17151715
class BaseExceptionGroup(BaseException):
17161716
def __new__(cls: type[Self], __message: str, __exceptions: Sequence[BaseException]) -> Self: ...

stdlib/enum.pyi

Lines changed: 27 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -136,17 +136,19 @@ if sys.version_info >= (3, 11):
136136
# In 3.11 `EnumMeta` metaclass is renamed to `EnumType`, but old name also exists.
137137
EnumType = EnumMeta
138138

139+
class property(types.DynamicClassAttribute):
140+
def __set_name__(self, ownerclass: type[Enum], name: str) -> None: ...
141+
name: str
142+
clsname: str
143+
_magic_enum_attr = property
144+
else:
145+
_magic_enum_attr = types.DynamicClassAttribute
146+
139147
class Enum(metaclass=EnumMeta):
140-
if sys.version_info >= (3, 11):
141-
@property
142-
def name(self) -> str: ...
143-
@property
144-
def value(self) -> Any: ...
145-
else:
146-
@types.DynamicClassAttribute
147-
def name(self) -> str: ...
148-
@types.DynamicClassAttribute
149-
def value(self) -> Any: ...
148+
@_magic_enum_attr
149+
def name(self) -> str: ...
150+
@_magic_enum_attr
151+
def value(self) -> Any: ...
150152
_name_: str
151153
_value_: Any
152154
if sys.version_info >= (3, 7):
@@ -165,20 +167,15 @@ class Enum(metaclass=EnumMeta):
165167

166168
if sys.version_info >= (3, 11):
167169
class ReprEnum(Enum): ...
168-
169-
if sys.version_info >= (3, 11):
170-
class IntEnum(int, ReprEnum):
171-
_value_: int
172-
@property
173-
def value(self) -> int: ...
174-
def __new__(cls: type[Self], value: int) -> Self: ...
175-
170+
_IntEnumBase = ReprEnum
176171
else:
177-
class IntEnum(int, Enum):
178-
_value_: int
179-
@types.DynamicClassAttribute
180-
def value(self) -> int: ...
181-
def __new__(cls: type[Self], value: int) -> Self: ...
172+
_IntEnumBase = Enum
173+
174+
class IntEnum(int, _IntEnumBase):
175+
_value_: int
176+
@_magic_enum_attr
177+
def value(self) -> int: ...
178+
def __new__(cls: type[Self], value: int) -> Self: ...
182179

183180
def unique(enumeration: _EnumerationT) -> _EnumerationT: ...
184181

@@ -187,29 +184,17 @@ _auto_null: Any
187184
# subclassing IntFlag so it picks up all implemented base functions, best modeling behavior of enum.auto()
188185
class auto(IntFlag):
189186
_value_: Any
190-
if sys.version_info >= (3, 11):
191-
@property
192-
def value(self) -> Any: ...
193-
else:
194-
@types.DynamicClassAttribute
195-
def value(self) -> Any: ...
196-
187+
@_magic_enum_attr
188+
def value(self) -> Any: ...
197189
def __new__(cls: type[Self]) -> Self: ...
198190

199191
class Flag(Enum):
200192
_name_: str | None # type: ignore[assignment]
201193
_value_: int
202-
if sys.version_info >= (3, 11):
203-
@property
204-
def name(self) -> str | None: ... # type: ignore[override]
205-
@property
206-
def value(self) -> int: ...
207-
else:
208-
@types.DynamicClassAttribute
209-
def name(self) -> str | None: ... # type: ignore[override]
210-
@types.DynamicClassAttribute
211-
def value(self) -> int: ...
212-
194+
@_magic_enum_attr
195+
def name(self) -> str | None: ... # type: ignore[override]
196+
@_magic_enum_attr
197+
def value(self) -> int: ...
213198
def __contains__(self: Self, other: Self) -> bool: ...
214199
def __bool__(self) -> bool: ...
215200
def __or__(self: Self, other: Self) -> Self: ...
@@ -230,7 +215,7 @@ if sys.version_info >= (3, 11):
230215
class StrEnum(str, ReprEnum):
231216
def __new__(cls: type[Self], value: str) -> Self: ...
232217
_value_: str
233-
@property
218+
@_magic_enum_attr
234219
def value(self) -> str: ...
235220

236221
class EnumCheck(StrEnum):
@@ -255,10 +240,6 @@ if sys.version_info >= (3, 11):
255240
EJECT = FlagBoundary.EJECT
256241
KEEP = FlagBoundary.KEEP
257242

258-
class property(types.DynamicClassAttribute):
259-
def __set_name__(self, ownerclass: type[Enum], name: str) -> None: ...
260-
name: str
261-
clsname: str
262243
def global_str(self: Enum) -> str: ...
263244
def global_enum(cls: _EnumerationT, update_str: bool = ...) -> _EnumerationT: ...
264245
def global_enum_repr(self: Enum) -> str: ...

0 commit comments

Comments
 (0)