Metadata-Version: 1.1
Name: django-richenum
Version: 3.8.0
Summary: Django Enum library for python.
Home-page: https://github.com/hearsaycorp/django-richenum
Author: Hearsay Social
Author-email: opensource@hearsaysocial.com
License: MIT
Description: .. role:: python(code)
                  :language: python
        
        django-richenum
        ===============
        
        .. image:: https://travis-ci.org/hearsaycorp/django-richenum.png?branch=master
            :alt: Build Status
            :target: https://travis-ci.org/hearsaycorp/django-richenum
        
        .. image:: https://img.shields.io/pypi/v/django-richenum.svg
            :alt: Latest PyPI Version
            :target: https://pypi.python.org/pypi/django-richenum/
        
        .. image:: https://img.shields.io/pypi/pyversions/django-richenum.svg
            :alt: Python versions
            :target: https://pypi.org/project/django-richenum/
        
        .. image:: https://img.shields.io/pypi/dm/django-richenum.svg
          :alt: Pypi Downloads
          :target: https://pypi.org/project/django-richenum/
        
        About
        =====
        A Django extension of richenum for Python. If you're unfamiliar with richenums, please read up on them (see `Related Packages`_) before using django-richenum.
        
        Model Fields
        ------------
        IndexEnumField
          Store ints in DB, but expose OrderedRichEnumValues in Python.
        CanonicalNameEnumField
          Store varchar in DB, but expose RichEnumValues in Python.
          We recommend that you use IndexEnumField for storage and query efficiency.
        LaxIndexEnumField
          Like IndexEnumField, but also allows casting to and from canonical names.
          Mainly used to help migrate existing code that uses strings as database values.
        
        Form Fields
        -----------
        CanonicalEnumField
          Uses the RichEnum/OrderedRichEnum canonical_name as form field values.
        IndexEnumField
          Uses the OrderedRichEnum index as form field values.
        
        Django Admin
        ------------
        RichEnumFieldListFilter
          Enables filtering by RichEnum model fields in the Django admin UI
        
        Links
        -----
        | `GitHub: django-richenum <https://github.com/hearsaycorp/django-richenum>`_
        | `PyPi: django-richenum <https://pypi.python.org/pypi/django-richenum/>`_
        
        Installation
        ============
        .. code:: bash
        
            $ pip install django-richenum
        
        Example Usage
        =============
        
        IndexEnumField
        --------------
        .. 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")
            ...
            >>> from django.db import models
            >>> from django_richenum.models import IndexEnumField
            >>> class MyModel(models.Model):
            ...    my_enum = IndexEnumField(MyOrderedRichEnum, default=MyOrderedRichEnum.FOO)
            ...
            >>> m = MyModel.objects.create(my_enum=MyOrderedRichEnum.BAR)
            >>> m.save()
            >>> m.my_enum
            OrderedRichEnumValue - idx: 2  canonical_name: 'bar'  display_name: 'Bar'
            >>> MyModel.objects.filter(my_enum=MyOrderedRichEnum.BAR)
        
        
        CanonicalNameEnumField
        ----------------------
        .. 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")
            ...
            >>> from django.db import models
            >>> from django_richenum.models import CanonicalNameEnumField
            >>> class MyModel(models.Model):
            ...    my_enum = CanonicalNameEnumField(MyRichEnum, default=MyRichEnum.FOO)
            ...
            >>> m = MyModel.objects.create(my_enum=MyRichEnum.BAR)
            >>> m.save()
            >>> m.my_enum
            RichEnumValue - canonical_name: 'bar'  display_name: 'Bar'
            >>> MyModel.objects.filter(my_enum=MyRichEnum.BAR)
        
        RichEnumFieldListFilter
        -----------------------
        .. code:: python
        
            >>> from django_richenum.admin import register_admin_filters
            >>> register_admin_filters()
        
        
        Related Packages
        ================
        
        richenum
          Package implementing RichEnum and OrderedRichEnum that django-richenum depends on.
        
          | `GitHub: richenum <https://github.com/hearsaycorp/richenum>`_
        
          | `PyPi: richenum <https://pypi.python.org/pypi/richenum/>`_
        
        Notes
        =====
        
        If you're using Django 1.7+, you'll need to use the :python:`@deconstructible` decorator for your :python:`RichEnumValue` and :python:`OrderedRichEnumValue` classes so Django's migration framework knows how to serialize your :python:`RichEnumValue` and :python:`OrderedRichEnumValue`.
        
        .. code:: python
        
            >>> from django.utils.deconstruct import deconstructible
            >>> from richenum import RichEnumValue, OrderedRichEnumValue
            >>> @deconstructible
            ... class CustomRichEnumValue(RichEnumValue):
            ...     pass
            ...
            >>> @deconstructible
            ... class CustomOrderedRichEnumValue(OrderedRichEnumValue):
            ...     pass
            ...
        
        Contributing
        ============
        
        #. Fork the repo from `GitHub <https://github.com/hearsaycorp/django-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
        =========
        
        3.7.0 (2019-09-05)
        ------------------
            - Support for Django 2.3
        
        3.6.0 (2019-07-09)
        ------------------
            - Support for Django 2.2
            - Support for Python 3.7
            - Remove support for Django 2.0
        
        3.5.0 (2018-09-10)
        ------------------
            - Fix [deprecation of context param for Field.from_db_value](https://code.djangoproject.com/ticket/28370)
            - Support for Django 2.1
            - Switch tests suite to use pytest
            - Remove pylint-django plugin, no longer needed
        
        3.4.0 (2018-02-10)
        ------------------
            - Drop support for old Django versions
        
        
        3.3.0 (2018-01-21)
        ------------------
            - removed Python 3.4
            - add support for Python 3.6
            - add support for Django 2.0
            - Properly mark raw strings (used as regex)
        
        3.2.0 (2016-08-22)
        ------------------
            - Python 3.4 & 3.5 support
        
        3.1.0 (2015-08-02)
        ------------------
            - Django 1.10 support
        
        3.0.1 (2015-07-13)
        ------------------
            - Prepare for python 3 support
        
        2.4.1 (2015-05-04)
        ------------------
            - replace mysql client library (for tests)
            - stop using lambdas
        
        2.3.0 (2015-05-04)
        ------------------
            - Support Django 1.8
        
        2.2.0 (2015-03-11)
        ------------------
            - Support ModelForms for non-SQLite DB backends
        
        2.1.0 (2014-11-01)
        ------------------
            - Support migration in Django 1.7
        
        2.0.0 (2014-09-04)
        ------------------
            - Support Django 1.7, drop support for Python 2.6.
        
        1.2.2 (2014-08-02)
        ------------------
            - Support Django 1.3
        
        1.2.1 (2014-06-02)
        ------------------
            - Remove uses of BaseException.message.
        
        1.2.0 (2013-12-03)
        ------------------
            - Add enum-aware versions of TypedMultipleChoiceField.
        
        1.1.0 (2013-12-03)
        ------------------
            - Fix form fields to support Django 1.6 (while maintaining
              compatibility with 1.4 and 1.5).
        
        1.0.2 (2013-11-05)
        ------------------
            - Make EnumField.run_validators a no-op.
              This stops some warnings from type comparison, and it doesn't seem
              useful in an EnumField context.
        
        1.0.1 (2013-09-10)
        ------------------
            - Support South.
        
        1.0.0 (2013-08-16)
        ------------------
            - Initial public release.
        
        
        Developed and maintained by `Hearsay Social, Inc.
        <https://hearsaysocial.com>`_.
        
        Contributors
        ============
        | `Adam DePue <https://github.com/adepue>`_
        | `Akshay Shah <https://github.com/akshayjshah>`_
        | `Dale Hui <https://github.com/dhui>`_
        | `Robert MacCloy <https://github.com/rbm>`_
        | `Ben Lopatin <https://github.com/bennylope>`_
        | `Asher Foa <https://github.com/asherf>`_
        
Keywords: python django enum richenum
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: License :: OSI Approved :: MIT License
Classifier: Framework :: Django :: 1.11
Classifier: Framework :: Django :: 2.1
Classifier: Framework :: Django :: 2.2
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: Implementation :: CPython
