[Python-Dev] Pickling of Enums

Ethan Furman ethan at stoneleaf.us
Tue Feb 18 19:01:42 CET 2014


On 02/18/2014 09:47 AM, Guido van Rossum wrote:
>
> I'm confused. Hasn't this all been decided by the PEP long ago?

The PEP only mentions pickling briefly, as in "the normal rules apply".  How pickling occurs is an implementation 
detail, and it turns out that pickling by name is more robust.

Serhiy, as part of his argument for using the _name_ instead of the _value_ for pickling, brought up the point that 
different systems could have different values for the same name.  If true in practice (and I believe it is) this raises 
the issue of aliases, which currently *cannot* be pickled by name because there is no distinct object for the alias.  If 
you ask for Color['alias_for_red'] you'll get Color.red instead.

Using identity comparison was part of the PEP.

I guess the question is which is more important?  Identity comparison or this (probably) rare use-case?  If we stick 
with identity I'm not aware of any work-around for pickling enum members that are aliases on one system, but distinct on 
another.

I've been talking about pickling specifically, but this applies to any serialization method.

--
~Ethan~


More information about the Python-Dev mailing list