Issue #28637: Revert issue #28082, don't import enum in re
authorVictor Stinner <victor.stinner@gmail.com>
Mon, 7 Nov 2016 23:42:46 +0000 (00:42 +0100)
committerVictor Stinner <victor.stinner@gmail.com>
Mon, 7 Nov 2016 23:42:46 +0000 (00:42 +0100)
Importing the enum module in the re module slows down Python startup by 34%
when Python is run from a virtual environment, or more generally when the re
module is imported at startup but not the enum module.

Lib/re.py

index d321cff92c9cb5d2688cab51896a21d19adbb524..3fd600c5c5a97a2d3f95291ccf2f95f0a76fbb33 100644 (file)
--- a/Lib/re.py
+++ b/Lib/re.py
@@ -119,7 +119,6 @@ This module also defines an exception 'error'.
 
 """
 
-import enum
 import sre_compile
 import sre_parse
 import functools
@@ -139,26 +138,18 @@ __all__ = [
 
 __version__ = "2.2.1"
 
-class RegexFlag(enum.IntFlag):
-    ASCII = sre_compile.SRE_FLAG_ASCII # assume ascii "locale"
-    IGNORECASE = sre_compile.SRE_FLAG_IGNORECASE # ignore case
-    LOCALE = sre_compile.SRE_FLAG_LOCALE # assume current 8-bit locale
-    UNICODE = sre_compile.SRE_FLAG_UNICODE # assume unicode "locale"
-    MULTILINE = sre_compile.SRE_FLAG_MULTILINE # make anchors look for newline
-    DOTALL = sre_compile.SRE_FLAG_DOTALL # make dot match newline
-    VERBOSE = sre_compile.SRE_FLAG_VERBOSE # ignore whitespace and comments
-    A = ASCII
-    I = IGNORECASE
-    L = LOCALE
-    U = UNICODE
-    M = MULTILINE
-    S = DOTALL
-    X = VERBOSE
-    # sre extensions (experimental, don't rely on these)
-    TEMPLATE = sre_compile.SRE_FLAG_TEMPLATE # disable backtracking
-    T = TEMPLATE
-    DEBUG = sre_compile.SRE_FLAG_DEBUG # dump pattern after compilation
-globals().update(RegexFlag.__members__)
+# flags
+A = ASCII = sre_compile.SRE_FLAG_ASCII # assume ascii "locale"
+I = IGNORECASE = sre_compile.SRE_FLAG_IGNORECASE # ignore case
+L = LOCALE = sre_compile.SRE_FLAG_LOCALE # assume current 8-bit locale
+U = UNICODE = sre_compile.SRE_FLAG_UNICODE # assume unicode "locale"
+M = MULTILINE = sre_compile.SRE_FLAG_MULTILINE # make anchors look for newline
+S = DOTALL = sre_compile.SRE_FLAG_DOTALL # make dot match newline
+X = VERBOSE = sre_compile.SRE_FLAG_VERBOSE # ignore whitespace and comments
+
+# sre extensions (experimental, don't rely on these)
+T = TEMPLATE = sre_compile.SRE_FLAG_TEMPLATE # disable backtracking
+DEBUG = sre_compile.SRE_FLAG_DEBUG # dump pattern after compilation
 
 # sre exception
 error = sre_compile.error