mirror of
				https://github.com/python/cpython.git
				synced 2025-10-30 21:21:22 +00:00 
			
		
		
		
	bpo-47211: Remove function re.template() and flag re.TEMPLATE (GH-32300)
They were undocumented and never working.
This commit is contained in:
		
							parent
							
								
									da922409ac
								
							
						
					
					
						commit
						b09184bf05
					
				
					 8 changed files with 7 additions and 18 deletions
				
			
		|  | @ -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", | ||||
|  | @ -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 | ||||
|  | @ -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) | ||||
|  |  | |||
|  | @ -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) | ||||
|  |  | |||
|  | @ -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 | ||||
|  | @ -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) | ||||
|  |  | |||
|  | @ -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 | ||||
|  |  | |||
|  | @ -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): | ||||
|  |  | |||
|  | @ -0,0 +1,2 @@ | |||
| Remove undocumented and never working function ``re.template()`` and flag | ||||
| ``re.TEMPLATE``. | ||||
|  | @ -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}, | ||||
|  |  | |||
|  | @ -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 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Serhiy Storchaka
						Serhiy Storchaka