From 5df5286abda57a0b3865d4fc3e25aaf1a820ef49 Mon Sep 17 00:00:00 2001 From: Zhou Fangyi Date: Sat, 10 Feb 2018 06:59:29 +0000 Subject: [PATCH] bpo-30688: Import unicodedata only when needed. (GH-5606) 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 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Lib/sre_parse.py b/Lib/sre_parse.py index db01e844b43..7a172ff2fb1 100644 --- a/Lib/sre_parse.py +++ b/Lib/sre_parse.py @@ -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 {")