Catalog is a data structure for storing complex enumeration. It provides a clean definition pattern and several options for member lookup.
Supports Python 2.7, 3.3+
pip install pycatalog
from catalog import Catalog class Color(Catalog): _attrs = 'value', 'label', 'other' red = 1, 'Red', 'stuff' blue = 2, 'Blue', 'things' # Access values as Attributes > Color.red.value 1 > Color.red.label 'Red' # Call to look up members by attribute value > Color('Blue', 'label') Color.blue # Calling without attribute specified assumes first attribute defined in `_attrs` > Color(1) Color.red
_attrs
: Defines names of attributes of members. (default: ['value']
)
_member_class
: Override the class used to create members. Create a custom member class by extending CatalogMember
.
_zip
: Return all members as a tuple. If attrs are provided as positional arguments, only those
attributes will be included, and in that order. Otherwise all attributes are included followed by
the member name.
> Color._zip() (('red', 1, 'Red', 'stuff'), ('blue', 2, 'Blue', 'things')) > Colot._zip('value', 'label') ((1, 'Red'), (2, 'Blue'))
1.2.0 - Add support for Python 2. (Wrong direction. I know)
1.1.1 - Add _zip
method
1.0.0 - Initial build and packaging