TypeError Exception in email lib
BJ Swope
bigblueswope at gmail.com
Mon Feb 15 14:47:32 EST 2010
On Mon, Feb 15, 2010 at 2:31 PM, Stephen Hansen <apt.shansen at gmail.com> wrote:
> On Mon, Feb 15, 2010 at 10:53 AM, BJ Swope <bigblueswope at gmail.com> wrote:
>>
>> File "/usr/lib/python2.5/email/_parseaddr.py", line 142, in mktime_tz
>> if data[9] is None:
>> TypeError: 'NoneType' object is unsubscriptable
>>
>> I'm parsing a bunch of spam and using the date field from the spams
>> for a date-time stamp.
>>
>> I've fixed the lib on my box to place the call inside a try/except
>> clause to catch the exception now, but it seems the module has a bug
>> in it.
>
> While there may or may not be a bug in the library, I don't think its where
> you're fixing. Just because an exception occurs in a function doesn't mean
> that function is broken: its documented as accepting a 10 item tuple, only.
> Functions in the stdlib generally -should- throw exceptions on invalid
> input.
> Someone's passing None into it, which its not allowed to do. So -that's-
> where the bug probably is, I think. (Although it may not be the immediate of
> mktime_tz; it could be happening higher up on the stack)
> Advice: Always post complete tracebacks to c.p.l/python-list :)
> --S
>From the module:
def mktime_tz(data):
"""Turn a 10-tuple as returned by parsedate_tz() into a UTC timestamp."""
if data[9] is None:
# No zone info, so localtime is better assumption than GMT
return time.mktime(data[:8] + (-1,))
else:
t = time.mktime(data[:8] + (0,))
return t - data[9] - time.timezone
It appears that the module is trying to accommodate the potential
missing TZ data because poorly written emails are missing the TZ data.
I discarded all the crontab emails that had the full traceback in
them. I took out the try/except clause in the hopes that I'll get
another exception soon.
If I do I'll post the entire exception traceback.
More information about the Python-list
mailing list