MINI MINI MANI MO

Path : /usr/lib64/python3.6/__pycache__/
File Upload :
Current File : //usr/lib64/python3.6/__pycache__/mailbox.cpython-36.opt-2.pyc

3


 \ 3@sNddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Zddl
Z
ddlZyddlZWne
k
rdZYnXdddddddd	d
ddd
dddddgZejjdZGdddZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddejjZGdd	d	eZGd d!d!eZGd"d
d
eZGd#ddeZGd$ddeZGd%d
d
eZ Gd&d'd'Z!Gd(d)d)e!Z"d<d+d,Z#d-d.Z$d/d0Z%d1d2Z&d3d4Z'd5d6Z(Gd7dde)Z*Gd8dde*Z+Gd9dde*Z,Gd:dde*Z-Gd;dde*Z.dS)=NMailboxMaildirmboxMHBabylMMDFMessageMaildirMessagemboxMessage	MHMessageBabylMessageMMDFMessageErrorNoSuchMailboxError
NotEmptyErrorExternalClashErrorFormatErrorasciic@seZdZdBddZddZddZd	d
ZddZd
dZdCddZ	ddZ
ddZddZddZ
ddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.ZdDd/d0Zd1d2ZdEd3d4Zd5d6Zd7d8Zd9d:Zd;d<Zd=d>Z d?Z!dFd@dAZ"dS)GrNTcCs tjjtjj||_||_dS)N)ospathabspath
expanduser_path_factory)selfrfactorycreater/usr/lib64/python3.6/mailbox.py__init__$szMailbox.__init__cCstddS)Nz&Method must be implemented by subclass)NotImplementedError)rmessagerrradd)szMailbox.addcCstddS)Nz&Method must be implemented by subclass)r )rkeyrrrremove-szMailbox.removecCs|j|dS)N)r$)rr#rrr__delitem__1szMailbox.__delitem__cCs(y|j|Wntk
r"YnXdS)N)r$KeyError)rr#rrrdiscard4szMailbox.discardcCstddS)Nz&Method must be implemented by subclass)r )rr#r!rrr__setitem__;szMailbox.__setitem__cCs$y
|j|Stk
r|SXdS)N)__getitem__r&)rr#defaultrrrget?s
zMailbox.getc	Cs6|js|j|Stj|j|}|j|SQRXdS)N)rget_message
contextlibclosingget_file)rr#filerrrr)Fs
zMailbox.__getitem__cCstddS)Nz&Method must be implemented by subclass)r )rr#rrrr,NszMailbox.get_messagecCstj|j|jS)N)emailmessage_from_bytes	get_bytes	as_string)rr#rrr
get_stringRszMailbox.get_stringcCstddS)Nz&Method must be implemented by subclass)r )rr#rrrr3YszMailbox.get_bytescCstddS)Nz&Method must be implemented by subclass)r )rr#rrrr/]szMailbox.get_filecCstddS)Nz&Method must be implemented by subclass)r )rrrriterkeysaszMailbox.iterkeyscCst|jS)N)listr6)rrrrkeyseszMailbox.keysccs@x:|jD].}y||}Wntk
r0w
YnX|Vq
WdS)N)r6r&)rr#valuerrr
itervaluesiszMailbox.itervaluescCs|jS)N)r:)rrrr__iter__rszMailbox.__iter__cCst|jS)N)r7r:)rrrrvaluesuszMailbox.valuesccsDx>|jD]2}y||}Wntk
r0w
YnX||fVq
WdS)N)r6r&)rr#r9rrr	iteritemsyszMailbox.iteritemscCst|jS)N)r7r=)rrrritemssz
Mailbox.itemscCstddS)Nz&Method must be implemented by subclass)r )rr#rrr__contains__szMailbox.__contains__cCstddS)Nz&Method must be implemented by subclass)r )rrrr__len__szMailbox.__len__cCs x|jD]}|j|q
WdS)N)r8r')rr#rrrclearsz
Mailbox.clearcCs0y||}Wntk
r |SX|j||S)N)r&r')rr#r*resultrrrpops
zMailbox.popcCs*x$|jD]}||j|fSWtddS)NzNo messages in mailbox)r6rCr&)rr#rrrpopitemszMailbox.popitemcCsxt|dr|j}nt|dr(|j}n|}d}x6|D].\}}y|||<Wq6tk
rbd}Yq6Xq6W|rttddS)Nr=r>FTzNo message with key(s))hasattrr=r>r&)rargsourceZbad_keyr#r!rrrupdates



