�`^c@s�dZddlZddlZddlZddlmZmZe��ejrfedde�nddl Z WdQXddlm
Z
e
ddd �d
ddd
ddgZd
e jfd��YZyddl
Z
Wnek
r�ddlZ
nXe
j�Z[
dad�Zdad�Zd�Zd�ZdZied6ed6ed6ed6dd6dd6Zidd6dd6dd6dd6d d6d!d6Zd"�Zd#�Zd$�Zd%�ZdS(&s<Various tools used by MIME-reading or MIME-writing programs.i�N(tfilterwarningstcatch_warningstignores.*rfc822 has been removed(twarnpy3ks@in 3.x, mimetools has been removed in favor of the email packaget
stacklevelitMessagetchoose_boundarytencodetdecodetcopyliteralt
copybinarycBskeZdZdd�Zd�Zd�Zd�Zd�Zd�Zd�Z d �Z
d
�Zd�ZRS(s�A derived class of rfc822.Message that knows about MIME headers and
contains some hooks for decoding encoded and multipart messages.icCsRtjj|||�|jd�|_|jd�|_|j�|j�dS(Nscontent-transfer-encodingscontent-type(trfc822Rt__init__t getheadertencodingheadert
typeheadert parsetypet
parseplist(tselftfptseekable((s/sys/lib/python2.7/mimetools.pyRs
cCs�|j}|dkrd}nd|krS|jd�}|||_|| }n d|_|jd�}x4tt|��D] }||j�j�||<q~Wdj |�|_
|d|_dj |d�|_dS(Ns
text/plaint;tt/ii(
RtNonetindext plisttexttsplittrangetlentstriptlowertjointtypetmaintypetsubtype(Rtstrtitfields((s/sys/lib/python2.7/mimetools.pyR!s
cCs�|j}g|_x�|d dkr�|d}d|krM|jd�}nt|�}|| }d|kr�|jd�}|| j�j�d||dj�}n|jj|j��||}qWdS(NiRt=(RtplistRRRRtappend(RR$tendtfR%((s/sys/lib/python2.7/mimetools.pyR2s
/cCs|jS(N(R((R((s/sys/lib/python2.7/mimetools.pytgetplistDscCsU|j�d}t|�}x2|jD]'}|| |kr&tj||�Sq&WdS(NR'(RRR(RtunquoteR(Rtnametntp((s/sys/lib/python2.7/mimetools.pytgetparamGscCsSg}xF|jD];}|jd�}|dkr|j|| j��qqW|S(NR'i(R(tfindR)R(RtresultR0R%((s/sys/lib/python2.7/mimetools.pyt
getparamnamesOscCs |jdkrdS|jj�S(Nt7bit(RRR(R((s/sys/lib/python2.7/mimetools.pytgetencodingWscCs|jS(N(R!(R((s/sys/lib/python2.7/mimetools.pytgettype\scCs|jS(N(R"(R((s/sys/lib/python2.7/mimetools.pytgetmaintype_scCs|jS(N(R#(R((s/sys/lib/python2.7/mimetools.pyt
getsubtypebs(
t__name__t
__module__t__doc__RRRR,R1R4R6R7R8R9(((s/sys/lib/python2.7/mimetools.pyRs icCs(tj�td7at}tj�|S(Ni(t
_counter_locktacquiret_countertrelease(R3((s/sys/lib/python2.7/mimetools.pyt_get_next_counterss
cCs�ddl}tdkr�ddl}y|j|j��}Wn|jk
rYd}nXyttj ��}Wnt
k
r�d}nXyttj��}Wnt
k
r�d}nX|d|d|andt|j�t�fS(sxReturn a string usable as a multipart boundary.
The string chosen is unique within a single program run, and
incorporates the user id (if available), process id (if available),
and current time. So it's very unlikely the returned string appears
in message text, but there's no guarantee.
The boundary contains dots so you have to quote it in the header.i�Ns 127.0.0.1t1t.s
%s.%.3f.%d(
ttimet_prefixRtsockett
gethostbynametgethostnametgaierrortreprtostgetuidtAttributeErrortgetpidRA(RDRFthostidtuidtpid((s/sys/lib/python2.7/mimetools.pyR}s"
cCs�|dkr(ddl}|j||�S|dkrPddl}|j||�S|dkrxddl}|j||�S|d
kr�|j|j��S|tkr�t|t||�n
td|�dS(sDDecode common content-transfer-encodings (base64, quopri, uuencode).tbase64i�Nsquoted-printabletuuencodes
x-uuencodetuuesx-uueR5t8bits%unknown Content-Transfer-Encoding: %s(RSs
x-uuencodeRTsx-uue(s7bitRU( RRRtquoprituutwritetreadt decodetabtpipethrought
ValueError(tinputtoutputtencodingRRRVRW((s/sys/lib/python2.7/mimetools.pyR�scCs�|dkr(ddl}|j||�S|dkrSddl}|j||d�S|d
kr{ddl}|j||�S|dkr�|j|j��S|tkr�t|t||�n
td|�dS(sDEncode common content-transfer-encodings (base64, quopri, uuencode).RRi�Nsquoted-printableiRSs
x-uuencodeRTsx-uueR5RUs%unknown Content-Transfer-Encoding: %s(suuencodes
x-uuencodesuuesx-uue(s7bits8bit( RRRRVRWRXRYt encodetabR[R\(R]R^R_RRRVRW((s/sys/lib/python2.7/mimetools.pyR�ssa(
TEMP=/tmp/@uu.$$
sed "s%^begin [0-7][0-7]* .*%begin 600 $TEMP%" | uudecode
cat $TEMP
rm $TEMP
)RSs
x-uuencodeRTsx-uuesmmencode -u -qsquoted-printablesmmencode -u -bRRsuuencode tempfilesmmencode -qsmmencode -bcCs-tj|d�}t||�|j�dS(Ntw(RKtpopenR tclose(R]tcommandtpipe((s/sys/lib/python2.7/mimetools.pytpipeto�s
cCs}tj�\}}tj|d�}t||�|j�tj|d|d�}t||�|j�tj|�dS(NRas <tr( ttempfiletmkstempRKtfdopenR RcRbR
tunlink(R]RdR^tfdttempnamettempRe((s/sys/lib/python2.7/mimetools.pyR[�s
cCs-x&|j�}|sPn|j|�qdS(N(treadlineRX(R]R^tline((s/sys/lib/python2.7/mimetools.pyR �s
cCs6d}x)|j|�}|s"Pn|j|�q dS(Ni (RYRX(R]R^tBUFSIZERp((s/sys/lib/python2.7/mimetools.pyR
�s( R<RKtsysRhtwarningsRRtpy3kwarningtDeprecationWarningRRt__all__RtthreadtImportErrortdummy_threadt
allocate_lockR=R?RARRERRRt
uudecode_pipeRZR`RfR[R R
(((s/sys/lib/python2.7/mimetools.pyt<module>sZ
W
|