Ë
    äÿæiT	  ã                  ó"  — 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y)é    )ÚannotationsN)ÚBytesIOé   )Ú_TYPE_FIELD_VALUE_TUPLEÚRequestFieldzutf-8é   c                 ón   — t        j                  t        j                  d«      «      j	                  «       S )zN
    Our embarrassingly-simple replacement for mimetools.choose_boundary.
    é   )ÚbinasciiÚhexlifyÚosÚurandomÚdecode© ó    úe/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/urllib3/filepost.pyÚchoose_boundaryr      s&   € ô ×ÑœBŸJ™J r›NÓ+×2Ñ2Ó4Ð4r   c              #  óÆ   K  — t        | t        j                  «      r| j                  «       }n| }|D ]+  }t        |t        «      r|–— Œt	        j
                  |Ž –— Œ- y­w)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)ÚfieldsÚiterableÚfields      r   Úiter_field_objectsr      sP   è ø€ ô �&œ&Ÿ.™.Ô)Ø—<‘<“>‰àˆãˆÜ�eœ\Ô*Ø‹Kä×*Ñ*¨EÐ2Ó2ñ	 ùs   ‚AA!c                óD  — t        «       }|€
t        «       }t        | «      D ]Â  }|j                  d|› d�j	                  d«      «       t        |«      j                  |j                  «       «       |j                  }t        |t        «      rt        |«      }t        |t        «      rt        |«      j                  |«       n|j                  |«       |j                  d«       ŒÄ |j                  d|› d�j	                  d«      «       d|› �}|j                  «       |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`.
    z--z
zlatin-1s   
z--
zmultipart/form-data; boundary=)r   r   r   ÚwriteÚencodeÚwriterÚrender_headersÚdatar   ÚintÚstrÚgetvalue)r   ÚboundaryÚbodyr   r#   Úcontent_types         r   Úencode_multipart_formdatar*   3   sò   € ô ‹9€DØÐÜ"Ó$ˆä# FÖ+ˆØ�
‰
�R˜�z Ð&×-Ñ-¨iÓ8Ô9äˆt‹×Ñ˜5×/Ñ/Ó1Ô2Ø�z‰zˆä�dœCÔ Ü�t“9ˆDä�dœCÔ Ü�4‹L×Ñ˜tÕ$à�J‰J�tÔà�
‰
�7Õð ,ð  	‡J�J��H�:˜VÐ$×+Ñ+¨IÓ6Ô7à3°H°:Ð>€Là�=‰=‹?˜LÐ(Ð(r   )Úreturnr%   )r   Ú_TYPE_FIELDSr+   ztyping.Iterable[RequestField])N)r   r,   r'   z
str | Noner+   ztuple[bytes, str])Ú
__future__r   r   Úcodecsr   r   Úior   r   r   r   Úlookupr!   ÚSequenceÚUnionÚtupler%   Ú_TYPE_FIELDS_SEQUENCEr   r,   r   r   r*   r   r   r   Ú<module>r5      s°   ðÝ "ã Û Û 	Û Ý ç 9à	ˆ�‰�wÓ	 Ñ	"€àŸ™Ø
‡L�L��sÐ3Ð3Ñ4°lÐBÑCñÐ ð �|‰|ØØ
‡N�N�3Ð/Ð/Ñ0ð2ñ€ó5ó3ð. 26ð&)Øð&)Ø$.ð&)àô&)r   