Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions Lib/enum.py
Original file line number Diff line number Diff line change
Expand Up @@ -739,12 +739,14 @@ def __contains__(cls, value):
`value` is in `cls` if:
1) `value` is a member of `cls`, or
2) `value` is the value of one of the `cls`'s members.
3) `value` is a psuedo-member (flags)
"""
if isinstance(value, cls):
return True
try:
return value in cls._value2member_map_
except TypeError:
cls(value)
return True
except ValueError:
return (
value in cls._unhashable_values_ # both structures are lists
or value in cls._hashable_values_
Expand Down
2 changes: 2 additions & 0 deletions Lib/test/test_enum.py
Original file line number Diff line number Diff line change
Expand Up @@ -462,6 +462,7 @@ def test_basics(self):
self.assertEqual(str(TE), "<flag 'MainEnum'>")
self.assertEqual(format(TE), "<flag 'MainEnum'>")
self.assertTrue(TE(5) is self.dupe2)
self.assertTrue(7 in TE)
else:
self.assertEqual(repr(TE), "<enum 'MainEnum'>")
self.assertEqual(str(TE), "<enum 'MainEnum'>")
Expand Down Expand Up @@ -4954,6 +4955,7 @@ class Color(enum.Enum)
| `value` is in `cls` if:
| 1) `value` is a member of `cls`, or
| 2) `value` is the value of one of the `cls`'s members.
| 3) `value` is a psuedo-member (flags)
|
| __getitem__(name)
| Return the member matching `name`.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Fix issue with ``__contains__``, values, and pseudo-members for Flags.
Loading