zMailbox.updatecCstddS)Nz&Method must be implemented by subclass)r )rrrrflushsz
Mailbox.flushcCstddS)Nz&Method must be implemented by subclass)r )rrrrlockszMailbox.lockcCstddS)Nz&Method must be implemented by subclass)r )rrrrunlockszMailbox.unlockcCstddS)Nz&Method must be implemented by subclass)r )rrrrclosesz
Mailbox.closecCs,y
|jdStk
r&tdYnXdS)Nrz?String input must be ASCII-only; use bytes or a Message instead)encodeUnicodeError
ValueError)rr!rrr_string_to_bytess
zMailbox._string_to_bytesFc	Cst|tjjrxtj}tjj||d}|j||j	d|j
}|jdt}|j
||jrt|jtrt|j
tnt|tttjfrt|tjrtjdtd|j}t|tr|j|}|r|jdd}|jdt}|j
||jo|jtr|j
tnt|drt|dr4tjd	td|j}d}x|j}|jd
r`|ddd}n|jdr||ddd}|sP|r|jdrd|dd}|jdt}|j
||}q:W|jr|r|jtr|j
tntdt|dS)Nr
z8Use of StringIO input is deprecated, use BytesIO insteads
From s
>From readbufferzDUse of text mode files is deprecated, use a binary mode file insteads

sFrom s>From zInvalid message type: %s)
isinstancer1r!rioBytesIO	generatorBytesGeneratorflattenseekrSreplacelinesepwrite_append_newlineendswithstrbytesStringIOwarningswarnDeprecationWarninggetvaluerPrErTreadline
startswith	TypeErrortype)	rr!targetZmangle_from_rTgendataZlastlinelinerrr
_dump_messagesZ







zMailbox._dump_message)NT)N)N)N)F)#__name__
__module____qualname__rr"r$r%r'r(r+r)r,r5r3r/r6r8r:r;r<r=r>r?r@rArCrDrHrIrJrKrLrPrervrrrrr!s@

		
	
c@seZdZdZd5ddZddZdd	Zd
dZdd
ZddZ	ddZ
ddZddZddZ
ddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,Zd-d.Zd/d0Zd1d2Zd3d4ZdS)6r:NTcCstj||||tjj|jdtjj|jdtjj|jdd|_tjj|js|rtj|jdx*|jj	D]}tj|dqnWn
t
|ji|_ddd|_d|_
d|_dS)	Ntmpnewcur)r{r|r}ir)r}r|g?)rrrrjoinr_pathsexistsmkdirr<r_toc_toc_mtimes
_last_read_skewfactor)rdirnamerrrrrrr
s
zMaildir.__init__cCs~|j}y|j||Wn*tk
rB|jtj|jYnXt|t|t	r||j
}|j|j}||jkrd}nd}d}tj
j|jj|jd}tj
j|j|||}t|t	rtj|jtj
j|j|jfyLytj|j|Wn(ttfk
rtj|j|YnXtj|jWnNtk
rx}z0tj|j|jtjkrftd|nWYdd}~XnX|S)Nr|rz$Name clash with existing message: %s)_create_tmprv
BaseExceptionrLrr$name_sync_closer[r	
get_subdircolonget_inforbasenamesplitr~rutimegetatimeget_datelinkAttributeErrorPermissionErrorrenameOSErrorerrnoZEEXISTr)rr!Ztmp_filesubdirsuffixuniqdesterrrr"!sB



zMaildir.addcCs tjtjj|j|j|dS)N)rr$rr~r_lookup)rr#rrrr$KszMaildir.removecCs,y|j|Wnttfk
r&YnXdS)N)r$r&FileNotFoundError)rr#rrrr'OszMaildir.discardcCs|j|}|j|}|j|}t|tr.|}n|}tjj|}|j|kr`|j|j|jd}nd}|j	|tjj
|j|}	tjj
|j|||}
t|trtj|	tjj
|	|jftj|	|
dS)NrWrrZ)rr"r[r	rrrrrr'r~rrrrr)rr#r!Zold_subpathZtemp_keyZtemp_subpathZdominant_subpathrrZtmp_pathnew_pathrrrr(Ws"






zMaildir.__setitem__cCs|j|}ttjj|j|d }|jr4|j|}nt|}WdQRXtjj|\}}|j	||j
|kr|j|j|j
d|jtjj
tjj|j||S)NrbrWrZ)ropenrrr~rrr	r
set_subdirrset_infoset_dategetmtime)rr#Zsubpathfmsgrrrrrr,rs


zMaildir.get_messagec
Cs8ttjj|j|j|d}|jjtdSQRXdS)NrrQ)	rrrr~rrrSrbrc)rr#rrrrr3szMaildir.get_bytescCs$ttjj|j|j|d}t|S)Nr)rrrr~rr
_ProxyFile)rr#rrrrr/szMaildir.get_fileccsH|jx:|jD]0}y|j|Wntk
r8wYnX|VqWdS)N)_refreshrrr&)rr#rrrr6szMaildir.iterkeyscCs|j||jkS)N)rr)rr#rrrr?szMaildir.__contains__cCs|jt|jS)N)rlenr)rrrrr@szMaildir.__len__cCsdS)Nr)rrrrrIsz
Maildir.flushcCsdS)Nr)rrrrrJszMaildir.lockcCsdS)Nr)rrrrrKszMaildir.unlockcCsdS)Nr)rrrrrLsz
Maildir.closecCs`g}xVtj|jD]F}t|dkr|ddkrtjjtjj|j|r|j|ddqW|S)NrWr.)rlistdirrrrisdirr~append)rrBentryrrrlist_foldersszMaildir.list_folderscCs ttjj|jd||jddS)NrF)rr)rrrr~rr)rfolderrrr
get_folderszMaildir.get_foldercCs\tjj|jd|}t||jd}tjj|d}tjj|sXtjtj|tj	tj
Bd|S)Nr)rZ
maildirfolderi)rrr~rrrrrLrO_CREATO_WRONLY)rrrrBZmaildirfolder_pathrrr
add_folderszMaildir.add_foldercCs,tjj|jd|}xTtjtjj|dtjtjj|dD](}t|dksZ|ddkr>td|q>WxPtj|D]B}|dkrv|dkrv|dkrvtjjtjj||rvtd||fqvWx`tj|d	d
D]N\}}}x |D]}tj	tjj||qWx |D]}tj
tjj||qWqWtj
|dS)Nrr|r}rWrzFolder contains message(s): %sr{z%Folder contains subdirectory '%s': %sF)topdown)rrr~rrrrrwalkr$rmdir)rrrrrootdirsfilesrrr
remove_folders 

