� ��^i� ���ddlmZddlZddlZddlZddlmZddlmZddl m Z ddl m Z ej d��d Zd �Zd �Zd �Zdd �ZdS)�)�absolute_importN)�BytesIO�)� RequestField)�six)�bzutf-8�c��tjtjd����}tjs|�d��}|S)zN Our embarrassingly-simple replacement for mimetools.choose_boundary. ��ascii)�binascii�hexlify�os�urandomr�PY2�decode)�boundarys ��/builddir/build/BUILDROOT/alt-python311-pip-21.3.1-4.el8.x86_64/opt/alt/python311/lib/python3.11/site-packages/pip/_vendor/urllib3/filepost.py�choose_boundaryrs<����� �2���/�/�H� �7�,��?�?�7�+�+�� �O�c#��K�t|t��rtj|��}nt |��}|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)� isinstance�dictr� iteritems�iterr� from_tuples)�fields�i�fields r�iter_field_objectsr s������&�$���� �M�&� !� !��� ��L�L���3�3�� �e�\� *� *� 3��K�K�K�K��*�E�2� 2� 2� 2� 2� 3�3rc��t|t��rd�tj|��D��Sd�|D��S)a- .. deprecated:: 1.6 Iterate over fields. The addition of :class:`~urllib3.fields.RequestField` makes this function obsolete. Instead, use :func:`iter_field_objects`, which returns :class:`~urllib3.fields.RequestField` objects. Supports list of (k, v) tuples and dicts. c3�$K�|] \}}||fV�� dS�N���.0�k�vs r� ziter_fields..:s*����9�9�4�1�a��A��9�9�9�9�9�9rc3�$K�|] \}}||fV�� dSr#r$r%s rr)ziter_fields..<s*���� &� &�t�q�!�Q��F� &� &� &� &� &� &r)rrrr)rs r� iter_fieldsr+-sH���&�$���:�9�9�3�=��#8�#8�9�9�9�9� &� &�v� &� &� &�&rc���t��}|�t��}t|��D]�}|�t d|z����t |���|�����|j}t|t��rt|��}t|tj ��r#t |���|��n|�|��|�d����|�t d|z����td|z��}|� ��|fS)aQ 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`). :param boundary: If not specified, then a random boundary will be generated using :func:`urllib3.filepost.choose_boundary`. Nz--%s s z--%s-- z multipart/form-data; boundary=%s)rrr �writer�writer�render_headers�datar�int�strr� text_type�getvalue)rr�bodyrr0� content_types r�encode_multipart_formdatar7?s;�� �9�9�D���"�$�$��#�F�+�+���� � � �1�Z�8�,�-�-�.�.�.��t� � ���5�/�/�1�1�2�2�2��z�� �d�C� � � ��t�9�9�D� �d�C�M� *� *� � �4�L�L� � �t� $� $� $� $� �J�J�t� � � � � � �7������J�J�q���*�+�+�,�,�,��9�H�D�E�E�L� �=�=�?�?�L� (�(rr#)� __future__rr �codecsr�iorrr�packagesr� packages.sixr�lookupr.rr r+r7r$rr�r>s���&�&�&�&�&�&����� � � � � � � � ������� � � � � � ������������� ���w� � �� "�����3�3�3�('�'�'�$#)�#)�#)�#)�#)�#)r