o 0¦iœSã@sè gd¢ZddlZddlZddlZddlZddlmZddlmZm Z ddl m Z ddl m Z dZdZe d ¡Ze d ej¡Ze d ¡Ze d ¡ZGd d„dƒZGdd„deƒZdZGdd„deƒZeeejdƒƒZdeZejZdS))Ú GeneratorÚDecodedGeneratorÚBytesGeneratoréN)Údeepcopy)ÚStringIOÚBytesIO)Ú_has_surrogates)ÚHeaderWriteErrorÚ_Ú z \r\n|\r|\nz^From z\r\n[^ \t]|\r[^ \n\t]|\n[^ \t]s\r\n[^ \t]|\r[^ \n\t]|\n[^ \t]c@s®eZdZ d&ddœdd„Zdd„Zd'dd „Zd d „Zd d „Zdd„Zdd„Z dd„Z dd„Z dd„Z dd„Z e Zdd„Zdd„Zdd„Zd d!„Zed(d"d#„ƒZed$d%„ƒZdS))rN©ÚpolicycCs8 |dur|dur dn|j}||_||_||_||_dS)NT)Ú mangle_from_Ú_fpÚ _mangle_from_Ú maxheaderlenr )ÚselfÚoutfprrr ©rú6/opt/alt/python310/lib64/python3.10/email/generator.pyÚ__init__'s zGenerator.__init__cCs|j |¡dS©N)rÚwrite©rÚsrrrrGszGenerator.writeFcCsä |jdur |jn|j}|dur|j|d}|jdur"|j|jd}|j|_| |j¡|_d|_| |j¡|_|j}|j}z-||_||_|r]|  ¡}|sUdt   t   ¡¡}|  ||j¡|  |¡W||_||_dS||_||_w)N)Úlinesep©Zmax_line_lengthÚz From nobody )r ÚclonerrÚ_NLÚ_encodeÚ _encoded_NLZ_EMPTYÚ_encoded_EMPTYZ get_unixfromÚtimeÚctimerÚ_write)rÚmsgÚunixfromrr Zold_gen_policyZold_msg_policyZufromrrrÚflattenKs2    ÿzGenerator.flattencCs |j||jd|jdS©Nr )Ú __class__rr )rÚfprrrr|s ýzGenerator.clonecCótƒSr)r©rrrrÚ _new_bufferszGenerator._new_buffercCs|Srrrrrrr ”szGenerator._encodecCsX|sdSt |¡}|dd…D] }| |¡| |j¡q|dr*| |d¡dSdS)Néÿÿÿÿ)ÚNLCREÚsplitrr)rÚlinesÚlinerrrÚ _write_lines˜s  ÿzGenerator._write_linescCsÐ|j}zd|_| ¡|_}| |¡W||_|j}|`n ||_|j}|`w|rJt|ƒ}| d¡dur:|d|d<n| d|d¡| d|d¡t|ddƒ}|durZ| |¡n||ƒ|j  |  ¡¡dS)Núcontent-transfer-encodingrúContent-Transfer-Encodingú content-typeéÚ_write_headers) rÚ _munge_cter.Ú _dispatchrÚgetZreplace_headerÚgetattrr9rÚgetvalue)rr&ZoldfpZsfpZ munge_cteÚmethrrrr%¨s,  þ  zGenerator._writecCst| ¡}| ¡}t ||f¡ dd¡}t|d|dƒ}|dur4| dd¡}t|d|dƒ}|dur4|j}||ƒdS)Nú-r Z_handle_)Úget_content_maintypeÚget_content_subtypeÚ UNDERSCOREÚjoinÚreplacer=Ú _writeBody)rr&ÚmainÚsubZspecificr?Zgenericrrrr;Ïs  zGenerator._dispatchcCsŠ| ¡D]8\}}|j ||¡}|jjr7|jj}| |jj¡s(td|›d|›ƒ‚t |  |¡¡r7td|›ƒ‚|  |¡q|  |j ¡dS©Nz folded header does not end with z: z folded header contains newline: ) Ú raw_itemsr ZfoldÚverify_generated_headersrÚendswithr ÚNEWLINE_WITHOUT_FWSPÚsearchÚ removesuffixrr©rr&ÚhÚvZfoldedrrrrr9ãsÿÿ zGenerator._write_headerscCsž| ¡}|dur dSt|tƒstdt|ƒƒ‚t|jƒr?| d¡}|dur?t|ƒ}|d=|  ||¡| ¡}|d|df|_ |j rHt   d|¡}| |¡dS)Nzstring payload expected: %sÚcharsetr5r7ú>From )Ú get_payloadÚ isinstanceÚstrÚ TypeErrorÚtyperÚ_payloadZ get_paramrZ set_payloadr:rÚfcrerHr4)rr&ÚpayloadrSrrrÚ _handle_textös$    ÿ zGenerator._handle_textc Cs–g}| ¡}|dur g}nt|tƒr| |¡dSt|tƒs!|g}|D]}| ¡}| |¡}|j|d|jd|  |  ¡¡q#|  ¡}|sU|j   |¡}| |¡}| |¡|jdurs|jret d|j¡} n|j} | | ¡| |j¡| d||j¡|rˆ|j | d¡¡|D]} | |jd||j¡|j | ¡qŠ| |jd|d|j¡|jdurÉ|jr¿t d|j¡} n|j} | | ¡dSdS)NF©r'rrTz--r)rUrVrWrÚlistr.rr(rÚappendr>Z get_boundaryr!rDÚ_make_boundaryZ set_boundaryÚpreamblerr[rHr4rÚpopÚepilogue) rr&ZmsgtextsZsubpartsÚpartrÚgÚboundaryZalltextrbZ body_partrdrrrÚ_handle_multipartsL           ûzGenerator._handle_multipartcCs4|j}|jdd|_z | |¡W||_dS||_w)Nrr)r rrh)rr&ÚprrrÚ_handle_multipart_signedHs  z"Generator._handle_multipart_signedcCsšg}| ¡D]:}| ¡}| |¡}|j|d|jd| ¡}| |j¡}|r;|d|jkr;|  |j  |dd…¡¡q|  |¡q|j   |j  |¡¡dS)NFr^r/) rUr.rr(rr>r1r!r"r`rDrr)rr&ZblocksrerrfÚtextr2rrrÚ_handle_message_delivery_statusSs    z)Generator._handle_message_delivery_statuscCs^| ¡}| |¡}|j}t|tƒr"|j| d¡d|jd| ¡}n|  |¡}|j   |¡dS)NrFr^) r.rrZrVr_r(rUrr>r rr)rr&rrfr\rrrÚ_handle_messagehs    zGenerator._handle_messagecCsxt tj¡}dt|d}|dur|S|}d} | dt |¡dtj¡}|  |¡s/ |S|dt |ƒ}|d7}q) Nz===============z==rTz^--z(--)?$Ú.r8) ÚrandomZ randrangeÚsysÚmaxsizeÚ_fmtÚ _compile_reÚreÚescapeÚ MULTILINErNrW)ÚclsrkÚtokenrgÚbZcounterZcrerrrras  þûzGenerator._make_boundarycCs t ||¡Sr)rtÚcompile©rwrÚflagsrrrrs“s zGenerator._compile_re)NN)FNr)Ú__name__Ú __module__Ú __qualname__rrr(rr.r r4r%r;r9r]rFrhrjrlrmÚ classmethodrarsrrrrrs0  ÿ 1':  rcsNeZdZ dd„Zdd„Zdd„Zdd„Z‡fd d „ZeZe d d „ƒZ ‡Z S) rcCs|j | dd¡¡dS)NÚasciiÚsurrogateescape)rrÚencoderrrrr¥szBytesGenerator.writecCr,r)rr-rrrr.¨szBytesGenerator._new_buffercCs | d¡S©Nr)rƒrrrrr «s zBytesGenerator._encodecCsŒ| ¡D]9\}}|j ||¡}|jjr7|jj ¡}| |¡s(td|›d|›ƒ‚t  |  |¡¡r7td|›ƒ‚|j   |¡q|  |j ¡dSrI)rJr Z fold_binaryrKrrƒrLr ÚNEWLINE_WITHOUT_FWSP_BYTESrNrOrrrrPrrrr9®s  ÿÿzBytesGenerator._write_headerscs^|jdurdSt|jƒr%|jjdks%|jrt d|j¡|_| |j¡dStt |ƒ  |¡dS)NZ7bitrT) rZrr Zcte_typerr[rHr4Úsuperrr])rr&©r*rrr]¿s zBytesGenerator._handle_textcCst | d¡|¡Sr„)rtrzrƒr{rrrrsÎszBytesGenerator._compile_re) r}r~rrr.r r9r]rFr€rsÚ __classcell__rrr‡rr˜s   rzD[Non-text (%(type)s) part of message omitted, filename %(filename)s]c@s&eZdZ dddœdd„Zdd„ZdS)rNr cCs2 tj|||||d|durt|_dS||_dSr))rrÚ_FMTrr)rrrrZfmtr rrrrÜs ÿ  zDecodedGenerator.__init__c Cs„| ¡D];}| ¡}|dkrt|jdd|dq|dkrqt|j| ¡| ¡| ¡| d¡| dd¡| d d ¡d œ|dqdS) NrkF)Údecode)ÚfileZ multipartz [no filename]zContent-Descriptionz[no description]r6z [no encoding])rYÚmaintypeZsubtypeÚfilenameÚ descriptionÚencoding) ÚwalkrAÚprintrUrrZget_content_typerBÚ get_filenamer<)rr&rerŒrrrr;ús* ÿÿù ÷øzDecodedGenerator._dispatch)NNN)r}r~rrr;rrrrrÖs  ÿ rr8z%%0%dd) Ú__all__rtrpr#roÚcopyrÚiorrZ email.utilsrZ email.errorsr rCÚNLrzr0rvr[rMr…rrr‰rÚlenÚreprrqZ_widthrrrarrrrÚs2      }<;