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

This commit is contained in:
Anthony Sottile 2018-11-27 10:39:49 -08:00 committed by Serhiy Storchaka
parent d4f9cf5545
commit c57e6e2e52
3 changed files with 16 additions and 0 deletions

View File

@ -24,6 +24,9 @@ class ParseError(Exception):
self.value = value
self.context = context
def __reduce__(self):
return type(self), (self.msg, self.type, self.value, self.context)
class Parser(object):
"""Parser engine.

View File

@ -622,6 +622,18 @@ class TestLiterals(GrammarTest):
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):
a = a.splitlines()
b = b.splitlines()

View File

@ -0,0 +1 @@
Make ``lib2to3.pgen2.parse.ParseError`` round-trip pickle-able. Patch by Anthony Sottile.