(Please forward this to your CEO, because this is urgent. Thanks!)
This is Jonathan Qin---the manager of domain name registration and solution center in China. On February 29th, 2016, we received an application from Baiyao Holdings Ltd requested “python” as their internet keyword and China (CN) domain names. But after checking it, we find this name conflict with your company name or trademark. In order to deal with this matter better, it‘s necessary to send an email to you and confirm whether this company is your distributor or business partner in China?
Cname (Head Office)
8008, Tianan Building,
No. 1399 Jinqiao Road,
As BDFL-Delegate, I am officially accepting PEP 493.
Congratulations Nick, Robert, and MAL. I want to personally thank Nick for
taking my concerns into consideration, and re-working the PEP to resolve
them. Thanks also to everyone who contributed to the discussion.
The pickle and the copy modules use the same protocol. The reconstruct
the object by data returned by the __reduce_ex__/__reduce__ method, but
does it in different and incompatible way.
In general case the result of __reduce__ includes:
1) The class of the object and arguments to __new__().
2) The state passed to __setstate__() (or a dict of attributes and
possible a tuple of __slots__ values).
3) An iterator of list items that should be appended to the object by
calling extend() or append().
4) An iterator of key-value value pairs that should be set in the object
by calling update() or __setitem__().
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
The behaviour of copy was changed in issue1100562  (see also
issue1099746 ). But this caused a problem with other classes (see
issue10131 ). Changing either pickle or copy for sure will break
existing code. But keeping current discrepancy makes existing code not
correct and makes too hard to write correct code that works with both
pickle and copy. For sure most existing code for which it is matter is
The behaviour of default reducing method for dicts/lists subclasses is
not documented .
We should choose in what direction we have to break backward
compatibility. The behaviour of the copy module looks more natural. It
allows to work correctly most naive implementations (as in ). The
pickle module is more used and breaking it can cause more harm. But the
order of object reconstruction is determined at pickling time, thus
already pickled data will be reconstructed with old order. The change
will only affect new pickles.