[3.6] bpo-30616: Functional API of enum allows to create empty enums. (#2304) (#2324)

This commit is contained in:
Dong-hee Na 2017-06-25 01:12:20 +09:00 committed by ethanfurman
parent 0e1f9e8d3e
commit 504b95047a
3 changed files with 24 additions and 1 deletions

View file

@ -381,7 +381,7 @@ class EnumMeta(type):
# special processing needed for names?
if isinstance(names, str):
names = names.replace(',', ' ').split()
if isinstance(names, (tuple, list)) and isinstance(names[0], str):
if isinstance(names, (tuple, list)) and names and isinstance(names[0], str):
original_names, names = names, []
last_values = []
for count, name in enumerate(original_names):

View file

@ -2291,6 +2291,26 @@ class TestIntFlag(unittest.TestCase):
self.assertIs(type(e), Perm)
def test_programatic_function_from_empty_list(self):
Perm = enum.IntFlag('Perm', [])
lst = list(Perm)
self.assertEqual(len(lst), len(Perm))
self.assertEqual(len(Perm), 0, Perm)
Thing = enum.Enum('Thing', [])
lst = list(Thing)
self.assertEqual(len(lst), len(Thing))
self.assertEqual(len(Thing), 0, Thing)
def test_programatic_function_from_empty_tuple(self):
Perm = enum.IntFlag('Perm', ())
lst = list(Perm)
self.assertEqual(len(lst), len(Perm))
self.assertEqual(len(Perm), 0, Perm)
Thing = enum.Enum('Thing', ())
self.assertEqual(len(lst), len(Thing))
self.assertEqual(len(Thing), 0, Thing)
def test_containment(self):
Perm = self.Perm
R, W, X = Perm

View file

@ -89,6 +89,9 @@ Core and Builtins
Library
-------
- bpo-30616: Functional API of enum allows to create empty enums.
Patched by Dong-hee Na
- bpo-30038: Fix race condition between signal delivery and wakeup file
descriptor. Patch by Nathaniel Smith.