File: //home/arjun/projects/env/lib/python3.10/site-packages/urllib3/__pycache__/filepost.cpython-310.pyc
o
we[ � @ s� d dl mZ d dlZd dlZd dlZd dlZd dlmZ ddlm Z m
Z
e�d�d Zej
ejejee f e
f Zejeejee f f Zdd
d�Zddd�Z dddd�ZdS )� )�annotationsN)�BytesIO� )�_TYPE_FIELD_VALUE_TUPLE�RequestFieldzutf-8� �return�strc C s t �t�d���� S )zN
Our embarrassingly-simple replacement for mimetools.choose_boundary.
� )�binascii�hexlify�os�urandom�decode� r r �I/home/arjun/projects/env/lib/python3.10/site-packages/urllib3/filepost.py�choose_boundary s r �fields�_TYPE_FIELDS�typing.Iterable[RequestField]c c sH � t | tj�r| �� }n| }|D ]}t |t�r|V qtj|� V qdS )z�
Iterate over fields.
Supports list of (k, v) tuples and dicts, and lists of
:class:`~urllib3.fields.RequestField`.
N)�
isinstance�typing�Mapping�itemsr �from_tuples)r �iterable�fieldr r r �iter_field_objects s �
�r �boundary�
str | None�tuple[bytes, str]c C s� t � }|du r
t� }t| �D ]:}|�d|� d��d�� t|��|�� � |j}t|t �r1t
|�}t|t
�r>t|��|� n|�|� |�d� q|�d|� d��d�� d|� �}|�� |fS )a�
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`).
Values are processed by :func:`urllib3.fields.RequestField.from_tuples`.
:param boundary:
If not specified, then a random boundary will be generated using
:func:`urllib3.filepost.choose_boundary`.
Nz--z
zlatin-1s
z--
zmultipart/form-data; boundary=)r r r �write�encode�writer�render_headers�datar �intr �getvalue)r r �bodyr r% �content_typer r r �encode_multipart_formdata3 s
r* )r r )r r r r )N)r r r r r r )�
__future__r r �codecsr
r �ior r r r �lookupr# �Sequence�Union�Tupler �_TYPE_FIELDS_SEQUENCEr r r r r* r r r r �<module> s( ���
