Issue 31538: mailbox does not treat external factories the same
To me the documentation doesn't quite look right, in the case of no factory being passed, it runs:
def __getitem__(self, key):
"""Return the keyed message; raise KeyError if it doesn't exist."""
if not self._factory:
return self.get_message(key)
else:
return self._factory(self.get_file(key))
from the Mailbox base class. The get_message is thus:
def get_message(self, key):
"""Return a Message representation or raise a KeyError."""
start, stop = self._lookup(key)
self._file.seek(start)
from_line = self._file.readline().replace(linesep, b'')
string = self._file.read(stop - self._file.tell())
msg = self._message_factory(string.replace(linesep, b'\n'))
msg.set_from(from_line[5:].decode('ascii'))
return msg
where self._message_factory is set to mailbox.mboxMessage.
I am not familiar with this module, so am unsure whether the documentation is ill-worded or it is a bug.