New submission from sbt <shibt...@gmail.com>: If you pickle an array object on python 3 the typecode is encoded as a unicode string rather than as a byte string. This makes python 2 reject the pickle.
######################################### Python 3.3.0a0 (default, Dec 8 2011, 17:56:13) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import pickle, array >>> pickle.dumps(array.array('i', [1,2,3]), 2) b'\x80\x02carray\narray\nq\x00X\x01\x00\x00\x00iq\x01]q\x02(K\x01K\x02K\x03e\x86q\x03Rq\x04.' ######################################### Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import pickle >>> pickle.loads(b'\x80\x02carray\narray\nq\x00X\x01\x00\x00\x00iq\x01]q\x02(K\x01K\x02K\x03e\x86q\x03Rq\x04.') Traceback (most recent call last): File "<stdin>", line 1, in <module> File "c:\Python27\lib\pickle.py", line 1382, in loads return Unpickler(file).load() File "c:\Python27\lib\pickle.py", line 858, in load dispatch[key](self) File "c:\Python27\lib\pickle.py", line 1133, in load_reduce value = func(*args) TypeError: must be char, not unicode ---------- components: Library (Lib) messages: 149092 nosy: sbt priority: normal severity: normal status: open title: Array objects pickled in 3.x with protocol <=2 are unpickled incorrectly in 2.x type: behavior versions: Python 3.2, Python 3.3 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue13566> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com