5]sB d dl mZ d dlZd dlZd dlZd dlZd dlmZ ddlm Z m
Z
ej d d Zej
ej ej ee f e
f Zej eej ee f f Zdd
ZddZ dddZdS ) )annotationsN)BytesIO )_TYPE_FIELD_VALUE_TUPLERequestFieldzutf-8 returnstrc r t j t j d S )zN
Our embarrassingly-simple replacement for mimetools.choose_boundary.
)binasciihexlifyosurandomdecode b/builddir/build/BUILD/cloudlinux-venv-1.0.10/venv/lib/python3.11/site-packages/urllib3/filepost.pychoose_boundaryr s) BJrNN++22444r fields_TYPE_FIELDStyping.Iterable[RequestField]c # K t | t j r| }n| }|D ],}t |t r|V t j | V -dS )z
Iterate over fields.
Supports list of (k, v) tuples and dicts, and lists of
:class:`~urllib3.fields.RequestField`.
N)
isinstancetypingMappingitemsr from_tuples)r iterablefields r iter_field_objectsr! s} &&.)) <<>> 3 3e\** 3KKKK*E22222 3 3r boundary
str | Nonetuple[bytes, str]c t }|t }t | D ]}| d| d d t | | |j }t |t rt | }t |t r#t | | n| | | d | 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! writeencodewriterrender_headersdatar intr
getvalue)r r" bodyr r* content_types r encode_multipart_formdatar/ 3 sM 99D"$$#F++
&&&&--i88999t5//11222zdC t99DdC 4LLt$$$$JJt
7JJ$H$$$++I66777>H>>L==??L((r )r r
)r r r r )N)r r r" r# r r$ )
__future__r r
codecsr r ior r r r lookupr( SequenceUnionTupler
_TYPE_FIELDS_SEQUENCEr r r r! r/ r r r