grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026 й¼]R2ã@s*ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Zddl Z ddl Z yddl Z Wne k rºdZ YnXdddddddd d d d d g ZejjdƒZGdd„dƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„dejjƒZGdd „d eƒZGdd„deƒZGdd „d eƒZGdd „d eƒZGdd „d eƒZGd 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&d.d/„Z'd0d1„Z(Gd2d3„d3e)ƒZ*Gd4d5„d5e*ƒZ+Gd6d7„d7e*ƒZ,Gd8d9„d9e*ƒZ-Gd:d;„d;e*ƒZ.dS)<éNÚMailboxÚMaildirÚmboxÚMHÚBabylÚMMDFÚMessageÚMaildirMessageÚ mboxMessageÚ MHMessageÚ BabylMessageÚ MMDFMessageÚasciic@sœeZdZdddd„Zdd„Zdd„Zd d „Zd d „Zd d„Zddd„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.„Zdd/d0„Zd1d2„Zdd3d4„Zd5d6„Zd7d8„Zd9d:„Zd;d<„Zd=d>„Z d?Z!d?d@dA„Z"dS)BrNTcCs.tjjtjj|ƒƒ|_||_dS)N)ÚosÚpathÚabspathÚ expanduserÚ_pathÚ_factory)ÚselfrÚfactoryÚcreate©rú,/opt/alt/python35/lib64/python3.5/mailbox.pyÚ__init__#s!zMailbox.__init__cCstdƒ‚dS)Nz&Method must be implemented by subclass)ÚNotImplementedError)rÚmessagerrrÚadd(sz Mailbox.addcCstdƒ‚dS)Nz&Method must be implemented by subclass)r)rÚkeyrrrÚremove,szMailbox.removecCs|j|ƒdS)N)r)rrrrrÚ __delitem__0szMailbox.__delitem__c Cs*y|j|ƒWntk r%YnXdS)N)rÚKeyError)rrrrrÚdiscard3s zMailbox.discardcCstdƒ‚dS)Nz&Method must be implemented by subclass)r)rrrrrrÚ __setitem__:szMailbox.__setitem__c Cs.y|j|ƒSWntk r)|SYnXdS)N)Ú __getitem__r!)rrÚdefaultrrrÚget>s z Mailbox.getc CsI|js|j|ƒStj|j|ƒƒ�}|j|ƒSWdQRXdS)N)rÚ get_messageÚ contextlibÚclosingÚget_file)rrÚfilerrrr$Es  zMailbox.__getitem__cCstdƒ‚dS)Nz&Method must be implemented by subclass)r)rrrrrr'MszMailbox.get_messagecCstj|j|ƒƒjƒS)N)ÚemailÚmessage_from_bytesÚ get_bytesÚ as_string)rrrrrÚ get_stringQszMailbox.get_stringcCstdƒ‚dS)Nz&Method must be implemented by subclass)r)rrrrrr.XszMailbox.get_bytescCstdƒ‚dS)Nz&Method must be implemented by subclass)r)rrrrrr*\szMailbox.get_filecCstdƒ‚dS)Nz&Method must be implemented by subclass)r)rrrrÚiterkeys`szMailbox.iterkeyscCst|jƒƒS)N)Úlistr1)rrrrÚkeysdsz Mailbox.keysc csFx?|jƒD]1}y||}Wntk r8w YnX|Vq WdS)N)r1r!)rrÚvaluerrrÚ itervalueshs  zMailbox.itervaluescCs |jƒS)N)r5)rrrrÚ__iter__qszMailbox.__iter__cCst|jƒƒS)N)r2r5)rrrrÚvaluestszMailbox.valuesc csLxE|jƒD]7}y||}Wntk r8w YnX||fVq WdS)N)r1r!)rrr4rrrÚ iteritemsxs  zMailbox.iteritemscCst|jƒƒS)N)r2r8)rrrrÚitems�sz Mailbox.itemscCstdƒ‚dS)Nz&Method must be implemented by subclass)r)rrrrrÚ __contains__…szMailbox.__contains__cCstdƒ‚dS)Nz&Method must be implemented by subclass)r)rrrrÚ__len__‰szMailbox.__len__cCs(x!|jƒD]}|j|ƒq WdS)N)r3r")rrrrrÚclear�sz Mailbox.clearc Cs8y||}Wntk r&|SYnX|j|ƒ|S)N)r!r")rrr%ÚresultrrrÚpop’s    z Mailbox.popcCs7x0|jƒD]}||j|ƒfSWtdƒ‚dS)NzNo messages in mailbox)r1r>r!)rrrrrÚpopitem›szMailbox.popitemc Csžt|dƒr|jƒ}n$t|dƒr<|jƒ}n|}d}x=|D]5\}}y|||From ÚreadÚbufferzDUse of text mode files is deprecated, use a binary mode file insteads és ésFrom s>From ézInvalid message type: %séþÿÿÿéÿÿÿÿ)Ú isinstancer,rrÚioÚBytesIOÚ generatorÚBytesGeneratorÚflattenÚseekrMÚreplaceÚlinesepÚwriteÚ_append_newlineÚendswithÚstrÚbytesÚStringIOÚwarningsÚwarnÚDeprecationWarningÚgetvaluerKr@rNÚreadlineÚ startswithÚ TypeErrorÚtype) rrÚtargetZ mangle_from_rNÚgenÚdataZlastlineÚlinerrrÚ _dump_messageÐsZ               zMailbox._dump_message)#Ú__name__Ú __module__Ú __qualname__rrrr r"r#r&r$r'r0r.r*r1r3r5r6r7r8r9r:r;r<r>r?rCrDrErFrGrKr^rorrrrr s@                         c@sBeZdZdZdddd„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)5rú:NTcCstj||||ƒdtjj|jdƒdtjj|jdƒdtjj|jdƒi|_tjj|jƒsÑ|rÂtj|jdƒx9|jj ƒD]}tj|dƒq¥Wnt |jƒ‚i|_ ddddi|_ d|_ d|_dS)NÚtmpÚnewÚcuriÀrgš™™™™™¹?)rrrrÚjoinrÚ_pathsÚexistsÚmkdirr7ÚNoSuchMailboxErrorÚ_tocÚ _toc_mtimesÚ _last_readÚ _skewfactor)rÚdirnamerrrrrrr s!  zMaildir.__init__cCsß|jƒ}y|j||ƒWn/tk rQ|jƒtj|jƒ‚YnXt|ƒt|t ƒr¢|j ƒ}|j |j ƒ}||j kr®d}n d}d}tj j|jƒj|j ƒd}tj j|j|||ƒ}t|t ƒr/tj|jtj j|jƒ|jƒfƒyLttdƒrgtj|j|ƒtj|jƒntj|j|ƒWn]tk rÚ}z=tj|jƒ|jtjkrÅtd|ƒ‚n‚WYdd}~XnX|S)NÚrurÚlinkz$Name clash with existing message: %s)Ú _create_tmproÚ BaseExceptionrGrrÚnameÚ _sync_closerTr Ú get_subdirÚcolonÚget_inforÚbasenameÚsplitrwrÚutimeÚgetatimeÚget_dater@r‚ÚrenameÚOSErrorÚerrnoÚEEXISTÚExternalClashError)rrZtmp_fileÚsubdirÚsuffixÚuniqÚdestÚerrrr 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|tƒrE|}n|}tjj|ƒ}|j|krŒ|j|j|jƒd}nd}|j |ƒtjj |j |ƒ} tjj |j |||ƒ} t|tƒr tj | tjj | ƒ|jƒfƒtj| | ƒdS)NrPr�rS)r™rrTr rrr€rˆr‹r"rwrrŒr�rŽr�) rrrZ old_subpathZtemp_keyZ temp_subpathZdominant_subpathr”r•Ztmp_pathÚnew_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)NÚrbrPrS)r™Úopenrrrwrrr r‹Ú set_subdirrˆÚset_infoÚset_dateÚgetmtime)rrÚsubpathÚfÚmsgr”r…rrrr'ps$  +zMaildir.get_messagec CsNttjj|j|j|ƒƒdƒ�}|jƒjtdƒSWdQRXdS)Nrœs ) r�rrrwrr™rMr[r\)rrr£rrrr.s-zMaildir.get_bytescCs4ttjj|j|j|ƒƒdƒ}t|ƒS)Nrœ)r�rrrwrr™Ú _ProxyFile)rrr£rrrr*„s*zMaildir.get_filec csP|jƒx?|jD]4}y|j|ƒWntk rBwYnX|VqWdS)N)Ú_refreshr|r™r!)rrrrrr1‰s  zMaildir.iterkeyscCs|jƒ||jkS)N)r¦r|)rrrrrr:“s zMaildir.__contains__cCs|jƒt|jƒS)N)r¦Úlenr|)rrrrr;˜s zMaildir.__len__cCsdS)Nr)rrrrrD�sz Maildir.flushcCsdS)Nr)rrrrrE£sz Maildir.lockcCsdS)Nr)rrrrrF§szMaildir.unlockcCsdS)Nr)rrrrrG«sz Maildir.closecCs„g}xwtj|jƒD]c}t|ƒdkr|ddkrtjjtjj|j|ƒƒr|j|dd…ƒqW|S)NrPrÚ.)rÚlistdirrr§rÚisdirrwÚappend)rr=ÚentryrrrÚ list_folders¯s "$zMaildir.list_folderscCs/ttjj|jd|ƒd|jddƒS)Nr¨rrF)rrrrwrr)rÚfolderrrrÚ get_folder¸s zMaildir.get_foldercCs‚tjj|jd|ƒ}t|d|jƒ}tjj|dƒ}tjj|ƒs~tjtj|tj tj Bdƒƒ|S)Nr¨rZ maildirfolderi¶) rrrwrrrryrGr�ÚO_CREATÚO_WRONLY)rr®rr=Zmaildirfolder_pathrrrÚ add_folder¾s zMaildir.add_foldercCsœtjj|jd|ƒ}xttjtjj|dƒƒtjtjj|dƒƒD]8}t|ƒdks|ddkrWtd|ƒ‚qWWxrtj|ƒD]a}|dkr£|dkr£|dkr£tjjtjj||ƒƒr£td||fƒ‚q£Wx€tj|d d ƒD]i\}}}x*|D]"}tj tjj||ƒƒq4Wx*|D]"}tj tjj||ƒƒqaWqWtj |ƒdS) Nr¨rurvrPrzFolder contains message(s): %srtz%Folder contains subdirectory '%s': %sÚtopdownF) rrrwrr©r§Ú NotEmptyErrorrªÚwalkrÚrmdir)rr®rr¬ÚrootÚdirsÚfilesrrrÚ remove_folderÈs #"$!%   $zMaildir.remove_foldercCs€tjƒ}xmtjtjj|jdƒƒD]J}tjj|jd|ƒ}|tjj|ƒdkr.tj|ƒq.WdS)Nrti@ú)Útimerr©rrwrr�r)rÚnowr¬rrrrÚcleanÛs  (z Maildir.cleanrPcCstjƒ}tjƒ}d|kr6|jddƒ}d|krT|jddƒ}dt|ƒt|ddƒtjƒtj|f}tj j |j d|ƒ}ytj |ƒWnDt k rütjd7_yt|ƒSWntk r÷YnXYnXtd |ƒ‚dS) Nú/z\057rsz\072z%s.M%sP%sQ%s.%srPg€„.Artz&Name clash prevented file creation: %s)r»ÚsocketÚ gethostnamer[ÚintrÚgetpidrÚ_countrrwrÚstatršÚ_create_carefullyÚFileExistsErrorr“)rr¼Úhostnamer–rrrrrƒås&    &   zMaildir._create_tmpcCs6tjƒ|jd|jkrƒd}xP|jD]E}tjj|j|ƒ}||j|krhd}||j|z|jƒWdz|jr'|jƒWd|jjƒXXdS)N)rDrÕrFrÑrG)rrrrrGÓs  z_singlefileMailbox.closec Cs]|jdkr|jƒ|dk rYy|j|SWn"tk rXtd|ƒ‚YnXdS)NzNo message with key: %s)r|Ú _generate_tocr!)rrrrrr™Þs   z_singlefileMailbox._lookupc CsÏ|jjddƒ|jjƒ}t|jƒdkrQ|j rQ|j|jƒy3|j|jƒ|j|ƒ}|j |jƒWn%t k r«|jj |ƒ‚YnX|jj ƒ|jjƒ|_ |S)NrrO)rÑrZrÜr§r|rÓrÞràÚ_install_messagerâr„ÚtruncaterDrÖ)rrZbeforeZoffsetsrrrr×ès  z"_singlefileMailbox._append_message)rprqrrrrrr#r1r:r;rErFrDrÞràrârGr™r×rrrrrÍ<s         @     rÍc@s[eZdZdZdd„Zddd„Zddd„Zdd d „Zd d „Zd S)Ú _mboxMMDFTcCsž|j|ƒ\}}|jj|ƒ|jjƒjtdƒ}|jj||jjƒƒ}|j|jtdƒƒ}|j |dd…j dƒƒ|S)Nós rQr) r™rÑrZrgr[r\rMrÜÚ_message_factoryÚset_fromÚdecode)rrrærçÚ from_lineÚstringr¤rrrr's z_mboxMMDF.get_messageFcCs"tj|j|ƒƒjd|ƒS)NÚunixfrom)r,r-r.r/)rrÚfrom_rrrr0sz_mboxMMDF.get_stringcCsg|j|ƒ\}}|jj|ƒ|s8|jjƒ|jj||jjƒƒ}|jtdƒS)Ns )r™rÑrZrgrMrÜr[r\)rrrôrærçròrrrr.s  z_mboxMMDF.get_bytescCsT|j|ƒ\}}|jj|ƒ|s8|jjƒt|j|jjƒ|ƒS)N)r™rÑrZrgÚ _PartialFilerÜ)rrrôrærçrrrr*s  z_mboxMMDF.get_filecCs€d}t|tƒr$|j|ƒ}t|tƒr“|jdƒr“|jdƒ}|dkr„|d|…}||dd…}q|}d}nmt|tƒrÄ|jƒjdƒ}d|}n<t|t j j ƒr|j ƒ}|dk r|jdƒ}|dkr+dt jt jƒƒjƒ}|jjƒ}|jj|tƒ|j||j|jƒ|jjƒ}||fS)NsFrom s rPrírsFrom MAILER-DAEMON rS)rTr`rKrarhÚfindÚ_mboxMMDFMessageÚget_fromrHr,rrÚ get_unixfromr»ÚasctimeÚgmtimerÑrÜr]r\roÚ _mangle_from_)rrrñÚnewlineZauthorrærçrrrrê$s0      z_mboxMMDF._install_messageN) rprqrrrür'r0r.r*rêrrrrrìÿs   rìc@sFeZdZdZdZdddd„Zdd„Zdd„ZdS) rTNcCs#t|_tj||||ƒdS)N)r rîrìr)rrrrrrrrJs z mbox.__init__cCs|jtƒdS)N)r]r\)rr£rrrrâOszmbox._post_message_hookcCsJgg}}d}|jjdƒxÞ|jjƒ}|jjƒ}|jdƒr®t|ƒt|ƒkr˜|r‹|j|ttƒƒn |j|ƒ|j|ƒd}q&|så|rÔ|j|ttƒƒn |j|ƒPq&|tkrúd}q&d}q&Wtt t ||ƒƒƒ|_ t|j ƒ|_ |jjƒ|_ dS)NFrsFrom T)rÑrZrÜrgrhr§r«r\ÚdictÚ enumerateÚzipr|rÒrÖ)rÚstartsÚstopsZlast_was_emptyÚline_posrnrrrréSs0        zmbox._generate_toc)rprqrrrür^rrârérrrrrAs  c@sFeZdZdddd„Zdd„Zdd„Zd d „ZdS) rNTcCs#t|_tj||||ƒdS)N)r rîrìr)rrrrrrrrxs z MMDF.__init__cCs|jdtƒdS)Ns)r]r\)rr£rrrrà}szMMDF._pre_message_hookcCs|jtdtƒdS)Ns)r]r\)rr£rrrrâ�szMMDF._post_message_hookcCs;gg}}|jjdƒd}x¼|}|jjƒ}|jjƒ}|jdtƒr×|j|ƒxq|}|jjƒ}|jjƒ}|dtkr¼|j|ttƒƒPqm|sm|j|ƒPqmWq&|s&Pq&Wtt t ||ƒƒƒ|_ t|j ƒ|_ |jjddƒ|jjƒ|_ dS)NrsrO)rÑrZrgrÜrhr\r«r§rþrÿrr|rÒrÖ)rrrÚnext_posrrnrrrré…s2   zMMDF._generate_toc)rprqrrrràrârérrrrrus   c@seZdZdddd„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)/rNTcCs¢tj||||ƒtjj|jƒs•|r†tj|jdƒtjtjtjj |jdƒtj tj Btj Bdƒƒnt |jƒ‚d|_dS)NiÀz .mh_sequencesi€F)rrrrryrrzrGr�rwr°ÚO_EXCLr±r{rÕ)rrrrrrrr¥s!!z MH.__init__cCs,|jƒ}t|ƒdkr'd}nt|ƒd}tjj|jt|ƒƒ}t|ƒ}d}z­|j r}t |ƒzy|j ||ƒWnEt k rÛ|j r·t |ƒt|ƒd}tj|ƒ‚YnXt|tƒrû|j||ƒWd|j rt |ƒXWd|s't|ƒX|S)NrrPFT)r3r§Úmaxrrrwrr`rÅrÕrØror„rÙr†rrTr Ú_dump_sequences)rrr3Znew_keyr›r£Úclosedrrrr±s6            zMH.addcCsœtjj|jt|ƒƒ}yt|dƒ}WnMtk r€}z-|jtjkrkt d|ƒ‚n‚WYdd}~XnX|j ƒtj |ƒdS)Nzrb+zNo message with key: %s) rrrwrr`r�r�r‘rÎr!rGr)rrrr£r˜rrrrÓs z MH.removecCstjj|jt|ƒƒ}yt|dƒ}WnMtk r€}z-|jtjkrkt d|ƒ‚n‚WYdd}~XnXz„|j r—t |ƒzVtj tj|tj tjBƒƒ|j||ƒt|tƒrì|j||ƒWd|j rt|ƒXWdt|ƒXdS)Nzrb+zNo message with key: %s)rrrwrr`r�r�r‘rÎr!rÕrØrGr±ÚO_TRUNCrorTr rrÙr†)rrrrr£r˜rrrr#ás$  # zMH.__setitem__c Cs6y^|jr6ttjj|jt|ƒƒdƒ}n'ttjj|jt|ƒƒdƒ}WnMtk r­}z-|jtj kr˜t d|ƒ‚n‚WYdd}~XnX|�?|jrÈt |ƒzt |ƒ}Wd|jrît |ƒXWdQRXx9|jƒjƒD]%\}}||kr |j|ƒq W|S)Nzrb+rœzNo message with key: %s)rÕr�rrrwrr`r�r‘rÎr!rØr rÙÚ get_sequencesr9Ú add_sequence)rrr£r˜r¤r…Úkey_listrrrr'ùs& *+    zMH.get_messagec Csy^|jr6ttjj|jt|ƒƒdƒ}n'ttjj|jt|ƒƒdƒ}WnMtk r­}z-|jtj kr˜t d|ƒ‚n‚WYdd}~XnX|�I|jrÈt |ƒz|j ƒj tdƒSWd|jrøt|ƒXWdQRXdS)Nzrb+rœzNo message with key: %ss )rÕr�rrrwrr`r�r‘rÎr!rØrMr[r\rÙ)rrr£r˜rrrr.s *+   z MH.get_bytescCs…y+ttjj|jt|ƒƒdƒ}WnMtk rz}z-|jtjkret d|ƒ‚n‚WYdd}~XnXt |ƒS)NrœzNo message with key: %s) r�rrrwrr`r�r‘rÎr!r¥)rrr£r˜rrrr*'s+z MH.get_filecCs)ttdd„tj|jƒDƒƒƒS)Ncss'|]}|jƒrt|ƒVqdS)N)ÚisdigitrÁ)Ú.0r¬rrrú 4szMH.iterkeys..)Úiterrßrr©r)rrrrr12sz MH.iterkeyscCs(tjjtjj|jt|ƒƒƒS)N)rrryrwrr`)rrrrrr:7szMH.__contains__cCstt|jƒƒƒS)N)r§r2r1)rrrrr;;sz MH.__len__cCsG|jsCttjj|jdƒdƒ|_t|jƒd|_dS)Nz .mh_sequenceszrb+T)rÕr�rrrwrrÑrØ)rrrrrE?s $ zMH.lockcCs6|jr2t|jƒt|jƒ|`d|_dS)NF)rÕrÙrÑr†)rrrrrFFs    z MH.unlockcCsdS)Nr)rrrrrDNszMH.flushcCs|jr|jƒdS)N)rÕrF)rrrrrGRs zMH.closecCsXg}xKtj|jƒD]7}tjjtjj|j|ƒƒr|j|ƒqW|S)N)rr©rrrªrwr«)rr=r¬rrrr­Ws $zMH.list_folderscCs+ttjj|j|ƒd|jddƒS)NrrF)rrrrwrr)rr®rrrr¯_sz MH.get_foldercCs%ttjj|j|ƒd|jƒS)Nr)rrrrwrr)rr®rrrr²dsz MH.add_foldercCsˆtjj|j|ƒ}tj|ƒ}|dgkrUtjtjj|dƒƒn"|gkrdntd|jƒ‚tj|ƒdS)Nz .mh_sequenceszFolder not empty: %s)rrrwrr©rr´r¶)rr®rÚentriesrrrrºis zMH.remove_folderc s`i}ttjj|jdƒdddƒ�,}t|jƒƒ‰x|D]}y×|jdƒ\}}tƒ}xr|jƒD]d}|jƒr¥|j t |ƒƒq}dd„|jdƒDƒ\}} |j t || d ƒƒq}W‡fd d †t |ƒDƒ||.ú-rPcs"g|]}|ˆkr|‘qSrr)rr)Úall_keysrrú „s z$MH.get_sequences..rz"Invalid sequence specification: %s)r�rrrwrÚsetr3r‹r rrÁrCÚrangerßr§rJÚ FormatErrorÚrstrip) rÚresultsr£rnr…Úcontentsr3Úspecrærçr)rrr us&*   "#   zMH.get_sequencesc Csettjj|jdƒdddƒ}z,tjtj|jtjtjBƒƒxÿ|j ƒD]ñ\}}t |ƒdkr~q]|j |dƒd}d}xƒt t |ƒƒD]o}|d|krà|sd }|j d ƒn7|rd}|j d ||fƒn|j d |ƒ|}q®W|rA|j t|ƒd ƒq]|j d ƒq]WWdt|ƒXdS)Nz .mh_sequenceszr+rrrrsFrPTrz%s %sz %sÚ )r�rrrwrrGr…r±r r9r§r]rßrr`r†)rÚ sequencesr£r…r3ÚprevZ completingrrrrÚ set_sequences�s.'& zMH.set_sequencesc Cs¦|jƒ}d}g}x|jƒD]ö}|d|kr|j||dfƒttdƒrÍtjtjj|jt |ƒƒtjj|jt |dƒƒƒtj tjj|jt |ƒƒƒnDtj tjj|jt |ƒƒtjj|jt |dƒƒƒ|d7}q%W|d|_ t |ƒdkrBdSxP|jƒD]B\}}x3|D]+\}}||krb|||j|ƒ.rPó,srO)rÑrZrgrÜr\r§r«r‹rþrÿrr|r.rÒrÖ)rrrrZ label_listsrrnr6rrrré/s4   &zBabyl._generate_toccCsmdt}|dt7}|jƒ}dd„|Dƒ}|ddj|ƒt7}|d7}|j|ƒdS)NsBABYL OPTIONS:s Version: 5css|]}|jƒVqdS)N)rH)rr8rrrrRsz*Babyl._pre_mailbox_hook..sLabels:r9s)r\r/rwr])rr£Zbabylr6rrrrÞMs   zBabyl._pre_mailbox_hookcCs|jdtƒdS)Ns )r]r\)rr£rrrràWszBabyl._pre_message_hookcCs|jtdƒdS)Ns)r]r\)rr£rrrrâ[szBabyl._post_message_hookcCsð|jjƒ}t|tƒrúg}g}x@|jƒD]2}||jkr\|j|ƒq7|j|ƒq7W|jjdƒx(|D] }|jjd|jƒƒq„W|jjdƒx,|D]$}|jjd|jƒdƒq¿W|jjt ƒn|jjdt ƒt|t j j ƒrÐt jƒ}t jj|ddƒ}|j|ƒ|jdƒx@|jƒ}|jj|jd t ƒƒ|d ksŸ| rdPqdW|jjd t ƒt|tƒrDt jƒ} t jj| ddƒ} | j|jƒƒx“| jƒ}|jj|jd t ƒƒ|d ks<| rPqWnP|jdƒx@|jƒ}|jj|jd t ƒƒ|d ks�| rTPqTWx@|jd ƒ} | s­P|jj| jd t ƒƒq—Wnt|ttt jfƒrt|t jƒrtjd td ƒ|jƒ}t|tƒr:|j|ƒ}|jdƒd} | ddkræ|jj|d| …jd t ƒƒ|jjd t ƒ|jj|d| …jd t ƒƒ|jj|| d…jd t ƒƒq×|jjd t t ƒ|jj|jd t ƒƒnºt |dƒrÁt |dƒrWtjdtd ƒ|j!}|jƒ} d}x¹|jƒ}|j"dƒrž|dd…d }n#|j"dƒrÁ|dd…d }|jj|jd t ƒƒ|d ksð| rl|r d}|jjd t ƒ|j| ƒqlPqlWx¯|jƒ}|s;P|j"dƒra|dd…t }nI|j"dƒr‡|dd…t }n#|j"d ƒrª|dd…t }|jj|ƒq(Wnt#dt$|ƒƒ‚|jjƒ}||fS)Nó1s, 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)%rÑrÜrTr r/r5r«r]rHr\r,rrrUrVrWrXrYrZrgr[Ú get_visiblerMrar`rbrcrdrerfrKrör@rNr_rirj)rrræZspecial_labelsr6r8Z orig_bufferZorig_generatorrnZ vis_bufferZ vis_generatorrNZ body_startZ original_posZ first_passrçrrrrê_sÀ  "        #   &&)      zBabyl._install_message)rprqrrÚ frozensetr5rrrr#r'r.r*r/rérÞràrârêrrrrrÒs          c@s7eZdZddd„Zdd„Zdd„ZdS)rNcCs)t|tjjƒrJ|jtj|ƒƒt|tƒr%|j|ƒnÛt|tƒrr|jtj |ƒƒn³t|t ƒrš|jtj |ƒƒn‹t|t j ƒrÅ|jtj|ƒƒn`t|dƒrí|jtj|ƒƒn8|dkrtjjj|ƒntdt|ƒƒ‚dS)NrMzInvalid message type: %s)rTr,rrÚ_become_messageÚcopyÚdeepcopyÚ _explain_torar-r`Zmessage_from_stringrUÚ TextIOWrapperZmessage_from_filer@Zmessage_from_binary_filerrirj)rrrrrrÎs zMessage.__init__cCsJt|dgƒ}x1|jD]&}||kr|j||j|ás zMessage._become_messagecCs#t|tƒrdStdƒ‚dS)Nz Cannot convert to specified type)rTrri)rrrrrrAèszMessage._explain_to)rprqrrrr>rArrrrrËs  c@s²eZdZdddgZddd„Zdd„Zd d „Zd d „Zd d„Zdd„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„ZdS)r Ú_subdirÚ_infoÚ_dateNcCs5d|_d|_tjƒ|_tj||ƒdS)Nrur�)rFrGr»rHrr)rrrrrrõs  zMaildirMessage.__init__cCs|jS)N)rF)rrrrr‡üszMaildirMessage.get_subdircCs8|dks|dkr$||_ntd|ƒ‚dS)Nrurvz!subdir must be 'new' or 'cur': %s)rFrJ)rr”rrrržs zMaildirMessage.set_subdircCs+|jjdƒr#|jdd…SdSdS)Nz2,rOr�)rGrh)rrrrÚ get_flagsszMaildirMessage.get_flagscCs ddjt|ƒƒ|_dS)Nz2,r�)rwrßrG)rÚflagsrrrÚ set_flagsszMaildirMessage.set_flagscCs0|jdjt|jƒƒt|ƒBƒƒdS)Nr�)rKrwrrI)rÚflagrrrÚadd_flagszMaildirMessage.add_flagcCs<|jƒr8|jdjt|jƒƒt|ƒƒƒdS)Nr�)rIrKrwr)rrLrrrÚ remove_flags zMaildirMessage.remove_flagcCs|jS)N)rH)rrrrrŽszMaildirMessage.get_datec Cs<yt|ƒ|_Wn"tk r7td|ƒ‚YnXdS)Nzcan't convert to float: %s)ÚfloatrHrJri)rZdaterrrr s zMaildirMessage.set_datecCs|jS)N)rG)rrrrr‰&szMaildirMessage.get_infocCs5t|tƒr||_ntdt|ƒƒ‚dS)Nzinfo must be a string: %s)rTr`rGrirj)rÚinforrrrŸ*s zMaildirMessage.set_infocCs4t|tƒrK|j|jƒƒ|j|jƒƒ|j|jƒƒnåt|tƒrt |jƒƒ}d|kr…|j dƒ|jƒdkr¤|j dƒd|kr½|j dƒd|krÖ|j dƒd|krï|j dƒ|j d t j |jƒƒƒnt|tƒr€t |jƒƒ}d|krK|jd ƒd|krd|jd ƒd|kr0|jd ƒn°t|tƒrt |jƒƒ}d|krº|jd ƒd|krÓ|jd ƒd|krì|jdƒd|kr0|jdƒn(t|tƒrntdt|ƒƒ‚dS)NÚSÚRrvÚOÚTÚDÚFÚAz MAILER-DAEMONr)ÚrepliedÚflaggedr*r+ÚPr,z$Cannot convert to specified type: %s)rTr rKrIržr‡r rŽr÷rrMrïr»rûr r r Ú add_labelrrirj)rrrJrrrrA1sN         "            zMaildirMessage._explain_to)rprqrrrCrr‡ržrIrKrMrNrŽr r‰rŸrArrrrr ðs           c@seZdZdgZddd„Zdd„Zddd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dS)r÷Ú_fromNcCsw|jddƒt|tjjƒrc|jƒ}|dk rc|jdƒrc|j|dd…ƒtj||ƒdS)Nz MAILER-DAEMONTzFrom rQ)rïrTr,rrrùrhr)rrrórrrrbs  z_mboxMMDFMessage.__init__cCs|jS)N)r\)rrrrrøksz_mboxMMDFMessage.get_fromcCsH|dk r;|dkr$tjƒ}|dtj|ƒ7}||_dS)NTú )r»rûrúr\)rrôZtime_rrrrïos    z_mboxMMDFMessage.set_fromcCs |jddƒ|jddƒS)NÚStatusr�zX-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) Nr�rRrSrUrVrWr^zX-Status)r�r�)rRrS)rUrVrW)rrrwrßÚreplace_headerr!Z add_header)rrJZ status_flagsZ xstatus_flagsrLrrrrK{s&          z_mboxMMDFMessage.set_flagscCs0|jdjt|jƒƒt|ƒBƒƒdS)Nr�)rKrwrrI)rrLrrrrM‘sz_mboxMMDFMessage.add_flagcCsHd|ksd|krD|jdjt|jƒƒt|ƒƒƒdS)Nr^zX-Statusr�)rKrwrrI)rrLrrrrN•sz_mboxMMDFMessage.remove_flagc Csst|tƒrt|jƒƒ}d|kr:|jdƒd|krS|jdƒd|krl|jdƒd|kr…|jdƒd|krž|jdƒ|d =|d =d j|jƒjƒdd…ƒ}y&|j t j t j |d ƒƒƒWqottfk rYqoXnZt|tƒrM|j|jƒƒ|j|jƒƒn"t|tƒrÊt|jƒƒ}d|kr‡|jdƒd|kr |jdƒd|kr¹|jdƒ|d =|d =n¥t|tƒrGt|jƒƒ}d|kr|jdƒd|kr|jdƒd|kr6|jdƒ|d =|d =n(t|tƒrYntdt|ƒƒ‚dS)NrSrvrVrWrRrQrUrTÚstatuszx-statusr]rQz%a %b %d %H:%M:%S %Yr)rXrYr*r+z$Cannot convert to specified type: %séûÿÿÿ)rTr rrIržrMrwrør‹r ÚcalendarZtimegmr»ÚstrptimerJÚ OverflowErrorr÷rKrïr r r r[rrirj)rrrJZ maybe_daterrrrAšs^          %              z_mboxMMDFMessage._explain_to) rprqrrrCrrørïrIrKrMrNrArrrrr÷]s       r÷c@seZdZdS)r N)rprqrrrrrrr Îs c@sdeZdZdgZddd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dS)r Ú _sequencesNcCsg|_tj||ƒdS)N)rerr)rrrrrr×s zMHMessage.__init__cCs|jdd…S)N)re)rrrrr ÜszMHMessage.get_sequencescCst|ƒ|_dS)N)r2re)rr!rrrr#àszMHMessage.set_sequencescCsKt|tƒr1||jkrG|jj|ƒntdt|ƒƒ‚dS)Nzsequence type must be str: %s)rTr`rer«rirj)rr(rrrr äszMHMessage.add_sequencec Cs-y|jj|ƒWntk r(YnXdS)N)rerrJ)rr(rrrÚremove_sequenceìs zMHMessage.remove_sequencecCsÃt|tƒrŒt|jƒƒ}d|kr=|jdƒn|jdƒ|jdƒd|krp|jdƒd|kr¿|jdƒn3t|tƒr t|jƒƒ}d|krÉ|jdƒn |jd ƒd|krï|jdƒd|kr¿|jd ƒn´t|tƒrAx¢|jƒD]}|j|ƒq'Wn~t|t ƒr—t|jƒƒ}d|kr{|j dƒd|kr¿|j d ƒn(t|t ƒr©nt d t |ƒƒ‚dS) Nr)rvrQrYrVrXrRÚROrSrWr+z$Cannot convert to specified type: %s)rTr rr ržrMr÷r r r r[rrirj)rrr!r(rrrrAós@              zMHMessage._explain_to) rprqrrrCrr r#r rfrArrrrr Òs      c@s‹eZdZddgZddd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z dd„Z dS)r r.Ú_visibleNcCs)g|_tƒ|_tj||ƒdS)N)r.rrhr)rrrrrrs  zBabylMessage.__init__cCs|jdd…S)N)r.)rrrrr/%szBabylMessage.get_labelscCst|ƒ|_dS)N)r2r.)rr6rrrr1)szBabylMessage.set_labelscCsKt|tƒr1||jkrG|jj|ƒntdt|ƒƒ‚dS)Nzlabel must be a string: %s)rTr`r.r«rirj)rr8rrrr[-szBabylMessage.add_labelc Cs-y|jj|ƒWntk r(YnXdS)N)r.rrJ)rr8rrrÚ remove_label5s zBabylMessage.remove_labelcCs t|jƒS)N)rrh)rrrrr<<szBabylMessage.get_visiblecCst|ƒ|_dS)N)rrh)rZvisiblerrrr0@szBabylMessage.set_visiblecCs‹xG|jjƒD]6}||kr<|jj|||ƒq|j|=qWx:dD]2}||krQ||jkrQ|||j|tr¾tj|tjƒ|rØtj|j dƒ‚YnXdS)NFzlockf: lock unavailable: %sz.lockr‚Tzdot lock unavailable: %s)ÚfcntlÚlockfZLOCK_EXZLOCK_NBr�r‘ÚEAGAINrÏrÐr“r…rÝrGr@rr‚r$r�rÆrÚLOCK_UN)r£rÚZ dotlock_doner˜Zpre_lockrrrrØsF!  rØcCsJtrtj|tjƒtjj|jdƒrFtj|jdƒdS)Nz.lock)r†r‡r‰rrryr…r)r£rrrrÙ0srÙc CsLtj|tjtjBtjBdƒ}zt|dƒSWdtj|ƒXdS)Ni¶zrb+)rr�r°rÚO_RDWRrG)rÚfdrrrrÅ7s&rÅcCs2td|ttjƒƒtjƒtjƒfƒS)Nz %s.%s.%s.%s)rÅrÁr»r¿rÀrrÂ)rrrrrÝ?s rÝcCs0|jƒttdƒr,tj|jƒƒdS)NÚfsync)rDr@rrŒÚfileno)r£rrrrÛEs rÛcCst|ƒ|jƒdS)N)rÛrG)r£rrrr†Ks r†c@seZdZdS)ÚErrorN)rprqrrrrrrrŽQs rŽc@seZdZdS)r{N)rprqrrrrrrr{Ts r{c@seZdZdS)r´N)rprqrrrrrrr´Ws r´c@seZdZdS)r“N)rprqrrrrrrr“Zs r“c@seZdZdS)rN)rprqrrrrrrr]s r)/rr»rbr¿r‘r?rcr,Z email.messageZemail.generatorrUr(r†Ú ImportErrorÚ__all__r\rHrrrÍrìrrrrrrr r÷r r r r r¥rõrØrÙrÅrÝrÛr†Ú ExceptionrŽr{r´r“rrrrrÚ sb                çÿ6ÃB4-ÿ1ù%mqH_c')