[Python-checkins] r59573 - in python/trunk/Lib: re.py test/test_re.py

raymond.hettinger python-checkins at python.org
Wed Dec 19 19:13:32 CET 2007


Author: raymond.hettinger
Date: Wed Dec 19 19:13:31 2007
New Revision: 59573

Modified:
   python/trunk/Lib/re.py
   python/trunk/Lib/test/test_re.py
Log:
Fix issue 1661: Flags argument silently ignored in re functions with compiled regexes.

Modified: python/trunk/Lib/re.py
==============================================================================
--- python/trunk/Lib/re.py	(original)
+++ python/trunk/Lib/re.py	Wed Dec 19 19:13:31 2007
@@ -224,6 +224,8 @@
         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"

Modified: python/trunk/Lib/test/test_re.py
==============================================================================
--- python/trunk/Lib/test/test_re.py	(original)
+++ python/trunk/Lib/test/test_re.py	Wed Dec 19 19:13:31 2007
@@ -108,6 +108,14 @@
                 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')


More information about the Python-checkins mailing list