
    MhT	                       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j        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
ZddZ	 dddZdS )    )annotationsN)BytesIO   )_TYPE_FIELD_VALUE_TUPLERequestFieldzutf-8   returnstrc                 r    t          j        t          j        d                                                    S )zN
    Our embarrassingly-simple replacement for mimetools.choose_boundary.
       )binasciihexlifyosurandomdecode     P/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/urllib3/filepost.pychoose_boundaryr      s)     BJrNN++22444r   fields_TYPE_FIELDStyping.Iterable[RequestField]c              #     K   t          | t          j                  r|                                 }n| }|D ],}t          |t                    r|V  t	          j        | V  -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fields      r   iter_field_objectsr!      s}       &&.)) <<>> 3 3e\** 	3KKKK*E22222	3 3r   boundary
str | Nonetuple[bytes, str]c                   t                      }|t                      }t          |           D ]}|                    d| d                    d                     t          |                              |                                           |j        }t          |t                    rt          |          }t          |t                    r#t          |                              |           n|                    |           |                    d           |                    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_types         r   encode_multipart_formdatar/   3   sM    99D"$$#F++  

&&&&--i88999t5//11222zdC   	t99DdC   	4LLt$$$$JJt

7JJ$H$$$++I66777>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(   SequenceUniontupler
   _TYPE_FIELDS_SEQUENCEr   r   r   r!   r/   r   r   r   <module>r8      s   " " " " " "   				        9 9 9 9 9 9 9 9	w			"
Ls334lBC  |
N3//025 5 5 53 3 3 3. 26&) &) &) &) &) &) &)r   