Viewing File: /opt/alt/python35/lib64/python3.5/__pycache__/mailbox.cpython-35.opt-2.pyc



]R2@s*ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Zddl
Z
ddlZyddlZWne
k
rdZYnXdddddddd	d
ddd
gZejjdZGdddZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddejjZGdd	d	eZGdddeZGdd
d
eZGdddeZGdddeZGd 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&d.d/Z'd0d1Z(Gd2d3d3e)Z*Gd4d5d5e*Z+Gd6d7d7e*Z,Gd8d9d9e*Z-Gd:d;d;e*Z.dS)<NMailboxMaildirmboxMHBabylMMDFMessageMaildirMessagemboxMessage	MHMessageBabylMessageMMDFMessageasciic@seZdZddddZddZddZd	d
ZddZd
dZdddZ	ddZ
ddZddZddZ
ddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zdd/d0Zd1d2Zdd3d4Zd5d6Zd7d8Zd9d:Zd;d<Zd=d>Z d?Z!d?d@dAZ"dS)BrNTcCs.tjjtjj||_||_dS)N)ospathabspath
expanduser_path_factory)selfrfactorycreater,/opt/alt/python35/lib64/python3.5/mailbox.py__init__#s!zMailbox.__init__cCstddS)Nz&Method must be implemented by subclass)NotImplementedError)rmessagerrradd(szMailbox.addcCstddS)Nz&Method must be implemented by subclass)r)rkeyrrrremove,szMailbox.removecCs|j|dS)N)r)rrrrr__delitem__0szMailbox.__delitem__cCs*y|j|Wntk
r%YnXdS)N)rKeyError)rrrrrdiscard3s
zMailbox.discardcCstddS)Nz&Method must be implemented by subclass)r)rrrrrr__setitem__:szMailbox.__setitem__cCs.y|j|SWntk
r)|SYnXdS)N)__getitem__r!)rrdefaultrrrget>s
zMailbox.getc	CsI|js|j|Stj|j|}|j|SWdQRXdS)N)rget_message
contextlibclosingget_file)rrfilerrrr$Es	
zMailbox.__getitem__cCstddS)Nz&Method must be implemented by subclass)r)rrrrrr'MszMailbox.get_messagecCstj|j|jS)N)emailmessage_from_bytes	get_bytes	as_string)rrrrr
get_stringQszMailbox.get_stringcCstddS)Nz&Method must be implemented by subclass)r)rrrrrr.XszMailbox.get_bytescCstddS)Nz&Method must be implemented by subclass)r)rrrrrr*\szMailbox.get_filecCstddS)Nz&Method must be implemented by subclass)r)rrrriterkeys`szMailbox.iterkeyscCst|jS)N)listr1)rrrrkeysdszMailbox.keysccsFx?|jD]1}y||}Wntk
r8w
YnX|Vq
WdS)N)r1r!)rrvaluerrr
itervalueshs
zMailbox.itervaluescCs
|jS)N)r5)rrrr__iter__qszMailbox.__iter__cCst|jS)N)r2r5)rrrrvaluestszMailbox.valuesccsLxE|jD]7}y||}Wntk
r8w
YnX||fVq
WdS)N)r1r!)rrr4rrr	iteritemsxs
zMailbox.iteritemscCst|jS)N)r2r8)rrrritemssz
Mailbox.itemscCstddS)Nz&Method must be implemented by subclass)r)rrrrr__contains__szMailbox.__contains__cCstddS)Nz&Method must be implemented by subclass)r)rrrr__len__szMailbox.__len__cCs(x!|jD]}|j|q
WdS)N)r3r")rrrrrclearsz
Mailbox.clearcCs8y||}Wntk
r&|SYnX|j||S)N)r!r")rrr%resultrrrpops
	
zMailbox.popcCs7x0|jD]}||j|fSWtddS)NzNo messages in mailbox)r1r>r!)rrrrrpopitemszMailbox.popitemcCst|dr|j}n$t|dr<|j}n|}d}x=|D]5\}}y|||<WqOtk
rd}YqOXqOW|rtddS)Nr8r9FTzNo message with key(s))hasattrr8r9r!)rargsourceZbad_keyrrrrrupdates
zMailbox.updatecCstddS)Nz&Method must be implemented by subclass)r)rrrrflushsz
Mailbox.flushcCstddS)Nz&Method must be implemented by subclass)r)rrrrlockszMailbox.lockcCstddS)Nz&Method must be implemented by subclass)r)rrrrunlockszMailbox.unlockcCstddS)Nz&Method must be implemented by subclass)r)rrrrclosesz
Mailbox.closecCs6y|jdSWntk
r1tdYnXdS)Nrz?String input must be ASCII-only; use bytes or a Message instead)encodeUnicodeError
ValueError)rrrrr_string_to_bytess
zMailbox._string_to_bytesFc	Cst|tjjrtj}tjj||d}|j||j	d|j
}|jdt}|j
||jr|jtr|j
tnt|tttjfrqt|tjrtjdtd|j}t|tr|j|}|r)|jdd}|jdt}|j
||jr|jtr|j
tn6t|drt|drtjd	td|j}d}x|j}|jd
r|ddd}n#|jdr	|ddd}|sP|r9|jdr9d|dd}|jdt}|j
||}qW|jr|r|jtr|j
tntdt|dS)Nrs
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
s
sFrom s>From zInvalid message type: %s)
isinstancer,rrioBytesIO	generatorBytesGeneratorflattenseekrMreplacelinesepwrite_append_newlineendswithstrbytesStringIOwarningswarnDeprecationWarninggetvaluerKr@rNreadline
startswith	TypeErrortype)	rrtargetZmangle_from_rNgendataZlastlinelinerrr
_dump_messagesZ


	

	
	

zMailbox._dump_message)#__name__
__module____qualname__rrrr r"r#r&r$r'r0r.r*r1r3r5r6r7r8r9r:r;r<r>r?rCrDrErFrGrKr^rorrrrr s@			c@sBeZdZdZddddZddZdd	Zd
dZdd
ZddZ	ddZ
ddZddZddZ
ddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,Zd-d.Zd/d0Zd1d2Zd3d4ZdS)5r:NTcCstj||||dtjj|jddtjj|jddtjj|jdi|_tjj|js|rtj|jdx9|jj	D]}tj|dqWnt
|ji|_ddddi|_d|_
d|_dS)Ntmpnewcurirg?)rrrrjoinr_pathsexistsmkdirr7NoSuchMailboxError_toc_toc_mtimes
_last_read_skewfactor)rdirnamerrrrrrrs!		zMaildir.__init__cCs|j}y|j||Wn/tk
rQ|jtj|jYnXt|t|t	r|j
}|j|j}||jkrd}nd}d}tj
j|jj|jd}tj
j|j|||}t|t	r/tj|jtj
j|j|jfyLttdrgtj|j|tj|jntj|j|Wn]tk
r}z=tj|j|jtjkrtd|nWYdd}~XnX|S)Nrurlinkz$Name clash with existing message: %s)_create_tmpro
BaseExceptionrGrrname_sync_closerTr	
get_subdircolonget_inforbasenamesplitrwrutimegetatimeget_dater@rrenameOSErrorerrnoEEXISTExternalClashError)rrZtmp_filesubdirsuffixuniqdesterrrr s@


	%"
zMaildir.addcCs,tjtjj|j|j|dS)N)rrrrwr_lookup)rrrrrrIszMaildir.removecCs0y|j|Wnttfk
r+YnXdS)N)rr!FileNotFoundError)rrrrrr"MszMaildir.discardcCs!|j|}|j|}|j|}t|trE|}n|}tjj|}|j|kr|j|j|jd}nd}|j	|tjj
|j|}	tjj
|j|||}
t|tr
tj|	tjj
|	|jftj|	|
dS)NrPrrS)rrrTr	rrrrrr"rwrrrrr)rrrZold_subpathZtemp_keyZtemp_subpathZdominant_subpathrrZtmp_pathnew_pathrrrr#Us"	 
	zMaildir.__setitem__cCs|j|}ttjj|j|d.}|jrN|j|}nt|}WdQRXtjj|\}}|j	||j
|kr|j|j|j
d|jtjj
tjj|j||S)NrbrPrS)ropenrrrwrrr	r
set_subdirrset_infoset_dategetmtime)rrsubpathfmsgrrrrrr'ps$	
+zMaildir.get_messagec
CsNttjj|j|j|d}|jjtdSWdQRXdS)Nrs
)	rrrrwrrrMr[r\)rrrrrrr.s-zMaildir.get_bytescCs4ttjj|j|j|d}t|S)Nr)rrrrwrr
_ProxyFile)rrrrrrr*s*zMaildir.get_fileccsP|jx?|jD]4}y|j|Wntk
rBwYnX|VqWdS)N)_refreshr|rr!)rrrrrr1s

zMaildir.iterkeyscCs|j||jkS)N)rr|)rrrrrr:s
zMaildir.__contains__cCs|jt|jS)N)rlenr|)rrrrr;s
zMaildir.__len__cCsdS)Nr)rrrrrDsz
Maildir.flushcCsdS)Nr)rrrrrEszMaildir.lockcCsdS)Nr)rrrrrFszMaildir.unlockcCsdS)Nr)rrrrrGsz
Maildir.closecCsg}xwtj|jD]c}t|dkr|ddkrtjjtjj|j|r|j|ddqW|S)NrPr.)rlistdirrrrisdirrwappend)rr=entryrrrlist_folderss"$zMaildir.list_folderscCs/ttjj|jd|d|jddS)NrrrF)rrrrwrr)rfolderrrr
get_folders	zMaildir.get_foldercCstjj|jd|}t|d|j}tjj|d}tjj|s~tjtj|tj	tj
Bd|S)NrrZ
maildirfolderi)rrrwrrrryrGrO_CREATO_WRONLY)rrrr=Zmaildirfolder_pathrrr
add_folders
zMaildir.add_foldercCstjj|jd|}xttjtjj|dtjtjj|dD]8}t|dks|ddkrWtd|qWWxrtj|D]a}|dkr|dkr|dkrtjjtjj||rtd||fqWxtj|d	d
D]i\}}}x*|D]"}tj	tjj||q4Wx*|D]"}tj
tjj||qaWqWtj
|dS)NrrurvrPrzFolder contains message(s): %srtz%Folder contains subdirectory '%s': %stopdownF)rrrwrrr
NotEmptyErrorrwalkrrmdir)rrrrrootdirsfilesrrr
remove_folders #"$!%
 
$zMaildir.remove_foldercCstj}xmtjtjj|jdD]J}tjj|jd|}|tjj|dkr.tj|q.WdS)Nrti@)timerrrrwrrr)rnowrrrrrcleans
(z
Maildir.cleanrPcCstj}tj}d|kr6|jdd}d|krT|jdd}dt|t|ddtjtj|f}tj	j
|jd|}ytj|WnDt
k
rtjd7_yt|SWntk
rYnXYnXtd	|dS)
N/z\057rsz\072z%s.M%sP%sQ%s.%srPg.Artz&Name clash prevented file creation: %s)rsocketgethostnamer[intrgetpidr_countrrwrstatr_create_carefullyFileExistsErrorr)rrhostnamerrrrrrs&&


zMaildir._create_tmpcCs6tj|jd|jkrd}xP|jD]E}tjj|j|}||j|krhd}||j|<q0W|sdSi|_x|jD]}|j|}xstj	|D]b}tjj
||}tjj|rq|j|j
d}tjj
|||j|<qWqWtj|_dS)NrOFTr)rr~rr}rrrrxr|rrwrrr)rZrefreshrmtimerrprrrrrs& 	
$zMaildir._refreshcCsy:tjjtjj|j|j|r9|j|SWntk
rNYnX|jy|j|SWn"tk
rtd|YnXdS)NzNo message with key: %s)rrryrwrr|r!r)rrrrrr!s+


zMaildir._lookupcCskt|ds|j|_xFy|t|jSWq!tk
rNdSYq!tk
rbw!Yq!Xq!WdS)N
_onetime_keys)r@r1rnext
StopIterationr!)rrrrr/s

zMaildir.next)rprqrrrrrrr"r#r'r.r*r1r:r;rDrErFrGrrrrrrrrrrrrrrrs4)
	
$c@seZdZddddZddZddZd	d
ZddZd
dZddZ	ddZ
ddZddZddZ
ddZddZddZddd Zd!d"ZdS)#_singlefileMailboxNTcCs	tj||||yt|jd}Wntk
r}zw|jtjkr|rnt|jd}qt|jn3|jtjtj	fkrt|jd}nWYdd}~XnX||_
d|_d|_d|_
d|_d|_d|_dS)Nzrb+zwb+rrF)rrrrrrENOENTr{EACCESEROFS_filer|	_next_key_pending
_pending_sync_locked_file_length)rrrrrrrrrr?s$						z_singlefileMailbox.__init__cCsF|j|j||j|j<|jd7_d|_|jdS)NrPT)r_append_messager|rr)rrrrrrVs

	z_singlefileMailbox.addcCs$|j||j|=d|_dS)NT)rr|r)rrrrrr`s

