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__/web_response.cpython-310.pyc
o

���gp�@sddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZddlm
Z
ddlmZddlmZmZmZmZmZmZmZmZddlmZmZddlmZmZdd	lm Z dd
l!m"Z"ddl#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-ddlm.Z.m/Z/m0Z0dd
lm1Z1ddl2m3Z3m4Z4dd�e
D�Z5dZ6dZ7er�ddl8m9Z9ee:efZ;nejjZ;Gdd�dej<�Z=dd�e=D�Z>Gdd�de;e'�Z?Gdd�de?�Z@e+fddddddejAd�dedee:d eeBd!eCd"ee:d#ee4d$e:d%e3d&e@fd'd(�ZDdS))�N)�Executor)�
HTTPStatus)�SimpleCookie)�
TYPE_CHECKING�Any�Dict�Iterator�MutableMapping�Optional�Union�cast)�CIMultiDict�istr�)�hdrs�payload)�AbstractStreamWriter)�ZLibCompressor)
�ETAG_ANY�QUOTED_ETAG_RE�ETag�HeadersMixin�must_be_empty_body�parse_http_date�rfc822_formatted_time�sentinel�should_remove_content_length�validate_etag_value)�SERVER_SOFTWARE�
HttpVersion10�
HttpVersion11)�Payload)�JSONEncoder�LooseHeaderscCsi|]}|j|j�qS�)�value�phrase)�.0�http_statusr$r$�?/usr/local/lib/python3.10/dist-packages/aiohttp/web_response.py�
<dictcomp>-sr*i)�
ContentCoding�StreamResponse�Response�
json_response)�BaseRequestc@seZdZdZdZdZdS)r+�deflate�gzip�identityN)�__name__�
__module__�__qualname__r0r1r2r$r$r$r)r+<sr+cCsi|]}|j|�qSr$�r%)r'�codingr$r$r)r*Fscs>eZdZUedeeefed<dZdZ	dZ
eeed<dZ
eed<dZeed<ejZeed<dZeeed	<dZed
ed<dZeeed<dZeed
<dZeeed<dZdZeeed<ddddd�dedeedeedeeeddf
dd�Z e!defdd��Z"e!d�dd��Z#e!defdd ��Z$e!defd!d"��Z%e!defd#d$��Z&e!defd%d&��Z'	d�dedeeddfd'd(�Z(dedeeddfd)d*�Z)e!deefd+d,��Z*d�d-d.�Z+e!defd/d0��Z,e!defd1d2��Z-d�d3eeddfd4d5�Z.dejfd6eeeefd7eddfd8d9�Z/e!d�d;d<��Z0e!defd=d>��Z1dddd?ddddd@�dAedBedCeedDeedEeeeefdFedGeedHeedIeedJeeddfdKdL�Z2dd?ddddM�dAedDeedFedGeedHeedJeeddfdNdO�Z3e!deef�fdPdQ��Z4e4j5dBeeddfdRdQ��Z4e!def�fdSdT��Z6e6j5dBeddfdUdT��Z6e!deef�fdVdW��Z7e7j5dBeeddfdXdW��Z7e!dee8j8fdYdZ��Z9e9j5dBeeee:e8j8efddfd[dZ��Z9e!dee;fd\d]��Z<e<j5dBeee;efddfd^d]��Z<e=j>fd_e?ddfd`da�Z@dbeddfdcdd�ZAd�dfdg�ZBded
deefdhdi�ZCded
defdjdk�ZDd�dldm�ZEd�dndo�ZFdpeeeeGfddfdqdr�ZHd�dsdt�ZId�dpeddfdvdw�ZJdefdxdy�ZKdzedeLfd{d|�ZMdzedBeLddfd}d~�ZNdzeddfdd��ZOdefd�d��ZPdeQefd�d��ZRdefd�d��ZSd�eTdefd�d��ZU�ZVS)�r,N�_bodyT�_keep_aliveF�_chunked�_compression�_compression_strategy�_compression_forcer/�_req�_payload_writer�	_eof_sent�_must_be_empty_bodyr�_cookies��)�status�reason�headers�
_real_headersrDrErFrG�returncCsBi|_|dur||_n|durt|�|_nt�|_|�||�dS)a;Initialize a new stream response object.

        _real_headers is an internal parameter used to pass a pre-populated
        headers object. It is used by the `Response` class to avoid copying
        the headers when creating a new response object. It is not intended
        to be used by external code.
        N)�_state�_headersr
