pythonwise / enum2.py

'''Yet another enum implemenation.'''
from collections import namedtuple


def enum(*fields, **kw):
    '''Return an object where each field is mappend to its location.

    You can specify `bitmask` keyword, then fields are mapped to bitwise
    location (for bit masks).
    '''
    op = (lambda x: 1 << x) if kw.get('bitmask', False) else (lambda x: x)
    return namedtuple('Enum', fields)(*(op(i) for i, _ in enumerate(fields)))


def _test():
    Colors = enum('Red', 'Green', 'Blue')
    print(Colors.Green)  # 1

    Interrupts = enum('TERM', 'KILL', 'HUP', 'INT', bitmask=True)
    print(Interrupts.HUP)  # 4


if __name__ == '__main__':
    _test()
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.