B è ;Q·œã@sÈdddgZddlZddlZddlZddlZddlmZddlmZm Z ddl m Z dZ d Z e d ¡Ze d ej¡ZGd d„dƒZGd d„deƒZdZGdd„deƒZeeejdƒƒZdeZejZdS)Ú GeneratorÚDecodedGeneratorÚBytesGeneratoréN)Údeepcopy)ÚStringIOÚBytesIO)Ú_has_surrogatesÚ_Ú z \r\n|\r|\nz^From c@s¬eZdZd&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)ÚpolicycCs6|dkr|dkrdn|j}||_||_||_||_dS)NT)Ú mangle_from_Ú_fpÚ _mangle_from_Ú maxheaderlenr )ÚselfÚoutfpr rr ©rú2/opt/alt/python37/lib/python3.7/email/generator.pyÚ__init__$s zGenerator.__init__cCs|j |¡dS)N)r Úwrite)rÚsrrrrDszGenerator.writeFcCsØ|jdkr|jn|j}|dk r*|j|d}|jdk rB|j|jd}|j|_| |j¡|_d|_| |j¡|_|j}|j}zL||_||_|r¸|  ¡}|s¨dt   t   ¡¡}|  ||j¡|  |¡Wd||_||_XdS)N)Úlinesep)Úmax_line_lengthÚz From nobody )r ÚclonerrÚ_NLÚ_encodeÚ _encoded_NLZ_EMPTYÚ_encoded_EMPTYZ get_unixfromÚtimeZctimerÚ_write)rÚmsgÚunixfromrr Zold_gen_policyZold_msg_policyZufromrrrÚflattenHs,  zGenerator.flattencCs|j||jd|jdS)N)r )Ú __class__rr )rÚfprrrryszGenerator.clonecCstƒS)N)r)rrrrÚ _new_bufferszGenerator._new_buffercCs|S)Nr)rrrrrr‘szGenerator._encodecCsX|sdSt |¡}x*|dd…D]}| |¡| |j¡q W|drT| |d¡dS)Néÿÿÿÿ)ÚNLCREÚsplitrr)rÚlinesÚlinerrrÚ _write_lines•s  zGenerator._write_linescCs¤|j}z"d|_| ¡|_}| |¡Wd||_|j}|`X|rht|ƒ}| d|d¡| d|d¡t|ddƒ}|dkrˆ| |¡n||ƒ|j |  ¡¡dS)Nzcontent-transfer-encodingrz content-typeéÚ_write_headers) r Ú _munge_cter&Ú _dispatchrZreplace_headerÚgetattrr.rÚgetvalue)rr!ZoldfpZsfpZ munge_cteÚmethrrrr ¥s"   zGenerator._writecCst| ¡}| ¡}t ||f¡ dd¡}t|d|dƒ}|dkrh| dd¡}t|d|dƒ}|dkrh|j}||ƒdS)Nú-r Z_handle_)Úget_content_maintypeÚget_content_subtypeÚ UNDERSCOREÚjoinÚreplacer1Ú _writeBody)rr!ÚmainÚsubZspecificr3Zgenericrrrr0Ès zGenerator._dispatchcCs:x(| ¡D]\}}| |j ||¡¡q W| |j¡dS)N)Ú raw_itemsrr Zfoldr)rr!ÚhÚvrrrr.ÜszGenerator._write_headerscCsž| ¡}|dkrdSt|tƒs.tdt|ƒƒ‚t|jƒr~| d¡}|dk r~t|ƒ}|d=|  ||¡| ¡}|d|df|_ |j rt   d|¡}| |¡dS)Nzstring payload expected: %sÚcharsetzcontent-transfer-encodingz content-typez>From )Ú get_payloadÚ isinstanceÚstrÚ TypeErrorÚtyperÚ_payloadZ get_paramrZ set_payloadr/rÚfcrer<r,)rr!Úpayloadr@rrrÚ _handle_textæs"      zGenerator._handle_textc Cs¢g}| ¡}|dkrg}n(t|tƒr2| |¡dSt|tƒsB|g}x>|D]6}| ¡}| |¡}|j|d|jd|  |  ¡¡qHW|  ¡}|s®|j   |¡}| |¡}| |¡|jdk rê|jrÎt d|j¡} n|j} | | ¡| |j¡| d||j¡|r|j | d¡¡x4|D],} | |jd||j¡|j | ¡qW| |jd|d|j¡|jdk rž|jrŽt d|j¡} n|j} | | ¡dS)NF)r"rz>From z--r)rArBrCrÚlistr&rr#rÚappendr2Z get_boundaryrr8Ú_make_boundaryZ set_boundaryÚpreamblerrGr<r,r ÚpopÚepilogue) rr!ZmsgtextsZsubpartsÚpartrÚgÚboundaryZalltextrMZ body_partrOrrrÚ_handle_multipartþsJ             zGenerator._handle_multipartcCs0|j}|jdd|_z| |¡Wd||_XdS)Nr)r)r rrS)rr!ÚprrrÚ_handle_multipart_signed8s z"Generator._handle_multipart_signedcCsžg}x€| ¡D]t}| ¡}| |¡}|j|d|jd| ¡}| |j¡}|rx|d|jkrx|  |j  |dd…¡¡q|  |¡qW|j   |j  |¡¡dS)NF)r"rr') rAr&rr#rr2r)rrrKr8r r)rr!ZblocksrPrrQÚtextr*rrrÚ_handle_message_delivery_statusCs  z)Generator._handle_message_delivery_statuscCs^| ¡}| |¡}|j}t|tƒrD|j| d¡d|jd| ¡}n |  |¡}|j   |¡dS)NrF)r"r) r&rrFrBrJr#rArr2rr r)rr!rrQrHrrrÚ_handle_messageXs    zGenerator._handle_messagecCszt tj¡}dt|d}|dkr(|S|}d}xD| dt |¡dtj¡}|  |¡sZP|dt |ƒ}|d7}q2W|S)Nz===============z==rz^--z(--)?$Ú.r-) ÚrandomZ randrangeÚsysÚmaxsizeÚ_fmtÚ _compile_reÚreÚescapeÚ MULTILINEÚsearchrC)ÚclsrVÚtokenrRÚbZcounterZcrerrrrLqs   zGenerator._make_boundarycCs t ||¡S)N)r_Úcompile)rcrÚflagsrrrr^ƒszGenerator._compile_re)NN)FN)N)Ú__name__Ú __module__Ú __qualname__rrr#rr&rr,r r0r.rIr:rSrUrWrXÚ classmethodrLr^rrrrrs(  1# :  csLeZdZdd„Zdd„Zdd„Zdd„Z‡fd d „ZeZe d d „ƒZ ‡Z S) rcCs|j | dd¡¡dS)NÚasciiÚsurrogateescape)r rÚencode)rrrrrr•szBytesGenerator.writecCstƒS)N)r)rrrrr&˜szBytesGenerator._new_buffercCs | d¡S)Nrl)rn)rrrrrr›szBytesGenerator._encodecCs<x*| ¡D]\}}|j |j ||¡¡q W| |j¡dS)N)r=r rr Z fold_binaryr)rr!r>r?rrrr.žszBytesGenerator._write_headerscs\|jdkrdSt|jƒrH|jjdksH|jr:t d|j¡|_| |j¡ntt |ƒ  |¡dS)NZ7bitz>From ) rFrr Zcte_typerrGr<r,ÚsuperrrI)rr!)r$rrrI¦s zBytesGenerator._handle_textcCst | d¡|¡S)Nrl)r_rfrn)rcrrgrrrr^µszBytesGenerator._compile_re) rhrirjrr&rr.rIr:rkr^Ú __classcell__rr)r$rrˆs  zD[Non-text (%(type)s) part of message omitted, filename %(filename)s]c@s$eZdZdddœdd„Zdd„ZdS)rN)r cCs.tj|||||d|dkr$t|_n||_dS)N)r )rrÚ_FMTr])rrr rZfmtr rrrrÃs  zDecodedGenerator.__init__c Csˆx‚| ¡D]v}| ¡}|dkr4t|jdd|dq |dkr>q t|j| ¡| ¡| ¡| d¡| dd¡| d d ¡d œ|dq WdS) NrVF)Údecode)ÚfileZ multipartz [no filename]zContent-Descriptionz[no description]zContent-Transfer-Encodingz [no encoding])rEÚmaintypeZsubtypeÚfilenameÚ descriptionÚencoding) Úwalkr5ÚprintrAr]Zget_content_typer6Ú get_filenameÚget)rr!rPrtrrrr0ás  zDecodedGenerator._dispatch)NNN)rhrirjrr0rrrrr½sr-z%%0%dd)Ú__all__r_r[rrZÚcopyrÚiorrZ email.utilsrr7ÚNLrfr(rarGrrrqrÚlenÚreprr\Ú_widthr]rLrrrrÚs(    p3;