o ­=?hÊ3ã@s< ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Zddl Z ddl Z ddl m Z zddlZWn eyHdZYnwgd¢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!dDd@dA„Z"e#e$ƒZ%dS)ErNTcCs" tj tj |¡¡|_||_dS©N)ÚosÚpathÚabspathÚ expanduserÚ_pathÚ_factory©ÚselfrÚfactoryÚcreate©r ú./opt/alt/python310/lib64/python3.10/mailbox.pyÚ__init__%s zMailbox.__init__cCó tdƒ‚©Nz&Method must be implemented by subclass©ÚNotImplementedError©rÚmessager r r!Úadd*óz Mailbox.addcCr#r$r%©rÚkeyr r r!Úremove.r*zMailbox.removecCs| |¡dSr)r-r+r r r!Ú __delitem__2szMailbox.__delitem__cCs( z| |¡WdStyYdSwr)r-ÚKeyErrorr+r r r!Údiscard5s  ÿzMailbox.discardcCr#r$r%©rr,r(r r r!Ú __setitem__<r*zMailbox.__setitem__cCs& z| |¡WSty|YSwr)Ú __getitem__r/)rr,Údefaultr r r!Úget@s   ÿz Mailbox.getcCsP |js | |¡St | |¡¡ }| |¡WdƒS1s!wYdSr)rÚ get_messageÚ contextlibÚclosingÚget_file)rr,Úfiler r r!r3Gs  $ÿzMailbox.__getitem__cCr#r$r%r+r r r!r6Or*zMailbox.get_messagecCs t | |¡¡ ¡Sr©ÚemailÚmessage_from_bytesÚ get_bytesZ as_stringr+r r r!Ú get_stringSszMailbox.get_stringcCr#r$r%r+r r r!r>Zr*zMailbox.get_bytescCr#r$r%r+r r r!r9^r*zMailbox.get_filecCr#r$r%©rr r r!Úiterkeysbr*zMailbox.iterkeyscCó t| ¡ƒSr)ÚlistrAr@r r r!Úkeysfó z Mailbox.keysc cs< | ¡D]}z||}Wn tyYqw|VqdSr©rAr/©rr,Úvaluer r r!Ú itervaluesjs€   ÿûzMailbox.itervaluescCs| ¡Sr)rIr@r r r!Ú__iter__sszMailbox.__iter__cCrBr)rCrIr@r r r!ÚvaluesvrEzMailbox.valuesc cs@ | ¡D]}z||}Wn tyYqw||fVqdSrrFrGr r r!Ú iteritemszs€   ÿ ûzMailbox.iteritemscCrBr)rCrLr@r r r!ÚitemsƒrEz Mailbox.itemscCr#r$r%r+r r r!Ú __contains__‡r*zMailbox.__contains__cCr#r$r%r@r r r!Ú__len__‹r*zMailbox.__len__cCs | ¡D]}| |¡qdSr)rDr0r+r r r!Úclears  ÿz Mailbox.clearcCs4 z||}Wn ty|YSw| |¡|Sr)r/r0)rr,r4Úresultr r r!Úpop”s  ÿ z Mailbox.popcCs( | ¡D] }|| |¡fStdƒ‚)NzNo messages in mailbox)rArRr/r+r r r!Úpopitems zMailbox.popitemc Csr t|dƒr | ¡}n t|dƒr| ¡}n|}d}|D]\}}z|||<Wqty0d}Yqw|r7tdƒ‚dS)NrLrMFTzNo message with key(s))ÚhasattrrLrMr/)rÚargÚsourceZbad_keyr,r(r r r!Úupdate¤s        ÿÿzMailbox.updatecCr#r$r%r@r r r!Úflushµr*z Mailbox.flushcCr#r$r%r@r r r!Úlock¹r*z Mailbox.lockcCr#r$r%r@r r r!Úunlock½r*zMailbox.unlockcCr#r$r%r@r r r!ÚcloseÁr*z Mailbox.closecCs$z| d¡WStytdƒ‚w)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ƒr@t ¡}tj ||d¡}| |¡|  d¡|  ¡}|  dt ¡}|  |¡|jr<| t ¡s>|  t ¡dSdSdSt|tttjfƒrŠt|tjƒrZt dtd¡| ¡}t|tƒrd| |¡}|rl|  dd¡}|  dt ¡}|  |¡|jr†| t ¡sˆ|  t ¡dSdSdSt|dƒr÷t|dƒržt d td¡|j}d} | ¡}| d ¡r³|dd …d}n | d ¡rÀ|dd…d}|sÃn|rÒ| d¡rÒd|dd…}|  dt ¡}|  |¡|}q¡|jrñ|ró| t ¡sõ|  t ¡dSdSdSdStdt|ƒƒ‚)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 insteadTó éþÿÿÿó éÿÿÿÿóFrom s>From éúInvalid message type: %s)Ú isinstancer<r(r ÚioÚBytesIOÚ generatorÚBytesGeneratorÚflattenÚseekrcÚreplaceÚlinesepÚwriteÚ_append_newlineÚendswithÚstrÚbytesÚStringIOÚwarningsÚwarnÚDeprecationWarningÚgetvaluer_rTrdÚreadlineÚ startswithÚ TypeErrorÚtype) rr(ÚtargetZ mangle_from_rdÚgenÚdataZlastlineÚliner r r!Ú _dump_messageÒsh    þ ÿ     þ  ÿ    ó þzMailbox._dump_message©NTr©F)&Ú__name__Ú __module__Ú __qualname__r"r)r-r.r0r2r5r3r6r?r>r9rArDrIrJrKrLrMrNrOrPrRrSrWrXrYrZr[r_rwrˆÚ classmethodrÚ__class_getitem__r r r r!r"sF        6rc@sØeZdZ dZd5dd„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¡sF|rAt |jd¡|j  ¡D]}t |d¡q7nt |jƒ‚i|_ dddœ|_ d|_ d|_dS) NÚtmpÚnewÚcur)r‘r’r“éÀr)r“r’gš™™™™™¹?)rr"rrÚjoinrÚ_pathsÚexistsÚmkdirrKrÚ_tocÚ _toc_mtimesÚ _last_readÚ _skewfactor)rÚdirnamerrrr r r!r"s"ýÿ   zMaildir.__init__c Csh | ¡}z| ||¡Wnty| ¡t |j¡‚wt|ƒt|t ƒr<|  ¡}|j |  ¡}||j kr;d}nd}d}tj  |j¡ |j ¡d}tj  |j|||¡}t|t ƒrmt |jtj  |j¡| ¡f¡z'z t |j|¡Wnttfy‹t |j|¡YW|Swt |j¡W|Sty³}zt |j¡|jtjkr®td|ƒ‚‚d}~ww)NÚr’rz$Name clash with existing message: %s)Ú _create_tmprˆÚ BaseExceptionr[rr-ÚnameÚ _sync_closermr Ú get_subdirÚcolonÚget_inforÚbasenameÚsplitr•rÚutimeÚgetatimeÚget_dateÚlinkÚAttributeErrorÚPermissionErrorÚrenameÚOSErrorÚerrnoZEEXISTr)rr(Ztmp_fileÚsubdirÚsuffixÚuniqÚdestÚer r r!r)$sT  ý  € ÿ õù  ÿ€úz Maildir.addcCs" t tj |j| |¡¡¡dSr)rr-rr•rÚ_lookupr+r r r!r-Ns zMaildir.removec Cs, z| |¡WdSttfyYdSwr)r-r/ÚFileNotFoundErrorr+r r r!r0Rs ÿzMaildir.discardc CsÌ | |¡}| |¡}| |¡}t|tƒr|}n|}tj |¡}|j|vr1|j| |j¡d}nd}|  |¡tj  |j |¡} tj  |j |||¡} t|tƒr^t  | tj  | ¡| ¡f¡t | | ¡dS)Nrirž)r¶r)rmr rrrr¤r§r0r•rr¨r©rªr®) rr,r(Z old_subpathZtemp_keyZ temp_subpathZdominant_subpathr±r²Ztmp_pathÚnew_pathr r r!r2Zs&        ÿzMaildir.__setitem__cCs¸ | |¡}ttj |j|¡dƒ}|jr| |¡}nt|ƒ}Wdƒn1s)wYtj |¡\}}|  |¡|j |vrK|  | |j ¡d¡|  tj  tj |j|¡¡¡|S)NÚrbri)r¶Úopenrrr•rrr r§Ú set_subdirr¤Úset_infoÚset_dateÚgetmtime)rr,ZsubpathÚfÚmsgr±r¡r r r!r6us  €ü  zMaildir.get_messagecCsR ttj |j| |¡¡dƒ}| ¡ td¡WdƒS1s"wYdS)Nr¹r`) rºrrr•rr¶rcrtru©rr,r¿r r r!r>„s$ÿzMaildir.get_bytescCs& ttj |j| |¡¡dƒ}t|ƒS)Nr¹)rºrrr•rr¶Ú _ProxyFilerÁr r r!r9‰szMaildir.get_filec csD | ¡|jD]}z| |¡Wn tyYq w|Vq dSr)Ú_refreshr™r¶r/r+r r r!rAŽs€  ÿûzMaildir.iterkeyscCó | ¡||jvSr)rÃr™r+r r r!rN˜ó zMaildir.__contains__cCó | ¡t|jƒSr)rÃÚlenr™r@r r r!rOrÅzMaildir.__len__cCó dSrr r@r r r!rX¢sz Maildir.flushcCrÈrr r@r r r!rY¨óz Maildir.lockcCrÈrr r@r r r!rZ¬rÉzMaildir.unlockcCrÈrr r@r r r!r[°rÉz Maildir.closecCs^ g}t |j¡D]#}t|ƒdkr,|ddkr,tj tj |j|¡¡r,| |dd…¡q |S)NérÚ.)rÚlistdirrrÇrÚisdirr•Úappend©rrQÚentryr r r!Ú list_folders´sÿ€zMaildir.list_folderscCs" ttj |jd|¡|jddS)NrËF©rr)rrrr•rr©rÚfolderr r r!Ú get_folder½s þzMaildir.get_foldercCs^ tj |jd|¡}t||jd}tj |d¡}tj |¡s-t t |tj tj Bd¡¡|S)NrË©rZ maildirfolderé¶) rrr•rrrr—r[rºÚO_CREATÚO_WRONLY)rrÔrrQZmaildirfolder_pathr r r!Ú add_folderÃs ÿzMaildir.add_foldercCs tj |jd|¡}t tj |d¡¡t tj |d¡¡D]}t|ƒdks-|ddkr3td|ƒ‚qt |¡D]!}|dkrZ|dkrZ|dkrZtj tj ||¡¡rZtd||fƒ‚q9tj|d d D]#\}}}|D] }t  tj ||¡¡qi|D] }t  tj ||¡¡qxqbt  |¡dS) NrËr’r“rÊrzFolder contains message(s): %sr‘z%Folder contains subdirectory '%s': %sF)Útopdown) rrr•rrÌrÇrrÍÚwalkr-Úrmdir)rrÔrrÐÚrootÚdirsÚfilesr r r!Ú remove_folderÍs.ÿ ÿÿÿ€ÿzMaildir.remove_foldercCsZ t ¡}t tj |jd¡¡D]}tj |jd|¡}|tj |¡dkr*t |¡qdS)Nr‘i@ú)ÚtimerrÌrr•rr©r-)rÚnowrÐrr r r!Úcleanàs €ýz Maildir.cleanrÊc CsÒ t ¡}t ¡}d|vr| dd¡}d|vr| dd¡}dt|ƒt|ddƒt ¡tj|f}tj   |j d|¡}zt  |¡Wn!t ybtjd7_zt|ƒWYSty_YnwYnwtd |ƒ‚) Nú/z\057rz\072z%s.M%sP%sQ%s.%srÊg€„.Ar‘z&Name clash prevented file creation: %s)râÚsocketÚ gethostnamertÚintrÚgetpidrÚ_countrr•rÚstatr·Ú_create_carefullyÚFileExistsErrorr)rrãZhostnamer³rr r r!rŸês2  ÿ  ÿûÿzMaildir._create_tmpcCsÚ t ¡|jd|jkr0d}|jD]}tj |j|¡}||j|kr&d}||j|<q|s0dSi|_|jD]/}|j|}t  |¡D]"}tj  ||¡}tj  |¡rRqB|  |j ¡d}tj  ||¡|j|<qBq6t ¡|_dS)NéFTr)râr›rœršrrr¾r–r™rÌr•rÍr§r¤)rZrefreshr±ÚmtimerrÐÚpr³r r r!rÃs*     ûzMaildir._refreshcCsv ztj tj |j|j|¡¡r|j|WSWn ty!Ynw| ¡z|j|WSty:td|ƒd‚w©NúNo message with key: %s)rrr—r•rr™r/rÃr+r r r!r¶&s ÿ ÿ  ÿzMaildir._lookupcCsN t|dƒs | ¡|_ z|t|jƒWStyYdSty&Yq w)NÚ _onetime_keys)rTrAróÚnextÚ StopIterationr/r@r r r!rô4s    ÿz Maildir.nextr‰)r‹rŒrr¤r"r)r-r0r2r6r>r9rArNrOrXrYrZr[rÑrÕrÚrárärêrŸrÃr¶rôr r r r!r s8 *   $ rc@s’eZdZ d#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ƒ}Wn7tyH}z+|jtjkr-|r(t|jdƒ}nt|jƒ‚|jtjtj fvr=t|jdƒ}n‚WYd}~nd}~ww||_ 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__cCs: | ¡| |¡|j|j<|jd7_d|_|jdS)NrÊT)r¶Ú_append_messager™rürþr'r r r!r)[s  z_singlefileMailbox.addcCs | |¡|j|=d|_dSr‰)r¶r™rýr+r r r!r-es  z_singlefileMailbox.removecCs& | |¡| |¡|j|<d|_dSr‰)r¶rr™rýr1r r r!r2ks  z_singlefileMailbox.__setitem__ccs | ¡|j ¡EdHdSr)r¶r™rDr@r r r!rAqs€z_singlefileMailbox.iterkeyscCrÄr)r¶r™r+r r r!rNvrÅz_singlefileMailbox.__contains__cCrÆr)r¶rÇr™r@r r r!rO{rÅz_singlefileMailbox.__len__cCs |jst|jƒd|_dSdSr‰)rÿÚ _lock_filerûr@r r r!rY€ó   þz_singlefileMailbox.lockcCs |jrt|jƒd|_dSdS©NF)rÿÚ _unlock_filerûr@r r r!rZ†rz_singlefileMailbox.unlockc CsÒ |js|jrt|jƒd|_dS|j dd¡|j ¡}||jkr+td|j|fƒ‚t|j ƒ}zSi}|  |¡t |j   ¡ƒD]=}|j |\}}|j |¡| |¡| ¡} |j td||j ¡ƒ¡}|sin| |¡qX|| ¡f||<| |¡q?| ¡|_Wn| ¡t |j¡‚t|ƒ|j ¡t |j ¡j} t |j| ¡z t |j|j ¡WntyÊt |j ¡t |j|j ¡Ynwt|j dƒ|_||_ d|_d|_|jrçt|jdddSdS) NFrrîz4Size of mailbox file changed (expected %i, found %i)Tér÷)Údotlock) rýrþÚ _sync_flushrûrsÚtellrrÚ_create_temporaryrÚ_pre_mailbox_hookÚsortedr™rDÚ_pre_message_hookrcÚminrvÚ_post_message_hookr[rr-r¡r¢rëÚst_modeÚchmodr®rírºrÿr) rZcur_lenZnew_fileZnew_tocr,ÚstartÚstopZ new_startrdÚmoder r r!rXŒsj   þ      ÿ û     þÿz_singlefileMailbox.flushcCrÈrr ©rr¿r r r!r ÌrÉz$_singlefileMailbox._pre_mailbox_hookcCrÈrr rr r r!r ÐrÉz$_singlefileMailbox._pre_message_hookcCrÈrr rr r r!rÔrÉz%_singlefileMailbox._post_message_hookcCs‚ z#| ¡Wz|jr| ¡W|j ¡dSW|j ¡dS|j ¡wz|jr4| ¡W|j ¡wW|j ¡w|j ¡wr)rXrÿrZrûr[r@r r r!r[Øs  ýü  ýz_singlefileMailbox.closecCsJ |jdur | ¡|dur#z|j|WSty"td|ƒd‚wdSrñ)r™Ú _generate_tocr/r+r r r!r¶ãs   ÿýz_singlefileMailbox._lookupcCs˜ |j dd¡|j ¡}t|jƒdkr|js| |j¡z| |j¡| |¡}|  |j¡Wnt y>|j  |¡‚w|j  ¡|j ¡|_ |S)Nrrî)rûrsr rÇr™rýr r Ú_install_messagerr ÚtruncaterXr)rr(ZbeforeZoffsetsr r r!rís       þ  z"_singlefileMailbox._append_messager‰r)r‹rŒrr"r)r-r2rArNrOrYrZrXr r rr[r¶rr r r r!röAs$  @ röc@s@eZdZ dZdd„Zddd„Zddd„Zdd d „Zd d „Zd S)Ú _mboxMMDFTcCsr | |¡\}}|j |¡|j ¡ td¡}|j ||j ¡¡}| | td¡¡}|  |dd…  d¡¡|S)Nór`rkr) r¶rûrsr€rtrurcr Ú_message_factoryÚset_fromÚdecode)rr,rrÚ from_lineÚstringrÀr r r!r6 s z_mboxMMDF.get_messageFcCs t | ||¡¡j|dS)N)Úunixfromr;)rr,Úfrom_r r r!r?s  ÿÿz_mboxMMDF.get_stringcCsL | |¡\}}|j |¡|s|j ¡|j ||j ¡¡}| td¡S©Nr`)r¶rûrsr€rcr rtru)rr,r!rrrr r r!r>s   z_mboxMMDF.get_bytescCs> | |¡\}}|j |¡|s|j ¡t|j|j ¡|ƒSr)r¶rûrsr€Ú _PartialFiler )rr,r!rrr r r!r9!s   z_mboxMMDF.get_filecCs d}t|tƒr | |¡}t|tƒr4| d¡r4| d¡}|dkr/|d|…}||dd…}n*|}d}n%t|tƒrE| ¡ d¡}d|}nt|t j j ƒrY|  ¡}|durY| d¡}|durhdt  t  ¡¡ ¡}|j ¡}|j |t¡| ||j|j¡|j ¡}||fS)Nrjr`rirÊrrsFrom MAILER-DAEMON )rmryr_rzrÚfindÚ_mboxMMDFMessageÚget_fromr\r<r(r Ú get_unixfromrâÚasctimeÚgmtimerûr rvrurˆÚ _mangle_from_)rr(rÚnewlineZauthorrrr r r!r)s2         z_mboxMMDF._install_messageNrŠ) r‹rŒrr*r6r?r>r9rr r r r!rs  rc@s0eZdZ dZdZd dd„Zdd„Zdd„ZdS) rTNcCó t|_t ||||¡dSr)r rrr"rr r r!r"Oóz mbox.__init__cCs | t¡dSr©rvrurr r r!rTózmbox._post_message_hookcCsê gg}}d}|j d¡ |j ¡}|j ¡}| d¡r?t|ƒt|ƒkr7|r2| |ttƒ¡n| |¡| |¡d}n|sS|rM| |ttƒ¡n| |¡n |tkrZd}nd}qtt t ||ƒƒƒ|_ t|j ƒ|_ |j ¡|_ dS)NFrTrj)rûrsr r€rrÇrÎruÚdictÚ enumerateÚzipr™rür)rÚstartsÚstopsZlast_was_emptyÚline_posr‡r r r!rXs4        é zmbox._generate_tocr‰)r‹rŒrr*rwr"rrr r r r!rFs  rc@s0eZdZ d dd„Zdd„Zdd„Zd d „ZdS) rNTcCr,r)rrrr"rr r r!r"}r-z MMDF.__init__cCó | dt¡dS©Nór.rr r r!r ‚ózMMDF._pre_message_hookcCs | tdt¡dSr7r.rr r r!r†szMMDF._post_message_hookcCsâ gg}}|j d¡d} |}|j ¡}|j ¡}| dt¡rN| |¡ |}|j ¡}|j ¡}|dtkrD| |ttƒ¡n |sL| |¡nq(n|sQnqtt t ||ƒƒƒ|_ t|j ƒ|_ |j dd¡|j ¡|_ dS)NrTr8rî)rûrsr€r rrurÎrÇr0r1r2r™rür)rr3r4Únext_posr5r‡r r r!rŠs:         ÷€ ï zMMDF._generate_tocr‰)r‹rŒrr"r rrr r r r!rzs   rc@sÀeZdZ d/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)0rNTcCsv t ||||¡tj |j¡s6|r1t |jd¡t t tj  |jd¡tj tj Btj Bd¡¡nt |jƒ‚d|_dS)Nr”ú .mh_sequencesi€F)rr"rrr—rr˜r[rºr•rØÚO_EXCLrÙrrÿrr r r!r"ªsÿ  z MH.__init__cCsü | ¡}t|ƒdkrd}nt|ƒd}tj |jt|ƒ¡}t|ƒ}d}zQ|j r,t |ƒz7z|  ||¡Wnt yO|j rCt |ƒt|ƒd}t |¡‚wt|tƒr[| ||¡W|j rct |ƒn |j rlt |ƒwwW|stt|ƒ|S|s}t|ƒww)NrrÊFT)rDrÇÚmaxrrr•rryrìrÿrrˆr rr¢r-rmr Ú_dump_sequences)rr(rDZnew_keyr¸r¿Úclosedr r r!r)¶sL    ù  €€ÿ ÿ€þ ÿzMH.addc Csn tj |jt|ƒ¡}zt|dƒ}Wnty+}z |jtjkr&t d|ƒ‚‚d}~ww|  ¡t  |¡dS©Nr÷rò) rrr•rryrºr¯r°rør/r[r-)rr,rr¿rµr r r!r-Øs  €üz MH.removec Csâ tj |jt|ƒ¡}zt|dƒ}Wnty+}z |jtjkr&t d|ƒ‚‚d}~wwz?|j r4t |ƒz't  t |tj tjB¡¡| ||¡t|tƒrS| ||¡W|j r[t|ƒn |j rdt|ƒwwWt|ƒdSt|ƒwr@)rrr•rryrºr¯r°rør/rÿrr[rÙÚO_TRUNCrˆrmr r>rr¢)rr,r(rr¿rµr r r!r2æs6  €ü   €€ÿ ÿ€zMH.__setitem__c Cs z |jrttj |jt|ƒ¡dƒ}n ttj |jt|ƒ¡dƒ}Wnty:}z |jtj kr5t d|ƒ‚‚d}~ww|&|jrEt |ƒz t |ƒ}W|jrRt |ƒn |jr[t |ƒwwWdƒn1sfwY| ¡ ¡D] \}}||vr~| |¡qq|S)Nr÷r¹rò)rÿrºrrr•rryr¯r°rør/rr rÚ get_sequencesrMÚ add_sequence)rr,r¿rµrÀr¡Úkey_listr r r!r6þs<€  €ü €ÿ ÿ€ú €zMH.get_messagec Csà z |jrttj |jt|ƒ¡dƒ}n ttj |jt|ƒ¡dƒ}Wnty:}z |jtj kr5t d|ƒ‚‚d}~ww|)|jrEt |ƒz|  ¡  td¡W|jrUt|ƒWdƒS|jret|ƒww1siwYdS)Nr÷r¹ròr`)rÿrºrrr•rryr¯r°rør/rrcrtrur©rr,r¿rµr r r!r>s0€  €üù ÿúz MH.get_bytesc CsZ zttj |jt|ƒ¡dƒ}Wt |ƒSty,}z |jtjkr't d|ƒ‚‚d}~ww)Nr¹rò) rºrrr•rryr¯r°rør/rÂrEr r r!r9,sû  €üz MH.get_filecCs ttdd„t |j¡DƒƒƒS)Ncss |] }| ¡rt|ƒVqdSr)Úisdigitrè)Ú.0rÐr r r!Ú 9s€ÿzMH.iterkeys..)Úiterr rrÌrr@r r r!rA7sz MH.iterkeyscCs tj tj |jt|ƒ¡¡Sr)rrr—r•rryr+r r r!rN<szMH.__contains__cCs tt| ¡ƒƒSr)rÇrCrAr@r r r!rO@óz MH.__len__cCs8 |jsttj |jd¡dƒ|_t|jƒd|_dSdS)Nr;r÷T)rÿrºrrr•rrûrr@r r r!rYDs   ýzMH.lockcCs. |jrt|jƒt|jƒ|`d|_dSdSr)rÿrrûr¢r@r r r!rZKs   üz MH.unlockcCrÈrr r@r r r!rXSrÉzMH.flushcCs |jr | ¡dSdSr)rÿrZr@r r r!r[Ws ÿzMH.closecCs> g}t |j¡D]}tj tj |j|¡¡r| |¡q |Sr)rrÌrrrÍr•rÎrÏr r r!rÑ\s €zMH.list_folderscCs ttj |j|¡|jddS)NFrÒ©rrrr•rrrÓr r r!rÕdsÿz MH.get_foldercCs ttj |j|¡|jdS)NrÖrKrÓr r r!rÚisÿz MH.add_foldercCsb tj |j|¡}t |¡}|dgkrt tj |d¡¡n |gkr#ntd|jƒ‚t |¡dS)Nr;zFolder not empty: %s)rrr•rrÌr-rrÝ)rrÔrÚentriesr r r!ráns  zMH.remove_folderc s i}ttj |jd¡dddp}t| ¡ƒ‰|D]^}zM| d¡\}}tƒ}| ¡D]$}| ¡r8|  t |ƒ¡q*dd„| d¡Dƒ\}} |  t || d ƒ¡q*‡fd d „t |ƒDƒ||<t||ƒd krg||=Wqtywtd | ¡ƒ‚wWdƒ|S1sƒwY|S)Nr;ÚrÚASCII©Úencodingrcss|]}t|ƒVqdSr)rè)rGÚxr r r!rH‡ó€z#MH.get_sequences..ú-rÊcsg|]}|ˆvr|‘qSr r )rGr,©Zall_keysr r!Ú ‰sÿz$MH.get_sequences..rz"Invalid sequence specification: %s)rºrrr•rÚsetrDr§rFr)rèrWÚranger rÇr^rÚrstrip) rZresultsr¿r‡r¡ÚcontentsrDÚspecrrr rTr!rBzs6  € ÿÿò þízMH.get_sequencescCs  ttj |jd¡ddd}zqt t |jtjtjB¡¡|  ¡D]W\}}t |ƒdkr,q!|  |d¡d}d}t t |ƒƒD])}|d|krO|sNd }|  d ¡n|r]d}|  d ||f¡n|  d |¡|}q=|rs|  t|ƒd ¡q!|  d ¡q!Wt|ƒdSt|ƒw)Nr;zr+rNrOrrFrÊTrSz%s %sz %sÚ )rºrrr•rr[r¡rÙrArMrÇrvr rVryr¢)rÚ sequencesr¿r¡rDÚprevZ completingr,r r r!Ú set_sequences’s4   € ìzMH.set_sequencesc Cs: | ¡}d}g}| ¡D]`}|d|kri| ||df¡zt tj |jt|ƒ¡tj |jt|dƒ¡¡Wn#t t fy[t  tj |jt|ƒ¡tj |jt|dƒ¡¡Ynwt  tj |jt|ƒ¡¡|d7}q |d|_ t|ƒdkr{dS| ¡D]\}}|D]\}}||vr”||| |¡<q…q| |¡dS)NrrÊ)rBrArÎrr«rr•rryr¬r­r®ÚunlinkrürÇrMÚindexr^) rr\r]Zchangesr,r¡rDÚoldr’r r r!Úpack¯s8  ÿÿÿ    €þzMH.packcCsv | ¡}| ¡}| ¡D]\}}||vr| |¡q ||vr%|| |¡=q |D] }||vr3|g||<q(| |¡dSr)rBrMrÎr`r^)rr(r,Zpending_sequencesZ all_sequencesr¡rDÚsequencer r r!r>És  € €zMH._dump_sequencesr‰)r‹rŒrr"r)r-r2r6r>r9rArNrOrYrZrXr[rÑrÕrÚrárBr^rbr>r r r r!r§s0  "   rc@s„eZdZ ehd£ƒZddd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„ZdS)r>ZfiledZeditedÚ forwardedÚresentÚdeletedÚansweredÚunseenNTcCs t ||||¡i|_dSr)rör"Ú_labelsrr r r!r"Þs zBabyl.__init__cCs* t ||¡}t|tƒr| ¡|j|<|Sr)rör)rmr Ú get_labelsri)rr(r,r r r!r)ãs   z Babyl.addcCs( t ||¡||jvr|j|=dSdSr)rör-rir+r r r!r-ês    ÿz Babyl.removecCs0 t |||¡t|tƒr| ¡|j|<dSdSr)rör2rmr rjrir1r r r!r2ðs  ÿzBabyl.__setitem__c Csø | |¡\}}|j |¡|j ¡t ¡} |j ¡}|dtks%|s&n | | td¡¡qt ¡} |j ¡}|tks@|sAn | | td¡¡q5||j  ¡}|j  |¡}| td¡}t |  ¡|ƒ} |   |  ¡¡||jvrz|  |j|¡| S©NTó *** EOOH ***r`)r¶rûrsr€rnrorurvrtr rcr rÚ set_visibleriÚ set_labels) rr,rrÚoriginal_headersr‡Zvisible_headersÚnÚbodyrÀr r r!r6ös4   ü  ü   zBabyl.get_messagec Cs² | |¡\}}|j |¡|j ¡t ¡} |j ¡}|dtks%|s&n | | td¡¡q |j ¡}|tks<|s=nq1|  ¡}||j  ¡}|j  |¡}| td¡}||Srk) r¶rûrsr€rnrorurvrtrr rc) rr,rrror‡Zheadersrpr†r r r!r>s*   ü  ý  zBabyl.get_bytescCs t | |¡ dt¡¡Sr")rnror>rtrur+r r r!r9(ózBabyl.get_filecCs> | ¡tƒ}|j ¡D]}| |¡q | |j¡t|ƒSr)r¶rVrirKrWÚdifference_updateÚ_special_labelsrC)rÚlabelsZ label_listr r r!rj,s  zBabyl.get_labelscCs> gg}}|j d¡d}g} |}|j ¡}|j ¡}|dtkrPt|ƒt|ƒkr4| |ttƒ¡| |¡dd„|j ¡dd… d¡Dƒ}| |¡n(|dksZ|dtkrlt|ƒt|ƒkrk| |ttƒ¡n |sx| |ttƒ¡nqtt t ||ƒƒƒ|_ tt |ƒƒ|_ t|j ƒ|_ |j dd ¡|j ¡|_dS) NrTs cSsg|] }| ¡r| ¡‘qSr )Ústrip©rGÚlabelr r r!rUCsþz'Babyl._generate_toc..rÊó,órî)rûrsr€r rurÇrÎr§r0r1r2r™rirür)rr3r4r:Z label_listsr5r‡rur r r!r5s<      ÿ €ï zBabyl._generate_toccCsX dt}|dt7}| ¡}dd„|Dƒ}|dd |¡t7}|d7}| |¡dS)NsBABYL OPTIONS:s Version: 5css|]}| ¡VqdSr)r\rwr r r!rHXrRz*Babyl._pre_mailbox_hook..sLabels:ryrz)rurjr•rv)rr¿Zbabylrur r r!r Ss zBabyl._pre_mailbox_hookcCr6)Nó r.rr r r!r ]r9zBabyl._pre_message_hookcCs | td¡dS)Nrzr.rr r r!rar9zBabyl._post_message_hookcCsb |j ¡}t|tƒrYg}g}| ¡D]}||jvr | |¡q| |¡q|j d¡|D] }|j d| ¡¡q.|j d¡|D]}|j d| ¡d¡qC|j t ¡n|j dt ¡t|t j j ƒrÿt  ¡}t j |dd¡}| |¡| d¡ | ¡}|j | d t ¡¡|d ks“|s”nq|j d t ¡t|tƒrÍt  ¡} t j | dd¡} |  | ¡¡ |  ¡}|j | d t ¡¡|d ksÊ|sËnq¶n| d¡ | ¡}|j | d t ¡¡|d ksç|sènqÓ | d ¡} | sòn |j |  d t ¡¡qên)t|ttt jfƒr|t|t jƒrt d td¡| ¡}t|tƒr&| |¡}| d¡d} | ddkrg|j |d| … d t ¡¡|j d t ¡|j |d| … d t ¡¡|j || d… d t ¡¡nÁ|j d t t ¡|j | d t ¡¡n¬t |dƒr t |dƒr’t dtd¡|j!}| ¡} d } | ¡}| "d¡r¬|dd…d }n| "d¡rº|dd…d }|j | d t ¡¡|d ksÌ|sà|rßd}|j d t ¡| | ¡nnq™ | ¡}|sën4| "d¡rú|dd…t }n| "d¡r |dd…t }n| "d ¡r|dd…t }|j |¡qãnt#dt$|ƒƒ‚|j ¡}||fS)Nó1s, s,,ó rys1,,FrTr`rlrrarbs rîrir€rdrerfrgrhrl)%rûr rmr rjrtrÎrvr\rur<r(r rnrorprqrrrsr€rtÚ get_visiblercrzryr{r|r}r~rr_r$rTrdrxr‚rƒ)rr(rZspecial_labelsrurxZ orig_bufferZorig_generatorr‡Z vis_bufferZ vis_generatorrdZ body_startZ original_posZ first_passrr r r!resØ           ü  ü  ü üÿ    ÿ   ò    õ zBabyl._install_messager‰)r‹rŒrÚ frozensetrtr"r)r-r2r6r>r9rjrr r rrr r r r!rØs      rc@s(eZdZ ddd„Zdd„Zdd„ZdS) r NcCsà t|tjjƒr| t |¡¡t|tƒr| |¡dSdSt|tƒr-| t  |¡¡dSt|t ƒr<| t  |¡¡dSt|t j ƒrL| t |¡¡dSt|dƒr[| t |¡¡dS|durhtjj |¡dStdt|ƒƒ‚)Nrcrl)rmr<r(r Ú_become_messageÚcopyZdeepcopyÚ _explain_torzr=ryZmessage_from_stringrnÚ TextIOWrapperZmessage_from_filerTZmessage_from_binary_filer"r‚rƒr'r r r!r"Ôs" ÿ    zMessage.__init__cCs6 t|dgƒ}|jD]}||vr|j||j|<q dS)NÚ_type_specific_attributes)ÚgetattrÚ__dict__)rr(Z type_specificr¡r r r!r€çs  €þzMessage._become_messagecCs t|tƒrdStdƒ‚)Nz Cannot convert to specified type)rmr r‚r'r r r!r‚îs zMessage._explain_tor)r‹rŒrr"r€r‚r r r r!r Ñs   r c@sxeZdZ gd¢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ž)r‡rˆrâr‰r r"r'r r r!r"ûs  zMaildirMessage.__init__cCó |jSr)r‡r@r r r!r£ózMaildirMessage.get_subdircCs( |dks |dkr||_dStd|ƒ‚)Nr’r“z!subdir must be 'new' or 'cur': %s)r‡r^)rr±r r r!r»s  zMaildirMessage.set_subdircCs |j d¡r|jdd…SdS)Nú2,rîrž)rˆrr@r r r!Ú get_flags s zMaildirMessage.get_flagscCs dd t|ƒ¡|_dS)NrŒrž)r•r rˆ)rÚflagsr r r!Ú set_flagsrrzMaildirMessage.set_flagscCó& | d t| ¡ƒt|ƒB¡¡dS©Nrž©rr•rVr©rÚflagr r r!Úadd_flagó$zMaildirMessage.add_flagcCs2 | ¡r| d t| ¡ƒt|ƒ¡¡dSdSr‘)rrr•rVr“r r r!Ú remove_flags$ÿzMaildirMessage.remove_flagcCrŠr)r‰r@r r r!rª!r‹zMaildirMessage.get_datecCs0 zt|ƒ|_WdStytd|ƒd‚w)Nzcan't convert to float: %s)Úfloatr‰r^r‚)rÚdater r r!r½%s  ÿzMaildirMessage.set_datecCrŠr)rˆr@r r r!r¥,r‹zMaildirMessage.get_infocCs& t|tƒr ||_dStdt|ƒƒ‚)Nzinfo must be a string: %s)rmryrˆr‚rƒ)rÚinfor r r!r¼0s  zMaildirMessage.set_infocCs  t|tƒr| | ¡¡| | ¡¡| | ¡¡dSt|tƒrdt | ¡ƒ}d|vr1|  d¡| ¡dkr<|  d¡d|vrE|  d¡d|vrN|  d¡d|vrW|  d¡|  d t   | ¡¡¡dSt|tƒrŽt | ¡ƒ}d|vrx| d ¡d|vr| d ¡d|vrŒ| d ¡dSdSt|tƒrÁt | ¡ƒ}d|vr¢| d ¡d|vr«| d ¡d|vr´| d¡d|vr¿| d¡dSdSt|tƒrÈdStdt|ƒƒ‚)NÚSÚRr“ÚOÚTÚDÚFÚAú MAILER-DAEMONrhÚrepliedÚflaggedrfrgÚPrdú$Cannot convert to specified type: %s)rmr rrr»r£r½rªr%rVr•rrâr)r rCr Ú add_labelr r‚rƒ)rr(rŽr r r!r‚7sV             ÿ     ÿ ÿzMaildirMessage._explain_tor)r‹rŒrr„r"r£r»rrr•r—rªr½r¥r¼r‚r r r r!r ös  r c@sXeZdZ dgZddd„Zdd„Zddd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dS)r%Ú_fromNcCsX | dd¡t|tjjƒr$| ¡}|dur$| d¡r$| |dd…¡t ||¡dS)Nr¢TzFrom rk)rrmr<r(r r'rr")rr(r r r r!r"hs z_mboxMMDFMessage.__init__cCrŠr)r¨r@r r r!r&qr‹z_mboxMMDFMessage.get_fromcCs6 |dur|dur t ¡}|dt |¡7}||_dS)NTú )râr)r(r¨)rr!Ztime_r r r!rus  z_mboxMMDFMessage.set_fromcCs | dd¡| dd¡S)NÚStatusržúX-Status)r5r@r r r!r}rrz_mboxMMDFMessage.get_flagscCsÐ t|ƒ}d\}}dD]}||vr||7}| |¡q dD]}||vr,||7}| |¡q|d t|ƒ¡7}z| d|¡WntyM| d|¡Ynwz | d|¡WdStyg| d|¡YdSw)N)ržrž)rœr)rŸr r¡ržrªr«)rVr-r•r Úreplace_headerr/Z add_header)rrŽZ status_flagsZ xstatus_flagsr”r r r!rs0 € € ÿ ÿz_mboxMMDFMessage.set_flagscCrr‘r’r“r r r!r•—r–z_mboxMMDFMessage.add_flagcCs: d|vs d|vr| d t| ¡ƒt|ƒ¡¡dSdS)Nrªr«ržr’r“r r r!r—›s$ÿz_mboxMMDFMessage.remove_flagc CsÐ t|tƒrht| ¡ƒ}d|vr| d¡d|vr| d¡d|vr'| d¡d|vr0| d¡d|vr9| d¡|d =|d =d  | ¡ ¡d d…¡}z|  t   t   |d ¡¡¡WdSttfygYdSwt|tƒr}| | ¡¡| | ¡¡dSt|tƒr«t| ¡ƒ}d|vr‘| d¡d|vrš| d¡d|vr£| d¡|d =|d =dSt|tƒrÙt| ¡ƒ}d|vr¿| d¡d|vrÈ| d¡d|vrÑ| d¡|d =|d =dSt|tƒràdStdt|ƒƒ‚)Nrr“r r¡rœr›rŸržZstatuszx-statusr©éûÿÿÿz%a %b %d %H:%M:%S %Yrhr£r¤rfrgr¦)rmr rVrr»r•r•r&r§r½ÚcalendarZtimegmrâÚstrptimer^Ú OverflowErrorr%rrr rCr r§r r‚rƒ)rr(rŽZ maybe_dater r r!r‚ sf       ÿÿ              ÿz_mboxMMDFMessage._explain_tor) r‹rŒrr„r"r&rrrr•r—r‚r r r r!r%cs   r%c@ó eZdZdS)r N©r‹rŒrr r r r!r Ôór c@sFeZdZ dgZddd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dS)r Ú _sequencesNcCs g|_t ||¡dSr)r´r r"r'r r r!r"ÝszMHMessage.__init__cCó |jdd…Sr)r´r@r r r!rBâr/zMHMessage.get_sequencescCó t|ƒ|_dSr)rCr´)rr\r r r!r^ær/zMHMessage.set_sequencescCó: t|tƒr||jvr|j |¡dSdStdt|ƒƒ‚)Nzsequence type must be str: %s)rmryr´rÎr‚rƒ©rrcr r r!rCêó   ÿzMHMessage.add_sequencecCó* z |j |¡WdStyYdSwr)r´r-r^r¸r r r!Úremove_sequenceòó  ÿzMHMessage.remove_sequencecCsR t|tƒr6t| ¡ƒ}d|vr| d¡n | d¡| d¡d|vr)| d¡d|vr4| d¡dSdSt|tƒrft| ¡ƒ}d|vrK| d¡n| d ¡d|vrY| d¡d|vrd| d ¡dSdSt|tƒry| ¡D]}| |¡qodSt|t ƒršt| ¡ƒ}d|vr|  d¡d|vr˜|  d ¡dSdSt|t ƒr¡dSt d t |ƒƒ‚) Nrhr“r›r¤r r£rœÚROrr¡rgr¦)rmr rVrBr»r•r%r rCr r§r r‚rƒ)rr(r\rcr r r!r‚ùsL      ÿ     ÿ   ÿ   ÿ ÿzMHMessage._explain_tor) r‹rŒrr„r"rBr^rCr»r‚r r r r!r Øs  r c@s`eZdZ ddgZddd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z dd„Z dS)r riÚ_visibleNcCs g|_tƒ|_t ||¡dSr)rir r¾r"r'r r r!r"%szBabylMessage.__init__cCrµr)rir@r r r!rj+r/zBabylMessage.get_labelscCr¶r)rCri)rrur r r!rn/r/zBabylMessage.set_labelscCr·)Nzlabel must be a string: %s)rmryrirÎr‚rƒ©rrxr r r!r§3r¹zBabylMessage.add_labelcCrºr)rir-r^r¿r r r!Ú remove_label;r¼zBabylMessage.remove_labelcCs t|jƒSr©r r¾r@r r r!r~Bs zBabylMessage.get_visiblecCr¶rrÁ)rZvisibler r r!rmFr/zBabylMessage.set_visiblecCsd |j ¡D]}||vr|j |||¡q|j|=qdD]}||vr/||jvr/|||j|<qdS)N)ZDateZFromzReply-ToZToZCCZSubject)r¾rDr¬)rÚheaderr r r!Úupdate_visibleJs €þzBabylMessage.update_visiblecCsz t|tƒrCt| ¡ƒ}d|vr| d¡n | d¡| d¡d|vs(d|vr-| d¡d|vr6| d¡d |vrA| d ¡dSdSt|tƒrst| ¡ƒ}d|vrX| d ¡n| d ¡d |vrf| d ¡d|vrq| d¡dSdSt|tƒr”t| ¡ƒ}d|vr‡| d¡d|vr’| d¡dSdSt|t ƒr®|  |  ¡¡| ¡D]}|  |¡q¤dSt|t ƒrµdStdt|ƒƒ‚)Nrhr“r›rdrer¥rgrœrfržr½rrŸr¡r£r¦)rmr rVrjr»r•r%r rCr rmr~r§r r‚rƒ)rr(rurxr r r!r‚UsR       ÿ     ÿ   ÿ   ÿ ÿzBabylMessage._explain_tor) r‹rŒrr„r"rjrnr§rÀr~rmrÃr‚r r r r!r s  r c@r±)rNr²r r r r!rr³rc@s®eZdZ d%dd„Zd%dd„Zd%dd„Zd%dd „Zd%d d „Zd d „Zdd„Z d&dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd „Zd!d"„Zed#d$„ƒZeeƒZdS)'rÂNcCs( ||_|dur| ¡|_dS||_dSr)rûr Ú_pos)rr¿Úposr r r!r"†s  z_ProxyFile.__init__cCó | ||jj¡Sr)Ú_readrûrc©rÚsizer r r!rcŽrJz_ProxyFile.readcCrÆr)rÇrûÚread1rÈr r r!rÊ’rJz_ProxyFile.read1cCrÆr)rÇrûr€rÈr r r!r€–rJz_ProxyFile.readlinecCs@ g}|D]}| |¡|dur|t|ƒ8}|dkr|Sq|S)Nr)rÎrÇ)rÚsizehintrQr‡r r r!Ú readlinesšs  €z_ProxyFile.readlinesccs | ¡}|s dS|Vqr)r€)rr‡r r r!rJ¥s€üz_ProxyFile.__iter__cCrŠr)rÄr@r r r!r ­r‹z_ProxyFile.tellrcCs6 |dkr |j |j¡|j ||¡|j ¡|_dS)NrÊ©rûrsrÄr ©rÚoffsetÚwhencer r r!rs±s z_ProxyFile.seekcCsB t|dƒrzt|jdƒr|j ¡W|`dSW|`dS|`wdS)Nrûr[)rTrûr[r@r r r!r[¸s   ýûz_ProxyFile.closecCs4 |durd}|j |j¡||ƒ}|j ¡|_|S)NrirÍ)rrÉÚ read_methodrQr r r!rÇÁs z_ProxyFile._readcCs |Srr r@r r r!Ú __enter__ÊrÉz_ProxyFile.__enter__cGs | ¡dSr)r[)rÚexcr r r!Ú__exit__Îs z_ProxyFile.__exit__cCó |j ¡Sr)rûÚreadabler@r r r!rÖÑó z_ProxyFile.readablecCrÕr)rûÚwritabler@r r r!rØÔr×z_ProxyFile.writablecCrÕr)rûÚseekabler@r r r!rÙ×r×z_ProxyFile.seekablecCrÕr)rûrXr@r r r!rXÚr×z_ProxyFile.flushcCs&t|dƒsdSt|jdƒsdS|jjS)NrûTr?F)rTrûr?r@r r r!r?Ýs  z_ProxyFile.closedr©r)r‹rŒrr"rcrÊr€rÌrJr rsr[rÇrÒrÔrÖrØrÙrXÚpropertyr?rŽrrr r r r!rƒs*           rÂc@s:eZdZ d dd„Zdd„Zddd„Zd d „Zd d „ZdS)r#NcCs t |||¡||_||_dSr)rÂr"Ú_startÚ_stop)rr¿rrr r r!r"ës z_PartialFile.__init__cCs t |¡|jSr)rÂr rÜr@r r r!r ñrJz_PartialFile.tellrcCs> |dkr |j|_d}n |dkr|j|_d}t |||¡dS)NrrÊrî)rÜrÄrÝrÂrsrÎr r r!rsõsz_PartialFile.seekcCsD |j|j}|dkr dS|dus|dks||kr|}t |||¡S)Nrr)rÝrÄrÂrÇ)rrÉrÑZ remainingr r r!rÇÿs z_PartialFile._readcCst|dƒr |`dSdS)Nrû)rTrûr@r r r!r[s ÿz_PartialFile.close)NNrÚ)r‹rŒrr"r rsrÇr[r r r r!r#ès   r#Tc Cs† d}z¨tr2z t |tjtjB¡Wnty1}z|jtjtjtjfvr,t d|j ƒ‚‚d}~ww|r©z t |j dƒ}|  ¡Wnty_}z|jtjtjfvrZWYd}~WdS‚d}~wwz4zt  |j |j d¡d}Wnttfy†t  |j |j d¡d}Yn wt  |j ¡WWdSWWdSty¨t  |j ¡t d|j ƒ‚wWdStr¸t |tj¡|rÂt  |j d¡‚)NFzlockf: lock unavailable: %sú.lockTzdot lock unavailable: %s)ÚfcntlÚlockfZLOCK_EXZLOCK_NBr¯r°ZEAGAINrùrúrr¡r r[rr«r¬r­r®r_rír-ÚLOCK_UN)r¿rZ dotlock_donerµZpre_lockr r r!rs^ÿ€û €üþþ  ÿþîrcCs> tr t |tj¡tj |jd¡rt |jd¡dSdS)NrÞ)rßràrárrr—r¡r-©r¿r r r!r9s ÿrc CsB t |tjtjBtjBd¡}z t|dƒWt |¡St |¡w)Nr×r÷)rrºrØr<ÚO_RDWRr[)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ƒrt | ¡¡dSdS)NÚfsync)rXrTrråÚfilenorâr r r!rNs  ÿrcCs t|ƒ| ¡dSr)rr[râr r r!r¢Ts r¢c@r±)rNr²r r r r!rZr³rc@r±)rNr²r r r r!r]r³rc@r±)rNr²r r r r!r`r³rc@r±)rNr²r r r r!rcr³rc@r±)rNr²r r r r!rfr³r)T)1rrâr®rær°rr|r<Z email.messageZemail.generatorrnr7ÚtypesrrßÚ ImportErrorÚ__all__rur\rrrörrrrrr(r r r%r r r rrÂr#rrrìr rr¢Ú Exceptionrrrrrr r r r!Úsp   ÿ j8DB4-3z%mqH_e '*