On 03/11/2013 09:55 AM, Paul Moore wrote:
On 11 March 2013 16:18, Ethan Furman <ethan@stoneleaf.us> wrote:
First, I offer my apologies to all who are still battle-weary from the last flurry of enum threads. [...] This new PEP proposes an enum module that handles all those use cases, and makes it possible to handle others as well.
One thing that is not discussed in the PEP (at least from my quick reading of it) is the issue of transitivity of equality
There are four types you can inherit from: Enum, BitMask, Sequence, and String. Enum, BitMask, and String will not compare equal with integers, and Enum, BitMask and Sequence will not compare equal with strings; in fact, Enum and Bitmask, not being based on an existing data type, will not compare equal with anything that is not in their own enumeration group or its superclass. Sequences will compare equal with ints, because they are ints; they will also compare equal against other Sequence enumerations, as they are also ints. Same deal with Strings and strs. Those two are basically NamedValues in a fancy enum package.
Personally, I find this behaviour unacceptable. The lack of a good way of dealing with this issue (I don't particularly like the "just use int()" or special value property approaches either) seems to be key to why people are failing to agree on an implementation...
Hopefully that's clearer now.
At the very least, there should be a section in the PEP addressing the discussion over this.
I'll get it added (probably next weekend, when I make any other necessary changes as well).
The motivation section isn't particularly strong, either. There's nothing there that would persuade me to use enums. In general, the proposal seems geared mainly at people who *already* want to use enums, but for some reason aren't comfortable with using a 3rd party package. But maybe that just implies that I'm not part of the target audience for the feature, in which case fine (I don't have to use it, obviously...)
My main use case is an easy mapping from names to numbers, but that's not everyone's. -- ~Ethan~