Spade
Mini Shell
| Directory:~$ /lib64/python3.6/email/__pycache__/ |
| [Home] [System Details] [Kill Me] |
3
\N�@s�dZdddgZddlZddlZddlZddlZddlmZddlm Z m
Z
ddlmZd Z
d
Zejd�Zejdej�ZGd
d�d�ZGdd�de�ZdZGdd�de�Zeeejd��ZdeZejZdS)z:Classes
to generate plain text from a message object
tree.� Generator�DecodedGenerator�BytesGenerator�N)�deepcopy)�StringIO�BytesIO)�_has_surrogates�_�
z
\r\n|\r|\nz^From c@s�eZdZdZd'dd�dd�Zdd�Zd(d d
�Zdd�Zd
d�Zdd�Z dd�Z
dd�Zdd�Zdd�Z
dd�ZeZdd�Zdd�Zdd
�Zd!d"�Zed)d#d$��Zed%d&��ZdS)*rz�Generates
output from a Message object tree.
This basic generator writes the message to the given file object as
plain
text.
N)�policycCs6|dkr|dkrdn|j}||_||_||_||_dS)a�Create
the generator for message flattening.
outfp is the output file-like object for writing the message to.
It
must have a write() method.
Optional mangle_from_ is a flag that, when True (the default if
policy
is not set), escapes From_ lines in the body of the message by
putting
a `>' in front of them.
Optional maxheaderlen specifies the longest length for a
non-continued
header. When a header line is longer (in characters, with tabs
expanded to 8 spaces) than maxheaderlen, the header will split as
defined in the Header class. Set maxheaderlen to zero to disable
header wrapping. The default is 78, as recommended (but not
required)
by RFC 2822.
The policy keyword specifies a policy object that controls a number
of
aspects of the generator's operation. If no policy is
specified,
the policy associated with the Message object passed to the
flatten method is used.
NT)�mangle_from_�_fp�
_mangle_from_�maxheaderlenr)�self�outfprrr�r�!/usr/lib64/python3.6/generator.py�__init__$szGenerator.__init__cCs|jj|�dS)N)r
�write)r�srrrrDszGenerator.writeFcCs�|jdkr|jn|j}|dk r*|j|d�}|jdk rB|j|jd�}|j|_|j|j�|_d|_|j|j�|_|j}|j}zL||_||_|r�|j �}|s�dt
jt
j
��}|j||j�|j
|�Wd||_||_XdS)a�Print the message
object tree rooted at msg to the output file
specified when the Generator instance was created.
unixfrom is a flag that forces the printing of a Unix From_
delimiter
before the first object in the message tree. If the original
message
has no From_ delimiter, a `standard' one is crafted. By
default, this
is False to inhibit the printing of any From_ delimiter.
Note that for subobjects, no From_ line is printed.
linesep specifies the characters used to indicate a new line in
the output. The default value is determined by the policy
specified
when the Generator instance was created or, if none was specified,
from the policy associated with the msg.
N)�linesep)�max_line_length�zFrom nobody
)r�clonerr�_NL�_encode�_encoded_NLZ_EMPTY�_encoded_EMPTYZget_unixfrom�timeZctimer�_write)r�msg�unixfromrrZold_gen_policyZold_msg_policyZufromrrr�flattenHs,
zGenerator.flattencCs|j||jd|jd�S)z1Clone
this generator with the exact same
options.N)r)� __class__rr)r�fprrrryszGenerator.clonecCst�S)N)r)rrrr�_new_buffer�szGenerator._new_buffercCs|S)Nr)rrrrrr�szGenerator._encodecCsX|sdStj|�}x*|dd�D]}|j|�|j|j�q
W|drT|j|d�dS)N����r(r()�NLCRE�splitrr)r�lines�linerrr�_write_lines�s
zGenerator._write_linescCs�|j}z"d|_|j�|_}|j|�Wd||_|j}|`X|rht|�}|jd|d�|jd|d�t|dd�}|dkr�|j|�n||�|jj|j ��dS)Nzcontent-transfer-encodingrzcontent-typer'�_write_headers)
r
�
_munge_cter&� _dispatchrZreplace_header�getattrr.r�getvalue)rr!ZoldfpZsfpZ munge_cte�methrrrr
�s"zGenerator._writecCst|j�}|j�}tj||f�jdd�}t|d|d�}|dkrh|jdd�}t|d|d�}|dkrh|j}||�dS)N�-r Z_handle_)�get_content_maintype�get_content_subtype�
UNDERSCORE�join�replacer1�
_writeBody)rr!�main�subZspecificr3Zgenericrrrr0�szGenerator._dispatchcCs:x(|j�D]\}}|j|jj||��q
W|j|j�dS)N)� raw_itemsrrZfoldr)rr!�h�vrrrr.�szGenerator._write_headerscCs�|j�}|dkrdSt|t�s.tdt|���t|j�r~|jd�}|dk r~t|�}|d=|j ||�|j�}|d|df|_
|jr�tj
d|�}|j|�dS)Nzstring payload expected:
%s�charsetzcontent-transfer-encodingzcontent-typez>From
)�get_payload�
isinstance�str� TypeError�typer�_payloadZ get_paramrZset_payloadr/r�fcrer<r-)rr!�payloadr@rrr�_handle_text�s"
zGenerator._handle_textcCs�g}|j�}|dkrg}n(t|t�r2|j|�dSt|t�sB|g}x>|D]6}|j�}|j|�}|j|d|jd�|j |j
��qHW|j�}|s�|jj
|�}|j|�}|j|�|jdk r�|jr�tjd|j�} n|j} |j| �|j|j�|jd||j�|�r|jj|jd��x4|D],}
|j|jd||j�|jj|
��qW|j|jd|d|j�|jdk �r�|j�r�tjd|j�}n|j}|j|�dS)NF)r"rz>From
z--r)rArBrCr�listr&rr#r�appendr2Zget_boundaryrr8�_make_boundaryZset_boundary�preamblerrGr<r-r
�pop�epilogue)rr!ZmsgtextsZsubparts�partr�g�boundaryZalltextrMZ body_partrOrrr�_handle_multipart�sJ
zGenerator._handle_multipartcCs0|j}|jdd�|_z|j|�Wd||_XdS)Nr)r)rrrS)rr!�prrr�_handle_multipart_signed8s
z"Generator._handle_multipart_signedcCs�g}x�|j�D]t}|j�}|j|�}|j|d|jd�|j�}|j|j�}|rx|d|jkrx|j |jj
|dd���q|j |�qW|jj|jj
|��dS)NF)r"rr'r(r()
rAr&rr#rr2r*rrrKr8r
r)rr!ZblocksrPrrQ�textr+rrr�_handle_message_delivery_statusCs
z)Generator._handle_message_delivery_statuscCs^|j�}|j|�}|j}t|t�rD|j|jd�d|jd�|j�}n
|j |�}|j
j|�dS)NrF)r"r)r&rrFrBrJr#rArr2rr
r)rr!rrQrHrrr�_handle_messageXs
zGenerator._handle_messagecCsztjtj�}d t|d}|dkr(|S|}d}xD|jdtj|�dtj�}|j |�sZP|dt
|�}|d7}q2W|S)
N�=�z==rz^--z(--)?$�.r'z===============)�randomZ randrange�sys�maxsize�_fmt�_compile_re�re�escape� MULTILINE�searchrC)�clsrV�tokenrR�bZcounterZcrerrrrLqs
zGenerator._make_boundarycCstj||�S)N)ra�compile)rer�flagsrrrr`�szGenerator._compile_re)NN)FN)N)�__name__�
__module__�__qualname__�__doc__rrr#rr&rr-r
r0r.rIr:rSrUrWrX�classmethodrLr`rrrrrs*
1#
:csPeZdZdZdd�Zdd�Zdd�Zdd �Z�fd
d�ZeZ e
dd
��Z�ZS)ra�Generates a bytes version of a Message object
tree.
Functionally identical to the base Generator except that the output is
bytes and not string. When surrogates were used in the input to encode
bytes, these are decoded back to bytes for output. If the policy has
cte_type set to 7bit, then the message is transformed such that the
non-ASCII bytes are properly content transfer encoded, using the
charset
unknown-8bit.
The outfp object must accept bytes in its write method.
cCs|jj|jdd��dS)N�ascii�surrogateescape)r
r�encode)rrrrrr�szBytesGenerator.writecCst�S)N)r)rrrrr&�szBytesGenerator._new_buffercCs
|jd�S)Nro)rq)rrrrrr�szBytesGenerator._encodecCs<x*|j�D]\}}|jj|jj||��q
W|j|j�dS)N)r=r
rrZfold_binaryr)rr!r>r?rrrr.�szBytesGenerator._write_headerscs^|jdkrdSt|j�rJ|jjdkrJ|jr<tjd|j�|_|j|j�ntt |�j
|�dS)NZ7bitz>From
)rFrrZcte_typerrGr<r-�superrrI)rr!)r$rrrI�s
zBytesGenerator._handle_textcCstj|jd�|�S)Nro)rarhrq)rerrirrrr`�szBytesGenerator._compile_re)
rjrkrlrmrr&rr.rIr:rnr`�
__classcell__rr)r$rr�s
zD[Non-text
(%(type)s) part of message omitted, filename
%(filename)s]c@s(eZdZdZddd�dd�Zdd�ZdS) rz�Generates
a text representation of a message.
Like the Generator base class, except that non-text parts are
substituted
with a format string representing the part.
N)rcCs.tj|||||d�|dkr$t|_n||_dS)a�Like
Generator.__init__() except that an additional optional
argument is allowed.
Walks through all subparts of a message. If the subpart is of main
type `text', then it prints the decoded payload of the
subpart.
Otherwise, fmt is a format string that is used instead of the
message
payload. fmt is expanded with the following keywords (in
%(keyword)s format):
type : Full MIME type of the non-text part
maintype : Main MIME type of the non-text part
subtype : Sub-MIME type of the non-text part
filename : Filename of the non-text part
description: Description associated with the non-text part
encoding : Content transfer encoding of the non-text part
The default value for fmt is None, meaning
[Non-text (%(type)s) part of message omitted, filename
%(filename)s]
)rN)rr�_FMTr_)rrrrZfmtrrrrr�s
zDecodedGenerator.__init__cCs�x�|j�D]v}|j�}|dkr4t|jdd�|d�q
|dkr>q
t|j|j�|j�|j�|jd�|jdd�|jd d
�d�|d�q
WdS)NrVF)�decode)�fileZ multipartz
[no
filename]zContent-Descriptionz[no
description]zContent-Transfer-Encodingz
[no
encoding])rE�maintype�subtype�filename�description�encoding) �walkr5�printrAr_Zget_content_typer6�get_filename�get)rr!rPrwrrrr0�s
zDecodedGenerator._dispatch)NNN)rjrkrlrmrr0rrrrr�sr'z%%0%dd)rm�__all__rar]rr\�copyr�iorrZemail.utilsrr7�NLrhr)rcrGrrrtr�len�reprr^Z_widthr_rLrrrr�<module>s*
p3;