Fix issue 1661: Flags argument silently ignored in re functions with compiled regexes.
This commit is contained in:
parent
0f5e7bf304
commit
80016c9555
|
@ -224,6 +224,8 @@ def _compile(*key):
|
||||||
return p
|
return p
|
||||||
pattern, flags = key
|
pattern, flags = key
|
||||||
if isinstance(pattern, _pattern_type):
|
if isinstance(pattern, _pattern_type):
|
||||||
|
if flags:
|
||||||
|
raise ValueError('Cannot process flags argument with a compiled pattern')
|
||||||
return pattern
|
return pattern
|
||||||
if not sre_compile.isstring(pattern):
|
if not sre_compile.isstring(pattern):
|
||||||
raise TypeError, "first argument must be string or compiled pattern"
|
raise TypeError, "first argument must be string or compiled pattern"
|
||||||
|
|
|
@ -108,6 +108,14 @@ class ReTests(unittest.TestCase):
|
||||||
self.assertEqual(z, y)
|
self.assertEqual(z, y)
|
||||||
self.assertEqual(type(z), type(y))
|
self.assertEqual(type(z), type(y))
|
||||||
|
|
||||||
|
def test_bug_1661(self):
|
||||||
|
# Verify that flags do not get silently ignored with compiled patterns
|
||||||
|
pattern = re.compile('.')
|
||||||
|
self.assertRaises(ValueError, re.match, pattern, 'A', re.I)
|
||||||
|
self.assertRaises(ValueError, re.search, pattern, 'A', re.I)
|
||||||
|
self.assertRaises(ValueError, re.findall, pattern, 'A', re.I)
|
||||||
|
self.assertRaises(ValueError, re.compile, pattern, re.I)
|
||||||
|
|
||||||
def test_sub_template_numeric_escape(self):
|
def test_sub_template_numeric_escape(self):
|
||||||
# bug 776311 and friends
|
# bug 776311 and friends
|
||||||
self.assertEqual(re.sub('x', r'\0', 'x'), '\0')
|
self.assertEqual(re.sub('x', r'\0', 'x'), '\0')
|
||||||
|
|
Loading…
Reference in New Issue