a
    ǏPf	                     @   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   ]/var/www/html/python-backend/venv/lib/python3.9/site-packages/pip/_vendor/urllib3/filepost.pychoose_boundary   s    
r   c                 c   sJ   t | trt| }nt| }|D ]"}t |tr8|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   s   | ]\}}||fV  qd S Nr   .0kvr   r   r   	<genexpr>:       ziter_fields.<locals>.<genexpr>c                 s   s   | ]\}}||fV  qd S 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 ]p}|td|  t||  |j}t|t	r\t
|}t|tjrxt|| 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     

r0   )N)
__future__r   r   codecsr   ior   r   r   packagesr   Zpackages.sixr   lookupr'   r   r   r%   r0   r   r   r   r   <module>   s   
