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]