Issue #22995: Instances of extension types with a state that aren't

subclasses of list or dict and haven't implemented any pickle-related
methods (__reduce__, __reduce_ex__, __getnewargs__, __getnewargs_ex__,
or __getstate__), can no longer be pickled.  Including memoryview.
This commit is contained in:
Serhiy Storchaka 2015-12-25 21:04:29 +02:00
parent bc4ded9537
commit f81be8aa3f
4 changed files with 67 additions and 15 deletions

View file

@ -11,6 +11,8 @@ import gc
import weakref
import array
import io
import copy
import pickle
class AbstractMemoryTests:
@ -519,6 +521,17 @@ class OtherTest(unittest.TestCase):
m2 = m1[::-1]
self.assertEqual(m2.hex(), '30' * 200000)
def test_copy(self):
m = memoryview(b'abc')
with self.assertRaises(TypeError):
copy.copy(m)
def test_pickle(self):
m = memoryview(b'abc')
for proto in range(pickle.HIGHEST_PROTOCOL + 1):
with self.assertRaises(TypeError):
pickle.dumps(m, proto)
if __name__ == "__main__":
unittest.main()