mirror of
https://github.com/davidhalter/typeshed.git
synced 2025-12-07 04:34:28 +08:00
Experiment: remove IntFlag from enum.auto (#12760)
comments in https://github.com/python/typeshed/issues/10384 suggest that type checkers should special case enum.auto rather than relying on the IntFlag hack. It's been a while since then, do we still need it?
This commit is contained in:
@@ -670,3 +670,8 @@ typing(_extensions)?\.IO\.__iter__ # See https://github.com/python/typeshed/com
|
||||
(xml.etree.cElementTree.XMLPullParser.flush)?
|
||||
(xml.parsers.expat.XMLParserType.GetReparseDeferralEnabled)?
|
||||
(xml.parsers.expat.XMLParserType.SetReparseDeferralEnabled)?
|
||||
|
||||
# enum.auto is magic, see comments
|
||||
enum.auto.__or__
|
||||
enum.auto.__and__
|
||||
enum.auto.__xor__
|
||||
|
||||
@@ -316,13 +316,24 @@ else:
|
||||
__rand__ = __and__
|
||||
__rxor__ = __xor__
|
||||
|
||||
# subclassing IntFlag so it picks up all implemented base functions, best modeling behavior of enum.auto()
|
||||
class auto(IntFlag):
|
||||
class auto:
|
||||
_value_: Any
|
||||
@_magic_enum_attr
|
||||
def value(self) -> Any: ...
|
||||
def __new__(cls) -> Self: ...
|
||||
|
||||
# These don't exist, but auto is basically immediately replaced with
|
||||
# either an int or a str depending on the type of the enum. StrEnum's auto
|
||||
# shouldn't have these, but they're needed for int versions of auto (mostly the __or__).
|
||||
# Ideally type checkers would special case auto enough to handle this,
|
||||
# but until then this is a slightly inaccurate helping hand.
|
||||
def __or__(self, other: int | Self) -> Self: ...
|
||||
def __and__(self, other: int | Self) -> Self: ...
|
||||
def __xor__(self, other: int | Self) -> Self: ...
|
||||
__ror__ = __or__
|
||||
__rand__ = __and__
|
||||
__rxor__ = __xor__
|
||||
|
||||
if sys.version_info >= (3, 11):
|
||||
def pickle_by_global_name(self: Enum, proto: int) -> str: ...
|
||||
def pickle_by_enum_name(self: _EnumMemberT, proto: int) -> tuple[Callable[..., Any], tuple[type[_EnumMemberT], str]]: ...
|
||||
|
||||
Reference in New Issue
Block a user