zMaildir.remove_foldercCs\tj}xNtjtjj|jdD]4}tjj|jd|}|tjj|dkr tj|q WdS)Nr{i@)timerrrr~rrr$)rnowrrrrrcleans
z
Maildir.cleanrWcCstj}tj}d|kr$|jdd}d|kr8|jdd}dt|t|ddtjtj|f}tj	j
|jd|}ytj|Wn@t
k
rtjd7_yt|Stk
rYnXYnXtd	|dS)
N/z\057rzz\072z%s.M%sP%sQ%s.%srWg.Ar{z&Name clash prevented file creation: %s)rsocketgethostnamerbintrgetpidr_countrr~rstatr_create_carefullyFileExistsErrorr)rrZhostnamerrrrrrs&zMaildir._create_tmpcCstj|jd|jkrbd}x<|jD]2}tjj|j|}||j|krLd}||j|<q$W|sbdSi|_xl|jD]b}|j|}xRtj	|D]D}tjj
||}tjj|rq|j|j
d}tjj
|||j|<qWqpWtj|_dS)NrUFTr)rrrrrrrrrrr~rrr)rZrefreshrmtimerrprrrrrs&
zMaildir._refreshcCszy,tjjtjj|j|j|r*|j|SWntk
r@YnX|jy
|j|Stk
rttd|YnXdS)NzNo message with key: %s)rrrr~rrr&r)rr#rrrr#s
zMaildir._lookupcCsVt|ds|j|_x<y|t|jStk
r8dStk
rLwYqXqWdS)N
_onetime_keys)rEr6rnext
StopIterationr&)rrrrr1s

zMaildir.next)NT)rwrxryrrr"r$r'r(r,r3r/r6r?r@rIrJrKrLrrrrrrrrrrrrrrrs4
*
	
$c@seZdZd#ddZddZddZd	d
ZddZd
dZddZ	ddZ
ddZddZddZ
ddZddZddZd$dd Zd!d"ZdS)%_singlefileMailboxNTcCstj||||yt|jd}Wnntk
r}zR|jtjkr\|rPt|jd}q~t|jn"|jtjtj	fkr|t|jd}nWYdd}~XnX||_
d|_d|_d|_
d|_d|_d|_dS)Nzrb+zwb+rrF)rrrrrrENOENTrEACCESEROFS_filer	_next_key_pending
_pending_sync_locked_file_length)rrrrrrrrrrAs$z_singlefileMailbox.__init__cCs8|j|j||j|j<|jd7_d|_|jdS)NrWT)r_append_messagerrr)rr!rrrr"Xs
z_singlefileMailbox.addcCs|j||j|=d|_dS)NT)rrr)rr#rrrr$bs
z_singlefileMailbox.removecCs$|j||j||j|<d|_dS)NT)rrrr)rr#r!rrrr(hs
z_singlefileMailbox.__setitem__ccs|j|jjEdHdS)N)rrr8)rrrrr6nsz_singlefileMailbox.iterkeyscCs|j||jkS)N)rr)rr#rrrr?ssz_singlefileMailbox.__contains__cCs|jt|jS)N)rrr)rrrrr@xsz_singlefileMailbox.__len__cCs|jst|jd|_dS)NT)r
_lock_filer)rrrrrJ}s
z_singlefileMailbox.lockcCs|jrt|jd|_dS)NF)r_unlock_filer)rrrrrKs
z_singlefileMailbox.unlockc
Cs|js |jrt|jd|_dS|jjdd|jj}||jkrTtd|j|ft|j	}yi}|j
|xt|jj
D]|}|j|\}}|jj||j||j}x0|jjtd||jj}|sP|j|qW||jf||<|j|q~W|j|_Wn"|jtj|jYnXt||jjtj|j	j}	tj|j|	ytj|j|j	Wn2tk
rtj|j	tj|j|j	YnXt|j	d|_||_d|_d|_|jrt|jdddS)NFrrUz4Size of mailbox file changed (expected %i, found %i)izrb+)dotlock) rr_sync_flushrratellrr_create_temporaryr_pre_mailbox_hooksortedrr8_pre_message_hookrSminrd_post_message_hookrLrr$rrrst_modechmodrrrrr)
rZcur_lenZnew_fileZnew_tocr#startstopZ	new_startrTmoderrrrIs^
	






z_singlefileMailbox.flushcCsdS)Nr)rrrrrrsz$_singlefileMailbox._pre_mailbox_hookcCsdS)Nr)rrrrrrsz$_singlefileMailbox._pre_message_hookcCsdS)Nr)rrrrrrsz%_singlefileMailbox._post_message_hookcCs4z|jWdz|jr|jWd|jjXXdS)N)rIrrKrrL)rrrrrLsz_singlefileMailbox.closecCsJ|jdkr|j|dk	rFy
|j|Stk
rDtd|YnXdS)NzNo message with key: %s)r
_generate_tocr&)rr#rrrrs

z_singlefileMailbox._lookupcCs|jjdd|jj}t|jdkr:|jr:|j|jy&|j|j|j|}|j	|jWn"t
k
r|jj|YnX|jj|jj|_
|S)NrrU)rrarrrrrr_install_messagerrtruncaterIr)rr!ZbeforeZoffsetsrrrrs


z"_singlefileMailbox._append_message)NT)N)rwrxryrr"r$r(r6r?r@rJrKrIrrrrLrrrrrrr>s 

@

rc@s>eZdZdZddZdddZdddZdd	d
ZddZd
S)	_mboxMMDFTcCsp|j|\}}|jj||jjjtd}|jj||jj}|j|jtd}|j	|ddj
d|S)NrQrXr)rrrarnrbrcrSr_message_factoryset_fromdecode)rr#rr	from_linestringrrrrr,sz_mboxMMDF.get_messageFcCstj|j|j|dS)N)unixfrom)r1r2r3r4)rr#from_rrrr5sz_mboxMMDF.get_stringcCsJ|j|\}}|jj||s(|jj|jj||jj}|jtdS)NrQ)rrrarnrSrrbrc)rr#rrrrrrrr3s
z_mboxMMDF.get_bytescCs<|j|\}}|jj||s(|jjt|j|jj|S)N)rrrarn_PartialFiler)rr#rrrrrrr/s