z_singlefileMailbox.removecCs0|j||j||j|<d|_dS)NT)rrr|r)rrrrrrr#fs
z_singlefileMailbox.__setitem__ccs |j|jjEdHdS)N)rr|r3)rrrrr1ls
z_singlefileMailbox.iterkeyscCs|j||jkS)N)rr|)rrrrrr:qs
z_singlefileMailbox.__contains__cCs|jt|jS)N)rrr|)rrrrr;vs
z_singlefileMailbox.__len__cCs#|jst|jd|_dS)NT)r
_lock_filer)rrrrrE{s	
z_singlefileMailbox.lockcCs#|jrt|jd|_dS)NF)r_unlock_filer)rrrrrFs	
z_singlefileMailbox.unlockc
Csy|js,|jr(t|jd|_dS|jjdd|jj}||jkrvtd|j|ft|j	}yi}|j
|xt|jj
D]}|j|\}}|jj||j||j}x@|jjtd||jj}|s%P|j|qW||jf||<|j|qW|j|_Wn%|jtj|jYnXt||jjtj|j	j}	tj|j|	ytj|j|j	Wn8tk
r(tj|j	tj|j|j	YnXt|j	d|_||_d|_d|_|jrut|jdddS)NFrrOz4Size of mailbox file changed (expected %i, found %i)izrb+dotlock) rr_sync_flushrrZtellrr_create_temporaryr_pre_mailbox_hooksortedr|r3_pre_message_hookrMminr]_post_message_hookrGrrrrrst_modechmodrrrrr)
rcur_lenZnew_fileZnew_tocrstartstopZ	new_startrNmoderrrrDs^		
		





				z_singlefileMailbox.flushcCsdS)Nr)rrrrrrsz$_singlefileMailbox._pre_mailbox_hookcCsdS)Nr)rrrrrrsz$_singlefileMailbox._pre_message_hookcCsdS)Nr)rrrrrrsz%_singlefileMailbox._post_message_hookcCs>z|jWdz|jr'|jWd|jjXXdS)N)rDrrFrrG)rrrrrGs	z_singlefileMailbox.closecCs]|jdkr|j|dk	rYy|j|SWn"tk
