T
TYR
A server that runs one of my programs was upgraded to Debian Lenny
last night, which moved it from Python 2.4.4 to 2.5.2. This caused
immediate trouble. At one point, data is parsed from a Web page, and
among other things a time date group is collected. This is in a nice
human readable format, but I want it in RFC 822 format because it's
going to be used in an outbound GeoRSS feed and it's a requirement.
So the time group is split up with a regex, merged into one string,
and fed to time.strptime() with a fitting format, then passed to
Utils.formatdate() and used. The time group looks like this:
25/03/2009 21:05:00
Code:
if airline not in whitelist:
retime = re.split('[-\s:/]', rawtime)
timeinput = ''.join(retime)
t = time.strptime(timeinput, "%d %m %Y %H %M %S")
timeout = Utils.formatdate(t)
Error:
Traceback (most recent call
last):
File "/home/yorksranter/vfeed-data/bothv7.py", line 46, in
<module>
t = time.strptime(timeinput, "%d %m %Y %H %M
%S")
File "/usr/lib/python2.5/_strptime.py", line 330, in
strptime
(data_string,
format))
ValueError: time data did not match format: data=25032009210500 fmt=
%d %m %Y %H %M %S
Weirdness:
Python 2.5.2 (r252:60911, Jan 4 2009, 21:59:32) #the
server
[GCC 4.3.2] on
linux2
Type "help", "copyright", "credits" or "license" for more
information.Traceback (most recent call
last):
File "<stdin>", line 1, in
<module>
File "/usr/lib/python2.5/_strptime.py", line 330, in
strptime
(data_string,
format))
ValueError: time data did not match format: data=25032009210500 fmt=
%d %m %Y %H %M %S
But....
Python 2.5.1 (r251:54863, Jan 10 2008, 18:01:57) #the laptop
[GCC 4.2.1 (SUSE Linux)] on linux2
Type "help", "copyright", "credits" or "license" for more information.(2009, 3, 25, 21, 5, 0, 2, 84, -1)
Docs (http://docs.python.org/library/time.html#time.strptime) say:
Parses a string representing a time according to a format. If I send
it through str() to make absolutely sure it is a string I get the same
error.
I note from the changelog that there was a change affecting
time.strptime()...(http://www.python.org/download/releases/2.5.2/
NEWS.txt)
- Bug #1730389: Have time.strptime() match spaces in a format argument
with
``\s+`` instead of ``\s*``.
- Bug #1290505: Properly clear time.strptime's locale cache when the
locale
changes between calls. Backport of r54646 and r54647.
I don't see that either of these should break it, but it's got to be a
suspect.
last night, which moved it from Python 2.4.4 to 2.5.2. This caused
immediate trouble. At one point, data is parsed from a Web page, and
among other things a time date group is collected. This is in a nice
human readable format, but I want it in RFC 822 format because it's
going to be used in an outbound GeoRSS feed and it's a requirement.
So the time group is split up with a regex, merged into one string,
and fed to time.strptime() with a fitting format, then passed to
Utils.formatdate() and used. The time group looks like this:
25/03/2009 21:05:00
Code:
if airline not in whitelist:
retime = re.split('[-\s:/]', rawtime)
timeinput = ''.join(retime)
t = time.strptime(timeinput, "%d %m %Y %H %M %S")
timeout = Utils.formatdate(t)
Error:
Traceback (most recent call
last):
File "/home/yorksranter/vfeed-data/bothv7.py", line 46, in
<module>
t = time.strptime(timeinput, "%d %m %Y %H %M
%S")
File "/usr/lib/python2.5/_strptime.py", line 330, in
strptime
(data_string,
format))
ValueError: time data did not match format: data=25032009210500 fmt=
%d %m %Y %H %M %S
Weirdness:
Python 2.5.2 (r252:60911, Jan 4 2009, 21:59:32) #the
server
[GCC 4.3.2] on
linux2
Type "help", "copyright", "credits" or "license" for more
information.Traceback (most recent call
last):
File "<stdin>", line 1, in
<module>
File "/usr/lib/python2.5/_strptime.py", line 330, in
strptime
(data_string,
format))
ValueError: time data did not match format: data=25032009210500 fmt=
%d %m %Y %H %M %S
But....
Python 2.5.1 (r251:54863, Jan 10 2008, 18:01:57) #the laptop
[GCC 4.2.1 (SUSE Linux)] on linux2
Type "help", "copyright", "credits" or "license" for more information.(2009, 3, 25, 21, 5, 0, 2, 84, -1)
Docs (http://docs.python.org/library/time.html#time.strptime) say:
Parses a string representing a time according to a format. If I send
it through str() to make absolutely sure it is a string I get the same
error.
I note from the changelog that there was a change affecting
time.strptime()...(http://www.python.org/download/releases/2.5.2/
NEWS.txt)
- Bug #1730389: Have time.strptime() match spaces in a format argument
with
``\s+`` instead of ``\s*``.
- Bug #1290505: Properly clear time.strptime's locale cache when the
locale
changes between calls. Backport of r54646 and r54647.
I don't see that either of these should break it, but it's got to be a
suspect.