z_mboxMMDF.get_filecCsd}t|tr|j|}t|trf|jdrf|jd}|dkr\|d|}||dd}q|}d}nJt|tr|jjd}d|}n(t|t	j
jr|j}|dk	r|jd}|dkrdt
jt
jj}|jj}|jj|t|j||j|j|jj}||fS)NsFrom rQrWrrsFrom MAILER-DAEMON rZ)r[rgrPrhrofind_mboxMMDFMessageget_fromrMr1r!rget_unixfromrasctimegmtimerrrdrcrv
_mangle_from_)rr!rnewlineZauthorrrrrrr&s0







z_mboxMMDF._install_messageN)F)F)F)	rwrxryrr,r5r3r/rrrrrrs


	
rc@s.eZdZdZdZd	ddZddZddZdS)
rTNcCst|_tj||||dS)N)r
rrr)rrrrrrrrLsz
mbox.__init__cCs|jtdS)N)rdrc)rrrrrrQszmbox._post_message_hookcCsgg}}d}|jjdx|jj}|jj}|jdr|t|t|krl|rb|j|ttn
|j||j|d}q|s|r|j|ttn
|j|Pq|tkrd}qd}qWtt	t
|||_t|j|_|jj|_
dS)NFrsFrom T)rrarrnrorrrcdict	enumerateziprrr)rstartsstopsZlast_was_emptyline_posrurrrrUs0






zmbox._generate_toc)NT)rwrxryrrerrrrrrrrCs

c@s.eZdZdddZddZddZd	d
ZdS)rNTcCst|_tj||||dS)N)r
rrr)rrrrrrrrzsz
MMDF.__init__cCs|jdtdS)Ns)rdrc)rrrrrrszMMDF._pre_message_hookcCs|jtdtdS)Ns)rdrc)rrrrrrszMMDF._post_message_hookcCsgg}}|jjdd}x|}|jj}|jj}|jdtr|j|xV|}|jj}|jj}|dtkr|j|ttPqN|sN|j|PqNWq|sPqWtt	t
|||_t|j|_|jjdd|jj|_
dS)NrsrU)rrarnrrorcrrrrrrrr)rrrnext_posrrurrrrs2






zMMDF._generate_toc)NT)rwrxryrrrrrrrrrws
c@seZdZd/ddZddZddZd	d
ZddZd
dZddZ	ddZ
ddZddZddZ
ddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.ZdS)0rNTcCsttj||||tjj|jsj|r`tj|jdtjtjtjj	|jdtj
tjBtjBdn
t
|jd|_dS)Niz
.mh_sequencesiF)rrrrrrrrLrr~rO_EXCLrrr)rrrrrrrrs
zMH.__init__cCs|j}t|dkrd}nt|d}tjj|jt|}t|}d}z|j	rVt
|zfy|j||Wn:tk
r|j	rt
|t|d}tj|YnXt|tr|j||Wd|j	rt
|XWd|st|X|S)NrrWFT)r8rmaxrrr~rrgrrrrvrrrr$r[r_dump_sequences)rr!r8Znew_keyrrclosedrrrr"s6


zMH.addcCsxtjj|jt|}yt|d}Wn>tk
r`}z"|jtjkrNt	d|nWYdd}~XnX|j
tj|dS)Nzrb+zNo message with key: %s)rrr~rrgrrrrr&rLr$)rr#rrrrrrr$sz	MH.removecCstjj|jt|}yt|d}Wn>tk
r`}z"|jtjkrNt	d|nWYdd}~XnXzd|j
rrt|z@tjtj|tj
tjB|j||t|tr|j||Wd|j
rt|XWdt|XdS)Nzrb+zNo message with key: %s)rrr~rrgrrrrr&rrrLrO_TRUNCrvr[rr	rr)rr#r!rrrrrrr(s$
zMH.__setitem__c Csy@|jr$ttjj|jt|d}nttjj|jt|d}Wn>tk
r~}z"|jtj	krlt
d|nWYdd}~XnX|2|jrt|zt|}Wd|jrt
|XWdQRXx*|jjD]\}}||kr|j|qW|S)Nzrb+rzNo message with key: %s)rrrrr~rrgrrrr&rrr
get_sequencesr>add_sequence)rr#rrrrkey_listrrrr,s&zMH.get_messagec Csy@|jr$ttjj|jt|d}nttjj|jt|d}Wn>tk
r~}z"|jtj	krlt
d|nWYdd}~XnX|6|jrt|z|jj
tdS|jrt|XWdQRXdS)Nzrb+rzNo message with key: %srQ)rrrrr~rrgrrrr&rrSrbrcr)rr#rrrrrr3szMH.get_bytescCsfyttjj|jt|d}Wn>tk
r\}z"|jtjkrJt	d|nWYdd}~XnXt
|S)NrzNo message with key: %s)rrrr~rrgrrrr&r)rr#rrrrrr/)szMH.get_filecCsttddtj|jDS)Ncss|]}|jrt|VqdS)N)isdigitr).0rrrr	<genexpr>6szMH.iterkeys.<locals>.<genexpr>)iterrrrr)rrrrr64szMH.iterkeyscCstjjtjj|jt|S)N)rrrr~rrg)rr#rrrr?9szMH.__contains__cCstt|jS)N)rr7r6)rrrrr@=sz
MH.__len__cCs2|js.ttjj|jdd|_t|jd|_dS)Nz
.mh_sequenceszrb+T)rrrrr~rrr)rrrrrJAs
zMH.lockcCs(|jr$t|jt|j|`d|_dS)NF)rrrr)rrrrrKHs