rXtd|YnXdS)NzNo message with key: %s)r|
_generate_tocr!)rrrrrrs

z_singlefileMailbox._lookupcCs|jjdd|jj}t|jdkrQ|jrQ|j|jy3|j|j|j|}|j	|jWn%t
k
r|jj|YnX|jj|jj|_
|S)NrrO)rrZrrr|rrr_install_messagerrtruncaterDr)rrZbeforeZoffsetsrrrrs

z"_singlefileMailbox._append_message)rprqrrrrrr#r1r:r;rErFrDrrrrGrrrrrrr<s 
@
rc@s[eZdZdZddZdddZdddZdd	d
ZddZd
S)	_mboxMMDFTcCs|j|\}}|jj||jjjtd}|jj||jj}|j|jtd}|j	|ddj
d|S)Ns
rQr)rrrZrgr[r\rMr_message_factoryset_fromdecode)rrrr	from_linestringrrrrr's z_mboxMMDF.get_messageFcCs"tj|j|jd|S)Nunixfrom)r,r-r.r/)rrfrom_rrrr0sz_mboxMMDF.get_stringcCsg|j|\}}|jj||s8|jj|jj||jj}|jtdS)Ns
)rrrZrgrMrr[r\)rrrrrrrrrr.s
z_mboxMMDF.get_bytescCsT|j|\}}|jj||s8|jjt|j|jj|S)N)rrrZrg_PartialFiler)rrrrrrrrr*s

