� E�g����ddlZddlZddlmZmZmZmZddlmZddl m Z m Z ddl m Z mZmZddlmZddlmZd ZGd �d ��ZdS) �N)�Any�Iterable�List�Optional)� urlencode)� MultiDict�MultiDictProxy�)�hdrs� multipart�payload)�guess_filename)�Payload)�FormDatac ��eZdZdZ ddd�deeded eed ed df d �Z e d efd ���Z dddd�dededeedeedeed df d�Z ded dfd�Z d ejfd�Zd ejfd�Zd efd�ZdS)rztHelper class for form body generation. Supports multipart/form-data and application/x-www-form-urlencoded. �TNF)�default_to_multipart�fields� quote_fields�charsetr�returnc�>�tjd��|_g|_||_d|_||_||_t|t��r"t|� ����}nt|ttf��s|f}|j |�dS)N� form-dataF)r �MultipartWriter�_writer�_fields� _is_multipart� _is_processed� _quote_fields�_charset� isinstance�dict�list�items�tuple� add_fields)�selfrrrrs �`/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/aiohttp/formdata.py�__init__zFormData.__init__s���!�0��=�=�� �"$�� �1���"���)����� � �f�d� #� #� ��&�,�,�.�.�)�)�F�F��F�T�5�M�2�2� ��Y�F����� � � � �c��|jS�N)r�r's r(� is_multipartzFormData.is_multipart*s ���!�!r*)� content_type�filename�content_transfer_encoding�name�valuer/r0r1c��t|tj��rd|_nDt|tt t f��r"d}|�|�tj|t��|}td|i��}|�'t|t��std|z���|�*t|tj��rt||��}|� ||d<d|_i}|�=t|t��std|z���||tj<d|_|�Jt|t��std|z���d}tj|t��d|_|j�|||f��dS) NTzIn v4, passing bytes will no longer create a file field. Please explicitly use the filename parameter or pass a BytesIO object.r2z,filename must be an instance of str. Got: %sr0z0content_type must be an instance of str. Got: %sz=content_transfer_encoding must be an instance of str. Got: %szfcontent_transfer_encoding is deprecated. To maintain compatibility with v4 please pass a BytesPayload.)r!�io�IOBaser�bytes� bytearray� memoryview�warnings�warn�DeprecationWarningr�str� TypeErrorrr � CONTENT_TYPEr�append) r'r2r3r/r0r1�msg� type_options�headerss r(� add_fieldzFormData.add_field.s��� �e�R�Y� '� '� �!%�D� � � ���y�*�=� >� >� �Y� ���$=�$E�� �c�#5�6�6�6���'0�&�$��'@�'@� � � � �8�S�(A�(A� ��J�X�U�V�V� V� � � �5�"�)� <� <� �%�e�T�2�2�H� � �'/�L�� $�!%�D� ��� � #��l�C�0�0� ��F��U����*6�G�D�%� &�!%�D� � $� 0��7��=�=� ��'�)B�C���� P� � �M�#�1� 2� 2� 2�!%�D� � � ���\�7�E�:�;�;�;�;�;r*c�B�t|��}|�r |�d��}t|tj��r't |d��}|�||��n�t|ttf��r(|� |� ����nmt|ttf��r/t|��dkr|\}}|�||��n"td�|�����|�� dSdS)Nr�unknown�zxOnly io.IOBase, multidict and (name, file) pairs allowed, use .add_field() for passing more complex parameters, got {!r})r#�popr!r5r6rrDr r�extendr$r%�lenr>�format)r'r�to_add�rec�k�fps r(r&zFormData.add_fieldscs���f����� ��*�*�Q�-�-�C��#�r�y�)�)� �"�3� �2�2�����q�#�&�&�&�&��C�.�)�!<�=�=� �� � �c�i�i�k�k�*�*�*�*��C�$���/�/� �C��H�H��M�M����2����q�"�%�%�%�%� �8�8>��s� � ����� � � � � r*c��g}|jD]#\}}}|�|d|f���$|j�|jnd}|dkrd}nd|z}tjt |d|������|���S)Nr2zutf-8z!application/x-www-form-urlencodedz-application/x-www-form-urlencoded; charset=%sT)�doseq�encoding)r/)rr@r r � BytesPayloadr�encode)r'�datarB�_r3rr/s r(�_gen_form_urlencodedzFormData._gen_form_urlencoded{s�����&*�l� 7� 7� "�L�!�U� �K�K��f�-�u�5� 6� 6� 6� 6�#'�=�#<�$�-�-�'�� �g� � �>�L�L�J�W�T�L��#� �d�$�� 9� 9� 9� @� @� B� B�%� � � � r*c �H�|jrtd���|jD]�\}}} tj|vr.t j||tj||j���}nt j|||j���}n8#t$r+}tdt|���d|�d|����|�d}~wwxYw|rC|j d d |j i|��|j �J�|j �tjd��|j�|����d |_|jS) zAEncode a list of fields using the multipart/form-data MIME formatz$Form data has been processed already)r/rCrR)rCrRzCan not serialize value type: z headers: z value: NrrT)r)r� RuntimeErrorrr r?r � get_payloadr � Exceptionr>�type�set_content_dispositionrrC�popall�CONTENT_LENGTHr�append_payload)r'� dispparamsrCr3�part�excs r(�_gen_form_datazFormData._gen_form_data�s��� � � G��E�F�F� F�*.�,� .� .� &�J��� ��$��/�/�"�.��%,�T�->�%?� '�!%�� ���D�D�#�.��w������D���� � � ��i�15�e�����g�g�g�u�u�N��������� ���� � ?�,��,����.2�.@��DN���� �|�/�/�/�� �#�#�D�$7��>�>�>� �L� '� '�� -� -� -� -�!����|�s�AA>�> B3�&B.�.B3c�`�|jr|���S|���Sr,)rrdrWr-s r(�__call__zFormData.__call__�s1�� � � /��&�&�(�(� (��,�,�.�.� .r*)rTN)�__name__� __module__� __qualname__�__doc__rr�boolrr=r)�propertyr.rDr&r rSrWr rrdrrfrr*r(rrs���������!#�!�!%� !� &+� !�!�!��� �!��!��#�� !� #� !� �!�!�!�!�*�"�d�"�"�"��X�"�'+�"&�37�3<�3<�3<��3<��3<� �s�m� 3<� �3�-� 3<�$,�C�=�3<� �3<�3<�3<�3<�j�#��$�����0 �g�&:� � � � �$#� � 9�#�#�#�#�J/�'�/�/�/�/�/�/r*r)r5r:�typingrrrr� urllib.parser� multidictrr �r r r �helpersrr�__all__rrr*r(�<module>rss��� � � � �����0�0�0�0�0�0�0�0�0�0�0�0�"�"�"�"�"�"�/�/�/�/�/�/�/�/�&�&�&�&�&�&�&�&�&�&�#�#�#�#�#�#������� ��g/�g/�g/�g/�g/�g/�g/�g/�g/�g/r*
Memory