I'm confused. AFAICT enums are pickled by value too. What am I missing? Are we confused about terminology or about behavior? (I'm just guessing that the pickling happens by value because I don't see the string AF_INET.)
$ python3 Python 3.4.0rc1+ (default:2ba583191550, Feb 11 2014, 16:05:24) [GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.2.79)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import socket, pickle, json, pickletools >>> socket.AF_INET <AddressFamily.AF_INET: 2> >>> pickle.dumps(socket.AF_INET) b'\x80\x03csocket\nAddressFamily\nq\x00K\x02\x85q\x01Rq\x02.' >>> json.dumps(socket.AF_INET) '2' >>> pickletools.dis(pickle.dumps(socket.AF_INET)) 0: \x80 PROTO 3 2: c GLOBAL 'socket AddressFamily' 24: q BINPUT 0 26: K BININT1 2 28: \x85 TUPLE1 29: q BINPUT 1 31: R REDUCE 32: q BINPUT 2 34: . STOP highest protocol among opcodes = 2 >>> On Tue, Feb 18, 2014 at 10:16 AM, Ethan Furman <et...@stoneleaf.us> wrote: > On 02/18/2014 10:05 AM, Guido van Rossum wrote: > >> Hm. But there's an implementation that has made it unscathed through >> several betas and an RC. AFAICT that beta pickles >> enums by value. And I happen to think that that is the better choice (but >> I don't have time to explain this gut feeling >> until after 3.4 has been released). >> > > This conversation wasn't in the PEP, but as I recall we decided to go with > value instead of name for json because the receiving end may not be running > Python. > > Is having json do it one way and pickle another a problem? > > -- > ~Ethan~ > -- --Guido van Rossum (python.org/~guido)
_______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com