U oÏ aˆ ã@sˆddlmZddlZddlZddlZddlmZddlmZddl m Z ddl m Z e  d¡d Zd d „Zd d „Zdd„Zddd„ZdS)é)Úabsolute_importN)ÚBytesIOé)Úsix)Úb)Ú RequestFieldzutf-8écCs$t t d¡¡}tjs | d¡}|S)zN Our embarrassingly-simple replacement for mimetools.choose_boundary. éÚascii)ÚbinasciiÚhexlifyÚosÚurandomrÚPY2Údecode)Úboundary©rú]C:\Users\vtejo\AppData\Local\Temp\pip-unpacked-wheel-6mt8ur68\pip\_vendor\urllib3\filepost.pyÚchoose_boundarys rccsJt|tƒrt |¡}nt|ƒ}|D]"}t|tƒr8|Vq"tj|ŽVq"dS)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ÚfieldrrrÚiter_field_objectss   rcCs,t|tƒrdd„t |¡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ÚvrrrÚ :sziter_fields..css|]\}}||fVqdSrrrrrrr#<s)rrrr)rrrrÚ iter_fields-s r$cCs¸tƒ}|dkrtƒ}t|ƒD]p}| td|ƒ¡t|ƒ | ¡¡|j}t|t ƒr\t |ƒ}t|t j ƒrxt|ƒ |¡n | |¡| d¡q| td|ƒ¡t d|ƒ}|  ¡|fS)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)rrrÚwriterÚwriterÚrender_headersÚdatarÚintÚstrrÚ text_typeÚgetvalue)rrÚbodyrr(Ú content_typerrrÚencode_multipart_formdata?s       r/)N)Ú __future__rr Úcodecsr ÚiorÚpackagesrZ packages.sixrrrÚlookupr&rrr$r/rrrrÚs