\section{\module{mhlib} ---
         Access to MH mailboxes}

% LaTeX'ized from the comments in the module by Skip Montanaro
% <skip@mojam.com>.

\declaremodule{standard}{mhlib}
\modulesynopsis{Manipulate MH mailboxes from Python.}


The \module{mhlib} module provides a Python interface to MH folders and
their contents.

The module contains three basic classes, \class{MH}, which represents a
particular collection of folders, \class{Folder}, which represents a single
folder, and \class{Message}, which represents a single message.


\begin{classdesc}{MH}{\optional{path\optional{, profile}}}
\class{MH} represents a collection of MH folders.
\end{classdesc}

\begin{classdesc}{Folder}{mh, name}
The \class{Folder} class represents a single folder and its messages.
\end{classdesc}

\begin{classdesc}{Message}{folder, number\optional{, name}}
\class{Message} objects represent individual messages in a folder.  The
Message class is derived from \class{mimetools.Message}.
\end{classdesc}


\subsection{MH Objects \label{mh-objects}}

\class{MH} instances have the following methods:


\begin{methoddesc}[MH]{error}{format\optional{, ...}}
Print an error message -- can be overridden.
\end{methoddesc}

\begin{methoddesc}[MH]{getprofile}{key}
Return a profile entry (\code{None} if not set).
\end{methoddesc}

\begin{methoddesc}[MH]{getpath}{}
Return the mailbox pathname.
\end{methoddesc}

\begin{methoddesc}[MH]{getcontext}{}
Return the current folder name.
\end{methoddesc}

\begin{methoddesc}[MH]{setcontext}{name}
Set the current folder name.
\end{methoddesc}

\begin{methoddesc}[MH]{listfolders}{}
Return a list of top-level folders.
\end{methoddesc}

\begin{methoddesc}[MH]{listallfolders}{}
Return a list of all folders.
\end{methoddesc}

\begin{methoddesc}[MH]{listsubfolders}{name}
Return a list of direct subfolders of the given folder.
\end{methoddesc}

\begin{methoddesc}[MH]{listallsubfolders}{name}
Return a list of all subfolders of the given folder.
\end{methoddesc}

\begin{methoddesc}[MH]{makefolder}{name}
Create a new folder.
\end{methoddesc}

\begin{methoddesc}[MH]{deletefolder}{name}
Delete a folder -- must have no subfolders.
\end{methoddesc}

\begin{methoddesc}[MH]{openfolder}{name}
Return a new open folder object.
\end{methoddesc}



\subsection{Folder Objects \label{mh-folder-objects}}

\class{Folder} instances represent open folders and have the following
methods:


\begin{methoddesc}[Folder]{error}{format\optional{, ...}}
Print an error message -- can be overridden.
\end{methoddesc}

\begin{methoddesc}[Folder]{getfullname}{}
Return the folder's full pathname.
\end{methoddesc}

\begin{methoddesc}[Folder]{getsequencesfilename}{}
Return the full pathname of the folder's sequences file.
\end{methoddesc}

\begin{methoddesc}[Folder]{getmessagefilename}{n}
Return the full pathname of message \var{n} of the folder.
\end{methoddesc}

\begin{methoddesc}[Folder]{listmessages}{}
Return a list of messages in the folder (as numbers).
\end{methoddesc}

\begin{methoddesc}[Folder]{getcurrent}{}
Return the current message number.
\end{methoddesc}

\begin{methoddesc}[Folder]{setcurrent}{n}
Set the current message number to \var{n}.
\end{methoddesc}

\begin{methoddesc}[Folder]{parsesequence}{seq}
Parse msgs syntax into list of messages.
\end{methoddesc}

\begin{methoddesc}[Folder]{getlast}{}
Get last message, or \code{0} if no messages are in the folder.
\end{methoddesc}

\begin{methoddesc}[Folder]{setlast}{n}
Set last message (internal use only).
\end{methoddesc}

\begin{methoddesc}[Folder]{getsequences}{}
Return dictionary of sequences in folder.  The sequence names are used 
as keys, and the values are the lists of message numbers in the
sequences.
\end{methoddesc}

\begin{methoddesc}[Folder]{putsequences}{dict}
Return dictionary of sequences in folder {name: list}.
\end{methoddesc}

\begin{methoddesc}[Folder]{removemessages}{list}
Remove messages in list from folder.
\end{methoddesc}

\begin{methoddesc}[Folder]{refilemessages}{list, tofolder}
Move messages in list to other folder.
\end{methoddesc}

\begin{methoddesc}[Folder]{movemessage}{n, tofolder, ton}
Move one message to a given destination in another folder.
\end{methoddesc}

\begin{methoddesc}[Folder]{copymessage}{n, tofolder, ton}
Copy one message to a given destination in another folder.
\end{methoddesc}


\subsection{Message Objects \label{mh-message-objects}}

The \class{Message} class adds one method to those of
\class{mimetools.Message}:

\begin{methoddesc}[Message]{openmessage}{n}
Return a new open message object (costs a file descriptor).
\end{methoddesc}
