"""
if isinstance(value, cls):
return True
- try:
- cls(value)
- return True
- except ValueError:
- return (
- value in cls._unhashable_values_ # both structures are lists
- or value in cls._hashable_values_
- )
+ if issubclass(cls, Flag):
+ try:
+ result = cls._missing_(value)
+ return isinstance(result, cls)
+ except ValueError:
+ pass
+ return (
+ value in cls._unhashable_values_ # both structures are lists
+ or value in cls._hashable_values_
+ )
def __delattr__(cls, attr):
# nicer error message when someone tries to delete an attribute
self.assertIn(IntEnum1.X, IntFlag1)
self.assertIn(IntFlag1.X, IntEnum1)
+ def test_contains_does_not_call_missing(self):
+ class AnEnum(Enum):
+ UNKNOWN = None
+ LUCKY = 3
+ @classmethod
+ def _missing_(cls, *values):
+ return cls.UNKNOWN
+ self.assertTrue(None in AnEnum)
+ self.assertTrue(3 in AnEnum)
+ self.assertFalse(7 in AnEnum)
+
def test_inherited_data_type(self):
class HexInt(int):
__qualname__ = 'HexInt'