]> granicus.if.org Git - python/commitdiff
bpo-30688: Import unicodedata only when needed. (GH-5606)
authorZhou Fangyi <fangyi.zhou@yuriko.moe>
Sat, 10 Feb 2018 06:59:29 +0000 (06:59 +0000)
committerSerhiy Storchaka <storchaka@gmail.com>
Sat, 10 Feb 2018 06:59:29 +0000 (08:59 +0200)
Importing unicodedata in sre_parse leads to failure in compilation.
unicodedata is unused during compilation, and is not compiled when this
file is imported. The error occurs when generating posix variables,
pprint is required. The dependency chain goes on like this:

sysconfig -> pprint -> re -> sre_compile -> sre_parse (this file)

This commits fixes compilation issues introduced by
2272cec13b53c405d86c45d404f035f201c0baef.
(Issue 30688, GH-5588)

Lib/sre_parse.py

index db01e844b43249abf974216a4ecd04af0c2e8ed8..7a172ff2fb14d5a0b245d12eb5370d5f7ccbffe4 100644 (file)
@@ -13,7 +13,6 @@
 # XXX: show string offset and offending character for all errors
 
 from sre_constants import *
-import unicodedata
 
 SPECIAL_CHARS = ".\\[{()*+?^$|"
 REPEAT_CHARS = "*+?{"
@@ -324,6 +323,7 @@ def _class_escape(source, escape):
             chr(c) # raise ValueError for invalid code
             return LITERAL, c
         elif c == "N" and source.istext:
+            import unicodedata
             # named unicode escape e.g. \N{EM DASH}
             if not source.match('{'):
                 raise source.error("missing {")
@@ -383,6 +383,7 @@ def _escape(source, escape, state):
             chr(c) # raise ValueError for invalid code
             return LITERAL, c
         elif c == "N" and source.istext:
+            import unicodedata
             # named unicode escape e.g. \N{EM DASH}
             if not source.match('{'):
                 raise source.error("missing {")