�_set_status)�selfrDrErFrGr$r$r)�__init__^szStreamResponse.__init__cCs|jp|jduS�N)r@r?�rLr$r$r)�preparedxszStreamResponse.prepared�Optional[asyncio.Task[None]]cCs|jr|jjSdSrN)r>�taskrOr$r$r)rR|szStreamResponse.taskcC�|jSrN)�_statusrOr$r$r)rD��zStreamResponse.statuscCrSrN)r:rOr$r$r)�chunked�rUzStreamResponse.chunkedcCrSrN)r;rOr$r$r)�compression�rUzStreamResponse.compressioncCrSrN)�_reasonrOr$r$r)rE�rUzStreamResponse.reasoncCs|jrJd��|�||�dS)NzGCannot change the response status code after the headers have been sent)rPrK�rLrDrEr$r$r)�
set_status�s
��zStreamResponse.set_statuscCs<t|�|_|durt�|jd�}nd|vrtd��||_dS)N��
zReason cannot contain \n)�intrT�REASON_PHRASES�get�
ValueErrorrXrYr$r$r)rK�s

zStreamResponse._set_statuscCrSrN�r9rOr$r$r)�
keep_alive�rUzStreamResponse.keep_alivecCs
d|_dS)NFrarOr$r$r)�force_close��
zStreamResponse.force_closecCrSrN)�_body_lengthrOr$r$r)�body_length�rUzStreamResponse.body_lengthcCst�dt�|jsJ�|jjS)Nzoutput_length is deprecated)�warnings�warn�DeprecationWarningr?�buffer_sizerOr$r$r)�
output_length�s
zStreamResponse.output_length�
chunk_sizecCs2tj|jvr
td��|durt�dt�d|_dS)z,Enables automatic chunked transfer encoding.z>You can't enable chunked encoding when a content length is setNzChunk size is deprecated #1615T)r�CONTENT_LENGTHrJ�RuntimeErrorrgrhrir:)rLrlr$r$r)�enable_chunked_encoding�s�
z&StreamResponse.enable_chunked_encoding�force�strategycCsXt|t�r|r
tjntj}t�dt�n
|dur!t|t�s!Jd��d|_||_	||_
dS)z&Enables response compression encoding.z+Using boolean for force is deprecated #3318Nz1force should one of None, bool or ContentEncodingT)�
isinstance�boolr+r0r2rgrhrir;r=r<)rLrprqr$r$r)�enable_compression�s
���
z!StreamResponse.enable_compression�CIMultiDict[str]cCrSrN)rJrOr$r$r)rF�rUzStreamResponse.headerscCs|jdur	t�|_|jSrN)rBrrOr$r$r)�cookies�s
zStreamResponse.cookies�/)�expires�domain�max_age�path�secure�httponly�version�samesite�namer%rxryrzr{r|r}r~rcCs�|jdur	t�|_||j|<|j|}|dur||d<n
|�d�dkr&|d=|dur.||d<|dur9t|�|d<nd|vr@|d=||d<|durL||d<|durT||d<|	dur\|	|d	<|
durf|
|d
<dSdS)z�Set or update response cookie.

        Sets new cookie or updates existent with new value.
        Also updates only those params which are not None.
        Nrx�Thu, 01 Jan 1970 00:00:00 GMTryzmax-ager{r|r}r~r)rBrr_�str)rLr�r%rxryrzr{r|r}r~r�cr$r$r)�
set_cookie�s0



�zStreamResponse.set_cookie)ryr{r|r}rcCs8|jdur|j�|d�|j|ddd|||||d�	dS)zBDelete cookie.

        Creates new empty expired cookie.
        Nr[rr�)rzrxryr{r|r}r)rB�popr�)rLr�ryr{r|r}rr$r$r)�
del_cookies

