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

���g9W�@s$UddlZddlZddlZddlmZmZmZmZmZm	Z	m
Z
mZmZddl
mZddlmZmZmZmZmZddlmZdZed�ZGd	d
�d
e�ZGdd�dee�ZGd
d�d�ZGdd�d�ZGdd�de�ZGdd�de�Ze�Z eee!d<Gdd�dee�Z"Gdd�de"e�Z#dS)�N)	�	Awaitable�Callable�Deque�Final�Generic�List�Optional�Tuple�TypeVar�)�BaseProtocol)�
_EXC_SENTINEL�BaseTimerContext�	TimerNoop�
set_exception�
set_result)�internal_logger)�
EMPTY_PAYLOAD�	EofStream�StreamReader�	DataQueue�_Tc@seZdZdZdS)rzeof stream indication.N)�__name__�
__module__�__qualname__�__doc__�rr�:/usr/local/lib/python3.10/dist-packages/aiohttp/streams.pyr$src@sFeZdZdZdegeefddfdd�Zddd	�Zdefd
d�Z	dS)
�AsyncStreamIterator��	read_funcr �returnNcC�
||_dS�Nr)�selfr rrr�__init__,�
zAsyncStreamIterator.__init__�AsyncStreamIterator[_T]cC�|Sr#r�r$rrr�	__aiter__/�zAsyncStreamIterator.__aiter__c�s8�z	|��IdH}Wn	tyt�w|dkrt�|S�N�)r r�StopAsyncIteration�r$�rvrrr�	__anext__2s��zAsyncStreamIterator.__anext__)r!r')
rrr�	__slots__rrrr%r*r1rrrrr(s

rc@s:eZdZdZddd�Zd
dd	�Zdeeeffd
d�Z	dS)�ChunkTupleAsyncStreamIterator��_stream�streamrr!NcCr"r#r4)r$r6rrrr%@r&z&ChunkTupleAsyncStreamIterator.__init__cCr(r#rr)rrrr*Cr+z'ChunkTupleAsyncStreamIterator.__aiter__c�s"�|j��IdH}|dkrt�|S)N�r-F)r5�	readchunkr.r/rrrr1Fs
�z'ChunkTupleAsyncStreamIterator.__anext__)r6rr!N)r!r3)
rrrr2r%r*r	�bytes�boolr1rrrrr3<s


r3c@sXeZdZdZdeefdd�Zdedeefdd�Zdeefdd	�Z	de
fd
d�ZdS)
�AsyncStreamReaderMixinrr!cC�
t|j�Sr#)r�readliner)rrrr*Qr&z AsyncStreamReaderMixin.__aiter__�ncst��fdd��S)z>Returns an asynchronous iterator that yields chunks of size n.cs
����Sr#)�readr�r>r$rr�<lambda>Vs
z5AsyncStreamReaderMixin.iter_chunked.<locals>.<lambda>)r�r$r>rr@r�iter_chunkedTsz#AsyncStreamReaderMixin.iter_chunkedcCr<)z3Yield all available data as soon as it is received.)r�readanyr)rrr�iter_anyXs
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.
        )r3r)rrr�iter_chunks\sz"AsyncStreamReaderMixin.iter_chunksN)rrrr2rr9r*�intrCrEr3rFrrrrr;Msr;c@s�eZdZdZdZddd�dededeedee	j
d	df
d
d�Zd	efdd
�Z
d	eeeffdd�Zd	eefdd�Zefdeded	dfdd�Zdegdfd	dfdd�ZdEdd�Zd	efdd�Zd	efdd�ZdEdd �Zd!ed	dfd"d#�ZdFd!ed%ed	dfd&d'�ZdEd(d)�ZdEd*d+�Zd,ed	dfd-d.�Z d	efd/d0�Z!dGd2ed	efd3d4�Z"dHd6ed	efd7d8�Z#d	efd9d:�Z$d	eeeffd;d<�Z%d6ed	efd=d>�Z&dHd6ed	efd?d@�Z'd6ed	efdAdB�Z(d6ed	efdCdD�Z)dS)Ira*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():
            ...

    )�	_protocol�
_low_water�_high_water�_loop�_size�_cursor�_http_chunk_splits�_buffer�_buffer_offset�_eof�_waiter�_eof_waiter�
_exception�_timer�_eof_callbacks�_eof_counter�total_bytesN)�timer�loop�protocol�limitrYrZr!cCs�||_||_|d|_|durt��}||_d|_d|_d|_t	�
�|_d|_d|_
d|_d|_d|_|dur:t�n||_g|_d|_d|_dS)N�rF)rHrIrJ�asyncio�get_event_looprKrLrMrN�collections�dequerOrPrQrRrSrTrrUrVrWrX)r$r[r\rYrZrrrr%�s&


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__rrL�appendrQrIrJrRrT�join)r$�inforrr�__repr__�s


