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: //home/arjun/projects/env/lib/python3.10/site-packages/aiohttp/__pycache__/streams.cpython-310.pyc
o

+wedQ�@s UddlZddlZddlZddlmZmZmZmZmZm	Z	m
Z
mZmZddl
mZddlmZmZmZmZddlmZdZed�ZGd	d
�d
e�ZGdd�dee�ZGd
d�d�ZGdd�d�ZGdd�de�ZGdd�de�Ze�Zeee d<Gdd�dee�Z!Gdd�de!e�Z"dS)�N)	�	Awaitable�Callable�Deque�Final�Generic�List�Optional�Tuple�TypeVar�)�BaseProtocol)�BaseTimerContext�	TimerNoop�
set_exception�
set_result)�internal_logger)�
EMPTY_PAYLOAD�	EofStream�StreamReader�	DataQueue�FlowControlDataQueue�_Tc@seZdZdZdS)rzeof stream indication.N)�__name__�
__module__�__qualname__�__doc__�rr�H/home/arjun/projects/env/lib/python3.10/site-packages/aiohttp/streams.pyrsrc@sBeZdZdegeefddfdd�Zddd�Zdefd	d
�ZdS)�AsyncStreamIterator�	read_func�returnNcC�
||_dS�N)r)�selfrrrr�__init__$�
zAsyncStreamIterator.__init__�AsyncStreamIterator[_T]cC�|Sr"r�r#rrr�	__aiter__'�zAsyncStreamIterator.__aiter__c�s8�z	|��IdH}Wn	tyt�w|dkrt�|S�N�)rr�StopAsyncIteration�r#�rvrrr�	__anext__*s��zAsyncStreamIterator.__anext__)r r&)	rrrrrrr$r)r0rrrrr#s
rc@s6eZdZddd�Zddd�Zdeeeffd	d
�ZdS)
�ChunkTupleAsyncStreamIterator�streamrr NcCr!r")�_stream)r#r2rrrr$5r%z&ChunkTupleAsyncStreamIterator.__init__cCr'r"rr(rrrr)8r*z'ChunkTupleAsyncStreamIterator.__aiter__c�s"�|j��IdH}|dkrt�|S)N�r,F)r3�	readchunkr-r.rrrr0;s
�z'ChunkTupleAsyncStreamIterator.__anext__)r2rr N)r r1)	rrrr$r)r	�bytes�boolr0rrrrr14s

r1c@sTeZdZdeefdd�Zdedeefdd�Zdeefdd�Zde	fd	d
�Z
dS)�AsyncStreamReaderMixinr cC�
t|j�Sr")r�readliner(rrrr)Cr%z AsyncStreamReaderMixin.__aiter__�ncst��fdd��S)z>Returns an asynchronous iterator that yields chunks of size n.cs
����Sr")�readr�r;r#rr�<lambda>Hs
z5AsyncStreamReaderMixin.iter_chunked.<locals>.<lambda>)r�r#r;rr=r�iter_chunkedFsz#AsyncStreamReaderMixin.iter_chunkedcCr9)z3Yield all available data as soon as it is received.)r�readanyr(rrr�iter_anyJs
zAsyncStreamReaderMixin.iter_anycCst|�S)z�Yield chunks of data as they are received by the server.

        The yielded objects are tuples
        of (bytes, bool) as returned by the StreamReader.readchunk method.
        )r1r(rrr�iter_chunksNsz"AsyncStreamReaderMixin.iter_chunksN)rrrrr6r)�intr@rBr1rCrrrrr8Bs
r8c@s�eZdZdZdZddd�dededeedee	j
d	df
d
d�Zd	efdd
�Z
d	eeeffdd�Zd	eefdd�Zded	dfdd�Zdegdfd	dfdd�ZdCdd�Zd	efdd�Zd	efdd�ZdCdd�Zd ed	dfd!d"�ZdDd ed#ed	dfd$d%�ZdCd&d'�ZdCd(d)�Zd*ed	dfd+d,�Zd	efd-d.�Z dEd0ed	efd1d2�Z!dFd4ed	efd5d6�Z"d	efd7d8�Z#d	eeeffd9d:�Z$d4ed	efd;d<�Z%dFd4ed	efd=d>�Z&d4ed	efd?d@�Z'd4ed	efdAdB�Z(dS)Gra*An enhancement of asyncio.StreamReader.

    Supports asynchronous iteration by line, chunk or as available::

        async for line in reader:
            ...
        async for chunk in reader.iter_chunked(1024):
            ...
        async for slice in reader.iter_any():
            ...

    rN)�timer�loop�protocol�limitrErFr cCs�||_||_|d|_|durt��}||_d|_d|_d|_t	�
