e fN @ sO d Z d g Z d d l Z d d l Z d d l Z d d l Z d d l m Z m Z d d l m Z d d l m Z d d l m Z d d l m Z d d l m Z e j Z d Z e j d Z d d Z d d d d Z d d Z d d Z Gd d d Z Gd d d Z Gd d d e Z Gd d d e Z d S)z8Basic message object for the email package object model.Message N)BytesIOStringIO)utils)errors)compat32)charset)decode_bz; z[ \(\)<>@,;:\\"/\[\]\?=]c C sJ t | j d \ } } } | s4 | j d f S| j | j f S)N;)str partitionstrip)paramasepb r 2/opt/alt/python34/lib64/python3.4/email/message.py_splitparam s r Tc C s | d k r t | d k r t | t rf | d 7} t j | d | d | d } d | | f Sy | j d Wn? t k r | d 7} t j | d d } d | | f SYn X| s t j | r d | t j | f Sd | | f Sn | Sd S)a~ Convenience function to format and return a key=value pair. This will quote the value if needed or if quote is true. If value is a three tuple (charset, language, value), it will be encoded according to RFC2231 rules. If it contains non-ascii characters it will likewise be encoded according to RFC2231 rules, using the utf-8 charset and a null language. Nr * z%s=%sasciizutf-8 z%s="%s") len isinstancetupler Zencode_rfc2231encodeUnicodeEncodeError tspecialssearchquote)r valuer! r r r _formatparam( s ! r# c C sO d t | } g } x2| d d d k rJ| d d } | j d } xR | d k r | j d d | | j d d | d r | j d | d } qQ W| d k r t | } n | d | } d | k r$| j d } | d | j j d | | d d j } n | j | j | | d } q W| S)Nr r r "z\"r =)r findcountr indexr lowerappend)sZplistendfir r r _parseparamJ s ;;r/ c C sB t | t r1 | d | d t j | d f St j | Sd S)Nr r r )r r r unquote)r" r r r _unquotevalue^ s "r1 c @ s e Z d Z d Z e d d Z d d Z 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 d d Z d d d Z d d Z d d Z d d Z d! d" Z d# d$ Z d% d&