z	MH.unlockcCsdS)Nr)rrrrrIPszMH.flushcCs|jr|jdS)N)rrK)rrrrrLTszMH.closecCs@g}x6tj|jD]&}tjjtjj|j|r|j|qW|S)N)rrrrrr~r)rrBrrrrrYs
zMH.list_folderscCsttjj|j||jddS)NF)rr)rrrr~rr)rrrrrrasz
MH.get_foldercCsttjj|j||jdS)N)r)rrrr~rr)rrrrrrfsz
MH.add_foldercCs`tjj|j|}tj|}|dgkr:tjtjj|dn|gkrDntd|jtj|dS)Nz
.mh_sequenceszFolder not empty: %s)rrr~rrr$rr)rrrZentriesrrrrks

zMH.remove_folderc
si}ttjj|jdddd}t|jx|D]}y|jd\}}t}xT|jD]H}|jrr|j	t
|qVdd|jdD\}}	|jt||	d	qVWfd
dt
|D||<t||dkr||=Wq2tk
rtd
|jYq2Xq2WWdQRX|S)Nz
.mh_sequencesrASCII)encodingrzcss|]}t|VqdS)N)r)rxrrrrsz#MH.get_sequences.<locals>.<genexpr>-rWcsg|]}|kr|qSrr)rr#)all_keysrr
<listcomp>sz$MH.get_sequences.<locals>.<listcomp>rz"Invalid sequence specification: %s)rrrr~rsetr8rrr"rrHrangerrrOrrstrip)
rZresultsrrurcontentsr8specrrr)rrrws&

 zMH.get_sequencescCs
ttjj|jdddd}ztjtj|jtjtjBx|j	D]\}}t
|dkrXqB|j|dd}d}xbtt
|D]R}|d|kr|sd	}|jd
n*|rd}|jd||fn|jd||}q|W|r|jt|d
qB|jd
qBWWdt|XdS)Nz
.mh_sequenceszr+r)rrrzFrWTrz%s %sz %s
)rrrr~rrLrrrr>rrdrrrgr)r	sequencesrrr8prevZ
completingr#rrr
set_sequencess.zMH.set_sequencesc	CsL|j}d}g}x|jD]}|d|kr|j||dfy4tjtjj|jt|tjj|jt|dWnHt	t
fk
rtjtjj|jt|tjj|jt|dYnXtjtjj|jt||d7}qW|d|_
t|dkrdSxB|jD]6\}}x*|D]"\}}||kr|||j|<qWqW|j|dS)NrrW)rr6rrrrr~rrgrrrunlinkrrr>indexr")	rr r!Zchangesr#rroldr|rrrpacks, 

zMH.packcCs||j}|j}x<|jD]0\}}||kr6|j|q||kr||j|=qWx|D]}||krT|g||<qTW|j|dS)N)rr>rr$r")rr!r#Zpending_sequencesZ
all_sequencesrrsequencerrrr	s
zMH._dump_sequences)NT)rwrxryrr"r$r(r,r3r/r6r?r@rJrKrIrLrrrrrr"r&r	rrrrrs,
"c@seZdZedddddddhZd$d
dZdd
ZddZddZddZ	ddZ
ddZddZddZ
ddZddZd d!Zd"d#ZdS)%runseendeletedZfiledanswered	forwardedZeditedresentNTcCstj||||i|_dS)N)rr_labels)rrrrrrrrszBabyl.__init__cCs(tj||}t|tr$|j|j|<|S)N)rr"r[r
get_labelsr-)rr!r#rrrr"s
z	Babyl.addcCs"tj||||jkr|j|=dS)N)rr$r-)rr#rrrr$s
zBabyl.removecCs*tj|||t|tr&|j|j|<dS)N)rr(r[rr.r-)rr#r!rrrr(s
zBabyl.__setitem__c
Cs|j|\}}|jj||jjtj}x4|jj}|dtksJ|rLP|j|jtdq.Wtj}x0|jj}|tks|rP|j|jtdqlW||jj	}|jj
|}|jtd}t|j|}	|	j
|j||jkr|	j|j||	S)Ns*** EOOH ***rQ)rrrarnr\r]rcrdrbrrSrrmset_visibler-
set_labels)
rr#rroriginal_headersruZvisible_headersnZbodyrrrrr,s.



zBabyl.get_messagec	Cs|j|\}}|jj||jjtj}x4|jj}|dtksJ|rLP|j|jtdq.Wx|jj}|tks||rdPqdW|j	}||jj
}|jj|}|jtd}||S)Ns*** EOOH ***rQ)rrrarnr\r]rcrdrbrmrrS)	rr#rrr1ruZheadersr2rtrrrr3s$


zBabyl.get_bytescCstj|j|jdtS)NrQ)r\r]r3rbrc)rr#rrrr/%szBabyl.get_filecCs@|jt}x|jjD]}|j|qW|j|jt|S)N)rrr-r<rHdifference_update_special_labelsr7)rlabelsZ
label_listrrrr.)szBabyl.get_labelscCs>gg}}|jjdd}g}x|}|jj}|jj}|dtkrt|t|krf|j|tt|j|dd|jjddjdD}|j|q |dks|dtkrt|t|kr|j|ttq |s |j|ttPq Wtt	t
|||_tt	||_t|j|_
|jjdd|jj|_dS)	NrscSsg|]}|jr|jqSr)strip)rlabelrrrr@sz'Babyl._generate_toc.<locals>.<listcomp>rW,rU)rrarnrrcrrrrrrrr-rr)rrrrZlabel_listsrrur5rrrr2s4



zBabyl._generate_toccCsVdt}|dt7}|j}dd|D}|ddj|t7}|d7}|j|dS)NsBABYL OPTIONS:s
Version: 5css|]}|jVqdS)N)rM)rr7rrrrUsz*Babyl._pre_mailbox_hook.<locals>.<genexpr>sLabels:r8r9)rcr.r~rd)rrZbabylr5rrrrPszBabyl._pre_mailbox_hookcCs|jdtdS)N)rdrc)rrrrrrZszBabyl._pre_message_hookcCs|jtddS)Nr9)rdrc)rrrrrr^szBabyl._post_message_hookcCs|jj}t|trg}g}x0|jD]$}||jkr@|j|q&|j|q&W|jjdx |D]}|jjd|jq`W|jjdx$|D]}|jjd|jdqW|jjt	n|jjdt	t|t
jjr0t
j}t
jj|dd}|j||jdx6|j}|jj|jd	t	|d	ks8|r
Pq
W|jjd
t	t|trt
j}	t
jj|	dd}
|
j|jxz|	j}|jj|jd	t	|d	ks|rPqWnB|jdx6|j}|jj|jd	t	|d	ks|rPqWx,|jd}|sP|jj|jd	t	qWnZt|ttt
jfr,t|t
jrhtjdtd
|j}t|tr~|j|}|jdd}|ddkr|jj|d|jd	t	|jjd
t	|jj|d|jd	t	|jj||djd	t	n(|jjd
t	t	|jj|jd	t	n^t |drzt |drXtjdtd
|j!}|j}
d}x|j}|j"dr|ddd	}n|j"dr|ddd	}|jj|jd	t	|d	ks|rf|rd}|jjd
t	|j|
nPqfWx|j}|sP|j"dr,|ddt	}n:|j"drJ|ddt	}n|j"d	rf|ddt	}|jj|qWnt#dt$||jj}||fS)N1s, s,, r8s1,,FrrQs*** EOOH ***iz8Use of StringIO input is deprecated, use BytesIO insteadrRs