z_mboxMMDF.get_filecCsd}t|tr$|j|}t|tr|jdr|jd}|dkr|d|}||dd}q|}d}nmt|tr|jjd}d|}n<t|t	j
jr|j}|dk	r|jd}|dkr+dt
jt
jj}|jj}|jj|t|j||j|j|jj}||fS)NsFrom s
rPrrsFrom MAILER-DAEMON rS)rTr`rKrarhfind_mboxMMDFMessageget_fromrHr,rrget_unixfromrasctimegmtimerrr]r\ro
_mangle_from_)rrrnewlineZauthorrrrrrr$s0	
z_mboxMMDF._install_messageN)	rprqrrrr'r0r.r*rrrrrrs
	rc@sFeZdZdZdZddddZddZddZdS)	rTNcCs#t|_tj||||dS)N)r
rrr)rrrrrrrrJs	z
mbox.__init__cCs|jtdS)N)r]r\)rrrrrrOszmbox._post_message_hookcCsJgg}}d}|jjdx|jj}|jj}|jdrt|t|kr|r|j|ttn
|j||j|d}q&|s|r|j|ttn
|j|Pq&|tkrd}q&d}q&Wtt	t
|||_t|j|_|jj|_
dS)NFrsFrom T)rrZrrgrhrrr\dict	enumeratezipr|rr)rstartsstopsZlast_was_emptyline_posrnrrrrSs0


	
	
zmbox._generate_toc)rprqrrrr^rrrrrrrrAs
c@sFeZdZddddZddZddZd	d
ZdS)rNTcCs#t|_tj||||dS)N)r
rrr)rrrrrrrrxs	z
MMDF.__init__cCs|jdtdS)Ns)r]r\)rrrrrr}szMMDF._pre_message_hookcCs|jtdtdS)Ns)r]r\)rrrrrrszMMDF._post_message_hookcCs;gg}}|jjdd}x|}|jj}|jj}|jdtr|j|xq|}|jj}|jj}|dtkr|j|ttPqm|sm|j|PqmWq&|s&Pq&Wtt	t
|||_t|j|_|jjdd|jj|_
dS)NrsrO)rrZrgrrhr\rrrrrr|rr)rrrnext_posrrnrrrrs2


zMMDF._generate_toc)rprqrrrrrrrrrrrusc@seZdZddddZddZddZd	d
ZddZd
dZddZ	ddZ
ddZddZddZ
ddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.ZdS)/rNTcCstj||||tjj|js|rtj|jdtjtjtjj	|jdtj
tjBtjBdnt
|jd|_dS)Niz
.mh_sequencesiF)rrrrryrrzrGrrwrO_EXCLrr{r)rrrrrrrrs!!zMH.__init__cCs,|j}t|dkr'd}nt|d}tjj|jt|}t|}d}z|j	r}t
|zy|j||WnEtk
r|j	rt
|t|d}tj|YnXt|tr|j||Wd|j	rt
|XWd|s't|X|S)NrrPFT)r3rmaxrrrwrr`rrrrorrrrrTr_dump_sequences)rrr3Znew_keyrrclosedrrrrs6		

	


	zMH.addcCstjj|jt|}yt|d}WnMtk
r}z-|jtjkrkt	d|nWYdd}~XnX|j
tj|dS)Nzrb+zNo message with key: %s)rrrwrr`rrrrr!rGr)rrrrrrrrrs
z	MH.removecCstjj|jt|}yt|d}WnMtk
r}z-|jtjkrkt	d|nWYdd}~XnXz|j
rt|zVtjtj|tj
tjB|j||t|tr|j||Wd|j
rt|XWdt|XdS)Nzrb+zNo message with key: %s)rrrwrr`rrrrr!rrrGrO_TRUNCrorTrrrr)rrrrrrrrrr#s$	
#	zMH.__setitem__c Cs6y^|jr6ttjj|jt|d}n'ttjj|jt|d}WnMtk
r}z-|jtj	krt
d|nWYdd}~XnX|?|jrt|zt|}Wd|jrt
|XWdQRXx9|jjD]%\}}||kr	|j|q	W|S)Nzrb+rzNo message with key: %s)rrrrrwrr`rrrr!rrr
get_sequencesr9add_sequence)rrrrrrkey_listrrrr's&	*+	
	zMH.get_messagec Csy^|jr6ttjj|jt|d}n'ttjj|jt|d}WnMtk
r}z-|jtj	krt
d|nWYdd}~XnX|I|jrt|z|jj
tdSWd|jrt|XWdQRXdS)Nzrb+rzNo message with key: %ss
)rrrrrwrr`rrrr!rrMr[r\r)rrrrrrrr.s	*+	
	zMH.get_bytescCsy+ttjj|jt|d}WnMtk
