diff --git a/Lib/sre.py b/Lib/sre.py index 390094aaa68..c04576bafa5 100644 --- a/Lib/sre.py +++ b/Lib/sre.py @@ -8,3 +8,6 @@ from re import * from re import __all__ + +# old pickles expect the _compile() reconstructor in this module +from re import _compile diff --git a/Lib/test/test_re.py b/Lib/test/test_re.py index 14a0acfc6bd..a8851804e42 100644 --- a/Lib/test/test_re.py +++ b/Lib/test/test_re.py @@ -414,6 +414,15 @@ def test_pickling(self): self.pickle_test(pickle) import cPickle self.pickle_test(cPickle) + # old pickles expect the _compile() reconstructor in sre module + import warnings + original_filters = warnings.filters[:] + try: + warnings.filterwarnings("ignore", "The sre module is deprecated", + DeprecationWarning) + from sre import _compile + finally: + warnings.filters = original_filters def pickle_test(self, pickle): oldpat = re.compile('a(?:b|(c|e){1,2}?|d)+?(.)') diff --git a/Misc/NEWS b/Misc/NEWS index 19b8f1cee84..e526ac332d5 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -217,6 +217,9 @@ Extension Modules Library ------- +- Bug #1675967: re patterns pickled with Python 2.4 and earlier can + now be unpickled with Python 2.5. + - Bug #1684254: webbrowser now uses shlex to split any command lines given to get(). It also detects when you use '&' as the last argument and creates a BackgroundBrowser then.