�zStreamResponse.del_cookiec�t�jSrN)�super�content_lengthrO��	__class__r$r)r�-�zStreamResponse.content_lengthcCsF|durt|�}|jrtd��t|�|jtj<dS|j�tjd�dS)Nz<You can't set content length when chunked encoding is enable)r]r:rnr�rJrrmr��rLr%r$r$r)r�2s�cr�rN)r��content_typerOr�r$r)r�>r�zStreamResponse.content_typecCs|jt|�|_|��dSrN)r�r��
_content_type�_generate_content_type_headerr�r$r$r)r�Cs
cr�rN)r��charsetrOr�r$r)r�Ir�zStreamResponse.charsetcCsZ|j}|dkrtd��|jdusJ�|dur|j�dd�n	t|���|jd<|��dS)N�application/octet-streamzYSetting charset for application/octet-stream doesn't make sense, setup content_type firstr�)r�rn�
_content_dictr�r��lowerr�)rLr%�ctyper$r$r)r�Ns�cCst|j�tj��S)zuThe value of Last-Modified HTTP header, or None.

        This header is represented as a `datetime` object.
        )rrJr_r�
LAST_MODIFIEDrOr$r$r)�
last_modified]szStreamResponse.last_modifiedcCs�|dur|j�tjd�dSt|ttf�r't�dt�	t
�|���|jtj<dSt|tj�r;t�d|�
��|jtj<dSt|t�rH||jtj<dSdS)Nz%a, %d %b %Y %H:%M:%S GMT)rJr�rr�rrr]�float�time�strftime�gmtime�math�ceil�datetime�utctimetupler�r�r$r$r)r�es��
�cCsZ|j�tj�}|sdS|tkrttd�St�|�}|sdS|�dd�\}}tt	|�|d�S)Nr6r�)�is_weakr%)
rJr_r�ETAGrrr�	fullmatch�grouprs)rL�quoted_value�matchr�r%r$r$r)�etagvs