�|_d|_d|_
d|_d|_d|_|dur:t�n||_g|_dS)N�rF)�	_protocol�
_low_water�_high_water�asyncio�get_event_loop�_loop�_size�_cursor�_http_chunk_splits�collections�deque�_buffer�_buffer_offset�_eof�_waiter�_eof_waiter�
_exceptionr�_timer�_eof_callbacks)r#rGrHrErFrrrr$gs"


zStreamReader.__init__cCs�|jjg}|jr|�d|j�|jr|�d�|jdkr(|�d|j|jf�|jr3|�d|j�|jr>|�d|j�dd�	|�S)	Nz%d bytes�eofizlow=%d high=%dzw=%rze=%r�<%s>� )
�	__class__rrP�appendrWrKrLrXrZ�join)r#�inforrr�__repr__�s


zStreamReader.__repr__cCs|j|jfSr")rKrLr(rrr�get_read_buffer_limits��z#StreamReader.get_read_buffer_limitscC�|jSr"�rZr(rrr�	exception��zStreamReader.exception�exccCsT||_|j��|j}|durd|_t||�|j}|dur(d|_t||�dSdSr")rZr\�clearrXrrY�r#rk�waiterrrrr�s

�zStreamReader.set_exception�callbackcCsB|jrz|�WdStyt�d�YdSw|j�|�dS�N�Exception in eof callback)rW�	Exceptionrrir\ra�r#rorrr�on_eof�s�zStreamReader.on_eofc	Cs�d|_|j}|durd|_t|d�|j}|dur!d|_t|d�|jD]}z|�Wq$ty9t�d�Yq$w|j��dS)NTrq)	rWrXrrYr\rrrrirl)r#rn�cbrrr�feed_eof�s 



�zStreamReader.feed_eofcCrg)z&Return True if  'feed_eof' was called.�rWr(rrr�is_eof�szStreamReader.is_eofcC�|jo|jS)z=Return True if the buffer is empty and 'feed_eof' was called.�rWrUr(rrr�at_eof�szStreamReader.at_eofc�sH�|jrdS|jdus
J�|j��|_z|jIdHWd|_dSd|_wr")rWrYrO�
create_futurer(rrr�wait_eof�s�zStreamReader.wait_eof�datacCsxtjdtdd�|sdS|jr|jd|jd�|jd<d|_|jt|�7_|jt|�8_|j�|�d|_	dS)zDrollback reading some data from stream, inserting it to buffer head.zJunread_data() is deprecated and will be removed in future releases (#3260)rI)�
stacklevelNr)
�warnings�warn�DeprecationWarningrVrUrP�lenrQ�
appendleft�_eof_counter)r#r~rrr�unread_data�s�
zStreamReader.unread_data�sizecCs�|jrJd��|sdS|jt|�7_|j�|�|jt|�7_|j}|dur2d|_t|d�|j|jkrC|j	j
sE|j	��dSdSdS)Nzfeed_data after feed_eof)rWrPr�rUra�total_bytesrXrrLrJ�_reading_paused�
pause_reading�r#r~r�rnrrr�	feed_data�s
�zStreamReader.feed_datacCs&|jdur|jrtd��g|_dSdS)Nz?Called begin_http_chunk_receiving whensome data was already fed)rRr��RuntimeErrorr(rrr�begin_http_chunk_receiving�s
�
�z'StreamReader.begin_http_chunk_receivingcCsh|jdur	td��|jr|jdnd}|j|krdS|j�|j�|j}|dur2d|_t|d�dSdS)NzFCalled end_chunk_receiving without calling begin_chunk_receiving first���r)rRr�r�rarXr)r#�posrnrrr�end_http_chunk_receivings
�

�z%StreamReader.end_http_chunk_receiving�	func_namec�sz�|jdurtd|��|j��}|_z$|j�
|IdHWd�n1s(wYWd|_dSWd|_dSd|_w)NzH%s() called while another coroutine is already waiting for incoming data)rXr�rOr|r[)r#r�rnrrr�_wait s�
���
�zStreamReader._waitc�s�|��IdHSr")�	readuntilr(rrrr:2s�zStreamReader.readline�
�	separatorc	�s��t|�}|dkr
td��|jdur|j�d}d}d}|rm|jr[|r[|j}|jd�||�d}|�|r<|||dnd�}||7}|t|�7}|rMd}||jkrVtd��|jr[|s"|jra	|S|rk|�	d	�IdH|s|S)
Nrz,Separator should be at least one-byte stringr,Trr�Fz
Chunk too bigr�)
r��
ValueErrorrZrUrV�find�_read_nowait_chunkrLrWr�)	r#r��seplen�chunk�
chunk_size�
not_enough�offset�icharr~rrrr�5s<�

