ó
Ã#Æ[c           @@  sē   d  d l  m Z d  d l Z d  d l Z d  d l Z d  d l m Z d d l m Z d d l	 m
 Z
 d d l m Z e j d  d	 Z d
   Z d   Z d   Z d d  Z d S(   i    (   t   absolute_importN(   t   BytesIOi   (   t   six(   t   b(   t   RequestFields   utf-8i   c          C@  s7   t  j t j d   }  t j r3 |  j d  }  n  |  S(   sN   
    Our embarrassingly-simple replacement for mimetools.choose_boundary.
    i   t   ascii(   t   binasciit   hexlifyt   ost   urandomR   t   PY3t   decode(   t   boundary(    (    s/   lib/python2.7/site-packages/urllib3/filepost.pyt   choose_boundary   s    	c         c@  sg   t  |  t  r! t j |   } n t |   } x3 | D]+ } t  | t  rQ | Vq4 t j |   Vq4 Wd S(   s   
    Iterate over fields.

    Supports list of (k, v) tuples and dicts, and lists of
    :class:`~urllib3.fields.RequestField`.

    N(   t
   isinstancet   dictR   t	   iteritemst   iterR   t   from_tuples(   t   fieldst   it   field(    (    s/   lib/python2.7/site-packages/urllib3/filepost.pyt   iter_field_objects   s    c         C@  s4   t  |  t  r& d   t j |   D Sd   |  D S(   s-  
    .. deprecated:: 1.6

    Iterate over fields.

    The addition of :class:`~urllib3.fields.RequestField` makes this function
    obsolete. Instead, use :func:`iter_field_objects`, which returns
    :class:`~urllib3.fields.RequestField` objects.

    Supports list of (k, v) tuples and dicts.
    c         s@  s!   |  ] \ } } | | f Vq d  S(   N(    (   t   .0t   kt   v(    (    s/   lib/python2.7/site-packages/urllib3/filepost.pys	   <genexpr>:   s    c         s@  s!   |  ] \ } } | | f Vq d  S(   N(    (   R   R   R   (    (    s/   lib/python2.7/site-packages/urllib3/filepost.pys	   <genexpr><   s    (   R   R   R   R   (   R   (    (    s/   lib/python2.7/site-packages/urllib3/filepost.pyt   iter_fields-   s    c         C@  s  t    } | d k r! t   } n  x­ t |   D] } | j t d |   t |  j | j    | j } t	 | t
  r t |  } n  t	 | t j  rģ t |  j |  n | j |  | j d  q. W| j t d |   t d |  } | j   | f S(   sQ  
    Encode a dictionary of ``fields`` using the multipart/form-data MIME format.

    :param fields:
        Dictionary of fields or list of (key, :class:`~urllib3.fields.RequestField`).

    :param boundary:
        If not specified, then a random boundary will be generated using
        :func:`urllib3.filepost.choose_boundary`.
    s   --%s
s   
s   --%s--
s    multipart/form-data; boundary=%sN(   R   t   NoneR   R   t   writeR   t   writert   render_headerst   dataR   t   intt   strR   t	   text_typet   getvalue(   R   R   t   bodyR   R   t   content_type(    (    s/   lib/python2.7/site-packages/urllib3/filepost.pyt   encode_multipart_formdata?   s     		(   t
   __future__R    R   t   codecsR   t   ioR   t   packagesR   t   packages.sixR   R   R   t   lookupR   R   R   R   R   R&   (    (    (    s/   lib/python2.7/site-packages/urllib3/filepost.pyt   <module>   s   	
		