On 01.03.16 18:34, Ethan Furman wrote:
On 03/01/2016 03:14 AM, Serhiy Storchaka wrote:
The difference is that the copy module sets object's state before adding
items and key-value pairs, but the pickle module sets object's state
after adding items and key-value pairs. If append() or __setitem__()
depend on the state of the object, the pickling is incompatible with the
copying.

Aren't there tests to ensure the unpickled/copied object are identical
to the original object?

We have no pickle/copy tests for every class. And of course we can't test third-party classes. But even if write tests and they will fail, what to do? The problem is that for some classes pickle and copy contradict. An implementation that works with copy doesn't work with pickle or vice verse.

Under which circumstances would they be different?

If append() or __setitem__() depend on the state or change the state. See examples in issue1099746 and issue10131.

_______________________________________________
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

Reply via email to