4.4. Enum Verify
@unique
enum.verify(UNIQUE)
enum.verify(CONTINUOUS)
enum.verify(NAMED_FLAGS)
4.4.1. @unique
Ensure that there are no duplicate values
from enum import unique
@unique
>>> from enum import Enum, unique
>>>
>>>
>>> @unique
... class Color(Enum):
... RED = 1
... GREEN = 2
... BLUE = 3
... BLACK = 3
...
Traceback (most recent call last):
ValueError: duplicate values found in <enum 'Color'>: BLACK -> BLUE
4.4.2. @verify(UNIQUE)
Ensure that each value has only one name
from enum import verify, UNIQUE
@verify(UNIQUE)
>>> from enum import Enum, verify, UNIQUE
>>>
>>>
>>> @verify(UNIQUE)
... class Color(Enum):
... RED = 1
... GREEN = 2
... BLUE = 3
... BLACK = 3
...
Traceback (most recent call last):
ValueError: aliases found in <enum 'Color'>: BLACK -> BLUE
4.4.3. @verify(CONTINUOUS)
Ensure that there are no missing values between lowest and highest
Designed to work with integer-valued members
>>> from enum import Enum, verify, CONTINUOUS
>>>
>>>
>>> @verify(CONTINUOUS)
... class Color(Enum):
... RED = 1
... GREEN = 2
... BLUE = 5
...
Traceback (most recent call last):
ValueError: invalid enum 'Color': missing values 3, 4
4.4.4. @verify(NAMED_FLAGS)
Ensure that any flag groups/masks contain only named flags
Designed to work with integer-valued members
>>> from enum import Flag, verify, NAMED_FLAGS
>>>
>>>
>>> @verify(NAMED_FLAGS)
... class Color(Flag):
... RED = 1
... GREEN = 2
... BLUE = 4
... BLACK = 8
... WHITE = 17
...
Traceback (most recent call last):
ValueError: invalid Flag 'Color': alias WHITE is missing value 0x10 [use enum.show_flag_values(value) for details]