3 �Pf �@s�ddlmZddlZddlmZddlmZddlmZddl m Z ddl m Z ej d �d Zd d �Zd d�Zdd�Zddd�ZdS)�)�absolute_importN)�uuid4)�BytesIO�)�six)�b)� RequestFieldzutf-8�cCst�jS)zN Our embarrassingly-simple replacement for mimetools.choose_boundary. )r�hex�r r �/usr/lib/python3.6/filepost.py�choose_boundarysr ccsNt|t�rtj|�}nt|�}x*|D]"}t|t�r:|Vq$tj|�Vq$WdS)z� Iterate over fields. Supports list of (k, v) tuples and dicts, and lists of :class:`~urllib3.fields.RequestField`. N)� isinstance�dictr� iteritems�iterrZ from_tuples)�fields�i�fieldr r r �iter_field_objectss    rcCs,t|t�rdd�tj|�D�Sdd�|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. css|]\}}||fVqdS)Nr )�.0�k�vr r r � 6sziter_fields..css|]\}}||fVqdS)Nr )rrrr r r r8s)rrrr)rr r r � iter_fields)s rcCs�t�}|dkrt�}x|t|�D]p}|jtd|��t|�j|j��|j}t|t �r^t |�}t|t j �rzt|�j|�n |j|�|jd�qW|jtd|��t d|�}|j �|fS)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)rr r�writer�writerZrender_headers�datar�int�strrZ text_type�getvalue)r�boundaryZbodyrrZ content_typer r r �encode_multipart_formdata;s     r")N)Z __future__r�codecsZuuidr�iorZpackagesrZ packages.sixrrr�lookuprr rrr"r r r r �s