diff options
| author | Brett Cannon <bcannon@gmail.com> | 2007-06-03 23:13:41 +0000 |
|---|---|---|
| committer | Brett Cannon <bcannon@gmail.com> | 2007-06-03 23:13:41 +0000 |
| commit | f7188cefb31371394201ec7f1fd321936f5b37a1 (patch) | |
| tree | 3868f9fb097070f6eb3f20bdb265b1cd92cdcb1b | |
| parent | 994ebed50cb6dbdf96e63ed9f2c0697f2094f262 (diff) | |
| download | cpython-git-f7188cefb31371394201ec7f1fd321936f5b37a1.tar.gz | |
Make _strptime.TimeRE().pattern() use ``\s+`` for matching whitespace instead
of ``\s*``. This prevents patterns from "stealing" bits from other patterns in
order to make a match work.
Closes bug #1730389. Will be backported.
| -rw-r--r-- | Lib/_strptime.py | 2 | ||||
| -rw-r--r-- | Lib/test/test_strptime.py | 9 | ||||
| -rw-r--r-- | Misc/NEWS | 3 |
3 files changed, 13 insertions, 1 deletions
diff --git a/Lib/_strptime.py b/Lib/_strptime.py index 9e7823abdd..166cf82203 100644 --- a/Lib/_strptime.py +++ b/Lib/_strptime.py @@ -250,7 +250,7 @@ class TimeRE(dict): regex_chars = re_compile(r"([\\.^$*+?\(\){}\[\]|])") format = regex_chars.sub(r"\\\1", format) whitespace_replacement = re_compile('\s+') - format = whitespace_replacement.sub('\s*', format) + format = whitespace_replacement.sub('\s+', format) while '%' in format: directive_index = format.index('%')+1 processed_format = "%s%s%s" % (processed_format, diff --git a/Lib/test/test_strptime.py b/Lib/test/test_strptime.py index f4747521bf..92c722ab15 100644 --- a/Lib/test/test_strptime.py +++ b/Lib/test/test_strptime.py @@ -190,6 +190,15 @@ class TimeRETests(unittest.TestCase): "locale data that contains regex metacharacters is not" " properly escaped") + def test_whitespace_substitution(self): + # When pattern contains whitespace, make sure it is taken into account + # so as to not allow to subpatterns to end up next to each other and + # "steal" characters from each other. + pattern = self.time_re.pattern('%j %H') + self.failUnless(not re.match(pattern, "180")) + self.failUnless(re.match(pattern, "18 0")) + + class StrptimeTests(unittest.TestCase): """Tests for _strptime.strptime.""" @@ -222,6 +222,9 @@ Core and builtins Library ------- +- Bug #1730389: Change time.strptime() to use ``\s+`` instead of ``\s*`` when + matching spaces in the specified format argument. + - SF 1668596/1720897: distutils now copies data files even if package_dir is empty. |
