ó
ÅVEXc           @@  s¦   d  d l  m Z d  d l Z d  d l m Z d  d l m Z d  d l 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   uuid4(   t   BytesIO(   t   bi   (   t   RequestFields   utf-8i   c           C@  s
   t  ƒ  j S(   sM   
    Our embarassingly-simple replacement for mimetools.choose_boundary.
    (   R   t   hex(    (    (    s4   /usr/lib/python2.7/dist-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   dictt   sixt	   iteritemst   iterR   t   from_tuples(   t   fieldst   it   field(    (    s4   /usr/lib/python2.7/dist-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(    (    s4   /usr/lib/python2.7/dist-packages/urllib3/filepost.pys	   <genexpr>6   s    c         s@  s!   |  ] \ } } | | f Vq d  S(   N(    (   R   R   R   (    (    s4   /usr/lib/python2.7/dist-packages/urllib3/filepost.pys	   <genexpr>8   s    (   R   R   R	   R
   (   R   (    (    s4   /usr/lib/python2.7/dist-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(   sJ  
    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:`mimetools.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   t   boundaryt   bodyR   R   t   content_type(    (    s4   /usr/lib/python2.7/dist-packages/urllib3/filepost.pyt   encode_multipart_formdata;   s     		(   t
   __future__R    t   codecst   uuidR   t   ioR   R	   R   R   R   t   lookupR   R   R   R   R   R!   (    (    (    s4   /usr/lib/python2.7/dist-packages/urllib3/filepost.pyt   <module>   s   			