PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB`  lYR2@s*ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Zddl Z ddl Z yddl Z Wne k rdZ YnXdddddddd d d d d g ZejjdZGdddZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddejjZGdd d eZGdddeZGdd d eZGdd d eZGdd d eZGd d d eZ Gd!d"d"Z!Gd#d$d$e!Z"d%d&d'Z#d(d)Z$d*d+Z%d,d-Z&d.d/Z'd0d1Z(Gd2d3d3e)Z*Gd4d5d5e*Z+Gd6d7d7e*Z,Gd8d9d9e*Z-Gd:d;d;e*Z.dS)<NMailboxMaildirmboxMHBabylMMDFMessageMaildirMessage mboxMessage MHMessage BabylMessage MMDFMessageasciic@seZdZddddZddZddZd d Zd d Zd dZdddZ ddZ ddZ ddZ ddZ ddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zdd/d0Zd1d2Zdd3d4Zd5d6Zd7d8Zd9d:Zd;d<Zd=d>Z d?Z!d?d@dAZ"dS)BrNTcCs.tjjtjj||_||_dS)N)ospathabspath expanduser_path_factory)selfrfactorycreater&/opt/python35/lib/python3.5/mailbox.py__init__#s!zMailbox.__init__cCstddS)Nz&Method must be implemented by subclass)NotImplementedError)rmessagerrradd(sz Mailbox.addcCstddS)Nz&Method must be implemented by subclass)r)rkeyrrrremove,szMailbox.removecCs|j|dS)N)r)rrrrr __delitem__0szMailbox.__delitem__c Cs*y|j|Wntk r%YnXdS)N)rKeyError)rrrrrdiscard3s zMailbox.discardcCstddS)Nz&Method must be implemented by subclass)r)rrrrrr __setitem__:szMailbox.__setitem__c Cs.y|j|SWntk r)|SYnXdS)N) __getitem__r!)rrdefaultrrrget>s z Mailbox.getc CsI|js|j|Stj|j|}|j|SWdQRXdS)N)r get_message contextlibclosingget_file)rrfilerrrr$Es  zMailbox.__getitem__cCstddS)Nz&Method must be implemented by subclass)r)rrrrrr'MszMailbox.get_messagecCstj|j|jS)N)emailmessage_from_bytes get_bytes as_string)rrrrr get_stringQszMailbox.get_stringcCstddS)Nz&Method must be implemented by subclass)r)rrrrrr.XszMailbox.get_bytescCstddS)Nz&Method must be implemented by subclass)r)rrrrrr*\szMailbox.get_filecCstddS)Nz&Method must be implemented by subclass)r)rrrriterkeys`szMailbox.iterkeyscCst|jS)N)listr1)rrrrkeysdsz Mailbox.keysc csFx?|jD]1}y||}Wntk r8w YnX|Vq WdS)N)r1r!)rrvaluerrr itervalueshs  zMailbox.itervaluescCs |jS)N)r5)rrrr__iter__qszMailbox.__iter__cCst|jS)N)r2r5)rrrrvaluestszMailbox.valuesc csLxE|jD]7}y||}Wntk r8w YnX||fVq WdS)N)r1r!)rrr4rrr iteritemsxs  zMailbox.iteritemscCst|jS)N)r2r8)rrrritemssz Mailbox.itemscCstddS)Nz&Method must be implemented by subclass)r)rrrrr __contains__szMailbox.__contains__cCstddS)Nz&Method must be implemented by subclass)r)rrrr__len__szMailbox.__len__cCs(x!|jD]}|j|q WdS)N)r3r")rrrrrclearsz Mailbox.clearc Cs8y||}Wntk r&|SYnX|j||S)N)r!r")rrr%resultrrrpops    z Mailbox.popcCs7x0|jD]}||j|fSWtddS)NzNo messages in mailbox)r1r>r!)rrrrrpopitemszMailbox.popitemc Cst|dr|j}n$t|dr<|j}n|}d}x=|D]5\}}y|||From readbufferzDUse of text mode files is deprecated, use a binary mode file insteads s sFrom s>From zInvalid message type: %s) isinstancer,rrioBytesIO generatorBytesGeneratorflattenseekrMreplacelinesepwrite_append_newlineendswithstrbytesStringIOwarningswarnDeprecationWarninggetvaluerKr@rNreadline startswith TypeErrortype) rrtargetZ mangle_from_rNgendataZlastlinelinerrr _dump_messagesZ               zMailbox._dump_message)#__name__ __module__ __qualname__rrrr r"r#r&r$r'r0r.r*r1r3r5r6r7r8r9r:r;r<r>r?rCrDrErFrGrKr^rorrrrr s@                         c@sBeZdZdZddddZddZdd Zd d Zd d ZddZ ddZ ddZ ddZ ddZ ddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,Zd-d.Zd/d0Zd1d2Zd3d4ZdS)5r:NTcCstj||||dtjj|jddtjj|jddtjj|jdi|_tjj|js|rtj|jdx9|jj D]}tj|dqWnt |ji|_ ddddi|_ d|_ d|_dS)Ntmpnewcurirg?)rrrrjoinr_pathsexistsmkdirr7NoSuchMailboxError_toc _toc_mtimes _last_read _skewfactor)rdirnamerrrrrrr s!  zMaildir.__init__cCs|j}y|j||Wn/tk rQ|jtj|jYnXt|t|t r|j }|j |j }||j krd}n d}d}tj j|jj|j d}tj j|j|||}t|t r/tj|jtj j|j|jfyLttdrgtj|j|tj|jntj|j|Wn]tk r}z=tj|j|jtjkrtd|nWYdd}~XnX|S)Nrurlinkz$Name clash with existing message: %s) _create_tmpro BaseExceptionrGrrname _sync_closerTr get_subdircolonget_inforbasenamesplitrwrutimegetatimeget_dater@rrenameOSErrorerrnoEEXISTExternalClashError)rrZtmp_filesubdirsuffixuniqdesterrrr s@      % " z Maildir.addcCs,tjtjj|j|j|dS)N)rrrrwr_lookup)rrrrrrIszMaildir.removec Cs0y|j|Wnttfk r+YnXdS)N)rr!FileNotFoundError)rrrrrr"MszMaildir.discardc Cs!|j|}|j|}|j|}t|trE|}n|}tjj|}|j|kr|j|j|jd}nd}|j |tjj |j |} tjj |j |||} t|tr tj | tjj | |jftj| | dS)NrPrrS)rrrTr rrrrrr"rwrrrrr) rrrZ old_subpathZtemp_keyZ temp_subpathZdominant_subpathrrZtmp_pathnew_pathrrrr#Us"    zMaildir.__setitem__c Cs|j|}ttjj|j|d.}|jrN|j|}n t|}WdQRXtjj|\}}|j ||j |kr|j |j|j d|j tjj tjj|j||S)NrbrPrS)ropenrrrwrrr r set_subdirrset_infoset_dategetmtime)rrsubpathfmsgrrrrrr'ps$  +zMaildir.get_messagec CsNttjj|j|j|d}|jjtdSWdQRXdS)Nrs ) rrrrwrrrMr[r\)rrrrrrr.s-zMaildir.get_bytescCs4ttjj|j|j|d}t|S)Nr)rrrrwrr _ProxyFile)rrrrrrr*s*zMaildir.get_filec csP|jx?|jD]4}y|j|Wntk rBwYnX|VqWdS)N)_refreshr|rr!)rrrrrr1s  zMaildir.iterkeyscCs|j||jkS)N)rr|)rrrrrr:s zMaildir.__contains__cCs|jt|jS)N)rlenr|)rrrrr;s zMaildir.__len__cCsdS)Nr)rrrrrDsz Maildir.flushcCsdS)Nr)rrrrrEsz Maildir.lockcCsdS)Nr)rrrrrFszMaildir.unlockcCsdS)Nr)rrrrrGsz Maildir.closecCsg}xwtj|jD]c}t|dkr|ddkrtjjtjj|j|r|j|ddqW|S)NrPr.)rlistdirrrrisdirrwappend)rr=entryrrr list_folderss "$zMaildir.list_folderscCs/ttjj|jd|d|jddS)NrrrF)rrrrwrr)rfolderrrr get_folders zMaildir.get_foldercCstjj|jd|}t|d|j}tjj|d}tjj|s~tjtj|tj tj Bd|S)NrrZ maildirfolderi) rrrwrrrryrGrO_CREATO_WRONLY)rrrr=Zmaildirfolder_pathrrr add_folders zMaildir.add_foldercCstjj|jd|}xttjtjj|dtjtjj|dD]8}t|dks|ddkrWtd|qWWxrtj|D]a}|dkr|dkr|dkrtjjtjj||rtd||fqWxtj|d d D]i\}}}x*|D]"}tj tjj||q4Wx*|D]"}tj tjj||qaWqWtj |dS) NrrurvrPrzFolder contains message(s): %srtz%Folder contains subdirectory '%s': %stopdownF) rrrwrrr NotEmptyErrorrwalkrrmdir)rrrrrootdirsfilesrrr remove_folders #"$!%   $zMaildir.remove_foldercCstj}xmtjtjj|jdD]J}tjj|jd|}|tjj|dkr.tj|q.WdS)Nrti@)timerrrrwrrr)rnowrrrrrcleans  (z Maildir.cleanrPcCstj}tj}d|kr6|jdd}d|krT|jdd}dt|t|ddtjtj|f}tj j |j d|}ytj |WnDt k rtjd7_yt|SWntk rYnXYnXtd |dS) N/z\057rsz\072z%s.M%sP%sQ%s.%srPg.Artz&Name clash prevented file creation: %s)rsocket gethostnamer[intrgetpidr_countrrwrstatr_create_carefullyFileExistsErrorr)rrhostnamerrrrrrs&    &   zMaildir._create_tmpcCs6tj|jd|jkrd}xP|jD]E}tjj|j|}||j|krhd}||j|z|jWdz|jr'|jWd|jjXXdS)N)rDrrFrrG)rrrrrGs  z_singlefileMailbox.closec Cs]|jdkr|j|dk rYy|j|SWn"tk rXtd|YnXdS)NzNo message with key: %s)r| _generate_tocr!)rrrrrrs   z_singlefileMailbox._lookupc Cs|jjdd|jj}t|jdkrQ|j rQ|j|jy3|j|j|j|}|j |jWn%t k r|jj |YnX|jj |jj|_ |S)NrrO)rrZrrr|rrr_install_messagerrtruncaterDr)rrZbeforeZoffsetsrrrrs  z"_singlefileMailbox._append_message)rprqrrrrrr#r1r:r;rErFrDrrrrGrrrrrrr<s         @     rc@s[eZdZdZddZdddZdddZdd d Zd d Zd S) _mboxMMDFTcCs|j|\}}|jj||jjjtd}|jj||jj}|j|jtd}|j |ddj d|S)Ns rQr) rrrZrgr[r\rMr_message_factoryset_fromdecode)rrrr from_linestringrrrrr's z_mboxMMDF.get_messageFcCs"tj|j|jd|S)Nunixfrom)r,r-r.r/)rrfrom_rrrr0sz_mboxMMDF.get_stringcCsg|j|\}}|jj||s8|jj|jj||jj}|jtdS)Ns )rrrZrgrMrr[r\)rrrrrrrrrr.s  z_mboxMMDF.get_bytescCsT|j|\}}|jj||s8|jjt|j|jj|S)N)rrrZrg _PartialFiler)rrrrrrrrr*s  z_mboxMMDF.get_filecCsd}t|tr$|j|}t|tr|jdr|jd}|dkr|d|}||dd}q|}d}nmt|tr|jjd}d|}n<t|t j j r|j }|dk r|jd}|dkr+dt jt jj}|jj}|jj|t|j||j|j|jj}||fS)NsFrom s rPrrsFrom MAILER-DAEMON rS)rTr`rKrarhfind_mboxMMDFMessageget_fromrHr,rr get_unixfromrasctimegmtimerrr]r\ro _mangle_from_)rrrnewlineZauthorrrrrrr$s0      z_mboxMMDF._install_messageN) rprqrrrr'r0r.r*rrrrrrs   rc@sFeZdZdZdZddddZddZddZdS) rTNcCs#t|_tj||||dS)N)r rrr)rrrrrrrrJs z mbox.__init__cCs|jtdS)N)r]r\)rrrrrrOszmbox._post_message_hookcCsJgg}}d}|jjdx|jj}|jj}|jdrt|t|kr|r|j|ttn |j||j|d}q&|s|r|j|ttn |j|Pq&|tkrd}q&d}q&Wtt t |||_ t|j |_ |jj|_ dS)NFrsFrom T)rrZrrgrhrrr\dict enumeratezipr|rr)rstartsstopsZlast_was_emptyline_posrnrrrrSs0        zmbox._generate_toc)rprqrrrr^rrrrrrrrAs  c@sFeZdZddddZddZddZd d ZdS) rNTcCs#t|_tj||||dS)N)r rrr)rrrrrrrrxs z MMDF.__init__cCs|jdtdS)Ns)r]r\)rrrrrr}szMMDF._pre_message_hookcCs|jtdtdS)Ns)r]r\)rrrrrrszMMDF._post_message_hookcCs;gg}}|jjdd}x|}|jj}|jj}|jdtr|j|xq|}|jj}|jj}|dtkr|j|ttPqm|sm|j|PqmWq&|s&Pq&Wtt t |||_ t|j |_ |jjdd|jj|_ dS)NrsrO)rrZrgrrhr\rrrrrr|rr)rrrnext_posrrnrrrrs2   zMMDF._generate_toc)rprqrrrrrrrrrrrus   c@seZdZddddZddZddZd d Zd d Zd dZddZ ddZ ddZ ddZ ddZ ddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.ZdS)/rNTcCstj||||tjj|js|rtj|jdtjtjtjj |jdtj tj Btj Bdnt |jd|_dS)Niz .mh_sequencesiF)rrrrryrrzrGrrwrO_EXCLrr{r)rrrrrrrrs!!z MH.__init__cCs,|j}t|dkr'd}nt|d}tjj|jt|}t|}d}z|j r}t |zy|j ||WnEt k r|j rt |t|d}tj|YnXt|tr|j||Wd|j rt |XWd|s't|X|S)NrrPFT)r3rmaxrrrwrr`rrrrorrrrrTr _dump_sequences)rrr3Znew_keyrrclosedrrrrs6            zMH.addcCstjj|jt|}yt|d}WnMtk r}z-|jtjkrkt d|nWYdd}~XnX|j tj |dS)Nzrb+zNo message with key: %s) rrrwrr`rrrrr!rGr)rrrrrrrrrs z MH.removecCstjj|jt|}yt|d}WnMtk r}z-|jtjkrkt d|nWYdd}~XnXz|j rt |zVtj tj|tj tjB|j||t|tr|j||Wd|j rt|XWdt|XdS)Nzrb+zNo message with key: %s)rrrwrr`rrrrr!rrrGrO_TRUNCrorTr rrr)rrrrrrrrrr#s$  # zMH.__setitem__c Cs6y^|jr6ttjj|jt|d}n'ttjj|jt|d}WnMtk r}z-|jtj krt d|nWYdd}~XnX|?|jrt |zt |}Wd|jrt |XWdQRXx9|jjD]%\}}||kr |j|q W|S)Nzrb+rzNo message with key: %s)rrrrrwrr`rrrr!rr r get_sequencesr9 add_sequence)rrrrrrkey_listrrrr's& *+    zMH.get_messagec Csy^|jr6ttjj|jt|d}n'ttjj|jt|d}WnMtk r}z-|jtj krt d|nWYdd}~XnX|I|jrt |z|j j tdSWd|jrt|XWdQRXdS)Nzrb+rzNo message with key: %ss )rrrrrwrr`rrrr!rrMr[r\r)rrrrrrrr.s *+   z MH.get_bytescCsy+ttjj|jt|d}WnMtk rz}z-|jtjkret d|nWYdd}~XnXt |S)NrzNo message with key: %s) rrrrwrr`rrrr!r)rrrrrrrr*'s+z MH.get_filecCs)ttddtj|jDS)Ncss'|]}|jrt|VqdS)N)isdigitr).0rrrr 4szMH.iterkeys..)iterrrrr)rrrrr12sz MH.iterkeyscCs(tjjtjj|jt|S)N)rrryrwrr`)rrrrrr:7szMH.__contains__cCstt|jS)N)rr2r1)rrrrr;;sz MH.__len__cCsG|jsCttjj|jdd|_t|jd|_dS)Nz .mh_sequenceszrb+T)rrrrrwrrr)rrrrrE?s $ zMH.lockcCs6|jr2t|jt|j|`d|_dS)NF)rrrr)rrrrrFFs    z MH.unlockcCsdS)Nr)rrrrrDNszMH.flushcCs|jr|jdS)N)rrF)rrrrrGRs zMH.closecCsXg}xKtj|jD]7}tjjtjj|j|r|j|qW|S)N)rrrrrrwr)rr=rrrrrWs $zMH.list_folderscCs+ttjj|j|d|jddS)NrrF)rrrrwrr)rrrrrr_sz MH.get_foldercCs%ttjj|j|d|jS)Nr)rrrrwrr)rrrrrrdsz MH.add_foldercCstjj|j|}tj|}|dgkrUtjtjj|dn"|gkrdntd|jtj|dS)Nz .mh_sequenceszFolder not empty: %s)rrrwrrrrr)rrrentriesrrrris zMH.remove_folderc s`i}ttjj|jdddd,}t|jx|D]}y|jd\}}t}xr|jD]d}|jr|j t |q}dd|jdD\}} |j t || d q}Wfd d t |D||.-rPcs"g|]}|kr|qSrr)rr)all_keysrr s z$MH.get_sequences..rz"Invalid sequence specification: %s)rrrrwrsetr3rr rrrCrangerrrJ FormatErrorrstrip) rresultsrrnrcontentsr3specrrr)rrr us&*   "#   zMH.get_sequencesc Csettjj|jdddd}z,tjtj|jtjtjBx|j D]\}}t |dkr~q]|j |dd}d}xt t |D]o}|d|kr|sd }|j d n7|rd}|j d ||fn|j d ||}qW|rA|j t|d q]|j d q]WWdt|XdS)Nz .mh_sequenceszr+rrrrsFrPTrz%s %sz %s )rrrrwrrGrrr r9rr]rrr`r)r sequencesrrr3prevZ completingrrrr set_sequencess.'& zMH.set_sequencesc Cs|j}d}g}x|jD]}|d|kr|j||dfttdrtjtjj|jt |tjj|jt |dtj tjj|jt |nDtj tjj|jt |tjj|jt |d|d7}q%W|d|_ t |dkrBdSxP|jD]B\}}x3|D]+\}}||krb|||j|.rP,srO)rrZrgrr\rrrrrrr|r.rr)rrrrZ label_listsrrnr6rrrr/s4   &zBabyl._generate_toccCsmdt}|dt7}|j}dd|D}|ddj|t7}|d7}|j|dS)NsBABYL OPTIONS:s Version: 5css|]}|jVqdS)N)rH)rr8rrrrRsz*Babyl._pre_mailbox_hook..sLabels:r9s)r\r/rwr])rrZbabylr6rrrrMs   zBabyl._pre_mailbox_hookcCs|jdtdS)Ns )r]r\)rrrrrrWszBabyl._pre_message_hookcCs|jtddS)Ns)r]r\)rrrrrr[szBabyl._post_message_hookcCs|jj}t|trg}g}x@|jD]2}||jkr\|j|q7|j|q7W|jjdx(|D] }|jjd|jqW|jjdx,|D]$}|jjd|jdqW|jjt n|jjdt t|t j j rt j}t jj|dd}|j||jdx@|j}|jj|jd t |d ks| rdPqdW|jjd t t|trDt j} t jj| dd} | j|jx| j}|jj|jd t |d ks<| rPqWnP|jdx@|j}|jj|jd t |d ks| rTPqTWx@|jd } | sP|jj| jd t qWnt|ttt jfrt|t jrtjd td |j}t|tr:|j|}|jdd} | ddkr|jj|d| jd t |jjd t |jj|d| jd t |jj|| djd t q|jjd t t |jj|jd t nt |drt |drWtjdtd |j!}|j} d}x|j}|j"dr|ddd }n#|j"dr|ddd }|jj|jd t |d ks| rl|r d}|jjd t |j| qlPqlWx|j}|s;P|j"dra|ddt }nI|j"dr|ddt }n#|j"d r|ddt }|jj|q(Wnt#dt$||jj}||fS)N1s, s,, r9s1,,Frs s *** EOOH ***iz8Use of StringIO input is deprecated, use BytesIO insteadrLs rOrPrgrNzDUse of text mode files is deprecated, use a binary mode file insteadTs s zInvalid message type: %srSrRrSrRrSrS)%rrrTr r/r5rr]rHr\r,rrrUrVrWrXrYrZrgr[ get_visiblerMrar`rbrcrdrerfrKrr@rNr_rirj)rrrZspecial_labelsr6r8Z orig_bufferZorig_generatorrnZ vis_bufferZ vis_generatorrNZ body_startZ original_posZ first_passrrrrr_s  "        #   &&)      zBabyl._install_message)rprqrr frozensetr5rrrr#r'r.r*r/rrrrrrrrrrs          c@s7eZdZdddZddZddZdS)rNcCs)t|tjjrJ|jtj|t|tr%|j|nt|trr|jtj |nt|t r|jtj |nt|t j r|jtj|n`t|dr|jtj|n8|dkrtjjj|ntdt|dS)NrMzInvalid message type: %s)rTr,rr_become_messagecopydeepcopy _explain_torar-r`Zmessage_from_stringrU TextIOWrapperZmessage_from_filer@Zmessage_from_binary_filerrirj)rrrrrrs zMessage.__init__cCsJt|dg}x1|jD]&}||kr|j||j|s zMessage._become_messagecCs#t|trdStddS)Nz Cannot convert to specified type)rTrri)rrrrrrAszMessage._explain_to)rprqrrrr>rArrrrrs  c@seZdZdddgZdddZddZd d Zd d Zd dZddZ ddZ ddZ ddZ ddZ ddZddZdS)r _subdir_info_dateNcCs5d|_d|_tj|_tj||dS)Nrur)rFrGrrHrr)rrrrrrs  zMaildirMessage.__init__cCs|jS)N)rF)rrrrrszMaildirMessage.get_subdircCs8|dks|dkr$||_ntd|dS)Nrurvz!subdir must be 'new' or 'cur': %s)rFrJ)rrrrrrs zMaildirMessage.set_subdircCs+|jjdr#|jddSdSdS)Nz2,rOr)rGrh)rrrr get_flagsszMaildirMessage.get_flagscCs ddjt||_dS)Nz2,r)rwrrG)rflagsrrr set_flagsszMaildirMessage.set_flagscCs0|jdjt|jt|BdS)Nr)rKrwrrI)rflagrrradd_flagszMaildirMessage.add_flagcCs<|jr8|jdjt|jt|dS)Nr)rIrKrwr)rrLrrr remove_flags zMaildirMessage.remove_flagcCs|jS)N)rH)rrrrrszMaildirMessage.get_datec Cs<yt||_Wn"tk r7td|YnXdS)Nzcan't convert to float: %s)floatrHrJri)rZdaterrrrs zMaildirMessage.set_datecCs|jS)N)rG)rrrrr&szMaildirMessage.get_infocCs5t|tr||_ntdt|dS)Nzinfo must be a string: %s)rTr`rGrirj)rinforrrr*s zMaildirMessage.set_infocCs4t|trK|j|j|j|j|j|jnt|trt |j}d|kr|j d|jdkr|j dd|kr|j dd|kr|j dd|kr|j d|j d t j |jnt|trt |j}d|krK|jd d|krd|jd d|kr0|jd nt|trt |j}d|kr|jd d|kr|jd d|kr|jdd|kr0|jdn(t|trntdt|dS)NSRrvOTDFAz MAILER-DAEMONr)repliedflaggedr*r+Pr,z$Cannot convert to specified type: %s)rTr rKrIrrrrrrrMrrrr r r add_labelrrirj)rrrJrrrrA1sN         "            zMaildirMessage._explain_to)rprqrrrCrrrrIrKrMrNrrrrrArrrrr s           c@seZdZdgZdddZddZdddZd d Zd d Zd dZ ddZ ddZ dS)r_fromNcCsw|jddt|tjjrc|j}|dk rc|jdrc|j|ddtj||dS)Nz MAILER-DAEMONTzFrom rQ)rrTr,rrrrhr)rrrrrrrbs  z_mboxMMDFMessage.__init__cCs|jS)N)r\)rrrrrksz_mboxMMDFMessage.get_fromcCsH|dk r;|dkr$tj}|dtj|7}||_dS)NT )rrrr\)rrZtime_rrrros    z_mboxMMDFMessage.set_fromcCs |jdd|jddS)NStatusrzX-Status)r&)rrrrrIwsz_mboxMMDFMessage.get_flagscCst|}d \}}x1d D])}||kr||7}|j|qWx1d D])}||krS||7}|j|qSW|djt|7}y|jd|Wn"tk r|jd|YnXy|jd|Wn"tk r |jd|YnXdS) NrrRrSrUrVrWr^zX-Status)rr)rRrS)rUrVrW)rrrwrreplace_headerr!Z add_header)rrJZ status_flagsZ xstatus_flagsrLrrrrK{s&          z_mboxMMDFMessage.set_flagscCs0|jdjt|jt|BdS)Nr)rKrwrrI)rrLrrrrMsz_mboxMMDFMessage.add_flagcCsHd|ksd|krD|jdjt|jt|dS)Nr^zX-Statusr)rKrwrrI)rrLrrrrNsz_mboxMMDFMessage.remove_flagc Csst|trt|j}d|kr:|jdd|krS|jdd|krl|jdd|kr|jdd|kr|jd|d =|d =d j|jjdd}y&|j t j t j |d Wqottfk rYqoXnZt|trM|j|j|j|jn"t|trt|j}d|kr|jdd|kr|jdd|kr|jd|d =|d =nt|trGt|j}d|kr|jdd|kr|jdd|kr6|jd|d =|d =n(t|trYntdt|dS)NrSrvrVrWrRrQrUrTstatuszx-statusr]rQz%a %b %d %H:%M:%S %Yr)rXrYr*r+z$Cannot convert to specified type: %s)rTr rrIrrMrwrrrcalendarZtimegmrstrptimerJ OverflowErrorrrKrr r r r[rrirj)rrrJZ maybe_daterrrrAs^          %              z_mboxMMDFMessage._explain_to) rprqrrrCrrrrIrKrMrNrArrrrr]s       rc@seZdZdS)r N)rprqrrrrrrr s c@sdeZdZdgZdddZddZddZd d Zd d Zd dZ dS)r _sequencesNcCsg|_tj||dS)N)rerr)rrrrrrs zMHMessage.__init__cCs|jddS)N)re)rrrrr szMHMessage.get_sequencescCst||_dS)N)r2re)rr!rrrr#szMHMessage.set_sequencescCsKt|tr1||jkrG|jj|ntdt|dS)Nzsequence type must be str: %s)rTr`rerrirj)rr(rrrr szMHMessage.add_sequencec Cs-y|jj|Wntk r(YnXdS)N)rerrJ)rr(rrrremove_sequences zMHMessage.remove_sequencecCst|trt|j}d|kr=|jdn|jd|jdd|krp|jdd|kr|jdn3t|tr t|j}d|kr|jdn |jd d|kr|jdd|kr|jd nt|trAx|jD]}|j|q'Wn~t|t rt|j}d|kr{|j dd|kr|j d n(t|t rnt d t |dS) Nr)rvrQrYrVrXrRROrSrWr+z$Cannot convert to specified type: %s)rTr rr rrMrr r r r[rrirj)rrr!r(rrrrAs@              zMHMessage._explain_to) rprqrrrCrr r#r rfrArrrrr s      c@seZdZddgZdddZddZdd Zd d Zd d ZddZ ddZ ddZ ddZ dS)r r._visibleNcCs)g|_t|_tj||dS)N)r.rrhr)rrrrrrs  zBabylMessage.__init__cCs|jddS)N)r.)rrrrr/%szBabylMessage.get_labelscCst||_dS)N)r2r.)rr6rrrr1)szBabylMessage.set_labelscCsKt|tr1||jkrG|jj|ntdt|dS)Nzlabel must be a string: %s)rTr`r.rrirj)rr8rrrr[-szBabylMessage.add_labelc Cs-y|jj|Wntk r(YnXdS)N)r.rrJ)rr8rrr remove_label5s zBabylMessage.remove_labelcCs t|jS)N)rrh)rrrrr<<szBabylMessage.get_visiblecCst||_dS)N)rrh)rZvisiblerrrr0@szBabylMessage.set_visiblecCsxG|jjD]6}||kr<|jj|||q|j|=qWx:dD]2}||krQ||jkrQ|||j|trtj|tj|rtj|j dYnXdS)NFzlockf: lock unavailable: %sz.lockrTzdot lock unavailable: %s)fcntllockfZLOCK_EXZLOCK_NBrrEAGAINrrrrrrGr@rrr$rrrLOCK_UN)rrZ dotlock_donerZpre_lockrrrrsF!  rcCsJtrtj|tjtjj|jdrFtj|jddS)Nz.lock)rrrrrryrr)rrrrr0src CsLtj|tjtjBtjBd}zt|dSWdtj|XdS)Nizrb+)rrrrO_RDWRrG)rfdrrrr7s&rcCs2td|ttjtjtjfS)Nz %s.%s.%s.%s)rrrrrrr)rrrrr?s rcCs0|jttdr,tj|jdS)Nfsync)rDr@rrfileno)rrrrrEs rcCst||jdS)N)rrG)rrrrrKs rc@seZdZdS)ErrorN)rprqrrrrrrrQs rc@seZdZdS)r{N)rprqrrrrrrr{Ts r{c@seZdZdS)rN)rprqrrrrrrrWs rc@seZdZdS)rN)rprqrrrrrrrZs rc@seZdZdS)rN)rprqrrrrrrr]s r)/rrrbrrr?rcr,Z email.messageZemail.generatorrUr(r ImportError__all__r\rHrrrrrrrrrrr rr r r r rrrrrrrr Exceptionrr{rrrrrrr sb                6B4-1%mqH_c')