o
    ^"h	                     @   s   d dl mZ d dlZd dlZd dlZd dlmZ ddlmZ ddl	m
Z
 ddlmZ edd	 Zd
d Zdd Zdd ZdddZdS )    )absolute_importN)BytesIO   )RequestField)six)bzutf-8   c                  C   s$   t td} tjs| d} | S )zN
    Our embarrassingly-simple replacement for mimetools.choose_boundary.
       ascii)binasciihexlifyosurandomr   PY2decode)boundary r   q/var/www/project2/testadmin.ninositsolution.com/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/filepost.pychoose_boundary   s   
r   c                 c   sL    t | trt| }nt| }|D ]}t |tr|V  qtj| V  qdS )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_objects   s   

r   c                 C   s,   t | trdd t| D S dd | 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.
    c                 s       | ]	\}}||fV  qd S Nr   .0kvr   r   r   	<genexpr>:       ziter_fields.<locals>.<genexpr>c                 s   r   r   r   r    r   r   r   r$   <   r%   )r   r   r   r   )r   r   r   r   iter_fields-   s   
r&   c                 C   s   t  }|du r
t }t| D ]8}|td|  t||  |j}t|t	r.t
|}t|tjr<t|| n|| |d q|td|  t
d| }| |fS )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)r   r   r   writer   writerrender_headersdatar   intstrr   	text_typegetvalue)r   r   bodyr   r*   content_typer   r   r   encode_multipart_formdata?   s    

r1   r   )
__future__r   r   codecsr   ior   r   r   packagesr   packages.sixr   lookupr(   r   r   r&   r1   r   r   r   r   <module>   s    
