
0c@_ˆ	  ã               @   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
 d „  Z d d „  Z d d „  Z d d d „ Z d S)é    )Úabsolute_importN)ÚBytesIOé   )Úsix)Úb)ÚRequestFieldzutf-8é   c              C   s4   t  j t j d ƒ ƒ }  t j s0 |  j d ƒ }  |  S)zN
    Our embarrassingly-simple replacement for mimetools.choose_boundary.
    é   Úascii)ÚbinasciiÚhexlifyÚosÚurandomr   ÚPY2Údecode)Úboundary© r   ú;/tmp/pip-build-jynh7p1z/pip/pip/_vendor/urllib3/filepost.pyÚchoose_boundary   s    	r   c             c   sg   t  |  t ƒ r! t j |  ƒ } n t |  ƒ } x3 | D]+ } t  | t ƒ rQ | Vq4 t j | Œ  Vq4 Wd S)z†
    Iterate over fields.

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

    N)Ú
isinstanceÚdictr   Ú	iteritemsÚiterr   Úfrom_tuples)ÚfieldsÚiÚfieldr   r   r   Úiter_field_objects   s    r   c             C   s:   t  |  t ƒ r) d d „  t j |  ƒ Dƒ Sd d „  |  Dƒ S)a-  
    .. 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)Nr   )Ú.0ÚkÚvr   r   r   ú	<genexpr>:   s    ziter_fields.<locals>.<genexpr>c             s   s!   |  ] \ } } | | f Vq d  S)Nr   )r   r   r    r   r   r   r!   <   s    )r   r   r   r   )r   r   r   r   Úiter_fields-   s    r"   c             C   s  t  ƒ  } | d k r t ƒ  } xª t |  ƒ D]œ } | j t d | ƒ ƒ t | ƒ j | j ƒ  ƒ | j } t | t	 ƒ r… t
 | ƒ } t | t j ƒ r­ t | ƒ j | ƒ n | j | ƒ | j d ƒ q+ W| j t d | ƒ ƒ t
 d | ƒ } | j ƒ  | f S)aQ  
    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`.
    Nz--%s
s   
z--%s--
z multipart/form-data; boundary=%s)r   r   r   Úwriter   ÚwriterÚrender_headersÚdatar   ÚintÚstrr   Ú	text_typeÚgetvalue)r   r   Úbodyr   r&   Úcontent_typer   r   r   Úencode_multipart_formdata?   s     			r-   )Ú
__future__r   r   Úcodecsr   Úior   Úpackagesr   Zpackages.sixr   r   r   Úlookupr$   r   r   r"   r-   r   r   r   r   Ú<module>   s   
