From: R. David Murray Date: Thu, 23 Dec 2010 20:35:46 +0000 (+0000) Subject: #1155362: allow hh:mm:ss-uuuu like we allow hh:mm:ss+uuuu in parsedate_tz X-Git-Tag: v3.2rc1~366 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=4a62e89728a9394af43a6b791140d90ee4b45c11;p=thirdparty%2FPython%2Fcpython.git #1155362: allow hh:mm:ss-uuuu like we allow hh:mm:ss+uuuu in parsedate_tz Original patch by Thomas Herve. --- diff --git a/Lib/email/_parseaddr.py b/Lib/email/_parseaddr.py index 699d418b3feb..41694f9b1aca 100644 --- a/Lib/email/_parseaddr.py +++ b/Lib/email/_parseaddr.py @@ -64,8 +64,10 @@ def parsedate_tz(data): if len(data) == 4: s = data[3] i = s.find('+') + if i == -1: + i = s.find('-') if i > 0: - data[3:] = [s[:i], s[i+1:]] + data[3:] = [s[:i], s[i:]] else: data.append('') # Dummy tz if len(data) < 5: diff --git a/Lib/email/test/test_email.py b/Lib/email/test/test_email.py index a54c1a3447a8..53c404247932 100644 --- a/Lib/email/test/test_email.py +++ b/Lib/email/test/test_email.py @@ -2277,6 +2277,16 @@ class TestMiscellaneous(TestEmailBase): eq(utils.parsedate_tz('5 Feb 2003 13:47:26 -0800'), (2003, 2, 5, 13, 47, 26, 0, 1, -1, -28800)) + def test_parsedate_no_space_before_positive_offset(self): + self.assertEqual(utils.parsedate_tz('Wed, 3 Apr 2002 14:58:26+0800'), + (2002, 4, 3, 14, 58, 26, 0, 1, -1, 28800)) + + def test_parsedate_no_space_before_negative_offset(self): + # Issue 1155362: we already handled '+' for this case. + self.assertEqual(utils.parsedate_tz('Wed, 3 Apr 2002 14:58:26-0800'), + (2002, 4, 3, 14, 58, 26, 0, 1, -1, -28800)) + + def test_parsedate_acceptable_to_time_functions(self): eq = self.assertEqual timetup = utils.parsedate('5 Feb 2003 13:47:26 -0800') diff --git a/Misc/NEWS b/Misc/NEWS index 9462981d9d19..faf5554880a9 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -11,6 +11,9 @@ Core and Builtins Library ------- +- Issue #1155362: email.utils.parsedate_tz now handles a missing space before + the '-' of a timezone field as well as before a '+'. + - Issue #4871: The zipfile module now gives a more useful error message if an attempt is made to use a string to specify the archive password.