
    h9W                        U d dl Z d dlZd dlZd dlmZmZmZmZmZm	Z	m
Z
mZmZ ddlmZ ddlmZmZmZmZmZ ddlmZ dZ ed          Z G d	 d
e          Z G d dee                   Z G d d          Z G d d          Z G d de          Z G d de          Z e            Z ee         e!d<    G d dee                   Z" G d de"e                   Z#dS )    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                       e Zd ZdZdS )r   zeof stream indication.N)__name__
__module____qualname____doc__     Q/var/www/html/prod/cognitive/venv/lib/python3.11/site-packages/aiohttp/streams.pyr   r   $   s            r   r   c                   R    e Zd ZdZdeg ee         f         ddfdZd	dZdefdZ	dS )
AsyncStreamIterator	read_funcr$   returnNc                     || _         d S Nr#   )selfr$   s     r    __init__zAsyncStreamIterator.__init__,   s    "r   AsyncStreamIterator[_T]c                     | S r'   r   r(   s    r    	__aiter__zAsyncStreamIterator.__aiter__/       r   c                    K   	 |                                   d {V }n# t          $ r t          w xY w|dk    rt          |S Nr   )r$   r   StopAsyncIterationr(   rvs     r    	__anext__zAsyncStreamIterator.__anext__2   sc      	%~~''''''''BB 	% 	% 	%$$	%99$$	s    1)r%   r*   )
r   r   r   	__slots__r   r   r   r)   r-   r4   r   r   r    r"   r"   (   sx        I#(2y}+<"= #$ # # # #         r   r"   c                   >    e Zd ZdZd	dZd
dZdeeef         fdZ	dS )ChunkTupleAsyncStreamIterator_streamstreamr   r%   Nc                     || _         d S r'   r8   )r(   r:   s     r    r)   z&ChunkTupleAsyncStreamIterator.__init__@   s    r   c                     | S r'   r   r,   s    r    r-   z'ChunkTupleAsyncStreamIterator.__aiter__C   r.   r   c                 b   K   | j                                          d {V }|dk    rt          |S )Nr   F)r9   	readchunkr1   r2   s     r    r4   z'ChunkTupleAsyncStreamIterator.__anext__F   sA      <))++++++++$$	r   )r:   r   r%   N)r%   r7   )
r   r   r   r5   r)   r-   r
   bytesboolr4   r   r   r    r7   r7   <   se        I      ud{!3      r   r7   c                   j    e Zd ZdZdee         fdZdedee         fdZdee         fdZ	de
fdZdS )	AsyncStreamReaderMixinr   r%   c                 *    t          | j                  S r'   )r"   readliner,   s    r    r-   z AsyncStreamReaderMixin.__aiter__Q   s    "4=111r   nc                 ,     t           fd          S )z>Returns an asynchronous iterator that yields chunks of size n.c                  .                                    S r'   )read)rF   r(   s   r    <lambda>z5AsyncStreamReaderMixin.iter_chunked.<locals>.<lambda>V   s    499Q<< r   )r"   r(   rF   s   ``r    iter_chunkedz#AsyncStreamReaderMixin.iter_chunkedT   s    "#7#7#7#7#7888r   c                 *    t          | j                  S )z3Yield all available data as soon as it is received.)r"   readanyr,   s    r    iter_anyzAsyncStreamReaderMixin.iter_anyX   s    "4<000r   c                      t          |           S )zYield 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.
        )r7   r,   s    r    iter_chunksz"AsyncStreamReaderMixin.iter_chunks\   s     -T222r   N)r   r   r   r5   r"   r@   r-   intrL   rO   r7   rQ   r   r   r    rC   rC   M   s        I2.u5 2 2 2 29c 9&9%&@ 9 9 9 91-e4 1 1 1 13: 3 3 3 3 3 3r   rC   c                      e Zd ZdZdZddddededee         dee	j
                 d	df
