Commit c57e6e2e authored by Anthony Sottile's avatar Anthony Sottile Committed by Serhiy Storchaka

bpo-35312: Make lib2to3.pgen2.parse.ParseError round-trip pickle-able. (GH-10710)

parent d4f9cf55
...@@ -24,6 +24,9 @@ class ParseError(Exception): ...@@ -24,6 +24,9 @@ class ParseError(Exception):
self.value = value self.value = value
self.context = context self.context = context
def __reduce__(self):
return type(self), (self.msg, self.type, self.value, self.context)
class Parser(object): class Parser(object):
"""Parser engine. """Parser engine.
......
...@@ -622,6 +622,18 @@ class TestLiterals(GrammarTest): ...@@ -622,6 +622,18 @@ class TestLiterals(GrammarTest):
self.validate(s) self.validate(s)
class TestPickleableException(unittest.TestCase):
def test_ParseError(self):
err = ParseError('msg', 2, None, (1, 'context'))
for proto in range(pickle.HIGHEST_PROTOCOL + 1):
err2 = pickle.loads(pickle.dumps(err, protocol=proto))
self.assertEqual(err.args, err2.args)
self.assertEqual(err.msg, err2.msg)
self.assertEqual(err.type, err2.type)
self.assertEqual(err.value, err2.value)
self.assertEqual(err.context, err2.context)
def diff_texts(a, b, filename): def diff_texts(a, b, filename):
a = a.splitlines() a = a.splitlines()
b = b.splitlines() b = b.splitlines()
......
Make ``lib2to3.pgen2.parse.ParseError`` round-trip pickle-able. Patch by Anthony Sottile.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment