3 \X@sddgZddlZddlmZddlmZddlmZddlm Z ej dZ ej d Z ej d Z ej d Zej d Zd Zd ZeZGdddeZGdddZGdddeZdS) FeedParserBytesFeedParserN)errors)compat32)deque)StringIOz \r\n|\r|\nz (\r\n|\r|\n)z(\r\n|\r|\n)\Zz%^(From |[\041-\071\073-\176]*:|[\t ]) c@s\eZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ dS)BufferedSubFilecCs$tdd|_t|_g|_d|_dS)Nr)newlineF)r_partialr_lines _eofstack_closed)selfr(/usr/lib64/python3.6/email/feedparser.py__init__5s zBufferedSubFile.__init__cCs|jj|dS)N)rappend)rZpredrrrpush_eof_matcher@sz BufferedSubFile.push_eof_matchercCs |jjS)N)rpop)rrrrpop_eof_matcherCszBufferedSubFile.pop_eof_matchercCs<|jjd|j|jj|jjd|jjd|_dS)NrT)r seek pushlines readlinestruncater)rrrrcloseFs    zBufferedSubFile.closecCsN|js|jrdStS|jj}x*t|jD]}||r*|jj|dSq*W|S)Nr)r r NeedMoreDatapopleftreversedr appendleft)rlineZateofrrrreadlineNs  zBufferedSubFile.readlinecCs|jj|dS)N)r r )rr!rrr unreadline`szBufferedSubFile.unreadlinecCsx|jj|d|kr d|kr dS|jjd|jj}|jjd|jj|djdsj|jj|j|j|dS)Nr  r)r writerrrendswithrr)rdatapartsrrrpushes     zBufferedSubFile.pushcCs|jj|dS)N)r extend)rlinesrrrrzszBufferedSubFile.pushlinescCs|S)Nr)rrrr__iter__}szBufferedSubFile.__iter__cCs|j}|dkrt|S)Nr)r" StopIteration)rr!rrr__next__szBufferedSubFile.__next__N) __name__ __module__ __qualname__rrrrr"r#r+rr.r0rrrrr -s r c@s\eZdZdedddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ dS)rN)policyc Cs||_d|_|dkr<|jdkr2ddlm}||_qn|j|_n2||_y||jdWntk rld|_YnXt|_g|_ |j j |_ d|_ d|_d|_dS)NFr)Message)r4T)r4_old_style_factoryZmessage_factoryZ email.messager5_factory TypeErrorr _input _msgstack _parsegenr0_parse_cur_last _headersonly)rr7r4r5rrrrs$     zFeedParser.__init__cCs d|_dS)NT)r?)rrrr_set_headersonlyszFeedParser._set_headersonlycCs|jj||jdS)N)r9r+ _call_parse)rr)rrrfeeds zFeedParser.feedc Cs&y |jWntk r YnXdS)N)r<r/)rrrrrAs zFeedParser._call_parsecCsJ|jj|j|j}|jdkrF|j rFtj}|jj |||S)N multipart) r9rrA _pop_messageget_content_maintypeZ is_multipartrZ!MultipartInvariantViolationDefectr4 handle_defect)rrootdefectrrrrs   zFeedParser.closecCsn|jr|j}n|j|jd}|jr<|jjdkr<|jd|jrR|jdj||jj|||_||_ dS)N)r4zmultipart/digestzmessage/rfc822r%r&) r6r7r4r=get_content_typeZset_default_typer:Zattachrr>)rmsgrrr _new_messages   zFeedParser._new_messagecCs(|jj}|jr|jd|_nd|_|S)Nr%r&)r:rr=)rretvalrrrrDs  zFeedParser._pop_messageccs6|jg}xb|jD]X}|tkr(tVqtj|sbtj|s`tj}|jj |j ||jj |P|j |qW|j ||jrg}x2|jj}|tkrtVq|dkrP|j |qW|j jtj|dS|j jdkrx|jjtjx$|jD]}|tkrtVqPqW|j}|jjx&|jj}|tkrFtVq(Pq(Wx&|jj}|tkrntVqPPqPW|dkrP|jj |qWdS|j jdkrx(|jD]}|tkrtVqPqW|jdS|j jdkr|j j}|dkrbtj}|jj |j |g}x.|jD]$}|tkrtj+}|jj |j ||j jtj| g}x$|jD]}|tkrtVqqWtj||j _'dS| s`tj,}|jj |j |dS| rndg}ng}x.|jD]$}|tkrtVqz|j |qzW|r|d}t-j|}|r|t$|j!dd|d<tj||j _'dSg}x.|jD]$}|tkrtVq|j |qW|j jtj|dS)Nrzmessage/delivery-statusmessagerCzcontent-transfer-encoding8bit7bitbinaryz--z(?Pz4)(?P--)?(?P[ \t]*)(?P\r\n|\r|\n)?$TFendlinesepr%r)rOrNrPr&r&).rKr9rheaderREmatchNLCRErZ MissingHeaderBodySeparatorDefectr4rFr=r#r_parse_headersr?r"Z set_payload EMPTYSTRINGjoinrIrr;rDrrEZ get_boundaryZNoBoundaryInMultipartDefectgetlowerZ-InvalidMultipartContentTransferEncodingDefectrecompileescapegroup NLCRE_eolsearchlenpreambler>epilogueZ_payload isinstancestrZStartBoundaryNotFoundDefectZCloseBoundaryNotFoundDefect NLCRE_bol)rZheadersr!rHr-rLrJboundaryZ separatorZ boundaryreZcapturing_preamblerbrRZclose_boundary_seenmoZlastlineZeolmorcrQZpayload firstlineZbolmorrrr;sf                                                zFeedParser._parsegenc Cs^d}g}x4t|D]&\}}|ddkrV|sJtj|}|jj|j|q|j|q|rx|jj|jj|dg}}|j dr|dkrt j |}|r|dt |j d }|jj|qn:|t |dkr|jj|dStj|}|jjj|q|jd}|dkr*tjd}|jjj|q|d|}|g}qW|rZ|jj|jj|dS)Nrrz zFrom r%:zMissing header name.) enumeraterZ#FirstHeaderLineIsContinuationDefectr4rFr=rZset_rawZheader_source_parse startswithr_r`rar^Z set_unixfromr9r#ZMisplacedEnvelopeHeaderDefectZdefectsfindZInvalidHeaderDefect) rr-Z lastheaderZ lastvaluelinenor!rHrhirrrrVsF              zFeedParser._parse_headers)N) r1r2r3rrr@rBrArrKrDr;rVrrrrrs  ~cseZdZfddZZS)rcstj|jdddS)Nasciisurrogateescape)superrBdecode)rr)) __class__rrrBszBytesFeedParser.feed)r1r2r3rB __classcell__rr)rtrrs)__all__r[ZemailrZemail._policybaser collectionsriorr\rUrfr_Z NLCRE_crackrSrWNLobjectrr rrrrrrs&         [