zStreamReader.__repr__cCs|j|jfSr#)rIrJr)rrr�get_read_buffer_limits��z#StreamReader.get_read_buffer_limitscC�|jSr#�rTr)rrr�	exception��zStreamReader.exception�exc�	exc_causecCsX||_|j��|j}|durd|_t|||�|j}|dur*d|_t|||�dSdSr#)rTrV�clearrRrrS�r$rprq�waiterrrrr�s
�zStreamReader.set_exception�callbackcCsB|jrz|�WdStyt�d�YdSw|j�|�dS�N�Exception in eof callback)rQ�	ExceptionrrnrVrf�r$rurrr�on_eof�s�zStreamReader.on_eofc	Cs�d|_|j}|durd|_t|d�|j}|dur!d|_t|d�|jjr*|j��|jD]}z|�Wq-tyBt	�
d�Yq-w|j��dS)NTrw)rQrRrrSrH�_reading_paused�resume_readingrVrxrrnrr)r$rt�cbrrr�feed_eof�s$




�zStreamReader.feed_eofcCrl)z&Return True if  'feed_eof' was called.�rQr)rrr�is_eof�szStreamReader.is_eofcC�|jo|jS)z=Return True if the buffer is empty and 'feed_eof' was called.�rQrOr)rrr�at_eof�szStreamReader.at_eofc�sH�|jrdS|jdus
J�|j��|_z|jIdHWd|_dSd|_wr#)rQrSrK�
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)r])�
stacklevelNr)
�warnings�warn�DeprecationWarningrPrOrL�lenrM�
appendleftrW)r$r�rrr�unread_data�s�
zStreamReader.unread_datar�sizecCs�|jrJd��|sdSt|�}|j|7_|j�|�|j|7_|j}|dur2d|_t|d�|j|jkrC|j	j
sE|j	��dSdSdS)Nzfeed_data after feed_eof)rQr�rLrOrfrXrRrrJrHr{�
pause_reading)r$r�r��data_lenrtrrr�	feed_datas
�zStreamReader.feed_datacCs&|jdur|jrtd��g|_dSdS)Nz@Called begin_http_chunk_receiving when some data was already fed)rNrX�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)rNr�rXrfrRr)r$�posrtrrr�end_http_chunk_receiving,s
�

�z%StreamReader.end_http_chunk_receiving�	func_namec�s��|jjs	td��|jdurtd|��|j��}|_z$|j�
|IdHWd�n1s0wYWd|_dSWd|_dSd|_w)NzConnection closed.zH%s() called while another coroutine is already waiting for incoming data)rH�	connectedr�rRrKr�rU)r$r�rtrrr�_waitJs"�
���
�zStreamReader._waitc�s�|��IdHSr#)�	readuntilr)rrrr=_s�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��
ValueErrorrTrOrP�find�_read_nowait_chunkrJrQr�)	r$r��seplen�chunk�
chunk_size�
not_enough�offset�icharr�rrrr�bs<�

�

���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)
NTrWrr�zEMultiple access to StreamReader in eof state, might be infinite loop.)�
stack_infor-r?)rTrQrO�getattrrWr�warningrDrfrgr��_read_nowait)r$r>�blocks�blockrrrr?�s4�

�
�
�
zStreamReader.readc�sD�|jdur	|j�|js|js|�d�IdH|js|jr|�d�S)NrDr�)rTrOrQr�r�r)rrrrD�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�Fr7r8)rTrN�poprMr�rr�rOr�rQr�)r$r�rrrr8�s(�


���zStreamReader.readchunkc�sx�|jdur	|j�g}|dkr7|�|�IdH}|s(d�|�}t�|t|�|��|�|�|t|�8}|dksd�|�S)Nrr-)rTr?rgr^�IncompleteReadErrorr�rf)r$r>r�r��partialrrr�readexactly�s�


�
zStreamReader.readexactlycCs2|jdur|j�|jr|j��std��|�|�S)Nz9Called while some coroutine is waiting for incoming data.)rTrR�doner�r�rBrrr�read_nowait�s
�
zStreamReader.read_nowaitcCs�|jd}|j}|dkr$t|�||kr$||||�}|j|7_n|r5|j��||d�}d|_n|j��}t|�}|j|8_|j|7_|j}|rf|d|jkrf|�d�|rf|d|jksX|j|jkru|j	j
ru|j	��|S)Nrr�)rOrPr��popleftrLrMrNr�rIrHr{r|)r$r>�first_bufferr�r�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-)rU�assert_timeoutrOr�rfr�rg)r$r>�chunksr�rrrr�s


�zStreamReader._read_nowait�r!N�r)r��r�)*rrrrr2rrGrrr^�AbstractEventLoopr%�strrir	rj�
BaseExceptionrnr
rrrzr~r:r�r�r�r9r�r�r�r�r�r=r�r?rDr8r�r�r�r�rrrrres\
�����
����
�
	