rUrWrnrTzDUse of text mode files is deprecated, use a binary mode file insteadTs
rVzInvalid message type: %srZrYrZrYrZrZ)%rrr[rr.r4rrdrMrcr1r!rr\r]r^r_r`rarnrbget_visiblerSrhrgrirjrkrlrmrPrrErTrfrprq)rr!rZspecial_labelsr5r7Zorig_bufferZorig_generatorruZ
vis_bufferZ
vis_generatorrTZ
body_startZoriginal_posZ
first_passrrrrrbs











zBabyl._install_message)NT)rwrxry	frozensetr4rr"r$r(r,r3r/r.rrrrrrrrrrs

	
c@s&eZdZdddZddZddZdS)	rNcCst|tjjr4|jtj|t|tr|j|nt|trP|jtj	|n~t|t
rl|jtj|nbt|tj
r|jtj|nDt|dr|jtj|n(|dkrtjjj|ntdt|dS)NrSzInvalid message type: %s)r[r1r!r_become_messagecopydeepcopy_explain_torhr2rgZmessage_from_stringr\
TextIOWrapperZmessage_from_filerEZmessage_from_binary_filerrprq)rr!rrrrs



zMessage.__init__cCs8t|dg}x&|jD]}||kr|j||j|<qWdS)N_type_specific_attributes)getattr__dict__)rr!Z
type_specificrrrrr?szMessage._become_messagecCst|trdStddS)Nz Cannot convert to specified type)r[rrp)rr!rrrrBs
zMessage._explain_to)N)rwrxryrr?rBrrrrrs
c@sxeZdZdddgZdddZddZd	d
ZddZd
dZddZ	ddZ
ddZddZddZ
ddZddZdS)r	_subdir_info_dateNcCs&d|_d|_tj|_tj||dS)Nr|r)rGrHrrIrr)rr!rrrrs
zMaildirMessage.__init__cCs|jS)N)rG)rrrrrszMaildirMessage.get_subdircCs(|dks|dkr||_ntd|dS)Nr|r}z!subdir must be 'new' or 'cur': %s)rGrO)rrrrrrszMaildirMessage.set_subdircCs"|jjdr|jddSdSdS)Nz2,rUr)rHro)rrrr	get_flags
szMaildirMessage.get_flagscCsddjt||_dS)Nz2,r)r~rrH)rflagsrrr	set_flagsszMaildirMessage.set_flagscCs$|jdjt|jt|BdS)Nr)rLr~rrJ)rflagrrradd_flagszMaildirMessage.add_flagcCs,|jr(|jdjt|jt|dS)Nr)rJrLr~r)rrMrrrremove_flagszMaildirMessage.remove_flagcCs|jS)N)rI)rrrrrszMaildirMessage.get_datecCs4yt||_Wn tk
r.td|YnXdS)Nzcan't convert to float: %s)floatrIrOrp)rZdaterrrr"szMaildirMessage.set_datecCs|jS)N)rH)rrrrr)szMaildirMessage.get_infocCs&t|tr||_ntdt|dS)Nzinfo must be a string: %s)r[rgrHrprq)rinforrrr-s
zMaildirMessage.set_infocCst|tr8|j|j|j|j|j|jnht|trt	|j}d|kr`|j
d|jdkrv|j
dd|kr|j
dd|kr|j
dd|kr|j
d|jd	tj
|jnt|trt	|j}d|kr|jd
d|kr|jdd|kr|jdnt|trt	|j}d|krD|jd
d|krX|jd
d|krl|jdd|kr|jdnt|trntdt|dS)NSRr}OTDFAz
MAILER-DAEMONr(repliedflaggedr)r*Pr+z$Cannot convert to specified type: %s)r[r	rLrJrrrrrrrNrrrrr
r	add_labelrrprq)rr!rKrrrrB4sN

















