]> granicus.if.org Git - python/commitdiff
Fix issue 1661: Flags argument silently ignored in re functions with compiled regexes.
authorRaymond Hettinger <python@rcn.com>
Wed, 19 Dec 2007 18:13:31 +0000 (18:13 +0000)
committerRaymond Hettinger <python@rcn.com>
Wed, 19 Dec 2007 18:13:31 +0000 (18:13 +0000)
Lib/re.py
Lib/test/test_re.py

index a33e34e4e1edec058a9951214b8fe85c11458634..39e81fdf4fd80bd0d8d2e1cb02d31a047226fa2f 100644 (file)
--- a/Lib/re.py
+++ b/Lib/re.py
@@ -224,6 +224,8 @@ def _compile(*key):
         return p
     pattern, flags = key
     if isinstance(pattern, _pattern_type):
+        if flags:
+            raise ValueError('Cannot process flags argument with a compiled pattern')
         return pattern
     if not sre_compile.isstring(pattern):
         raise TypeError, "first argument must be string or compiled pattern"
index aa403bac1a64e1dc4241524b247a72bdc6e468ee..f1fdfba6137323eb00bb373c672d9ebc4df1a557 100644 (file)
@@ -108,6 +108,14 @@ class ReTests(unittest.TestCase):
                 self.assertEqual(z, 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):
         # bug 776311 and friends
         self.assertEqual(re.sub('x', r'\0', 'x'), '\0')