Advanced Enumerations (compatible with Python's stdlib Enum), NamedTuples, and NamedConstants
Project description
aenum --- support for advanced enumerations, namedtuples, and constants
===========================================================================
aenum includes the new Python stdlib enum module available in Python 3.4
backported for previous versions of Python from 2.7 and 3.3+
tested on 2.7, and 3.3+
An ``Enum`` is a set of symbolic names (members) bound to unique, constant
values. Within an enumeration, the members can be compared by identity, and
the enumeration itself can be iterated over.
A ``NamedTuple`` is a class-based, fixed-length tuple with a name for each
possible position accessible using attribute-access notation.
A ``NamedConstant`` is a class whose members cannot be rebound; it lacks all other
``Enum`` capabilities, however; consequently, it can have duplicate values.
There is also a ``module`` function that can insert the ``NamedConstant`` class
into ``sys.modules`` where it will appear to be a module whose top-level
names cannot be rebound.
Module Contents
---------------
``NamedTuple``
^^^^^^^^^^^^^^
Base class for ``creating NamedTuples``_, either by subclassing or via it's
functional API.
``NamedConstant``
^^^^^^^^^^^^^^^^^
NamedConstant class for creating groups of constants. These names cannot be rebound
to other values.
``Enum``
^^^^^^^^
Base class for creating enumerated constants. See section ``Enum Functional API``_
for an alternate construction syntax.
``IntEnum``
^^^^^^^^^^^
Base class for creating enumerated constants that are also subclasses of ``int``.
``AutoNumberEnum``
^^^^^^^^^^^^^^^^^^
Derived class that automatically assigns an ``int`` value to each member.
``OrderedEnum``
^^^^^^^^^^^^^^^
Derived class that adds ``<``, ``<=``, ``>=``, and ``>`` methods to an ``Enum``.
``UniqueEnum``
^^^^^^^^^^^^^^
Derived class that ensures only one name is bound to any one value.
``unique``
^^^^^^^^^^
Enum class decorator that ensures only one name is bound to any one value.
``constant``
^^^^^^^^^^^^
Descriptor to add constant values to an ``Enum``
``convert``
^^^^^^^^^^^
Helper to transform target global variables into an ``Enum``.
``enum``
^^^^^^^^
Helper for specifying keyword arguments when creating ``Enum`` members.
``export``
^^^^^^^^^^`
Helper for inserting ``Enum`` members into a namespace (usually ``globals()``.
``extend_enum``
^^^^^^^^^^^^^^^
Helper for adding new ``Enum`` members after creation.
``module``
^^^^^^^^^^
Function to take a ``NamedConstant`` or ``Enum`` class and insert it into
``sys.modules`` with the affect of a module whose top-level constant and
member names cannot be rebound.
``skip``
^^^^^^^^
Descriptor to add a normal (non-``Enum`` member) attribute to an ``Enum``
or ``NamedConstant``.
Creating an Enum
----------------
Enumerations can be created using the ``class`` syntax, which makes them
easy to read and write. To define an enumeration, subclass ``Enum`` as
follows::
>>> from aenum import Enum
>>> class Color(Enum):
... red = 1
... green = 2
... blue = 3
The ``Enum`` class is also callable, providing the following functional API::
>>> Animal = Enum('Animal', 'ant bee cat dog')
>>> Animal
<enum 'Animal'>
>>> Animal.ant
<Animal.ant: 1>
>>> Animal.ant.value
1
>>> list(Animal)
[<Animal.ant: 1>, <Animal.bee: 2>, <Animal.cat: 3>, <Animal.dog: 4>]
Creating NamedTuples
--------------------
Simple
^^^^^^
The most common way to create a new NamedTuple will be via the functional API::
>>> from aenum import NamedTuple
>>> Book = NamedTuple('Book', 'title author genre', module=__name__)
Advanced
^^^^^^^^
The simple method of creating ``NamedTuples`` requires always specifying all
possible arguments when creating instances; failure to do so will raise
exceptions.
However, it is possible to specify both docstrings and default values when
creating a ``NamedTuple`` using the class method::
>>> class Point(NamedTuple):
... x = 0, 'horizontal coordinate', 0
... y = 1, 'vertical coordinate', 0
...
>>> Point()
Point(x=0, y=0)
Creating NamedConstants
------------------
>>> class K(NamedConstant):
... PI = 3.141596
... TAU = 2 * PI
...
>>> K.TAU
6.283192
===========================================================================
aenum includes the new Python stdlib enum module available in Python 3.4
backported for previous versions of Python from 2.7 and 3.3+
tested on 2.7, and 3.3+
An ``Enum`` is a set of symbolic names (members) bound to unique, constant
values. Within an enumeration, the members can be compared by identity, and
the enumeration itself can be iterated over.
A ``NamedTuple`` is a class-based, fixed-length tuple with a name for each
possible position accessible using attribute-access notation.
A ``NamedConstant`` is a class whose members cannot be rebound; it lacks all other
``Enum`` capabilities, however; consequently, it can have duplicate values.
There is also a ``module`` function that can insert the ``NamedConstant`` class
into ``sys.modules`` where it will appear to be a module whose top-level
names cannot be rebound.
Module Contents
---------------
``NamedTuple``
^^^^^^^^^^^^^^
Base class for ``creating NamedTuples``_, either by subclassing or via it's
functional API.
``NamedConstant``
^^^^^^^^^^^^^^^^^
NamedConstant class for creating groups of constants. These names cannot be rebound
to other values.
``Enum``
^^^^^^^^
Base class for creating enumerated constants. See section ``Enum Functional API``_
for an alternate construction syntax.
``IntEnum``
^^^^^^^^^^^
Base class for creating enumerated constants that are also subclasses of ``int``.
``AutoNumberEnum``
^^^^^^^^^^^^^^^^^^
Derived class that automatically assigns an ``int`` value to each member.
``OrderedEnum``
^^^^^^^^^^^^^^^
Derived class that adds ``<``, ``<=``, ``>=``, and ``>`` methods to an ``Enum``.
``UniqueEnum``
^^^^^^^^^^^^^^
Derived class that ensures only one name is bound to any one value.
``unique``
^^^^^^^^^^
Enum class decorator that ensures only one name is bound to any one value.
``constant``
^^^^^^^^^^^^
Descriptor to add constant values to an ``Enum``
``convert``
^^^^^^^^^^^
Helper to transform target global variables into an ``Enum``.
``enum``
^^^^^^^^
Helper for specifying keyword arguments when creating ``Enum`` members.
``export``
^^^^^^^^^^`
Helper for inserting ``Enum`` members into a namespace (usually ``globals()``.
``extend_enum``
^^^^^^^^^^^^^^^
Helper for adding new ``Enum`` members after creation.
``module``
^^^^^^^^^^
Function to take a ``NamedConstant`` or ``Enum`` class and insert it into
``sys.modules`` with the affect of a module whose top-level constant and
member names cannot be rebound.
``skip``
^^^^^^^^
Descriptor to add a normal (non-``Enum`` member) attribute to an ``Enum``
or ``NamedConstant``.
Creating an Enum
----------------
Enumerations can be created using the ``class`` syntax, which makes them
easy to read and write. To define an enumeration, subclass ``Enum`` as
follows::
>>> from aenum import Enum
>>> class Color(Enum):
... red = 1
... green = 2
... blue = 3
The ``Enum`` class is also callable, providing the following functional API::
>>> Animal = Enum('Animal', 'ant bee cat dog')
>>> Animal
<enum 'Animal'>
>>> Animal.ant
<Animal.ant: 1>
>>> Animal.ant.value
1
>>> list(Animal)
[<Animal.ant: 1>, <Animal.bee: 2>, <Animal.cat: 3>, <Animal.dog: 4>]
Creating NamedTuples
--------------------
Simple
^^^^^^
The most common way to create a new NamedTuple will be via the functional API::
>>> from aenum import NamedTuple
>>> Book = NamedTuple('Book', 'title author genre', module=__name__)
Advanced
^^^^^^^^
The simple method of creating ``NamedTuples`` requires always specifying all
possible arguments when creating instances; failure to do so will raise
exceptions.
However, it is possible to specify both docstrings and default values when
creating a ``NamedTuple`` using the class method::
>>> class Point(NamedTuple):
... x = 0, 'horizontal coordinate', 0
... y = 1, 'vertical coordinate', 0
...
>>> Point()
Point(x=0, y=0)
Creating NamedConstants
------------------
>>> class K(NamedConstant):
... PI = 3.141596
... TAU = 2 * PI
...
>>> K.TAU
6.283192
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 Distributions
aenum-1.3.2.zip
(68.6 kB
view details)
aenum-1.3.2.tar.gz
(61.9 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
aenum-1.3.2-py2.py3-none-any.whl
(64.6 kB
view details)
File details
Details for the file aenum-1.3.2.zip.
File metadata
- Download URL: aenum-1.3.2.zip
- Upload date:
- Size: 68.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
29117e7794f515b7ee71674456b6e8eebd2a4df2394a453ab8890ccbf32a3f56
|
|
| MD5 |
016684f9ac3be41a13aa29825c02da2c
|
|
| BLAKE2b-256 |
ebb5900565b9e0d76b2acabab8ebc9af7aa6789bc4ea30a17b68ed169800992f
|
File details
Details for the file aenum-1.3.2.tar.gz.
File metadata
- Download URL: aenum-1.3.2.tar.gz
- Upload date:
- Size: 61.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2c50a657a85911de4115a1bd73c83ba5a04771a55649d7fb57084231d691032a
|
|
| MD5 |
4cfc97da12e4ca79ffc441543d40f5f3
|
|
| BLAKE2b-256 |
ae80a665a85b4b986e27243721a1a7fffc55f5cbcf92426d960ffcfeb5686a36
|
File details
Details for the file aenum-1.3.2-py2.py3-none-any.whl.
File metadata
- Download URL: aenum-1.3.2-py2.py3-none-any.whl
- Upload date:
- Size: 64.6 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c2190a69c8792d623f008bc8ef18ac3cd95d7561d1fe22ad245e9c50af8ccf3d
|
|
| MD5 |
ae24393019fdece114ebaad1b51abdd0
|
|
| BLAKE2b-256 |
1917e40816248bd8708aea4d15ddf4f485e1d9ad19f35c3028bcb41f51bb944f
|