� ��^c@@s�ddlmZddlZddlZddlZddlmZddlmZddl m Z ddl m Z ej d�d Zd �Zd �Zd �Zdd �ZdS(i(tabsolute_importN(tBytesIOi(tsix(tb(t RequestFieldsutf-8icC@s7tjtjd��}tjs3|jd�}n|S(sN Our embarrassingly-simple replacement for mimetools.choose_boundary. itascii(tbinasciithexlifytosturandomRtPY2tdecode(tboundary((s1/tmp/pip-build-1THPZW/urllib3/urllib3/filepost.pytchoose_boundarys cc@sgt|t�r!tj|�}n t|�}x3|D]+}t|t�rQ|Vq4tj|�Vq4WdS(s� Iterate over fields. Supports list of (k, v) tuples and dicts, and lists of :class:`~urllib3.fields.RequestField`. N(t isinstancetdictRt iteritemstiterRt from_tuples(tfieldstitfield((s1/tmp/pip-build-1THPZW/urllib3/urllib3/filepost.pytiter_field_objectss  cC@s4t|t�r&d�tj|�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. cs@s!|]\}}||fVqdS(N((t.0tktv((s1/tmp/pip-build-1THPZW/urllib3/urllib3/filepost.pys :scs@s!|]\}}||fVqdS(N((RRR((s1/tmp/pip-build-1THPZW/urllib3/urllib3/filepost.pys <s(RRRR(R((s1/tmp/pip-build-1THPZW/urllib3/urllib3/filepost.pyt iter_fields-s cC@st�}|dkr!t�}nx�t|�D]�}|jtd|��t|�j|j��|j}t |t �r�t |�}nt |t j �r�t|�j|�n |j|�|jd�q.W|jtd|��t d|�}|j�|fS(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(RtNoneR RtwriteRtwritertrender_headerstdataRtinttstrRt text_typetgetvalue(RR tbodyRRt content_type((s1/tmp/pip-build-1THPZW/urllib3/urllib3/filepost.pytencode_multipart_formdata?s     (t __future__RRtcodecsRtioRtpackagesRt packages.sixRRRtlookupRR RRRR&(((s1/tmp/pip-build-1THPZW/urllib3/urllib3/filepost.pyts