Package: richenum
========
richenum.. image::https://circleci.com/gh/hearsaycorp/richenum/tree/master.svg?style=svg:alt: Build Status
:target:https://circleci.com/gh/hearsaycorp/richenum/tree/master.. image::https://img.shields.io/pypi/v/richenum.svg:alt: Latest PyPI Version
:target:https://pypi.python.org/pypi/richenum/.. image::https://img.shields.io/pypi/pyversions/richenum.svg:alt: Python versions
:target:https://pypi.org/project/richenum/.. image::https://img.shields.io/pypi/dm/richenum.svg:alt: Pypi Downloads
:target:https://pypi.org/project/richenum/=====
AboutA enum library for Python.enum
A simple enum implementation that maps a "variable" to a constant.
RichEnum
An enum implementation that offers more functionality than a basic enum, hence the
name: RichEnum. Provided functionality include specifying a canonical name and a display name.
The canonical name should be used if you need to do a lookup or reference in your code.
The display name should be used if you need to display text to a user.
OrderedRichEnum
Exactly like RichEnum but also has an index specified for each enum value. Also, iteration over
an OrderedRichEnum will be sorted (ascending) by the enum value's index.Links|GitHub <https://github.com/hearsaycorp/richenum>_
|PyPi <https://pypi.python.org/pypi/richenum/>_
|Blog post about the motivation behind RichEnum <http://engineering.hearsaysocial.com/2013/09/16/enums-in-python/>_============
Installation.. code:: bash$ pip install richenum=====
Example Usageenum.. code:: python>>> from richenum import enum
>>> MY_ENUM = enum(FOO=1, BAR=2)
>>> MY_ENUM.FOO
1
>>> MY_ENUM.BAR
2RichEnum.. code:: python>>> from richenum import RichEnum, RichEnumValue
>>> class MyRichEnum(RichEnum):
...    FOO = RichEnumValue(canonical_name="foo", display_name="Foo")
...    BAR = RichEnumValue(canonical_name="bar", display_name="Bar")
...
>>> MyRichEnum.FOO
RichEnumValue - canonical_name: 'foo'  display_name: 'Foo'
>>> MyRichEnum.from_canonical("foo")
RichEnumValue - canonical_name: 'foo'  display_name: 'Foo'OrderedRichEnum.. code:: python>>> from richenum import OrderedRichEnum, OrderedRichEnumValue
>>> class MyOrderedRichEnum(OrderedRichEnum):
...    FOO = OrderedRichEnumValue(index=1, canonical_name="foo", display_name="Foo")
...    BAR = OrderedRichEnumValue(index=2, canonical_name="bar", display_name="Bar")
...
>>> MyOrderedRichEnum.FOO
OrderedRichEnumValue - idx: 1  canonical_name: 'foo'  display_name: 'Foo'
>>> MyOrderedRichEnum.from_canonical("foo")
OrderedRichEnumValue - idx: 1  canonical_name: 'foo'  display_name: 'Foo'
>>> MyOrderedRichEnum.from_index(1)
OrderedRichEnumValue - idx: 1  canonical_name: 'foo'  display_name: 'Foo'================
Related Packagesdjango-richenum
Makes RichEnum and OrderedRichEnum available in as model fields and form fields in Django.|GitHub <https://github.com/hearsaycorp/django-richenum>_|PyPi <https://pypi.python.org/pypi/django-richenum/>_enum
Starting with Python 3.4, there is a standard library for enumerations.
This class has a similar API, but is not directly compatible with that
class.============
Contributing#. Fork the repo fromGitHub <https://github.com/hearsaycorp/richenum>.
#. Make your changes.
#. Add unittests for your changes.
#. Runpep8 <https://pypi.python.org/pypi/pep8>,pyflakes <https://pypi.python.org/pypi/pyflakes>, andpylint <https://pypi.python.org/pypi/pyflakes>to make sure your changes follow the Python style guide and doesn't have any errors.
#. Add yourself to the AUTHORS file (in alphabetical order).
#. Send a pull request from your fork to the main repo.Changelog1.2.1 (2016-09-16)- ``EnumLookupError`` class now inherits from built-in ``LookupError``.1.2.0 (2016-04-15)- added simple ``LookupError`` members that are thrown when
  ``RichEnum.lookup`` is called for a nonexistent attr/val pair.
  Users can choose to catch either the specific ``LookupError`` or
  continue to catch ``EnumLookupError``.1.1.0 (2014-04-17)- support for Python 3 and PyPy1.0.4 (2013-12-03)- Better unicode handling in ``__str__``, ``__unicode__``, and
  ``__repr__`` magic methods.1.0.3 (2013-12-03)- Stop throwing warnings.1.0.2 (2013-11-05)- Suppress warnings from mismatched type comparisons when generated
  in RichEnum.lookup.1.0.1 (2013-09-20)- Raise warnings when comparing enum values to other types, but not
  when checking membership or comparing to None.1.0.0 (2013-08-16)- Initial public release.Developed and maintained byHearsay Social, Inc. <http://hearsaysocial.com>_.Contributors|Adam DePue <http://github.com/adepue>_
|Akshay Shah <http://github.com/akshayjshah>_
|Dale Hui <http://github.com/dhui>_
|Robert MacCloy <http://github.com/rbm>_
|Sam Vilain <http://github.com/samv>_