bpo-32034: Make IncompleteReadError & LimitOverrunError pickleable #4409 · python/cpython@43605e6 · GitHub
Skip to content

Commit 43605e6

Browse files
author
Yury Selivanov
authored
bpo-32034: Make IncompleteReadError & LimitOverrunError pickleable #4409
1 parent 4bd41c9 commit 43605e6

3 files changed

Lines changed: 25 additions & 0 deletions

File tree

Lib/asyncio/streams.py

Lines changed: 6 additions & 0 deletions

Lib/test/test_asyncio/test_streams.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import gc
44
import os
55
import queue
6+
import pickle
67
import socket
78
import sys
89
import threading
@@ -845,6 +846,23 @@ def test___repr__transport(self):
845846
stream._transport.__repr__.return_value = "<Transport>"
846847
self.assertEqual("<StreamReader t=<Transport>>", repr(stream))
847848

849+
def test_IncompleteReadError_pickleable(self):
850+
e = asyncio.IncompleteReadError(b'abc', 10)
851+
for proto in range(pickle.HIGHEST_PROTOCOL + 1):
852+
with self.subTest(pickle_protocol=proto):
853+
e2 = pickle.loads(pickle.dumps(e, protocol=proto))
854+
self.assertEqual(str(e), str(e2))
855+
self.assertEqual(e.partial, e2.partial)
856+
self.assertEqual(e.expected, e2.expected)
857+
858+
def test_LimitOverrunError_pickleable(self):
859+
e = asyncio.LimitOverrunError('message', 10)
860+
for proto in range(pickle.HIGHEST_PROTOCOL + 1):
861+
with self.subTest(pickle_protocol=proto):
862+
e2 = pickle.loads(pickle.dumps(e, protocol=proto))
863+
self.assertEqual(str(e), str(e2))
864+
self.assertEqual(e.consumed, e2.consumed)
865+
848866

849867
if __name__ == '__main__':
850868
unittest.main()
Lines changed: 1 addition & 0 deletions

0 commit comments

Comments
 (0)