� E�gw���dZddlZddlZddlmZmZmZmZmZm Z m Z m Z ddl m Z ddlmZddlmZddlmZdd lmZdd lmZd ZGd �d e ��Zedd��Zedd��Ze eegedfZe edgedfZGd�de��Zde de fd�Z!de dddefd�Z"e"Z# ddl$m%Z%e%j#Z&ese&Z#dSdS#e'$rYdSwxYw)z"Http related parsers and protocol.�N)�Any� Awaitable�Callable�Iterable�List� NamedTuple�Optional�Union)� CIMultiDict�)�AbstractStreamWriter)� BaseProtocol)�ClientConnectionResetError)�ZLibCompressor)� NO_EXTENSIONS)� StreamWriter� HttpVersion� HttpVersion10� HttpVersion11c�$�eZdZUeed<eed<dS)r�major�minorN)�__name__� __module__� __qualname__�int�__annotations__���c/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/aiohttp/http_writer.pyrrs"������� �J�J�J� �J�J�J�J�Jrr�CIMultiDict[str]c ��eZdZUdZeeed<dZeed<dZ eed<dZ ee ed< d&de de jd ed ed df d �Zed ee jfd ���Zed e fd���Zd'd�Zdejfdeded dfd�Zdeeeefd dfd�Zde ed dfd�Z!ddd�deeeefdeded dfd�Z"dedd d dfd!�Z#d'd"�Z$d(ded dfd$�Z%d'd%�Z&dS))rN�lengthF�chunked�_eof� _compress�protocol�loop� on_chunk_sent�on_headers_sent�returnc�>�||_||_||_||_dS�N)� _protocolr(�_on_chunk_sent�_on_headers_sent)�selfr'r(r)r*s r �__init__zStreamWriter.__init__/s(��"����� �.;���2A����rc��|jjSr-)r.� transport�r1s r r4zStreamWriter.transport;s ���~�'�'rc��|jSr-)r.r5s r r'zStreamWriter.protocol?s ���~�rc��d|_dS)NT)r$r5s r �enable_chunkingzStreamWriter.enable_chunkingCs ���� � � r�deflate�encoding�strategyc�2�t||���|_dS)N)r:r;)rr&)r1r:r;s r �enable_compressionzStreamWriter.enable_compressionFs��(��H�M�M�M����r�chunkc���t|��}|xj|z c_|xj|z c_|jj}|�|���rt d���|�|��dS)N�!Cannot write to closing transport)�len� buffer_size� output_sizer.r4� is_closingr�write)r1r>�sizer4s r �_writezStreamWriter._writeKs}���5�z�z�� ���D� ��� ���D� ����N�,� � � � � 4� 4� 6� 6� �,�-P�Q�Q� Q���������r�chunksc�*�d}|D]}|t|��z }�|xj|z c_|xj|z c_|jj}|�|���rt d���|�d�|����dS)Nrr@r) rArBrCr.r4rDrrE�join)r1rHrFr>r4s r � _writelineszStreamWriter._writelinesTs������ � �E� �C��J�J� �D�D� ���D� ��� ���D� ����N�,� � � � � 4� 4� 6� 6� �,�-P�Q�Q� Q��������(�(�)�)�)�)�)rTi)�drain�LIMITrLrMc���K�|j�|�|���d{V��t|t��r-|jt |��kr|�d��}|j�$|j�|���d{V��}|sdS|j�Dt |��}|j|kr|j|z |_n|d|j�}d|_|sdS|r�|j r=|� t |��d�d�� d��|df��n|� |��|j |kr'|r'd|_ |����d{V��dSdSdSdS)z�Writes chunk of data to a stream. write_eof() indicates end of stream. writer can't be used after write_eof() method being called. write() return drain future. N�cr�x� �asciis )r/� isinstance� memoryview�nbytesrA�castr&�compressr#r$rK�encoderGrBrL)r1r>rLrM� chunk_lens r rEzStreamWriter.write_s����� � � *��%�%�e�,�,� ,� ,� ,� ,� ,� ,� ,� �e�Z� (� (� (��|�s�5�z�z�)�)�� � �3���� �>� %��.�1�1�%�8�8�8�8�8�8�8�8�E�� ��� �;� "��E� � �I��{�i�'�'�"�k�I�5�� � ��m�� �m�,���� ����F� � #��|� #�� � ��E� � �*�*�*�*�1�1�'�:�:�E�7�K������ � �E�"�"�"���%�'�'�E�'�#$�� ��j�j�l�l�"�"�"�"�"�"�"�"�"� #� #�(�'�'�'r� status_line�headersr!c��K�|j�|�|���d{V��t||��}|�|��dS)z*Write request/response status and headers.N)r0�_serialize_headersrG)r1rZr[�bufs r � write_headerszStreamWriter.write_headers�s`���� � � ,��'�'��0�0� 0� 0� 0� 0� 0� 0� 0�!��g�6�6�� � � �C�����rc��d|_dS)z&Indicate that the message is complete.TN)r%r5s r �set_eofzStreamWriter.set_eof�s ���� � � rrc���K�|jrdS|r"|j�|�|���d{V��|j�rg}d}|rF|j�|���d{V��x}r$t |��}|�|��|j���}|t |��z }|�|��|sJ�|jr5|d�d��d��}|� |g|�d�R��n�t |��dkr|� |��n�|� |d��nu|jrW|r?t |��d�d��d��}|� ||df��n-|� d��n|r|� |��|� ���d{V��d|_dS) NrrPrQrRs 0 r s0 T) r%r/r&rWrA�append�flushr$rXrKrGrL)r1r>rH� chunks_len�compressed_chunk� flush_chunk� chunk_len_pres r � write_eofzStreamWriter.write_eof�s9���� �9� � �F� � -�T�(�4��%�%�e�,�,� ,� ,� ,� ,� ,� ,� ,� �>� �"$�F��J�� 0�D�N�4K�4K�E�4R�4R�.R�.R�.R�.R�.R�.R�R�*� 0� �!1�2�2� �� � �.�/�/�/��.�.�.�0�0�K� �#�k�*�*� *�J� �M�M�+� &� &� &�� � �:��|� '�#-� 5� 5� 5� 5� <� <�W� E� E� �� � �-�!K�&�!K�:J�!K�!K�L�L�L�L��V���q���� � ��(�(�(�(�� � �F�1�I�&�&�&�&� �\� �� *�#&�u�:�:� 5� 5� 5� 5� <� <�W� E� E� �� � �-��8H�!I�J�J�J�J�� � �L�)�)�)�)� � � �K�K�� � � ��j�j�l�l���������� � � rc��pK�|j}|j�#|jr|����d{V��dSdSdS)zFlush the write buffer. The intended use is to write await w.write(data) await w.drain() N)r.r4�_paused� _drain_helper)r1r's r rLzStreamWriter.drain�sX�����>�� � � )�h�.>� )��(�(�*�*� *� *� *� *� *� *� *� *� *� *� )� )� )r)NN)r+N)r)'rrrr#r rrr$�boolr%r&rr�asyncio�AbstractEventLoop�_T_OnChunkSent�_T_OnHeadersSentr2�property� Transportr4r'r8�zlib�Z_DEFAULT_STRATEGY�strr=r �bytes� bytearrayrTrGrrKrEr_rarirLrrr rr(s�������� �F�H�S�M� � � ��G�T�����D�$����*.�I�x��'�.�.�.� )-�,0� B� B�� B��'� B�&� B� *� B� � B� B� B� B��(�8�G�$5�6�(�(�(��X�(���,�����X������(��9P�N�N��N�36�N� �N�N�N�N� �E�%��J�">�?��D����� *�(�5�/� *�d� *� *� *� *��� .#�.#�.#��U�I�z�1�2�.#�� .#� � .#� � .#�.#�.#�.#�` �� �);� � � � � � �����%�%�U�%�T�%�%�%�%�N +� +� +� +� +� +rr�stringr+c�4�d|vsd|vrtd���|S)N� � zRNewline or carriage return detected in headers. Potential header injection attack.)� ValueError)rys r � _safe_headerr~�s1�� �v�~�~������ 1� � � � �MrrZr[c��d�|���D��}|dzd�|��zdz}|�d��S)Nc3�`K�|])\}}t|��dzt|��zV��*dS)z: N)r~)�.0�k�vs r � <genexpr>z(_py_serialize_headers.<locals>.<genexpr>�s<����X�X���1�<��?�?�T�)�L��O�O�;�X�X�X�X�X�XrrQz zutf-8)�itemsrJrX)rZr[� headers_gen�lines r �_py_serialize_headersr��sO��X�X�� � ���X�X�X�K� �� �&�+�+�k�":�":� :�Z� G�D� �;�;�w� � �r)(�__doc__rnrt�typingrrrrrrr r � multidictr �abcr � base_protocolr�client_exceptionsr�compression_utilsr�helpersr�__all__rrrrwrprqrrvr~r�r]�aiohttp._http_writer� _http_writer�_c_serialize_headers� ImportErrorrrr �<module>r�sc��(�(����� � � � � � � � � � � � � � � � � � � � � � � � �"�!�!�!�!�!�%�%�%�%�%�%�'�'�'�'�'�'�9�9�9�9�9�9�-�-�-�-�-�-�"�"�"�"�"�"� K�������*���� � �A�q�!�!� �� �A�q�!�!� ��(�E�7�I�d�O�#;�<�=���H�&8�%9�9�T�?�%J�K�L��g+�g+�g+�g+�g+�'�g+�g+�g+�T�������� �s� �5G� �E� � � � � +�� �/�/�/�/�/�/�'�:�� �2�1����2�2��� � � ��D�D� ���s�<C�C�C
Memory