U ,aX@sddgZddlZddlmZddlmZddlmZddlm Z e dZ e d Z e d Z e d Ze 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_closedselfr5/opt/alt/python38/lib64/python3.8/email/feedparser.py__init__5s zBufferedSubFile.__init__cCs|j|dSN)rappend)rZpredrrrpush_eof_matcher@sz BufferedSubFile.push_eof_matchercCs |jSr)rpoprrrrpop_eof_matcherCszBufferedSubFile.pop_eof_matchercCs<|jd||j|jd|jd|_dS)NrT)r seek pushlines readlinestruncaterrrrrcloseFs    zBufferedSubFile.closecCsL|js|jrdStS|j}t|jD]}||r(|j|dSq(|SNr)r r NeedMoreDatapopleftreversedr appendleft)rlineZateofrrrreadlineNs  zBufferedSubFile.readlinecCs|j|dSr)r r#rr$rrr unreadline`szBufferedSubFile.unreadlinecCsx|j|d|kr d|kr dS|jd|j}|jd|j|ddsj|j|||dS)Nr  r)r writerrrendswithrr)rdatapartsrrrpushes     zBufferedSubFile.pushcCs|j|dSr)r extend)rlinesrrrrzszBufferedSubFile.pushlinescCs|Srrrrrr__iter__}szBufferedSubFile.__iter__cCs|}|dkrt|Sr)r% StopIterationr&rrr__next__szBufferedSubFile.__next__N) __name__ __module__ __qualname__rrrrr%r'r.rr1r3rrrrr -s r c@s\eZdZdedddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ dS)rNpolicycCs||_d|_|dkr<|jdkr2ddlm}||_qn|j|_n2||_z||jdWntk rld|_YnXt|_g|_ | j |_ d|_ d|_d|_dS)NFr)Messager7T)r8_old_style_factoryZmessage_factoryZ email.messager9_factory TypeErrorr _input _msgstack _parsegenr3_parse_cur_last _headersonly)rr;r8r9rrrrs$     zFeedParser.__init__cCs d|_dS)NT)rCrrrr_set_headersonlyszFeedParser._set_headersonlycCs|j||dSr)r=r. _call_parserr,rrrfeeds zFeedParser.feedcCs&z |Wntk r YnXdSr)r@r2rrrrrEs zFeedParser._call_parsecCsH|j||}|dkrD|sDt}|j |||S)N multipart) r=rrE _pop_messageget_content_maintypeZ is_multipartrZ!MultipartInvariantViolationDefectr8 handle_defect)rrootdefectrrrrs  zFeedParser.closecCsn|jr|}n|j|jd}|jr<|jdkr<|d|jrR|jd||j|||_||_ dS)Nr7zmultipart/digestzmessage/rfc822r)) r:r;r8rAget_content_typeZset_default_typer>ZattachrrB)rmsgrrr _new_messages   zFeedParser._new_messagecCs(|j}|jr|jd|_nd|_|S)Nr))r>rrA)rretvalrrrrIs  zFeedParser._pop_messageccs|g}|jD]Z}|tkr&tVqt|sbt|s^t}|j |j ||j |qn| |q| ||jrg}|j}|tkrtVq|dkrq| |q|j t|dS|j dkr|jtj|D]}|tkrtVqq q|}|j|j}|tkrDtVqqDq|j}|tkrjtVqDqjqD|dkrxq|j |qdS|j dkr|D] }|tkrtVqqĐq|dS|j dkr|j }|dkrRt}|j |j |g}|jD]$}|tkr.tVq| |q|j t|dSt|j dddkrt}|j |j |d|}t d t!|d } d } g} d } d } |j}|tkrtVq|dkrq| |}|r|"d rd } |"d} q| rr| r^| d}t#$|}|rP|dt%|"d | d<t| |j _&d } |j |q|j}|tkrtVqr| |}|sr|j |qqr|j| j|D] }|tkrtVqqq|j'dkrT|j'j(}|dkrd|j'_(n:|dk rt#$|}|rt%|"d}|d| |j'_(nD|j'j)}t*|trt#$|}|r|dt%|"d }||j'_)|j||j |_'n | |q| r*t+}|j |j ||j t| g}|jD]}|tkrtVqqt||j _(dS| sLt,}|j |j |dS| rZdg}ng}|jD]$}|tkr|tVqd| |qd|r|d}t-|}|r|t%|"dd|d<t||j _(dSg}|jD]$}|tkrtVq| |q|j t|dS)Nrzmessage/delivery-statusmessagerHzcontent-transfer-encoding8bit)Z7bitrSZbinaryz--z(?Pz4)(?P--)?(?P[ \t]*)(?P\r\n|\r|\n)?$TFendlinesepr)r).rPr=r headerREmatchNLCRErZ MissingHeaderBodySeparatorDefectr8rKrAr'r_parse_headersrCr%Z set_payload EMPTYSTRINGjoinrNrr?rIrrJZ get_boundaryZNoBoundaryInMultipartDefectstrgetlowerZ-InvalidMultipartContentTransferEncodingDefectrecompileescapegroup NLCRE_eolsearchlenpreamblerBepilogueZ_payload isinstanceZStartBoundaryNotFoundDefectZCloseBoundaryNotFoundDefect NLCRE_bol)rZheadersr$rMr0rQrOboundaryZ separatorZ boundaryreZcapturing_preamblerfrUZclose_boundary_seenmoZlastlineZeolmorgrTZpayload firstlineZbolmorrrr?s`                                                      zFeedParser._parsegenc CsXd}g}t|D]&\}}|ddkrR|sFt|}|j|j|q||q|rt|jj|j|dg}}| dr|dkrt |}|r|dt | d }|j|qn<|t |dkr|j|dSt|}|jj|q|d}|dkr&td}|jj|q|d|}|g}q|rT|jj|j|dS)Nrrz zFrom :zMissing header name.) enumeraterZ#FirstHeaderLineIsContinuationDefectr8rKrArZset_rawZheader_source_parse startswithrcrdrerbZ set_unixfromr=r'ZMisplacedEnvelopeHeaderDefectZdefectsfindZInvalidHeaderDefect) rr0Z lastheaderZ lastvaluelinenor$rMrkirrrrYsF             zFeedParser._parse_headers)N) r4r5r6rrrDrGrErrPrIr?rYrrrrrs  ~cseZdZfddZZS)rcst|dddS)Nasciisurrogateescape)superrGdecoderF __class__rrrGszBytesFeedParser.feed)r4r5r6rG __classcell__rrrxrrs)__all__r_ZemailrZemail._policybaser collectionsriorr`rXrircZ NLCRE_crackrVrZNLobjectr r rrrrrrs&         [