diff options
-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 9e7823a..166cf82 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 f474752..92c722a 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. |