U ��.e� �@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)�binasciiZhexlify�os�urandomrZPY2�decode)�boundary�r�@/usr/lib/python3.8/site-packages/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�iterrZ 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�writerZrender_headers�datar�int�strrZ text_type�getvalue)rrZbodyrr$Z content_typerrr�encode_multipart_formdata?s       r()N)Z __future__rr �codecsr �iorZpackagesrZ packages.sixrrr�lookupr#rrr!r(rrrr�s