User friendly implementation of documented Enum
type for Python language.
$ pip install easy_enum
To install the latest version from master branch execute in shell following commands:
$ pip install -U https://github.com/molejar/pyEnum/archive/master.zip
In case of development, install pyEnum from sources:
$ git clone https://github.com/molejar/pyEnum.git
$ cd pyEnum
$ pip install -U -e .
You may run into a permissions issues running these commands. Here are a few options how to fix it:
- Run with
sudo
to install pyEnum and dependencies globally - Specify the
--user
option to install locally into your home directory (export "~/.local/bin" into PATH variable if haven't). - Run the command in a virtualenv local to a specific project working set.
Following example is showing how easy you can use this Enum in your code:
from easy_enum import Enum
class TestEnum(Enum):
# attribute with no description, the name will be 'FIRST_ITEM' and empty string as description
FIRST_ITEM = 1
# attribute with description
SECOND_ITEM = (2, 'Description for second item')
# attribute with description and custom string name
THIRD_ITEM = (3, 'third', 'Description for third item')
# attribute with custom string name (the description must be specified as empty string)
FOURTH_ITEM = (4, 'fourth', '')
# Read attributes value and name
print(TestEnum.SECOND_ITEM) # 2
print(TestEnum['FIRST_ITEM']) # 1
print(TestEnum[1]) # 'FIRST_ITEM'
print(TestEnum[3]) # 'third'
print(TestEnum['third']) # 3
# Use get method with default value if want skip exception
print(TestEnum.get(8)) # None
print(TestEnum.get('eight')) # None
print(TestEnum.get(8, 'eight')) # 'eight'
# Check if exist attribute with specific value
print(1 in TestEnum) # True
print(8 in TestEnum) # False
# Check if exist attribute with specific name
print('first' in TestEnum) # False
print('third' in TestEnum) # True
# Get attribute description (as parameter use attribute name or value)
print(TestEnum.desc(1)) # ''
print(TestEnum.desc(2)) # 'Description for second item'
print(TestEnum.desc('third')) # 'Description for third item'
# Get count of all attributes
print(len(TestEnum)) # 4
# Get list with all attributes name
names = [item[0] for item in TestEnum]
print(names) # ['FIRST_ITEM', 'SECOND_ITEM', 'third', 'fourth']
# Get list with all attributes value
values = [item[1] for item in TestEnum]
print(values) # [1, 2, 3, 4]
# Read all items
for name, value, desc in TestEnum:
print('{} = {} ({})'.format(name, value, desc))