‹“Reˆ ã@s¾ddlmZddlZddlZddlZddlmZddlmZddl m Z ddl m Z ej dƒd Zd d „Zd d „Zdd„Zddd„ZdS)é)Úabsolute_importN)ÚBytesIOé)Úsix)Úb)Ú RequestFieldzutf-8écCs4tjtjdƒƒ}tjs0|jdƒ}|S)zN Our embarrassingly-simple replacement for mimetools.choose_boundary. éÚascii)ÚbinasciiÚhexlifyÚosÚurandomrÚPY2Údecode)Úboundary©rú‹/builddir/build/BUILDROOT/alt-python35-pip-20.2.4-5.el8.x86_64/opt/alt/python35/lib/python3.5/site-packages/pip/_vendor/urllib3/filepost.pyÚchoose_boundarys rccsgt|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ÚfieldrrrÚ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Úvrrrú :sziter_fields..css!|]\}}||fVqdS)Nr)rrr rrrr!<s)rrrr)rrrrÚ iter_fields-s r"cCstƒ}|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)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-)Ú __future__rr Úcodecsr ÚiorÚpackagesrZ packages.sixrrrÚlookupr$rrr"r-rrrrÚs