class mailbox.Babyl(path, factory=None, create=True)
A subclass of Mailbox
for mailboxes in Babyl format. Parameter factory is a callable object that accepts a file-like message representation (which behaves as if opened in binary mode) and returns a custom representation. If factory is None
, BabylMessage
is used as the default message representation. If create is True
, the mailbox is created if it does not exist.
Babyl is a single-file mailbox format used by the Rmail mail user agent included with Emacs. The beginning of a message is indicated by a line containing the two characters Control-Underscore ('\037'
) and Control-L ('\014'
). The end of a message is indicated by the start of the next message or, in the case of the last message, a line containing a Control-Underscore ('\037'
) character.
Messages in a Babyl mailbox have two sets of headers, original headers and so-called visible headers. Visible headers are typically a subset of the original headers that have been reformatted or abridged to be more attractive. Each message in a Babyl mailbox also has an accompanying list of labels, or short strings that record extra information about the message, and a list of all user-defined labels found in the mailbox is kept in the Babyl options section.
Babyl
instances have all of the methods of Mailbox
in addition to the following:
-
get_labels()
-
Return a list of the names of all user-defined labels used in the mailbox.
Note
The actual messages are inspected to determine which labels exist in the mailbox rather than consulting the list of labels in the Babyl options section, but the Babyl section is updated whenever the mailbox is modified.
Some Mailbox
methods implemented by Babyl
deserve special remarks:
-
get_file(key)
-
In Babyl mailboxes, the headers of a message are not stored contiguously with the body of the message. To generate a file-like representation, the headers and body are copied together into an
io.BytesIO
instance, which has an API identical to that of a file. As a result, the file-like object is truly independent of the underlying mailbox but does not save memory compared to a string representation.
-
lock()
-
unlock()
-
Three locking mechanisms are used—dot locking and, if available, the
flock()
andlockf()
system calls.
Please login to continue.