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.
diff --git a/Lib/test/test_buffer.py b/Lib/test/test_buffer.py
index a02c5f7..ccfd1e9 100644
--- a/Lib/test/test_buffer.py
+++ b/Lib/test/test_buffer.py
@@ -4,6 +4,8 @@
"""
+import copy
+import pickle
import sys
import unittest
from test import test_support
@@ -35,6 +37,17 @@
buf = buffer(data, sys.maxsize, sys.maxsize)
self.assertEqual(buf[:4096], "")
+ def test_copy(self):
+ buf = buffer(b'abc')
+ with self.assertRaises(TypeError):
+ copy.copy(buf)
+
+ def test_pickle(self):
+ buf = buffer(b'abc')
+ for proto in range(pickle.HIGHEST_PROTOCOL + 1):
+ with self.assertRaises(TypeError):
+ pickle.dumps(buf, proto)
+
def test_main():
with test_support.check_py3k_warnings(("buffer.. not supported",