mhlib
index
/usr/lib/python1.5/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
#
# XXX To do, functionality:
# - annotate messages
# - send messages
#
# XXX To do, organization:
# - move IntSet to separate file
# - move most Message functionality to module mimetools

   
Modules
                        
mimetools
multifile
os
re
shutil
string
sys

   
Classes
                        
Folder
IntSet
MH
mimetools.Message(rfc822.Message)
Message
SubMessage

   
class Folder
              
__init__(self, mh, name)
__repr__(self)
_copysequences(self, fromfolder, refileditems)
_parseindex(self, seq, all)
copymessage(self, n, tofolder, ton)
createmessage(self, n, txt)
error(self, *args)
getcurrent(self)
getfullname(self)
getlast(self)
getmessagefilename(self, n)
getsequences(self)
getsequencesfilename(self)
listallsubfolders(self)
listmessages(self)
listsubfolders(self)
movemessage(self, n, tofolder, ton)
openmessage(self, n)
parsesequence(self, seq)
putsequences(self, sequences)
refilemessages(self, list, tofolder, keepsequences=0)
removefromallsequences(self, list)
removemessages(self, list)
setcurrent(self, n)
setlast(self, last)

   
class IntSet
              
__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
              
__init__(self, path=None, profile=None)
__repr__(self)
deletefolder(self, name)
error(self, msg, *args)
getcontext(self)
getpath(self)
getprofile(self, key)
listallfolders(self)
listallsubfolders(self, name)
listfolders(self)
listsubfolders(self, name)
makefolder(self, name)
openfolder(self, name)
setcontext(self, context)

   
class Message(mimetools.Message)
              
__init__(self, f, n, fp=None)
__repr__(self)
getbody(self)
getbodyparts(self)
getbodytext(self, decode=1)
getheadertext(self, pred=None)

   
class SubMessage(Message)
              
__init__(self, f, n, fp)
__repr__(self)
getbody(self)
getbodyparts(self)
getbodytext(self, decode=1)

   
Constants
                        
Error = 'mhlib.Error'
FOLDER_PROTECT = 448
MH_PROFILE = '~/.mh_profile'
MH_SEQUENCES = '.mh_sequences'
PATH = '~/Mail'
ST_NLINK = 3