Your IP : 216.73.216.213


Current Path : /opt/alt/python37/lib/python3.7/site-packages/logilab/common/__pycache__/
Upload File :
Current File : //opt/alt/python37/lib/python3.7/site-packages/logilab/common/__pycache__/umessage.cpython-37.pyc

B

�d{T��@s�dZdZddlZddlmZddlZejdkrLddlmZm	Z	ddl
mZnddlmZm	Z	ddl
mZddlmZydd	lmZWnek
r�eZYnXddlmZd
d�Zdd
�Zdd�ZGdd�d�ZdS)z1Unicode email support (extends email from stdlib)zrestructuredtext en�N)�search_function)��)�	parseaddr�	parsedate)�
decode_header)�datetime)�DateTimecCsRg}x.t|�D]"\}}|sd}|�|�|d��qWtjdkrHd�|�Sd�|�S)Nziso-8859-15�replace)�r� �)r�append�decode�sys�version_info�join)�string�parts�decoded�charset�r�H/opt/alt/python37/lib/python3.7/site-packages/logilab/common/umessage.py�	decode_QP*s

rcCs,ytt�|��Stjjk
r&dSXdS)Nr
)�UMessage�email�message_from_file�Errors�MessageParseError)�fdrrrr7srcCs,ytt�|��Stjjk
r&dSXdS)Nr
)rr�message_from_stringrr)rrrrr =sr c@s�eZdZdZdd�Zd&dd�Zdd�Zd'd
d�Zdd
�Zdd�Z	dd�Z
ejdkrxd(dd�Z
dd�Zdd�Zd)dd�Zn$d*dd�Z
dd�Zdd�Zd+dd�Zd d!�Zd"d#�Zd,d$d%�ZdS)-rzMEncapsulates an email.Message instance and returns only unicode objects.
    cCs
||_dS)N)�message)�selfr!rrr�__init__GszUMessage.__init__NcCs|j�||�}|rt|�S|S)N)r!�getr)r"�header�default�valuerrrr$LszUMessage.getcCs
|�|�S)N)r$)r"r%rrr�__getitem__RszUMessage.__getitem__rcCsdd�|j�||�D�S)NcSsg|]}|dk	rt|��qS)N)r)�.0�valrrr�
<listcomp>Vsz$UMessage.get_all.<locals>.<listcomp>)r!�get_all)r"r%r&rrrr,UszUMessage.get_allcCs
|j��S)N)r!�is_multipart)r"rrrr-YszUMessage.is_multipartcCs
|j��S)N)r!�get_boundary)r"rrrr.\szUMessage.get_boundaryccs"x|j��D]}t|�VqWdS)N)r!�walkr)r"�partrrrr/_sz
UMessage.walk)rrFcCs�|j}|dkrn|�||�}t|t�r2dd�|D�S|��dkrB|S|��pLd}t|�dkr^d}t|pfd|d�St|�||��}|S)NcSsg|]}t|��qSr)r)r)�msgrrrr+jsz(UMessage.get_payload.<locals>.<listcomp>�textz
iso-8859-1r
r
)	r!�get_payload�
isinstance�list�get_content_maintype�get_content_charsetr�unicoder)r"�indexrr!�payloadrrrrr3es
zUMessage.get_payloadcCst|j���S)N)r8r!r6)r"rrrr6vszUMessage.get_content_maintypecCst|j���S)N)r8r!�get_content_type)r"rrrr;yszUMessage.get_content_typecCs:|j�|�}||kr|Syt|�Stk
r4dSXdS)Nzerror decoding filename)r!�get_filenamer8�UnicodeDecodeError)r"�failobjr'rrrr<|szUMessage.get_filenamecCsJ|j}|dkr6|�||�}t|t�r2dd�|D�S|St|�||��}|S)NcSsg|]}t|��qSr)r)r)r1rrrr+�sz(UMessage.get_payload.<locals>.<listcomp>)r!r3r4r5r)r"r9rr!r:rrrr3�s
cCs
|j��S)N)r!r6)r"rrrr6�scCs
|j��S)N)r!r;)r"rrrr;�scCs|j�|�S)N)r!r<)r"r>rrrr<�scCs:g}x*|j��D]}|�d||�|�f�qWd�|�S)z=return an unicode string containing all the message's headersz%s: %s�
)r!�keysrr$r)r"�valuesr%rrr�headers�szUMessage.headerscCs8g}x.|�|d�D]}t|�\}}|�||f�qW|S)z�return a list of 2-uple (name, address) for the given address (which
        is expected to be an header containing address such as from, to, cc...)
        r)r,rr)r"r%ZpersonsZperson�nameZmailrrr�multi_addrs�s
zUMessage.multi_addrscCs�|�d�}|dkrR|rR|j��}|dk	rRy|�dd�d}Wntk
rPYnX|dk	r�t|�}|r�tjr|t|dd��St	|dd��S|s�dS|S)zqreturn a datetime object for the email's date or None if no date is
        set or if it can't be parsed
        �dateNrr�)
r$r!�get_unixfrom�split�
IndexErrorr�lgcZUSE_MX_DATETIMEr	r)r"Zalternative_sourceZ
return_strr'Z	unix_fromZ	datetuplerrrrE�s"

z
UMessage.date)N)r)NF)N)NF)N)FF)�__name__�
__module__�__qualname__�__doc__r#r$r(r,r-r.r/rrr3r6r;r<rBrDrErrrrrCs(






r)rN�
__docformat__r�	encodingsrrr�email.utilsrrZemail.headerrZemail.UtilsZemail.HeaderrZmx.DateTimer	�ImportErrorZlogilab.common�commonrJrrr rrrrr�<module>s&