mirror of
https://github.com/python/cpython.git
synced 2025-09-26 10:19:53 +00:00
[3.12] gh-109022: [Enum] require names=()
to create empty enum type (GH-109048) (#109122)
gh-109022: [Enum] require `names=()` to create empty enum type (GH-109048)
add guard so that ``Enum('bar')`` raises a TypeError instead of
creating a new enum class called `bar`. To create the new but
empty class, use:
huh = Enum('bar', names=())
(cherry picked from commit c74e440168
)
Co-authored-by: Ethan Furman <ethan@stoneleaf.us>
This commit is contained in:
parent
d533ab17ec
commit
ca848bbf78
3 changed files with 14 additions and 4 deletions
|
@ -276,6 +276,7 @@ class _EnumTests:
|
|||
return self.name.title()
|
||||
def __format__(self, spec):
|
||||
return ''.join(reversed(self.name))
|
||||
self.NewBaseEnum = NewBaseEnum
|
||||
class NewSubEnum(NewBaseEnum):
|
||||
first = auto()
|
||||
self.NewSubEnum = NewSubEnum
|
||||
|
@ -342,10 +343,8 @@ class _EnumTests:
|
|||
return self.name.title()
|
||||
def __format__(self, spec):
|
||||
return ''.join(reversed(self.name))
|
||||
NewBaseEnum = self.enum_type('NewBaseEnum', dict(__format__=__format__, __str__=__str__))
|
||||
class NewSubEnum(NewBaseEnum):
|
||||
first = auto()
|
||||
self.NewSubEnum = NewBaseEnum('NewSubEnum', 'first')
|
||||
self.NewBaseEnum = self.enum_type('NewBaseEnum', dict(__format__=__format__, __str__=__str__))
|
||||
self.NewSubEnum = self.NewBaseEnum('NewSubEnum', 'first')
|
||||
#
|
||||
def _generate_next_value_(name, start, last, values):
|
||||
pass
|
||||
|
@ -561,6 +560,10 @@ class _EnumTests:
|
|||
self.assertTrue('description' not in dir(SubEnum))
|
||||
self.assertTrue('description' in dir(SubEnum.sample), dir(SubEnum.sample))
|
||||
|
||||
def test_empty_enum_has_no_values(self):
|
||||
with self.assertRaisesRegex(TypeError, "<.... 'NewBaseEnum'> has no members"):
|
||||
self.NewBaseEnum(7)
|
||||
|
||||
def test_enum_in_enum_out(self):
|
||||
Main = self.MainEnum
|
||||
self.assertIs(Main(Main.first), Main.first)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue