Bug in email package?
Tim Roberts
timr at probo.com
Mon Feb 21 01:21:27 EST 2005
Roman Suzi <rnd at onego.ru> wrote:
>
>I was playing with email package and discovrered this strange kind of
>behaviour:
>
>>>> import email.Message
>>>> m = email.Message.Message()
>>>> m['a'] = '123'
>>>> print m
>>From nobody Mon Feb 21 00:12:27 2005
>a: 123
>
>>>> for i in m: print i
>...
>Traceback (most recent call last):
> File "<stdin>", line 1, in ?
> File "/usr/local/lib/python2.3/email/Message.py", line 304, in __getitem__
> return self.get(name)
> File "/usr/local/lib/python2.3/email/Message.py", line 370, in get
> name = name.lower()
>AttributeError: 'int' object has no attribute 'lower'
Intuitively, what did you expect this to do? I don't see why a single
message should be iterable.
>I think that if any object (from standard library at least) doesn't support
>iteration, it should clearly state so.
That's going a bit far. Iteration is a relatively new addition to Python.
Those classes that DO support iteration generally say so. If it isn't
mentioned, you probaby shouldn't assume it.
>Can this behaviour of email be considered a bug?
Not in my opinion, no.
>Is there a good case to iterate over something useful in a message?
Well, if you don't have an answer to that question, then why would you
expect it to support iteration?
>P.S. rfc822 has the same behaviour, at least on Python 2.3
Again, I'm not sure what, intuitively, it would mean to iterate over an
rfc822 object.
--
- Tim Roberts, timr at probo.com
Providenza & Boekelheide, Inc.
More information about the Python-list
mailing list