mhlib
index
/usr/lib/python2.1/mhlib.py

MH interface -- purely object-oriented (well, almost)
 
Executive summary:
 
import mhlib
 
mh = mhlib.MH()         # use default mailbox directory and profile
mh = mhlib.MH(mailbox)  # override mailbox location (default from profile)
mh = mhlib.MH(mailbox, profile) # override mailbox and profile
 
mh.error(format, ...)   # print error message -- can be overridden
s = mh.getprofile(key)  # profile entry (None if not set)
path = mh.getpath()     # mailbox pathname
name = mh.getcontext()  # name of current folder
mh.setcontext(name)     # set name of current folder
 
list = mh.listfolders() # names of top-level folders
list = mh.listallfolders() # names of all folders, including subfolders
list = mh.listsubfolders(name) # direct subfolders of given folder
list = mh.listallsubfolders(name) # all subfolders of given folder
 
mh.makefolder(name)     # create new folder
mh.deletefolder(name)   # delete folder -- must have no subfolders
 
f = mh.openfolder(name) # new open folder object
 
f.error(format, ...)    # same as mh.error(format, ...)
path = f.getfullname()  # folder's full pathname
path = f.getsequencesfilename() # full pathname of folder's sequences file
path = f.getmessagefilename(n)  # full pathname of message n in folder
 
list = f.listmessages() # list of messages in folder (as numbers)
n = f.getcurrent()      # get current message
f.setcurrent(n)         # set current message
list = f.parsesequence(seq)     # parse msgs syntax into list of messages
n = f.getlast()         # get last message (0 if no messagse)
f.setlast(n)            # set last message (internal use only)
 
dict = f.getsequences() # dictionary of sequences in folder {name: list}
f.putsequences(dict)    # write sequences back to folder
 
f.createmessage(n, fp)  # add message from file f as number n
f.removemessages(list)  # remove messages in list from folder
f.refilemessages(list, tofolder) # move messages in list to other folder
f.movemessage(n, tofolder, ton)  # move one message to a given destination
f.copymessage(n, tofolder, ton)  # copy one message to a given destination
 
m = f.openmessage(n)    # new open message object (costs a file descriptor)
m is a derived class of mimetools.Message(rfc822.Message), with:
s = m.getheadertext()   # text of message's headers
s = m.getheadertext(pred) # text of message's headers, filtered by pred
s = m.getbodytext()     # text of message's body, decoded
s = m.getbodytext(0)    # text of message's body, not decoded

 
Modules
            
mimetools
multifile
os
re
shutil
sys

 
Classes
            
exceptions.Exception
Error
Folder
IntSet
MH
mimetools.Message(rfc822.Message)
Message
SubMessage

 
class Error(exceptions.Exception)
       
  
__getitem__(...) from exceptions.Exception
__init__(...) from exceptions.Exception
__str__(...) from exceptions.Exception

 
class Folder
      Class representing a particular folder.
 
  
__init__(self, mh, name)
Constructor.
__repr__(self)
String representation.
_copysequences(self, fromfolder, refileditems)
Helper for refilemessages() to copy sequences.
_parseindex(self, seq, all)
Internal: parse a message number (or cur, first, etc.).
copymessage(self, n, tofolder, ton)
Copy one message over a specific destination message,
which may or may not already exist.
createmessage(self, n, txt)
Create a message, with text from the open file txt.
error(self, *args)
Error message handler.
getcurrent(self)
Return the current message.  Raise Error when there is none.
getfullname(self)
Return the full pathname of the folder.
getlast(self)
Return the last message number.
getmessagefilename(self, n)
Return the full pathname of a message in the folder.
getsequences(self)
Return the set of sequences for the folder.
getsequencesfilename(self)
Return the full pathname of the folder's sequences file.
listallsubfolders(self)
Return list of all subfolders.
listmessages(self)
Return the list of messages currently present in the folder.
As a side effect, set self.last to the last message (or 0).
listsubfolders(self)
Return list of direct subfolders.
movemessage(self, n, tofolder, ton)
Move one message over a specific destination message,
which may or may not already exist.
openmessage(self, n)
Open a message -- returns a Message object.
parsesequence(self, seq)
Parse an MH sequence specification into a message list.
Attempt to mimic mh-sequence(5) as close as possible.
Also attempt to mimic observed behavior regarding which
conditions cause which error messages.
putsequences(self, sequences)
Write the set of sequences back to the folder.
refilemessages(self, list, tofolder, keepsequences=0)
Refile one or more messages -- may raise os.error.
'tofolder' is an open folder object.
removefromallsequences(self, list)
Remove one or more messages from all sequences (including last)
-- but not from 'cur'!!!
removemessages(self, list)
Remove one or more messages -- may raise os.error.
setcurrent(self, n)
Set the current message.
setlast(self, last)
Set the last message number.

 
class IntSet
      Class implementing sets of integers.
 
This is an efficient representation for sets consisting of several
continuous ranges, e.g. 1-100,200-400,402-1000 is represented
internally as a list of three pairs: [(1,100), (200,400),
(402,1000)].  The internal representation is always kept normalized.
 
The constructor has up to three arguments:
- the string used to initialize the set (default ''),
- the separator between ranges (default ',')
- the separator between begin and end of a range (default '-')
The separators must be strings (not regexprs) and should be different.
 
The tostring() function yields a string that can be passed to another
IntSet constructor; __repr__() is a valid IntSet constructor itself.
 
  
__cmp__(self, other)
__hash__(self)
__init__(self, data=None, sep=',', rng='-')
__repr__(self)
addpair(self, xlo, xhi)
append(self, x)
clone(self)
contains(self, x)
fromlist(self, list)
fromstring(self, data)
max(self)
min(self)
normalize(self)
reset(self)
tolist(self)
tostring(self)

 
class MH
      Class representing a particular collection of folders.
