# HG changeset patch # Parent 8d78cd7c4a9e5e73d7f3f935a393b32cfed507a4 Issue #27364: Deprecate invalid unicode escape sequences diff -r 8d78cd7c4a9e Lib/test/test_unicode.py --- a/Lib/test/test_unicode.py Sun Jun 26 00:09:19 2016 +0300 +++ b/Lib/test/test_unicode.py Mon Jun 27 01:29:17 2016 +0000 @@ -2729,6 +2729,10 @@ support.check_free_after_iterating(self, iter, str) support.check_free_after_iterating(self, reversed, str) + def test_invalid_sequences(self): + for letter in "deghijklmopqswyzABCDEFGHIJKLMOPQRSTVWXYZ": + with self.assertWarns(DeprecationWarning): + eval(r"'\%s'" % letter) class StringModuleTest(unittest.TestCase): def test_formatter_parser(self): diff -r 8d78cd7c4a9e Objects/unicodeobject.c --- a/Objects/unicodeobject.c Sun Jun 26 00:09:19 2016 +0300 +++ b/Objects/unicodeobject.c Mon Jun 27 01:29:17 2016 +0000 @@ -6022,6 +6022,11 @@ goto error; } else { + /* Deprecate invalid escape sequences */ + if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, + "invalid escape sequence '%c'", c) < 0) { + goto onError; + } WRITECHAR('\\'); WRITECHAR((unsigned char)s[-1]); }