]c%@sdZddkZddkZddkZddkZddkZddkZddkZddkZddk Zddk Zddk Z y*ei djo e nddkZWne j o eZnXddkZeiiiz1eioeiddenddkZWdQXdddd d d d d dddddddddgZdfdYZdefdYZdefdYZdefdYZdefdYZd efdYZd efdYZd efd YZ d ei!i"fd!YZ"d e"fd"YZ#d#e"fd$YZ$de$fd%YZ%de"fd&YZ&de"fd'YZ'de$fd(YZ(d)fd*YZ)d+e)fd,YZ*e+d-Z,d.Z-d/Z.d0Z/d1Z0d2Z1d3fd4YZ2de2fd5YZ3de3fd6YZ4de2fd7YZ5dfd8YZ6de2fd9YZ7d:e8fd;YZ9d<e9fd=YZ:d>e9fd?YZ;d@e9fdAYZ<dBe9fdCYZ=dS(DsDRead/write support for Maildir, mbox, MH, Babyl, and MMDF mailboxes.iNtos2emxtignores.*rfc822 has been removedtMailboxtMaildirtmboxtMHtBabyltMMDFtMessagetMaildirMessaget mboxMessaget MHMessaget BabylMessaget MMDFMessaget UnixMailboxtPortableUnixMailboxt MmdfMailboxt MHMailboxt BabylMailboxcBs.eZdZdedZdZdZdZdZ dZ ddZ dZ d Z d Zd Zd Zd ZdZdZdZdZdZdZdZdZdZddZdZddZdZdZdZ dZ!e"dZ#RS( s*A group of messages in a particular place.cCs.tiitii||_||_dS(sInitialize a Mailbox instance.N(tostpathtabspatht expandusert_patht_factory(tselfRtfactorytcreate((s/usr/lib64/python2.6/mailbox.pyt__init__,s!cCstddS(s$Add message and return assigned key.s&Method must be implemented by subclassN(tNotImplementedError(Rtmessage((s/usr/lib64/python2.6/mailbox.pytadd1scCstddS(s=Remove the keyed message; raise KeyError if it doesn't exist.s&Method must be implemented by subclassN(R(Rtkey((s/usr/lib64/python2.6/mailbox.pytremove5scCs|i|dS(N(R!(RR ((s/usr/lib64/python2.6/mailbox.pyt __delitem__9scCs+y|i|Wntj onXdS(s'If the keyed message exists, remove it.N(R!tKeyError(RR ((s/usr/lib64/python2.6/mailbox.pytdiscard<scCstddS(s>Replace the keyed message; raise KeyError if it doesn't exist.s&Method must be implemented by subclassN(R(RR R((s/usr/lib64/python2.6/mailbox.pyt __setitem__CscCs,y|i|SWntj o|SXdS(s9Return the keyed message, or default if it doesn't exist.N(t __getitem__R#(RR tdefault((s/usr/lib64/python2.6/mailbox.pytgetGscCs2|ip|i|S|i|i|SdS(s=Return the keyed message; raise KeyError if it doesn't exist.N(Rt get_messagetget_file(RR ((s/usr/lib64/python2.6/mailbox.pyR&Ns cCstddS(s4Return a Message representation or raise a KeyError.s&Method must be implemented by subclassN(R(RR ((s/usr/lib64/python2.6/mailbox.pyR)UscCstddS(s3Return a string representation or raise a KeyError.s&Method must be implemented by subclassN(R(RR ((s/usr/lib64/python2.6/mailbox.pyt get_stringYscCstddS(s6Return a file-like representation or raise a KeyError.s&Method must be implemented by subclassN(R(RR ((s/usr/lib64/python2.6/mailbox.pyR*]scCstddS(sReturn an iterator over keys.s&Method must be implemented by subclassN(R(R((s/usr/lib64/python2.6/mailbox.pytiterkeysascCst|iS(sReturn a list of keys.(tlistR,(R((s/usr/lib64/python2.6/mailbox.pytkeysesccsGx@|iD]2}y||}Wntj o q nX|Vq WdS(s%Return an iterator over all messages.N(R,R#(RR tvalue((s/usr/lib64/python2.6/mailbox.pyt itervaluesis cCs |iS(N(R0(R((s/usr/lib64/python2.6/mailbox.pyt__iter__rscCst|iS(s,Return a list of messages. Memory intensive.(R-R0(R((s/usr/lib64/python2.6/mailbox.pytvaluesusccsMxF|iD]8}y||}Wntj o q nX||fVq WdS(s.Return an iterator over (key, message) tuples.N(R,R#(RR R/((s/usr/lib64/python2.6/mailbox.pyt iteritemsys cCst|iS(s9Return a list of (key, message) tuples. Memory intensive.(R-R3(R((s/usr/lib64/python2.6/mailbox.pytitemsscCstddS(s9Return True if the keyed message exists, False otherwise.s&Method must be implemented by subclassN(R(RR ((s/usr/lib64/python2.6/mailbox.pythas_keyscCs |i|S(N(R5(RR ((s/usr/lib64/python2.6/mailbox.pyt __contains__scCstddS(s*Return a count of messages in the mailbox.s&Method must be implemented by subclassN(R(R((s/usr/lib64/python2.6/mailbox.pyt__len__scCs(x!|iD]}|i|q WdS(sDelete all messages.N(R,R$(RR ((s/usr/lib64/python2.6/mailbox.pytclears cCs6y||}Wntj o|SX|i||S(s3Delete the keyed message and return it, or default.(R#R$(RR R'tresult((s/usr/lib64/python2.6/mailbox.pytpops  cCs7x0|iD]}||i|fSWtddS(s6Delete an arbitrary (key, message) pair and return it.sNo messages in mailboxN(R,R:R#(RR ((s/usr/lib64/python2.6/mailbox.pytpopitems cCst|do|i}n't|do|i}n|}t}x>|D]6\}}y|||From treadtsFrom s>From isInvalid message type: %sN(t isinstancetemailRRtStringIOt generatort GeneratortflattentseektwriteRGtreplaceRtlineseptstrR<R>treadlinet startswitht TypeErrorttype(RRttargett mangle_from_tbuffertgentline((s/usr/lib64/python2.6/mailbox.pyt _dump_messages,   &  N($t__name__t __module__t__doc__tNoneR>RRR!R"R$R%R(R&R)R+R*R,R.R0R1R2R3R4R5R6R7R8R:R;RBRCRDRERFR=R](((s/usr/lib64/python2.6/mailbox.pyR)s>                         cBseZdZdZeiedZdZdZ dZ dZ dZ dZ d Zd Zd Zd Zd ZdZdZdZdZdZdZdZdZdZdZdZdZdZRS(sA qmail-style Maildir mailbox.t:cCsti||||tii|ip|o}ti|idtitii|iddtitii|iddtitii|iddqt|inh|_ dS(sInitialize a Maildir instance.ittmptnewtcurN( RRRRtexistsRtmkdirtjointNoSuchMailboxErrort_toc(RtdirnameRR((s/usr/lib64/python2.6/mailbox.pyRs""&c Cs|i}z|i||Wdt|Xt|to=|i}|i|i}||ijo d}qn d}d}ti i |i i |id}ti i |i|||}yNttdo'ti|i |ti|i nti|i |WnOtj oC}ti|i |itijotd|qknXt|to,ti|ti i||ifn|S(s$Add message and return assigned key.NRHRditlinks$Name clash with existing message: %s(t _create_tmpR]t _sync_closeRIR t get_subdirtcolontget_infoRRtbasenametnametsplitRhRR<RlR!trenametOSErrorterrnotEEXISTtExternalClashErrortutimetgetatimetget_date(RRttmp_filetsubdirtsuffixtuniqtdestte((s/usr/lib64/python2.6/mailbox.pyRs6   %,cCs,titii|i|i|dS(s=Remove the keyed message; raise KeyError if it doesn't exist.N(RR!RRhRt_lookup(RR ((s/usr/lib64/python2.6/mailbox.pyR!scCsYy|i|WnAtj on0tj o#}|itijoqUnXdS(s'If the keyed message exists, remove it.N(R!R#RvRwtENOENT(RR R((s/usr/lib64/python2.6/mailbox.pyR$sc Cs$|i|}|i|}|i|}t|to |}n|}tii|}|i|jo!|i|i|id}nd}|i |tii |i |||} ti tii |i || t|to,ti | tii| |ifndS(s>Replace the keyed message; raise KeyError if it doesn't exist.iRHN(RRRIR RRRkRpRtR$RhRRuRzR{R|( RR Rt old_subpathttemp_keyt temp_subpathtdominant_subpathR~Rtnew_path((s/usr/lib64/python2.6/mailbox.pyR%'s  ! "cCs|i|}ttii|i|d}z-|io|i|}n t|}Wd|iXtii |\}}|i ||i |jo!|i |i |i dn|i tiitii|i||S(s4Return a Message representation or raise a KeyError.trNi(RtopenRRRhRRR RFRtt set_subdirRptset_infotset_datetgetmtime(RR tsubpathtftmsgR~Rs((s/usr/lib64/python2.6/mailbox.pyR)>s!   !+cCsJttii|i|i|d}z|iSWd|iXdS(s3Return a string representation or raise a KeyError.RN(RRRRhRRRGRF(RR R((s/usr/lib64/python2.6/mailbox.pyR+Ps*cCs4ttii|i|i|d}t|S(s6Return a file-like representation or raise a KeyError.trb(RRRRhRRt _ProxyFile(RR R((s/usr/lib64/python2.6/mailbox.pyR*Xs*ccsQ|ix@|iD]5}y|i|Wntj o qnX|VqWdS(sReturn an iterator over keys.N(t_refreshRjRR#(RR ((s/usr/lib64/python2.6/mailbox.pyR,]s  cCs|i||ijS(s9Return True if the keyed message exists, False otherwise.(RRj(RR ((s/usr/lib64/python2.6/mailbox.pyR5gs cCs|it|iS(s*Return a count of messages in the mailbox.(RtlenRj(R((s/usr/lib64/python2.6/mailbox.pyR7ls cCsdS(s"Write any pending changes to disk.N((R((s/usr/lib64/python2.6/mailbox.pyRCqscCsdS(sLock the mailbox.N((R((s/usr/lib64/python2.6/mailbox.pyRDuscCsdS(s#Unlock the mailbox if it is locked.N((R((s/usr/lib64/python2.6/mailbox.pyREyscCsdS(sFlush and close the mailbox.N((R((s/usr/lib64/python2.6/mailbox.pyRF}scCsg}xxti|iD]d}t|djoK|ddjo:tiitii|i|o|i|dqqW|S(sReturn a list of folder names.iit.(RtlistdirRRRtisdirRhtappend(RR9tentry((s/usr/lib64/python2.6/mailbox.pyt list_folderss$%cCs/ttii|id|d|idtS(s/Return a Maildir instance for the named folder.RRR(RRRRhRRR=(Rtfolder((s/usr/lib64/python2.6/mailbox.pyt get_folders cCstii|id|}t|d|i}tii|d}tii|p*titi|ti ti Bdn|S(s>Create a folder and return a Maildir instance representing it.RRt maildirfolderi( RRRhRRRRfRFRtO_CREATtO_WRONLY(RRRR9tmaildirfolder_path((s/usr/lib64/python2.6/mailbox.pyt add_foldersc Cstii|id|}xztitii|dtitii|dD]>}t|djp|ddjotd|qWqWWxzti|D]i}|djoV|djoI|djo<tiitii||otd||fqqWxti|d t D]i\}}}x*|D]"}ti tii||qBWx*|D]"}ti tii||qoWq,Wti |d S( s-Delete the named folder, which must be empty.RRdReiisFolder contains message(s): %sRcs%Folder contains subdirectory '%s': %sttopdownN( RRRhRRRt NotEmptyErrorRtwalkR=R!trmdir(RRRRtroottdirstfiles((s/usr/lib64/python2.6/mailbox.pyt remove_folders*$'" $cCsti}xrtitii|idD]O}tii|id|}|tii|djoti|q.q.WdS(sDelete old files in "tmp".Rci@N(ttimeRRRRhRR{R!(RtnowRR((s/usr/lib64/python2.6/mailbox.pytcleans  "icCsUti}ti}d|jo|idd}nd|jo|idd}ndt|t|ddtiti|f}ti i |i d|}yti |Wn~t j or}|itijoStid7_yt|SWq<t j o#}|itijoq5q<XqAnXtd |d S( s=Create a file in the tmp subdirectory and open and return it.t/s\057Rbs\072s%s.M%sP%sQ%s.%sig.ARcs&Name clash prevented file creation: %sN(Rtsockett gethostnameRQtintRtgetpidRt_countRRhRtstatRvRwRt_create_carefullyRxRy(RRthostnameRRR((s/usr/lib64/python2.6/mailbox.pyRms,    &cCsh|_xdD]}tii|i|}xxti|D]g}tii||}tii|oq>n|i|id}tii|||i|WqWdS(s!Update table of contents mapping.RdReiN(snewscur( RjRRRhRRRRtRp(RR~t subdir_pathRtpR((s/usr/lib64/python2.6/mailbox.pyRs cCsy<tiitii|i|i|o |i|SWntj onX|iy|i|SWn#tj otd|nXdS(s=Use TOC to return subpath for given key, or raise a KeyError.sNo message with key: %sN(RRRfRhRRjR#R(RR ((s/usr/lib64/python2.6/mailbox.pyRs, cCswt|dp|i|_nxMtoEy||iiSWq&tj odStj o q&q&Xq&WdS(s0Return the next message in a one-time iteration.t _onetime_keysN(R<R,RR>tnextt StopIterationRaR#(R((s/usr/lib64/python2.6/mailbox.pyRs( R^R_R`Rptrfc822RR>RRR!R$R%R)R+R*R,R5R7RCRDRERFRRRRRRRmRRR(((s/usr/lib64/python2.6/mailbox.pyRs6 "                t_singlefileMailboxcBseZdZdedZdZdZdZdZ dZ dZ dZ d Z d Zd Zd Zd ZdZddZdZRS(sA single-file mailbox.cCsti||||yt|id}Wntj ox}|itijo0|ot|id}qt|iq|itijot|id}qnX||_ d|_ d|_ t |_t |_d|_dS(s!Initialize a single-file mailbox.srb+swb+RiN(RRRRtIOErrorRwRRitEACCESt_fileRaRjt _next_keyR=t_pendingt_lockedt _file_length(RRRRRR((s/usr/lib64/python2.6/mailbox.pyRs"     cCsF|i|i||i|i<|id7_t|_|idS(s$Add message and return assigned key.i(Rt_append_messageRjRR>R(RR((s/usr/lib64/python2.6/mailbox.pyRs   cCs$|i||i|=t|_dS(s=Remove the keyed message; raise KeyError if it doesn't exist.N(RRjR>R(RR ((s/usr/lib64/python2.6/mailbox.pyR!s  cCs0|i||i||i|Replace the keyed message; raise KeyError if it doesn't exist.N(RRRjR>R(RR R((s/usr/lib64/python2.6/mailbox.pyR%!s ccs-|ix|iiD] }|VqWdS(sReturn an iterator over keys.N(RRjR.(RR ((s/usr/lib64/python2.6/mailbox.pyR,'s cCs|i||ijS(s9Return True if the keyed message exists, False otherwise.(RRj(RR ((s/usr/lib64/python2.6/mailbox.pyR5-s cCs|it|iS(s*Return a count of messages in the mailbox.(RRRj(R((s/usr/lib64/python2.6/mailbox.pyR72s cCs(|ipt|it|_ndS(sLock the mailbox.N(Rt _lock_fileRR>(R((s/usr/lib64/python2.6/mailbox.pyRD7s  cCs(|iot|it|_ndS(s#Unlock the mailbox if it is locked.N(Rt _unlock_fileRR=(R((s/usr/lib64/python2.6/mailbox.pyRE=s  c Csx|ipdS|iidd|ii}||ijotd|i|fnt|i}yh}|i|xt |i i D]}|i |\}}|ii||i ||i}xSt oK|iitd||ii}|djoPn|i|qW||if||<|i|qWWn$|iti|inXt||iiyti|i|iWnxtj ol} | itijp#tidjo=| itijo*ti|iti|i|iq,nXt|id|_||_ t|_|iot|id tndS( s"Write any pending changes to disk.Niis4Size of mailbox file changed (expected %i, found %i)iRHtos2srb+tdotlock( RRROttellRRyt_create_temporaryRt_pre_mailbox_hooktsortedRjR.t_pre_message_hookR>RGtminRPt_post_message_hookRFRR!RsRnRuRvRwRxRRR=RR( Rtcur_lentnew_filetnew_tocR tstarttstopt new_startRZR((s/usr/lib64/python2.6/mailbox.pyRCCsZ         #   cCsdS(s,Called before writing the mailbox to file f.N((RR((s/usr/lib64/python2.6/mailbox.pyR}scCsdS(s-Called before writing each message to file f.N((RR((s/usr/lib64/python2.6/mailbox.pyRscCsdS(s,Called after writing each message to file f.N((RR((s/usr/lib64/python2.6/mailbox.pyRscCs3|i|io|in|iidS(sFlush and close the mailbox.N(RCRRERRF(R((s/usr/lib64/python2.6/mailbox.pyRFs  cCsh|idjo|in|dj o9y|i|SWqdtj otd|qdXndS(s'Return (start, stop) or raise KeyError.sNo message with key: %sN(RjRat _generate_tocR#(RR ((s/usr/lib64/python2.6/mailbox.pyRs cCse|iidd|i|i|i|}|i|i|ii|ii|_|S(s;Append message to mailbox and return (start, stop) offsets.ii(RRORt_install_messageRRCRR(RRtoffsets((s/usr/lib64/python2.6/mailbox.pyRs N(R^R_R`RaR>RRR!R%R,R5R7RDRERCRRRRFRR(((s/usr/lib64/python2.6/mailbox.pyRs"         :     t _mboxMMDFcBs>eZdZeZdZedZedZdZ RS(sAn mbox or MMDF mailbox.cCs|i|\}}|ii||iiitid}|ii||ii}|i |itid}|i |d|S(s4Return a Message representation or raise a KeyError.RHs i( RRRORTRQRRRRGRt_message_factorytset_from(RR RRt from_linetstringR((s/usr/lib64/python2.6/mailbox.pyR)scCso|i|\}}|ii||p|iin|ii||ii}|itidS(s3Return a string representation or raise a KeyError.s ( RRRORTRGRRQRRR(RR tfrom_RRR((s/usr/lib64/python2.6/mailbox.pyR+s cCsY|i|\}}|ii||p|iint|i|ii|S(s6Return a file-like representation or raise a KeyError.(RRRORTt _PartialFileR(RR RRR((s/usr/lib64/python2.6/mailbox.pyR*s cCs:d}t|toX|idoH|id}|djo|| }||d}q|}d}nKt|tod|i}n't|tii o|i }n|djodt i t i }n|ii}|ii|ti|i||i|i|ii}||fS(s1Format a message and blindly write to self._file.sFrom s iiRHsFrom MAILER-DAEMON %sN(RaRIRSRUtfindt_mboxMMDFMessagetget_fromRJRRt get_unixfromRtasctimetgmtimeRRRPRRRR]t _mangle_from_(RRRtnewlineRR((s/usr/lib64/python2.6/mailbox.pyRs&     ( R^R_R`R>RR)R=R+R*R(((s/usr/lib64/python2.6/mailbox.pyRs  cBs5eZdZeZdedZdZdZRS(sA classic mbox mailbox.cCs#t|_ti||||dS(sInitialize an mbox mailbox.N(R RRR(RRRR((s/usr/lib64/python2.6/mailbox.pyRs cCs+|idjo|itindS(s-Called before writing each message to file f.iN(RRPRRR(RR((s/usr/lib64/python2.6/mailbox.pyRscCsgg}}|iidxto|ii}|ii}|idoHt|t|jo|i|tti n|i|q |djo|i|Pq q Wt t t |||_ t|i |_|ii|_dS(s0Generate key-to-(start, stop) table of contents.isFrom RHN(RROR>RRTRURRRRRtdictt enumeratetzipRjRR(Rtstartststopstline_posR\((s/usr/lib64/python2.6/mailbox.pyRs     N( R^R_R`R>RRaRRR(((s/usr/lib64/python2.6/mailbox.pyRs  cBs8eZdZdedZdZdZdZRS(sAn MMDF mailbox.cCs#t|_ti||||dS(sInitialize an MMDF mailbox.N(R RRR(RRRR((s/usr/lib64/python2.6/mailbox.pyRs cCs|idtidS(s-Called before writing each message to file f.sN(RPRRR(RR((s/usr/lib64/python2.6/mailbox.pyRscCs|itidtidS(s,Called after writing each message to file f.sN(RPRRR(RR((s/usr/lib64/python2.6/mailbox.pyR scCsngg}}|iidd}xto|}|ii}|ii}|idtio|i|xtoz|}|ii}|ii}|dtijo|i|t tiPqx|djo|i|PqxqxWq&|djoPq&q&Wt t t |||_ t |i |_|iidd|ii|_dS(s0Generate key-to-(start, stop) table of contents.isRHiN(RROR>RTRRURRRRRRRRRjRR(RRRtnext_posRR\((s/usr/lib64/python2.6/mailbox.pyRs6      N( R^R_R`RaR>RRRR(((s/usr/lib64/python2.6/mailbox.pyRs   cBseZdZdedZdZdZdZdZ dZ dZ dZ d Z d Zd Zd Zd ZdZdZdZdZdZdZdZdZdZRS(sAn MH mailbox.cCsti||||tii|ipp|oVti|idtititii |idti ti Bti Bdqt |int|_dS(sInitialize an MH instance.is .mh_sequencesiN(RRRRRfRRgRFRRhRtO_EXCLRRiR=R(RRRR((s/usr/lib64/python2.6/mailbox.pyR0s!"c Cs|i}t|djo d}nt|d}tii|it|}t|}zp|i ot |nz8|i ||t |t o|i||nWd|i ot|nXWdt|X|S(s$Add message and return assigned key.iiN(R.RtmaxRRRhRRSRRRR]RIR t_dump_sequencesRRn(RRR.tnew_keyRR((s/usr/lib64/python2.6/mailbox.pyR<s"      cCstii|it|}yt|d}Wn?tj o3}|itijot d|qsnXzk|i ot |nz3|i ti tii|it|Wd|i ot|nXWd|i XdS(s=Remove the keyed message; raise KeyError if it doesn't exist.srb+sNo message with key: %sN(RRRhRRSRRRwRR#RRRFR!R(RR RRR((s/usr/lib64/python2.6/mailbox.pyR!Ss   ) cCstii|it|}yt|d}Wn?tj o3}|itijot d|qsnXz|i ot |nz[ti ti|ti tiB|i||t|to|i||nWd|i ot|nXWdt|XdS(s>Replace the keyed message; raise KeyError if it doesn't exist.srb+sNo message with key: %sN(RRRhRRSRRRwRR#RRRFRtO_TRUNCR]RIR RRRn(RR RRRR((s/usr/lib64/python2.6/mailbox.pyR%is$ # c Cs=y`|io+ttii|it|d}n(ttii|it|d}Wn?tj o3}|iti jot d|qnXzH|iot |nzt |}Wd|iot |nXWd|iXx>|iiD]*\}}||jo|i|q q W|S(s4Return a Message representation or raise a KeyError.sr+RsNo message with key: %sN(RRRRRhRRSRRwRR#RR RRFt get_sequencesR3t add_sequence(RR RRRRstkey_list((s/usr/lib64/python2.6/mailbox.pyR)s* ++     c Csy`|io+ttii|it|d}n(ttii|it|d}Wn?tj o3}|iti jot d|qnXzF|iot |nz|i SWd|iot |nXWd|iXdS(s3Return a string representation or raise a KeyError.sr+RsNo message with key: %sN(RRRRRhRRSRRwRR#RRGRRF(RR RR((s/usr/lib64/python2.6/mailbox.pyR+s  ++  cCswy+ttii|it|d}Wn?tj o3}|itijot d|qmnXt |S(s6Return a file-like representation or raise a KeyError.RsNo message with key: %s( RRRRhRRSRRwRR#R(RR RR((s/usr/lib64/python2.6/mailbox.pyR*s+cCs&ttdti|iDS(sReturn an iterator over keys.css0x)|]"}|iot|VqqWdS(N(tisdigitR(t.0R((s/usr/lib64/python2.6/mailbox.pys s (titerRRRR(R((s/usr/lib64/python2.6/mailbox.pyR,scCs(tiitii|it|S(s9Return True if the keyed message exists, False otherwise.(RRRfRhRRS(RR ((s/usr/lib64/python2.6/mailbox.pyR5scCstt|iS(s*Return a count of messages in the mailbox.(RR-R,(R((s/usr/lib64/python2.6/mailbox.pyR7scCsL|ip>ttii|idd|_t|it|_ndS(sLock the mailbox.s .mh_sequencessrb+N( RRRRRhRRRR>(R((s/usr/lib64/python2.6/mailbox.pyRDs $ cCs;|io-t|it|i|`t|_ndS(s#Unlock the mailbox if it is locked.N(RRRRnR=(R((s/usr/lib64/python2.6/mailbox.pyREs    cCsdS(s&Write any pending changes to the disk.N((R((s/usr/lib64/python2.6/mailbox.pyRCscCs|io|indS(sFlush and close the mailbox.N(RRE(R((s/usr/lib64/python2.6/mailbox.pyRFs cCs]g}xPti|iD]<}tiitii|i|o|i|qqW|S(sReturn a list of folder names.(RRRRRRhR(RR9R((s/usr/lib64/python2.6/mailbox.pyRs %cCs+ttii|i|d|idtS(s+Return an MH instance for the named folder.RR(RRRRhRRR=(RR((s/usr/lib64/python2.6/mailbox.pyRscCs%ttii|i|d|iS(s:Create a folder and return an MH instance representing it.R(RRRRhRR(RR((s/usr/lib64/python2.6/mailbox.pyRscCstii|i|}ti|}|dgjo titii|dn%|gjontd|iti|dS(s-Delete the named folder, which must be empty.s .mh_sequencessFolder not empty: %sN(RRRhRRR!RR(RRRtentries((s/usr/lib64/python2.6/mailbox.pyRs  c Csh}ttii|idd}zGt|i}x.|D]&}y|id\}}t}xq|iD]c}|io|i t |qwd|idD\} } |i t | | dqwWg} t |D]} | |jo | | qq~ ||s t-iis"Invalid sequence specification: %sN(RRRRhRtsetR.RtRRRRBtrangeRRt ValueErrort FormatErrortrstripRF( RtresultsRtall_keysR\RstcontentsR.tspecRRt_[1]R ((s/usr/lib64/python2.6/mailbox.pyRs0!   % c Csottii|idd}z<titi|ititiBx|i D]\}}t |djoqWn|i d|d }t }xtt|D]x}|d|jo"|pt}|i dqn:|o!t }|i d||fn|i d||}qW|o|i t|d qW|i d qWWWd t|Xd S( s:Set sequences using the given name-to-key-list dictionary.s .mh_sequencessr+is%s:iRs%s %ss %ss N(RRRRhRRFRsRRR3RRPRaR=RRR>RSRn(Rt sequencesRRsR.tprevt completingR ((s/usr/lib64/python2.6/mailbox.pyt set_sequencess2!&  c Cs|i}d}g}x |iD]}|d|jo|i||dfttdomtitii|it |tii|it |dti tii|it |qti tii|it |tii|it |dn|d7}q%W|d|_ t |djodSxU|iD]G\}}x8|D]0\}}||jo|||i|RRR!R%R)R+R*R,R5R7RDRERCRFRRRRRR RR(((s/usr/lib64/python2.6/mailbox.pyR-s.                  cBseZdZedZdedZd Zd Z d Z d Z d Z dZ dZdZdZdZdZdZRS(sAn Rmail-style Babyl mailbox.tunseentdeletedtfiledtansweredt forwardedteditedtresentcCs#ti||||h|_dS(sInitialize a Babyl mailbox.N(RRt_labels(RRRR((s/usr/lib64/python2.6/mailbox.pyRgscCs=ti||}t|to|i|i|ti|||t|to|i|i|Replace the keyed message; raise KeyError if it doesn't exist.N(RR%RIR RR(RR R((s/usr/lib64/python2.6/mailbox.pyR%ysc Cs|i|\}}|ii||iiti}x]toU|ii}|dtijp |djoPn|i|i tidqAWti}xYtoQ|ii}|tijp |djoPn|i|i tidqW|ii ||ii i tid}t |i |}|i|i ||ijo|i|i|n|S(s4Return a Message representation or raise a KeyError.s *** EOOH ***RHs (RRRORTRKR>RRRRPRQRGRR tgetvaluet set_visibleRt set_labels( RR RRtoriginal_headersR\tvisible_headerstbodyR((s/usr/lib64/python2.6/mailbox.pyR)s0  !! !% cCs|i|\}}|ii||iiti}x]toU|ii}|dtijp |djoPn|i|i tidqAWx=to5|ii}|tijp |djoPqqW|i |ii ||ii i tidS(s3Return a string representation or raise a KeyError.s *** EOOH ***RHs ( RRRORTRKR>RRRRPRQRRGR(RR RRR!R\((s/usr/lib64/python2.6/mailbox.pyR+s$  !!  %cCs%ti|i|idtiS(s6Return a file-like representation or raise a KeyError.s (RKR+RQRRR(RR ((s/usr/lib64/python2.6/mailbox.pyR*scCsT|it}x$|iiD]}|i|q#W|i|it|S(s4Return a list of user-defined labels in the mailbox.(RRRR2RBtdifference_updatet_special_labelsR-(Rtlabelst label_list((s/usr/lib64/python2.6/mailbox.pyRs  c Csgg}}|iidd}g}xutom|}|ii}|ii}|dtijot|t|jo|i|ttin|i|g}|iidi dD]*}|i djo||i qq~} |i| q,|djp|dtijo;t|t|jo|i|ttiqq,|djo|i|ttiPq,q,Wt t t |||_t t ||_t|i|_|iidd|ii|_dS( s0Generate key-to-(start, stop) table of contents.is it,RHsiN(RROR>RTRRRRRRRttstripRRRRjRRR( RRRRt label_listsRR\RtlabelR&((s/usr/lib64/python2.6/mailbox.pyRs8   -!"  cCs9|idtitidi|itifdS(s,Called before writing the mailbox to file f.s(BABYL OPTIONS:%sVersion: 5%sLabels:%s%sR(N(RPRRRRhR(RR((s/usr/lib64/python2.6/mailbox.pyRs cCs|idtidS(s-Called before writing each message to file f.s N(RPRRR(RR((s/usr/lib64/python2.6/mailbox.pyRscCs|itiddS(s,Called after writing each message to file f.sN(RPRRR(RR((s/usr/lib64/python2.6/mailbox.pyRsc CsX|ii}t|tog}g}xB|iD]4}||ijo|i|q8|i|q8W|iidx"|D]}|iid|qW|iidx&|D]}|iid|dqW|iiti n|iidti t|t i i o t i }t ii|td}|i||idxVtoN|i}|ii|idti |djp |d joPqcqcW|iid ti t|tot i } t ii| td} | i|ixtoN| i}|ii|idti |djp |d joPqqWng|idxVtoN|i}|ii|idti |djp |d joPqqWxbtoD|id } | d joPn|ii| idti qWnt|to|id d } | d djo|ii|| idti |iid ti |ii|| idti |ii|| idti q?|iid ti ti |ii|idti nt|do|i} t}xto|i}|ii|idti |djp |d jo:|iid ti |ot}|i| qPqKqKWxftoD|id } | d joPn|ii| idti qWntdt||ii}||fS(s0Write message contents and return (start, stop).t1s, s,,t R(s1,,is RHs *** EOOH ***is iiRTsInvalid message type: %s(RRRIR RR%RRPRRRRJRRRKRLRMR=RNROR>RTRQt get_visibleRGRSRR<RVRW(RRRtspecial_labelsR&R+t orig_buffertorig_generatorR\t vis_buffert vis_generatorRZt body_startt original_post first_passR((s/usr/lib64/python2.6/mailbox.pyRs            (  #    ((RRRRRRRN(R^R_R`t frozensetR%RaR>RRR!R%R)R+R*RRRRRR(((s/usr/lib64/python2.6/mailbox.pyRas            cBs,eZdZddZdZdZRS(s0Message with mailbox-format-specific properties.cCst|tiio;|iti|t|to|i|qnt|to|iti |net |do|iti |n;|djotiii |ntdt|dS(sInitialize a Message instance.RGsInvalid message type: %sN(RIRJRRt_become_messagetcopytdeepcopyt _explain_toRStmessage_from_stringR<tmessage_from_fileRaRRVRW(RR((s/usr/lib64/python2.6/mailbox.pyRAs cCs)x"d D]}|i||i|R?R@RARBRCRDRE(t__dict__(RRRs((s/usr/lib64/python2.6/mailbox.pyR8PscCs%t|todStddS(s:Copy format-specific state to message insofar as possible.Ns Cannot convert to specified type(RIRRV(RR((s/usr/lib64/python2.6/mailbox.pyR;VsN(R^R_R`RaRR8R;(((s/usr/lib64/python2.6/mailbox.pyR>s  cBs}eZdZd dZdZdZdZdZdZ dZ dZ d Z d Z d Zd ZRS(s)Message with Maildir-specific properties.cCs5d|_d|_ti|_ti||dS(s%Initialize a MaildirMessage instance.RdRHN(t_subdirt_infoRt_dateRR(RR((s/usr/lib64/python2.6/mailbox.pyRas  cCs|iS(sReturn 'new' or 'cur'.(RG(R((s/usr/lib64/python2.6/mailbox.pyRohscCs;|djp |djo ||_ntd|dS(sSet subdir to 'new' or 'cur'.RdRes!subdir must be 'new' or 'cur': %sN(RGR(RR~((s/usr/lib64/python2.6/mailbox.pyRls cCs'|iido |idSdSdS(s*Return as a string the flags that are set.s2,iRHN(RHRU(R((s/usr/lib64/python2.6/mailbox.pyt get_flagsss cCs ddit||_dS(s)Set the given flags and unset all others.s2,RHN(RhRRH(Rtflags((s/usr/lib64/python2.6/mailbox.pyt set_flagszscCs0|idit|it|BdS(s.Set the given flag(s) without changing others.RHN(RLRhRRJ(Rtflag((s/usr/lib64/python2.6/mailbox.pytadd_flag~scCsG|idjo0|idit|it|ndS(s7Unset the given string flag(s) without changing others.RHN(RJRLRhR(RRM((s/usr/lib64/python2.6/mailbox.pyt remove_flagscCs|iS(s<Return delivery date of message, in seconds since the epoch.(RI(R((s/usr/lib64/python2.6/mailbox.pyR|scCs=yt||_Wn#tj otd|nXdS(s9Set delivery date of message, in seconds since the epoch.scan't convert to float: %sN(tfloatRIRRV(Rtdate((s/usr/lib64/python2.6/mailbox.pyRscCs|iS(s%Get the message's "info" as a string.(RH(R((s/usr/lib64/python2.6/mailbox.pyRqscCs7t|to ||_ntdt|dS(s Set the message's "info" string.sinfo must be a string: %sN(RIRSRHRVRW(Rtinfo((s/usr/lib64/python2.6/mailbox.pyRs cCszt|to=|i|i|i|i|i|in*t|tot |i}d|jo|i dn|idjo|i dnd|jo|i dnd|jo|i dnd|jo|i dn|i d t i |inIt|topt |i}d|jo|id nd|jo|id nd|jo|id qvnt|tot |i}d|jo|id nd|jo|id nd|jo|idnd|jo|idqvn+t|tontdt|dS(s;Copy Maildir-specific state to message insofar as possible.tStRRetOtTtDtFtAs MAILER-DAEMONRtrepliedtflaggedRRtPRs$Cannot convert to specified type: %sN(RIR RLRJRRoRR|RRRNRRRR RR t add_labelRRVRW(RRRK((s/usr/lib64/python2.6/mailbox.pyR;sN    #       N(R^R_R`RaRRoRRJRLRNROR|RRqRR;(((s/usr/lib64/python2.6/mailbox.pyR ^s           RcBs\eZdZd dZdZd dZdZdZdZ dZ dZ RS( s/Message with mbox- or MMDF-specific properties.cCs||idtt|tiioB|i}|dj o%|ido|i|dqhnti ||dS(s'Initialize an mboxMMDFMessage instance.s MAILER-DAEMONsFrom iN( RR>RIRJRRRRaRUR(RRtunixfrom((s/usr/lib64/python2.6/mailbox.pyRs  cCs|iS(s Return contents of "From " line.(t_from(R((s/usr/lib64/python2.6/mailbox.pyRscCsR|dj o8|tjoti}n|dti|7}n||_dS(s>Set "From " line, formatting and appending time_ if specified.R-N(RaR>RRRR_(RRttime_((s/usr/lib64/python2.6/mailbox.pyRs   cCs |idd|iddS(s*Return as a string the flags that are set.tStatusRHsX-Status(R((R((s/usr/lib64/python2.6/mailbox.pyRJsc Cst|}d \}}x6d D].}||jo||7}|i|qqWx6d D].}||jo||7}|i|qXqXW|dit|7}y|id|Wn#tj o|id|nXy|id|Wn#tj o|id|nXd S( s)Set the given flags and unset all others.RHRTRURWRXRYRasX-StatusN(RHRH(RTRU(RWRXRY(RR!RhRtreplace_headerR#t add_header(RRKt status_flagst xstatus_flagsRM((s/usr/lib64/python2.6/mailbox.pyRLs*      cCs0|idit|it|BdS(s.Set the given flag(s) without changing others.RHN(RLRhRRJ(RRM((s/usr/lib64/python2.6/mailbox.pyRNscCsNd|jp d|jo0|idit|it|ndS(s7Unset the given string flag(s) without changing others.RasX-StatusRHN(RLRhRRJ(RRM((s/usr/lib64/python2.6/mailbox.pyROsc Cst|tot|i}d|jo|idnd|jo|idnd|jo|idnd|jo|idnd|jo|idn|d =|d =d i|iid }y&|i t i t i |d Wqttfj oqXnt|to*|i|i|i|inGt|to~t|i}d|jo|idnd|jo|idnd|jo|idn|d =|d =nt|to~t|i}d|jo|idnd|jo|idnd|jo|idn|d =|d =n+t|tontdt|dS(sACopy mbox- or MMDF-specific state to message insofar as possible.RUReRXRYRTRSRWRVtstatussx-statusR-is%a %b %d %H:%M:%S %YRRZR[RRs$Cannot convert to specified type: %sN(RIR RRJRRNRhRRtRtcalendarttimegmRtstrptimeRt OverflowErrorRRLRR RR R]RRVRW(RRRKt maybe_date((s/usr/lib64/python2.6/mailbox.pyR;s^              N( R^R_R`RaRRRRJRLRNROR;(((s/usr/lib64/python2.6/mailbox.pyRs      cBseZdZRS(s&Message with mbox-specific properties.(R^R_R`(((s/usr/lib64/python2.6/mailbox.pyR 8scBsGeZdZddZdZdZdZdZdZ RS(s$Message with MH-specific properties.cCsg|_ti||dS(s!Initialize an MHMessage instance.N(t _sequencesRR(RR((s/usr/lib64/python2.6/mailbox.pyR?s cCs|iS(s4Return a list of sequences that include the message.(Rl(R((s/usr/lib64/python2.6/mailbox.pyRDscCst||_dS(s3Set the list of sequences that include the message.N(R-Rl(RR ((s/usr/lib64/python2.6/mailbox.pyR HscCsRt|to(||ijo|ii|qNntdt|dS(s8Add sequence to list of sequences including the message.ssequence must be a string: %sN(RIRSRlRRVRW(RR((s/usr/lib64/python2.6/mailbox.pyRLscCs.y|ii|Wntj onXdS(sARemove sequence from the list of sequences including the message.N(RlR!R(RR((s/usr/lib64/python2.6/mailbox.pytremove_sequenceTscCst|tot|i}d|jo|idn|id|idd|jo|idnd|jo|idqnRt|to}t|i}d|jo|idn|id d|jo|idnd|jo|id qnt|to(x|iD]}|i|qDWnt|t oRt|i}d|jo|i dnd|jo|i d qn+t|t ont d t |d S(s6Copy MH-specific state to message insofar as possible.RReRSR[RXRZRTtRORURYRs$Cannot convert to specified type: %sN(RIR RRRRNRR RR R]RRVRW(RRR R((s/usr/lib64/python2.6/mailbox.pyR;[sB            N( R^R_R`RaRRR RRmR;(((s/usr/lib64/python2.6/mailbox.pyR <s     cBsbeZdZd dZdZdZdZdZdZ dZ dZ d Z RS( s'Message with Babyl-specific properties.cCs)g|_t|_ti||dS(s$Initialize an BabylMessage instance.N(RRt_visibleR(RR((s/usr/lib64/python2.6/mailbox.pyRs  cCs|iS(s'Return a list of labels on the message.(R(R((s/usr/lib64/python2.6/mailbox.pyRscCst||_dS(s&Set the list of labels on the message.N(R-R(RR&((s/usr/lib64/python2.6/mailbox.pyR scCsRt|to(||ijo|ii|qNntdt|dS(s+Add label to list of labels on the message.slabel must be a string: %sN(RIRSRRRVRW(RR+((s/usr/lib64/python2.6/mailbox.pyR]scCs.y|ii|Wntj onXdS(s4Remove label from the list of labels on the message.N(RR!R(RR+((s/usr/lib64/python2.6/mailbox.pyt remove_labelscCs t|iS(s3Return a Message representation of visible headers.(RRo(R((s/usr/lib64/python2.6/mailbox.pyR.scCst||_dS(s2Set the Message representation of visible headers.N(RRo(Rtvisible((s/usr/lib64/python2.6/mailbox.pyRscCsxI|iiD]8}||jo|ii|||q|i|=qWx@dD]8}||jo%||ijo|||i|R RuRvRxR!tLOCK_UN(RRt dotlock_doneRtpre_lock((s/usr/lib64/python2.6/mailbox.pyR?sL  #cCsTtoti|tintii|idoti|idndS(s*Unlock file f using lockf and dot locking.s.lockN(RRRRRRfRsR!(R((s/usr/lib64/python2.6/mailbox.pyRlscCsLti|titiBtiBd}zt|dSWdti|XdS(sCCreate a file if it doesn't exist and open for reading and writing.isrb+N(RRRRtO_RDWRRF(Rtfd((s/usr/lib64/python2.6/mailbox.pyRss&cCs2td|ttititifS(sBCreate a temp file based on path and open for reading and writing.s %s.%s.%s.%s(RRRRRRR(R((s/usr/lib64/python2.6/mailbox.pyR{s cCs5|ittdoti|indS(s0Ensure changes to file f are physically on disk.tfsyncN(RCR<RRtfileno(R((s/usr/lib64/python2.6/mailbox.pyt _sync_flushs cCst||idS(s:Close file f, ensuring all changes are physically on disk.N(RRF(R((s/usr/lib64/python2.6/mailbox.pyRns t_MailboxcBs)eZeidZdZdZRS(cCs||_d|_||_dS(Ni(tfptseekpR(RRR((s/usr/lib64/python2.6/mailbox.pyRs  cCst|idS(N(RRRa(R((s/usr/lib64/python2.6/mailbox.pyR1scCsx|ii|iy|iWn&tj o|ii|_dSX|ii}|i|ii|_}||joPqq|it |i||S(N( RRORt _search_starttEOFErrorRRat _search_endRR(RRR((s/usr/lib64/python2.6/mailbox.pyRs  (R^R_RRRR1R(((s/usr/lib64/python2.6/mailbox.pyRs cBs>eZdZdZdZdZdZdZeZ RS(cCsoxh|ii}|ii}|p tn|d djo%|i|o|ii|dSqdS(NisFrom (RRRTRt_isrealfromlineRO(RRzR\((s/usr/lib64/python2.6/mailbox.pyRs !cCsw|iixc|ii}|ii}|pdS|d djo%|i|o|ii|dSqdS(NisFrom (RRTRRRO(RRzR\((s/usr/lib64/python2.6/mailbox.pyRs !saFrom \s*[^\s]+\s+\w\w\w\s+\w\w\w\s+\d?\d\s+\d?\d:\d\d(:\d\d)?(\s+[^\s]+)?\s+\d\d\d\d\s*[^\s]*\s*$cCs?|ip%ddk}|i|i|_n|ii|S(Ni(t_regexptretcompilet_fromlinepatterntmatch(RR\R((s/usr/lib64/python2.6/mailbox.pyt_strict_isrealfromlines  cCstS(N(R>(RR\((s/usr/lib64/python2.6/mailbox.pyt_portable_isrealfromlinesN( R^R_RRRRaRRRR(((s/usr/lib64/python2.6/mailbox.pyRs $  cBseZeiZRS((R^R_RRR(((s/usr/lib64/python2.6/mailbox.pyRscBseZdZdZRS(cCs@x9|ii}|p tn|d djodSqdS(Nis (RRTR(RR\((s/usr/lib64/python2.6/mailbox.pyRs  cCsVxO|ii}|ii}|pdS|djo|ii|dSqdS(Ns (RRRTRO(RRzR\((s/usr/lib64/python2.6/mailbox.pyRs (R^R_RR(((s/usr/lib64/python2.6/mailbox.pyRs cBs)eZeidZdZdZRS(cCsddk}|id}||_ti|i}t|i|}tt|}|i tt ||_ |i i ||_ dS(Nis ^[1-9][0-9]*$(RRRkRRtfilterRtmaptlongtsortRStboxestreverseR(RRkRRtpatR-((s/usr/lib64/python2.6/mailbox.pyRs    cCst|idS(N(RRRa(R((s/usr/lib64/python2.6/mailbox.pyR1scCsx|ipdS|ii}ttii|i|}|i|}y ||_ Wnt t fj onX|S(N( RRaR:RRRRhRkRt _mh_msgnotAttributeErrorRV(RtfnRR((s/usr/lib64/python2.6/mailbox.pyRs  (R^R_RRRR1R(((s/usr/lib64/python2.6/mailbox.pyRs cBseZdZdZRS(cCs<x5|ii}|p tn|djodSqdS(Ns *** EOOH *** (RRTR(RR\((s/usr/lib64/python2.6/mailbox.pyR*s   cCscx\|ii}|ii}|pdS|djp |djo|ii|dSqdS(Ns s(RRRTRO(RRzR\((s/usr/lib64/python2.6/mailbox.pyR2s(R^R_RR(((s/usr/lib64/python2.6/mailbox.pyR(s tErrorcBseZdZRS(s"Raised for module-specific errors.(R^R_R`(((s/usr/lib64/python2.6/mailbox.pyR?sRicBseZdZRS(s:The specified mailbox does not exist and won't be created.(R^R_R`(((s/usr/lib64/python2.6/mailbox.pyRiBsRcBseZdZRS(s>The specified mailbox is not empty and deletion was requested.(R^R_R`(((s/usr/lib64/python2.6/mailbox.pyREsRycBseZdZRS(s)Another process caused an action to fail.(R^R_R`(((s/usr/lib64/python2.6/mailbox.pyRyHsRcBseZdZRS(s)A file appears to have an invalid format.(R^R_R`(((s/usr/lib64/python2.6/mailbox.pyRKs(>R`tsysRRRgRRwR9RJt email.messagetemail.generatorRKtplatformt ImportErrorRRatwarningstcatch_warningst__exit__t __enter__t py3kwarningtfilterwarningstDeprecationWarningRt__all__RRRRRRRRRRR RR R R R RRR>RRRRRRnRRRRRRt ExceptionRRiRRyR(((s/usr/lib64/python2.6/mailbox.pyts~                   8"-5 koF];! -     B"