� ��^i�!����ddlmZddlZddlZddlZddlmZdd�Zd�Z dd d �Z e � d �e dd ��D����d �Z d�ZeZGd�de��ZdS)�)�absolute_importN�)�six�application/octet-streamc�B�|rtj|��dp|S|S)z� Guess the "Content-Type" of a file. :param filename: The filename to guess the "Content-Type" of using :mod:`mimetypes`. :param default: If no "Content-Type" can be guessed, default to `default`. r)� mimetypes� guess_type)�filename�defaults ��/builddir/build/BUILDROOT/alt-python311-pip-21.3.1-4.el8.x86_64/opt/alt/python311/lib/python3.11/site-packages/pip/_vendor/urllib3/fields.py�guess_content_typer s,���<��#�H�-�-�a�0�;�G�;� �N�c����t�tj��r��d���t �fd�dD����s7|�d��d�} |�d��|S#t tf$rYnwxYwtjr��d���tj � �d���|�d����tjr��d����S)a! Helper function to format and quote a single header parameter using the strategy defined in RFC 2231. Particularly useful for header parameters which might contain non-ASCII values, like file names. This follows `RFC 2388 Section 4.4 `_. :param name: The name of the parameter, a string expected to be ASCII only. :param value: The value of the parameter, provided as ``bytes`` or `str``. :ret: An RFC-2231-formatted unicode string. �utf-8c3� �K�|]}|�vV�� dS�N�)�.0�ch�values �r � z.format_header_param_rfc2231..+s'�����/�/�r�r�U�{�/�/�/�/�/�/rz"\ �="�"�asciiz*=) � isinstancer� binary_type�decode�any�encode�UnicodeEncodeError�UnicodeDecodeError�PY2�email�utils�encode_rfc2231)�namer�results ` r �format_header_param_rfc2231r(s ��� �%���)�)�&�� � �W�%�%�� �/�/�/�/�Y�/�/�/� /� /��#�t�t�U�U�U�+�� � �M�M�'� "� "� "��M��#�$6�7� � � � �D� ����  �w�&�� � �W�%�%�� �K� &� &�u�g� 6� 6�E����e�e� $�E� �w�&�� � �W�%�%�� �Ls�A,�,B�?Bz%22z\\)r�\c�f�i|].}|dv�tj|��d�|����/S))�z%{:02X})r�unichr�format)r�ccs r � r/JsE����� � �W� � � � �2��� �)�)�"�-�-� � � r� c�����fd�}tjd�d�����D������}|�||��}|S)Nc�:���|�d��S)Nr)�group)�match�needles_and_replacementss �r �replacerz#_replace_multiple..replacerSs���'�� � �A���7�7r�|c�6�g|]}tj|����Sr)�re�escape)r�needles r � z%_replace_multiple..Ws"��S�S�S��2�9�V�$�$�S�S�Sr)r9�compile�join�keys�sub)rr5r6�patternr's ` r �_replace_multiplerBRst���8�8�8�8�8��j� � � �S�S�3K�3P�3P�3R�3R�S�S�S�T�T���G��[�[��5� )� )�F� �Mrc��t|tj��r|�d��}t |t ��}|�d|�d�S)a� Helper function to format and quote a single header parameter using the HTML5 strategy. Particularly useful for header parameters which might contain non-ASCII values, like file names. This follows the `HTML5 Working Draft Section 4.10.22.7`_ and matches the behavior of curl and modern browsers. .. _HTML5 Working Draft Section 4.10.22.7: https://w3c.github.io/html/sec-forms.html#multipart-form-data :param name: The name of the parameter, a string expected to be ASCII only. :param value: The value of the parameter, provided as ``bytes`` or `str``. :ret: A unicode string, stripped of troublesome characters. rrr)rrrrrB�_HTML5_REPLACEMENTS)r&rs r �format_header_param_html5rE_sL��&�%���)�)�&�� � �W�%�%�� �e�%8� 9� 9�E����u�u�u� %�%rc�V�eZdZdZddefd�Zeefd���Zd�Zd�Z d�Z d d�Z dS) � RequestFielda A data container for request body parameters. :param name: The name of this request field. Must be unicode. :param data: The data/value body. :param filename: An optional filename of the request field. Must be unicode. :param headers: An optional dict-like object of headers to initially use for the field. :param header_formatter: An optional callable that is used to encode and format the headers. By default, this is :func:`format_header_param_html5`. Nc�x�||_||_||_i|_|rt |��|_||_dSr)�_name� _filename�data�headers�dict�header_formatter)�selfr&rKr rLrNs r �__init__zRequestField.__init__�sC���� �!����� ��� � � )���=�=�D�L� 0����rc���t|t��r/t|��dkr|\}}}n|\}}t|��}nd}d}|}|||||���}|�|���|S)a� A :class:`~urllib3.fields.RequestField` factory from old-style tuple parameters. Supports constructing :class:`~urllib3.fields.RequestField` from parameter of key/value strings AND key/filetuple. A filetuple is a (filename, data, MIME type) tuple where the MIME type is optional. For example:: 'foo': 'bar', 'fakefile': ('foofile.txt', 'contents of foofile'), 'realfile': ('barfile.txt', open('realfile').read()), 'typedfile': ('bazfile.bin', open('bazfile').read(), 'image/jpeg'), 'nonamefile': 'contents of nonamefile field', Field names and filenames must be unicode. �N)r rN)� content_type)r�tuple�lenr �make_multipart)�cls� fieldnamerrNr rKrS� request_params r � from_tupleszRequestField.from_tuples�s���$ �e�U� #� #� ��5�z�z�Q���/4�,��$� � �!&���$�1�(�;�;� � ��H��L��D��� �t�h�AQ� � � � � �$�$�,�$�?�?�?��rc�.�|�||��S)aI Overridable helper function to format a single header parameter. By default, this calls ``self.header_formatter``. :param name: The name of the parameter, a string expected to be ASCII only. :param value: The value of the parameter, provided as a unicode string. )rN)rOr&rs r � _render_partzRequestField._render_part�s���$�$�T�5�1�1�1rc���g}|}t|t��r|���}|D]0\}}|�)|�|�||�����1d�|��S)aO Helper function to format and quote a single header. Useful for single headers that are composed of multiple items. E.g., 'Content-Disposition' fields. :param header_parts: A sequence of (k, v) tuples or a :class:`dict` of (k, v) to format as `k1="v1"; k2="v2"; ...`. N�; )rrM�items�appendr\r>)rO� header_parts�parts�iterabler&rs r � _render_partszRequestField._render_parts�s������ �l�D� )� )� ,�#�)�)�+�+�H�#� =� =�K�D�%�� �� � �T�.�.�t�U�;�;�<�<�<���z�z�%� � � rc�j�g}gd�}|D]B}|j�|d��r%|�|�d|j|�����C|j���D]%\}}||vr|r|�|�d|�����&|�d��d�|��S)z= Renders the headers for this request field. )�Content-Disposition� Content-Type�Content-LocationFz: z )rL�getr`r_r>)rO�lines� sort_keys�sort_key� header_name� header_values r �render_headerszRequestField.render_headers�s�����O�O�O� �!� M� M�H��|����%�0�0� M�� � �(�(�(�D�L��4J�4J�K�L�L�L��)-��);�);�)=�)=� J� J� %�K���)�+�+��J��L�L�k�k�k�<�<�!H�I�I�I�� � � �W�����|�|�E�"�"�"rc ���|pd|jd<|jdxxd�d|�d|jfd|jff��g��z cc<||jd<||jd<d S) a| Makes this request field into a multipart request field. This method overrides "Content-Disposition", "Content-Type" and "Content-Location" headers to the request parameter. :param content_type: The 'Content-Type' of the request body. :param content_location: The 'Content-Location' of the request body. z form-datarfr^�r&r rgrhN)rLr>rdrIrJ)rO�content_dispositionrS�content_locations r rVzRequestField.make_multipart�s���/B�.Q�\�� �*�+� � �*�+�+�+�u�z�z���"�"��t�z�*�[�$�.�,I�J��� �0 �0 � �+�+�+�(4�� �^�$�+;�� �'�(�(�(r)NNN) �__name__� __module__� __qualname__�__doc__rErP� classmethodrZr\rdrorVrrr rGrG~s���������(��2� 1�1�1�1� �r�s)��&�&�&�&�&�&��������� � � � ������� � � � �'�'�'�V�����������%��h�'�'������� � � �&�&�&�80��T<�T<�T<�T<�T<�6�T<�T<�T<�T<�T