
]'v_÷  ã               @   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
 d „  Z d d „  Z d d „  Z d d d „ Z d S)é    )Úabsolute_importN)Úuuid4)ÚBytesIO)Úbé   )ÚRequestFieldzutf-8é   c               C   s
   t  ƒ  j S)zM
    Our embarassingly-simple replacement for mimetools.choose_boundary.
    )r   Úhex© r
   r
   ú2/usr/lib/python3/dist-packages/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ÚdictÚsixÚ	iteritemsÚiterr   Z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>6   s    ziter_fields.<locals>.<genexpr>c             s   s!   |  ] \ } } | | f Vq d  S)Nr
   )r   r   r   r
   r
   r   r   8   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)aJ  
    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`.
    Nz--%s
s   
z--%s--
z multipart/form-data; boundary=%s)r   r   r   Úwriter   ÚwriterZrender_headersÚdatar   ÚintÚstrr   Z	text_typeÚgetvalue)r   ÚboundaryZbodyr   r   Zcontent_typer
   r
   r   Úencode_multipart_formdata;   s     			r"   )Z
__future__r   ÚcodecsZuuidr   Úior   r   r   r   r   Úlookupr   r   r   r   r"   r
   r
   r
   r   Ú<module>   s   