Skip to content

Commit

Permalink
bpo-47211: Remove function re.template() and flag re.TEMPLATE (GH-32300)
Browse files Browse the repository at this point in the history
They were undocumented and never working.
  • Loading branch information
serhiy-storchaka committed Apr 6, 2022
1 parent da92240 commit b09184b
Show file tree
Hide file tree
Showing 8 changed files with 7 additions and 18 deletions.
8 changes: 1 addition & 7 deletions Lib/re/__init__.py
Expand Up @@ -129,7 +129,7 @@
# public symbols
__all__ = [
"match", "fullmatch", "search", "sub", "subn", "split",
"findall", "finditer", "compile", "purge", "template", "escape",
"findall", "finditer", "compile", "purge", "escape",
"error", "Pattern", "Match", "A", "I", "L", "M", "S", "X", "U",
"ASCII", "IGNORECASE", "LOCALE", "MULTILINE", "DOTALL", "VERBOSE",
"UNICODE", "NOFLAG", "RegexFlag",
Expand All @@ -148,8 +148,6 @@ class RegexFlag:
MULTILINE = M = _compiler.SRE_FLAG_MULTILINE # make anchors look for newline
DOTALL = S = _compiler.SRE_FLAG_DOTALL # make dot match newline
VERBOSE = X = _compiler.SRE_FLAG_VERBOSE # ignore whitespace and comments
# sre extensions (experimental, don't rely on these)
TEMPLATE = T = _compiler.SRE_FLAG_TEMPLATE # disable backtracking
DEBUG = _compiler.SRE_FLAG_DEBUG # dump pattern after compilation
__str__ = object.__str__
_numeric_repr_ = hex
Expand Down Expand Up @@ -231,10 +229,6 @@ def purge():
_cache.clear()
_compile_repl.cache_clear()

def template(pattern, flags=0):
"Compile a template pattern, returning a Pattern object"
return _compile(pattern, flags|T)

# SPECIAL_CHARS
# closing ')', '}' and ']'
# '-' (a range in character set)
Expand Down
2 changes: 0 additions & 2 deletions Lib/re/_compiler.py
Expand Up @@ -147,8 +147,6 @@ def _compile(data, pattern, flags):
else:
emit(ANY)
elif op in REPEATING_CODES:
if flags & SRE_FLAG_TEMPLATE:
raise error("internal: unsupported template operator %r" % (op,))
if _simple(av[2]):
emit(REPEATING_CODES[op][2])
skip = _len(code); emit(0)
Expand Down
2 changes: 0 additions & 2 deletions Lib/re/_constants.py
Expand Up @@ -202,7 +202,6 @@ def _makecodes(names):
}

# flags
SRE_FLAG_TEMPLATE = 1 # template mode (disable backtracking)
SRE_FLAG_IGNORECASE = 2 # case insensitive
SRE_FLAG_LOCALE = 4 # honour system locale
SRE_FLAG_MULTILINE = 8 # treat target as multiline string
Expand Down Expand Up @@ -245,7 +244,6 @@ def dump(f, d, prefix):
dump(f, ATCODES, "SRE")
dump(f, CHCODES, "SRE")

f.write("#define SRE_FLAG_TEMPLATE %d\n" % SRE_FLAG_TEMPLATE)
f.write("#define SRE_FLAG_IGNORECASE %d\n" % SRE_FLAG_IGNORECASE)
f.write("#define SRE_FLAG_LOCALE %d\n" % SRE_FLAG_LOCALE)
f.write("#define SRE_FLAG_MULTILINE %d\n" % SRE_FLAG_MULTILINE)
Expand Down
3 changes: 1 addition & 2 deletions Lib/re/_parser.py
Expand Up @@ -61,12 +61,11 @@
"x": SRE_FLAG_VERBOSE,
# extensions
"a": SRE_FLAG_ASCII,
"t": SRE_FLAG_TEMPLATE,
"u": SRE_FLAG_UNICODE,
}

TYPE_FLAGS = SRE_FLAG_ASCII | SRE_FLAG_LOCALE | SRE_FLAG_UNICODE
GLOBAL_FLAGS = SRE_FLAG_DEBUG | SRE_FLAG_TEMPLATE
GLOBAL_FLAGS = SRE_FLAG_DEBUG

class Verbose(Exception):
pass
Expand Down
6 changes: 3 additions & 3 deletions Lib/test/test_re.py
Expand Up @@ -2432,11 +2432,11 @@ def test_flags_repr(self):
"re.IGNORECASE|re.DOTALL|re.VERBOSE|0x100000")
self.assertEqual(
repr(~re.I),
"re.ASCII|re.LOCALE|re.UNICODE|re.MULTILINE|re.DOTALL|re.VERBOSE|re.TEMPLATE|re.DEBUG")
"re.ASCII|re.LOCALE|re.UNICODE|re.MULTILINE|re.DOTALL|re.VERBOSE|re.DEBUG|0x1")
self.assertEqual(repr(~(re.I|re.S|re.X)),
"re.ASCII|re.LOCALE|re.UNICODE|re.MULTILINE|re.TEMPLATE|re.DEBUG")
"re.ASCII|re.LOCALE|re.UNICODE|re.MULTILINE|re.DEBUG|0x1")
self.assertEqual(repr(~(re.I|re.S|re.X|(1<<20))),
"re.ASCII|re.LOCALE|re.UNICODE|re.MULTILINE|re.TEMPLATE|re.DEBUG|0xffe00")
"re.ASCII|re.LOCALE|re.UNICODE|re.MULTILINE|re.DEBUG|0xffe01")


class ImplementationTest(unittest.TestCase):
Expand Down
@@ -0,0 +1,2 @@
Remove undocumented and never working function ``re.template()`` and flag
``re.TEMPLATE``.
1 change: 0 additions & 1 deletion Modules/_sre/sre.c
Expand Up @@ -1323,7 +1323,6 @@ pattern_repr(PatternObject *obj)
const char *name;
int value;
} flag_names[] = {
{"re.TEMPLATE", SRE_FLAG_TEMPLATE},
{"re.IGNORECASE", SRE_FLAG_IGNORECASE},
{"re.LOCALE", SRE_FLAG_LOCALE},
{"re.MULTILINE", SRE_FLAG_MULTILINE},
Expand Down
1 change: 0 additions & 1 deletion Modules/_sre/sre_constants.h
Expand Up @@ -86,7 +86,6 @@
#define SRE_CATEGORY_UNI_NOT_WORD 15
#define SRE_CATEGORY_UNI_LINEBREAK 16
#define SRE_CATEGORY_UNI_NOT_LINEBREAK 17
#define SRE_FLAG_TEMPLATE 1
#define SRE_FLAG_IGNORECASE 2
#define SRE_FLAG_LOCALE 4
#define SRE_FLAG_MULTILINE 8
Expand Down

0 comments on commit b09184b

Please sign in to comment.