config root man

Current Path : /usr/local/lib/python2.5/

FreeBSD hs32.drive.ne.jp 9.1-RELEASE FreeBSD 9.1-RELEASE #1: Wed Jan 14 12:18:08 JST 2015 root@hs32.drive.ne.jp:/sys/amd64/compile/hs32 amd64
Upload File :
Current File : //usr/local/lib/python2.5/mhlib.pyc

hRc@s[dZdZdZdZdZddkZddkZddkZddkZddk	Z	ddk
Z
ddklZdd	d
dgZd	e
fdYZdfd
YZeidZdZd
fdYZdeifdYZdefdYZdfdYZddZddZdZedjoendS(s	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
s
~/.mh_profiles~/Mails
.mh_sequencesiiN(tbisecttMHtErrortFoldertMessagecBseZRS((t__name__t
__module__(((s!/usr/local/lib/python2.5/mhlib.pyRWscBseZdZdddZdZdZdZdZdZ	dZ
dZd	Zd
Z
dZdZd
ZdZRS(s<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.cCs|djo
t}ntii||_|djo|id}n|p
t}ntii|o*|ddjotii	d|}ntii|}tii
|p
tdn||_dS(sConstructor.tPathit~sMH() path not foundN(tNonet
MH_PROFILEtostpatht
expandusertprofilet
getprofiletPATHtisabstjointisdirR(tselfRR((s!/usr/local/lib/python2.5/mhlib.pyt__init__bs



%
cCsd|i|ifS(sString representation.s
MH(%r, %r)(RR(R((s!/usr/local/lib/python2.5/mhlib.pyt__repr__nscGstiid||dS(sARoutine to print an error.  May be overridden by a derived class.s
MH error: %s
N(tsyststderrtwrite(Rtmsgtargs((s!/usr/local/lib/python2.5/mhlib.pyterrorrscCst|i|S(s*Return a profile entry, None if not found.(tpicklineR(Rtkey((s!/usr/local/lib/python2.5/mhlib.pyRvscCs|iS(s9Return the path (the name of the collection's directory).(R(R((s!/usr/local/lib/python2.5/mhlib.pytgetpathzscCs9ttii|idd}|p
d}n|S(s&Return the name of the current folder.tcontextsCurrent-Foldertinbox(RRRRR(RR ((s!/usr/local/lib/python2.5/mhlib.pyt
getcontext~s
	
cCsItii|id}t|d}|id||idS(s#Set the name of the current folder.R twsCurrent-Folder: %s
N(RRRRtopenRtclose(RR tfntf((s!/usr/local/lib/python2.5/mhlib.pyt
setcontextscCssg}|i}xPti|D]?}tii||}tii|o|i|q"q"W|i|S(s*Return the names of the top-level folders.(RRtlistdirRRRtappendtsort(RtfoldersRtnametfullname((s!/usr/local/lib/python2.5/mhlib.pytlistfolderss
c	Cstii|i|}ti|i}|djogSng}ti|}xx|D]p}tii||}tii|oBtii||}|i||d}|djoPqq[q[W|i|S(scReturn the names of the subfolders in a given folder
        (prefixed with the given folder name).ii(	RRRtstattst_nlinkR)RR*R+(	RR-R.tnlinkst
subfolderstsubnamestsubnametfullsubnametname_subname((s!/usr/local/lib/python2.5/mhlib.pytlistsubfolderss"





cCs
|idS(s<Return the names of all folders and subfolders, recursively.t(tlistallsubfolders(R((s!/usr/local/lib/python2.5/mhlib.pytlistallfolderssc
Cs2tii|i|}ti|i}|djogSng}ti|}x|D]}|ddjp
t|oq[ntii||}tii|ortii||}|i|tii	|p|i
|}	||	}n|d}|djoPq q[q[W|i|S(s>Return the names of subfolders in a given folder, recursively.iit,i(RRRR0R1R)t	isnumericRR*tislinkR:R+(
RR-R.R2R3R4R5R6R7t
subsubfolders((s!/usr/local/lib/python2.5/mhlib.pyR:s.

	



cCs
t||S(s0Return a new Folder object for the named folder.(R(RR-((s!/usr/local/lib/python2.5/mhlib.pyt
openfolderscCsht|id}|o t|ot|d}nt}titii|i	||dS(s@Create a new folder (or raise os.error if it cannot be created).sFolder-ProtectiN(
RRR=tinttFOLDER_PROTECTRtmkdirRRR(RR-tprotecttmode((s!/usr/local/lib/python2.5/mhlib.pyt
makefolders
cCstii|i|}xgti|D]V}tii||}yti|Wq+tij
o|id|q+Xq+Wti|dS(sDelete a folder.  This removes files in the folder but not
        subdirectories.  Raise os.error if deleting the folder itself fails.s%s not deleted, continuing...N(RRRRR)tunlinkRtrmdir(RR-R.R5R6((s!/usr/local/lib/python2.5/mhlib.pytdeletefolders	N(RRt__doc__R	RRRRRR"R(R/R8R;R:R@RFRI(((s!/usr/local/lib/python2.5/mhlib.pyR[s													s
^[1-9][0-9]*$cCsti|dj	S(N(tnumericprogtmatchR	(tstr((s!/usr/local/lib/python2.5/mhlib.pyR=scBseZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZddZdZdZdZdZdZdZdZRS(s'Class representing a particular folder.cCs@||_||_tii|iptd|ndS(sConstructor.sno folder %sN(tmhR-RRRtgetfullnameR(RRNR-((s!/usr/local/lib/python2.5/mhlib.pyRs		cCsd|i|ifS(sString representation.sFolder(%r, %r)(RNR-(R((s!/usr/local/lib/python2.5/mhlib.pyRscGs|ii|dS(sError message handler.N(RNR(RR((s!/usr/local/lib/python2.5/mhlib.pyRscCstii|ii|iS(s'Return the full pathname of the folder.(RRRRNR-(R((s!/usr/local/lib/python2.5/mhlib.pyROscCstii|itS(s8Return the full pathname of the folder's sequences file.(RRRROtMH_SEQUENCES(R((s!/usr/local/lib/python2.5/mhlib.pytgetsequencesfilenamescCstii|it|S(s4Return the full pathname of a message in the folder.(RRRRORM(Rtn((s!/usr/local/lib/python2.5/mhlib.pytgetmessagefilenamescCs|ii|iS(s!Return list of direct subfolders.(RNR8R-(R((s!/usr/local/lib/python2.5/mhlib.pyR8scCs|ii|iS(sReturn list of all subfolders.(RNR:R-(R((s!/usr/local/lib/python2.5/mhlib.pyR:scCsg}ti}|i}x8ti|iD]!}||o||q.q.Wtt|}|i|o|d|_	n
d|_	|S(sReturn the list of messages currently present in the folder.
        As a side effect, set self.last to the last message (or 0).ii(
RKRLR*RR)ROtmapRAR+tlast(RtmessagesRLR*R-((s!/usr/local/lib/python2.5/mhlib.pytlistmessagess		

	cCsh}|i}yt|d}Wntj
o|SnXx|i}|pPn|id}t|djo!|id||ifn|di}t|didi	}|||<qB|S(s+Return the set of sequences for the folder.trt:isbad sequence in %s: %siit (
RQR$tIOErrortreadlinetsplittlenRtstriptIntSetttolist(Rt	sequencesR.R'tlinetfieldsRtvalue((s!/usr/local/lib/python2.5/mhlib.pytgetsequences%s$		
cCs|i}d}xm|iD]_\}}tdd}|i||pt|d}n|id||ifqW|p.yti	|Wqti
j
oqXn|idS(s.Write the set of sequences back to the folder.R9RZR#s%s: %s
N(RQR	t	iteritemsR`tfromlistR$RttostringRRGRR%(RRbR.R'Rtseqts((s!/usr/local/lib/python2.5/mhlib.pytputsequences9s

!	cCsG|i}yt|dSWn"ttfj
otdnXdS(s<Return the current message.  Raise Error when there is none.tcursno cur messageN(Rftmaxt
ValueErrortKeyErrorR(Rtseqs((s!/usr/local/lib/python2.5/mhlib.pyt
getcurrentJs
cCs#t|idt|ddS(sSet the current message.RmiN(t
updatelineRQRM(RRR((s!/usr/local/lib/python2.5/mhlib.pyt
setcurrentRscCs|i}|ptd|in|djo|Sn|id}|djo|| d||d}}}|d djo|d |d}}nt|ptd|nyt|}Wn%ttfj
ot|}nXy|i	||}Wntj
o}	|i
}
||
jo/|	pd|}	nt|	tid	n|
|}|ptd
|n|djo
||Sq.|| Sq2X|p|djo
d}qn|djo+t
||}|td|||!Sq2t
||d}||||!Sn|id}|djo|i	|| |}|i	||d|}
t
||d}t
||
}|||!}|ptd|n|Sny|i	||}WnXtj
oL}	|i
}
||
jo"|	pd|}	nt|	n|
|SnEX||jo/t|otd|qtd|n|gSdS(sParse 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.sno messages in %stallRYiR9is-+sbad message list %sissequence %s emptyt-tprevRUsmessage %d doesn't exists
no %s messageN(Rwslast(RWRR-tfindR=RARot
OverflowErrorR^t_parseindexRfRtexc_infoRRn(RRjRutitheadtdirttailtcounttanchorRRqtmsgstbegintendtjRXRR((s!/usr/local/lib/python2.5/mhlib.pyt
parsesequenceVs|	

 














cCslt|o5yt|SWqBttfj
otiSqBXn|d
jo|iSn|djo|dSn|djo|dSn|djoJ|i}t||}y||SWqtj
ot	dqXn|d	jol|i}t||d
}|djo
t	dny||d
SWq_tj
ot	dq_Xnt	ddS(s7Internal: parse a message number (or cur, first, etc.).Rmt.tfirstiRUitnextsno next messageRwisno prev messageN(scurR(R=RARyRoRtmaxintRrRt
IndexErrorRR	(RRjRuRRR|((s!/usr/local/lib/python2.5/mhlib.pyRzs8







cCs
t||S(s+Open a message -- returns a Message object.(R(RRR((s!/usr/local/lib/python2.5/mhlib.pytopenmessagesc
Csg}g}x|D]}|i|}|idt|}yti|Wntij
onXyti||Wn%tij
o}|i|qX|i|qW|o|i|n|o=t|djoti|dqtid|fndS(s2Remove one or more messages -- may raise os.error.R<iismultiple errors:N(	RSRMRRGRtrenameR*tremovefromallsequencesR^(RtlistterrorstdeletedRRRt	commapathR((s!/usr/local/lib/python2.5/mhlib.pytremovemessagess*icCsg}h}x|D]}|id}|i|}|i|}	yti||	Wntij
oy!ti||	ti|Wqttifj
oC}
|i	|
yti|	Wqtij
oqXqqXnX|i
||||<qW|o8|o|i||in|i
|in|o=t|djoti|dqtid|fndS(s_Refile one or more messages -- may raise os.error.
        'tofolder' is an open folder object.iismultiple errors:N(tgetlastRSRRRtshutiltcopy2RGR[R*tsetlastt_copysequencestitemsRtkeysR^(RRttofoldert
keepsequencesRtrefiledRRttonRttopathR((s!/usr/local/lib/python2.5/mhlib.pytrefilemessagess<


c	Cs|i}|i}d}x|iD]\}}y||}d}	Wntj
og}d}	nXx8|D]0\}
}|
|jo|i|d}qtqtW|	o|o|||<q+q+W|o|i|ndS(s.Helper for refilemessages() to copy sequences.iiN(RfRRpR*Rl(Rt
fromfoldertrefileditemst
fromsequencesttosequencestchangedR-RjttoseqtnewtfromnR((s!/usr/local/lib/python2.5/mhlib.pyR	s(




c	Cs+|i|}t|}|i~|i|}|id|}yti||Wntij
onXyti||Wntij
ozd}z'|idti	||d}Wd|p.yti
|Wqtij
oqXnXti
|nX|i|gdS(saMove one message over a specific destination message,
        which may or may not already exist.s,%diiN(RSR$R%RRRRR	RRRGR(	RRRRRRR'Rtbackuptopathtok((s!/usr/local/lib/python2.5/mhlib.pytmovemessages2



c	Cs|i|}t|}|i~|i|}|id|}yti||Wntij
onXd}z'|idti	||d}Wd|p.yti
|Wqtij
oqXnXdS(saCopy one message over a specific destination message,
        which may or may not already exist.s,%diiN(RSR$R%RRRRR	RRRG(	RRRRRRR'RRR((s!/usr/local/lib/python2.5/mhlib.pytcopymessage>s(


c	Cs|i|}|id|}yti||Wntij
onXd}d}zQt|d}x+|i|}|pPn|i|qp|id}Wd|p.yti|Wqtij
oqXnXdS(	s3Create a message, with text from the open file txt.s,%diiiR#iNi@(	RSRRRR$treadRR%RG(	RRRttxtRt
backuppathRtBUFSIZER'tbuf((s!/usr/local/lib/python2.5/mhlib.pyt
createmessageXs,

cCst|do|i|jo
|`n|i}d}xu|iD]g\}}|djoqInxD|D]<}||jo)|i|d}|p||=qqpqpWqIW|o|i|ndS(s`Remove one or more messages from all sequences (including last)
        -- but not from 'cur'!!!RUiRmiN(thasattrRURfRtremoveRl(RRRbRR-RjRR((s!/usr/local/lib/python2.5/mhlib.pyRrs" 




cCs%t|dp|in|iS(sReturn the last message number.RU(RRWRU(R((s!/usr/local/lib/python2.5/mhlib.pyRscCs8|djot|do
|`q4n
||_dS(sSet the last message number.RUN(R	RRU(RRU((s!/usr/local/lib/python2.5/mhlib.pyRs
(RRRJRRRRORQRSR8R:RWRfRlRrRtRRzRRRRRRRRRR(((s!/usr/local/lib/python2.5/mhlib.pyRs4														T			#		 				cBsGeZddZdZddZddZdZdZRS(cCsX||_||_|djo"|i|}t|d}ntii||dS(sConstructor.RXN(tfoldertnumberR	RSR$t	mimetoolsRR(RR'RRtfpR((s!/usr/local/lib/python2.5/mhlib.pyRs		
cCsdt|i|ifS(sString representation.sMessage(%s, %s)(treprRR(R((s!/usr/local/lib/python2.5/mhlib.pyRscCs|djodi|iSng}d}xt|iD]i}|dip:|id}|djo||| i}qn|o|i|q7q7Wdi|S(sReturn 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).R9iRYN(R	RtheaderstisspaceRxtlowerR*(RtpredRthitRcR|((s!/usr/local/lib/python2.5/mhlib.pyt
getheadertexts


icCs|ii|i|i}|p
|djo|iiSnyddkl}Wn#tj
oddkl}nX|}ti	|i|||i
S(sReturn 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.R9t7bitt8bittbinaryi(tStringIO(R9RRR(RtseektstartofbodytgetencodingRt	cStringIORtImportErrorRtdecodetgetvalue(RRtencodingRtoutput((s!/usr/local/lib/python2.5/mhlib.pytgetbodytexts	cCs|idjo
tdn|id}|p
tdn|ii|iti|i}|i|g}xQ|i	oCd|i
dt|f}t|i
||}|i|q~W|i|S(sOnly for multipart messages: return the message's body as a
        list of SubMessage objects.  Each submessage object behaves
        (almost) as a Message object.t	multipartsContent-Type is not multipart/*tboundarys"multipart/* without boundary params%s.%ri(tgetmaintypeRtgetparamRRRt	multifilet	MultiFiletpushRRR^t
SubMessageRR*tpop(RtbdrytmftpartsRRtpart((s!/usr/local/lib/python2.5/mhlib.pytgetbodypartss 




cCs/|idjo|iSn|iSdS(s3Return body, either a string or a list of messages.RN(RRR(R((s!/usr/local/lib/python2.5/mhlib.pytgetbodysN(	RRR	RRRRRR(((s!/usr/local/lib/python2.5/mhlib.pyRs			RcBs8eZdZdZddZdZdZRS(cCsmti|||||idjoti||_nti||_ti|dd|_dS(sConstructor.RRiN(RRRRtbodyRtbodyencoded(RR'RRR((s!/usr/local/lib/python2.5/mhlib.pyRs
cCs.|i|i|i}}}d|||fS(sString representation.sSubMessage(%s, %s, %s)(RRR(RR'RRR((s!/usr/local/lib/python2.5/mhlib.pyRsicCs=|p|iSnt|itdjo|iSndS(NR9(RttypeR(RR((s!/usr/local/lib/python2.5/mhlib.pyRscCs+t|itgjo|iSndS(N(RR(R((s!/usr/local/lib/python2.5/mhlib.pyRscCs|iS(N(R(R((s!/usr/local/lib/python2.5/mhlib.pyRs(RRRRRRR(((s!/usr/local/lib/python2.5/mhlib.pyRs
	
		R`cBseZdZddddZdZdZdZdZdZ	d	Z
d
ZdZdZ
d
ZdZdZdZdZdZRS(sClass 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.
    R<RvcCs7g|_||_||_|o|i|ndS(N(tpairstseptrngt
fromstring(RtdataRR((s!/usr/local/lib/python2.5/mhlib.pyRs
			cCs
g|_dS(N(R(R((s!/usr/local/lib/python2.5/mhlib.pytresetscCst|i|iS(N(tcmpR(Rtother((s!/usr/local/lib/python2.5/mhlib.pyt__cmp__scCs
t|iS(N(thashR(R((s!/usr/local/lib/python2.5/mhlib.pyt__hash__"scCsd|i|i|ifS(NsIntSet(%r, %r, %r)(RiRR(R((s!/usr/local/lib/python2.5/mhlib.pyR%scCs|iid}x|t|ijow|i|d\}}|i|\}}||djo.|t||fg|i|d|d+q|d}qWdS(Ni(RR+R^Rn(RR|talotahitblotbhi((s!/usr/local/lib/python2.5/mhlib.pyt	normalize(s
.cCsd}xs|iD]h\}}||jot|}nt||it|}|o||i|}q|}qW|S(NR9(RRRR(RRktlothitt((s!/usr/local/lib/python2.5/mhlib.pyRi3s


cCsAg}x4|iD])\}}t||d}||}qW|S(Ni(Rtrange(RtlRRtm((s!/usr/local/lib/python2.5/mhlib.pyRa<s
cCs"x|D]}|i|qWdS(N(R*(RRR|((s!/usr/local/lib/python2.5/mhlib.pyRhCscCst}|i|_|S(N(R`R(RR((s!/usr/local/lib/python2.5/mhlib.pytcloneGs	
cCs|iddS(Ni(R(R((s!/usr/local/lib/python2.5/mhlib.pytminLscCs|iddS(Ni(R(R((s!/usr/local/lib/python2.5/mhlib.pyRnOscCsDx=|iD]2\}}||jo
|jnotSq
q
WtS(N(RtTruetFalse(RtxRR((s!/usr/local/lib/python2.5/mhlib.pytcontainsRs

cCsxtt|iD]}|i|\}}||jo|d|jo||f|i|<n|ii|||f|djo_|d|i|ddjo?|i|dd|i|dfg|i|d|d+ndSn||jodSqqWt|id}|djoC|i|\}}|d|jo||f|i|<dSqmn|ii||fdS(Nii(RR^RtinsertR*(RRR|RR((s!/usr/local/lib/python2.5/mhlib.pyR*Ws(
--

cCs9||jodSn|ii||f|idS(N(RR*R(Rtxlotxhi((s!/usr/local/lib/python2.5/mhlib.pytaddpairps
cCsg}x|i|iD]}g}x9|i|iD]%}|i}|it|q8Wt|djo|i|d|dfqt|djo4|d|djo|i|d|dfqtdqW|i||_|i	dS(Niiisbad data passed to IntSet(
R]RRR_R*RAR^RoRR(RRRRRtsubpRk((s!/usr/local/lib/python2.5/mhlib.pyRus(
N(RRRJR	RRRRRRRiRaRhRRRnRR*RR(((s!/usr/local/lib/python2.5/mhlib.pyR`s"															icCsyt|d}Wntj
odSnXti|d}ti||oti}x|i}|pPn|i|o]|t	|d}x8|i}|p|di
oPn||}q|iSq_q_dS(NRXRYii(R$R[R	tretescapetcompilet
IGNORECASER\RLR^RR_(tfileRtcasefoldR'tpattprogRcttext((s!/usr/local/lib/python2.5/mhlib.pyRs&	
c
Csly)t|d}|i}|iWntj
o
g}nXti|d}ti||oti}|djo
d}nd||f}xyt	t
|D]G}	||	}
|i|
o'|djo||	=n|||	<PqqW|dj	o|i|n|d}t|d}x|D]}
|i
|
q7W|iti||dS(NRXs:(.*)
s%s: %s
RR#(R$t	readlinesR%R[RRRRR	RR^RLR*RRR(RRReRR'tlinesRRtnewlineR|Rcttempfile((s!/usr/local/lib/python2.5/mhlib.pyRss8




	


c	Cstidtad}|d|dddddd	d
g}x|D]}|d|fqRW|d|d
tida|d|d|dti}tddi|d<|GHti	||dx%t
|D]}|d|fqW|dti}ti|a|dx~d/D]v}y|d*|fWntj
o}d+G|GHnXti
d,|fi}tt|i}|Gd-GHqMW|d.dS(0Nsrm -rf $HOME/Mail/@testcSs|GHt|GHdS(N(teval(Rk((s!/usr/local/lib/python2.5/mhlib.pytdossmh.listfolders()smh.listallfolders()s@tests@test/test1s@test/test2s@test/test1/test11s@test/test1/test12s@test/test1/test11/test111smh.makefolder(%r)smh.listsubfolders('@test')smh.listallsubfolders('@test')sf.listsubfolders()sf.listallsubfolders()sf.getsequences()s
1-10 12-20RZtfoosmh.deletefolder(%r)smh.getcontext()sf.getcurrent()RRURmRRwRsfirst:3slast:3scur:3scur:-3sprev:3snext:3s1:3s1:-3s100:3s100:-3s10000:3s10000:-3Rusf.parsesequence(%r)sError:spick %r 2>/dev/nulls<-- picksf.listmessages()(sfirstslastscurRsprevsnextsfirst:3slast:3scur:3scur:-3sprev:3snext:3s1:3s1:-3s100:3s100:-3s10000:3s10000:-3sall(RtsystemRRNR@R'RfR`RaRltreversedR"RtpopenRRTRAR](	RttestfoldersRRqR RjRtstuffR((s!/usr/local/lib/python2.5/mhlib.pyttestsV
		

		










t__main__(RJR
RRPRBRRRRRRRt__all__t	ExceptionRRRRKR=RRRR`RRsRR(((s!/usr/local/lib/python2.5/mhlib.pys<module>6s4
	M"	*


Man Man