HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //usr/local/lib/python3.10/dist-packages/aiohttp/__pycache__/http_writer.cpython-310.pyc
o

���g��@s�dZddlZddlZddlZddlmZmZmZmZm	Z	m
Z
mZmZddl
mZddlmZddlmZddlmZdd	lmZdd
lmZdZdZd
ejkoTdknZejdkZep_eZGdd�de
�Zedd�Z edd�Z!eee"gedfZ#eedgedfZ$Gdd�de�Z%de&de&fdd�Z'de&ddde"fdd�Z(e(Z)zddl*m+Z+e+j)Z,es�e,Z)WdSWdSe-y�YdSw)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�
HttpVersion11i)��
r)rr�)r��	c@seZdZUeed<eed<dS)r�major�minorN)�__name__�
__module__�__qualname__�int�__annotations__�r!r!�>/usr/local/lib/python3.10/dist-packages/aiohttp/http_writer.pyr's
r�CIMultiDict[str]c@sZeZdZUdZeeed<dZeed<dZ	eed<dZ
eeed<		d2dede
jd	ed
eddf
dd
�Zedee
jfdd��Zedefdd��Zd3dd�Zdejfdededdfdd�Zdeeeefddfdd�Zde eddfdd�Z!dd d!�deeeefd"ed#eddfd$d%�Z"d&ed'd(ddfd)d*�Z#d3d+d,�Z$d4deddfd.d/�Z%d3d0d1�Z&dS)5rN�lengthF�chunked�_eof�	_compress�protocol�loop�
on_chunk_sent�on_headers_sent�returncCs||_||_||_||_dS�N)�	_protocolr)�_on_chunk_sent�_on_headers_sent)�selfr(r)r*r+r!r!r"�__init__;s
zStreamWriter.__init__cCs|jjSr-)r.�	transport�r1r!r!r"r3GszStreamWriter.transportcCs|jSr-)r.r4r!r!r"r(KszStreamWriter.protocolcCs
d|_dS)NT)r%r4r!r!r"�enable_chunkingOs
zStreamWriter.enable_chunking�deflate�encoding�strategycCst||d�|_dS)N)r7r8)rr')r1r7r8r!r!r"�enable_compressionRszStreamWriter.enable_compression�chunkcCsRt|�}|j|7_|j|7_|jj}|dus|��r"td��|�|�dS)N�!Cannot write to closing transport)�len�buffer_size�output_sizer.r3�
is_closingr�write)r1r:�sizer3r!r!r"�_writeWszStreamWriter._write�chunkscCs�d}|D]}|t|�7}q|j|7_|j|7_|jj}|dus'|��r+td��ts1|tkr;|�	d�
|��dS|�|�dS)Nrr;�)r<r=r>r.r3r?r�SKIP_WRITELINES�MIN_PAYLOAD_FOR_WRITELINESr@�join�
writelines)r1rCrAr:r3r!r!r"�_writelines`szStreamWriter._writelinesTi)�drain�LIMITrJrKc�s�|jdur|�|�IdHt|t�r|jt|�kr|�d�}|jdur1|j�|�IdH}|s1dS|jdurTt|�}|j|krF|j||_n|d|j�}d|_|sTdS|r�|j	rk|�
t|�d�d��d�|df�n|�|�|j
|kr�|r�d|_
|��IdHdSdSdSdS)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�nbytesr<�castr'�compressr$r%rI�encoderBr=rJ)r1r:rJrK�	chunk_lenr!r!r"r@ns:�






�
�zStreamWriter.write�status_line�headersr#c�s4�|jdur|�|�IdHt||�}|�|�dS)z*Write request/response status and headers.N)r0�_serialize_headersrB)r1rWrX�bufr!r!r"�
write_headers�s
�

zStreamWriter.write_headerscCs
d|_dS)z&Indicate that the message is complete.TN)r&r4r!r!r"�set_eof�s
zStreamWriter.set_eofrDc�sH�|jrdS|r|jdur|�|�IdH|jrrg}d}|r2|j�|�IdH}r2t|�}|�|�|j��}|t|�7}|�|�|sFJ�|jr^|d�d��d�}|�	|g|�d�R�n:t|�dkrj|�	|�n.|�
|d�n&|jr�|r�t|�d�d��d�}|�	||df�n
|�
d�n|r�|�
|�|��IdHd|_dS)	NrrMrNrOs
0

rs0

T)r&r/r'rTr<�append�flushr%rUrIrBrJ)r1r:rC�
chunks_len�compressed_chunk�flush_chunk�
chunk_len_prer!r!r"�	write_eof�s<�




zStreamWriter.write_eofc�s2�|j}|jdur|jr|��IdHdSdSdS)zFlush the write buffer.

        The intended use is to write

          await w.write(data)
          await w.drain()
        N)r.r3�_paused�
_drain_helper)r1r(r!r!r"rJ�s
��zStreamWriter.drain)NN)r,N)rD)'rrrr$rrr r%�boolr&r'rr
�asyncio�AbstractEventLoop�_T_OnChunkSent�_T_OnHeadersSentr2�property�	Transportr3r(r5�zlib�Z_DEFAULT_STRATEGY�strr9r	�bytes�	bytearrayrQrBrrIr@r[r\rcrJr!r!r!r"r4sl
�����
�
���
�	����
�0��
�
'r�stringr,cCsd|vsd|vrtd��|S)N�
�
zRNewline or carriage return detected in headers. Potential header injection attack.)�
ValueError)rrr!r!r"�_safe_header�s
�rvrWrXcCs2dd�|��D�}|dd�|�d}|�d�S)Ncss(�|]\}}t|�dt|�VqdS)z: N)rv)�.0�k�vr!r!r"�	<genexpr>�s�&z(_py_serialize_headers.<locals>.<genexpr>rNz

zutf-8)�itemsrGrU)rWrX�headers_gen�liner!r!r"�_py_serialize_headers�s
r~).�__doc__rg�sysrm�typingrrrrrrrr	�	multidictr
�abcr�
base_protocolr
�client_exceptionsr�compression_utilsr�helpersr�__all__rF�version_info�IS_PY313_BEFORE_313_2�IS_PY_BEFORE_312_9rErrrrprirjrrorvr~rY�aiohttp._http_writer�_http_writer�_c_serialize_headers�ImportErrorr!r!r!r"�<module>sF(


.	
��