pymel.util.enum

Robust enumerated type support in Python

This package provides a module for robust enumerations in Python.

An enumeration object is created with a sequence of string arguments to the Enum() constructor:

>>> from enum import Enum
>>> Colours = Enum('Colours', ['red', 'blue', 'green'])
>>> Weekdays = Enum('Weekdays', ['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun'])

The return value is an immutable sequence object with a value for each of the string arguments. Each value is also available as an attribute named from the corresponding string argument:

>>> pizza_night = Weekdays[4]
>>> shirt_colour = Colours.green

The values are constants that can be compared with values from the same enumeration, as well as with integers or strings; comparison with other values will invoke Python’s fallback comparisons:

>>> pizza_night == Weekdays.fri
True
>>> shirt_colour > Colours.red
True
>>> shirt_colour == "green"
True

Each value from an enumeration exports its sequence index as an integer, and can be coerced to a simple string matching the original arguments used to create the enumeration:

>>> str(pizza_night)
'fri'
>>> shirt_colour.index
2

Classes

Enum Enumerated type
EnumDict This class provides a dictionary type for storing enumerations.
EnumValue A specific value of an enumerated type

Exceptions

EnumBadDefaultKeyError(val, key) Raised when a supplied default key for a value was not present
EnumBadKeyError(key) Raised when creating an Enum with non-string keys
EnumEmptyError Raised when attempting to create an empty enumeration
EnumException() Base class for all exceptions in this module
EnumImmutableError(*args) Raised when attempting to modify an Enum