TypeError Exception in email lib

MRAB python at mrabarnett.plus.com
Mon Feb 15 14:21:17 EST 2010


BJ Swope 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.
> 
> How would I go about recommending a change the module?
> 
> Original code:
> 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
> 
> Patched code:
> def mktime_tz(data):
>     """Turn a 10-tuple as returned by parsedate_tz() into a UTC timestamp."""
>     try:
>         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
>     except TypeError:
>         return time.mktime(data[:8] + (-1,))
> 
The traceback is saying that 'data' is None, not that it's too short
(that would raise an IndexError).



More information about the Python-list mailing list