OK, how about using encoding=bytes (yes, the type object!)? Or 'bytes' ? --Guido van Rossum (sent from Android phone) On Mar 16, 2012 2:19 PM, "Merlijn van Deen" <valhall...@arctus.nl> wrote:
> Hi Guido, > > Let me start with thanking you for your long reply. It has clarified > some points to me, but I am still not certain about some others. I > hope I can clarify why I'm confused about this issue in the following. > > First of all, let me clarify that I wrote my original mail not as 'the > guy who wants to serialize stuff' but as 'the guy who wonders what the > best way to implement it in python is'. Of course, 'not' is a > reasonable answer to that question. > > On 13 March 2012 23:08, Guido van Rossum <gu...@python.org> wrote: > > That was probably written before Python 3. Python 3 also dropped the > > long-term backwards compatibilities for the language and stdlib. I am > > certainly fine with adding a warning to the docs that this guarantee > > does not apply to the Python 2/3 boundary. But I don't think we should > > map 8-bit str instances from Python 2 to bytes in Python 3. > > Yes, backwards compatibility was dropped, but the current pickle > module tries to work around this by using a module mapping [1] and > aids in loading 8-bit str instances by asking for an encoding [2]. > Last, but not least, we can /write/ old version pickles, for which > the same module mapping is used, but in reverse. As such, the module > suggests in many ways that it should be possible to interchange > pickles between python 2 and python 3. > > > My snipe was mostly in reference to the many other things that can go > > wrong with pickled data as your environment evolves (...) > I understand your point. However, my interpretation of this issue > always was 'if you only pickle built-in types, you'll be fine' - which > is apparently wrong. > > > Essentially - my point is this: considering the pickle module is > already using several compatibility tricks and considering I am not > the only one who would like to read binary data from a pickle in > python 3 - even though it might not be the 'right' way to do it - what > is there /against/ adding the possibility? > > Last but not least, this is what people are now doing instead: [1] > s = pickle.load(f, encoding='latin1') > b = s.encode('latin1') > print(zlib.decompress(b)) > > Which hurts my eyes. > > In any case - again, thanks for taking the time to respond. I hope I > somewhat clarified why I was/am somewhat confused on the issue, and > the reasons why I think that it is still a good idea ;-) > > Best, > Merlijn > > [1] http://hg.python.org/cpython/file/8b2668e60aef/Lib/_compat_pickle.py > [2] http://docs.python.org/dev/library/pickle.html#module-interface > [3] > http://stackoverflow.com/questions/4281619/unpicking-data-pickled-in-python-2-5-in-python-3-1-then-uncompressing-with-zlib >
_______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com