d
Zd	efdZd	eeef         fdZd	ee         fdZefdeded	dfdZdeg df         d	dfdZd-dZd	efdZd	efdZd-dZded	dfdZd.deded	dfdZd-dZd-dZded	dfdZ d	efd Z!d/d"ed	efd#Z"d0d%ed	efd&Z#d	efd'Z$d	eeef         fd(Z%d%ed	efd)Z&d0d%ed	efd*Z'd%ed	efd+Z(d%ed	efd,Z)dS )1r   a*  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limitre   rf   r%   c                f   || _         || _        |dz  | _        |t          j                    }|| _        d| _        d| _        d | _        t          j
                    | _        d| _        d| _        d | _        d | _        d | _        |t#                      n|| _        g | _        d| _        d| _        d S )N   r   F)rT   rU   rV   asyncioget_event_looprW   rX   rY   rZ   collectionsdequer[   r\   r]   r^   r_   r`   r   ra   rb   rc   rd   )r(   rg   rh   re   rf   s        r    r)   zStreamReader.__init__   s     " 19<)++D

7;%0%6%8%8	7;;?37%*]ikkk8:r   c                    | j         j        g}| j        r|                    d| j        z             | j        r|                    d           | j        dk    r$|                    d| j        | j        fz             | j        r|                    d| j        z             | j        r|                    d| j        z             dd	                    |          z  S )	Nz%d byteseofi   zlow=%d high=%dzw=%rze=%r<%s> )
	__class__r   rX   appendr]   rU   rV   r^   r`   join)r(   infos     r    __repr__zStreamReader.__repr__   s    '(: 	1KK
TZ/0009 	KK?e##KK(DOT=M+NNOOO< 	/KK-...? 	2KK0111&&r   c                     | j         | j        fS r'   )rU   rV   r,   s    r    get_read_buffer_limitsz#StreamReader.get_read_buffer_limits   s    !122r   c                     | j         S r'   r`   r,   s    r    	exceptionzStreamReader.exception   
    r   exc	exc_causec                     || _         | j                                         | j        }|d | _        t	          |||           | j        }|d | _        t	          |||           d S d S r'   )r`   rb   clearr^   r   r_   r(   r~   r   waiters       r    r   zStreamReader.set_exception   s|    
 !!###DL&#y111!#D&#y11111 r   callbackc                     | j         r2	  |             d S # t          $ r t          j        d           Y d S w xY w| j                            |           d S NException in eof callback)r]   	Exceptionr   r|   rb   rt   r(   r   s     r    on_eofzStreamReader.on_eof   sz    9 	1G




 G G G)*EFFFFFFG &&x00000s   
 77c                    d| _         | j        }|d | _        t          |d            | j        }|d | _        t          |d            | j        j        r| j                                         | j        D ]1}	  |             # t          $ r t          j
        d           Y .w xY w| j                                         d S )NTr   )r]   r^   r   r_   rT   _reading_pausedresume_readingrb   r   r   r|   r   )r(   r   cbs      r    feed_eofzStreamReader.feed_eof   s    	DLvt$$$!#Dvt$$$>) 	,N))+++% 	G 	GBG G G G)*EFFFFFG 	!!#####s   7
BB#"B#c                     | j         S )z&Return True if  'feed_eof' was called.r]   r,   s    r    is_eofzStreamReader.is_eof   s
    yr   c                      | j         o| j         S )z=Return True if the buffer is empty and 'feed_eof' was called.r]   r[   r,   s    r    at_eofzStreamReader.at_eof   s    y---r   c                    K   | j         rd S | j        J | j                                        | _        	 | j         d {V  d | _        d S # d | _        w xY wr'   )r]   r_   rW   create_futurer,   s    r    wait_eofzStreamReader.wait_eof   s|      9 	F''':3355	$""""""""#DtD####s   A
 
	Adatac                 \   t          j        dt          d           |sdS | j        r)| j        d         | j        d         | j        d<   d| _        | xj        t          |          z  c_        | xj        t          |          z  c_        | j                            |           d| _	        dS )zDrollback reading some data from stream, inserting it to buffer head.zJunread_data() is deprecated and will be removed in future releases (#3260)rj   )
stacklevelNr   )
warningswarnDeprecationWarningr\   r[   rX   lenrY   
appendleftrc   )r(   r   s     r    unread_datazStreamReader.unread_data   s    =		
 	
 	
 	
  	F 	$"l1od.A.C.CDDLO"#D

c$ii

D		!%%%r   r   sizec                 t   | j         r
J d            |sd S t          |          }| xj        |z  c_        | j                            |           | xj        |z  c_        | j        }|d | _        t          |d            | j        | j        k    r'| j	        j
        s| j	                                         d S d S d S )Nzfeed_data after feed_eof)r]   r   rX   r[   rt   rd   r^   r   rV   rT   r   pause_reading)r(   r   r   data_lenr   s        r    	feed_datazStreamReader.feed_data  s    988888} 	Ft99