rz}z-|jtjkret	d|nWYdd}~XnXt
|S)NrzNo message with key: %s)rrrrwrr`rrrr!r)rrrrrrrr*'s+zMH.get_filecCs)ttddtj|jDS)Ncss'|]}|jrt|VqdS)N)isdigitr).0rrrr	<genexpr>4szMH.iterkeys.<locals>.<genexpr>)iterrrrr)rrrrr12szMH.iterkeyscCs(tjjtjj|jt|S)N)rrryrwrr`)rrrrrr:7szMH.__contains__cCstt|jS)N)rr2r1)rrrrr;;sz
MH.__len__cCsG|jsCttjj|jdd|_t|jd|_dS)Nz
.mh_sequenceszrb+T)rrrrrwrrr)rrrrrE?s	$
zMH.lockcCs6|jr2t|jt|j|`d|_dS)NF)rrrr)rrrrrFFs
	

z	MH.unlockcCsdS)Nr)rrrrrDNszMH.flushcCs|jr|jdS)N)rrF)rrrrrGRs	zMH.closecCsXg}xKtj|jD]7}tjjtjj|j|r|j|qW|S)N)rrrrrrwr)rr=rrrrrWs
$zMH.list_folderscCs+ttjj|j|d|jddS)NrrF)rrrrwrr)rrrrrr_sz
MH.get_foldercCs%ttjj|j|d|jS)Nr)rrrrwrr)rrrrrrdsz
MH.add_foldercCstjj|j|}tj|}|dgkrUtjtjj|dn"|gkrdntd|jtj|dS)Nz
.mh_sequenceszFolder not empty: %s)rrrwrrrrr)rrrentriesrrrriszMH.remove_folderc
s`i}ttjj|jdddd,}t|jx|D]}y|jd\}}t}xr|jD]d}|jr|j	t
|q}dd|jdD\}}	|jt||	d	q}Wfd
dt
|D||<t||dkr%||=WqItk
rPtd
|jYqIXqIWWdQRX|S)Nz
.mh_sequencesrencodingASCIIrscss|]}t|VqdS)N)r)rxrrrrsz#MH.get_sequences.<locals>.<genexpr>-rPcs"g|]}|kr|qSrr)rr)all_keysrr
<listcomp>s	z$MH.get_sequences.<locals>.<listcomp>rz"Invalid sequence specification: %s)rrrrwrsetr3rr
rrrCrangerrrJFormatErrorrstrip)
rresultsrrnrcontentsr3specrrr)rrr
us&*
	"#
 zMH.get_sequencescCsettjj|jdddd}z,tjtj|jtjtjBx|j	D]\}}t
|dkr~q]|j|dd}d}xtt
|D]o}|d|kr|sd	}|jd
n7|rd}|jd||fn|jd||}qW|rA|jt|d
q]|jd
q]WWdt|XdS)Nz
.mh_sequenceszr+rrrrsFrPTrz%s %sz %s
)rrrrwrrGrrr	r9rr]rrr`r)r	sequencesrrr3prevZ
completingrrrr
set_sequencess.'&
zMH.set_sequencesc	Cs|j}d}g}x|jD]}|d|kr|j||dfttdrtjtjj|jt	|tjj|jt	|dtj
tjj|jt	|nDtjtjj|jt	|tjj|jt	|d|d7}q%W|d|_t
|dkrBdSxP|jD]B\}}x3|D]+\}}||krb|||j|<qbWqOW|j|dS)NrrPr)r
r1rr@rrrrwrr`unlinkrrrr9indexr#)	rr!r"Zchangesrrroldrurrrpacks*!#(!#
zMH.packcCs|j}|j}xR|jD]D\}}||krM|j|q%||kr%||j|=q%Wx'|D]}||krt|g||<qtW|j|dS)N)r
r9rr%r#)rrrZpending_sequencesZ
all_sequencesrrsequencerrrrs
zMH._dump_sequences)rprqrrrrrr#r'r.r*r1r:r;rErFrDrGrrrrr
r#r'rrrrrrs,"c@seZdZedddddddhZdd	d
dZdd
ZddZddZddZ	ddZ
ddZddZddZ
ddZddZd d!Zd"d#ZdS)$runseendeletedZfiledanswered	forwardedZeditedresentNTcCs#tj||||i|_dS)N)rr_labels)rrrrrrrrszBabyl.__init__cCs8tj||}t|tr4|j|j|<|S)N)rrrTr
get_labelsr.)rrrrrrrsz	Babyl.addcCs-tj||||jkr)|j|=dS)N)rrr.)rrrrrrszBabyl.removecCs9tj|||t|tr5|j|j|<dS)N)rr#rTrr/r.)rrrrrrr#szBabyl.__setitem__c
Cs[|j|\}}|jj||jjtj}xD|jj}|dtksg|rhP|j|jtdqAWtj}x@|jj}|tks|rP|j|jtdqW||jj	}|jj
|}|jtd}t|j|}	|	j
|j||jkrW|	j|j||	S)Ns*** EOOH ***s
)rrrZrgrUrVr\r]r[rrMrrfset_visibler.
set_labels)
rrrroriginal_headersrnZvisible_headersnZbodyrrrrr's.
zBabyl.get_messagec	Cs|j|\}}|jj||jjtj}xD|jj}|dtksg|rhP|j|jtdqAWx'|jj}|tks|rPqW|j	}||jj
}|jj|}|jtd}||S)Ns*** EOOH ***s
)rrrZrgrUrVr\r]r[rfrrM)	rrrrr2rnZheadersr3rmrrrr.s$
zBabyl.get_bytescCs"tj|j|jdtS)Ns
)rUrVr.r[r\)rrrrrr*"szBabyl.get_filecCsT|jt}x$|jjD]}|j|q#W|j|jt|S)N)rrr.r7rCdifference_update_special_labelsr2)rlabelsZ
label_listrrrr/&s
	zBabyl.get_labelscCsgg}}|jjdd}g}x|}|jj}|jj}|dtkrt|t|kr|j|tt|j|dd|jjddjdD}|j|q,|dks|dtkr)t|t|krG|j|ttq,|s,|j|ttPq,Wtt	t
