o 0iS@s gdZddlZddlZddlZddlZddlmZddlmZm Z ddl m Z ddl m Z dZdZed Zed ejZed Zed ZGd ddZGdddeZdZGdddeZeeejdZdeZejZdS)) GeneratorDecodedGeneratorBytesGeneratorN)deepcopy)StringIOBytesIO)_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@seZdZ d&ddddZddZd'dd Zd d Zd d ZddZddZ ddZ ddZ ddZ ddZ e ZddZddZddZd d!Zed(d"d#Zed$d%ZdS))rNpolicycCs8 |dur|dur dn|j}||_||_||_||_dS)NT) mangle_from__fp _mangle_from_ maxheaderlenr )selfoutfprrr r6/opt/alt/python310/lib64/python3.10/email/generator.py__init__'s zGenerator.__init__cCs|j|dSN)rwritersrrrrGszGenerator.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)linesepZmax_line_lengthz From nobody )r clonerr_NL_encode _encoded_NLZ_EMPTY_encoded_EMPTYZ get_unixfromtimectimer_write)rmsgunixfromrr Zold_gen_policyZold_msg_policyZufromrrrflattenKs2    zGenerator.flattencCs |j||jd|jdSNr ) __class__rr )rfprrrr|s zGenerator.clonecCtSr)rrrrr _new_bufferszGenerator._new_buffercCs|Srrrrrrr szGenerator._encodecCsX|sdSt|}|ddD] }||||jq|dr*||ddSdS)N)NLCREsplitrr)rlineslinerrr _write_liness  zGenerator._write_linescCs|j}zd|_||_}||W||_|j}|`n ||_|j}|`w|rJt|}|ddur:|d|d<n|d|d|d|dt|dd}|durZ||n|||j | dS)Ncontent-transfer-encodingrContent-Transfer-Encoding content-type_write_headers) r _munge_cter. _dispatchrgetZreplace_headergetattrr9rgetvalue)rr&ZoldfpZsfpZ munge_ctemethrrrr%s,    zGenerator._writecCst|}|}t||fdd}t|d|d}|dur4|dd}t|d|d}|dur4|j}||dS)N-r Z_handle_)get_content_maintypeget_content_subtype UNDERSCOREjoinreplacer= _writeBody)rr&mainsubZspecificr?Zgenericrrrr;s  zGenerator._dispatchcCs|D]8\}}|j||}|jjr7|jj}||jjs(td|d|t| |r7td|| |q| |j dSNz folded header does not end with z: z folded header contains newline: ) raw_itemsr Zfoldverify_generated_headersrendswithr NEWLINE_WITHOUT_FWSPsearch removesuffixrrrr&hvZfoldedrrrrr9s zGenerator._write_headerscCs|}|dur dSt|tstdt|t|jr?|d}|dur?t|}|d=| |||}|d|df|_ |j rHt d|}||dS)Nzstring payload expected: %scharsetr5r7>From ) get_payload isinstancestr TypeErrortyper_payloadZ get_paramrZ set_payloadr:rfcrerHr4)rr&payloadrSrrr _handle_texts$     zGenerator._handle_textc Csg}|}|dur g}nt|tr||dSt|ts!|g}|D]}|}||}|j|d|jd| | q#| }|sU|j |}||}|||jdurs|jretd|j} n|j} || ||j|d||j|r|j|d|D]} ||jd||j|j| q||jd|d|j|jdur|jrtd|j} n|j} || dSdS)NFr'rrTz--r)rUrVrWrlistr.rr(rappendr>Z get_boundaryr!rD_make_boundaryZ set_boundarypreamblerr[rHr4rpopepilogue) rr&ZmsgtextsZsubpartspartrgboundaryZalltextrbZ 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_signedcCsg}|D]:}|}||}|j|d|jd|}||j}|r;|d|jkr;| |j |ddq| |q|j |j |dS)NFr^r/) rUr.rr(rr>r1r!r"r`rDrr)rr&Zblocksrerrftextr2rrr_handle_message_delivery_statusSs    z)Generator._handle_message_delivery_statuscCs^|}||}|j}t|tr"|j|dd|jd|}n| |}|j |dS)NrFr^) r.rrZrVr_r(rUrr>r rr)rr&rrfr\rrr_handle_messagehs    zGenerator._handle_messagecCsxttj}dt|d}|dur|S|}d} |dt|dtj}| |s/ |S|dt |}|d7}q) Nz===============z==rTz^--z(--)?$.r8) randomZ randrangesysmaxsize_fmt _compile_rereescape MULTILINErNrW)clsrktokenrgbZcounterZcrerrrras  zGenerator._make_boundarycCs t||Sr)rtcompilerwrflagsrrrrss zGenerator._compile_re)NN)FNr)__name__ __module__ __qualname__rrr(rr.r r4r%r;r9r]rFrhrjrlrm classmethodrarsrrrrrs0   1':  rcsNeZdZ ddZddZddZddZfd d ZeZe d d Z Z S) rcCs|j|dddS)Nasciisurrogateescape)rrencoderrrrrszBytesGenerator.writecCr,r)rr-rrrr.szBytesGenerator._new_buffercCs |dSNr)rrrrrr s zBytesGenerator._encodecCs|D]9\}}|j||}|jjr7|jj}||s(td|d|t | |r7td||j |q| |j dSrI)rJr Z fold_binaryrKrrrLr NEWLINE_WITHOUT_FWSP_BYTESrNrOrrrrPrrrr9s  zBytesGenerator._write_headerscs^|jdurdSt|jr%|jjdks%|jrtd|j|_||jdStt | |dS)NZ7bitrT) rZrr Zcte_typerr[rHr4superrr])rr&r*rrr]s zBytesGenerator._handle_textcCst|d|Sr)rtrzrr{rrrrsszBytesGenerator._compile_re) r}r~rrr.r r9r]rFrrs __classcell__rrrrrs   rzD[Non-text (%(type)s) part of message omitted, filename %(filename)s]c@s&eZdZ dddddZddZdS)rNr cCs2 tj|||||d|durt|_dS||_dSr))rr_FMTrr)rrrrZfmtr rrrrs   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])rYmaintypeZsubtypefilename descriptionencoding) walkrAprintrUrrZget_content_typerB get_filenamer<)rr&rerrrrr;s*  zDecodedGenerator._dispatch)NNN)r}r~rrr;rrrrrs  rr8z%%0%dd) __all__rtrpr#rocopyriorrZ email.utilsrZ email.errorsr rCNLrzr0rvr[rMrrrrrlenreprrqZ_widthrrrarrrrs2      }<;