zMaildirMessage._explain_to)N)rwrxryrDrrrrJrLrNrOrrrrrBrrrrr	s

c@sVeZdZdgZdddZddZdddZd	d
ZddZd
dZ	ddZ
ddZdS)r_fromNcCsV|jddt|tjjrF|j}|dk	rF|jdrF|j|ddtj||dS)Nz
MAILER-DAEMONTzFrom rX)rr[r1r!rrror)rr!rrrrresz_mboxMMDFMessage.__init__cCs|jS)N)r])rrrrrnsz_mboxMMDFMessage.get_fromcCs4|dk	r*|dkrtj}|dtj|7}||_dS)NT )rrrr])rrZtime_rrrrrs
z_mboxMMDFMessage.set_fromcCs|jdd|jddS)NStatusrzX-Status)r+)rrrrrJzsz_mboxMMDFMessage.get_flagscCst|}d	\}}x&d
D]}||kr||7}|j|qWx&dD]}||kr>||7}|j|q>W|djt|7}y|jd|Wn tk
r|jd|YnXy|jd|Wn tk
r|jd|YnXdS)NrrSrTrVrWrXr_zX-Status)rr)rSrT)rVrWrX)rr$r~rreplace_headerr&Z
add_header)rrKZstatus_flagsZ
xstatus_flagsrMrrrrL~s&

z_mboxMMDFMessage.set_flagscCs$|jdjt|jt|BdS)Nr)rLr~rrJ)rrMrrrrNsz_mboxMMDFMessage.add_flagcCs4d|ksd|kr0|jdjt|jt|dS)Nr_zX-Statusr)rLr~rrJ)rrMrrrrOsz_mboxMMDFMessage.remove_flagcCst|trt|j}d|kr(|jdd|kr:|jdd|krL|jdd|kr^|jdd|krp|jd|d	=|d
=dj|jjdd}y|j	t
jtj
|d
Wnttfk
rYnXn
t|tr|j|j|j|jnt|trZt|j}d|kr$|jdd|kr8|jdd|krL|jd|d	=|d
=nt|trt|j}d|kr|jdd|kr|jdd|kr|jd|d	=|d
=nt|trntdt|dS)NrTr}rWrXrSrRrVrUZstatuszx-statusr^rXz%a %b %d %H:%M:%S %Yr(rYrZr)r*z$Cannot convert to specified type: %s)r[r	rrJrrNr~rrrcalendarZtimegmrZstrptimerO
OverflowErrorrrLrrr
rr\rrprq)rr!rKZ
maybe_daterrrrBs^



















z_mboxMMDFMessage._explain_to)N)N)rwrxryrDrrrrJrLrNrOrBrrrrr`s
	
rc@seZdZdS)r
N)rwrxryrrrrr
sc@sDeZdZdgZdddZddZddZd	d
ZddZd
dZ	dS)r
_sequencesNcCsg|_tj||dS)N)rdrr)rr!rrrrszMHMessage.__init__cCs|jddS)N)rd)rrrrrszMHMessage.get_sequencescCst||_dS)N)r7rd)rr rrrr"szMHMessage.set_sequencescCs6t|tr"||jkr2|jj|ntdt|dS)Nzsequence type must be str: %s)r[rgrdrrprq)rr'rrrr
s

zMHMessage.add_sequencecCs*y|jj|Wntk
r$YnXdS)N)rdr$rO)rr'rrrremove_sequenceszMHMessage.remove_sequencecCsJt|trdt|j}d|kr*|jdn|jd|jdd|krP|jdd|krb|jdnt|trt|j}d|kr|jdn
|jd	d|kr|jdd|kr|jd
nt|trx||jD]}|j|qWn`t|t	r(t|j}d|kr|j
dd|krF|j
dnt|tr6ntdt
|dS)
Nr(r}rRrZrWrYrSROrTrXr*z$Cannot convert to specified type: %s)r[r	rrrrNrrr
rr\rrprq)rr!r r'rrrrBs@










zMHMessage._explain_to)N)
rwrxryrDrrr"r
rerBrrrrrs
c@s^eZdZddgZdddZddZdd	Zd
dZdd
ZddZ	ddZ
ddZddZdS)rr-_visibleNcCsg|_t|_tj||dS)N)r-rrgr)rr!rrrr"szBabylMessage.__init__cCs|jddS)N)r-)rrrrr.(szBabylMessage.get_labelscCst||_dS)N)r7r-)rr5rrrr0,szBabylMessage.set_labelscCs6t|tr"||jkr2|jj|ntdt|dS)Nzlabel must be a string: %s)r[rgr-rrprq)rr7rrrr\0s

