Enum library for python.
Project description
======== 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/
===== About
A 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 Usage
enum
.. code:: python
>>> from richenum import enum
>>> MY_ENUM = enum(FOO=1, BAR=2)
>>> MY_ENUM.FOO
1
>>> MY_ENUM.BAR
2
RichEnum
.. 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 Packages
django-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 from GitHub <https://github.com/hearsaycorp/richenum>
.
#. Make your changes.
#. Add unittests for your changes.
#. Run pep8 <https://pypi.python.org/pypi/pep8>
, pyflakes <https://pypi.python.org/pypi/pyflakes>
, and pylint <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.
Changelog
1.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 PyPy
1.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 by Hearsay 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>
_
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for richenum-1.3.1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 006c7d6ccb8004dff12d93313904079f190e6495c433b56cc7d33a2ef93b308f |
|
MD5 | c0b28f21df86d6884080f4a021cc69a4 |
|
BLAKE2b-256 | 97d5005896edec1507edcc5ca116641969d8263f86144bf2afbda9aef0066c34 |