]M @ s d d d g Z d d l Z d d l Z d d l Z d d l Z d d l m Z d d l m Z m Z d d l
m Z d Z d Z
e j d
Z e j d e j Z Gd d d Z Gd
d d e Z d Z Gd d d e Z e e e j d Z d e Z e j Z d S) GeneratorDecodedGeneratorBytesGenerator N)deepcopy)StringIOBytesIO)_has_surrogates_
z
\r\n|\r|\nz^From c @ s e Z d Z d d d d d d Z d d Z d d d d Z d
d Z d d
Z d d Z d d Z d d Z
d d Z d d Z d d Z
e
Z d d Z d d Z d d Z d d! Z e d d" d# Z e d$ d% Z d S)&r Npolicyc C sO | d k r' | d k r d n | j } | | _ | | _ | | _ | | _ d S)NT)mangle_from__fp
_mangle_from_maxheaderlenr )selfoutfpr r r r ./opt/alt/python35/lib64/python3.5/generator.py__init__$ s zGenerator.__init__c C s | j j | d S)N)r
write)r sr r r r D s zGenerator.writeFc C s6 | j d k r | j n | j } | d k r? | j d | } | j d k rc | j d | j } | j | _ | j | j | _ d | _ | j | j | _ | j } | j } zh | | _ | | _ | r| j } | s d t
j t
j
} | j | | j | j
| Wd | | _ | | _ Xd S)Nlinesepmax_line_length zFrom nobody )r cloner r _NL_encode_encoded_NLZ_EMPTY_encoded_EMPTYZget_unixfromtimectimer _write)r msgunixfromr r Zold_gen_policyZold_msg_policyZufromr r r flattenH s, ! zGenerator.flattenc C s | j | | j d d | j S)Nr ) __class__r r )r fpr r r r y s zGenerator.clonec C s t S)N)r )r r r r _new_buffer s zGenerator._new_bufferc C s | S)Nr )r r r r r r s zGenerator._encodec C sp | s
d St j | } x5 | d d D]# } | j | | j | j q* W| d rl | j | d d S)N r) r) )NLCREsplitr r )r linesliner r r _write_lines s
zGenerator._write_linesc C s | j } z- d | _ | j | _ } | j | Wd | | _ | j } | ` X| r t | } | j d | d | j d | d t | d d } | d k r | j | n
| | | j j | j d S)Nzcontent-transfer-encodingr zcontent-typer( _write_headers)
r
_munge_cter' _dispatchr Zreplace_headergetattrr/ r getvalue)r r" ZoldfpZsfpZ munge_ctemethr r r r! s"
zGenerator._writec C s | j } | j } t j | | f j d d } t | d | d } | d k r | j d d } t | d | d } | d k r | j } | | d S)N-r Z_handle_)get_content_maintypeget_content_subtype
UNDERSCOREjoinreplacer2
_writeBody)r r" mainsubZspecificr4 Zgenericr r r r1 s ! zGenerator._dispatchc C sM x6 | j D]( \ } } | j | j j | | q
W| j | j d S)N) raw_itemsr r Zfoldr )r r" hvr r r r/ s zGenerator._write_headersc C s | j } | d k r d St | t sA t d t | t | j r | j d } | d k r t | } | d =| j | | | j } | d | d f | _
| j r t j
d | } | j | d S)Nzstring payload expected: %scharsetzcontent-transfer-encodingzcontent-typez>From )get_payload
isinstancestr TypeErrortyper _payloadZ get_paramr Zset_payloadr0 r fcrer= r. )r r" payloadrA r r r _handle_text s" zGenerator._handle_textc C s4 g } | j } | d k r' g } n8 t | t rG | j | d St | t s_ | g } xX | D]P } | j } | j | } | j | d d d | j | j | j
qf W| j } | s | j j
| } | j | } | j | | j d k rP| j r*t j d | j } n | j } | j | | j | j | j d | | j | r| j j | j d x= | D]5 }
| j | j d | | j | j j |
qW| j | j d | d | j | j d k r0| j rt j d | j } n | j } | j | d S)Nr# Fr z>From z--r )rB rC rD r listr' r r$ r appendr3 Zget_boundaryr r9 _make_boundaryZset_boundarypreambler rH r= r. r
popepilogue)r r" ZmsgtextsZsubpartspartr gboundaryZalltextrN Z body_partrP r r r _handle_multipart sJ
# zGenerator._handle_multipartc C s@ | j } | j d d | _ z | j | Wd | | _ Xd S)Nr r )r r rT )r r" pr r r _handle_multipart_signed8 s
z"Generator._handle_multipart_signedc C s g } x | j D] } | j } | j | } | j | d d d | j | j } | j | j } | r | d | j k r | j | j j
| d d q | j | q W| j j | j j
| d S)Nr# Fr r( r) r) )
rB r' r r$ r r3 r+ r r rL r9 r
r )r r" ZblocksrQ r rR textr, r r r _handle_message_delivery_statusC s &z)Generator._handle_message_delivery_statusc C s | j } | j | } | j } t | t rg | j | j d d d d | j | j } n | j | } | j
j | d S)Nr r# Fr )r' r rG rC rK r$ rB r r3 r r
r )r r" r rR rI r r r _handle_messageX s
%zGenerator._handle_messagec C s t j t j } d t | d } | d k r4 | S| } d } xX | j d t j | d t j } | j | sy P| d t
| } | d 7} qC W| S)
N= z==r z^--z(--)?$.r( z===============)random randrangesysmaxsize_fmt_compile_rereescape MULTILINEsearchrD )clsrW tokenrS bZcounterZcrer r r rM q s &zGenerator._make_boundaryc C s t j | | S)N)rc compile)rg r flagsr r r rb s zGenerator._compile_re)__name__
__module____qualname__r r r$ r r' r r. r! r1 r/ rJ r; rT rV rX rY classmethodrM rb r r r r r s(
1#
:c sj e Z d Z d d Z d d Z d d Z d d Z f d d
Z e Z e d d Z
S)
r c C s | j j | j d d d S)Nasciisurrogateescape)r
r encode)r r r r r r s zBytesGenerator.writec C s t S)N)r )r r r r r' s zBytesGenerator._new_bufferc C s
| j d S)Nrp )rr )r r r r r r s zBytesGenerator._encodec C sP x9 | j D]+ \ } } | j j | j j | | q
W| j | j d S)N)r> r
r r Zfold_binaryr )r r" r? r@ r r r r/ s #zBytesGenerator._write_headersc s | j d k r d St | j ri | j j d k ri | j rV t j d | j | _ | j | j n t t | j
| d S)NZ7bitz>From )rG r r Zcte_typer rH r= r. superr rJ )r r" )r% r r rJ s " zBytesGenerator._handle_textc C s t j | j d | S)Nrp )rc rj rr )rg r rk r r r rb s zBytesGenerator._compile_re)rl rm rn r r' r r/ rJ r; ro rb r r )r% r r s
zD[Non-text (%(type)s) part of message omitted, filename %(filename)s]c @ s1 e Z d Z d d d d d Z d d Z d S)r NN c C s; t j | | | | | d k r. t | _ n | | _ d S)N)r r _FMTra )r r r r fmtr r r r s zDecodedGenerator.__init__c C s x | j D] } | j } | d k rJ t | j d d d | q
| d k rY q
t | j d | j d | j d | j d | j d
d | j d d
d | j d d i d | q
Wd S)NrW decodeFfileZ multipartrF maintypesubtypefilenamez
[no filename]descriptionzContent-Descriptionz[no description]encodingzContent-Transfer-Encodingz
[no encoding]) walkr6 printrB ra Zget_content_typer7 get_filenameget)r r" rQ ry r r r r1 s
zDecodedGenerator._dispatch)rl rm rn r r1 r r r r r s r( z%%0%dd)__all__rc r_ r r] copyr ior r Zemail.utilsr r8 NLrj r* re rH r r ru r lenreprr` _widthra rM r r r r