�zStreamResponse.etagcCs�|dur|j�tjd�dSt|t�r|tks!t|t�r)|jtkr)t|jtj<dSt|t�r>t	|�d|�d�|jtj<dSt|t�rgt|jt�rgt	|j�|j
rXd|j�d�nd|j�d�}||jtj<dStdt|��d���)N�"zW/"zUnsupported etag type: z . etag must be str, ETag or None)
rJr�rr�rrr�rrr%rr�r`�type)rLr%�	hdr_valuer$r$r)r��s"�


"��CONTENT_TYPEcCs^|jdusJ�|jdusJ�d�dd�|j��D��}|r%|jd|}n|j}||j|<dS)Nz; css"�|]\}}|�d|��VqdS)�=Nr$)r'�k�vr$r$r)�	<genexpr>�s� z?StreamResponse._generate_content_type_header.<locals>.<genexpr>)r�r��join�itemsrJ)rLr��paramsr�r$r$r)r��sz,StreamResponse._generate_content_type_headerr7c�sR�|tjurdS|jdusJ�|j|jtj<|j�|j|j�|j�	tj
d�dSrN)r+r2r?r%rJr�CONTENT_ENCODINGrtr<�popallrm)rLr7r$r$r)�_do_start_compression�s�
�z$StreamResponse._do_start_compression�requestc�sf�|jr|�|j�IdHdS|j�tjd���}t��D]\}}||vr0|�|�IdHdSqdS)Nr[)	r=r�rFr_r�ACCEPT_ENCODINGr��CONTENT_CODINGSr�)rLr��accept_encodingr%r7r$r$r)�_start_compression�s���z!StreamResponse._start_compressionc�s<�|jrdS|jdur|jSt|j|j�|_|�|�IdHSrN)r@r?r�methodrDrA�_start)rLr�r$r$r)�prepare�s�
zStreamResponse.preparec�sD�||_|j}|_|��IdH|�|�IdH|��IdH|SrN)r>r?�_prepare_headers�
_prepare_hook�_write_headers)rLr��writerr$r$r)r��s�zStreamResponse._startc�s��|j}|dus
J�|j}|dusJ�|j}|dur|j}||_|j}|j}|jrB|j��D]}|jdd�dd�}|�	t
j|�q.|jrM|�
|�IdH|jri|tkr\td�|j���|jsh|��d|t
j<n"|jr�|j|_|jdur�|tkr�|js�|��d|t
j<n|js�d}|jr�t
j|vr�t|j|j�r�|t
j=t
j|vr�|t
j=n|jr�|jn|jdkr�|�t
jd�|�t
jt��|�t
j t!�t
j"|vr�|r�|t#kr�d	|t
j"<dSdS|tkr�d
|t
j"<dSdSdS)Nr[)�headerrz@Using chunked encoding is forbidden for HTTP/{0.major}.{0.minor}rVFrr�z
keep-alive�close)$r>r?r9rbr~rJrB�values�output�addr�
SET_COOKIEr;r�r:r rn�formatrA�enable_chunking�TRANSFER_ENCODING�
_length_checkr��lengthrmrr�rD�
setdefaultr��DATEr�SERVERr�
CONNECTIONr)rLr�r�rbr~rF�cookier%r$r$r)r��st��
�

��
�
��zStreamResponse._prepare_headersc�sl�|j}|dus
J�|j}|dusJ�|j}d|d�d|d�d|j�d|j��}|�||j�IdHdS)NzHTTP/r�.r� )r>r?r~rTrX�
write_headersrJ)rLr�r�r~�status_liner$r$r)r�s�(zStreamResponse._write_headers�datac�sX�t|tttf�sJdt|���|jrtd��|jdur!td��|j�|�IdHdS)N�#data argument must be byte-ish (%r)z%Cannot call write() after write_eof()z$Cannot call write() before prepare())	rr�bytes�	bytearray�
memoryviewr�r@rnr?�write�rLr�r$r$r)r�s�
�
�
zStreamResponse.writec�sF�|jrJd��|jdusJd��tjdtdd�|j��IdHdS)NzEOF has already been sent�Response has not been startedz2drain method is deprecated, use await resp.write()r�)�
stacklevel)r@r?rgrhri�drainrOr$r$r)r�(s��zStreamResponse.drain�c�sp�t|tttf�sJdt|���|jrdS|jdusJd��|j�|�IdHd|_d|_|jj	|_
d|_dS)Nr�r�T)rrr�r�r�r�r@r?�	write_eofr>�output_sizerer�r$r$r)r�2s�
�
�

zStreamResponse.write_eofcCs\|jrd}n|jr|jdusJ�|jj�d|jj�d�}nd}d|jj�d|j�d|�d�S)N�eofr�znot prepared�<�>)r@rPr>r�r{r�r3rE)rL�infor$r$r)�__repr__BszStreamResponse.__repr__�keycCs
|j|SrN�rI�rLr�r$r$r)�__getitem__LrdzStreamResponse.__getitem__cCs||j|<dSrNr�)rLr�r%r$r$r)�__setitem__OszStreamResponse.__setitem__cCs|j|=dSrNr�r�r$r$r)�__delitem__R�zStreamResponse.__delitem__cC�
t|j�SrN)�lenrIrOr$r$r)�__len__UrdzStreamResponse.__len__cCr�rN)�iterrIrOr$r$r)�__iter__XrdzStreamResponse.__iter__cCstt|��SrN)�hash�idrOr$r$r)�__hash__[r�zStreamResponse.__hash__�othercCs||uSrNr$)rLr�r$r$r)�__eq__^szStreamResponse.__eq__)rHrQrN)rHN)rHru)r�r/rHN�r�)Wr3r4r5rr�r�r!�__annotations__r�r8r9r
rsr:r;�zlib�Z_DEFAULT_STRATEGYr<r]r=r+r>r?rr@rArerBrr�r#r
rM�propertyrPrRrDrVrWrErZrKrbrcrfrkrortrFrvr�r�r��setterr�r�r�r�r�rr�rr�rr�r�r�r�r�r�r�r�r�r�r�r�rr�r�r�r�rr�r��objectr��
__classcell__r$r$r�r)r,MsT
����
�
����
�

���
�
�������	�
���
�5�������	
��� ��
�



A



r,csdeZdZUdZeeed<dddddddddd�	dededee	dee	d	ee
d
ee	dee	deed
eeddf�fdd�Ze
deeeeffdd��Zejdeddfdd��Ze
dee	fdd��Zejde	ddfdd��Ze
deefdd��Zejdeeddfdd��Zd&deddf�fdd�
Zdd def�fd!d"�Zd#eddf�fd$d%�Z�ZS)'r-N�_compressed_bodyrC)	�bodyrDrE�textrFr�r��zlib_executor_size�
zlib_executorrrDrErrFr�r�rrrHc	sR|dur|durtd��|durt�}
nt|t�st|�}
n|}
|dur,d|vr,td��|durhtj|
vr>|s9|r=td��nOt|t�sKtdt|���|durQd}|durWd}|d||
tj<|�|�}d}n%tj|
vrz|dusu|durytd��n|dur�|dur�|d|7}||
tj<t	�j
|||
d	�|dur�||_n||_||_
|	|_dS)
Nz&body and text are not allowed togetherr�z,charset must not be in content_type argumentzPpassing both Content-Type header and content_type or charset params is forbidden�text argument must be str (%r)�
text/plain�utf-8z
; charset=)rDrErG)r`r
rrrr�r��	TypeErrorr��encoder�rMrr�_zlib_executor_size�_zlib_executor)rLrrDrErrFr�r�rr�real_headersr�r$r)rMfsR



