The IMAP4.append() documentation currently says only:
Append message to named mailbox.
It now documents the flags argument, but the remaining argument behavior is still easier to discover from Lib/imaplib.py than from the library docs.
In the implementation:
mailbox is treated as optional in practice: a false value is replaced with 'INBOX'.
flags and date_time may be None, in which case they are omitted from the command.
message is not optional. It is passed to MapCRLF.sub(CRLF, message), where MapCRLF is a bytes regular expression, so message must be a bytes-like object. Passing a str raises TypeError before the command is sent.
The method docstring already hints at this by saying "All args except 'message' can be None", but that detail is not in Doc/library/imaplib.rst.
This is related to the broader documentation issue in #68215, but this issue is intentionally narrower: clarify the public documentation for IMAP4.append() only.
Suggested documentation scope:
- State that message must be a bytes-like object.
- State which arguments may be
None.
- Clarify that
mailbox=None (or another false value) uses INBOX.
- Clarify that
date_time=None omits the internal date argument.
This should stay separate from the existing CR/LF-normalization behavior tracked in #49680.
Linked PRs
The
IMAP4.append()documentation currently says only:It now documents the
flagsargument, but the remaining argument behavior is still easier to discover fromLib/imaplib.pythan from the library docs.In the implementation:
mailboxis treated as optional in practice: a false value is replaced with'INBOX'.flagsanddate_timemay beNone, in which case they are omitted from the command.messageis not optional. It is passed toMapCRLF.sub(CRLF, message), whereMapCRLFis a bytes regular expression, somessagemust be a bytes-like object. Passing astrraisesTypeErrorbefore the command is sent.The method docstring already hints at this by saying "All args except 'message' can be None", but that detail is not in
Doc/library/imaplib.rst.This is related to the broader documentation issue in #68215, but this issue is intentionally narrower: clarify the public documentation for
IMAP4.append()only.Suggested documentation scope:
None.mailbox=None(or another false value) usesINBOX.date_time=Noneomits the internal date argument.This should stay separate from the existing CR/LF-normalization behavior tracked in #49680.
Linked PRs