[Python-checkins] cpython (merge 3.2 -> default): Issue #14157: Fix time.strptime failing without a year on February 29th.

antoine.pitrou python-checkins at python.org
Thu May 10 20:20:57 CEST 2012


http://hg.python.org/cpython/rev/a5a254e8a291
changeset:   76865:a5a254e8a291
parent:      76863:99ef4501205b
parent:      76864:f2ea7505c0d7
user:        Antoine Pitrou <solipsis at pitrou.net>
date:        Thu May 10 20:18:46 2012 +0200
summary:
  Issue #14157: Fix time.strptime failing without a year on February 29th.
Patch by Hynek Schlawack.

files:
  Lib/_strptime.py          |  6 +++++-
  Lib/test/test_strptime.py |  3 +++
  Misc/NEWS                 |  3 +++
  3 files changed, 11 insertions(+), 1 deletions(-)


diff --git a/Lib/_strptime.py b/Lib/_strptime.py
--- a/Lib/_strptime.py
+++ b/Lib/_strptime.py
@@ -339,7 +339,7 @@
         raise ValueError("unconverted data remains: %s" %
                           data_string[found.end():])
 
-    year = 1900
+    year = None
     month = day = 1
     hour = minute = second = fraction = 0
     tz = -1
@@ -444,6 +444,10 @@
                     else:
                         tz = value
                         break
+    if year is None and month == 2 and day == 29:
+        year = 1904  # 1904 is first leap year of 20th century
+    elif year is None:
+        year = 1900
     # If we know the week of the year and what day of that week, we can figure
     # out the Julian day of the year.
     if julian == -1 and week_of_year != -1 and weekday != -1:
diff --git a/Lib/test/test_strptime.py b/Lib/test/test_strptime.py
--- a/Lib/test/test_strptime.py
+++ b/Lib/test/test_strptime.py
@@ -378,6 +378,9 @@
         need_escaping = ".^$*+?{}\[]|)("
         self.assertTrue(_strptime._strptime_time(need_escaping, need_escaping))
 
+    def test_feb29_on_leap_year_without_year(self):
+        time.strptime("Feb 29", "%b %d")
+
 class Strptime12AMPMTests(unittest.TestCase):
     """Test a _strptime regression in '%I %p' at 12 noon (12 PM)"""
 
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -23,6 +23,9 @@
 Library
 -------
 
+- Issue #14157: Fix time.strptime failing without a year on February 29th.
+  Patch by Hynek Schlawack.
+
 - Issue #14753: Make multiprocessing's handling of negative timeouts
   the same as it was in Python 3.2.
 

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list