129129# public symbols
130130__all__ = [
131131 "match" , "fullmatch" , "search" , "sub" , "subn" , "split" ,
132- "findall" , "finditer" , "compile" , "purge" , "escape" ,
132+ "findall" , "finditer" , "compile" , "purge" , "template" , " escape" ,
133133 "error" , "Pattern" , "Match" , "A" , "I" , "L" , "M" , "S" , "X" , "U" ,
134134 "ASCII" , "IGNORECASE" , "LOCALE" , "MULTILINE" , "DOTALL" , "VERBOSE" ,
135135 "UNICODE" , "NOFLAG" , "RegexFlag" ,
@@ -148,6 +148,8 @@ class RegexFlag:
148148 MULTILINE = M = _compiler .SRE_FLAG_MULTILINE # make anchors look for newline
149149 DOTALL = S = _compiler .SRE_FLAG_DOTALL # make dot match newline
150150 VERBOSE = X = _compiler .SRE_FLAG_VERBOSE # ignore whitespace and comments
151+ # sre extensions (experimental, don't rely on these)
152+ TEMPLATE = T = _compiler .SRE_FLAG_TEMPLATE # unknown purpose, deprecated
151153 DEBUG = _compiler .SRE_FLAG_DEBUG # dump pattern after compilation
152154 __str__ = object .__str__
153155 _numeric_repr_ = hex
@@ -229,6 +231,18 @@ def purge():
229231 _cache .clear ()
230232 _compile_repl .cache_clear ()
231233
234+ def template (pattern , flags = 0 ):
235+ "Compile a template pattern, returning a Pattern object, deprecated"
236+ import warnings
237+ warnings .warn ("The re.template() function is deprecated "
238+ "as it is an undocumented function "
239+ "without an obvious purpose. "
240+ "Use re.compile() instead." ,
241+ DeprecationWarning )
242+ with warnings .catch_warnings ():
243+ warnings .simplefilter ("ignore" , DeprecationWarning ) # warn just once
244+ return _compile (pattern , flags | T )
245+
232246# SPECIAL_CHARS
233247# closing ')', '}' and ']'
234248# '-' (a range in character set)
@@ -270,6 +284,13 @@ def _compile(pattern, flags):
270284 return pattern
271285 if not _compiler .isstring (pattern ):
272286 raise TypeError ("first argument must be string or compiled pattern" )
287+ if flags & T :
288+ import warnings
289+ warnings .warn ("The re.TEMPLATE/re.T flag is deprecated "
290+ "as it is an undocumented flag "
291+ "without an obvious purpose. "
292+ "Don't use it." ,
293+ DeprecationWarning )
273294 p = _compiler .compile (pattern , flags )
274295 if not (flags & DEBUG ):
275296 if len (_cache ) >= _MAXCACHE :
0 commit comments