|||_tt	||_t|j|_
|jjdd|jj|_dS)	NrscSs(g|]}|jr|jqSr)strip)rlabelrrrr=s	z'Babyl._generate_toc.<locals>.<listcomp>rP,srO)rrZrgrr\rrrrrrr|r.rr)rrrrZlabel_listsrrnr6rrrr/s4

	&zBabyl._generate_toccCsmdt}|dt7}|j}dd|D}|ddj|t7}|d7}|j|dS)NsBABYL OPTIONS:s
Version: 5css|]}|jVqdS)N)rH)rr8rrrrRsz*Babyl._pre_mailbox_hook.<locals>.<genexpr>sLabels:r9s)r\r/rwr])rrZbabylr6rrrrMs

zBabyl._pre_mailbox_hookcCs|jdtdS)Ns)r]r\)rrrrrrWszBabyl._pre_message_hookcCs|jtddS)Ns)r]r\)rrrrrr[szBabyl._post_message_hookcCs|jj}t|trg}g}x@|jD]2}||jkr\|j|q7|j|q7W|jjdx(|D] }|jjd|jqW|jjdx,|D]$}|jjd|jdqW|jjt	n|jjdt	t|t
jjrt
j}t
jj|dd}|j||jdx@|j}|jj|jd	t	|d	ks|rdPqdW|jjd
t	t|trDt
j}	t
jj|	dd}
|
j|jx|	j}|jj|jd	t	|d	ks<|rPqWnP|jdx@|j}|jj|jd	t	|d	ks|rTPqTWx@|jd}|sP|jj|jd	t	qWnt|ttt
jfrt|t
jrtjdtd
|j}t|tr:|j|}|jdd}|ddkr|jj|d|jd	t	|jjd
t	|jj|d|jd	t	|jj||djd	t	q|jjd
t	t	|jj|jd	t	nt |drt |drWtjdtd
|j!}|j}
d}x|j}|j"dr|ddd	}n#|j"dr|ddd	}|jj|jd	t	|d	ks|rl|r d}|jjd
t	|j|
qlPqlWx|j}|s;P|j"dra|ddt	}nI|j"dr|ddt	}n#|j"d	r|ddt	}|jj|q(Wnt#dt$||jj}||fS)N1s, s,, r9s1,,Frs
s*** EOOH ***iz8Use of StringIO input is deprecated, use BytesIO insteadrLs

rOrPrgrNzDUse of text mode files is deprecated, use a binary mode file insteadTs
s
zInvalid message type: %srSrRrSrRrSrS)%rrrTrr/r5rr]rHr\r,rrrUrVrWrXrYrZrgr[get_visiblerMrar`rbrcrdrerfrKrr@rNr_rirj)rrrZspecial_labelsr6r8Zorig_bufferZorig_generatorrnZ
vis_bufferZ
vis_generatorrNZ
body_startZoriginal_posZ
first_passrrrrr_s

"


#	
&&)	
	zBabyl._install_message)rprqrr	frozensetr5rrrr#r'r.r*r/rrrrrrrrrrs	
c@s7eZdZdddZddZddZdS)rNcCs)t|tjjrJ|jtj|t|tr%|j|nt|trr|jtj	|nt|t
r|jtj|nt|tj
r|jtj|n`t|dr|jtj|n8|dkrtjjj|ntdt|dS)NrMzInvalid message type: %s)rTr,rr_become_messagecopydeepcopy_explain_torar-r`Zmessage_from_stringrU
TextIOWrapperZmessage_from_filer@Zmessage_from_binary_filerrirj)rrrrrrszMessage.__init__cCsJt|dg}x1|jD]&}||kr|j||j|<qWdS)N_type_specific_attributes)getattr__dict__)rrZ
type_specificrrrrr>szMessage._become_messagecCs#t|trdStddS)Nz Cannot convert to specified type)rTrri)rrrrrrAszMessage._explain_to)rprqrrrr>rArrrrrsc@seZdZdddgZdddZddZd	d
ZddZd
dZddZ	ddZ
ddZddZddZ
ddZddZdS)r	_subdir_info_dateNcCs5d|_d|_tj|_tj||dS)Nrur)rFrGrrHrr)rrrrrrs		zMaildirMessage.__init__cCs|jS)N)rF)rrrrrszMaildirMessage.get_subdircCs8|dks|dkr$||_ntd|dS)Nrurvz!subdir must be 'new' or 'cur': %s)rFrJ)rrrrrrszMaildirMessage.set_subdircCs+|jjdr#|jddSdSdS)Nz2,rOr)rGrh)rrrr	get_flagsszMaildirMessage.get_flagscCs ddjt||_dS)Nz2,r)rwrrG)rflagsrrr	set_flagsszMaildirMessage.set_flagscCs0|jdjt|jt|BdS)Nr)rKrwrrI)rflagrrradd_flagszMaildirMessage.add_flagcCs<|jr8|jdjt|jt|dS)Nr)rIrKrwr)rrLrrrremove_flagszMaildirMessage.remove_flagcCs|jS)N)rH)rrrrrszMaildirMessage.get_datecCs<yt||_Wn"tk
r7td|YnXdS)Nzcan't convert to float: %s)floatrHrJri)rZdaterrrrs
zMaildirMessage.set_datecCs|jS)N)rG)rrrrr&szMaildirMessage.get_infocCs5t|tr||_ntdt|dS)Nzinfo must be a string: %s)rTr`rGrirj)rinforrrr*szMaildirMessage.set_infocCs4t|trK|j|j|j|j|j|jnt|trt	|j}d|kr|j
d|jdkr|j
dd|kr|j
dd|kr|j
dd|kr|j
d|jd	tj
|jnt|trt	|j}d|krK|jd
d|krd|jdd|kr0|jdnt|trt	|j}d|kr|jd
d|kr|jd
d|kr|jdd|kr0|jdn(t|trntdt|dS)NSRrvOTDFAz
MAILER-DAEMONr)repliedflaggedr*r+Pr,z$Cannot convert to specified type: %s)rTr	rKrIrrrrrrrMrrrrrr	add_labelrrirj)rrrJrrrrA1sN




