ž «ÿfõ4c@sTdZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z y(ejdkr½e‚nddlZWnek räeZYnXdddddd d d d d ddg ZejjdƒZGdd„dƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd „d eƒZGdd„deƒZGdd„deƒZGdd „d e jjƒZGdd „d eƒZGdd„deƒZ Gdd „d e ƒZ!Gd d „d eƒZ"Gd!d„deƒZ#Gd"d„de ƒZ$Gd#d$„d$ƒZ%Gd%d&„d&e%ƒZ&e'd'd(„Z(d)d*„Z)d+d,„Z*d-d.„Z+d/d0„Z,d1d2„Z-Gd3d4„d4e.ƒZ/Gd5d6„d6e/ƒZ0Gd7d8„d8e/ƒZ1Gd9d:„d:e/ƒZ2Gd;d<„d<e/ƒZ3dS(=uDRead/write support for Maildir, mbox, MH, Babyl, and MMDF mailboxes.iNuos2emxuMailboxuMaildirumboxuMHuBabyluMMDFuMessageuMaildirMessageu mboxMessageu MHMessageu BabylMessageu MMDFMessageuasciicBs¦|EeZdZdZd@dAdd„Zdd„Zdd„Zdd „Z d d „Z d d „Z d@dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Zd(d)„Zd*d+„Zd,d-„Zd@d.d/„Zd0d1„Zd@d2d3„Zd4d5„Zd6d7„Z d8d9„Z!d:d;„Z"d<d=„Z#dBZ%dBd>d?„Z&d@S(CuMailboxu*A group of messages in a particular place.cCs.tjjtjj|ƒƒ|_||_dS(uInitialize a Mailbox instance.N(uosupathuabspathu expanduseru_pathu_factory(uselfupathufactoryucreate((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu__init__'s!uMailbox.__init__cCstdƒ‚dS(u$Add message and return assigned key.u&Method must be implemented by subclassN(uNotImplementedError(uselfumessage((u,/opt/alt/python33/lib64/python3.3/mailbox.pyuadd,su Mailbox.addcCstdƒ‚dS(u=Remove the keyed message; raise KeyError if it doesn't exist.u&Method must be implemented by subclassN(uNotImplementedError(uselfukey((u,/opt/alt/python33/lib64/python3.3/mailbox.pyuremove0suMailbox.removecCs|j|ƒdS(N(uremove(uselfukey((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu __delitem__4suMailbox.__delitem__c Cs*y|j|ƒWntk r%YnXdS(u'If the keyed message exists, remove it.N(uremoveuKeyError(uselfukey((u,/opt/alt/python33/lib64/python3.3/mailbox.pyudiscard7s uMailbox.discardcCstdƒ‚dS(u>Replace the keyed message; raise KeyError if it doesn't exist.u&Method must be implemented by subclassN(uNotImplementedError(uselfukeyumessage((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu __setitem__>suMailbox.__setitem__c Cs.y|j|ƒSWntk r)|SYnXdS(u9Return the keyed message, or default if it doesn't exist.N(u __getitem__uKeyError(uselfukeyudefault((u,/opt/alt/python33/lib64/python3.3/mailbox.pyugetBs u Mailbox.getc CsH|js|j|ƒStj|j|ƒƒ}|j|ƒSWdQXdS(u=Return the keyed message; raise KeyError if it doesn't exist.N(u_factoryu get_messageu contextlibuclosinguget_file(uselfukeyufile((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu __getitem__Is  uMailbox.__getitem__cCstdƒ‚dS(u4Return a Message representation or raise a KeyError.u&Method must be implemented by subclassN(uNotImplementedError(uselfukey((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu get_messageQsuMailbox.get_messagecCstj|j|ƒƒjƒS(uœReturn a string representation or raise a KeyError. Uses email.message.Message to create a 7bit clean string representation of the message.(uemailumessage_from_bytesu get_bytesu as_string(uselfukey((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu get_stringUsuMailbox.get_stringcCstdƒ‚dS(u8Return a byte string representation or raise a KeyError.u&Method must be implemented by subclassN(uNotImplementedError(uselfukey((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu get_bytes\suMailbox.get_bytescCstdƒ‚dS(u6Return a file-like representation or raise a KeyError.u&Method must be implemented by subclassN(uNotImplementedError(uselfukey((u,/opt/alt/python33/lib64/python3.3/mailbox.pyuget_file`suMailbox.get_filecCstdƒ‚dS(uReturn an iterator over keys.u&Method must be implemented by subclassN(uNotImplementedError(uself((u,/opt/alt/python33/lib64/python3.3/mailbox.pyuiterkeysdsuMailbox.iterkeyscCst|jƒƒS(uReturn a list of keys.(ulistuiterkeys(uself((u,/opt/alt/python33/lib64/python3.3/mailbox.pyukeyshsu Mailbox.keysc csFx?|jƒD]1}y||}Wntk r8w YnX|Vq WdS(u%Return an iterator over all messages.N(ukeysuKeyError(uselfukeyuvalue((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu itervaluesls  uMailbox.itervaluescCs |jƒS(N(u itervalues(uself((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu__iter__usuMailbox.__iter__cCst|jƒƒS(u,Return a list of messages. Memory intensive.(ulistu itervalues(uself((u,/opt/alt/python33/lib64/python3.3/mailbox.pyuvaluesxsuMailbox.valuesc csLxE|jƒD]7}y||}Wntk r8w YnX||fVq WdS(u.Return an iterator over (key, message) tuples.N(ukeysuKeyError(uselfukeyuvalue((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu iteritems|s  uMailbox.iteritemscCst|jƒƒS(u9Return a list of (key, message) tuples. Memory intensive.(ulistu iteritems(uself((u,/opt/alt/python33/lib64/python3.3/mailbox.pyuitems…su Mailbox.itemscCstdƒ‚dS(u9Return True if the keyed message exists, False otherwise.u&Method must be implemented by subclassN(uNotImplementedError(uselfukey((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu __contains__‰suMailbox.__contains__cCstdƒ‚dS(u*Return a count of messages in the mailbox.u&Method must be implemented by subclassN(uNotImplementedError(uself((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu__len__suMailbox.__len__cCs(x!|jƒD]}|j|ƒq WdS(uDelete all messages.N(ukeysudiscard(uselfukey((u,/opt/alt/python33/lib64/python3.3/mailbox.pyuclear‘su Mailbox.clearc Cs8y||}Wntk r&|SYnX|j|ƒ|S(u3Delete the keyed message and return it, or default.(uKeyErrorudiscard(uselfukeyudefaulturesult((u,/opt/alt/python33/lib64/python3.3/mailbox.pyupop–s    u Mailbox.popcCs7x0|jƒD]}||j|ƒfSWtdƒ‚dS(u6Delete an arbitrary (key, message) pair and return it.uNo messages in mailboxN(ukeysupopuKeyError(uselfukey((u,/opt/alt/python33/lib64/python3.3/mailbox.pyupopitemŸsuMailbox.popitemc Cs¡t|dƒr|jƒ}n$t|dƒr<|jƒ}n|}d}x=|D]5\}}y|||From ureadubufferuDUse of text mode files is deprecated, use a binary mode file insteads Nis isFrom s>From iuInvalid message type: %siþÿÿÿiÿÿÿÿ(u isinstanceuemailumessageuMessageuiouBytesIOu generatoruBytesGeneratoruflattenuseekureadureplaceulinesepuwriteu_append_newlineuendswithustrubytesuStringIOuwarningsuwarnuDeprecationWarningugetvalueu_string_to_bytesuhasattrubufferuNoneureadlineu startswithu TypeErrorutype( uselfumessageutargetu mangle_from_ubufferugenudataulastlineuline((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu _dump_messageÔsZ              uMailbox._dump_messageNTF('u__name__u __module__u __qualname__u__doc__uNoneuTrueu__init__uadduremoveu __delitem__udiscardu __setitem__ugetu __getitem__u get_messageu get_stringu get_bytesuget_fileuiterkeysukeysu itervaluesu__iter__uvaluesu iteritemsuitemsu __contains__u__len__uclearupopupopitemuupdateuflushulockuunlockucloseu_string_to_bytesuFalseu_append_newlineu _dump_message(u __locals__((u,/opt/alt/python33/lib64/python3.3/mailbox.pyuMailbox$sB                        cBsL|EeZdZdZdZd4d5dd„Zdd„Zdd„Z d d „Z d d „Z d d„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Zd+Zd,d-„Zd.d/„Zd0d1„Zd2d3„Zd4S(6uMaildiruA qmail-style Maildir mailbox.u:cCs tj||||ƒitjj|jdƒd6tjj|jdƒd6tjj|jdƒd6|_tjj|jƒs×|rÅtj|jdƒx9|jj ƒD]}tj|dƒq¨Wq×t |jƒ‚ni|_ idd6dd6|_ d|_ d|_dS(uInitialize a Maildir instance.utmpunewucuriÀigš™™™™™¹?N(uMailboxu__init__uosupathujoinu_pathu_pathsuexistsumkdiruvaluesuNoSuchMailboxErroru_tocu _toc_mtimesu _last_readu _skewfactor(uselfudirnameufactoryucreateupath((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu__init__s  uMaildir.__init__cCså|jƒ}y|j||ƒWn/tk rQ|jƒtj|jƒ‚YnXt|ƒt|t ƒr¥|j ƒ}|j |j ƒ}||j kr±d}q±n d}d}tj j|jƒj|j ƒd}tj j|j|||ƒ}t|t ƒr5tj|jtj j|jƒ|jƒfƒnyLttdƒrmtj|j|ƒtj|jƒntj|j|ƒWn]tk rà}z=tj|jƒ|jtjkrËtd|ƒ‚n‚WYdd}~XnX|S(u$Add message and return assigned key.uunewiulinku$Name clash with existing message: %sN(u _create_tmpu _dump_messageu BaseExceptionucloseuosuremoveunameu _sync_closeu isinstanceuMaildirMessageu get_subdirucolonuget_infoupathubasenameusplitujoinu_pathuutimeugetatimeuget_dateuhasattrulinkurenameuOSErroruerrnouEEXISTuExternalClashError(uselfumessageutmp_fileusubdirusuffixuuniqudestue((u,/opt/alt/python33/lib64/python3.3/mailbox.pyuadd$s@      % % u Maildir.addcCs,tjtjj|j|j|ƒƒƒdS(u=Remove the keyed message; raise KeyError if it doesn't exist.N(uosuremoveupathujoinu_pathu_lookup(uselfukey((u,/opt/alt/python33/lib64/python3.3/mailbox.pyuremoveMsuMaildir.removecCsfy|j|ƒWnNtk r%Yn=tk ra}z|jtjkrO‚nWYdd}~XnXdS(u'If the keyed message exists, remove it.N(uremoveuKeyErroruOSErroruerrnouENOENT(uselfukeyue((u,/opt/alt/python33/lib64/python3.3/mailbox.pyudiscardQs uMaildir.discardc Cs$|j|ƒ}|j|ƒ}|j|ƒ}t|tƒrE|}n|}tjj|ƒ}|j|krŒ|j|j|jƒd}nd}|j |ƒtjj |j |ƒ} tjj |j |||ƒ} t|tƒrtj | tjj | ƒ|jƒfƒntj| | ƒdS(u>Replace the keyed message; raise KeyError if it doesn't exist.iuNiÿÿÿÿ(u_lookupuaddu isinstanceuMaildirMessageuosupathudirnameucolonusplitudiscardujoinu_pathuutimeugetatimeuget_dateurename( uselfukeyumessageu old_subpathutemp_keyu temp_subpathudominant_subpathusubdirusuffixutmp_pathunew_path((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu __setitem__\s"    "uMaildir.__setitem__c Csì|j|ƒ}ttjj|j|ƒdƒ}z+|jrN|j|ƒ}n t|ƒ}Wd|jƒXtjj |ƒ\}}|j |ƒ|j |kr½|j |j |j ƒdƒn|j tjjtjj|j|ƒƒƒ|S(u4Return a Message representation or raise a KeyError.urbNiiÿÿÿÿ(u_lookupuopenuosupathujoinu_pathu_factoryuMaildirMessageucloseusplitu set_subdirucolonuset_infouset_dateugetmtime(uselfukeyusubpathufumsgusubdiruname((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu get_messagews!    +uMaildir.get_messagec CsVttjj|j|j|ƒƒdƒ}z|jƒjtdƒSWd|j ƒXdS(u2Return a bytes representation or raise a KeyError.urbs N( uopenuosupathujoinu_pathu_lookupureadureplaceulinesepuclose(uselfukeyuf((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu get_bytes‰s*uMaildir.get_bytescCs4ttjj|j|j|ƒƒdƒ}t|ƒS(u6Return a file-like representation or raise a KeyError.urb(uopenuosupathujoinu_pathu_lookupu _ProxyFile(uselfukeyuf((u,/opt/alt/python33/lib64/python3.3/mailbox.pyuget_file‘s*uMaildir.get_filec csP|jƒx?|jD]4}y|j|ƒWntk rBwYnX|VqWdS(uReturn an iterator over keys.N(u_refreshu_tocu_lookupuKeyError(uselfukey((u,/opt/alt/python33/lib64/python3.3/mailbox.pyuiterkeys–s  uMaildir.iterkeyscCs|jƒ||jkS(u9Return True if the keyed message exists, False otherwise.(u_refreshu_toc(uselfukey((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu __contains__ s uMaildir.__contains__cCs|jƒt|jƒS(u*Return a count of messages in the mailbox.(u_refreshulenu_toc(uself((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu__len__¥s uMaildir.__len__cCsdS(u"Write any pending changes to disk.N((uself((u,/opt/alt/python33/lib64/python3.3/mailbox.pyuflushªsu Maildir.flushcCsdS(uLock the mailbox.N((uself((u,/opt/alt/python33/lib64/python3.3/mailbox.pyulock°su Maildir.lockcCsdS(u#Unlock the mailbox if it is locked.N((uself((u,/opt/alt/python33/lib64/python3.3/mailbox.pyuunlock´suMaildir.unlockcCsdS(uFlush and close the mailbox.N((uself((u,/opt/alt/python33/lib64/python3.3/mailbox.pyuclose¸su Maildir.closecCs‡g}xztj|jƒD]f}t|ƒdkr|ddkrtjjtjj|j|ƒƒr|j|dd…ƒqqW|S(uReturn a list of folder names.iiu.N(uosulistdiru_pathulenupathuisdirujoinuappend(uselfuresultuentry((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu list_folders¼s "$uMaildir.list_folderscCs/ttjj|jd|ƒd|jddƒS(u/Return a Maildir instance for the named folder.u.ufactoryucreateF(uMaildiruosupathujoinu_pathu_factoryuFalse(uselfufolder((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu get_folderÅs uMaildir.get_foldercCs…tjj|jd|ƒ}t|d|jƒ}tjj|dƒ}tjj|ƒstjtj|tj tj Bdƒƒn|S(u>Create a folder and return a Maildir instance representing it.u.ufactoryu maildirfolderi¶( uosupathujoinu_pathuMaildiru_factoryuexistsucloseuopenuO_CREATuO_WRONLY(uselfufolderupathuresultumaildirfolder_path((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu add_folderËs uMaildir.add_foldercCs¢tjj|jd|ƒ}xwtjtjj|dƒƒtjtjj|dƒƒD];}t|ƒdks|ddkrWtd|ƒ‚qWqWWxutj|ƒD]d}|dkr¦|dkr¦|dkr¦tjjtjj||ƒƒr¦td||fƒ‚q¦q¦Wx€tj|d d ƒD]i\}}}x*|D]"}tj tjj||ƒƒq:Wx*|D]"}tj tjj||ƒƒqgWq$Wtj |ƒd S( u-Delete the named folder, which must be empty.u.unewucuriiuFolder contains message(s): %sutmpu%Folder contains subdirectory '%s': %sutopdownNF( uosupathujoinu_pathulistdirulenu NotEmptyErroruisdiruwalkuFalseuremoveurmdir(uselfufolderupathuentryurootudirsufiles((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu remove_folderÕs #"$!%   $uMaildir.remove_foldercCsƒtjƒ}xptjtjj|jdƒƒD]M}tjj|jd|ƒ}|tjj|ƒdkr.tj|ƒq.q.WdS(uDelete old files in "tmp".utmpi@úN(utimeuosulistdirupathujoinu_pathugetatimeuremove(uselfunowuentryupath((u,/opt/alt/python33/lib64/python3.3/mailbox.pyucleanès  (u Maildir.cleanicCsmtjƒ}tjƒ}d|kr9|jddƒ}nd|krZ|jddƒ}ndt|ƒt|ddƒtjƒtj|f}tj j |j d|ƒ}ytj |ƒWnšt k rX}zz|jtjkrCtjd7_yt|ƒSWqFt k r?}z|jtjkr-‚nWYd d }~XqFXn‚WYd d }~XnXtd |ƒ‚d S( u=Create a file in the tmp subdirectory and open and return it.u/u\057u:u\072u%s.M%sP%sQ%s.%sig€„.AutmpNu&Name clash prevented file creation: %s(utimeusocketu gethostnameureplaceuintuosugetpiduMaildiru_countupathujoinu_pathustatuOSErroruerrnouENOENTu_create_carefullyuEEXISTuExternalClashError(uselfunowuhostnameuuniqupathue((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu _create_tmpòs,    &uMaildir._create_tmpcCs?tjƒ|jd|jkr‰d}xS|jD]H}tjj|j|ƒ}||j|krkd}n||j|Replace the keyed message; raise KeyError if it doesn't exist.NT(u_lookupu_append_messageu_tocuTrueu_pending(uselfukeyumessage((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu __setitem__ws u_singlefileMailbox.__setitem__ccs-|jƒx|jjƒD] }|VqWdS(uReturn an iterator over keys.N(u_lookupu_tocukeys(uselfukey((u,/opt/alt/python33/lib64/python3.3/mailbox.pyuiterkeys}s u_singlefileMailbox.iterkeyscCs|jƒ||jkS(u9Return True if the keyed message exists, False otherwise.(u_lookupu_toc(uselfukey((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu __contains__ƒs u_singlefileMailbox.__contains__cCs|jƒt|jƒS(u*Return a count of messages in the mailbox.(u_lookupulenu_toc(uself((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu__len__ˆs u_singlefileMailbox.__len__cCs&|js"t|jƒd|_ndS(uLock the mailbox.NT(u_lockedu _lock_fileu_fileuTrue(uself((u,/opt/alt/python33/lib64/python3.3/mailbox.pyulocks  u_singlefileMailbox.lockcCs&|jr"t|jƒd|_ndS(u#Unlock the mailbox if it is locked.NF(u_lockedu _unlock_fileu_fileuFalse(uself((u,/opt/alt/python33/lib64/python3.3/mailbox.pyuunlock“s  u_singlefileMailbox.unlockc CsÐ|js/|jr+t|jƒd |_ndS|jjddƒ|jjƒ}||jkr|td|j|fƒ‚nt |j ƒ}yêi}|j |ƒxÁt |j jƒƒD]ª}|j |\}}|jj|ƒ|j|ƒ|jƒ}xB|jjtd||jjƒƒƒ}|s.Pn|j|ƒqü||jƒf||<|j|ƒq·W|jƒ|_Wn%|jƒtj|jƒ‚YnXt|ƒ|jjƒtj|j ƒj} tj|j| ƒytj|j|j ƒWn„tk r|} zd| jtjks>tjdkrg| jtj krgtj|j ƒtj|j|j ƒn‚WYdd} ~ XnXt!|j dƒ|_||_ d |_d |_|j"rÌt#|jdd ƒndS( u"Write any pending changes to disk.Niiu4Size of mailbox file changed (expected %i, found %i)iuos2urb+udotlockF($u_pendingu _pending_syncu _sync_flushu_fileuFalseuseekutellu _file_lengthuExternalClashErroru_create_temporaryu_pathu_pre_mailbox_hookusortedu_tocukeysu_pre_message_hookureaduminuwriteu_post_message_hookucloseuosuremoveunameu _sync_closeustatust_modeuchmodurenameuOSErroruerrnouEEXISTuEACCESuopenu_lockedu _lock_file( uselfucur_lenunew_fileunew_tocukeyustartustopu new_startubufferumodeue((u,/opt/alt/python33/lib64/python3.3/mailbox.pyuflush™sd           !    u_singlefileMailbox.flushcCsdS(u,Called before writing the mailbox to file f.N((uselfuf((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu_pre_mailbox_hookÝsu$_singlefileMailbox._pre_mailbox_hookcCsdS(u-Called before writing each message to file f.N((uselfuf((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu_pre_message_hookásu$_singlefileMailbox._pre_message_hookcCsdS(u,Called after writing each message to file f.N((uselfuf((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu_post_message_hookåsu%_singlefileMailbox._post_message_hookcCs1|jƒ|jr |jƒn|jjƒdS(uFlush and close the mailbox.N(uflushu_lockeduunlocku_fileuclose(uself((u,/opt/alt/python33/lib64/python3.3/mailbox.pyucloseés   u_singlefileMailbox.closec Csc|jdkr|jƒn|dk r_y|j|SWq_tk r[td|ƒ‚Yq_XndS(u'Return (start, stop) or raise KeyError.uNo message with key: %sN(u_tocuNoneu _generate_tocuKeyError(uselfukey((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu_lookupðs   u_singlefileMailbox._lookupc CsÒ|jjddƒ|jjƒ}t|jƒdkrT|j rT|j|jƒny3|j|jƒ|j|ƒ}|j |jƒWn%t k r®|jj |ƒ‚YnX|jj ƒ|jjƒ|_ |S(u;Append message to mailbox and return (start, stop) offsets.ii(u_fileuseekutellulenu_tocu_pendingu_pre_mailbox_hooku_pre_message_hooku_install_messageu_post_message_hooku BaseExceptionutruncateuflushu _file_length(uselfumessageubeforeuoffsets((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu_append_messageús  u"_singlefileMailbox._append_messageNT(u__name__u __module__u __qualname__u__doc__uNoneuTrueu__init__uadduremoveu __setitem__uiterkeysu __contains__u__len__ulockuunlockuflushu_pre_mailbox_hooku_pre_message_hooku_post_message_hookucloseu_lookupu_append_message(u __locals__((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu_singlefileMailboxMs"        D     u_singlefileMailboxcBse|EeZdZdZd Zdd„Zddd„Zddd„Z ddd „Z d d „Z d S(u _mboxMMDFuAn mbox or MMDF mailbox.cCsž|j|ƒ\}}|jj|ƒ|jjƒjtdƒ}|jj||jjƒƒ}|j|jtdƒƒ}|j |dd…j dƒƒ|S(u4Return a Message representation or raise a KeyError.ss iNuascii( u_lookupu_fileuseekureadlineureplaceulinesepureadutellu_message_factoryuset_fromudecode(uselfukeyustartustopu from_lineustringumsg((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu get_messages u_mboxMMDF.get_messagecCs"tj|j|ƒƒjd|ƒS(u3Return a string representation or raise a KeyError.uunixfrom(uemailumessage_from_bytesu get_bytesu as_string(uselfukeyufrom_((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu get_string su_mboxMMDF.get_stringcCsj|j|ƒ\}}|jj|ƒ|s;|jjƒn|jj||jjƒƒ}|jtdƒS(u3Return a string representation or raise a KeyError.s (u_lookupu_fileuseekureadlineureadutellureplaceulinesep(uselfukeyufrom_ustartustopustring((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu get_bytes%s u_mboxMMDF.get_bytescCsW|j|ƒ\}}|jj|ƒ|s;|jjƒnt|j|jjƒ|ƒS(u6Return a file-like representation or raise a KeyError.(u_lookupu_fileuseekureadlineu _PartialFileutell(uselfukeyufrom_ustartustop((u,/opt/alt/python33/lib64/python3.3/mailbox.pyuget_file.s u_mboxMMDF.get_filecCsŒd}t|tƒr'|j|ƒ}nt|tƒr–|jdƒr–|jdƒ}|dkr‡|d|…}||dd…}q |}d}nst|tƒrÇ|jƒj dƒ}d|}nBt|t j j ƒr |j ƒ}|dk r |j dƒ}q n|dkr7dtjtjƒƒj ƒ}n|jjƒ}|jj|tƒ|j||j|jƒ|jjƒ}||fS( u1Format a message and blindly write to self._file.sFrom s iNsuasciisFrom MAILER-DAEMON iÿÿÿÿ(uNoneu isinstanceustru_string_to_bytesubytesu startswithufindu_mboxMMDFMessageuget_fromuencodeuemailumessageuMessageu get_unixfromutimeuasctimeugmtimeu_fileutelluwriteulinesepu _dump_messageu _mangle_from_(uselfumessageu from_lineunewlineuauthorustartustop((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu_install_message6s0      "u_mboxMMDF._install_messageNTF( u__name__u __module__u __qualname__u__doc__uTrueu _mangle_from_u get_messageuFalseu get_stringu get_bytesuget_fileu_install_message(u __locals__((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu _mboxMMDFs  u _mboxMMDFcBsP|EeZdZdZd Zd Zdd dd„Zdd„Z dd„Z dS( umboxuA classic mbox mailbox.cCs#t|_tj||||ƒdS(uInitialize an mbox mailbox.N(u mboxMessageu_message_factoryu _mboxMMDFu__init__(uselfupathufactoryucreate((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu__init__\s u mbox.__init__cCs|jtƒdS(u,Called after writing each message to file f.N(uwriteulinesep(uselfuf((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu_post_message_hookasumbox._post_message_hookcCsLgg}}d}|jjdƒxà|jjƒ}|jjƒ}|jdƒr±t|ƒt|ƒkr›|r‹|j|ttƒƒq›|j|ƒn|j|ƒd}q&|sè|r×|j|ttƒƒn |j|ƒPq&|tkrýd}q&d}q&t t t ||ƒƒƒ|_ t|j ƒ|_|jjƒ|_dS(u0Generate key-to-(start, stop) table of contents.isFrom NFT(uFalseu_fileuseekutellureadlineu startswithulenuappendulinesepuTrueudictu enumerateuzipu_tocu _next_keyu _file_length(uselfustartsustopsulast_was_emptyuline_posuline((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu _generate_toces0       umbox._generate_tocNT( u__name__u __module__u __qualname__u__doc__uTrueu _mangle_from_u_append_newlineuNoneu__init__u_post_message_hooku _generate_toc(u __locals__((u,/opt/alt/python33/lib64/python3.3/mailbox.pyumboxSs  cBsP|EeZdZdZd d dd„Zdd„Zdd„Zdd „Z d S( uMMDFuAn MMDF mailbox.cCs#t|_tj||||ƒdS(uInitialize an MMDF mailbox.N(u MMDFMessageu_message_factoryu _mboxMMDFu__init__(uselfupathufactoryucreate((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu__init__Šs u MMDF.__init__cCs|jdtƒdS(u-Called before writing each message to file f.sN(uwriteulinesep(uselfuf((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu_pre_message_hooksuMMDF._pre_message_hookcCs|jtdtƒdS(u,Called after writing each message to file f.sN(uwriteulinesep(uselfuf((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu_post_message_hook“suMMDF._post_message_hookcCs?gg}}|jjdƒd}xÀ|}|jjƒ}|jjƒ}|jdtƒrÙ|j|ƒxv|}|jjƒ}|jjƒ}|dtkr¼|j|ttƒƒPqm|sm|j|ƒPqmqmq&|s&Pq&q&tt t ||ƒƒƒ|_ t|j ƒ|_ |jjddƒ|jjƒ|_ dS(u0Generate key-to-(start, stop) table of contents.isiN(u_fileuseekureadlineutellu startswithulinesepuappendulenudictu enumerateuzipu_tocu _next_keyu _file_length(uselfustartsustopsunext_posuline_posuline((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu _generate_toc—s2    uMMDF._generate_tocNT( u__name__u __module__u __qualname__u__doc__uNoneuTrueu__init__u_pre_message_hooku_post_message_hooku _generate_toc(u __locals__((u,/opt/alt/python33/lib64/python3.3/mailbox.pyuMMDF‡s   cBs(|EeZdZdZd.d/dd„Zdd„Zdd„Zdd „Z d d „Z d d „Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Zd(d)„Zd*d+„Zd,d-„Zd.S(0uMHuAn MH mailbox.cCs¥tj||||ƒtjj|jƒs˜|r†tj|jdƒtjtjtjj |jdƒtj tj Btj Bdƒƒq˜t |jƒ‚nd|_dS(uInitialize an MH instance.iÀu .mh_sequencesi€NF(uMailboxu__init__uosupathuexistsu_pathumkdirucloseuopenujoinuO_CREATuO_EXCLuO_WRONLYuNoSuchMailboxErroruFalseu_locked(uselfupathufactoryucreate((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu__init__·s!!u MH.__init__cCs;|jƒ}t|ƒdkr'd}nt|ƒd}tjj|jt|ƒƒ}t|ƒ}d}z¹|j r€t |ƒnz…y|j ||ƒWnHt k rá|j r½t|ƒnt|ƒd}tj|ƒ‚YnXt|tƒr|j||ƒnWd|j rt|ƒnXWd|s6t|ƒnX|S(u$Add message and return assigned key.iiNFT(ukeysulenumaxuosupathujoinu_pathustru_create_carefullyuFalseu_lockedu _lock_fileu _dump_messageu BaseExceptionu _unlock_fileu _sync_closeuTrueuremoveu isinstanceu MHMessageu_dump_sequences(uselfumessageukeysunew_keyunew_pathufuclosed((u,/opt/alt/python33/lib64/python3.3/mailbox.pyuaddÃs6           uMH.addcCsœtjj|jt|ƒƒ}yt|dƒ}WnMtk r€}z-|jtjkrkt d|ƒ‚n‚WYdd}~XnX|j ƒtj |ƒdS(u=Remove the keyed message; raise KeyError if it doesn't exist.urb+uNo message with key: %sN( uosupathujoinu_pathustruopenuIOErroruerrnouENOENTuKeyErrorucloseuremove(uselfukeyupathufue((u,/opt/alt/python33/lib64/python3.3/mailbox.pyuremoveås u MH.removecCs tjj|jt|ƒƒ}yt|dƒ}WnMtk r€}z-|jtjkrkt d|ƒ‚n‚WYdd}~XnXz|j ršt |ƒnzYtj tj|tj tjBƒƒ|j||ƒt|tƒrò|j||ƒnWd|j r t|ƒnXWdt|ƒXdS(u>Replace the keyed message; raise KeyError if it doesn't exist.urb+uNo message with key: %sN(uosupathujoinu_pathustruopenuIOErroruerrnouENOENTuKeyErroru_lockedu _lock_fileucloseuO_WRONLYuO_TRUNCu _dump_messageu isinstanceu MHMessageu_dump_sequencesu _unlock_fileu _sync_close(uselfukeyumessageupathufue((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu __setitem__ós$  # uMH.__setitem__cCsCy^|jr6ttjj|jt|ƒƒdƒ}n'ttjj|jt|ƒƒdƒ}WnMtk r­}z-|jtj kr˜t d|ƒ‚n‚WYdd}~XnXzD|jrÇt |ƒnzt |ƒ}Wd|jrðt |ƒnXWd|jƒXx<|jƒjƒD](\}}||kr|j|ƒqqW|S(u4Return a Message representation or raise a KeyError.urb+urbuNo message with key: %sN(u_lockeduopenuosupathujoinu_pathustruIOErroruerrnouENOENTuKeyErroru _lock_fileu MHMessageu _unlock_fileucloseu get_sequencesuitemsu add_sequence(uselfukeyufueumsgunameukey_list((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu get_message s( *+     uMH.get_messagecCsy^|jr6ttjj|jt|ƒƒdƒ}n'ttjj|jt|ƒƒdƒ}WnMtk r­}z-|jtj kr˜t d|ƒ‚n‚WYdd}~XnXzN|jrÇt |ƒnz|j ƒj tdƒSWd|jrút|ƒnXWd|jƒXdS(u2Return a bytes representation or raise a KeyError.urb+urbuNo message with key: %sNs (u_lockeduopenuosupathujoinu_pathustruIOErroruerrnouENOENTuKeyErroru _lock_fileureadureplaceulinesepu _unlock_fileuclose(uselfukeyufue((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu get_bytes&s  *+   u MH.get_bytescCs…y+ttjj|jt|ƒƒdƒ}WnMtk rz}z-|jtjkret d|ƒ‚n‚WYdd}~XnXt |ƒS(u6Return a file-like representation or raise a KeyError.urbuNo message with key: %sN( uopenuosupathujoinu_pathustruIOErroruerrnouENOENTuKeyErroru _ProxyFile(uselfukeyufue((u,/opt/alt/python33/lib64/python3.3/mailbox.pyuget_file=s+u MH.get_filecCs)ttdd„tj|jƒDƒƒƒS(uReturn an iterator over keys.css'|]}|jƒrt|ƒVqdS(N(uisdigituint(u.0uentry((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu JsuMH.iterkeys..(uiterusorteduosulistdiru_path(uself((u,/opt/alt/python33/lib64/python3.3/mailbox.pyuiterkeysHsu MH.iterkeyscCs(tjjtjj|jt|ƒƒƒS(u9Return True if the keyed message exists, False otherwise.(uosupathuexistsujoinu_pathustr(uselfukey((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu __contains__MsuMH.__contains__cCstt|jƒƒƒS(u*Return a count of messages in the mailbox.(ulenulistukeys(uself((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu__len__Qsu MH.__len__cCsJ|jsFttjj|jdƒdƒ|_t|jƒd|_ndS(uLock the mailbox.u .mh_sequencesurb+NT( u_lockeduopenuosupathujoinu_pathu_fileu _lock_fileuTrue(uself((u,/opt/alt/python33/lib64/python3.3/mailbox.pyulockUs $ uMH.lockcCs9|jr5t|jƒt|jƒ|`d|_ndS(u#Unlock the mailbox if it is locked.NF(u_lockedu _unlock_fileu_fileu _sync_closeuFalse(uself((u,/opt/alt/python33/lib64/python3.3/mailbox.pyuunlock\s    u MH.unlockcCsdS(u&Write any pending changes to the disk.N((uself((u,/opt/alt/python33/lib64/python3.3/mailbox.pyuflushdsuMH.flushcCs|jr|jƒndS(uFlush and close the mailbox.N(u_lockeduunlock(uself((u,/opt/alt/python33/lib64/python3.3/mailbox.pyuclosehs uMH.closecCs[g}xNtj|jƒD]:}tjjtjj|j|ƒƒr|j|ƒqqW|S(uReturn a list of folder names.(uosulistdiru_pathupathuisdirujoinuappend(uselfuresultuentry((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu list_foldersms $uMH.list_folderscCs+ttjj|j|ƒd|jddƒS(u+Return an MH instance for the named folder.ufactoryucreateF(uMHuosupathujoinu_pathu_factoryuFalse(uselfufolder((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu get_folderusu MH.get_foldercCs%ttjj|j|ƒd|jƒS(u:Create a folder and return an MH instance representing it.ufactory(uMHuosupathujoinu_pathu_factory(uselfufolder((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu add_folderzsu MH.add_foldercCsˆtjj|j|ƒ}tj|ƒ}|dgkrUtjtjj|dƒƒn"|gkrdntd|jƒ‚tj|ƒdS(u-Delete the named folder, which must be empty.u .mh_sequencesuFolder not empty: %sN(uosupathujoinu_pathulistdiruremoveu NotEmptyErrorurmdir(uselfufolderupathuentries((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu remove_folders uMH.remove_folderc sbi}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ƒ||˜su#MH.get_sequences..u-ics"g|]}|ˆkr|‘qS(((u.0ukey(uall_keys(u,/opt/alt/python33/lib64/python3.3/mailbox.pyu šs u$MH.get_sequences..iu"Invalid sequence specification: %sN(uopenuosupathujoinu_pathusetukeysusplituisdigituadduintuupdateurangeusortedulenu ValueErroru FormatErrorurstrip( uselfuresultsufulineunameucontentsukeysuspecustartustop((uall_keysu,/opt/alt/python33/lib64/python3.3/mailbox.pyu get_sequences‹s&*   "# uMH.get_sequencesc Cskttjj|jdƒdddƒ}z2tjtj|jtjtjBƒƒx|j ƒD]÷\}}t |ƒdkrq]n|j |dƒd }d }x†tt|ƒƒD]r}|d|kræ|sd}|j dƒqn7|r d }|j d ||fƒn|j d |ƒ|}q±W|rG|j t|ƒd ƒq]|j d ƒq]WWd t|ƒXd S(u:Set sequences using the given name-to-key-list dictionary.u .mh_sequencesur+uencodinguASCIIiu:iu-u%s %su %su NFT(uopenuosupathujoinu_pathucloseunameuO_WRONLYuO_TRUNCuitemsulenuwriteuNoneuFalseusortedusetuTrueustru _sync_close(uselfu sequencesufunameukeysuprevu completingukey((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu set_sequences£s.'& uMH.set_sequencesc Cs¬|jƒ}d}g}x|jƒD]ù}|d|kr|j||dfƒttdƒrÍtjtjj|jt |ƒƒtjj|jt |dƒƒƒtj tjj|jt |ƒƒƒqtj tjj|jt |ƒƒtjj|jt |dƒƒƒn|d7}q%W|d|_ t |ƒdkrEdSxS|jƒD]E\}}x6|D].\}}||kre|||j|ƒReplace the keyed message; raise KeyError if it doesn't exist.N(u_singlefileMailboxu __setitem__u isinstanceu BabylMessageu get_labelsu_labels(uselfukeyumessage((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu __setitem__suBabyl.__setitem__c Csb|j|ƒ\}}|jj|ƒ|jjƒtjƒ}xF|jjƒ}|dtksg| rkPn|j|jtdƒƒqAtjƒ}xB|jjƒ}|tks¸| r¼Pn|j|jtdƒƒq–||jj ƒ}|jj |ƒ}|jtdƒ}t |j ƒ|ƒ} | j |j ƒƒ||jkr^| j|j|ƒn| S(u4Return a Message representation or raise a KeyError.s *** EOOH ***s (u_lookupu_fileuseekureadlineuiouBytesIOulinesepuwriteureplaceutellureadu BabylMessageugetvalueu set_visibleu_labelsu set_labels( uselfukeyustartustopuoriginal_headersulineuvisible_headersunubodyumsg((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu get_messages.   uBabyl.get_messagec Csþ|j|ƒ\}}|jj|ƒ|jjƒtjƒ}xF|jjƒ}|dtksg| rkPn|j|jtdƒƒqAx)|jjƒ}|tks¬| rŠPqŠqŠ|j ƒ}||jj ƒ}|jj |ƒ}|jtdƒ}||S(u3Return a string representation or raise a KeyError.s *** EOOH ***s ( u_lookupu_fileuseekureadlineuiouBytesIOulinesepuwriteureplaceugetvalueutelluread( uselfukeyustartustopuoriginal_headersulineuheadersunudata((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu get_bytes"s$   uBabyl.get_bytescCs"tj|j|ƒjdtƒƒS(u6Return a file-like representation or raise a KeyError.s (uiouBytesIOu get_bytesureplaceulinesep(uselfukey((u,/opt/alt/python33/lib64/python3.3/mailbox.pyuget_file8suBabyl.get_filecCsT|jƒtƒ}x$|jjƒD]}|j|ƒq#W|j|jƒt|ƒS(u4Return a list of user-defined labels in the mailbox.(u_lookupusetu_labelsuvaluesuupdateudifference_updateu_special_labelsulist(uselfulabelsu label_list((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu get_labels<s   uBabyl.get_labelscCsÁgg}}|jjdƒd}g}x'|}|jjƒ}|jjƒ}|dtkrÞt|ƒt|ƒkr’|j|ttƒƒn|j|ƒdd„|jjƒdd…jdƒDƒ}|j|ƒq,|dksú|dtkr/t|ƒt|ƒkrP|j|ttƒƒqPq,|s,|j|ttƒƒPq,q,tt t ||ƒƒƒ|_ tt |ƒƒ|_ t|j ƒ|_ |jjdd ƒ|jjƒ|_dS( u0Generate key-to-(start, stop) table of contents.is cSs(g|]}|jƒr|jƒ‘qS((ustrip(u.0ulabel((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu Ss u'Babyl._generate_toc..iNs,si(u_fileuseekureadlineutellulinesepulenuappendusplitudictu enumerateuzipu_tocu_labelsu _next_keyu _file_length(uselfustartsustopsunext_posu label_listsuline_posulineulabels((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu _generate_tocEs4   &uBabyl._generate_toccCsmdt}|dt7}|jƒ}dd„|Dƒ}|ddj|ƒt7}|d7}|j|ƒdS( u,Called before writing the mailbox to file f.sBABYL OPTIONS:s Version: 5css|]}|jƒVqdS(N(uencode(u.0ulabel((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu hsu*Babyl._pre_mailbox_hook..sLabels:s,sN(ulinesepu get_labelsujoinuwrite(uselfufubabylulabels((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu_pre_mailbox_hookcs   uBabyl._pre_mailbox_hookcCs|jdtƒdS(u-Called before writing each message to file f.s N(uwriteulinesep(uselfuf((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu_pre_message_hookmsuBabyl._pre_message_hookcCs|jtdƒdS(u,Called after writing each message to file f.sN(uwriteulinesep(uselfuf((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu_post_message_hookqsuBabyl._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ƒxB|jƒ}|jj|jdt ƒƒ|dksŸ| rdPqdqd|jjd t ƒt|tƒrHt jƒ} t jj| ddƒ} | j|jƒƒx—| jƒ}|jj|jdt ƒƒ|dks>| rPqqnR|jdƒxB|jƒ}|jj|jdt ƒƒ|dks“| rXPqXqXxU|jd ƒ} | s¶Pn|jj| jdt ƒƒqnt|ttt jfƒr+t|t jƒr'tjd td ƒ|jƒ}nt|tƒrH|j|ƒ}n|j d ƒd} | ddkrô|jj|d| …jdt ƒƒ|jjd t ƒ|jj|d| …jdt ƒƒ|jj|| d…jdt ƒƒqò|jjd t t ƒ|jj|jdt ƒƒnÇt!|dƒrÜt!|dƒrhtjdtd ƒ|j"}n|jƒ} d}x¾|jƒ}|j$dƒr¯|dd…d}n&|j$dƒrÕ|dd…d}n|jj|jdt ƒƒ|dks| r}|r4d}|jjd t ƒ|j| ƒq8Pq}q}x´|jƒ}|sTPn|j$dƒrz|dd…t }nL|j$dƒr |dd…t }n&|j$dƒrÆ|dd…t }n|jj|ƒq>nt%dt&|ƒƒ‚|jjƒ}||fS(u0Write message contents and return (start, stop).s1s, s,,s s,s1,,is s *** EOOH ***iu8Use of StringIO input is deprecated, use BytesIO insteadis iiNureadlineubufferuDUse of text mode files is deprecated, use a binary mode file insteads s uInvalid message type: %sFiÿÿÿÿTiþÿÿÿiÿÿÿÿiþÿÿÿiÿÿÿÿiÿÿÿÿ('u_fileutellu isinstanceu BabylMessageu get_labelsu_special_labelsuappenduwriteuencodeulinesepuemailumessageuMessageuiouBytesIOu generatoruBytesGeneratoruFalseuflattenuseekureadlineureplaceu get_visibleureadubytesustruStringIOuwarningsuwarnuDeprecationWarningugetvalueu_string_to_bytesufinduhasattrubufferuTrueuendswithu TypeErrorutype(uselfumessageustartuspecial_labelsulabelsulabelu orig_bufferuorig_generatorulineu vis_bufferu vis_generatorubufferu body_startu original_posu first_passustop((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu_install_messageusÀ  "         "  &&)      uBabyl._install_messageN(uunseenudeletedufileduansweredu forwardeduediteduresentT(u__name__u __module__u __qualname__u__doc__u frozensetu_special_labelsuNoneuTrueu__init__uadduremoveu __setitem__u get_messageu get_bytesuget_fileu get_labelsu _generate_tocu_pre_mailbox_hooku_pre_message_hooku_post_message_hooku_install_message(u __locals__((u,/opt/alt/python33/lib64/python3.3/mailbox.pyuBabylès           cBsA|EeZdZdZddd„Zdd„Zdd„ZdS( uMessageu0Message with mailbox-format-specific properties.cCs,t|tjjƒrM|jtj|ƒƒt|tƒr(|j|ƒq(nÛt|tƒru|jtj |ƒƒn³t|t ƒr|jtj |ƒƒn‹t|t j ƒrÈ|jtj|ƒƒn`t|dƒrð|jtj|ƒƒn8|dkrtjjj|ƒntdt|ƒƒ‚dS(uInitialize a Message instance.ureaduInvalid message type: %sN(u isinstanceuemailumessageuMessageu_become_messageucopyudeepcopyu _explain_toubytesumessage_from_bytesustrumessage_from_stringuiou TextIOWrapperumessage_from_fileuhasattrumessage_from_binary_fileuNoneu__init__u TypeErrorutype(uselfumessage((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu__init__äs uMessage.__init__cCsMt|dgƒ}x4|jD])}||kr|j||j|ntdt|ƒƒ‚dS(u;Copy Maildir-specific state to message insofar as possible.uSuRucuruOuTuDuFuAu MAILER-DAEMONuunseenureplieduflaggedudeleteduanswereduPu forwardedu$Cannot convert to specified type: %sN(u isinstanceuMaildirMessageu set_flagsu get_flagsu set_subdiru get_subdiruset_dateuget_dateu_mboxMMDFMessageusetuadd_flaguset_fromutimeugmtimeu MHMessageu add_sequenceu BabylMessageu add_labeluMessageu TypeErrorutype(uselfumessageuflags((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu _explain_toGsN    "       uMaildirMessage._explain_toN(u__name__u __module__u __qualname__u__doc__u_type_specific_attributesuNoneu__init__u get_subdiru set_subdiru get_flagsu set_flagsuadd_flagu remove_flaguget_dateuset_dateuget_infouset_infou _explain_to(u __locals__((u,/opt/alt/python33/lib64/python3.3/mailbox.pyuMaildirMessages          cBs‰|EeZdZdZdgZddd„Zdd„Zddd„Zd d „Z d d „Z d d„Z dd„Z dd„Z dS(u_mboxMMDFMessageu/Message with mbox- or MMDF-specific properties.u_fromcCs}|jddƒt|tjjƒri|jƒ}|dk ri|jdƒri|j|dd…ƒqintj ||ƒdS(u'Initialize an mboxMMDFMessage instance.u MAILER-DAEMONuFrom iNT( uset_fromuTrueu isinstanceuemailumessageuMessageu get_unixfromuNoneu startswithu__init__(uselfumessageuunixfrom((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu__init__xs  u_mboxMMDFMessage.__init__cCs|jS(u Return contents of "From " line.(u_from(uself((u,/opt/alt/python33/lib64/python3.3/mailbox.pyuget_fromsu_mboxMMDFMessage.get_fromcCsN|dk rA|dkr'tjƒ}n|dtj|ƒ7}n||_dS(u>Set "From " line, formatting and appending time_ if specified.u NT(uNoneuTrueutimeugmtimeuasctimeu_from(uselfufrom_utime_((u,/opt/alt/python33/lib64/python3.3/mailbox.pyuset_from…s   u_mboxMMDFMessage.set_fromcCs |jddƒ|jddƒS(u*Return as a string the flags that are set.uStatusuuX-Status(uget(uself((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu get_flagssu_mboxMMDFMessage.get_flagscCst|ƒ}d \}}x4d D],}||kr||7}|j|ƒqqWx4d D],}||krV||7}|j|ƒqVqVW|djt|ƒƒ7}y|jd|ƒWn"tk r×|jd|ƒYnXy|jd|ƒWn"tk r|jd|ƒYnXd S( u)Set the given flags and unset all others.uuRuOuDuFuAuStatusuX-StatusN(uu(uRuO(uDuFuA(useturemoveujoinusortedureplace_headeruKeyErroru add_header(uselfuflagsu status_flagsu xstatus_flagsuflag((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu set_flags‘s&          u_mboxMMDFMessage.set_flagscCs0|jdjt|jƒƒt|ƒBƒƒdS(u.Set the given flag(s) without changing others.uN(u set_flagsujoinusetu get_flags(uselfuflag((u,/opt/alt/python33/lib64/python3.3/mailbox.pyuadd_flag§su_mboxMMDFMessage.add_flagcCsKd|ksd|krG|jdjt|jƒƒt|ƒƒƒndS(u7Unset the given string flag(s) without changing others.uStatusuX-StatusuN(u set_flagsujoinusetu get_flags(uselfuflag((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu remove_flag«su_mboxMMDFMessage.remove_flagc Cs”t|tƒr$t|jƒƒ}d|kr=|jdƒnd|krY|jdƒnd|kru|jdƒnd|kr‘|jdƒnd|kr­|jdƒn|d =|d =d j|jƒjƒdd …ƒ}y&|j t j t j |dƒƒƒWqttfk r YqXnlt|tƒr\|j|jƒƒ|j|jƒƒn4t|tƒrât|jƒƒ}d|kr™|jdƒnd|krµ|jdƒnd|krÑ|jdƒn|d =|d =n®t|tƒrht|jƒƒ}d|kr|jdƒnd|kr;|jdƒnd|krW|jdƒn|d =|d =n(t|tƒrzntdt|ƒƒ‚d S(uACopy mbox- or MMDF-specific state to message insofar as possible.uOucuruFuAuRuSuDuTustatusux-statusu iNu%a %b %d %H:%M:%S %Yuunseenureplieduflaggedudeleteduansweredu$Cannot convert to specified type: %siûÿÿÿ(u isinstanceuMaildirMessageusetu get_flagsu set_subdiruadd_flagujoinuget_fromusplituset_dateucalendarutimegmutimeustrptimeu ValueErroru OverflowErroru_mboxMMDFMessageu set_flagsuset_fromu MHMessageu add_sequenceu BabylMessageu add_labeluMessageu TypeErrorutype(uselfumessageuflagsu maybe_date((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu _explain_to°s^     %        u_mboxMMDFMessage._explain_toN(u__name__u __module__u __qualname__u__doc__u_type_specific_attributesuNoneu__init__uget_fromuset_fromu get_flagsu set_flagsuadd_flagu remove_flagu _explain_to(u __locals__((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu_mboxMMDFMessagess      u_mboxMMDFMessagecBs|EeZdZdZdS(u mboxMessageu&Message with mbox-specific properties.N(u__name__u __module__u __qualname__u__doc__(u __locals__((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu mboxMessageäscBsn|EeZdZdZdgZddd„Zdd„Zdd„Zd d „Z d d „Z d d„Z dS(u MHMessageu$Message with MH-specific properties.u _sequencescCsg|_tj||ƒdS(u!Initialize an MHMessage instance.N(u _sequencesuMessageu__init__(uselfumessage((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu__init__ís uMHMessage.__init__cCs|jdd…S(u4Return a list of sequences that include the message.N(u _sequences(uself((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu get_sequencesòsuMHMessage.get_sequencescCst|ƒ|_dS(u3Set the list of sequences that include the message.N(ulistu _sequences(uselfu sequences((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu set_sequencesösuMHMessage.set_sequencescCsNt|tƒr4||jkrJ|jj|ƒqJntdt|ƒƒ‚dS(u8Add sequence to list of sequences including the message.usequence type must be str: %sN(u isinstanceustru _sequencesuappendu TypeErrorutype(uselfusequence((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu add_sequenceúsuMHMessage.add_sequencec Cs-y|jj|ƒWntk r(YnXdS(uARemove sequence from the list of sequences including the message.N(u _sequencesuremoveu ValueError(uselfusequence((u,/opt/alt/python33/lib64/python3.3/mailbox.pyuremove_sequences uMHMessage.remove_sequencecCsÕt|tƒr’t|jƒƒ}d|kr=|jdƒn|jdƒ|jdƒd|krs|jdƒnd|krÑ|jdƒqÑn?t|tƒrt|jƒƒ}d|krÏ|jdƒn |jd ƒd|krø|jdƒnd|krÑ|jd ƒqÑnºt|tƒrMx¨|jƒD]}|j|ƒq3Wn„t|t ƒr©t|jƒƒ}d|krŠ|j dƒnd|krÑ|j d ƒqÑn(t|t ƒr»nt d t |ƒƒ‚d S(u6Copy MH-specific state to message insofar as possible.uunseenucuruSuflaggeduFureplieduRuROuOuAuansweredu$Cannot convert to specified type: %sN(u isinstanceuMaildirMessageusetu get_sequencesu set_subdiruadd_flagu_mboxMMDFMessageu MHMessageu add_sequenceu BabylMessageu add_labeluMessageu TypeErrorutype(uselfumessageu sequencesusequence((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu _explain_to s@           uMHMessage._explain_toN( u__name__u __module__u __qualname__u__doc__u_type_specific_attributesuNoneu__init__u get_sequencesu set_sequencesu add_sequenceuremove_sequenceu _explain_to(u __locals__((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu MHMessageès     cBs•|EeZdZdZddgZddd„Zdd„Zdd „Zd d „Z d d „Z dd„Z dd„Z dd„Z dd„ZdS(u BabylMessageu'Message with Babyl-specific properties.u_labelsu_visiblecCs)g|_tƒ|_tj||ƒdS(u$Initialize an BabylMessage instance.N(u_labelsuMessageu_visibleu__init__(uselfumessage((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu__init__5s  uBabylMessage.__init__cCs|jdd…S(u'Return a list of labels on the message.N(u_labels(uself((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu get_labels;suBabylMessage.get_labelscCst|ƒ|_dS(u&Set the list of labels on the message.N(ulistu_labels(uselfulabels((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu set_labels?suBabylMessage.set_labelscCsNt|tƒr4||jkrJ|jj|ƒqJntdt|ƒƒ‚dS(u+Add label to list of labels on the message.ulabel must be a string: %sN(u isinstanceustru_labelsuappendu TypeErrorutype(uselfulabel((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu add_labelCsuBabylMessage.add_labelc Cs-y|jj|ƒWntk r(YnXdS(u4Remove label from the list of labels on the message.N(u_labelsuremoveu ValueError(uselfulabel((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu remove_labelKs uBabylMessage.remove_labelcCs t|jƒS(u3Return a Message representation of visible headers.(uMessageu_visible(uself((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu get_visibleRsuBabylMessage.get_visiblecCst|ƒ|_dS(u2Set the Message representation of visible headers.N(uMessageu_visible(uselfuvisible((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu set_visibleVsuBabylMessage.set_visiblecCsŽxG|jjƒD]6}||kr<|jj|||ƒq|j|=qWx=dD]5}||krQ||jkrQ|||j|t|dƒr:t|jdƒr1|jjƒn|`ndS(uClose the file.u_fileucloseN(uhasattru_fileuclose(uself((u,/opt/alt/python33/lib64/python3.3/mailbox.pyucloseÈsu_ProxyFile.closecCsJ|dkrd}n|jj|jƒ||ƒ}|jjƒ|_|S(u"Read size bytes using read_method.iNiÿÿÿÿ(uNoneu_fileuseeku_posutell(uselfusizeu read_methoduresult((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu_readÏs    u_ProxyFile._readcCs|S(u!Context manager protocol support.((uself((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu __enter__Øsu_ProxyFile.__enter__cGs|jƒdS(N(uclose(uselfuexc((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu__exit__Üsu_ProxyFile.__exit__cCs |jjƒS(N(u_fileureadable(uself((u,/opt/alt/python33/lib64/python3.3/mailbox.pyureadableßsu_ProxyFile.readablecCs |jjƒS(N(u_fileuwritable(uself((u,/opt/alt/python33/lib64/python3.3/mailbox.pyuwritableâsu_ProxyFile.writablecCs |jjƒS(N(u_fileuseekable(uself((u,/opt/alt/python33/lib64/python3.3/mailbox.pyuseekableåsu_ProxyFile.seekablecCs |jjƒS(N(u_fileuflush(uself((u,/opt/alt/python33/lib64/python3.3/mailbox.pyuflushèsu_ProxyFile.flushcCs3t|dƒsdSt|jdƒs)dS|jjS(Nu_fileuclosedTF(uhasattruTrueu_fileuFalseuclosed(uself((u,/opt/alt/python33/lib64/python3.3/mailbox.pyuclosedës u_ProxyFile.closedN(u__name__u __module__u __qualname__u__doc__uNoneu__init__ureaduread1ureadlineu readlinesu__iter__utelluseekucloseu_readu __enter__u__exit__ureadableuwritableuseekableuflushupropertyuclosed(u __locals__((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu _ProxyFile“s$         u _ProxyFilecBs_|EeZdZdZd d dd„Zdd„Zddd„Zd d „Zd d „Z d S(u _PartialFileu&A read-only wrapper of part of a file.cCs)tj|||ƒ||_||_dS(uInitialize a _PartialFile.N(u _ProxyFileu__init__u_startu_stop(uselfufustartustop((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu__init__÷s u_PartialFile.__init__cCstj|ƒ|jS(u*Return the position with respect to start.(u _ProxyFileutellu_start(uself((u,/opt/alt/python33/lib64/python3.3/mailbox.pyutellýsu_PartialFile.tellicCsY|dkr!|j|_d}n!|dkrB|j|_d}ntj|||ƒdS(u8Change position, possibly with respect to start or stop.iiiN(u_startu_posu_stopu _ProxyFileuseek(uselfuoffsetuwhence((u,/opt/alt/python33/lib64/python3.3/mailbox.pyuseeks      u_PartialFile.seekcCs`|j|j}|dkr dS|dksD|dksD||krM|}ntj|||ƒS(u;Read size bytes using read_method, honoring start and stop.isN(u_stopu_posuNoneu _ProxyFileu_read(uselfusizeu read_methodu remaining((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu_read s  $ u_PartialFile._readcCst|dƒr|`ndS(Nu_file(uhasattru_file(uself((u,/opt/alt/python33/lib64/python3.3/mailbox.pyuclosesu_PartialFile.closeN( u__name__u __module__u __qualname__u__doc__uNoneu__init__utelluseeku_readuclose(u __locals__((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu _PartialFileôs   u _PartialFilec3Cs<d}yëtr’ytj|tjtjBƒWq’tk rŽ}z?|jtjtjtj fkryt d|j ƒ‚n‚WYdd}~Xq’Xn|rðy!t |j dƒ}|j ƒWnGtk r}z'|jtjtj fkrídS‚WYdd}~XnXyfttdƒrHtj|j |j dƒd}tj|j ƒn tj|j |j dƒd}Wqðtk rì}za|jtjks±tj dkr×|jtjkr×tj|j ƒt d|j ƒ‚n‚WYdd}~XqðXnWnDtrtj|tjƒn|r0tj|j dƒn‚YnXdS( u(Lock file f using lockf and dot locking.ulockf: lock unavailable: %sNu.lockulinkuos2udot lock unavailable: %sFT(uFalseufcntlulockfuLOCK_EXuLOCK_NBuIOErroruerrnouEAGAINuEACCESuEROFSuExternalClashErrorunameu_create_temporaryucloseuhasattruosulinkuTrueuunlinkurenameuOSErroruEEXISTuremoveuLOCK_UN(ufudotlocku dotlock_doneueupre_lock((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu _lock_filesL! !u _lock_filecCsPtrtj|tjƒntjj|jdƒrLtj|jdƒndS(u*Unlock file f using lockf and dot locking.u.lockN(ufcntlulockfuLOCK_UNuosupathuexistsunameuremove(uf((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu _unlock_fileHsu _unlock_filec CsLtj|tjtjBtjBdƒ}zt|dƒSWdtj|ƒXdS(uCCreate a file if it doesn't exist and open for reading and writing.i¶urb+N(uosuopenuO_CREATuO_EXCLuO_RDWRuclose(upathufd((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu_create_carefullyOs&u_create_carefullycCs2td|ttjƒƒtjƒtjƒfƒS(uBCreate a temp file based on path and open for reading and writing.u %s.%s.%s.%s(u_create_carefullyuintutimeusocketu gethostnameuosugetpid(upath((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu_create_temporaryWs u_create_temporarycCs3|jƒttdƒr/tj|jƒƒndS(u0Ensure changes to file f are physically on disk.ufsyncN(uflushuhasattruosufsyncufileno(uf((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu _sync_flush]s u _sync_flushcCst|ƒ|jƒdS(u:Close file f, ensuring all changes are physically on disk.N(u _sync_flushuclose(uf((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu _sync_closecs u _sync_closecBs|EeZdZdZdS(uErroru"Raised for module-specific errors.N(u__name__u __module__u __qualname__u__doc__(u __locals__((u,/opt/alt/python33/lib64/python3.3/mailbox.pyuErrorisuErrorcBs|EeZdZdZdS(uNoSuchMailboxErroru:The specified mailbox does not exist and won't be created.N(u__name__u __module__u __qualname__u__doc__(u __locals__((u,/opt/alt/python33/lib64/python3.3/mailbox.pyuNoSuchMailboxErrorlsuNoSuchMailboxErrorcBs|EeZdZdZdS(u NotEmptyErroru>The specified mailbox is not empty and deletion was requested.N(u__name__u __module__u __qualname__u__doc__(u __locals__((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu NotEmptyErrorosu NotEmptyErrorcBs|EeZdZdZdS(uExternalClashErroru)Another process caused an action to fail.N(u__name__u __module__u __qualname__u__doc__(u __locals__((u,/opt/alt/python33/lib64/python3.3/mailbox.pyuExternalClashErrorrsuExternalClashErrorcBs|EeZdZdZdS(u FormatErroru)A file appears to have an invalid format.N(u__name__u __module__u __qualname__u__doc__(u __locals__((u,/opt/alt/python33/lib64/python3.3/mailbox.pyu FormatErrorusu FormatError(4u__doc__usysuosutimeucalendarusocketuerrnoucopyuwarningsuemailu email.messageuemail.generatoruiou contextlibuplatformu ImportErrorufcntluNoneu__all__ulinesepuencodeuMailboxuMaildiru_singlefileMailboxu _mboxMMDFumboxuMMDFuMHuBabylumessageuMessageuMaildirMessageu_mboxMMDFMessageu mboxMessageu MHMessageu BabylMessageu MMDFMessageu _ProxyFileu _PartialFileuTrueu _lock_fileu _unlock_fileu_create_carefullyu_create_temporaryu _sync_flushu _sync_closeu ExceptionuErroruNoSuchMailboxErroru NotEmptyErroruExternalClashErroru FormatError(((u,/opt/alt/python33/lib64/python3.3/mailbox.pyusj                  çÿCÄB4-ÿ5ù%mqH_a'-