o
    ûÞhT	  ã                   @  s°   d dl mZ d dlZd dlZd dlZd dlZd dlmZ ddlm	Z	m
Z
 e d¡d Zejejeee	f e
f  Zejeejee	f f Zdd
d„Zddd„Z	dddd„ZdS )é    )ÚannotationsN)ÚBytesIOé   )Ú_TYPE_FIELD_VALUE_TUPLEÚRequestFieldzutf-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   úP/var/www/html/premium_crap/venv/lib/python3.10/site-packages/urllib3/filepost.pyÚchoose_boundary   s   r   ÚfieldsÚ_TYPE_FIELDSútyping.Iterable[RequestField]c                 c  sH   � t | tjƒr|  ¡ }n| }|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Ú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 ƒ }|du r
tƒ }t| ƒD ]:}| d|› d� d¡¡ t|ƒ | ¡ ¡ |j}t|t	ƒr1t
|ƒ}t|t
ƒr>t|ƒ |¡ n| |¡ | d¡ q| d|› d� d¡¡ d|› �}| ¡ |fS )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
zlatin-1s   
z--
zmultipart/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(    ÿÿÿ

ÿ