��


��

zResponse.__init__cCrSrN)r8rOr$r$r)r�rUz
Response.bodycCs�|durd|_nJt|ttf�r||_n?ztj�|�|_}Wntjy.tdt	|���w|j
}tj|vr=|j
|tj<|jrR|j��D]\}}||vrQ|||<qEd|_dS)NzUnsupported body type %r)r8rrr�r�r�PAYLOAD_REGISTRYr_�LookupErrorr`r�rJrr�r�rFr�r)rLrrFr�r%r$r$r)r�s$�
�
cCs |jdurdS|j�|jpd�S)Nr)r8�decoder�rOr$r$r)r�s
z
Response.textcCsZ|dust|t�sJdt|���|jdkrd|_|jdur!d|_|�|j�|_d|_dS)Nrr�rr)rrr�r�r�r�r
r8r)rLrr$r$r)r�s
�
�


cCsb|jrdStj|jvrt|jtj�S|jdurt|j�St|jt	�r%dS|jdur/t|j�SdS)Nr)
r:rrmrJr]rr�rrr8r!rOr$r$r)r��s



zResponse.content_lengthr%cCstd��)Nz#Content length is set automatically)rnr�r$r$r)r��sr�r�c�s��|jrdS|jdur|j}n|j}|rJd|����|jdus"J�|jdus)J�|dus0|jr:t���IdHdSt|jt	�rT|j�
|j�IdHt���IdHdSt��tt|��IdHdS)Nzdata arg is not supported, got )
r@rr8r>r?rAr�r�rrr!r�rr�)rLr�rr�r$r)r��s�
zResponse.write_eofr�r/c�s��tj|jvrt|j|j�r|jtj=n;|jsOt|jt	�r.|jj
dur-t|jj
�|jtj<n!|jr6t|j�nd}|dksG|jdkrO|jtj
vrOt|�|jtj<t��|�IdHS)N�0i0)rrmrJrr�rDr:rrr8r!�sizer�r��
METH_HEAD_ALLr�r�)rLr��body_lenr�r$r)r�s�
��zResponse._startr7c�s��|js
t|jt�rt��|�IdHS|tjurdSt|j	|j
|jd�}|jdus+J�|j
durCt|j�t
krCt�dt|j��d��|�|j�IdH|��|_|j	|jtj<tt|j��|jtj<dS)N)�encoding�max_sync_chunk_size�executorz2Synchronous compression of large response bodies (z� bytes) might block the async event loop. Consider providing a custom value to zlib_executor_size/zlib_executor response properties or disabling compression on it.)r:rrr8r!r�r�r+r2rr%rrr��LARGE_BODY_SIZErgrh�compress�flushrrJrr�r�rm)rLr7�
compressorr�r$r)r�s*�
����zResponse._do_start_compressionr�)r3r4r5rr
r�r�rr]r�r#rrMr�rr!rr�rr�r�rr�r+r�rr$r$r�r)r-bs^
�������	�
���C
r-rCzapplication/json)rrrDrErFr��dumpsr�rrrDrErFr�rrHcCs4|tur|s|rtd��||�}t||||||d�S)Nz3only one of data, text, or body should be specified)rrrDrErFr�)rr`r-)r�rrrDrErFr�rr$r$r)r.1s�r.)E�asyncio�collections.abc�collectionsr��enum�jsonr�r�rgr��concurrent.futuresr�httpr�http.cookiesr�typingrrrrr	r
rr�	multidictr
rr[rr�abcr�compression_utilsr�helpersrrrrrrrrrrrrr r!�typedefsr"r#r^r�__all__�web_requestr/r��	BaseClass�Enumr+r�r,r-rr�r]r.r$r$r$r)�<module>s�(0
Q���������	�
