Files
PowerToys/PythonHome/Lib/email/_parseaddr.pyc

107 lines
14 KiB
Plaintext
Raw Normal View History

2014-07-09 18:15:23 +08:00
<03>
<EFBFBD>W`Sc@sddZddddgZddlZddlZdZdZd Zd
d d d dddddddddddddddddddd gZd!d"d#d$d%d&d'gZid(d)6d(d*6d(d+6d(d,6d-d.6d/d06d1d26d-d36d4d56d1d66d7d86d4d96d:d;6d7d<6Z d=<00>Z
d><00>Z d?<00>Z d@<00>Z dAfdB<00><00>YZdCefdD<00><00>YZdS(EscEmail address parsing code.
Lifted directly from rfc822.py. This should eventually be rewritten.
2014-07-10 23:57:08 +08:00
t mktime_tzt parsedatet parsedate_tztquotei<65><69><EFBFBD><EFBFBD>Nt ts, tjantfebtmartaprtmaytjuntjultaugtseptocttnovtdectjanuarytfebruarytmarchtapriltjunetjulytaugustt septembertoctobertnovembertdecembertmonttuetwedtthutfritsattsunitUTtUTCtGMTtZip<69><70><EFBFBD>tASTi<54><69><EFBFBD><EFBFBD>tADTi <0C><><EFBFBD>tESTtEDTi<54><69><EFBFBD><EFBFBD>tCSTtCDTiD<69><44><EFBFBD>tMSTtMDTi<54><69><EFBFBD><EFBFBD>tPSTtPDTc Cs|j<00>}|djd<00>s5|dj<00>tkr?|d=n8|djd<00>}|dkrw|d|d|d<nt|<00>dkr<>|djd<00>}t|<00>dkr<>||d}q<>nt|<00>dkr(|d}|jd<00>}|dkr|| ||dg|d)q(|jd<00>nt|<00>d kr>dS|d }|\}}}}}|j<00>}|t kr<>||j<00>}}|t kr<>dSnt j
2014-07-09 18:15:23 +08:00
|<00>d}|d
kr<>|d
8}n|d dkr<>|d }n|jd <00>}|dkr||}}n|d dkr,|d }n|dj <00>sL||}}n|d dkri|d }n|jd <00>}t|<00>d kr<>|\} }
d} n(t|<00>dkr<>|\} }
} ndSy@t |<00>}t |<00>}t | <00>} t |
<00>}
t | <00>} Wnt k
rdSX|dkrN|dkrA|d7}qN|d7}nd} |j<00>}|tkryt|} n$yt |<00>} Wnt k
r<>nX| r<>| dkr<>d } | } nd} | | dd| dd} n|||| |
| ddd | f
S(sQConvert a date string to a time tuple.
Accounts for military timezones.
it,iit-it+Rii i<><69><EFBFBD><EFBFBD>t:it0idiDili<>ii<N(tsplittendswithtlowert _daynamestrfindtlentfindtappendtNonet _monthnamestindextisdigittintt
ValueErrortuppert
2014-07-10 23:57:08 +08:00
_timezones(tdatatitstufftstddtmmtyyttmttztthhttmmttssttzoffsetttzsign((sEe:\github\Wox.JSONRPC\Output\Debug\PythonHome\lib\email\_parseaddr.pyR-s<> )
2014-07-09 18:15:23 +08:00
 
 
                         
!cCs+t|<00>}t|t<00>r#|d S|SdS(s&Convert a time string to a time tuple.i N(Rt
2014-07-10 23:57:08 +08:00
isinstancettuple(RGtt((sEe:\github\Wox.JSONRPC\Output\Debug\PythonHome\lib\email\_parseaddr.pyR<00>s cCsD|ddkr%tj|d d<17>Stj|<00>}||dSdS(sETurn a 10-tuple as returned by parsedate_tz() into a POSIX timestamp.i ii<><69><EFBFBD><EFBFBD>N(i<><69><EFBFBD><EFBFBD>(R?ttimetmktimetcalendarttimegm(RGRW((sEe:\github\Wox.JSONRPC\Output\Debug\PythonHome\lib\email\_parseaddr.pyR<00>scCs|jdd<00>jdd<00>S(s<>Prepare string to be used in a quoted string.
2014-07-09 18:15:23 +08:00
Turns backslash and double quote characters into quoted pairs. These
are the only characters that need to be quoted inside a quoted string.
Does not add the surrounding double quotes.
2014-07-10 23:57:08 +08:00
s\s\\t"s\"(treplace(tstr((sEe:\github\Wox.JSONRPC\Output\Debug\PythonHome\lib\email\_parseaddr.pyR<00>st AddrlistClasscBs<>eZdZd<00>Zd<00>Zd<00>Zd<00>Zd<00>Zd<00>Zd<00>Z e
2014-07-09 18:15:23 +08:00
d<00>Z d <00>Z d
<00>Z d <00>Zdd <00>Zd <00>ZRS(s<>Address parser class by Ben Escoto.
To understand what this class does, it helps to have a copy of RFC 2822 in
front of you.
Note: this class interface is deprecated and may be removed in the future.
Use rfc822.AddressList instead.
cCsd|_d|_d|_d|_|j|j|_|j|j|j|_|jjdd<00>|_||_g|_ dS(s<>Initialize a new instance.
`field' is an unparsed address header field, containing
one or more addresses.
s ()<>@,:;."[]is s
t.RN(
tspecialstpostLWStCRtFWStatomendsR]t
2014-07-10 23:57:08 +08:00
phraseendstfieldt commentlist(tselfRh((sEe:\github\Wox.JSONRPC\Output\Debug\PythonHome\lib\email\_parseaddr.pyt__init__<5F>s     cCs<>x{|jt|j<00>kr}|j|j|jdkrJ|jd7_q|j|jdkry|jj|j<00><00>qPqWdS(s*Parse up to the start of the next address.s
2014-07-09 18:15:23 +08:00
it(N(RbR<RhRcRiR>t
2014-07-10 23:57:08 +08:00
getcomment(Rj((sEe:\github\Wox.JSONRPC\Output\Debug\PythonHome\lib\email\_parseaddr.pytgotonext<78>s cCsUg}xH|jt|j<00>krP|j<00>}|r@||7}q |jd<00>q W|S(sVParse all addresses.
2014-07-09 18:15:23 +08:00
Returns a list containing all of the addresses.
R(RR(RbR<Rht
2014-07-10 23:57:08 +08:00
getaddressR>(Rjtresulttad((sEe:\github\Wox.JSONRPC\Output\Debug\PythonHome\lib\email\_parseaddr.pyt getaddrlist<73>s  cCs<>g|_|j<00>|j}|j}|j<00>}|j<00>g}|jt|j<00>kr<>|rPtj|j<00>|dfg}qPn<>|j|jdkr<>||_||_|j<00>}tj|j<00>|fg}nz|j|jdkr<>g}t|j<00>}|jd7_x=|jt|j<00>kr<>|j<00>|j|krm|j|jdkrm|jd7_Pn||j <00>}qWn<57>|j|jdkr<>|j
2014-07-09 18:15:23 +08:00
<00>}|jr<>tj|<00>ddj|j<00>d |fg}qPtj|<00>|fg}nS|r%tj|j<00>|dfg}n+|j|j|j krP|jd7_n|j<00>|jt|j<00>kr<>|j|jd
kr<>|jd7_n|S( sParse the next address.is.@R5it;t<s (Rt)R2( RiRnRbt getphraselistR<RhtSPACEtjoint getaddrspecRot getrouteaddrRa(Rjtoldpostoldcltplistt
2014-07-10 23:57:08 +08:00
returnlisttaddrspectfieldlent routeaddr((sEe:\github\Wox.JSONRPC\Output\Debug\PythonHome\lib\email\_parseaddr.pyRo<00>sL 
2014-07-09 18:15:23 +08:00
   
%   
%  3"
.cCs |j|jdkrdSt}|jd7_|j<00>d}x<>|jt|j<00>kr|rs|j<00>t}n<>|j|jdkr<>|jd7_Pnr|j|jdkr<>|jd7_t}nD|j|jdkr<>|jd7_n|j<00>}|jd7_P|j<00>qBW|S(s<>Parse a route address (Return-path value).
This method just skips all the route stuff and returns the addrspec.
2014-07-10 23:57:08 +08:00
RtNiRt>t@R5(RhRbtFalseRnR<t getdomaintTrueRy(Rjt expectroutetadlist((sEe:\github\Wox.JSONRPC\Output\Debug\PythonHome\lib\email\_parseaddr.pyRzs.
2014-07-09 18:15:23 +08:00

   cCsLg}|j<00>x<>|jt|j<00>kr<>|j|jdkr`|jd<00>|jd7_nf|j|jdkr<>|jdt|j<00><00><16>n0|j|j|jkr<>Pn|j|j<00><00>|j<00>qW|jt|j<00>ks|j|jdkrt j
|<00>S|jd<00>|jd7_|j<00>t j
2014-07-10 23:57:08 +08:00
|<00>|j <00>S(sParse an RFC 2822 addr-spec.R`iR\s"%s"R<>( RnRbR<RhR>RtgetquoteRftgetatomt EMPTYSTRINGRxR<>(Rjtaslist((sEe:\github\Wox.JSONRPC\Output\Debug\PythonHome\lib\email\_parseaddr.pyRy<s$
2014-07-09 18:15:23 +08:00
  .  
cCsg}x|jt|j<00>kr|j|j|jkrL|jd7_q |j|jdkr{|jj|j<00><00>q |j|jdkr<>|j|j<00><00>q |j|jdkr<>|jd7_|jd<00>q |j|j|jkr<>Pq |j|j <00><00>q Wt
2014-07-10 23:57:08 +08:00
j |<00>S(s-Get the complete domain name from an address.iRlt[R`( RbR<RhRcRiR>RmtgetdomainliteralRfR<>R<>Rx(Rjtsdlist((sEe:\github\Wox.JSONRPC\Output\Debug\PythonHome\lib\email\_parseaddr.pyR<79>UscCs-|j|j|krdSdg}t}|jd7_x<>|jt|j<00>kr|ry|j|j|j<19>t}n<>|j|j|kr<>|jd7_Pnk|r<>|j|jdkr<>|j|j<00><00>q;n6|j|jdkr<>t}n|j|j|j<19>|jd7_q;Wtj|<00>S(s<>Parse a header fragment delimited by special characters.
2014-07-09 18:15:23 +08:00
`beginchar' is the start character for the fragment.
If self is not looking at an instance of `beginchar' then
getdelimited returns the empty string.
`endchars' is a sequence of allowable end-delimiting characters.
Parsing stops when one of these is encountered.
If `allowcomments' is non-zero, embedded RFC 2822 comments are allowed
within the parsed fragment.
2014-07-10 23:57:08 +08:00
RiRls\( RhRbR<>R<R>RmR<>R<>Rx(Rjt beginchartendcharst allowcommentstslistR((sEe:\github\Wox.JSONRPC\Output\Debug\PythonHome\lib\email\_parseaddr.pyt getdelimitedhs(    cCs|jddt<00>S(s1Get a quote-delimited fragment from self's field.R\s" (R<>R<>(Rj((sEe:\github\Wox.JSONRPC\Output\Debug\PythonHome\lib\email\_parseaddr.pyR<79><00>scCs|jddt<00>S(s7Get a parenthesis-delimited fragment from self's field.Rls) (R<>R<>(Rj((sEe:\github\Wox.JSONRPC\Output\Debug\PythonHome\lib\email\_parseaddr.pyRm<00>scCsd|jddt<00>S(s!Parse an RFC 2822 domain-literal.s[%s]R<>s] (R<>R<>(Rj((sEe:\github\Wox.JSONRPC\Output\Debug\PythonHome\lib\email\_parseaddr.pyR<79><00>scCs<>dg}|dkr!|j}nx\|jt|j<00>kr|j|j|krVPn|j|j|j<19>|jd7_q$Wtj|<00>S(sParse an RFC 2822 atom.
2014-07-09 18:15:23 +08:00
Optional atomends specifies a different set of end token delimiters
(the default is to use self.atomends). This is used e.g. in
getphraselist() since phrase endings must not include the `.' (which
2014-07-10 23:57:08 +08:00
is legal in phrases).RiN(R?RfRbR<RhR>R<>Rx(RjRftatomlist((sEe:\github\Wox.JSONRPC\Output\Debug\PythonHome\lib\email\_parseaddr.pyR<79><00>s   cCs<>g}x<>|jt|j<00>kr<>|j|j|jkrL|jd7_q |j|jdkrx|j|j<00><00>q |j|jdkr<>|jj|j<00><00>q |j|j|jkr<>Pq |j|j |j<00><00>q W|S(s<>Parse a sequence of RFC 2822 phrases.
2014-07-09 18:15:23 +08:00
A phrase is a sequence of words, which are in turn either RFC 2822
atoms or quoted-strings. Phrases are canonicalized by squeezing all
runs of continuous whitespace into one space.
iR\Rl(
2014-07-10 23:57:08 +08:00
RbR<RhReR>R<>RiRmRgR<>(RjR}((sEe:\github\Wox.JSONRPC\Output\Debug\PythonHome\lib\email\_parseaddr.pyRv<00>sN(t__name__t
__module__t__doc__RkRnRrRoRzRyR<>R<>R<>R<>RmR<>R?R<>Rv(((sEe:\github\Wox.JSONRPC\Output\Debug\PythonHome\lib\email\_parseaddr.pyR_<00>s 
 ;   %    t AddressListcBsMeZdZd<00>Zd<00>Zd<00>Zd<00>Zd<00>Zd<00>Zd<00>Z RS(s@An AddressList encapsulates a list of parsed RFC 2822 addresses.cCs5tj||<00>|r(|j<00>|_n g|_dS(N(R_RkRrt addresslist(RjRh((sEe:\github\Wox.JSONRPC\Output\Debug\PythonHome\lib\email\_parseaddr.pyRk<00>scCs t|j<00>S(N(R<R<>(Rj((sEe:\github\Wox.JSONRPC\Output\Debug\PythonHome\lib\email\_parseaddr.pyt__len__<5F>scCsStd<00>}|j|_x3|jD](}||jkr#|jj|<00>q#q#W|S(N(R<>R?R<>R>(Rjtothertnewaddrtx((sEe:\github\Wox.JSONRPC\Output\Debug\PythonHome\lib\email\_parseaddr.pyt__add__<5F>s   cCs:x3|jD](}||jkr
2014-07-09 18:15:23 +08:00
|jj|<00>q
q
2014-07-10 23:57:08 +08:00
W|S(N(R<>R>(RjR<>R<>((sEe:\github\Wox.JSONRPC\Output\Debug\PythonHome\lib\email\_parseaddr.pyt__iadd__<5F>scCsFtd<00>}x3|jD](}||jkr|jj|<00>qqW|S(N(R<>R?R<>R>(RjR<>R<>R<>((sEe:\github\Wox.JSONRPC\Output\Debug\PythonHome\lib\email\_parseaddr.pyt__sub__<5F>s
2014-07-09 18:15:23 +08:00
 cCs:x3|jD](}||jkr
|jj|<00>q
q
2014-07-10 23:57:08 +08:00
W|S(N(R<>tremove(RjR<>R<>((sEe:\github\Wox.JSONRPC\Output\Debug\PythonHome\lib\email\_parseaddr.pyt__isub__<5F>scCs |j|S(N(R<>(RjRA((sEe:\github\Wox.JSONRPC\Output\Debug\PythonHome\lib\email\_parseaddr.pyt __getitem__<5F>s(
R<>R<>R<>RkR<>R<>R<>R<>R<>R<>(((sEe:\github\Wox.JSONRPC\Output\Debug\PythonHome\lib\email\_parseaddr.pyR<79><00>s     (R<>t__all__RXRZRwR<>t
COMMASPACER@R:RFRRRRR_R<>(((sEe:\github\Wox.JSONRPC\Output\Debug\PythonHome\lib\email\_parseaddr.pyt<module>s4  b
2014-07-09 18:15:23 +08:00
<13>