a ÕDOgÊ3ã@s:ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Zddl Z ddl Z ddl m Z z ddlZWneyŽdZYn0gd¢Zej d¡ZGdd„dƒZGdd„deƒZGd d „d eƒZGd d „d eƒZGd d„deƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„dejjƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZ Gdd „d eƒZ!Gd!d"„d"eƒZ"Gd#d$„d$ƒZ#Gd%d&„d&e#ƒZ$d>d(d)„Z%d*d+„Z&d,d-„Z'd.d/„Z(d0d1„Z)d2d3„Z*Gd4d5„d5e+ƒZ,Gd6d7„d7e,ƒZ-Gd8d9„d9e,ƒZ.Gd:d;„d;e,ƒZ/Gd„Z d?Z!dFd@dA„Z"e#e$ƒZ%dS)GrNTcCs tj tj |¡¡|_||_dS©N)ÚosÚpathÚabspathÚ expanduserÚ_pathÚ_factory©ÚselfrÚfactoryÚcreate©r ú,/opt/alt/python39/lib64/python3.9/mailbox.pyÚ__init__%szMailbox.__init__cCs tdƒ‚dS©Nz&Method must be implemented by subclass©ÚNotImplementedError©rÚmessager r r!Úadd*sz Mailbox.addcCs tdƒ‚dSr#r$©rÚkeyr r r!Úremove.szMailbox.removecCs| |¡dSr)r+r)r r r!Ú __delitem__2szMailbox.__delitem__cCs&z| |¡Wnty Yn0dSr)r+ÚKeyErrorr)r r r!Údiscard5s zMailbox.discardcCs tdƒ‚dSr#r$©rr*r'r r r!Ú __setitem__<szMailbox.__setitem__cCs(z | |¡WSty"|YS0dSr)Ú __getitem__r-)rr*Údefaultr r r!Úget@s  z Mailbox.getcCsN|js| |¡St | |¡¡}| |¡WdƒS1s@0YdSr)rÚ get_messageÚ contextlibÚclosingÚget_file)rr*Úfiler r r!r1Gs zMailbox.__getitem__cCs tdƒ‚dSr#r$r)r r r!r4OszMailbox.get_messagecCst | |¡¡ ¡Sr©ÚemailÚmessage_from_bytesÚ get_bytesZ as_stringr)r r r!Ú get_stringSszMailbox.get_stringcCs tdƒ‚dSr#r$r)r r r!r<ZszMailbox.get_bytescCs tdƒ‚dSr#r$r)r r r!r7^szMailbox.get_filecCs tdƒ‚dSr#r$©rr r r!ÚiterkeysbszMailbox.iterkeyscCs t| ¡ƒSr)Úlistr?r>r r r!Úkeysfsz Mailbox.keysc cs<| ¡D].}z ||}Wnty.YqYn0|VqdSr©r?r-©rr*Úvaluer r r!Ú itervaluesjs     zMailbox.itervaluescCs| ¡Sr)rEr>r r r!Ú__iter__sszMailbox.__iter__cCs t| ¡ƒSr)r@rEr>r r r!ÚvaluesvszMailbox.valuesc cs@| ¡D]2}z ||}Wnty.YqYn0||fVqdSrrBrCr r r!Ú iteritemszs     zMailbox.iteritemscCs t| ¡ƒSr)r@rHr>r r r!Úitemsƒsz Mailbox.itemscCs tdƒ‚dSr#r$r)r r r!Ú __contains__‡szMailbox.__contains__cCs tdƒ‚dSr#r$r>r r r!Ú__len__‹szMailbox.__len__cCs| ¡D]}| |¡qdSr)rAr.r)r r r!Úclears z Mailbox.clearcCs2z ||}Wnty"|YS0| |¡|Sr)r-r.)rr*r2Úresultr r r!Úpop”s     z Mailbox.popcCs*| ¡D]}|| |¡fStdƒ‚dS)NzNo messages in mailbox)r?rNr-r)r r r!Úpopitems zMailbox.popitemc Csrt|dƒr| ¡}nt|dƒr(| ¡}n|}d}|D],\}}z |||<Wq4ty^d}Yq40q4|rntdƒ‚dS)NrHrIFTzNo message with key(s))ÚhasattrrHrIr-)rÚargÚsourceZbad_keyr*r'r r r!Úupdate¤s        zMailbox.updatecCs tdƒ‚dSr#r$r>r r r!Úflushµsz Mailbox.flushcCs tdƒ‚dSr#r$r>r r r!Úlock¹sz Mailbox.lockcCs tdƒ‚dSr#r$r>r r r!Úunlock½szMailbox.unlockcCs tdƒ‚dSr#r$r>r r r!ÚcloseÁsz Mailbox.closecCs,z | d¡WSty&tdƒ‚Yn0dS)Nrz?String input must be ASCII-only; use bytes or a Message instead)ÚencodeÚ UnicodeErrorÚ ValueErrorr&r r r!Ú_string_to_bytesÅs  zMailbox._string_to_bytesFc Csüt|tjjƒrvt ¡}tj ||d¡}| |¡|  d¡|  ¡}|  dt ¡}|  |¡|jrr| t ¡sr|  t ¡n‚t|tttjfƒrt|tjƒr¬t dtd¡| ¡}t|tƒrÀ| |¡}|rÐ|  dd¡}|  dt ¡}|  |¡|jrø| t ¡sø|  t ¡nòt|dƒrèt|dƒr2t d td¡|j}d}| ¡}| d ¡r\|dd …d}n| d ¡rx|dd …d}|s‚qÂ|r¤| d¡r¤d|dd…}|  dt ¡}|  |¡|}q6|jrø|rø| t ¡sø|  t ¡ntdt|ƒƒ‚dS)Nró ú8Use of StringIO input is deprecated, use BytesIO insteadés From s >From ÚreadÚbufferúDUse of text mode files is deprecated, use a binary mode file insteadó éþÿÿÿó éÿÿÿÿóFrom s>From éúInvalid message type: %s)Ú isinstancer:r'r ÚioÚBytesIOÚ generatorÚBytesGeneratorÚflattenÚseekr_ÚreplaceÚlinesepÚwriteÚ_append_newlineÚendswithÚstrÚbytesÚStringIOÚwarningsÚwarnÚDeprecationWarningÚgetvaluer[rPr`ÚreadlineÚ startswithÚ TypeErrorÚtype) rr'ÚtargetZ mangle_from_r`ÚgenÚdataZlastlineÚliner r r!Ú _dump_messageÒs\     ÿ        ÿ     zMailbox._dump_message)NT)N)N)N)F)&Ú__name__Ú __module__Ú __qualname__r"r(r+r,r.r0r3r1r4r=r<r7r?rArErFrGrHrIrJrKrLrNrOrSrTrUrVrWr[rsr„Ú classmethodrÚ__class_getitem__r r r r!r"sB        6rc@sÖeZdZdZd5dd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Zd(d)„Zd*d+„Zd,Zd-d.„Zd/d0„Zd1d2„Zd3d4„ZdS)6rú:NTcCs¬t ||||¡tj |jd¡tj |jd¡tj |jd¡dœ|_tj |j¡sŠ|r€t |jd¡|j  ¡D]}t |d¡qln t |jƒ‚i|_ dddœ|_ d|_ d|_dS) NÚtmpÚnewÚcur)r‹rŒréÀr)rrŒgš™™™™™¹?)rr"rrÚjoinrÚ_pathsÚexistsÚmkdirrGrÚ_tocÚ _toc_mtimesÚ _last_readÚ _skewfactor)rÚdirnamerrrr r r!r"sý  zMaildir.__init__c Cs|| ¡}z| ||¡Wn(ty@| ¡t |j¡‚Yn0t|ƒt|t ƒrz|  ¡}|j |  ¡}||j kr‚d}nd}d}tj  |j¡ |j ¡d}tj  |j|||¡}t|t ƒrÜt |jtj  |j¡| ¡f¡zJzt |j|¡Wn&ttfyt |j|¡Yn0t |j¡WnPtyv}z6t |j¡|jtjkr`td|ƒ‚n‚WYd}~n d}~00|S)NÚrŒrz$Name clash with existing message: %s)Ú _create_tmpr„Ú BaseExceptionrWrr+ÚnameÚ _sync_closerir Ú get_subdirÚcolonÚget_inforÚbasenameÚsplitrrÚutimeÚgetatimeÚget_dateÚlinkÚAttributeErrorÚPermissionErrorÚrenameÚOSErrorÚerrnoZEEXISTr)rr'Ztmp_fileÚsubdirÚsuffixÚuniqÚdestÚer r r!r($sF     ÿ ÿz Maildir.addcCs t tj |j| |¡¡¡dSr)rr+rrrÚ_lookupr)r r r!r+NszMaildir.removec Cs*z| |¡Wnttfy$Yn0dSr)r+r-ÚFileNotFoundErrorr)r r r!r.RszMaildir.discardc CsÊ| |¡}| |¡}| |¡}t|tƒr.|}n|}tj |¡}|j|vr`|j| |j¡d}nd}|  |¡tj  |j |¡} tj  |j |||¡} t|tƒrºt  | tj  | ¡| ¡f¡t | | ¡dS)Nrer˜)r°r(rir rrr—ržr¡r.rrr¢r£r¤r¨) rr*r'Z old_subpathZtemp_keyZ temp_subpathZdominant_subpathr«r¬Ztmp_pathÚnew_pathr r r!r0Zs$        ÿzMaildir.__setitem__cCs¶| |¡}ttj |j|¡dƒ*}|jr4| |¡}nt|ƒ}Wdƒn1sP0Ytj |¡\}}|  |¡|j |vr”|  | |j ¡d¡|  tj  tj |j|¡¡¡|S)NÚrbre)r°Úopenrrrrrr r¡Ú set_subdirržÚset_infoÚset_dateÚgetmtime)rr*ZsubpathÚfÚmsgr«r›r r r!r4us  &  zMaildir.get_messagecCsPttj |j| |¡¡dƒ }| ¡ td¡WdƒS1sB0YdS)Nr³r\) r´rrrrr°r_rprq©rr*r¹r r r!r<„szMaildir.get_bytescCs$ttj |j| |¡¡dƒ}t|ƒS)Nr³)r´rrrrr°Ú _ProxyFiler»r r r!r7‰szMaildir.get_filec csD| ¡|jD]0}z| |¡Wnty6YqYn0|VqdSr)Ú_refreshr“r°r-r)r r r!r?Žs   zMaildir.iterkeyscCs| ¡||jvSr)r½r“r)r r r!rJ˜szMaildir.__contains__cCs| ¡t|jƒSr)r½Úlenr“r>r r r!rKszMaildir.__len__cCsdSrr r>r r r!rT¢sz Maildir.flushcCsdSrr r>r r r!rU¨sz Maildir.lockcCsdSrr r>r r r!rV¬szMaildir.unlockcCsdSrr r>r r r!rW°sz Maildir.closecCs\g}t |j¡D]F}t|ƒdkr|ddkrtj tj |j|¡¡r| |dd…¡q|S)NérÚ.)rÚlistdirrr¾rÚisdirrÚappend©rrMÚentryr r r!Ú list_folders´sÿzMaildir.list_folderscCs ttj |jd|¡|jddS)NrÀF©rr)rrrrrr©rÚfolderr r r!Ú get_folder½sþzMaildir.get_foldercCs\tj |jd|¡}t||jd}tj |d¡}tj |¡sXt t |tj tj Bd¡¡|S)NrÀ©rZ maildirfolderé¶) rrrrrrr‘rWr´ÚO_CREATÚO_WRONLY)rrÉrrMZmaildirfolder_pathr r r!Ú add_folderÃs ÿzMaildir.add_foldercCstj |jd|¡}t tj |d¡¡t tj |d¡¡D](}t|ƒdksX|ddkrr r r!ré4s    z Maildir.next)NT)r…r†r‡ržr"r(r+r.r0r4r<r7r?rJrKrTrUrVrWrÆrÊrÏrÖrÙrßr™r½r°rér r r r!r s4 *   $rc@seZdZd#dd„Zdd„Zdd„Zd d „Zd d „Zd d„Zdd„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zd$dd „Zd!d"„ZdS)%Ú_singlefileMailboxNTc CsÀt ||||¡zt|jdƒ}Wnpty}zX|jtjkrZ|rNt|jdƒ}q|t|jƒ‚n"|jtjtj fvrzt|jdƒ}n‚WYd}~n d}~00||_ d|_ d|_ d|_ d|_d|_d|_dS)Núrb+zwb+r³rF)rr"r´rr©rªÚENOENTrÚEACCESÚEROFSÚ_filer“Ú _next_keyÚ_pendingÚ _pending_syncÚ_lockedÚ _file_length)rrrrr¹r¯r r r!r"Ds$  z_singlefileMailbox.__init__cCs8| ¡| |¡|j|j<|jd7_d|_|jdS)Nr¿T)r°Ú_append_messager“rñrór&r r r!r([s z_singlefileMailbox.addcCs| |¡|j|=d|_dS©NT)r°r“ròr)r r r!r+es z_singlefileMailbox.removecCs$| |¡| |¡|j|<d|_dSr÷)r°rör“ròr/r r r!r0ks z_singlefileMailbox.__setitem__ccs| ¡|j ¡EdHdSr)r°r“rAr>r r r!r?qsz_singlefileMailbox.iterkeyscCs| ¡||jvSr)r°r“r)r r r!rJvsz_singlefileMailbox.__contains__cCs| ¡t|jƒSr)r°r¾r“r>r r r!rK{sz_singlefileMailbox.__len__cCs|jst|jƒd|_dSr÷)rôÚ _lock_filerðr>r r r!rU€s z_singlefileMailbox.lockcCs|jrt|jƒd|_dS©NF)rôÚ _unlock_filerðr>r r r!rV†s z_singlefileMailbox.unlockc CsÔ|js |jrt|jƒd|_dS|j dd¡|j ¡}||jkrTtd|j|fƒ‚t|j ƒ}z¤i}|  |¡t |j   ¡ƒD]x}|j |\}}|j |¡| |¡| ¡}|j td||j ¡ƒ¡}|sÎqÚ| |¡q¬|| ¡f||<| |¡q|| ¡|_Wn"| ¡t |j¡‚Yn0t|ƒ|j ¡t |j ¡j} t |j| ¡zt |j|j ¡Wn0ty˜t |j ¡t |j|j ¡Yn0t|j dƒ|_||_ d|_d|_|jrÐt|jdddS)NFrrãz4Size of mailbox file changed (expected %i, found %i)érì)Údotlock) ròróÚ _sync_flushrðroÚtellrõrÚ_create_temporaryrÚ_pre_mailbox_hookÚsortedr“rAÚ_pre_message_hookr_ÚminrrÚ_post_message_hookrWrr+r›rœràÚst_modeÚchmodr¨râr´rôrø) rZcur_lenZnew_fileZnew_tocr*ÚstartÚstopZ new_startr`Úmoder r r!rTŒs`    þ      ÿ     z_singlefileMailbox.flushcCsdSrr ©rr¹r r r!rÌsz$_singlefileMailbox._pre_mailbox_hookcCsdSrr r r r r!rÐsz$_singlefileMailbox._pre_message_hookcCsdSrr r r r r!rÔsz%_singlefileMailbox._post_message_hookcCshz6| ¡Wz|jr| ¡W|j ¡qd|j ¡0n,z|jrH| ¡W|j ¡n |j ¡00dSr)rTrôrVrðrWr>r r r!rWØs  ü z_singlefileMailbox.closecCsL|jdur| ¡|durHz |j|WStyFtd|ƒd‚Yn0dSræ)r“Ú _generate_tocr-r)r r r!r°ãs   z_singlefileMailbox._lookupcCsš|j dd¡|j ¡}t|jƒdkr8|js8| |j¡z&| |j¡| |¡}|  |j¡Wn t y~|j  |¡‚Yn0|j  ¡|j ¡|_ |S)Nrrã)rðrorþr¾r“ròrrÚ_install_messagerršÚtruncaterTrõ)rr'ZbeforeZoffsetsr r r!röís        z"_singlefileMailbox._append_message)NT)N)r…r†r‡r"r(r+r0r?rJrKrUrVrTrrrrWr°rör r r r!rëAs   @ rëc@s>eZdZdZdd„Zddd„Zddd„Zdd d „Zd d „Zd S)Ú _mboxMMDFTcCsp| |¡\}}|j |¡|j ¡ td¡}|j ||j ¡¡}| | td¡¡}|  |dd…  d¡¡|S)Nór\rgr) r°rðror|rprqr_rþÚ_message_factoryÚset_fromÚdecode)rr*rrÚ from_lineÚstringrºr r r!r4 s z_mboxMMDF.get_messageFcCst | ||¡¡j|dS)N)Úunixfromr9)rr*Úfrom_r r r!r=s  ÿÿz_mboxMMDF.get_stringcCsJ| |¡\}}|j |¡|s(|j ¡|j ||j ¡¡}| td¡S©Nr\)r°rðror|r_rþrprq)rr*rrrrr r r!r<s   z_mboxMMDF.get_bytescCs<| |¡\}}|j |¡|s(|j ¡t|j|j ¡|ƒSr)r°rðror|Ú _PartialFilerþ)rr*rrrr r r!r7!s   z_mboxMMDF.get_filecCs d}t|tƒr| |¡}t|tƒrf| d¡rf| d¡}|dkr\|d|…}||dd…}q°|}d}nJt|tƒrˆ| ¡ d¡}d|}n(t|t j j ƒr°|  ¡}|dur°| d¡}|durÎdt  t  ¡¡ ¡}|j ¡}|j |t¡| ||j|j¡|j ¡}||fS)Nrfr\rer¿rrsFrom MAILER-DAEMON )rirur[rvr}ÚfindÚ_mboxMMDFMessageÚget_fromrXr:r'r Ú get_unixfromr×ÚasctimeÚgmtimerðrþrrrqr„Ú _mangle_from_)rr'rÚnewlineZauthorrrr r r!r )s0         z_mboxMMDF._install_messageN)F)F)F) r…r†r‡rr4r=r<r7r r r r r!rs   rc@s.eZdZdZdZd dd„Zdd„Zdd„ZdS) rTNcCst|_t ||||¡dSr)r rrr"rr r r!r"Osz mbox.__init__cCs| t¡dSr©rrrqr r r r!rTszmbox._post_message_hookcCsègg}}d}|j d¡|j ¡}|j ¡}| d¡rzt|ƒt|ƒkrj|r`| |ttƒ¡n | |¡| |¡d}q|s¤|r–| |ttƒ¡q¸| |¡q¸q|tkr²d}qd}qtt t ||ƒƒƒ|_ t|j ƒ|_ |j ¡|_ dS)NFrrfT)rðrorþr|r}r¾rÃrqÚdictÚ enumerateÚzipr“rñrõ)rÚstartsÚstopsZlast_was_emptyÚline_posrƒr r r!r Xs.         zmbox._generate_toc)NT)r…r†r‡rrsr"rr r r r r!rFs  rc@s.eZdZd dd„Zdd„Zdd„Zd d „ZdS) rNTcCst|_t ||||¡dSr)rrrr"rr r r!r"}sz MMDF.__init__cCs| dt¡dS©Nór!r r r r!r‚szMMDF._pre_message_hookcCs| tdt¡dSr(r!r r r r!r†szMMDF._post_message_hookcCsÞgg}}|j d¡d}|}|j ¡}|j ¡}| dt¡r˜| |¡|}|j ¡}|j ¡}|dtkr„| |ttƒ¡qžqJ|sJ| |¡qžqJq|sq qtt t ||ƒƒƒ|_ t|j ƒ|_ |j dd¡|j ¡|_ dS)Nrr)rã)rðror|rþr}rqrÃr¾r"r#r$r“rñrõ)rr%r&Únext_posr'rƒr r r!r Šs.          zMMDF._generate_toc)NT)r…r†r‡r"rrr r r r r!rzs rc@s¾eZdZd/dd„Zdd„Zdd„Zd d „Zd d „Zd d„Zdd„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Zd+d,„Zd-d.„ZdS)0rNTcCstt ||||¡tj |j¡sj|r`t |jd¡t t tj  |jd¡tj tj Btj Bd¡¡n t |jƒ‚d|_dS)NrŽú .mh_sequencesi€F)rr"rrr‘rr’rWr´rrÍÚO_EXCLrÎrrôrr r r!r"ªsÿ z MH.__init__cCsü| ¡}t|ƒdkrd}n t|ƒd}tj |jt|ƒ¡}t|ƒ}d}z¢|j rVt |ƒzrz|  ||¡Wn8t y |j r„t |ƒt|ƒd}t |¡‚Yn0t|tƒr¸| ||¡W|j rÚt |ƒn|j rØt |ƒ0W|søt|ƒn|söt|ƒ0|S)Nrr¿FT)rAr¾Úmaxrrrrrurárôrør„ršrúrœr+rir Ú_dump_sequences)rr'rAZnew_keyr²r¹Úclosedr r r!r(¶s>      ÿ  ÿ zMH.addc Csztj |jt|ƒ¡}zt|dƒ}Wn@tyb}z(|jtjkrLt d|ƒ‚n‚WYd}~nd}~00|  ¡t  |¡dS©Nrìrç) rrrrrur´r©rªrír-rWr+)rr*rr¹r¯r r r!r+Øs z MH.removec Csîtj |jt|ƒ¡}zt|dƒ}Wn@tyb}z(|jtjkrLt d|ƒ‚n‚WYd}~n d}~00zz|j rtt |ƒzNt  t |tj tjB¡¡| ||¡t|tƒr²| ||¡W|j rÔt|ƒn|j rÒt|ƒ0Wt|ƒn t|ƒ0dSr0)rrrrrur´r©rªrír-rôrørWrÎÚO_TRUNCr„rir r.rúrœ)rr*r'rr¹r¯r r r!r0æs(    ÿ zMH.__setitem__c Cs z@|jr$ttj |jt|ƒ¡dƒ}nttj |jt|ƒ¡dƒ}Wn@ty€}z(|jtj krjt d|ƒ‚n‚WYd}~n d}~00|J|jr–t |ƒzt |ƒ}W|jrÂt |ƒn|jrÀt |ƒ0Wdƒn1sÖ0Y| ¡ ¡D]\}}||vrì| |¡qì|S)Nrìr³rç)rôr´rrrrrur©rªrír-rør rúÚ get_sequencesrIÚ add_sequence)rr*r¹r¯rºr›Úkey_listr r r!r4þs*   ÿ( zMH.get_messagec Csúz@|jr$ttj |jt|ƒ¡dƒ}nttj |jt|ƒ¡dƒ}Wn@ty€}z(|jtj krjt d|ƒ‚n‚WYd}~n d}~00|`|jr–t |ƒz0|  ¡  td¡W|jr¶t|ƒWdƒSn|jrÖt|ƒ0Wdƒn1sì0YdS)Nrìr³rçr\)rôr´rrrrrur©rªrír-rør_rprqrú©rr*r¹r¯r r r!r<s( ýÿz MH.get_bytesc Cshzttj |jt|ƒ¡dƒ}Wn@ty^}z(|jtjkrHt d|ƒ‚n‚WYd}~n d}~00t |ƒS)Nr³rç) r´rrrrrur©rªrír-r¼r5r r r!r7,s z MH.get_filecCsttdd„t |j¡DƒƒƒS)Ncss|]}| ¡rt|ƒVqdSr)ÚisdigitrÝ)Ú.0rÅr r r!Ú 9sÿzMH.iterkeys..)ÚiterrrrÁrr>r r r!r?7sz MH.iterkeyscCstj tj |jt|ƒ¡¡Sr)rrr‘rrrur)r r r!rJ<szMH.__contains__cCstt| ¡ƒƒSr)r¾r@r?r>r r r!rK@sz MH.__len__cCs2|js.ttj |jd¡dƒ|_t|jƒd|_dS)Nr+rìT)rôr´rrrrrðrør>r r r!rUDs zMH.lockcCs(|jr$t|jƒt|jƒ|`d|_dSrù)rôrúrðrœr>r r r!rVKs   z MH.unlockcCsdSrr r>r r r!rTSszMH.flushcCs|jr| ¡dSr)rôrVr>r r r!rWWszMH.closecCs<g}t |j¡D]&}tj tj |j|¡¡r| |¡q|Sr)rrÁrrrÂrrÃrÄr r r!rÆ\s  zMH.list_folderscCsttj |j|¡|jddS)NFrÇ©rrrrrrrÈr r r!rÊdsÿz MH.get_foldercCsttj |j|¡|jdS)NrËr:rÈr r r!rÏisÿz MH.add_foldercCs`tj |j|¡}t |¡}|dgkr:t tj |d¡¡n|gkrDntd|jƒ‚t |¡dS)Nr+zFolder not empty: %s)rrrrrÁr+rrÒ)rrÉrÚentriesr r r!rÖns  zMH.remove_folderc si}ttj |jd¡dddä}t| ¡ƒ‰|D]Â}zš| d¡\}}tƒ}| ¡D]H}| ¡rn|  t |ƒ¡qRdd„| d¡Dƒ\}} |  t || d ƒ¡qR‡fd d „t |ƒDƒ||<t||ƒd krÌ||=Wq0tyðtd | ¡ƒ‚Yq00q0Wdƒn1s 0Y|S)Nr+ÚrÚASCII©ÚencodingrŠcss|]}t|ƒVqdSr)rÝ)r7Úxr r r!r8‡rz#MH.get_sequences..ú-r¿csg|]}|ˆvr|‘qSr r )r7r*©Zall_keysr r!Ú ‰sÿz$MH.get_sequences..rz"Invalid sequence specification: %s)r´rrrrÚsetrAr¡r6r(rÝrSÚrangerr¾rZrÚrstrip) rZresultsr¹rƒr›ÚcontentsrAÚspecrrr rBr!r2zs(    ÿ.zMH.get_sequencescCs ttj |jd¡ddd}zàt t |jtjtjB¡¡|  ¡D]®\}}t |ƒdkrVq@|  |d¡d}d}t t |ƒƒD]R}|d|krœ|sÆd }|  d ¡n*|r¸d}|  d ||f¡n|  d |¡|}qx|rä|  t|ƒd ¡q@|  d ¡q@Wt|ƒn t|ƒ0dS)Nr+zr+r=r>rrŠFr¿TrAz%s %sz %sÚ )r´rrrrrWr›rÎr1rIr¾rrrrDrurœ)rÚ sequencesr¹r›rAÚprevZ completingr*r r r!Ú set_sequences’s.   zMH.set_sequencesc Cs<| ¡}d}g}| ¡D]À}|d|krÐ| ||df¡z4t tj |jt|ƒ¡tj |jt|dƒ¡¡WnFt t fy´t  tj |jt|ƒ¡tj |jt|dƒ¡¡Yn0t  tj |jt|ƒ¡¡|d7}q|d|_ t|ƒdkrôdS| ¡D]0\}}|D]"\}}||vr||| |¡<qqü| |¡dS)Nrr¿)r2r?rÃrr¥rrrrur¦r§r¨Úunlinkrñr¾rIÚindexrL) rrJrKZchangesr*r›r4ÚoldrŒr r r!Úpack¯s0  ÿÿ      zMH.packcCst| ¡}| ¡}| ¡D]0\}}||vr4| |¡q||vr|| |¡=q|D]}||vrN|g||<qN| |¡dSr)r2rIrÃrNrL)rr'r*Zpending_sequencesZ all_sequencesr›r4Úsequencer r r!r.És  zMH._dump_sequences)NT)r…r†r‡r"r(r+r0r4r<r7r?rJrKrUrVrTrWrÆrÊrÏrÖr2rLrPr.r r r r!r§s, "  rc@s‚eZdZehd£ƒZddd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„ZdS)r>ZeditedÚansweredÚ forwardedÚdeletedÚresentÚunseenZfiledNTcCst ||||¡i|_dSr)rër"Ú_labelsrr r r!r"ÞszBabyl.__init__cCs(t ||¡}t|tƒr$| ¡|j|<|Sr)rër(rir Ú get_labelsrW)rr'r*r r r!r(ãs  z Babyl.addcCs"t ||¡||jvr|j|=dSr)rër+rWr)r r r!r+ês  z Babyl.removecCs*t |||¡t|tƒr&| ¡|j|<dSr)rër0rir rXrWr/r r r!r0ðs zBabyl.__setitem__c Csò| |¡\}}|j |¡|j ¡t ¡}|j ¡}|dtks\|sHq\| | td¡¡q,t ¡}|j ¡}|tks|s|q| | td¡¡qd||j  ¡}|j  |¡}| td¡}t |  ¡|ƒ} |   |  ¡¡||jvrî|  |j|¡| S©Nó *** EOOH ***r\)r°rðror|rjrkrqrrrprþr_r r{Ú set_visiblerWÚ set_labels) rr*rrÚoriginal_headersrƒZvisible_headersÚnÚbodyrºr r r!r4ös*        zBabyl.get_messagec Cs¬| |¡\}}|j |¡|j ¡t ¡}|j ¡}|dtks\|sHq\| | td¡¡q,|j ¡}|tksv|s\qvq\|  ¡}||j  ¡}|j  |¡}| td¡}||SrY) r°rðror|rjrkrqrrrpr{rþr_) rr*rrr]rƒZheadersr^r‚r r r!r<s        zBabyl.get_bytescCst | |¡ dt¡¡Sr)rjrkr<rprqr)r r r!r7(szBabyl.get_filecCs<| ¡tƒ}|j ¡D]}| |¡q| |j¡t|ƒSr)r°rDrWrGrSÚdifference_updateÚ_special_labelsr@)rÚlabelsZ label_listr r r!rX,s   zBabyl.get_labelscCs:gg}}|j d¡d}g}|}|j ¡}|j ¡}|dtkrœt|ƒt|ƒkrd| |ttƒ¡| |¡dd„|j ¡dd… d¡Dƒ}| |¡q|dks°|dtkrÔt|ƒt|ƒkrì| |ttƒ¡q|s| |ttƒ¡qîqtt t ||ƒƒƒ|_ tt |ƒƒ|_ t|j ƒ|_ |j dd¡|j ¡|_dS) Nrs cSsg|]}| ¡r| ¡‘qSr )Ústrip©r7Úlabelr r r!rCCsþz'Babyl._generate_toc..r¿ó,órã)rðror|rþrqr¾rÃr¡r"r#r$r“rWrñrõ)rr%r&r*Z label_listsr'rƒrbr r r!r 5s4      ÿ  zBabyl._generate_toccCsVdt}|dt7}| ¡}dd„|Dƒ}|dd |¡t7}|d7}| |¡dS)NsBABYL OPTIONS:s Version: 5css|]}| ¡VqdSr)rXrdr r r!r8Xrz*Babyl._pre_mailbox_hook..sLabels:rfrg)rqrXrrr)rr¹Zbabylrbr r r!rSs zBabyl._pre_mailbox_hookcCs| dt¡dS)Nó r!r r r r!r]szBabyl._pre_message_hookcCs| td¡dS)Nrgr!r r r r!raszBabyl._post_message_hookcCsx|j ¡}t|tƒr°g}g}| ¡D]$}||jvr>| |¡q$| |¡q$|j d¡|D]}|j d| ¡¡qZ|j d¡|D]}|j d| ¡d¡q„|j t ¡n|j dt ¡t|t j j ƒrt  ¡}t j |dd¡}| |¡| d¡| ¡}|j | d t ¡¡|d ks,|süq,qü|j d t ¡t|tƒr¤t  ¡} t j | dd¡} |  | ¡¡|  ¡}|j | d t ¡¡|d ks¢|snqâqnn>| d¡| ¡}|j | d t ¡¡|d ksâ|s®qâq®| d ¡} | söqf|j |  d t ¡¡qânTt|ttt jfƒrt|t jƒrJt d td ¡| ¡}t|tƒr`| |¡}| d¡d} | ddkrâ|j |d| … d t ¡¡|j d t ¡|j |d| … d t ¡¡|j || d… d t ¡¡n(|j d t t ¡|j | d t ¡¡nXt |dƒrVt |dƒr:t dtd ¡|j!}| ¡} d}| ¡}| "d¡rl|dd…d }n| "d¡rˆ|dd…d }|j | d t ¡¡|d ks¬|sF|rÚd}|j d t ¡| | ¡nqÚqF| ¡}|sìqf| "d¡r |dd…t }n:| "d¡r(|dd…t }n| "d ¡rD|dd…t }|j |¡qÚnt#dt$|ƒƒ‚|j ¡}||fS)Nó1s, s,,ó rfs1,,Frr\rZrûr]r^s rãrer|r`raTrbrcrdrh)%rðrþrir rXrarÃrrrXrqr:r'r rjrkrlrmrnror|rpÚ get_visibler_rvrurwrxryrzr{r[rrPr`rtr~r)rr'rZspecial_labelsrbreZ orig_bufferZorig_generatorrƒZ vis_bufferZ vis_generatorr`Z body_startZ original_posZ first_passrr r r!r es¸              ÿ    ÿ       zBabyl._install_message)NT)r…r†r‡Ú frozensetrar"r(r+r0r4r<r7rXr rrrr r r r r!rØs    rc@s&eZdZddd„Zdd„Zdd„ZdS) r NcCsÒt|tjjƒr4| t |¡¡t|tƒrÎ| |¡nšt|tƒrP| t  |¡¡n~t|t ƒrl| t  |¡¡nbt|t j ƒrŠ| t |¡¡nDt|dƒr¦| t |¡¡n(|dur¾tjj |¡ntdt|ƒƒ‚dS)Nr_rh)rir:r'r Ú_become_messageÚcopyZdeepcopyÚ _explain_torvr;ruZmessage_from_stringrjÚ TextIOWrapperZmessage_from_filerPZmessage_from_binary_filer"r~rr&r r r!r"Ôs      zMessage.__init__cCs4t|dgƒ}|jD]}||vr|j||j|<qdS)NÚ_type_specific_attributes)ÚgetattrÚ__dict__)rr'Z type_specificr›r r r!rmçs  zMessage._become_messagecCst|tƒrdStdƒ‚dS)Nz Cannot convert to specified type)rir r~r&r r r!roîs zMessage._explain_to)N)r…r†r‡r"rmror r r r!r Ñs r c@sveZdZgd¢Zddd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„ZdS)r )Ú_subdirÚ_infoÚ_dateNcCs&d|_d|_t ¡|_t ||¡dS)NrŒr˜)rtrur×rvr r"r&r r r!r"ûs zMaildirMessage.__init__cCs|jSr)rtr>r r r!rszMaildirMessage.get_subdircCs(|dks|dkr||_n td|ƒ‚dS)NrŒrz!subdir must be 'new' or 'cur': %s)rtrZ)rr«r r r!rµszMaildirMessage.set_subdircCs"|j d¡r|jdd…SdSdS)Nú2,rãr˜)rur}r>r r r!Ú get_flags s zMaildirMessage.get_flagscCsdd t|ƒ¡|_dS)Nrwr˜)rrru)rÚflagsr r r!Ú set_flagsszMaildirMessage.set_flagscCs$| d t| ¡ƒt|ƒB¡¡dS©Nr˜©rzrrDrx©rÚflagr r r!Úadd_flagszMaildirMessage.add_flagcCs,| ¡r(| d t| ¡ƒt|ƒ¡¡dSr{)rxrzrrDr}r r r!Ú remove_flagszMaildirMessage.remove_flagcCs|jSr)rvr>r r r!r¤!szMaildirMessage.get_datecCs4zt|ƒ|_Wn ty.td|ƒd‚Yn0dS)Nzcan't convert to float: %s)ÚfloatrvrZr~)rÚdater r r!r·%s zMaildirMessage.set_datecCs|jSr)rur>r r r!rŸ,szMaildirMessage.get_infocCs&t|tƒr||_ntdt|ƒƒ‚dS)Nzinfo must be a string: %s)rirurur~r)rÚinfor r r!r¶0s zMaildirMessage.set_infocCs¤t|tƒr8| | ¡¡| | ¡¡| | ¡¡nht|tƒrÄt | ¡ƒ}d|vr`|  d¡| ¡dkrv|  d¡d|vrˆ|  d¡d|vrš|  d¡d|vr¬|  d¡|  d t   | ¡¡¡nÜt|tƒrt | ¡ƒ}d|vrî| d ¡d|vr| d ¡d|vr | d ¡nˆt|tƒr‚t | ¡ƒ}d|vrD| d ¡d|vrX| d ¡d|vrl| d¡d|vr | d¡nt|tƒrntdt|ƒƒ‚dS)NÚSÚRrÚOÚTÚDÚFÚAú MAILER-DAEMONrVÚrepliedÚflaggedrTrRÚPrSú$Cannot convert to specified type: %s)rir rzrxrµrr·r¤rrDrrr×rr r3r Ú add_labelr r~r)rr'ryr r r!ro7sP                           ÿzMaildirMessage._explain_to)N)r…r†r‡rqr"rrµrxrzrr€r¤r·rŸr¶ror r r r!r ös r c@sVeZdZdgZddd„Zdd„Zddd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dS)rÚ_fromNcCsV| dd¡t|tjjƒrF| ¡}|durF| d¡rF| |dd…¡t ||¡dS)Nr‹TzFrom rg)rrir:r'r rr}r")rr'rr r r!r"hs  z_mboxMMDFMessage.__init__cCs|jSr)r‘r>r r r!rqsz_mboxMMDFMessage.get_fromcCs4|dur*|durt ¡}|dt |¡7}||_dS)NTú )r×rrr‘)rrZtime_r r r!rus z_mboxMMDFMessage.set_fromcCs| dd¡| dd¡S)NÚStatusr˜úX-Status)r3r>r r r!rx}sz_mboxMMDFMessage.get_flagscCsÎt|ƒ}d\}}dD]}||vr||7}| |¡qdD]}||vr8||7}| |¡q8|d t|ƒ¡7}z| d|¡Wnty˜| d|¡Yn0z| d|¡WntyÈ| d|¡Yn0dS)N)r˜r˜)r…r†)rˆr‰rŠr˜r“r”)rDr+rrÚreplace_headerr-Z add_header)rryZ status_flagsZ xstatus_flagsr~r r r!rzs&    z_mboxMMDFMessage.set_flagscCs$| d t| ¡ƒt|ƒB¡¡dSr{r|r}r r r!r—sz_mboxMMDFMessage.add_flagcCs4d|vsd|vr0| d t| ¡ƒt|ƒ¡¡dS)Nr“r”r˜r|r}r r r!r€›sz_mboxMMDFMessage.remove_flagc CsÜt|tƒrÎt| ¡ƒ}d|vr(| d¡d|vr:| d¡d|vrL| d¡d|vr^| d¡d|vrp| d¡|d =|d =d  | ¡ ¡d d…¡}z|  t   t   |d ¡¡¡WnttfyÈYn0n t|tƒrö| | ¡¡| | ¡¡nât|tƒrXt| ¡ƒ}d|vr"| d¡d|vr6| d¡d|vrJ| d¡|d =|d =n€t|tƒrºt| ¡ƒ}d|vr„| d¡d|vr˜| d¡d|vr¬| d¡|d =|d =nt|tƒrÈntdt|ƒƒ‚dS)Nr†rr‰rŠr…r„rˆr‡Zstatuszx-statusr’éûÿÿÿz%a %b %d %H:%M:%S %YrVrŒrrTrRr)rir rDrxrµrrrr¡r·ÚcalendarZtimegmr×ÚstrptimerZÚ OverflowErrorrrzrr r3r rr r~r)rr'ryZ maybe_dater r r!ro sb       ÿ                    ÿz_mboxMMDFMessage._explain_to)N)N) r…r†r‡rqr"rrrxrzrr€ror r r r!rcs  rc@s eZdZdS)r N©r…r†r‡r r r r!r Ôsr c@sDeZdZdgZddd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dS)r Ú _sequencesNcCsg|_t ||¡dSr)r›r r"r&r r r!r"ÝszMHMessage.__init__cCs|jdd…Sr)r›r>r r r!r2âszMHMessage.get_sequencescCst|ƒ|_dSr)r@r›)rrJr r r!rLæszMHMessage.set_sequencescCs6t|tƒr"||jvr2|j |¡ntdt|ƒƒ‚dS)Nzsequence type must be str: %s)rirur›rÃr~r©rrQr r r!r3ês  zMHMessage.add_sequencecCs(z|j |¡Wnty"Yn0dSr)r›r+rZrœr r r!Úremove_sequenceòs zMHMessage.remove_sequencecCsFt|tƒrdt| ¡ƒ}d|vr*| d¡n| d¡| d¡d|vrP| d¡d|vrb| d¡nÞt|tƒr¾t| ¡ƒ}d|vrŽ| d¡n | d ¡d|vrª| d¡d|vr¼| d ¡n„t|tƒrâ| ¡D]}| |¡qÐn`t|t ƒr$t| ¡ƒ}d|vr|  d¡d|vrB|  d ¡nt|t ƒr2nt d t |ƒƒ‚dS) NrVrr„rr‰rŒr…ÚROr†rŠrRr)rir rDr2rµrrr r3r rr r~r)rr'rJrQr r r!roùsB                      ÿzMHMessage._explain_to)N) r…r†r‡rqr"r2rLr3rror r r r!r Øs r c@s^eZdZddgZddd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z dd„Z dS)r rWÚ_visibleNcCsg|_tƒ|_t ||¡dSr)rWr rŸr"r&r r r!r"%szBabylMessage.__init__cCs|jdd…Sr)rWr>r r r!rX+szBabylMessage.get_labelscCst|ƒ|_dSr)r@rW)rrbr r r!r\/szBabylMessage.set_labelscCs6t|tƒr"||jvr2|j |¡ntdt|ƒƒ‚dS)Nzlabel must be a string: %s)rirurWrÃr~r©rrer r r!r3s  zBabylMessage.add_labelcCs(z|j |¡Wnty"Yn0dSr)rWr+rZr r r r!Ú remove_label;s zBabylMessage.remove_labelcCs t|jƒSr©r rŸr>r r r!rkBszBabylMessage.get_visiblecCst|ƒ|_dSrr¢)rZvisibler r r!r[FszBabylMessage.set_visiblecCsb|j ¡D](}||vr*|j |||¡q |j|=q dD]$}||vr8||jvr8|||j|<q8dS)N)ZDateZFromzReply-ToZToZCCZSubject)rŸrAr•)rÚheaderr r r!Úupdate_visibleJs zBabylMessage.update_visiblecCsrt|tƒr~t| ¡ƒ}d|vr*| d¡n| d¡| d¡d|vsNd|vrX| d¡d|vrj| d¡d |vr|| d ¡nðt|tƒrØt| ¡ƒ}d|vr¨| d ¡n | d ¡d |vrÄ| d ¡d|vrÖ| d¡n–t|tƒrt| ¡ƒ}d|vr| d¡d|vrn| d¡nTt|t ƒrP|  |  ¡¡| ¡D]}|  |¡qr r r!rþ­sz_ProxyFile.tellrcCs4|dkr|j |j¡|j ||¡|j ¡|_dS)Nr¿©rðror¥rþ©rÚoffsetÚwhencer r r!ro±sz_ProxyFile.seekcCs4t|dƒr0zt|jdƒr"|j ¡W|`n|`0dS)NrðrW)rPrðrWr>r r r!rW¸s    z_ProxyFile.closecCs2|dur d}|j |j¡||ƒ}|j ¡|_|S)Nrer­)rr©Ú read_methodrMr r r!r§Ás  z_ProxyFile._readcCs|Srr r>r r r!Ú __enter__Êsz_ProxyFile.__enter__cGs | ¡dSr)rW)rÚexcr r r!Ú__exit__Îsz_ProxyFile.__exit__cCs |j ¡Sr)rðÚreadabler>r r r!rµÑsz_ProxyFile.readablecCs |j ¡Sr)rðÚwritabler>r r r!r¶Ôsz_ProxyFile.writablecCs |j ¡Sr)rðÚseekabler>r r r!r·×sz_ProxyFile.seekablecCs |j ¡Sr)rðrTr>r r r!rTÚsz_ProxyFile.flushcCs&t|dƒsdSt|jdƒsdS|jjS)NrðTr/F)rPrðr/r>r r r!r/Ýs   z_ProxyFile.closed)N)N)N)N)N)r)r…r†r‡r"r_rªr|r¬rFrþrorWr§r²r´rµr¶r·rTÚpropertyr/rˆrr‰r r r r!r¼ƒs&         r¼c@s8eZdZd dd„Zdd„Zddd„Zd d „Zd d „ZdS)rNcCst |||¡||_||_dSr)r¼r"Ú_startÚ_stop)rr¹rrr r r!r"ësz_PartialFile.__init__cCst |¡|jSr)r¼rþr¹r>r r r!rþñsz_PartialFile.tellrcCs<|dkr|j|_d}n|dkr*|j|_d}t |||¡dS)Nrr¿rã)r¹r¥rºr¼ror®r r r!roõsz_PartialFile.seekcCsB|j|j}|dkrdS|dus0|dks0||kr4|}t |||¡S)Nrr)rºr¥r¼r§)rr©r±Z remainingr r r!r§ÿs  z_PartialFile._readcCst|dƒr|`dS)Nrð)rPrðr>r r r!rWs z_PartialFile.close)NN)r)r…r†r‡r"rþror§rWr r r r!rès    rTc Csªd}zftrrzt |tjtjB¡WnLtyp}z4|jtjtjtjfvrZt d|j ƒ‚n‚WYd}~n d}~00|rjzt |j dƒ}|  ¡WnHtyÚ}z0|jtjtjfvrÄWYd}~WdS‚WYd}~n d}~00z^zt  |j |j d¡d}Wn0ttfy*t  |j |j d¡d}Yn0t  |j ¡Wn.tyht  |j ¡t d|j ƒ‚Yn0Wn8trˆt |tj¡|ržt  |j d¡‚Yn0dS)NFzlockf: lock unavailable: %sú.lockTzdot lock unavailable: %s)ÚfcntlÚlockfZLOCK_EXZLOCK_NBr©rªZEAGAINrîrïrr›rÿrWrr¥r¦r§r¨rMrâr+ÚLOCK_UN)r¹rüZ dotlock_doner¯Zpre_lockr r r!røsLÿ   ÿrøcCs8trt |tj¡tj |jd¡r4t |jd¡dS)Nr»)r¼r½r¾rrr‘r›r+©r¹r r r!rú9srúc CsDt |tjtjBtjBd¡}zt|dƒWt |¡St |¡0dS)NrÌrì)rr´rÍr,ÚO_RDWRrW)rÚfdr r r!rá@s   þrácCs$td|tt ¡ƒt ¡t ¡fƒS)Nz %s.%s.%s.%s)rárÝr×rÛrÜrrÞ)rr r r!rÿHsþrÿcCs$| ¡ttdƒr t | ¡¡dS)NÚfsync)rTrPrrÂÚfilenor¿r r r!rýNs rýcCst|ƒ| ¡dSr)rýrWr¿r r r!rœTsrœc@s eZdZdS)rNršr r r r!rZsrc@s eZdZdS)rNršr r r r!r]src@s eZdZdS)rNršr r r r!r`src@s eZdZdS)rNršr r r r!rcsrc@s eZdZdS)rNršr r r r!rfsr)T)1rr×r—rÛrªrnrxr:Z email.messageZemail.generatorrjr5Útypesrr¼Ú ImportErrorÚ__all__rqrXrrrërrrrrr'r r rr r r rr¼rrørúrárÿrýrœÚ Exceptionrrrrrr r r r!Ú sj     j8DB4-3z%mqH_e' *