ANN: enum 0.4 - Enumerations in Python

Ben Finney bignose+hates-spam at
Tue Dec 20 06:12:40 CET 2005

Howdy all,

I've uploaded enum 0.4 to the Cheeseshop.


Main changes:

Comparing values from an enumeration against a value not from the same
enumeration will now succeed (previous versions raised an exception)::

    >>> from enum import Enum
    >>> Weekdays = Enum('sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat')
    >>> pizza_night = Weekdays.fri
    >>> pizza_night == Weekdays.fri
    >>> pizza_night == Weekdays.tue
    >>> pizza_night == "fri"
    >>> pizza_night == 5

This is done by using the ``NotImplemented`` return value for the
comparison against values that are not from the same enumeration. The
Python interpreter will then attempt other fallbacks instead of

This allows the values from an enumeration to be sequenced or compared
among heterogeneous values, such as a list::

    >>> things = [23, Weekdays.tue, "spam"]
    >>> things.sort()
    >>> Weekdays.tue in things
    >>> Weekdays.fri in things

Package description:

"""Robust enumerated type support in Python

This package provides a module for robust enumerations in Python.

An enumeration object is created with a sequence of string arguments
to the Enum() constructor::

    >>> from enum import Enum
    >>> Colours = Enum('red', 'blue', 'green')
    >>> Weekdays = Enum('mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun')

The return value is an immutable sequence object with a value for each
of the string arguments. Each value is also available as an attribute
named from the corresponding string argument::

    >>> pizza_night = Weekdays[4]
    >>> shirt_colour =

The values are constants that can be compared only with values from
the same enumeration; comparison with other values will invoke
Python's fallback comparisons.

    >>> pizza_night == Weekdays.fri
    >>> shirt_colour >
    >>> shirt_colour == "green"

Each value from an enumeration exports its sequence index
as an integer, and can be coerced to a simple string matching the
original arguments used to create the enumeration::

    >>> str(pizza_night)
    >>> shirt_colour.index

 \           "It ain't so much the things we don't know that get us in |
  `\      trouble. It's the things we know that ain't so."  -- Artemus |
_o__)                                  Ward (1834-67), U.S. journalist |
Ben Finney

More information about the Python-announce-list mailing list