"




zMaildirMessage._explain_to)rprqrrrCrrrrIrKrMrNrrrrrArrrrr	sc@seZdZdgZdddZddZdddZd	d
ZddZd
dZ	ddZ
ddZdS)r_fromNcCsw|jddt|tjjrc|j}|dk	rc|jdrc|j|ddtj||dS)Nz
MAILER-DAEMONTzFrom rQ)rrTr,rrrrhr)rrrrrrrbsz_mboxMMDFMessage.__init__cCs|jS)N)r\)rrrrrksz_mboxMMDFMessage.get_fromcCsH|dk	r;|dkr$tj}|dtj|7}||_dS)NT )rrrr\)rrZtime_rrrros
z_mboxMMDFMessage.set_fromcCs |jdd|jddS)NStatusrzX-Status)r&)rrrrrIwsz_mboxMMDFMessage.get_flagscCst|}d	\}}x1d
D])}||kr||7}|j|qWx1dD])}||krS||7}|j|qSW|djt|7}y|jd|Wn"tk
r|jd|YnXy|jd|Wn"tk
r
|jd|YnXdS)NrrRrSrUrVrWr^zX-Status)rr)rRrS)rUrVrW)rrrwrreplace_headerr!Z
add_header)rrJZstatus_flagsZ
xstatus_flagsrLrrrrK{s&





z_mboxMMDFMessage.set_flagscCs0|jdjt|jt|BdS)Nr)rKrwrrI)rrLrrrrMsz_mboxMMDFMessage.add_flagcCsHd|ksd|krD|jdjt|jt|dS)Nr^zX-Statusr)rKrwrrI)rrLrrrrNsz_mboxMMDFMessage.remove_flagcCsst|trt|j}d|kr:|jdd|krS|jdd|krl|jdd|kr|jdd|kr|jd|d	=|d
=dj|jjdd}y&|j	t
jtj
|d
Wqottfk
rYqoXnZt|trM|j|j|j|jn"t|trt|j}d|kr|jdd|kr|jdd|kr|jd|d	=|d
=nt|trGt|j}d|kr|jdd|kr|jdd|kr6|jd|d	=|d
=n(t|trYntdt|dS)NrSrvrVrWrRrQrUrTstatuszx-statusr]rQz%a %b %d %H:%M:%S %Yr)rXrYr*r+z$Cannot convert to specified type: %s)rTr	rrIrrMrwrrrcalendarZtimegmrstrptimerJ
OverflowErrorrrKrrrrr[rrirj)rrrJZ
maybe_daterrrrAs^




%