�

���zStreamReader.readuntilr�r;c�s��|jdur	|j�	|jr%|js%t|dd�d|_|jdkr%tjddd�|s)dS|dkrEg}	|��IdH}|s:n|�|�q0d�	|�S|jsY|jsY|�
d	�IdH|jsY|jrK|�|�S)
NTr�rr�zEMultiple access to StreamReader in eof state, might be infinite loop.)�
stack_infor,r<)rZrWrU�getattrr�r�warningrArarbr��_read_nowait)r#r;�blocks�blockrrrr<Ys4�

�
�
�
zStreamReader.readc�sD�|jdur	|j�|js|js|�d�IdH|js|jr|�d�S)NrAr�)rZrUrWr�r�r(rrrrA�s�
�
zStreamReader.readanyc�s��	|jdur
|j�|jr1|j�d�}||jkrdS||jkr)|�||j�dfSt�d�|js
|jr;|�d�dfS|j	r@dS|�
d	�IdHq)
aReturns a tuple of (data, end_of_http_chunk).

        When chunked transfer
        encoding is used, end_of_http_chunk is a boolean indicating if the end
        of the data corresponds to the end of a HTTP chunk , otherwise it is
        always False.
        TNr�r,TzESkipping HTTP chunk end due to data consumption beyond chunk boundaryr�Fr4r5)rZrR�poprQr�rr�rUr�rWr�)r#r�rrrr5�s(�


���zStreamReader.readchunkc�sx�|jdur	|j�g}|dkr7|�|�IdH}|s(d�|�}t�|t|�|��|�|�|t|�8}|dksd�|�S)Nrr,)rZr<rbrM�IncompleteReadErrorr�ra)r#r;r�r��partialrrr�readexactly�s�


�
zStreamReader.readexactlycCs2|jdur|j�|jr|j��std��|�|�S)Nz9Called while some coroutine is waiting for incoming data.)rZrX�doner�r�r?rrr�read_nowait�s
�
zStreamReader.read_nowaitcCs�|jd}|j}|dkr$t|�||kr$||||�}|j|7_n|r5|j��||d�}d|_n|j��}|jt|�8_|jt|�7_|j}|rf|d|jkrf|�d�|rf|d|jksX|j|jkru|j	j
ru|j	��|S)Nrr�)rUrVr��popleftrPrQrRr�rKrJr��resume_reading)r#r;�first_bufferr�r~�chunk_splitsrrrr��s&



�
zStreamReader._read_nowait_chunkcCs^|j��g}|jr&|�|�}|�|�|dkr#|t|�8}|dkr#n|js
|r-d�|�SdS)z6Read not more than n bytes, or whole buffer if n == -1r�rr,)r[�assert_timeoutrUr�rar�rb)r#r;�chunksr�rrrr��s


�zStreamReader._read_nowait�r N�r)r��r�))rrrrr�rrDrr
rM�AbstractEventLoopr$�strrdr	re�
BaseExceptionrirrrtrvr7rxr{r}r6r�r�r�r�r�r:r�r<rAr5r�r�r�r�rrrrrWsN
�����
�
	


