gh-116110: remove extra processing for the __signature__ attribute (GH-116234)

This is an alternative to GH-100168.
This commit is contained in:
Sergey B Kirpichev 2024-10-08 22:36:03 +03:00 committed by GitHub
parent b2a7272408
commit eafd14fbe0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 19 additions and 48 deletions

View file

@ -1092,6 +1092,21 @@ class EnumType(type):
# now add to _member_map_ (even aliases)
cls._member_map_[name] = member
@property
def __signature__(cls):
from inspect import Parameter, Signature
if cls._member_names_:
return Signature([Parameter('values', Parameter.VAR_POSITIONAL)])
else:
return Signature([Parameter('new_class_name', Parameter.POSITIONAL_ONLY),
Parameter('names', Parameter.POSITIONAL_OR_KEYWORD),
Parameter('module', Parameter.KEYWORD_ONLY, default=None),
Parameter('qualname', Parameter.KEYWORD_ONLY, default=None),
Parameter('type', Parameter.KEYWORD_ONLY, default=None),
Parameter('start', Parameter.KEYWORD_ONLY, default=1),
Parameter('boundary', Parameter.KEYWORD_ONLY, default=None)])
EnumMeta = EnumType # keep EnumMeta name for backwards compatibility
@ -1135,13 +1150,6 @@ class Enum(metaclass=EnumType):
attributes -- see the documentation for details.
"""
@classmethod
def __signature__(cls):
if cls._member_names_:
return '(*values)'
else:
return '(new_class_name, /, names, *, module=None, qualname=None, type=None, start=1, boundary=None)'
def __new__(cls, value):
# all enum instances are actually created during class construction
# without calling this method; this method is called by the metaclass'