Issue26748: Enum classes should evaluate as True

This commit is contained in:
Ethan Furman 2016-04-13 23:55:40 -07:00
commit 0fe7978c68
2 changed files with 19 additions and 0 deletions

View file

@ -212,6 +212,12 @@ class EnumMeta(type):
enum_class.__new__ = Enum.__new__ enum_class.__new__ = Enum.__new__
return enum_class return enum_class
def __bool__(self):
"""
classes/types should always be True.
"""
return True
def __call__(cls, value, names=None, *, module=None, qualname=None, type=None, start=1): def __call__(cls, value, names=None, *, module=None, qualname=None, type=None, start=1):
"""Either returns an existing member, or creates a new enum class. """Either returns an existing member, or creates a new enum class.

View file

@ -254,6 +254,19 @@ class TestEnum(unittest.TestCase):
with self.assertRaises(AttributeError): with self.assertRaises(AttributeError):
del Season.SPRING.name del Season.SPRING.name
def test_bool_of_class(self):
class Empty(Enum):
pass
self.assertTrue(bool(Empty))
def test_bool_of_member(self):
class Count(Enum):
zero = 0
one = 1
two = 2
for member in Count:
self.assertTrue(bool(member))
def test_invalid_names(self): def test_invalid_names(self):
with self.assertRaises(ValueError): with self.assertRaises(ValueError):
class Wrong(Enum): class Wrong(Enum):