z_mboxMMDFMessage._explain_to)rprqrrrCrrrrIrKrMrNrArrrrr]s		rc@seZdZdS)r
N)rprqrrrrrrr
sc@sdeZdZdgZdddZddZddZd	d
ZddZd
dZ	dS)r
_sequencesNcCsg|_tj||dS)N)rerr)rrrrrrs	zMHMessage.__init__cCs|jddS)N)re)rrrrr
szMHMessage.get_sequencescCst||_dS)N)r2re)rr!rrrr#szMHMessage.set_sequencescCsKt|tr1||jkrG|jj|ntdt|dS)Nzsequence type must be str: %s)rTr`rerrirj)rr(rrrrszMHMessage.add_sequencecCs-y|jj|Wntk
r(YnXdS)N)rerrJ)rr(rrrremove_sequences
zMHMessage.remove_sequencecCst|trt|j}d|kr=|jdn|jd|jdd|krp|jdd|kr|jdn3t|trt|j}d|kr|jdn
|jd	d|kr|jdd|kr|jd
nt|trAx|jD]}|j|q'Wn~t|t	rt|j}d|kr{|j
dd|kr|j
dn(t|trntdt
|dS)
Nr)rvrQrYrVrXrRROrSrWr+z$Cannot convert to specified type: %s)rTr	rr
rrMrrrrr[rrirj)rrr!r(rrrrAs@





zMHMessage._explain_to)
rprqrrrCrr
r#rrfrArrrrrs	c@seZdZddgZdddZddZdd	Zd
dZdd
ZddZ	ddZ
ddZddZdS)rr._visibleNcCs)g|_t|_tj||dS)N)r.rrhr)rrrrrrs	zBabylMessage.__init__cCs|jddS)N)r.)rrrrr/%szBabylMessage.get_labelscCst||_dS)N)r2r.)rr6rrrr1)szBabylMessage.set_labelscCsKt|tr1||jkrG|jj|ntdt|dS)Nzlabel must be a string: %s)rTr`r.rrirj)rr8rrrr[-szBabylMessage.add_labelcCs-y|jj|Wntk
r(YnXdS)N)r.rrJ)rr8rrrremove_label5s
zBabylMessage.remove_labelcCs
t|jS)N)rrh)rrrrr<<szBabylMessage.get_visiblecCst||_dS)N)rrh)rZvisiblerrrr0@szBabylMessage.set_visiblecCsxG|jjD]6}||kr<|jj|||q|j|=qWx:dD]2}||krQ||jkrQ|||j|<qQWdS)NDateFromReply-ToToCCSubject)rjrkrlrmrnro)rhr3r_)rheaderrrrupdate_visibleDs
zBabylMessage.update_visiblecCst|trt|j}d|kr=|jdn|jd|jdd|ksod|kr||jdd|kr|jdd	|kr|jd
nFt|tr0t|j}d|kr|jdn
|jdd	|kr|jd
d|kr|jdnt|trt|j}d|krj|jdd|kr|jdnqt|t	r|j
|jxL|jD]}|j|qWn(t|t
rntdt|dS)Nr)rvrQr,r-rZr+rRr*rTrgrSrUrWrXz$Cannot convert to specified type: %s)rTr	rr/rrMrrrrr0r<r[rrirj)rrr6r8rrrrAOsF






zBabylMessage._explain_to)
rprqrrrCrr/r1r[rir<r0rqrArrrrrsc@seZdZdS)r
N)rprqrrrrrrr
ysc@seZdZdddZdddZdddZddd	Zdd
dZdd
ZddZ	dddZ
ddZddZddZ
ddZddZddZdd Zd!d"Zed#d$ZdS)%rNcCs4||_|dkr'|j|_n	||_dS)N)rr_pos)rrposrrrrs	z_ProxyFile.__init__cCs|j||jjS)N)_readrrM)rsizerrrrMsz_ProxyFile.readcCs|j||jjS)N)rtrread1)rrurrrrvsz_ProxyFile.read1cCs|j||jjS)N)rtrrg)rrurrrrgsz_ProxyFile.readlinecCsQg}xD|D]<}|j||dk	r
|t|8}|dkr
Pq
W|S)Nr)rr)rsizehintr=rnrrr	readliness

z_ProxyFile.readlinesccs&x|j}|sdS|VqWdS)N)rg)rrnrrrr6s
z_ProxyFile.__iter__cCs|jS)N)rr)rrrrrsz_ProxyFile.tellrcCsH|dkr|jj|j|jj|||jj|_dS)NrP)rrZrrr)roffsetwhencerrrrZsz_ProxyFile.seekc
Cs@t|dr<z#t|jdr1|jjWd|`XdS)NrrG)r@rrG)rrrrrGs
z_ProxyFile.closecCsG|dkrd}|jj|j||}|jj|_|S)NrPrS)rrZrrr)rruread_methodr=rrrrtsz_ProxyFile._readcCs|S)Nr)rrrr	__enter__sz_ProxyFile.__enter__cGs|jdS)N)rG)rexcrrr__exit__sz_ProxyFile.__exit__cCs
|jjS)N)rreadable)rrrrrsz_ProxyFile.readablecCs
|jjS)N)rwritable)rrrrrsz_ProxyFile.writablecCs
|jjS)N)rseekable)rrrrrsz_ProxyFile.seekablecCs
|jjS)N)rrD)rrrrrDsz_ProxyFile.flushcCs3t|dsdSt|jds)dS|jjS)NrTrF)r@rr)rrrrrs
z_ProxyFile.closed)rprqrrrrMrvrgrxr6rrZrGrtr|r~rrrrDpropertyrrrrrr}s"		rc@sUeZdZddddZddZdddZd	d
ZddZdS)
rNcCs)tj|||||_||_dS)N)rr_start_stop)rrrrrrrrs	z_PartialFile.__init__cCstj||jS)N)rrr)rrrrrsz_PartialFile.tellrcCsV|dkr!|j|_d}n|dkr?|j|_d}tj|||dS)NrrPrO)rrrrrrZ)rryrzrrrrZs	z_PartialFile.seekcCs]|j|j}|dkr dS|dksD|dksD||krJ|}tj|||S)Nrr)rrrrrt)rrur{	remainingrrrrts$z_PartialFile._readcCst|dr|`dS)Nr)r@r)rrrrrGsz_PartialFile.close)rprqrrrrrZrtrGrrrrrs

	rTc-Csd}ytrytj|tjtjBWn_tk
r}z?|jtjtjtjfkryt	d|j
nWYdd}~XnX|ry!t|j
d}|jWnGtk
r}z'|jtjtjfkrdSWYdd}~XnXyft
tdrEtj|j
|j
dd}tj|j
n tj|j
|j
dd}Wn5tk
rtj|j
t	d|j
YnXWn>trtj|tj|rtj|j
dYnXdS)NFzlockf: lock unavailable: %sz.lockrTzdot lock unavailable: %s)fcntllockfZLOCK_EXZLOCK_NBrrEAGAINrrrrrrGr@rrr$rrrLOCK_UN)rrZdotlock_donerZpre_lockrrrrsF!

rcCsJtrtj|tjtjj|jdrFtj|jddS)Nz.lock)rrrrrryrr)rrrrr0srcCsLtj|tjtjBtjBd}zt|dSWdtj|XdS)Nizrb+)rrrrO_RDWRrG)rfdrrrr7s&rcCs2td|ttjtjtjfS)Nz%s.%s.%s.%s)rrrrrrr)rrrrr?s	rcCs0|jttdr,tj|jdS)Nfsync)rDr@rrfileno)rrrrrEs
rcCst||jdS)N)rrG)rrrrrKs
rc@seZdZdS)ErrorN)rprqrrrrrrrQsrc@seZdZdS)r{N)rprqrrrrrrr{Tsr{c@seZdZdS)rN)rprqrrrrrrrWsrc@seZdZdS)rN)rprqrrrrrrrZsrc@seZdZdS)rN)rprqrrrrrrr]sr)/rrrbrrr?rcr,Z
email.messageZemail.generatorrUr(rImportError__all__r\rHrrrrrrrrrrr	rr
rrr
rrrrrrrr	Exceptionrr{rrrrrrr<module>	sb
6B4-1%mqH_c')
Back to Directory File Manager