h

D!!!H$DLvt$$$:(((1O(N((***** )(((r   c                 R    | j         | j        rt          d          g | _         d S d S )Nz@Called begin_http_chunk_receiving when some data was already fed)rZ   rd   RuntimeErrorr,   s    r    begin_http_chunk_receivingz'StreamReader.begin_http_chunk_receiving$  sC    "* "V   ')D### +*r   c                     | j         t          d          | j         r| j         d         nd}| j        |k    rd S | j                             | j                   | j        }|d | _        t          |d            d S d S )NzFCalled end_chunk_receiving without calling begin_chunk_receiving firstr   )rZ   r   rd   rt   r^   r   )r(   posr   s      r    end_http_chunk_receivingz%StreamReader.end_http_chunk_receiving,  s    "*.   .2-DKd%b))!s"" F&&t'7888 DLvt$$$$$ r   	func_namec                 (  K   | j         j        st          d          | j        t          d|z            | j                                        x}| _        	 | j        5  | d {V  d d d            n# 1 swxY w Y   d | _        d S # d | _        w xY w)NzConnection closed.zH%s() called while another coroutine is already waiting for incoming data)rT   	connectedr   r^   rW   r   ra   )r(   r   r   s      r    _waitzStreamReader._waitJ  s      ~' 	53444 <#46?@  
 !%
 8 8 : ::	                   DLLL4DLs0   B 	A4(B 4A88B ;A8<B 	Bc                 :   K   |                                   d {V S r'   )	readuntilr,   s    r    rE   zStreamReader.readline_  s(      ^^%%%%%%%%%r      
	separatorc                   K   t          |          }|dk    rt          d          | j        | j        d}d}d}|r| j        r|r| j        }| j        d                             ||          dz   }|                     |r||z
  |z   dz
  nd          }||z  }|t          |          z  }|rd}|| j        k    rt          d          | j        r|| j        rn|r| 	                    d	           d {V  ||S )
