From: Brett Cannon Date: Mon, 4 Jun 2007 00:14:06 +0000 (+0000) Subject: Backport of r55752: make time.strptime() behave better when whitespace is in X-Git-Tag: v2.5.2c1~280 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c9490e2fe9a21a738ca45930b3d97bdc0a7c5bce;p=thirdparty%2FPython%2Fcpython.git Backport of r55752: make time.strptime() behave better when whitespace is in the format arguments. --- diff --git a/Lib/_strptime.py b/Lib/_strptime.py index 476f9d8a36a0..8b3e64f27afa 100644 --- a/Lib/_strptime.py +++ b/Lib/_strptime.py @@ -253,7 +253,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 f4747521bff6..92c722ab1551 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.""" diff --git a/Misc/NEWS b/Misc/NEWS index a397e4d9fe62..10bf25c93db6 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -12,6 +12,9 @@ What's New in Python 2.5.2c1? Library ------- +- Bug #1730389: Have time.strptime() match spaces in a format argument with + ``\s+`` instead of ``\s*``. + - SF 1668596/1720897: distutils now copies data files even if package_dir is empty.