zBabylMessage.add_labelcCs*y|jj|Wntk
r$YnXdS)N)r-r$rO)rr7rrrremove_label8szBabylMessage.remove_labelcCs
t|jS)N)rrg)rrrrr=?szBabylMessage.get_visiblecCst||_dS)N)rrg)rZvisiblerrrr/CszBabylMessage.set_visiblecCsjx6|jjD](}||kr,|jj|||q|j|=qWx,dD]$}||kr>||jkr>|||j|<q>WdS)NDateFromReply-ToToCCSubject)rirjrkrlrmrn)rgr8r`)rheaderrrrupdate_visibleGs
zBabylMessage.update_visiblecCsvt|tr~t|j}d|kr*|jdn|jd|jdd|ksNd|krX|jdd|krj|jdd	|kr||jd
nt|trt|j}d|kr|jdn
|jdd	|kr|jd
d|kr|jdnt|trt|j}d|kr|jdd|krr|jdnXt|t	rT|j
|jx<|jD]}|j|q>Wnt|t
rbntdt|dS)Nr(r}rRr+r,r[r*rSr)rUrfrTrVrXrYz$Cannot convert to specified type: %s)r[r	rr.rrNrrr
rr/r=r\rrprq)rr!r5r7rrrrBRsF










zBabylMessage._explain_to)N)
rwrxryrDrr.r0r\rhr=r/rprBrrrrrs
c@seZdZdS)r
N)rwrxryrrrrr
|sc@seZdZd%ddZd&ddZd'ddZd(dd	Zd)d
dZdd
ZddZ	d*ddZ
ddZddZddZ
ddZddZddZdd Zd!d"Zed#d$ZdS)+rNcCs$||_|dkr|j|_n||_dS)N)rr_pos)rrposrrrrsz_ProxyFile.__init__cCs|j||jjS)N)_readrrS)rsizerrrrSsz_ProxyFile.readcCs|j||jjS)N)rsrread1)rrtrrrrusz_ProxyFile.read1cCs|j||jjS)N)rsrrn)rrtrrrrnsz_ProxyFile.readlinecCs>g}x4|D],}|j||dk	r
|t|8}|dkr
Pq
W|S)Nr)rr)rsizehintrBrurrr	readliness

z_ProxyFile.readlinesccs x|j}|sdS|VqWdS)N)rn)rrurrrr;s
z_ProxyFile.__iter__cCs|jS)N)rq)rrrrrsz_ProxyFile.tellrcCs4|dkr|jj|j|jj|||jj|_dS)NrW)rrarqr)roffsetwhencerrrrasz_ProxyFile.seekc
Cs0t|dr,zt|jdr"|jjWd|`XdS)NrrL)rErrL)rrrrrLs

z_ProxyFile.closecCs2|dkrd}|jj|j||}|jj|_|S)NrWrZ)rrarqr)rrtread_methodrBrrrrssz_ProxyFile._readcCs|S)Nr)rrrr	__enter__sz_ProxyFile.__enter__cGs|jdS)N)rL)rexcrrr__exit__sz_ProxyFile.__exit__cCs
|jjS)N)rreadable)rrrrr~sz_ProxyFile.readablecCs
|jjS)N)rwritable)rrrrrsz_ProxyFile.writablecCs
|jjS)N)rseekable)rrrrrsz_ProxyFile.seekablecCs
|jjS)N)rrI)rrrrrIsz_ProxyFile.flushcCs&t|dsdSt|jdsdS|jjS)NrTr
F)rErr
)rrrrr
s

z_ProxyFile.closed)N)N)N)N)N)r)rwrxryrrSrurnrwr;rrarLrsr{r}r~rrrIpropertyr
rrrrrs"





		rc@s8eZdZd
ddZddZdddZd	d
ZddZdS)rNcCstj|||||_||_dS)N)rr_start_stop)rrrrrrrrsz_PartialFile.__init__cCstj||jS)N)rrr)rrrrrsz_PartialFile.tellrcCs<|dkr|j|_d}n|dkr*|j|_d}tj|||dS)NrrWrU)rrqrrra)rrxryrrrrasz_PartialFile.seekcCsB|j|j}|dkrdS|dks0|dks0||kr4|}tj|||S)Nrr)rrqrrs)rrtrzZ	remainingrrrrssz_PartialFile._readcCst|dr|`dS)Nr)rEr)rrrrrLs
z_PartialFile.close)NN)r)rwrxryrrrarsrLrrrrrs



	rTc4Csd}yZtrpytj|tjtjBWnJtk
rn}z.|jtjtjtjfkr\t	d|j
nWYdd}~XnX|r^yt|j
d}|jWn:tk
r}z|jtjtjfkrdSWYdd}~XnXy`yt
j|j
|j
dd}Wn2ttfk
rt
j|j
|j
dd}YnXt
j|j
Wn0tk
r\t
j|j
t	d|j
YnXWn8tr|tj|tj|rt
j|j
dYnXdS)NFzlockf: lock unavailable: %sz.lockTzdot lock unavailable: %s)fcntllockfZLOCK_EXZLOCK_NBrrZEAGAINrrrrrrLrrrrrr#rr$LOCK_UN)rrZdotlock_donerZpre_lockrrrr
sH
rcCs8trtj|tjtjj|jdr4tj|jddS)Nz.lock)rrrrrrrr$)rrrrr4srcCs8tj|tjtjBtjBd}z
t|dStj|XdS)Nizrb+)rrrrO_RDWRrL)rfdrrrr;s
rcCs$td|ttjtjtjfS)Nz%s.%s.%s.%s)rrrrrrr)rrrrrCsrcCs$|jttdr tj|jdS)Nfsync)rIrErrfileno)rrrrrIs
rcCst||jdS)N)rrL)rrrrrOsrc@seZdZdS)rN)rwrxryrrrrrUsc@seZdZdS)rN)rwrxryrrrrrXsc@seZdZdS)rN)rwrxryrrrrr[sc@seZdZdS)rN)rwrxryrrrrr^sc@seZdZdS)rN)rwrxryrrrrras)T)/rrrbrrr@rjr1Z
email.messageZemail.generatorr\r-rImportError__all__rcrMrrrrrrrrr!rr	rr
rrr
rrrrrrrr	Exceptionrrrrrrrrr<module>	sn

h8DB4-3z%mqH_c'
*

OHA YOOOO