VY ã@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écCs tƒjS)zN Our embarrassingly-simple replacement for mimetools.choose_boundary. )rÚhex©r r úF/tmp/pip-build-04bmskau/requests/requests/packages/urllib3/filepost.pyÚchoose_boundarysr ccsgt|tƒr!tj|ƒ}n t|ƒ}x3|D]+}t|tƒrQ|Vq4tj|ŒVq4WdS)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_objectss  rcCs:t|tƒr)dd„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 rcCstƒ}|dkrtƒ}xªt|ƒD]œ}|jtd|ƒƒt|ƒj|jƒƒ|j}t|t ƒr…t |ƒ}t|t j ƒr­t|ƒj|ƒn |j|ƒ|jdƒq+W|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ÚwriterÚrender_headersÚdatarÚintÚstrrÚ text_typeÚgetvalue)rÚboundaryÚbodyrrÚ content_typer r r Úencode_multipart_formdata;s      r')Ú __future__rÚcodecsÚuuidrÚiorÚpackagesrZ packages.sixrrrÚlookuprr rrr'r r r r Ús