Optional constructor arguments are the pathname for the directory
containing the collection, and the MH profile to use.
If either is omitted or empty a default is used; the default
directory is taken from the MH profile if it is specified there.
 
  
__init__(self, path=None, profile=None)
Constructor.
__repr__(self)
String representation.
deletefolder(self, name)
Delete a folder.  This removes files in the folder but not
subdirectories.  Raise os.error if deleting the folder itself fails.
error(self, msg, *args)
Routine to print an error.  May be overridden by a derived class.
getcontext(self)
Return the name of the current folder.
getpath(self)
Return the path (the name of the collection's directory).
getprofile(self, key)
Return a profile entry, None if not found.
listallfolders(self)
Return the names of all folders and subfolders, recursively.
listallsubfolders(self, name)
Return the names of subfolders in a given folder, recursively.
listfolders(self)
Return the names of the top-level folders.
listsubfolders(self, name)
Return the names of the subfolders in a given folder
(prefixed with the given folder name).
makefolder(self, name)
Create a new folder (or raise os.error if it cannot be created).
openfolder(self, name)
Return a new Folder object for the named folder.
setcontext(self, context)
Set the name of the current folder.

 
class Message(mimetools.Message)
       
  
__delitem__(self, name) from rfc822.Message
__getitem__(self, name) from rfc822.Message
__init__(self, f, n, fp=None)
Constructor.
__len__(self) from rfc822.Message
__repr__(self)
String representation.
__setitem__(self, name, value) from rfc822.Message
__str__(self) from rfc822.Message
get = getheader(self, name, default=None) from rfc822.Message
getaddr(self, name) from rfc822.Message
getaddrlist(self, name) from rfc822.Message
getallmatchingheaders(self, name) from rfc822.Message
getbody(self)
Return body, either a string or a list of messages.
getbodyparts(self)
Only for multipart messages: return the message's body as a
list of SubMessage objects.  Each submessage object behaves
(almost) as a Message object.
getbodytext(self, decode=1)
Return the message's body text as string.  This undoes a
Content-Transfer-Encoding, but does not interpret other MIME
features (e.g. multipart messages).  To suppress decoding,
pass 0 as an argument.
getdate(self, name) from rfc822.Message
getdate_tz(self, name) from rfc822.Message
getencoding(self) from mimetools.Message
getfirstmatchingheader(self, name) from rfc822.Message
getheader(self, name, default=None) from rfc822.Message
getheaders(self, name) from rfc822.Message
getheadertext(self, pred=None)
Return the message's header text as a string.  If an
argument is specified, it is used as a filter predicate to
decide which headers to return (its argument is the header
name converted to lower case).
getmaintype(self) from mimetools.Message
getparam(self, name) from mimetools.Message
getparamnames(self) from mimetools.Message
getplist(self) from mimetools.Message
getrawheader(self, name) from rfc822.Message
getsubtype(self) from mimetools.Message
gettype(self) from mimetools.Message
has_key(self, name) from rfc822.Message
iscomment(self, line) from rfc822.Message
isheader(self, line) from rfc822.Message
islast(self, line) from rfc822.Message
items(self) from rfc822.Message
keys(self) from rfc822.Message
parseplist(self) from mimetools.Message
parsetype(self) from mimetools.Message
readheaders(self) from rfc822.Message
rewindbody(self) from rfc822.Message
values(self) from rfc822.Message

 
class SubMessage(Message)
       
  
__delitem__(self, name) from rfc822.Message
__getitem__(self, name) from rfc822.Message
__init__(self, f, n, fp)
Constructor.
__len__(self) from rfc822.Message
__repr__(self)
String representation.
__setitem__(self, name, value) from rfc822.Message
__str__(self) from rfc822.Message
get = getheader(self, name, default=None) from rfc822.Message
getaddr(self, name) from rfc822.Message
getaddrlist(self, name) from rfc822.Message
getallmatchingheaders(self, name) from rfc822.Message
getbody(self)
getbodyparts(self)
getbodytext(self, decode=1)
getdate(self, name) from rfc822.Message
getdate_tz(self, name) from rfc822.Message
getencoding(self) from mimetools.Message
getfirstmatchingheader(self, name) from rfc822.Message
getheader(self, name, default=None) from rfc822.Message
getheaders(self, name) from rfc822.Message
getheadertext(self, pred=None) from Message
getmaintype(self) from mimetools.Message
getparam(self, name) from mimetools.Message
getparamnames(self) from mimetools.Message
getplist(self) from mimetools.Message
getrawheader(self, name) from rfc822.Message
getsubtype(self) from mimetools.Message
gettype(self) from mimetools.Message
has_key(self, name) from rfc822.Message
iscomment(self, line) from rfc822.Message
isheader(self, line) from rfc822.Message
islast(self, line) from rfc822.Message
items(self) from rfc822.Message
keys(self) from rfc822.Message
parseplist(self) from mimetools.Message
parsetype(self) from mimetools.Message
readheaders(self) from rfc822.Message
rewindbody(self) from rfc822.Message
values(self) from rfc822.Message

 
Functions
            
isnumeric(str)
pickline(file, key, casefold=1)
test()
updateline(file, key, value, casefold=1)

 
Data
             FOLDER_PROTECT = 448
MH_PROFILE = '~/.mh_profile'
MH_SEQUENCES = '.mh_sequences'
PATH = '~/Mail'
ST_NLINK = 3
__all__ = ['MH', 'Error', 'Folder', 'Message']
__file__ = '/usr/lib/python2.1/mhlib.pyc'
__name__ = 'mhlib'
numericprog = <SRE_Pattern object>