richenum 2.0.2
Enum library for python.
License: MIT
Keywords: python enum richenum

========
richenum
========
.. image:: https://github.com/hearsaycorp/richenum/actions/workflows/python-version-tests.yml/badge.svg
    :alt: Build Status

.. 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/>`__

============
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
=========
------------------
2.0.2 (2024-10-01)
------------------
    - Remove unavailable link for blog post from README.rst

------------------
2.0.1 (2024-06-06)
------------------
    - Fix README.rst

------------------
2.0.0 (2024-06-04)
------------------
    - Remove six
    - Remove python 3.7 support
    - Add python 3.9 and 3.10 support
    - Remove tox.ini

------------------
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>`_
| `Aron radics <http://github.com/radaron>`_
| `Akshay Shah <http://github.com/akshayjshah>`_
| `Dale Hui <http://github.com/dhui>`_
| `Istvan Nemeth <http://github.com/archiezgg>`_
| `Robert MacCloy <http://github.com/rbm>`_
| `Sam Vilain <http://github.com/samv>`_
| `Wyatt Paul <http://github.com/wyguy444>`_