Steps to reproduce ================== >>> from email.mime.multipart import MIMEMultipart >>> foo = MIMEMultipart() >>> foo.is_multipart() False Expected Result =============== True should be returned from MIMEMultipart.is_multipart() Notes ===== Looking at the implementation of is_multipart() in email.Message it would appear that if self._payload was initialised to an empty list in the constructor of MIMEMultipart when _subparts is None, this would be a sufficient fix for this issue. However, from an outsider looking into this code for the first time, this doesn't look like the best architecture, shouldn't the issue of whether a message has multiple parts, and logic specific to this be handled through inheritance. With the current implementation the superclass makes assumptions about how a subclass is implemented, this just feels wrong. Have I missed something, is there a good reason for things being as they are today? Feel free to take the discussion to the python-dev list, I have just subscribed, and I am interested in fixing this issue myself in the next bug day if someone can answer my questions above.
Attaching a patch for the quick fix I proposed below. I would still like to see some feedback regarding making the design of the mime module more object oriented. email.Message really shouldn't be making assumtions about how subclasses represent their state.
Fixed in r60073. Regarding the flag, you're right: maybe these classes should deal it in other way... but maybe there're reasons to do this. If you want to push a better structure for this flag, feel free to raise the issue in python-dev. Anyway, the real problem, here, is fixed, :)
History
Date
User
Action
Args
2022-04-11 14:56:29
admin
set
github: 46147
2008-01-19 12:36:30
facundobatista
set
status: open -> closedresolution: fixedmessages: +