
    bfR                        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FlowControlDataQueue_Tc                       e Zd ZdZdS )r   zeof stream indication.N)__name__
__module____qualname____doc__     I/var/www/html/Alfredo/env/lib/python3.11/site-packages/aiohttp/streams.pyr   r   %   s            r    r   c                   N    e 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_funcreturnNc                     || _         d S N)r$   )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__0   sc      	%~~''''''''BB 	% 	% 	%$$	%99$$	s    1)r%   r*   )	r   r   r   r   r   r   r)   r-   r4   r   r    r!   r#   r#   )   ss        #(2y}+<"= #$ # # # #         r    r#   c                   :    e Zd ZddZd	dZdeeef         fdZdS )
ChunkTupleAsyncStreamIteratorstreamr   r%   Nc                     || _         d S r'   )_stream)r(   r7   s     r!   r)   z&ChunkTupleAsyncStreamIterator.__init__;   s    r    c                     | S r'   r   r,   s    r!   r-   z'ChunkTupleAsyncStreamIterator.__aiter__>   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__A   sA      <))++++++++$$	r    )r7   r   r%   N)r%   r6   )	r   r   r   r)   r-   r
   bytesboolr4   r   r    r!   r6   r6   :   s`              ud{!3      r    r6   c                   f    e 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%   c                 *    t          | j                  S r'   )r#   readliner,   s    r!   r-   z AsyncStreamReaderMixin.__aiter__I   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)rD   r(   s   r!   <lambda>z5AsyncStreamReaderMixin.iter_chunked.<locals>.<lambda>N   s    499Q<< r    )r#   r(   rD   s   ``r!   iter_chunkedz#AsyncStreamReaderMixin.iter_chunkedL   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_anyP   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.
        )r6   r,   s    r!   iter_chunksz"AsyncStreamReaderMixin.iter_chunksT   s     -T222r    N)r   r   r   r#   r>   r-   intrJ   rM   r6   rO   r   r    r!   rA   rA   H   s        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    rA   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"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$ed	efd*Z(d$ed	efd+Z)dS )0r   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():
            ...

    r   N)timerloopprotocollimitrR   rS   r%   c                J   || _         || _        |dz  | _        |t          j                    }|| _        d| _        d| _        d | _        t          j
                    | _        d| _        d| _        d | _        d | _        d | _        |t#                      n|| _        g | _        d S )N   r   F)	_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(   rT   rU   rR   rS   s        r!   r)   zStreamReader.__init__m   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   r^   appendre   rY   rZ   rf   rh   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'   )rY   rZ   r,   s    r!   get_read_buffer_limitsz#StreamReader.get_read_buffer_limits   s    !122r    c                     | j         S r'   rh   r,   s    r!   	exceptionzStreamReader.exception   
    r    exc	exc_causec                     || _         | j                                         | j        }|d | _        t	          |||           | j        }|d | _        t	          |||           d S d S r'   )rh   rj   clearrf   r   rg   r(   rz   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)re   	Exceptionr   rx   rj   rp   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                 8   d| _         | j        }|d | _        t          |d            | j        }|d | _        t          |d            | j        D ]1}	  |             # t
          $ r t          j        d           Y .w xY w| j                                         d S )NTr   )	re   rf   r   rg   rj   r   r   rx   r}   )r(   r   cbs      r!   feed_eofzStreamReader.feed_eof   s    	DLvt$$$!#Dvt$$$% 	G 	GBG G G G)*EFFFFFG 	!!#####s   
AA>=A>c                     | j         S )z&Return True if  'feed_eof' was called.re   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.re   rc   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'   )re   rg   r]   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)rW   )
stacklevelNr   )
warningswarnDeprecationWarningrd   rc   r^   lenr_   
appendleft_eof_counter)r(   r   s     r!   unread_datazStreamReader.unread_data   s    =		
 	
 	
 	
  	F 	$"l1od.A.C.CDDLO"#D

c$ii

D		!%%%r    sizec                    | j         r
J d            |sd S | xj        t          |          z  c_        | j                            |           | xj        t          |          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)re   r^   r   rc   rp   total_bytesrf   r   rZ   rX   _reading_pausedpause_readingr(   r   r   r   s       r!   	feed_datazStreamReader.feed_data   s    9888888 	F

c$ii

D!!!CII%DLvt$$$:(((1O(N((***** )(((r    c                 R    | j         | j        rt          d          g | _         d S d S )Nz?Called begin_http_chunk_receiving whensome data was already fed)r`   r   RuntimeErrorr,   s    r!   begin_http_chunk_receivingz'StreamReader.begin_http_chunk_receiving  sC    "* "X   ')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   )r`   r   r   rp   rf   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         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)NzH%s() called while another coroutine is already waiting for incoming data)rf   r   r]   r   ri   )r(   r   r   s      r!   _waitzStreamReader._wait*  s      
 <#46?@  
 !%
 8 8 : ::	                   DLLL4DLs/   A- 	AA- AA-  A!A- -	A6c                 :   K   |                                   d {V S r'   )	readuntilr,   s    r!   rC   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   
ValueErrorrh   rc   rd   find_read_nowait_chunkrZ   re   r   )	r(   r   seplenchunk
chunk_size
not_enoughoffseticharr   s	            r!   r   zStreamReader.readuntil?  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   rD   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 )
NTr   r   r      zEMultiple access to StreamReader in eof state, might be infinite loop.)
stack_infor    rG   )rh   re   rc   getattrr   r   warningrL   rp   rq   r   _read_nowait)r(   rD   blocksblocks       r!   rG   zStreamReader.readc  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 )NrL   r   )rh   rc   re   r   r   r,   s    r!   rL   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=   )rh   r`   popr_   r   r   r   rc   r   re   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    )rh   rG   rq   r[   IncompleteReadErrorr   rp   )r(   rD   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.)rh   rf   doner   r   rI   s     r!   read_nowaitzStreamReader.read_nowait  s^    
 ?&/!< 	 1 1 3 3 	K     ###r    c                    | j         d         }| j        }|dk    r4t          |          |z
  |k    r||||z            }| xj        |z  c_        nF|r+| j                                          ||d          }d| _        n| j                                         }| xj        t          |          z  c_        | xj        t          |          z  c_        | j        }|r9|d         | j        k     r(|                    d           |r|d         | j        k     (| j        | j        k     r%| j	        j
        r| j	                                         |S )Nr   r   )rc   rd   r   popleftr^   r_   r`   r   rY   rX   r   resume_reading)r(   rD   first_bufferr   r   chunk_splitss         r!   r   zStreamReader._read_nowait_chunk  sW   |A$77s<((61A55! 34D1$ 	*L  """(D"#D <''))D

c$ii

D		!. 	 |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    )ri   assert_timeoutrc   r   rp   r   rq   )r(   rD   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   r   r   rP   r	   r   r[   AbstractEventLoopr)   strrs   r
   ru   BaseExceptionrx   r   r   r   r   r   r?   r   r   r   r>   r   r   r   r   r   rC   r   rG   rL   r=   r   r   r   r   r   r    r!   r   r   ]   s|         K -148; ; ;; ;
 (); w01; 
; ; ; ;4'# ' ' ' '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$ $ $ $*    . . . . .	$ 	$ 	$ 	$ $    (+ +e +3 +t + + + +$) ) ) )% % % %< S  T        $& & & & &" " "5 " " " "H($ ($C ($ ($ ($ ($ ($T
%u 
% 
% 
% 
% *ud{!3  *  *  *  *D 3  5        $ $S $% $ $ $ $C E    63c 3e 3 3 3 3 3 3r    r   c                      e 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 )EmptyStreamReaderr%   Nc                     d| _         d S )NF_read_eof_chunkr,   s    r!   r)   zEmptyStreamReader.__init__  s    $r    c                      d| j         j        z  S )Nrm   )ro   r   r,   s    r!   rs   zEmptyStreamReader.__repr__  s    ///r    c                     d S r'   r   r,   s    r!   rx   zEmptyStreamReader.exception      tr    rz   r{   c                     d S r'   r   )r(   rz   r{   s      r!   r   zEmptyStreamReader.set_exception  s	    
 	r    r   c                 f    	  |             d S # t           $ r t          j        d           Y d S w xY wr   )r   r   rx   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_eof      r    c                     dS NTr   r,   s    r!   r   zEmptyStreamReader.is_eof  r   r    c                     dS r   r   r,   s    r!   r   zEmptyStreamReader.at_eof!  r   r    c                 
   K   d S r'   r   r,   s    r!   r   zEmptyStreamReader.wait_eof$  s      r    r   r   rD   c                     d S r'   r   )r(   r   rD   s      r!   r   zEmptyStreamReader.feed_data'  r   r    c                 
   K   dS r0   r   r,   s    r!   rC   zEmptyStreamReader.readline*        sr    r   c                 
   K   dS r0   r   rI   s     r!   rG   zEmptyStreamReader.read-  r   r    c                 
   K   dS r0   r   r,   s    r!   rL   zEmptyStreamReader.readany2  r   r    c                 *   K   | j         s	d| _         dS dS )NTr<   r   r   r,   s    r!   r=   zEmptyStreamReader.readchunk5  s#      # 	 #'D <{r    c                 0   K   t          j        d|          r0   )r[   r   rI   s     r!   r   zEmptyStreamReader.readexactly<  s      )#q111r    c                     dS r0   r   rI   s     r!   r   zEmptyStreamReader.read_nowait?  s    sr    r   r   r   )r   r   r   r)   r   rs   r	   r   rx   r   r   r   r   r   r?   r   r   r   r>   rP   r   rC   rG   rL   r
   r=   r   r   r   r    r!   r   r     s$       % % % %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.rS   r%   Nc                 |    || _         d| _        d | _        d | _        d| _        t          j                    | _        d S )NFr   )r]   re   rf   rh   r^   ra   rb   rc   )r(   rS   s     r!   r)   zDataQueue.__init__I  s9    
	7;37
.9.?.A.Ar    c                 *    t          | j                  S r'   )r   rc   r,   s    r!   __len__zDataQueue.__len__Q  s    4<   r    c                     | j         S r'   r   r,   s    r!   r   zDataQueue.is_eofT  s
    yr    c                      | j         o| j         S r'   r   r,   s    r!   r   zDataQueue.at_eofW  s    y---r    c                     | j         S r'   rw   r,   s    r!   rx   zDataQueue.exceptionZ  ry   r    rz   r{   c                 h    d| _         || _        | j        }|d | _        t          |||           d S d S r   )re   rh   rf   r   r~   s       r!   r   zDataQueue.set_exception]  sF    
 	DL&#y11111 r    r   r   r   c                     | xj         |z  c_         | j                            ||f           | j        }|d | _        t	          |d            d S d S r'   )r^   rc   rp   rf   r   r   s       r!   r   zDataQueue.feed_dataj  s^    

d

T4L)))DLvt$$$$$ r    c                 X    d| _         | j        }|d | _        t          |d            d S d S r   )re   rf   r   )r(   r   s     r!   r   zDataQueue.feed_eofs  s;    	DLvt$$$$$ 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                                         \  }}| xj	        |z  c_	        |S | j
        | j
        t          r'   )rc   re   rf   r]   r   r[   CancelledErrorTimeoutErrorr   r^   rh   r   )r(   r   r   s      r!   rG   zDataQueue.read{  s      | 	DI 	|###:3355DLl""""""""*G,@A   # < 	 --//JD$JJ$JJK*o%s   A $A+c                 *    t          | j                  S r'   )r#   rG   r,   s    r!   r-   zDataQueue.__aiter__  s    "49---r    r   r   )r   r   r   r   r[   r   r)   rP   r   r?   r   r   r	   r   rx   r   r   r   r   r   rG   r#   r-   r   r    r!   r   r   F  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                   h     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 fdZ xZS )r   zlFlowControlDataQueue resumes and pauses an underlying stream.

    It is a destination for parsed data.
    rT   rU   rS   r%   Nc                n    t                                          |           || _        |dz  | _        d S )N)rS   rW   )superr)   rX   _limit)r(   rT   rU   rS   ro   s       r!   r)   zFlowControlDataQueue.__init__  s6     	d###!air    r   r   r   c                     t                                          ||           | j        | j        k    r'| j        j        s| j                                         d S d S d S r'   )r  r   r^   r  rX   r   r   )r(   r   r   ro   s      r!   r   zFlowControlDataQueue.feed_data  s^    $%%%:##DN,J#N((***** $###r    c                 >  K   	 t                                                       d {V 	 | j        | j        k     r&| j        j        r| j                                         S S S # | j        | j        k     r&| j        j        r| j                                         w w w xY wr'   )r  rG   r^   r  rX   r   r   )r(   ro   s    r!   rG   zFlowControlDataQueue.read  s      	0'''''''zDK''DN,J'--//// ('tzDK''DN,J'--//// ('s   %A# #9Br   )r   r   r   r   r   rP   r[   r   r)   r   r   rG   __classcell__)ro   s   @r!   r   r     s         
 $ -0 ;B;T 	           + +b + +D + + + + + +0B 0 0 0 0 0 0 0 0 0 0r    r   )$r[   ra   r   typingr   r   r   r   r   r   r	   r
   r   base_protocolr   helpersr   r   r   r   r   logr   __all__r   r   r   r#   r6   rA   r   r   r   __annotations__r   r   r   r    r!   <module>r     s        
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 ( ' ' ' ' '              !           WT]]! ! ! ! !	 ! ! !    '"+   "       3 3 3 3 3 3 3 3*d3 d3 d3 d3 d3) d3 d3 d3N< < < < < < < <~ &7%6%8%8u\" 8 8 8J. J. J. J. J. J. J. J.Z0 0 0 0 09R= 0 0 0 0 0r    