$*"rc@seZdZd)dd�Zdefdd�Zdeefdd�Zd	eddfd
d�Z	de
gdfddfd
d�Zd)dd�Zde
fdd�Zde
fdd�Zd)dd�Zd*dededdfdd�Zdefdd�Zd+dedefdd �Zdefd!d"�Zdeee
ffd#d$�Zdedefd%d&�Zd+dedefd'd(�ZdS),�EmptyStreamReaderr NcCs
d|_dS)NF��_read_eof_chunkr(rrrr$�r%zEmptyStreamReader.__init__cCsd|jjS)Nr^)r`rr(rrrrd�rfzEmptyStreamReader.__repr__cC�dSr"rr(rrrrir*zEmptyStreamReader.exceptionrkcCr�r"r)r#rkrrrrr*zEmptyStreamReader.set_exceptionrocCs,z|�WdStyt�d�YdSwrp)rrrrirsrrrrts
�zEmptyStreamReader.on_eofcCr�r"rr(rrrrv
r*zEmptyStreamReader.feed_eofcC�dS�NTrr(rrrrxr*zEmptyStreamReader.is_eofcCr�r�rr(rrrr{r*zEmptyStreamReader.at_eofc�s�dSr"rr(rrrr}��zEmptyStreamReader.wait_eofrr~r;cCr�r"r)r#r~r;rrrr�r*zEmptyStreamReader.feed_datac���dSr+rr(rrrr:r�zEmptyStreamReader.readliner�c�r�r+rr?rrrr<r�zEmptyStreamReader.readc�r�r+rr(rrrrA$r�zEmptyStreamReader.readanyc�s�|js	d|_dSdS)NTr4r�r�r(rrrr5's
�zEmptyStreamReader.readchunkc�s�t�d|��r+)rMr�r?rrrr�.s�zEmptyStreamReader.readexactlycCr�r+rr?rrrr�1r*zEmptyStreamReader.read_nowaitr�r�r�)rrrr$r�rdrr�rirrrtrvr7rxr{r}r6rDr�r:r<rAr	r5r�r�rrrrr��s"


r�rc@s�eZdZdZdejddfdd�Zdefdd�Zde	fd	d
�Z
de	fdd�Zdee
fd
d�Zde
ddfdd�Zddededdfdd�Zddd�Zdefdd�Zdeefdd�ZdS)rz>DataQueue is a general-purpose blocking queue with one reader.rFr NcCs,||_d|_d|_d|_d|_t��|_dS)NFr)rOrWrXrZrPrSrTrU)r#rFrrrr$;szDataQueue.__init__cCr9r")r�rUr(rrr�__len__Cr%zDataQueue.__len__cCrgr"rwr(rrrrxFrjzDataQueue.is_eofcCryr"rzr(rrrr{IszDataQueue.at_eofcCrgr"rhr(rrrriLrjzDataQueue.exceptionrkcCs2d|_||_|j}|durd|_t||�dSdSr�)rWrZrXrrmrrrrOs�zDataQueue.set_exceptionrr~r�cCsD|j|7_|j�||f�|j}|dur d|_t|d�dSdSr")rPrUrarXrr�rrrr�Xs�zDataQueue.feed_datacCs,d|_|j}|durd|_t|d�dSdSr�)rWrXr)r#rnrrrrvas�zDataQueue.feed_eofc	�s��|js*|js*|jrJ�|j��|_z|jIdHWntjtjfy)d|_�w|jr=|j��\}}|j	|8_	|S|j
durE|j
�t�r")rUrWrXrOr|rM�CancelledError�TimeoutErrorr�rPrZr�r#r~r�rrrr<is"�
�
zDataQueue.readcCr9r")rr<r(rrrr)}r%zDataQueue.__aiter__r�r�)rrrrrMr�r$rDr�r7rxr{rr�rirrr�rvr<rr)rrrrr8s	
	rcsbeZdZdZdededejddf�fdd�Zdd
e	deddf�fdd
�
Z
de	f�fdd�Z�ZS)rzlFlowControlDataQueue resumes and pauses an underlying stream.

    It is a destination for parsed data.
    rGrHrFr Ncs"t�j|d�||_|d|_dS)N)rFrI)�superr$rJ�_limit)r#rGrHrF�r`rrr$�szFlowControlDataQueue.__init__rr~r�cs8t��||�|j|jkr|jjs|j��dSdSdSr")r�r�rPr�rJr�r�r�r�rrr��s�zFlowControlDataQueue.feed_datac�s\�zt���IdHW|j|jkr|jjr|j��SSS|j|jkr,|jjr-|j��wwwr")r�r<rPr�rJr�r�r(r�rrr<�s���zFlowControlDataQueue.readr�)
rrrrrrDrMr�r$rr�r<�
__classcell__rrr�rr�s����r)#rMrSr��typingrrrrrrrr	r
�
base_protocolr�helpersr
rrr�logr�__all__rrrrrr1r8rr�r�__annotations__rrrrrr�<module>s*
,&;I