Nr   z,Separator should be at least one-byte stringr   Tr   r   FzChunk too bigr   )
r   
ValueErrorr`   r[   r\   find_read_nowait_chunkrV   r]   r   )	r(   r   seplenchunk
chunk_size
not_enoughoffseticharr   s	            r    r   zStreamReader.readuntilb  s\     YQ;;KLLL?&/!

 	., 6: 6,Q,,Y??!C..38@EFNV+a//b  c$ii'
 '!&J 000$_555 , 6: 6 y  .jj---------)  	., r   r   rF   c                   K   | j         | j         	 | j        rA| j        s:t          | dd          dz   | _        | j        dk    rt          j        dd           |sdS |dk     rKg }	 |                                  d {V }|sn|                    |           3d	                    |          S | j        s0| j        s)| 
                    d	           d {V  | j        s| j        )|                     |          S )
NTrc   r   r      zEMultiple access to StreamReader in eof state, might be infinite loop.)
stack_infor   rI   )r`   r]   r[   getattrrc   r   warningrN   rt   ru   r   _read_nowait)r(   rF   blocksblocks       r    rI   zStreamReader.read  sT     ?&/!	y  $+D.!$D$Dq$H!$q((#+2#'     	3q55
 F%"llnn,,,,,, e$$$	%
 88F###
 , 	%ty 	%**V$$$$$$$$$ , 	%ty 	%   ###r   c                    K   | j         | j         | j        s0| j        s)|                     d           d {V  | j        s| j        )|                     d          S )NrN   r   )r`   r[   r]   r   r   r,   s    r    rN   zStreamReader.readany  sz      ?&/!
 , 	(ty 	(**Y''''''''' , 	(ty 	(   $$$r   c                   K   	 | j         | j         | j        rl| j                            d          }|| j        k    rdS || j        k    r|                     || j        z
            dfS t          j        d           | j        l| j        r|                     d          dfS | j	        rdS | 
                    d	           d{V  )
a  Returns 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   Fr>   r?   )r`   rZ   poprY   r   r   r   r[   r   r]   r   )r(   r   s     r    r?   zStreamReader.readchunk  s     	**o%) 	-11!44$,&&&;%% --cDL.@AA4HH'8   ) 	 | <//33U;; y $ $|**[)))))))))1	*r   c                 d  K   | j         | j         g }|dk    r|                     |           d {V }|s:d                    |          }t          j        |t          |          |z             |                    |           |t          |          z  }|dk    d                    |          S )Nr   r   )r`   rI   ru   rk   IncompleteReadErrorr   rt   )r(   rF   r   r   partials        r    readexactlyzStreamReader.readexactly  s      ?&/! !ee))A,,&&&&&&E M((6**1'3w<<!;KLLLMM%   UOA !ee xxr   c                     | j         | j         | j        r(| j                                        st          d          |                     |          S )Nz9Called while some coroutine is waiting for incoming data.)r`   r^   doner   r   rK   s     r    read_nowaitzStreamReader.read_nowait  s^    
 ?&/!< 	 1 1 3 3 	K     ###r   c                 z   | j         d         }| j        }|dk    r4t          |          |z
  |k    r||||z            }| xj        |z  c_        nF|r+| j                                          ||d          }d| _        n| j                                         }t          |          }| xj        |z  c_        | xj        |z  c_        | j        }|r9|d         | j        k     r(|                    d           |r|d         | j        k     (| j        | j        k     r%| j	        j
        r| j	                                         |S )Nr   r   )r[   r\   r   popleftrX   rY   rZ   r   rU   rT   r   r   )r(   rF   first_bufferr   r   r   chunk_splitss          r    r   zStreamReader._read_nowait_chunk  sV   |A$77s<((61A55! 34D1$ 	*L  """(D"#D <''))Dt99

h

 . 	 |A==Q  	 |A== :''DN,J'N))+++r   c                    | j                                          g }| j        rP|                     |          }|                    |           |dk    r|t          |          z  }|dk    rn| j        P|rd                    |          ndS )z6Read not more than n bytes, or whole buffer if n == -1r   r   r   )ra   assert_timeoutr[   r   rt   r   ru   )r(   rF   chunksr   s       r    r   zStreamReader._read_nowait  s    ""$$$l 	++A..EMM%   BwwSZZ66 l 	 $*2sxxs2r   r%   Nr   )r   r   )*r   r   r   r   r5   r   rR   r	   r   rk   AbstractEventLoopr)   strrw   r
   ry   BaseExceptionr|   r   r   r   r   r   rA   r   r   r   r@   r   r   r   r   r   rE   r   rI   rN   r?   r   r   r   r   r   r   r    r   r   e   s|        I2 -148   
 () w01 
   8'# ' ' ' '3c3h 3 3 3 38M2     $12 22 !2 
	2 2 2 2$1xD1 1d 1 1 1 1$ $ $ $0    . . . . .	$ 	$ 	$ 	$ $    (+ +e +3 +t + + + +&) ) ) )% % % %< S  T        *& & & & &" " "5 " " " "H($ ($C ($ ($ ($ ($ ($T
%u 
% 
% 
% 
% *ud{!3  *  *  *  *D 3  5        $ $S $% $ $ $ $C E    83c 3e 3 3 3 3 3 3r   r   c                      e Zd ZdZddZdefdZdee         fdZ	e
fdededdfd	Zd
eg df         ddfdZddZdefdZdefdZddZddededdfdZdefdZddedefdZdefdZdeeef         fdZdedefdZddedefdZdS )EmptyStreamReader_read_eof_chunkr%   Nc                 "    d| _         d| _        d S )NFr   )r   rd   r,   s    r    r)   zEmptyStreamReader.__init__,  s    $r   c                      d| j         j        z  S )Nrq   )rs   r   r,   s    r    rw   zEmptyStreamReader.__repr__0  s    ///r   c                     d S r'   r   r,   s    r    r|   zEmptyStreamReader.exception3      tr   r~   r   c                     d S r'   r   )r(   r~   r   s      r    r   zEmptyStreamReader.set_exception6  s	    
 	r   r   c                 f    	  |             d S # t           $ r t          j        d           Y d S w xY wr   )r   r   r|   r   s     r    r   zEmptyStreamReader.on_eof=  sQ    	CHJJJJJ 	C 	C 	C%&ABBBBBB	Cs   
 00c                     d S r'   r   r,   s    r    r   zEmptyStreamReader.feed_eofC      r   c                     dS NTr   r,   s    r    r   zEmptyStreamReader.is_eofF  r   r   c                     dS r   r   r,   s    r    r   zEmptyStreamReader.at_eofI  r   r   c                 
   K   d S r'   r   r,   s    r    r   zEmptyStreamReader.wait_eofL  s      r   r   r   rF   c                     d S r'   r   )r(   r   rF   s      r    r   zEmptyStreamReader.feed_dataO  r   r   c                 
   K   dS r0   r   r,   s    r    rE   zEmptyStreamReader.readlineR        sr   r   c                 
   K   dS r0   r   rK   s     r    rI   zEmptyStreamReader.readU  r   r   c                 
   K   dS r0   r   r,   s    r    rN   zEmptyStreamReader.readanyZ  r   r   c                 *   K   | j         s	d| _         dS dS )NTr>   r   r   r,   s    r    r?   zEmptyStreamReader.readchunk]  s#      # 	 #'D <{r   c                 0   K   t          j        d|          r0   )rk   r   rK   s     r    r   zEmptyStreamReader.readexactlyd  s      )#q111r   c                     dS r0   r   rK   s     r    r   zEmptyStreamReader.read_nowaitg  s    sr   r   r   r   )r   r   r   r5   r)   r   rw   r	   r   r|   r   r   r   r   r   rA   r   r   r   r@   rR   r   rE   rI   rN   r
   r?   r   r   r   r   r    r   r   (  s)       $I   0# 0 0 0 08M2     $1  ! 
	   CxD1 Cd C C C C               e  D         C     
u    ud{!3    23 25 2 2 2 2 S %      r   r   r   c                       e Zd ZdZdej        ddfdZdefdZde	fdZ
de	fdZdee         fd	Zefd
ededdfdZddededdfdZddZdefdZdee         fdZdS )r   z>DataQueue is a general-purpose blocking queue with one reader.rf   r%   Nc                 n    || _         d| _        d | _        d | _        t	          j                    | _        d S )NF)rW   r]   r^   r`   rm   rn   r[   )r(   rf   s     r    r)   zDataQueue.__init__q  s2    
	7;37.9.?.A.Ar   c                 *    t          | j                  S r'   )r   r[   r,   s    r    __len__zDataQueue.__len__x  s    4<   r   c                     | j         S r'   r   r,   s    r    r   zDataQueue.is_eof{  s
    yr   c                      | j         o| j         S r'   r   r,   s    r    r   zDataQueue.at_eof~  s    y---r   c                     | j         S r'   r{   r,   s    r    r|   zDataQueue.exception  r}   r   r~   r   c                 h    d| _         || _        | j        x}d | _        t          |||           d S d S r   )r]   r`   r^   r   r   s       r    r   zDataQueue.set_exception  sF    
 	l"F/DL&#y11111 0/r   r   r   r   c                     | j                             ||f           | j        x}d | _        t          |d            d S d S r'   )r[   rt   r^   r   )r(   r   r   r   s       r    r   zDataQueue.feed_data  sN    T4L)))l"F/DLvt$$$$$ 0/r   c                 X    d| _         | j        x}d | _        t          |d            d S d S r   )r]   r^   r   )r(   r   s     r    r   zDataQueue.feed_eof  s;    	l"F/DLvt$$$$$ 0/r   c                 P  K   | j         sd| j        s]| j        rJ | j                                        | _        	 | j         d {V  n'# t
          j        t
          j        f$ r	 d | _         w xY w| j         r| j                                         \  }}|S | j	        | j	        t          r'   )r[   r]   r^   rW   r   rk   CancelledErrorTimeoutErrorr   r`   r   )r(   r   _s      r    rI   zDataQueue.read  s      | 	DI 	|###:3355DLl""""""""*G,@A   # < 	l**,,GD!K?&/!   A $A+c                 *    t          | j                  S r'   )r"   rI   r,   s    r    r-   zDataQueue.__aiter__  s    "49---r   r   r   )r   r   r   r   rk   r   r)   rR   r   rA   r   r   r	   r   r|   r   r   r   r   r   rI   r"   r-   r   r   r    r   r   n  sn       HHBW6 B4 B B B B! ! ! ! !    . . . . .8M2     $1	2 	2	2 !	2 
		2 	2 	2 	2% %b % %D % % % %% % % %B     ..r2 . . . . . .r   r   c                   d     e Zd ZdZdededej        ddf fdZdd	e	d
eddf fdZ
de	fdZ xZS )FlowControlDataQueuezFlowControlDataQueue 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.
    rg   rh   rf   r%   Nc                |    t                                          |           d| _        || _        |dz  | _        d S )N)rf   r   rj   )superr)   rX   rT   _limit)r(   rg   rh   rf   rs   s       r    r)   zFlowControlDataQueue.__init__  s=     	d###
!air   r   r   r   c                     t                                          ||           | xj        |z  c_        | j        | j        k    r'| j        j        s| j                                         d S d S d S r'   )r  r   rX   r  rT   r   r   )r(   r   r   rs   s      r    r   zFlowControlDataQueue.feed_data  sn    $%%%

d

:##DN,J#N((***** $###r   c                   K   | j         sd| j        s]| j        rJ | j                                        | _        	 | j         d {V  n'# t
          j        t
          j        f$ r	 d | _         w xY w| j         rc| j                                         \  }}| xj	        |z  c_	        | j	        | j
        k     r%| j        j        r| j                                         |S | j        | j        t          r'   )r[   r]   r^   rW   r   rk   r  r  r   rX   r  rT   r   r   r`   r   )r(   r   r   s      r    rI   zFlowControlDataQueue.read  s     | 	DI 	|###:3355DLl""""""""*G,@A   # < 	--//JD$JJ$JJzDK''DN,J'--///K?&/!r  r   )r   r   r   r   r   rR   rk   r   r)   r   r   rI   __classcell__)rs   s   @r    r	  r	    s          $ -0 ;B;T 	           + +b + +D + + + + + +B        r   r	  )$rk   rm   r   typingr   r   r   r   r   r   r	   r
   r   base_protocolr   helpersr   r   r   r   r   logr   __all__r   r   r   r"   r7   rC   r   r   r   __annotations__r   r	  r   r   r    <module>r     s        
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 ( ' ' ' ' '              !           WT]]! ! ! ! !	 ! ! !    '"+   (       "3 3 3 3 3 3 3 30@3 @3 @3 @3 @3) @3 @3 @3F@ @ @ @ @ @ @ @F &7%6%8%8u\" 8 8 8>. >. >. >. >. >. >. >.B( ( ( ( (9R= ( ( ( ( (r   