[Python-Dev] Pickling of Enums

Serhiy Storchaka storchaka at gmail.com
Tue Feb 18 19:21:01 CET 2014


18.02.14 19:11, Ethan Furman написав(ла):
> There is one more wrinkle to pickling by name (it's actually still there
> in pickle by value, just more obvious in pickle by name) -- aliases.  It
> seems to me the most common scenario to having a name represent
> different values on different systems is when on system A they are
> different, but on system B they are the same:
>
> System A:
>
>    class SystemEnum(Enum):
>        value1 = 1
>        value2 = 2
>
> System B:
>
>    class SystemEnum(Enum):
>        value1 = 1
>        value2 = 1
>
> If you're on system B there is no way to pickle (by name or value)
> value2 such that we get value2 back on system A.  The only way I know of
> to make that work would be to dispense with identity comparison, use the
> normal == comparison, and have aliases actually be separate objects (we
> could still use singletons, but it would be one per name instead of the
> current one per value, and it would also be an implementation detail).
>
> Thoughts?

There are aliases and aliases. If there are modern name and deprecated 
name, then it should be one object referred by different names on all 
systems. If there are different entities with accidentally equal values, 
then they should be different objects.



More information about the Python-Dev mailing list