self._decref()
# for pickling:
- def __getnewargs__(self):
- return (self._id,)
-
- # for pickling:
- def __getstate__(self):
- return None
+ def __reduce__(self):
+ return (type(self), (self._id,))
def _decref(self):
if not self._ownsref:
return hash(self._id)
# for pickling:
- def __getnewargs__(self):
- return (self._id,)
-
- # for pickling:
- def __getstate__(self):
- return None
+ def __reduce__(self):
+ return (type(self), (self._id,))
def _set_unbound(self, op, items=None):
assert not hasattr(self, '_unbound')
return other._id == self._id
# for pickling:
- def __getnewargs__(self):
- return (int(self._id),)
-
- # for pickling:
- def __getstate__(self):
- return None
+ def __reduce__(self):
+ return (type(self), (int(self._id),))
@property
def id(self):
def test_pickle(self):
interp = interpreters.create()
- data = pickle.dumps(interp)
- unpickled = pickle.loads(data)
- self.assertEqual(unpickled, interp)
+ for protocol in range(pickle.HIGHEST_PROTOCOL + 1):
+ with self.subTest(protocol=protocol):
+ data = pickle.dumps(interp, protocol)
+ unpickled = pickle.loads(data)
+ self.assertEqual(unpickled, interp)
class TestInterpreterIsRunning(TestBase):
def test_pickle(self):
ch, _ = channels.create()
- data = pickle.dumps(ch)
- unpickled = pickle.loads(data)
- self.assertEqual(unpickled, ch)
+ for protocol in range(pickle.HIGHEST_PROTOCOL + 1):
+ with self.subTest(protocol=protocol):
+ data = pickle.dumps(ch, protocol)
+ unpickled = pickle.loads(data)
+ self.assertEqual(unpickled, ch)
class TestSendChannelAttrs(TestBase):
def test_pickle(self):
_, ch = channels.create()
- data = pickle.dumps(ch)
- unpickled = pickle.loads(data)
- self.assertEqual(unpickled, ch)
+ for protocol in range(pickle.HIGHEST_PROTOCOL + 1):
+ with self.subTest(protocol=protocol):
+ data = pickle.dumps(ch, protocol)
+ unpickled = pickle.loads(data)
+ self.assertEqual(unpickled, ch)
class TestSendRecv(TestBase):
def test_pickle(self):
queue = queues.create()
- data = pickle.dumps(queue)
- unpickled = pickle.loads(data)
- self.assertEqual(unpickled, queue)
+ for protocol in range(pickle.HIGHEST_PROTOCOL + 1):
+ with self.subTest(protocol=protocol):
+ data = pickle.dumps(queue, protocol)
+ unpickled = pickle.loads(data)
+ self.assertEqual(unpickled, queue)
class TestQueueOps(TestBase):
--- /dev/null
+Fix pickling failures for protocols 0 and 1 for many objects realted to
+subinterpreters.