$*"rc@s"eZdZdZd+dd�Zdefdd�Zdeefdd	�Z	e
fd
ededdfdd
�Zdegdfddfdd�Z
d+dd�Zdefdd�Zdefdd�Zd+dd�Zd,dededdfdd�Zdefdd�Zd-dedefd!d"�Zdefd#d$�Zdeeeffd%d&�Zdedefd'd(�Zd-dedefd)d*�ZdS).�EmptyStreamReader��_read_eof_chunkr!NcCsd|_d|_dS)NFr)r�rXr)rrrr%,s
zEmptyStreamReader.__init__cCsd|jjS)Nrc)rerr)rrrri0rkzEmptyStreamReader.__repr__cC�dSr#rr)rrrrn3r+zEmptyStreamReader.exceptionrprqcCr�r#r)r$rprqrrrr6szEmptyStreamReader.set_exceptionrucCs,z|�WdStyt�d�YdSwrv)rxrrnryrrrrz=s
�zEmptyStreamReader.on_eofcCr�r#rr)rrrr~Cr+zEmptyStreamReader.feed_eofcC�dS�NTrr)rrrr�Fr+zEmptyStreamReader.is_eofcCr�r�rr)rrrr�Ir+zEmptyStreamReader.at_eofc�s�dSr#rr)rrrr�L��zEmptyStreamReader.wait_eofrr�r>cCr�r#r)r$r�r>rrrr�Or+zEmptyStreamReader.feed_datac���dSr,rr)rrrr=Rr�zEmptyStreamReader.readliner�c�r�r,rrBrrrr?Ur�zEmptyStreamReader.readc�r�r,rr)rrrrDZr�zEmptyStreamReader.readanyc�s�|js	d|_dSdS)NTr7r�r�r)rrrr8]s
�zEmptyStreamReader.readchunkc�s�t�d|��r,)r^r�rBrrrr�ds�zEmptyStreamReader.readexactlycCr�r,rrBrrrr�gr+zEmptyStreamReader.read_nowaitr�r�r�)rrrr2r%r�rirr�rnr
rrrzr~r:r�r�r�r9rGr�r=r?rDr	r8r�r�rrrrr�(s2
���
�

r�rc@s�eZdZdZdejddfdd�Zdefdd�Zde	fd	d
�Z
de	fdd�Zdee
fd
d�Zefde
de
ddfdd�Zddededdfdd�Zddd�Zdefdd�Zdeefdd�ZdS) rz>DataQueue is a general-purpose blocking queue with one reader.rZr!NcCs&||_d|_d|_d|_t��|_dS)NF)rKrQrRrTr`rarO)r$rZrrrr%qs
zDataQueue.__init__cCr<r#)r�rOr)rrr�__len__xr&zDataQueue.__len__cCrlr#rr)rrrr�{rozDataQueue.is_eofcCr�r#r�r)rrrr�~szDataQueue.at_eofcCrlr#rmr)rrrrn�rozDataQueue.exceptionrprqcCs4d|_||_|j}durd|_t|||�dSdSr�)rQrTrRrrsrrrr�s�zDataQueue.set_exceptionrr�r�cCs6|j�||f�|j}durd|_t|d�dSdSr#)rOrfrRr)r$r�r�rtrrrr��s
�zDataQueue.feed_datacCs,d|_|j}durd|_t|d�dSdSr�)rQrRr)r$rtrrrr~�s
�zDataQueue.feed_eofc	�s��|js*|js*|jrJ�|j��|_z|jIdHWntjtjfy)d|_�w|jr6|j��\}}|S|j	dur>|j	�t
�r#)rOrQrRrKr�r^�CancelledError�TimeoutErrorr�rTr)r$r��_rrrr?�s �
�
zDataQueue.readcCr<r#)rr?r)rrrr*�r&zDataQueue.__aiter__r�r�)rrrrr^r�r%rGr�r:r�r�rr�rnr
rrr�r~r?rr*rrrrrns&���
�
rcs^eZdZdZdededejddf�fdd�Zdd
e	deddf�fdd
�
Z
de	fdd�Z�ZS)�FlowControlDataQueuez�FlowControlDataQueue resumes and pauses an underlying stream.

    It is a destination for parsed data.

    This class is deprecated and will be removed in version 4.0.
    r[r\rZr!Ncs(t�j|d�d|_||_|d|_dS)N)rZrr])�superr%rLrH�_limit)r$r[r\rZ�rerrr%�szFlowControlDataQueue.__init__rr�r�csFt��||�|j|7_|j|jkr|jjs!|j��dSdSdSr#)r�r�rLr�rHr{r��r$r�r�r�rrr��s
�zFlowControlDataQueue.feed_datac	�s��|js*|js*|jrJ�|j��|_z|jIdHWntjtjfy)d|_�w|jrL|j��\}}|j	|8_	|j	|j
krJ|jjrJ|j�
�|S|jdurT|j�t�r#)rOrQrRrKr�r^r�r�r�rLr�rHr{r|rTrr�rrrr?�s&�
�

zFlowControlDataQueue.readr�)
rrrrrrGr^r�r%rr�r?�
__classcell__rrr�rr��s����r�)$r^r`r��typingrrrrrrrr	r
�
base_protocolr�helpersr
rrrr�logr�__all__rrxrrr3r;rr�r�__annotations__rr�rrrr�<module>s*
,FCA