New submission from Andrew McNabb <[email protected]>:

Ordinarily, pickling a numpypy ndarray object fails because this isn't 
implemented 
yet, which makes perfect sense:

>>>> pickle.dumps(A)
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/usr/lib64/pypy-1.9/lib-python/2.7/pickle.py", line 1417, in dumps
    Pickler(file, protocol).dump(obj)
  File "/usr/lib64/pypy-1.9/lib-python/2.7/pickle.py", line 224, in dump
    self.save(obj)
  File "/usr/lib64/pypy-1.9/lib-python/2.7/pickle.py", line 306, in save
    rv = reduce(self.proto)
  File "/usr/lib64/pypy-1.9/lib-python/2.7/copy_reg.py", line 70, in _reduce_ex
    raise TypeError, "can't pickle %s objects" % base.__name__
TypeError: can't pickle ndarray objects
>>>>

However, pickling with protocol version -1 looks like it succeeds:

>>>> pickle.dumps(A, -1)
'\x80\x02cnumpypy\nndarray\nq\x00)\x81q\x01.'
>>>>

However, the output of this is basically gibberish and can't be loaded with 
loads. It 
might be better for dumps to crash than to give an invalid output.

----------
messages: 5265
nosy: amcnabb, pypy-issue
priority: bug
status: unread
title: pickle creates invalid output on numpypy ndarray objects instead of 
crashing

________________________________________
PyPy bug tracker <[email protected]>
<https://bugs.pypy.org/issue1390>
________________________________________
_______________________________________________
pypy-issue mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-issue

Reply via email to