[Python-Dev] Pickling failure on Enums (original) (raw)
Ethan Furman ethan at stoneleaf.us
Tue May 14 23:13:00 CEST 2013
- Previous message: [Python-Dev] Pickling failure on Enums
- Next message: [Python-Dev] Pickling failure on Enums
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 05/14/2013 01:58 PM, Guido van Rossum wrote:
On Tue, May 14, 2013 at 1:09 PM, Ethan Furman <ethan at stoneleaf.us> wrote:
On 05/13/2013 11:32 AM, Guido van Rossum wrote:
But now you enter a different phase of your project, or one of your collaborators does, or perhaps you've released your code on PyPI and one of your users does. So someone tries to pickle some class instance that happens to contain an unpicklable enum. That's not a great experience. Pickling and unpickling errors are often remarkably hard to debug. (Especially the latter, so I have privately admonished Ethan to ensure that if the getframe hack doesn't work, the pickle failure should happen at pickling time, not at unpickle time.) I can get pickle failure on members created using the functional syntax with no module set; That's the case I care most about.
Good, 'cause that one is handled. :)
I cannot get pickle failure on those same classes; I suppose you mean "if you create the same enums using class syntax"? Sounds fine to me.
No. Example class:
--> Example = Enum('Example', 'example ie eg') # no module name given, frame hack fails
--> pickle(Example.ie)
blows up
--# pickle(Example)
succeeds here, but unpickle will fail
I cannot get pickle failure on class syntax enums that inherit complex types (such as the NEI class in the tests). Is the NEI base class picklable?
No. If it is, then the derived enum is also picklable (at least the variation I have tested, which is when the NEI base class has getnewargs).
I'm really hoping you'll say that can be a documentation issue. ;)
--
Ethan
- Previous message: [Python-Dev] Pickling failure on Enums
- Next message: [Python-Dev] Pickling failure on Enums
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]