a DOg3@s:ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Zddl Z ddl Z ddl m Z z ddlZWneydZYn0gdZejdZGdddZGdddeZGd d d eZGd d d eZGd ddeZGdddeZGdddeZGdddeZGdddejjZGdddeZGdddeZGdddeZGdddeZ Gdd d eZ!Gd!d"d"eZ"Gd#d$d$Z#Gd%d&d&e#Z$d>d(d)Z%d*d+Z&d,d-Z'd.d/Z(d0d1Z)d2d3Z*Gd4d5d5e+Z,Gd6d7d7e,Z-Gd8d9d9e,Z.Gd:d;d;e,Z/GdZ d?Z!dFd@dAZ"e#e$Z%dS)GrNTcCs tjtj||_||_dSN)ospathabspath expanduser_path_factoryselfrfactorycreater /usr/lib64/python3.9/mailbox.py__init__%szMailbox.__init__cCs tddSNz&Method must be implemented by subclassNotImplementedErrorrmessager r r!add*sz Mailbox.addcCs tddSr#r$rkeyr 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 tddSr#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||}||WdS1s@0YdSr)r get_message contextlibclosingget_file)rr*filer r r!r1Gs zMailbox.__getitem__cCs tddSr#r$r)r r r!r4OszMailbox.get_messagecCst||Sremailmessage_from_bytes get_bytesZ as_stringr)r r r! get_stringSszMailbox.get_stringcCs tddSr#r$r)r r r!r<ZszMailbox.get_bytescCs tddSr#r$r)r r r!r7^szMailbox.get_filecCs tddSr#r$rr r r!iterkeysbszMailbox.iterkeyscCs t|Sr)listr?r>r r r!keysfsz Mailbox.keysc cs<|D].}z ||}Wnty.YqYn0|VqdSrr?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!itemssz Mailbox.itemscCs tddSr#r$r)r r r! __contains__szMailbox.__contains__cCs tddSr#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*r2resultr r r!pops     z Mailbox.popcCs*|D]}|||fStddS)NzNo messages in mailbox)r?rNr-r)r r r!popitems zMailbox.popitemc Csrt|dr|}nt|dr(|}n|}d}|D],\}}z |||<Wq4ty^d}Yq40q4|rntddS)NrHrIFTzNo message with key(s))hasattrrHrIr-)rargsourceZbad_keyr*r'r r r!updates        zMailbox.updatecCs tddSr#r$r>r r r!flushsz Mailbox.flushcCs tddSr#r$r>r r r!locksz Mailbox.lockcCs tddSr#r$r>r r r!unlockszMailbox.unlockcCs tddSr#r$r>r r r!closesz Mailbox.closecCs,z |dWSty&tdYn0dS)Nrz?String input must be ASCII-only; use bytes or a Message instead)encode UnicodeError ValueErrorr&r r r!_string_to_bytess  zMailbox._string_to_bytesFc Cst|tjjrvt}tj||d}||| d| }| dt }| ||jrr|t sr| t nt|tttjfrt|tjrtdtd|}t|tr||}|r| dd}| dt }| ||jr|t s| t nt|drt|dr2td td|j}d}|}|d r\|dd d}n|d rx|dd d}|sq|r|drd|dd}| dt }| ||}q6|jr|r|t s| t ntdt|dS)Nr 8Use of StringIO input is deprecated, use BytesIO insteads From s >From readbufferDUse of text mode files is deprecated, use a binary mode file instead  From s>From Invalid message type: %s) isinstancer:r'r ioBytesIO generatorBytesGeneratorflattenseekr_replacelinesepwrite_append_newlineendswithstrbytesStringIOwarningswarnDeprecationWarninggetvaluer[rPr`readline startswith TypeErrortype) rr'targetZ mangle_from_r`gendataZlastlineliner r r! _dump_messages\                  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@seZdZdZd5ddZddZdd Zd d Zd d ZddZ ddZ ddZ ddZ ddZ ddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,Zd-d.Zd/d0Zd1d2Zd3d4ZdS)6r:NTcCst||||tj|jdtj|jdtj|jdd|_tj|js|rt|jd|j D]}t|dqln t |ji|_ ddd|_ d|_ d|_dS) Ntmpnewcur)rrrr)rrg?)rr"rrjoinr_pathsexistsmkdirrGr_toc _toc_mtimes _last_read _skewfactor)rdirnamerrrr r r!r"s  zMaildir.__init__c Cs||}z|||Wn(ty@|t|jYn0t|t|t rz| }|j | }||j krd}nd}d}tj |j|j d}tj |j|||}t|t rt|jtj |j|fzJzt|j|Wn&ttfyt|j|Yn0t|jWnPtyv}z6t|j|jtjkr`td|nWYd}~n d}~00|S)Nrrz$Name clash with existing message: %s) _create_tmpr BaseExceptionrWrr+name _sync_closerir get_subdircolonget_inforbasenamesplitrrutimegetatimeget_datelinkAttributeErrorPermissionErrorrenameOSErrorerrnoEEXISTr)rr'Ztmp_filesubdirsuffixuniqdester r r!r($sF      z Maildir.addcCs ttj|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|tr.|}n|}tj|}|j|vr`|j||jd}nd}| |tj |j |} tj |j |||} t|trt | tj | |ft| | dS)Nrer)rr(rir rrrrrr.rrrrrr) rr*r'Z old_subpathZtemp_keyZ temp_subpathZdominant_subpathrrZtmp_pathnew_pathr r r!r0Zs$        zMaildir.__setitem__cCs||}ttj|j|d*}|jr4||}nt|}Wdn1sP0Ytj|\}}| ||j |vr| ||j d| tj tj|j||S)Nrbre)ropenrrrrrr r set_subdirrset_infoset_dategetmtime)rr*subpathfmsgrrr r r!r4us  &  zMaildir.get_messagecCsPttj|j||d }|tdWdS1sB0YdS)Nrr\) rrrrrrr_rprqrr*rr r r!r<szMaildir.get_bytescCs$ttj|j||d}t|S)Nr)rrrrrr _ProxyFilerr r r!r7szMaildir.get_filec csD||jD]0}z||Wnty6YqYn0|VqdSr)_refreshrrr-r)r r r!r?s   zMaildir.iterkeyscCs|||jvSr)rrr)r r r!rJszMaildir.__contains__cCs|t|jSr)rlenrr>r r r!rKszMaildir.__len__cCsdSrr r>r r r!rTsz Maildir.flushcCsdSrr r>r r r!rUsz Maildir.lockcCsdSrr r>r r r!rVszMaildir.unlockcCsdSrr r>r r r!rWsz Maildir.closecCs\g}t|jD]F}t|dkr|ddkrtjtj|j|r||ddq|S)Nr.)rlistdirrrrisdirrappendrrMentryr r r! list_foldersszMaildir.list_folderscCs ttj|jd||jddS)NrFrr)rrrrrrrfolderr r r! get_folderszMaildir.get_foldercCs\tj|jd|}t||jd}tj|d}tj|sXtt|tj tj Bd|S)NrrZ maildirfolder) rrrrrrrrWrO_CREATO_WRONLY)rrrrMZmaildirfolder_pathr r r! add_folders zMaildir.add_foldercCstj|jd|}ttj|dttj|dD](}t|dksX|ddkrr r r!r4s    z Maildir.next)NT)rrrrr"r(r+r.r0r4r<r7r?rJrKrTrUrVrWrrrrrrrrrrr r r r!r s4 *   $rc@seZdZd#ddZddZddZd d Zd d Zd dZddZ ddZ ddZ ddZ ddZ ddZddZddZd$dd Zd!d"ZdS)%_singlefileMailboxNTc Cst||||zt|jd}Wnpty}zX|jtjkrZ|rNt|jd}q|t|jn"|jtjtj fvrzt|jd}nWYd}~n d}~00||_ d|_ d|_ d|_ d|_d|_d|_dS)Nrb+zwb+rrF)rr"rrrrENOENTrEACCESEROFS_filer _next_key_pending _pending_sync_locked _file_length)rrrrrrr r r!r"Ds$  z_singlefileMailbox.__init__cCs8||||j|j<|jd7_d|_|jdS)NrT)r_append_messagerrrr&r r r!r([s z_singlefileMailbox.addcCs|||j|=d|_dSNT)rrrr)r r r!r+es z_singlefileMailbox.removecCs$|||||j|<d|_dSr)rrrrr/r r r!r0ks z_singlefileMailbox.__setitem__ccs||jEdHdSr)rrrAr>r r r!r?qsz_singlefileMailbox.iterkeyscCs|||jvSr)rrr)r r r!rJvsz_singlefileMailbox.__contains__cCs|t|jSr)rrrr>r r r!rK{sz_singlefileMailbox.__len__cCs|jst|jd|_dSr)r _lock_filerr>r r r!rUs z_singlefileMailbox.lockcCs|jrt|jd|_dSNF)r _unlock_filerr>r r r!rVs z_singlefileMailbox.unlockc Cs|js |jrt|jd|_dS|jdd|j}||jkrTtd|j|ft|j }zi}| |t |j D]x}|j |\}}|j||||}|jtd||j}|sq||q||f||<||q|||_Wn"|t|jYn0t||jt|j j} t|j| zt|j|j Wn0tyt|j t|j|j Yn0t|j d|_||_ d|_d|_|jrt|jdddS)NFrrz4Size of mailbox file changed (expected %i, found %i)r)dotlock) rr _sync_flushrrotellrr_create_temporaryr_pre_mailbox_hooksortedrrA_pre_message_hookr_minrr_post_message_hookrWrr+rrrst_modechmodrrrrr) rZcur_lenZnew_fileZnew_tocr*startstopZ new_startr`moder r r!rTs`               z_singlefileMailbox.flushcCsdSrr rrr r r!rsz$_singlefileMailbox._pre_mailbox_hookcCsdSrr r r r r!rsz$_singlefileMailbox._pre_message_hookcCsdSrr r r r r!rsz%_singlefileMailbox._post_message_hookcCshz6|Wz|jr|W|jqd|j0n,z|jrH|W|jn |j00dSr)rTrrVrrWr>r r r!rWs   z_singlefileMailbox.closecCsL|jdur||durHz |j|WStyFtd|dYn0dSr)r _generate_tocr-r)r r r!rs   z_singlefileMailbox._lookupcCs|jdd|j}t|jdkr8|js8||jz&||j||}| |jWn t y~|j |Yn0|j |j|_ |S)Nrr)rrorrrrrr_install_messagerrtruncaterTr)rr'beforeZoffsetsr r r!rs        z"_singlefileMailbox._append_message)NT)N)rrrr"r(r+r0r?rJrKrUrVrTrrrrWrrr r r r!rAs   @ rc@s>eZdZdZddZdddZdddZdd d Zd d Zd S) _mboxMMDFTcCsp||\}}|j||jtd}|j||j}||td}| |dd d|S)Nr\rgr) rrror|rprqr_r_message_factoryset_fromdecode)rr*r r  from_linestringrr 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}|tdSNr\)rrror|r_rrprq)rr*rr r rr r r!r<s   z_mboxMMDF.get_bytescCs<||\}}|j||s(|jt|j|j|Sr)rrror| _PartialFiler)rr*rr r r r r!r7!s   z_mboxMMDF.get_filecCs d}t|tr||}t|trf|drf|d}|dkr\|d|}||dd}q|}d}nJt|tr|d}d|}n(t|t j j r| }|dur|d}|durdt t }|j}|j|t|||j|j|j}||fS)Nrfr\rerrrsFrom MAILER-DAEMON )rirur[rvr}find_mboxMMDFMessageget_fromrXr:r'r get_unixfromrasctimegmtimerrrrrqr _mangle_from_)rr'rnewlineZauthorr r r r r!r)s0         z_mboxMMDF._install_messageN)F)F)F) rrrr#r4r=r<r7rr r r r!rs   rc@s.eZdZdZdZd ddZddZddZdS) rTNcCst|_t||||dSr)r rrr"rr r r!r"Osz mbox.__init__cCs|tdSrrrrqr r r r!rTszmbox._post_message_hookcCsgg}}d}|jd|j}|j}|drzt|t|krj|r`||ttn ||||d}q|s|r||ttq||qq|tkrd}qd}qtt t |||_ t|j |_ |j|_ dS)NFrrfT)rrorr|r}rrrqdict enumerateziprrr)rstartsstopsZlast_was_emptyline_posrr r r!rXs.         zmbox._generate_toc)NT)rrrr#rsr"rrr r r r!rFs  rc@s.eZdZd ddZddZddZd d ZdS) rNTcCst|_t||||dSr)rrrr"rr r r!r"}sz MMDF.__init__cCs|dtdSNr%r r r r!rszMMDF._pre_message_hookcCs|tdtdSr,r%r r r r!rszMMDF._post_message_hookcCsgg}}|jdd}|}|j}|j}|dtr|||}|j}|j}|dtkr||ttqqJ|sJ||qqJq|sqqtt t |||_ t|j |_ |jdd|j|_ dS)Nrr-r)rror|rr}rqrrr&r'r(rrr)rr)r*next_posr+rr r r!rs.          zMMDF._generate_toc)NT)rrrr"rrrr r r r!rzs rc@seZdZd/ddZddZddZd d Zd d Zd dZddZ ddZ ddZ ddZ ddZ ddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.ZdS)0rNTcCstt||||tj|jsj|r`t|jdtttj |jdtj tj Btj Bdn t |jd|_dS)Nr .mh_sequencesiF)rr"rrrrrrWrrrO_EXCLrrrrr r r!r"s z MH.__init__cCs|}t|dkrd}n t|d}tj|jt|}t|}d}z|j rVt |zrz| ||Wn8t y|j rt |t|d}t|Yn0t|tr|||W|j rt |n|j rt |0W|st|n|st|0|S)NrrFT)rArmaxrrrrrurrrrrrrr+rir _dump_sequences)rr'rAZnew_keyrrclosedr r r!r(s>         zMH.addc Csztj|jt|}zt|d}Wn@tyb}z(|jtjkrLt d|nWYd}~nd}~00| t |dSNrr) rrrrrurrrrr-rWr+)rr*rrrr r r!r+s z MH.removec Cstj|jt|}zt|d}Wn@tyb}z(|jtjkrLt d|nWYd}~n d}~00zz|j rtt |zNt t|tj tjB|||t|tr|||W|j rt|n|j rt|0Wt|n t|0dSr4)rrrrrurrrrr-rrrWrO_TRUNCrrir r2rr)rr*r'rrrr r r!r0s(     zMH.__setitem__c Cs z@|jr$ttj|jt|d}nttj|jt|d}Wn@ty}z(|jtj krjt d|nWYd}~n d}~00|J|jrt |zt |}W|jrt |n|jrt |0Wdn1s0Y|D]\}}||vr||q|S)Nrrr)rrrrrrrurrrr-rr r get_sequencesrI add_sequence)rr*rrrrkey_listr r r!r4s*   ( zMH.get_messagec Csz@|jr$ttj|jt|d}nttj|jt|d}Wn@ty}z(|jtj krjt d|nWYd}~n d}~00|`|jrt |z0| tdW|jrt|WdSn|jrt|0Wdn1s0YdS)Nrrrr\)rrrrrrrurrrr-rr_rprqrrr*rrr r r!r<s( z MH.get_bytesc Cshzttj|jt|d}Wn@ty^}z(|jtjkrHt d|nWYd}~n d}~00t |S)Nrr) rrrrrrurrrr-rr9r r r!r7,s z MH.get_filecCsttddt|jDS)Ncss|]}|rt|VqdSr)isdigitr).0rr r r! 9szMH.iterkeys..)iterrrrrr>r r r!r?7sz MH.iterkeyscCstjtj|jt|Sr)rrrrrrur)r r r!rJ<szMH.__contains__cCstt|Sr)rr@r?r>r r r!rK@sz MH.__len__cCs2|js.ttj|jdd|_t|jd|_dS)Nr/rT)rrrrrrrrr>r r r!rUDs zMH.lockcCs(|jr$t|jt|j|`d|_dSr)rrrrr>r r r!rVKs   z MH.unlockcCsdSrr r>r r r!rTSszMH.flushcCs|jr|dSr)rrVr>r r r!rWWszMH.closecCs<g}t|jD]&}tjtj|j|r||q|Sr)rrrrrrrrr r r!r\s  zMH.list_folderscCsttj|j||jddS)NFrrrrrrrrr r r!rdsz MH.get_foldercCsttj|j||jdS)Nrr>rr r r!risz MH.add_foldercCs`tj|j|}t|}|dgkr:ttj|dn|gkrDntd|jt|dS)Nr/zFolder not empty: %s)rrrrrr+rr)rrrentriesr r r!rns  zMH.remove_folderc si}ttj|jdddd}t||D]}z|d\}}t}|D]H}|rn| t |qRdd|dD\}} | t || d qRfd d t |D||<t||d kr||=Wq0tytd |Yq00q0Wdn1s 0Y|S)Nr/rASCIIencodingrcss|]}t|VqdSr)r)r;xr r r!r<rz#MH.get_sequences..-rcsg|]}|vr|qSr r )r;r*Zall_keysr r! sz$MH.get_sequences..rz"Invalid sequence specification: %s)rrrrrsetrArr:r(rrSrangerrrZrrstrip) rresultsrrrcontentsrAspecr r r rFr!r6zs(    .zMH.get_sequencescCs ttj|jdddd}ztt|jtjtjB| D]\}}t |dkrVq@| |dd}d}t t |D]R}|d|kr|sd }| d n*|rd}| d ||fn| d ||}qx|r| t|d q@| d q@Wt|n t|0dS)Nr/zr+rArBrrFrTrEz%s %sz %s )rrrrrrWrrr5rIrrrrrHrur)r sequencesrrrAprevZ completingr*r r r! set_sequencess.   zMH.set_sequencesc Cs<|}d}g}|D]}|d|kr|||dfz4ttj|jt|tj|jt|dWnFt t fyt tj|jt|tj|jt|dYn0t tj|jt||d7}q|d|_ t|dkrdS|D]0\}}|D]"\}}||vr||||<qq||dS)Nrr)r6r?rrrrrrrurrrunlinkrrrIindexrQ) rrOrPZchangesr*rr8oldrr r r!packs0        zMH.packcCst|}|}|D]0\}}||vr4||q||vr|||=q|D]}||vrN|g||<qN||dSr)r6rIrrSrQ)rr'r*Zpending_sequencesZ all_sequencesrr8sequencer r r!r2s  zMH._dump_sequences)NT)rrrr"r(r+r0r4r<r7r?rJrKrUrVrTrWrrrrr6rQrUr2r r r r!rs, "  rc@seZdZehdZdddZddZdd Zd d Zd d Z ddZ ddZ ddZ ddZ ddZddZddZddZdS)r>unseendeletedresentansweredZfiled forwardedZeditedNTcCst||||i|_dSr)rr"_labelsrr r r!r"szBabyl.__init__cCs(t||}t|tr$||j|<|Sr)rr(rir get_labelsr\)rr'r*r r r!r(s  z Babyl.addcCs"t||||jvr|j|=dSr)rr+r\r)r r r!r+s  z Babyl.removecCs*t|||t|tr&||j|<dSr)rr0rir r]r\r/r r r!r0s zBabyl.__setitem__c Cs||\}}|j||jt}|j}|dtks\|sHq\||tdq,t}|j}|tks|s|q||tdqd||j }|j |}|td}t | |} | | ||jvr| |j|| SN *** EOOH ***r\)rrror|rjrkrqrrrprr_r r{ set_visibler\ set_labels) rr*r r original_headersrZvisible_headersnbodyrr r r!r4s*        zBabyl.get_messagec Cs||\}}|j||jt}|j}|dtks\|sHq\||tdq,|j}|tksv|s\qvq\| }||j }|j |}|td}||Sr^) rrror|rjrkrqrrrpr{rr_) rr*r r rbrZheadersrcrr r r!r<s        zBabyl.get_bytescCst||dtSr)rjrkr<rprqr)r r r!r7(szBabyl.get_filecCs<|t}|jD]}||q||jt|Sr)rrHr\rGrSdifference_update_special_labelsr@)rlabelsZ label_listr r r!r],s   zBabyl.get_labelscCs:gg}}|jdd}g}|}|j}|j}|dtkrt|t|krd||tt||dd|jdddD}||q|dks|dtkrt|t|kr||ttq|s||ttqqtt t |||_ tt ||_ t|j |_ |jdd|j|_dS) Nrs cSsg|]}|r|qSr )stripr;labelr r r!rGCsz'Babyl._generate_toc..r,r)rror|rrqrrrr&r'r(rr\rr)rr)r*r.Z label_listsr+rrgr r r!r5s4        zBabyl._generate_toccCsVdt}|dt7}|}dd|D}|dd|t7}|d7}||dS)NsBABYL OPTIONS:s Version: 5css|]}|VqdSr)rXrir r r!r<Xrz*Babyl._pre_mailbox_hook..sLabels:rkrl)rqr]rrr)rrZbabylrgr r r!rSs zBabyl._pre_mailbox_hookcCs|dtdS)N r%r r r r!r]szBabyl._pre_message_hookcCs|tddS)Nrlr%r r r r!raszBabyl._post_message_hookcCsx|j}t|trg}g}|D]$}||jvr>||q$||q$|jd|D]}|jd|qZ|jd|D]}|jd|dq|jt n|jdt t|t j j rt }t j|dd}|||d|}|j|d t |d ks,|sq,q|jd t t|trt } t j| dd} | || }|j|d t |d ks|snqqnn>|d|}|j|d t |d ks|sqq|d } | sqf|j| d t qnTt|ttt jfrt|t jrJtd td |}t|tr`||}|dd} | ddkr|j|d| d t |jd t |j|d| d t |j|| dd t n(|jd t t |j|d t nXt |drVt |dr:tdtd |j!}|} d}|}|"drl|ddd }n|"dr|ddd }|j|d t |d ks|sF|rd}|jd t || nqڐqF|}|sqf|"dr |ddt }n:|"dr(|ddt }n|"d rD|ddt }|j|qnt#dt$||j}||fS)N1s, s,, rks1,,Frr\r_rr]r^s rrer|r`raTrbrcrdrh)%rrrir r]rfrrrrXrqr:r'r rjrkrlrmrnror|rp get_visibler_rvrurwrxryrzr{r[rrPr`rtr~r)rr'r Zspecial_labelsrgrjZ orig_bufferZorig_generatorrZ vis_bufferZ vis_generatorr`Z body_startZ original_posZ first_passr r r r!res                         zBabyl._install_message)NT)rrr frozensetrfr"r(r+r0r4r<r7r]rrrrrr r r r!rs    rc@s&eZdZdddZddZddZdS) r NcCst|tjjr4|t|t|tr||nt|trP|t |n~t|t rl|t |nbt|t j r|t|nDt|dr|t|n(|durtjj|ntdt|dS)Nr_rh)rir:r'r _become_messagecopydeepcopy _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_specificrr r r!rrs  zMessage._become_messagecCst|trdStddS)Nz Cannot convert to specified type)rir r~r&r r r!rus zMessage._explain_to)N)rrrr"rrrur r r r!r s r c@sveZdZgdZdddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZdS)r )_subdir_info_dateNcCs&d|_d|_t|_t||dS)Nrr)rzr{rr|r r"r&r r r!r"s zMaildirMessage.__init__cCs|jSr)rzr>r r r!rszMaildirMessage.get_subdircCs(|dks|dkr||_n td|dS)Nrrz!subdir must be 'new' or 'cur': %s)rzrZ)rrr r r!rszMaildirMessage.set_subdircCs"|jdr|jddSdSdS)N2,rr)r{r}r>r r r! get_flags s zMaildirMessage.get_flagscCsddt||_dS)Nr}r)rrr{)rflagsr r r! set_flagsszMaildirMessage.set_flagscCs$|dt|t|BdSNrrrrHr~rflagr r r!add_flagszMaildirMessage.add_flagcCs,|r(|dt|t|dSr)r~rrrHrr r r! remove_flagszMaildirMessage.remove_flagcCs|jSr)r|r>r r r!r!szMaildirMessage.get_datecCs4zt||_Wn ty.td|dYn0dS)Nzcan't convert to float: %s)floatr|rZr~)rdater r r!r%s zMaildirMessage.set_datecCs|jSr)r{r>r r r!r,szMaildirMessage.get_infocCs&t|tr||_ntdt|dS)Nzinfo must be a string: %s)rirur{r~r)rinfor r r!r0s zMaildirMessage.set_infocCst|tr8||||||nht|trt |}d|vr`| d|dkrv| dd|vr| dd|vr| dd|vr| d| d t |nt|trt |}d|vr|d d|vr|d d|vr|d nt|trt |}d|vrD|d d|vrX|d d|vrl|dd|vr|dnt|trntdt|dS)NSRrOTDFA MAILER-DAEMONrWrepliedflaggedrXrZPr[$Cannot convert to specified type: %s)rir rr~rrrrrrHrrrr"r r7r add_labelr r~r)rr'rr r r!ru7sP                           zMaildirMessage._explain_to)N)rrrrwr"rrr~rrrrrrrrur r r r!r s r c@sVeZdZdgZdddZddZdddZd d Zd d Zd dZ ddZ ddZ dS)r_fromNcCsV|ddt|tjjrF|}|durF|drF||ddt||dS)NrTzFrom rg)rrir:r'r r r}r")rr'rr r r!r"hs  z_mboxMMDFMessage.__init__cCs|jSr)rr>r r r!rqsz_mboxMMDFMessage.get_fromcCs4|dur*|durt}|dt|7}||_dS)NT )rr"r!r)rrZtime_r r r!rus z_mboxMMDFMessage.set_fromcCs|dd|ddS)NStatusrX-Status)r3r>r r r!r~}sz_mboxMMDFMessage.get_flagscCst|}d\}}dD]}||vr||7}||qdD]}||vr8||7}||q8|dt|7}z|d|Wnty|d|Yn0z|d|Wnty|d|Yn0dS)N)rr)rr)rrrrrr)rHr+rrreplace_headerr-Z add_header)rrZ status_flagsZ xstatus_flagsrr r r!rs&    z_mboxMMDFMessage.set_flagscCs$|dt|t|BdSrrrr r r!rsz_mboxMMDFMessage.add_flagcCs4d|vsd|vr0|dt|t|dS)Nrrrrrr r r!rsz_mboxMMDFMessage.remove_flagc Cst|trt|}d|vr(|dd|vr:|dd|vrL|dd|vr^|dd|vrp|d|d =|d =d |d d}z| t t |d WnttfyYn0n t|tr||||nt|trXt|}d|vr"|dd|vr6|dd|vrJ|d|d =|d =nt|trt|}d|vr|dd|vr|dd|vr|d|d =|d =nt|trntdt|dS)Nrrrrrrrrstatuszx-statusrz%a %b %d %H:%M:%S %YrWrrrXrZr)rir rHr~rrrrrrcalendarZtimegmrstrptimerZ OverflowErrorrrrr r7r rr r~r)rr'rZ maybe_dater r r!rusb                           z_mboxMMDFMessage._explain_to)N)N) rrrrwr"rrr~rrrrur r r r!rcs  rc@s eZdZdS)r Nrrrr r r r!r sr c@sDeZdZdgZdddZddZddZd d Zd d Zd dZ dS)r _sequencesNcCsg|_t||dSr)rr r"r&r r r!r"szMHMessage.__init__cCs|jddSr)rr>r r r!r6szMHMessage.get_sequencescCst||_dSr)r@r)rrOr r r!rQszMHMessage.set_sequencescCs6t|tr"||jvr2|j|ntdt|dS)Nzsequence type must be str: %s)rirurrr~rrrVr r r!r7s  zMHMessage.add_sequencecCs(z|j|Wnty"Yn0dSr)rr+rZrr r r!remove_sequences zMHMessage.remove_sequencecCsFt|trdt|}d|vr*|dn|d|dd|vrP|dd|vrb|dnt|trt|}d|vr|dn |d d|vr|dd|vr|d nt|tr|D]}||qn`t|t r$t|}d|vr| dd|vrB| d nt|t r2nt d t |dS) NrWrrrrrrROrrrZr)rir rHr6rrrr r7r rr r~r)rr'rOrVr r r!rusB                      zMHMessage._explain_to)N) rrrrwr"r6rQr7rrur r r r!r s r c@s^eZdZddgZdddZddZdd Zd d Zd d ZddZ ddZ ddZ ddZ dS)r r\_visibleNcCsg|_t|_t||dSr)r\r rr"r&r r r!r"%szBabylMessage.__init__cCs|jddSr)r\r>r r r!r]+szBabylMessage.get_labelscCst||_dSr)r@r\)rrgr r r!ra/szBabylMessage.set_labelscCs6t|tr"||jvr2|j|ntdt|dS)Nzlabel must be a string: %s)rirur\rr~rrrjr r r!r3s  zBabylMessage.add_labelcCs(z|j|Wnty"Yn0dSr)r\r+rZrr r r! remove_label;s zBabylMessage.remove_labelcCs t|jSrr rr>r r r!rpBszBabylMessage.get_visiblecCst||_dSrr)rZvisibler r r!r`FszBabylMessage.set_visiblecCsb|jD](}||vr*|j|||q |j|=q dD]$}||vr8||jvr8|||j|<q8dS)N)ZDateZFromzReply-ToZToZCCZSubject)rrAr)rheaderr r r!update_visibleJs zBabylMessage.update_visiblecCsrt|tr~t|}d|vr*|dn|d|dd|vsNd|vrX|dd|vrj|dd |vr||d nt|trt|}d|vr|d n |d d |vr|d d|vr|dnt|trt|}d|vr|dd|vrn|dnTt|t rP| | |D]}| |qr r r!rsz_ProxyFile.tellrcCs4|dkr|j|j|j|||j|_dS)Nrrrorrroffsetwhencer r r!rosz_ProxyFile.seekcCs4t|dr0zt|jdr"|jW|`n|`0dS)NrrW)rPrrWr>r r r!rWs    z_ProxyFile.closecCs2|dur d}|j|j||}|j|_|S)Nrer)rr read_methodrMr r r!rs  z_ProxyFile._readcCs|Srr r>r r r! __enter__sz_ProxyFile.__enter__cGs |dSr)rW)rexcr r r!__exit__sz_ProxyFile.__exit__cCs |jSr)rreadabler>r r r!rsz_ProxyFile.readablecCs |jSr)rwritabler>r r r!rsz_ProxyFile.writablecCs |jSr)rseekabler>r r r!rsz_ProxyFile.seekablecCs |jSr)rrTr>r r r!rTsz_ProxyFile.flushcCs&t|dsdSt|jdsdS|jjS)NrTr3F)rPrr3r>r r r!r3s   z_ProxyFile.closed)N)N)N)N)N)r)rrrr"r_rr|rrFrrorWrrrrrrrTpropertyr3rrrr r r r!rs&         rc@s8eZdZd ddZddZdddZd d Zd d ZdS)rNcCst|||||_||_dSr)rr"_start_stop)rrr r r r r!r"sz_PartialFile.__init__cCst||jSr)rrrr>r r r!rsz_PartialFile.tellrcCs<|dkr|j|_d}n|dkr*|j|_d}t|||dS)Nrrr)rrrrrorr r r!rosz_PartialFile.seekcCsB|j|j}|dkrdS|dus0|dks0||kr4|}t|||S)Nrr)rrrr)rrr remainingr r r!rs  z_PartialFile._readcCst|dr|`dS)Nr)rPrr>r r r!rWs z_PartialFile.close)NN)r)rrrr"rrorrWr r r r!rs    rTc Csd}zftrrzt|tjtjBWnLtyp}z4|jtjtjtjfvrZt d|j nWYd}~n d}~00|rjzt |j d}| WnHty}z0|jtjtjfvrWYd}~WdSWYd}~n d}~00z^zt |j |j dd}Wn0ttfy*t |j |j dd}Yn0t |j Wn.tyht |j t d|j Yn0Wn8trt|tj|rt |j dYn0dS)NFzlockf: lock unavailable: %s.lockTzdot lock unavailable: %s)fcntllockfZLOCK_EXZLOCK_NBrrEAGAINrrrrrrWrrrrrrRrr+LOCK_UN)rrZ dotlock_donerZpre_lockr r r!rsL   rcCs8trt|tjtj|jdr4t|jddS)Nr)rrrrrrrr+rr r r!r9src CsDt|tjtjBtjBd}zt|dWt|St|0dS)Nrr)rrrr0O_RDWRrW)rfdr r r!r@s   rcCs$td|ttttfS)Nz %s.%s.%s.%s)rrrrrrr)rr r r!rHsrcCs$|ttdr t|dS)Nfsync)rTrPrrfilenorr r r!rNs rcCst||dSr)rrWrr r r!rTsrc@s eZdZdS)rNrr r r r!rZsrc@s eZdZdS)rNrr r r r!r]src@s eZdZdS)rNrr r r r!r`src@s eZdZdS)rNrr r r r!rcsrc@s eZdZdS)rNrr r r r!rfsr)T)1rrrrrrsrxr:Z email.messageZemail.generatorrjr5typesrr ImportError__all__rqrXrrrrrrrrr'r r rr r r rrrrrrrrr Exceptionrrrrrr r r r! sj     j8DB4-3z%mqH_e' *