pyEnum
======
|Build Status| |Coverage Status| |PyPI Status| |Python Version|
User friendly implementation of documented ``Enum`` type for Python
language.
Installation
------------
.. code:: bash
$ pip install easy_enum
To install the latest version from master branch execute in shell
following commands:
.. code:: bash
$ pip install -U https://github.com/molejar/pyEnum/archive/master.zip
In case of development, install pyEnum from sources:
.. code:: bash
$ 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:
1. Run with ``sudo`` to install pyEnum and dependencies globally
2. Specify the ``--user`` option to install locally into your home
directory (export "~/.local/bin" into PATH variable if haven't).
3. Run the command in a
`virtualenv <https://virtualenv.pypa.io/en/latest/>`__ local to a
specific project working set.
Usage
-----
Following example is showing how easy you can use this Enum in your
code:
.. code:: python
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))
.. |Build Status| image:: https://travis-ci.org/molejar/pyEnum.svg?branch=master
:target: https://travis-ci.org/molejar/pyEnum
.. |Coverage Status| image:: https://coveralls.io/repos/github/molejar/pyEnum/badge.svg?branch=master
:target: https://coveralls.io/github/molejar/pyEnum?branch=master
.. |PyPI Status| image:: https://img.shields.io/pypi/v/easy-enum.svg
:target: https://pypi.python.org/pypi/easy-enum
.. |Python Version| image:: https://img.shields.io/pypi/pyversions/easy-enum.svg
:target: https://www.python.org