labeled-enums
=============
A Django-friendly iterable Enum type with labels.
Example
-------
.. code-block:: python
>>> from django.utils.translation import gettext_lazy as _
>>> from lenum import LabeledEnum
>>> class STATE_CHOICES(LabeledEnum):
... NEW = 0
... IN_PROGRESS = 1
... REVIEW = 2, _('In Review')
...
>>>
>>> STATE_CHOICES.NEW
0
>>> STATE_CHOICES.IN_PROGRESS
1
>>> STATE_CHOICES[2]
'In Review'
>>> list(STATE_CHOICES)
[(0, 'New'), (1, 'In Progress'), (2, 'In Review')]
>>> STATE_CHOICES.for_label('In Progress')
1
```
>>> STATE_CHOICES.names
('NEW', 'IN_PROGRESS', 'REVIEW')
Usage in Django:
.. code-block:: python
class STATUS(LabeledEnum):
CLOSED = 0
NEW = 1
PENDING = 2, 'Process Pending'
FAILED = -1, 'Processing Failed'
class MyModel(models.Model):
# django migrations can have trouble resolving imports if we define the
# class within the class, so we bind this here for convenience.
STATUS = STATUS
status = models.IntegerField(choices=STATUS, default=STATUS.NEW)
Want translations?
.. code-block:: python
from django.utils.translation import gettext_lazy as _
class STATUS(LabeledEnum, label_wrapper=_):
CLOSED = 0
NEW = 1
PENDING = 2, 'Process Pending'
FAILED = -1, 'Processing Failed'
All label values (including auto-generated ones) will have `label_wrapper`
applied first.
Installation
------------
.. code-block::
pip install labeled-enum
=============
A Django-friendly iterable Enum type with labels.
Example
-------
.. code-block:: python
>>> from django.utils.translation import gettext_lazy as _
>>> from lenum import LabeledEnum
>>> class STATE_CHOICES(LabeledEnum):
... NEW = 0
... IN_PROGRESS = 1
... REVIEW = 2, _('In Review')
...
>>>
>>> STATE_CHOICES.NEW
0
>>> STATE_CHOICES.IN_PROGRESS
1
>>> STATE_CHOICES[2]
'In Review'
>>> list(STATE_CHOICES)
[(0, 'New'), (1, 'In Progress'), (2, 'In Review')]
>>> STATE_CHOICES.for_label('In Progress')
1
```
>>> STATE_CHOICES.names
('NEW', 'IN_PROGRESS', 'REVIEW')
Usage in Django:
.. code-block:: python
class STATUS(LabeledEnum):
CLOSED = 0
NEW = 1
PENDING = 2, 'Process Pending'
FAILED = -1, 'Processing Failed'
class MyModel(models.Model):
# django migrations can have trouble resolving imports if we define the
# class within the class, so we bind this here for convenience.
STATUS = STATUS
status = models.IntegerField(choices=STATUS, default=STATUS.NEW)
Want translations?
.. code-block:: python
from django.utils.translation import gettext_lazy as _
class STATUS(LabeledEnum, label_wrapper=_):
CLOSED = 0
NEW = 1
PENDING = 2, 'Process Pending'
FAILED = -1, 'Processing Failed'
All label values (including auto-generated ones) will have `label_wrapper`
applied first.
Installation
------------
.. code-block::
pip install labeled-enum
Release files for labeled-enum 1.3.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| labeled-enum-1.3.1.tar.gz | 2.3 kB | Details |
Release files / labeled-enum-1.3.1.tar.gz
| Download URL | labeled-enum-1.3.1.tar.gz |
|---|---|
| Size | 2.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b422c8b165886a28dd129c62c1e16f732cb685d2d10bd8651595f2a28e0af370
|
|
BLAKE2b-256 checksum How to use checksums |
cf3ac6bdbc923b1060ab27410cdf3045ee477623145fa382a650dad5529f9bc2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.3rc1
|