
    ip]                     z   % S SK r S SKrS SKrS SKJrJrJrJrJrJ	r	J
r
JrJr  SSKJr  SSKJrJrJrJrJr  SSKJr  SSKJr  Sr\" S	5      r " S
 S\5      r " S S\\   5      r " S S5      r " S S5      r " S S\5      r  " S S\ 5      r!\!" 5       r"\\    \#S'    " S S\\   5      r$ " S S\$\   5      r%g)    N)		AwaitableCallableDequeFinalGenericListOptionalTupleTypeVar   )BaseProtocol)_EXC_SENTINELBaseTimerContext	TimerNoopset_exception
set_result)LineTooLong)internal_logger)EMPTY_PAYLOAD	EofStreamStreamReader	DataQueue_Tc                       \ rS rSrSrSrg)r   %   zeof stream indication. N)__name__
__module____qualname____firstlineno____doc____static_attributes__r       </app/mltbenv/lib/python3.13/site-packages/aiohttp/streams.pyr   r   %   s     r#   r   c                   R    \ rS rSrSrS\/ \\   4   SS4S jrS	S jr	S\4S jr
Srg)
AsyncStreamIterator)   	read_funcr)   returnNc                     Xl         g Nr(   )selfr)   s     r$   __init__AsyncStreamIterator.__init__-   s    "r#   c                     U $ r,   r   r-   s    r$   	__aiter__AsyncStreamIterator.__aiter__0       r#   c                    #     U R                  5       I S h  vN nUS:X  a  [        eU$  N! [         a    [        ef = f7fNr#   )r)   r   StopAsyncIterationr-   rvs     r$   	__anext__AsyncStreamIterator.__anext__3   sF     	%~~''B 9$$	 ( 	%$$	%s#   A , *, A , =A )r*   zAsyncStreamIterator[_T])r   r   r   r    	__slots__r   r   r   r.   r2   r:   r"   r   r#   r$   r&   r&   )   s9    I#(2y}+<"= #$ # r#   r&   c                   D    \ rS rSrSrSS jrS	S jrS\\\	4   4S jr
Srg)
ChunkTupleAsyncStreamIterator=   _streamr*   Nc                     Xl         g r,   r@   )r-   streams     r$   r.   &ChunkTupleAsyncStreamIterator.__init__A   s    r#   c                     U $ r,   r   r1   s    r$   r2   'ChunkTupleAsyncStreamIterator.__aiter__D   r4   r#   c                 n   #    U R                   R                  5       I S h  vN nUS:X  a  [        eU$  N7f)Nr#   F)rA   	readchunkr7   r8   s     r$   r:   'ChunkTupleAsyncStreamIterator.__anext__G   s2     <<))++$$	 ,s   535)rC   r   r*   N)r*   r>   )r   r   r   r    r<   r.   r2   r
   bytesboolr:   r"   r   r#   r$   r>   r>   =   s&    Iud{!3 r#   r>   c                   f    \ rS rSrSrS\\   4S jrS\S\\   4S jr	S\\   4S jr
S\4S jrSrg	)
AsyncStreamReaderMixinN   r   r*   c                 ,    [        U R                  5      $ r,   )r&   readliner1   s    r$   r2    AsyncStreamReaderMixin.__aiter__R   s    "4==11r#   nc                 &   ^ ^ [        UU 4S j5      $ )z>Returns an asynchronous iterator that yields chunks of size n.c                  &   > TR                  T 5      $ r,   )read)rS   r-   s   r$   <lambda>5AsyncStreamReaderMixin.iter_chunked.<locals>.<lambda>W   s    499Q<r#   )r&   r-   rS   s   ``r$   iter_chunked#AsyncStreamReaderMixin.iter_chunkedU   s    "#788r#   c                 ,    [        U R                  5      $ )z3Yield all available data as soon as it is received.)r&   readanyr1   s    r$   iter_anyAsyncStreamReaderMixin.iter_anyY   s    "4<<00r#   c                     [        U 5      $ )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.
)r>   r1   s    r$   iter_chunks"AsyncStreamReaderMixin.iter_chunks]   s     -T22r#   N)r   r   r   r    r<   r&   rK   r2   intrZ   r^   r>   ra   r"   r   r#   r$   rN   rN   N   sQ    I2.u5 29c 9&9%&@ 91-e4 13: 3r#   rN   c                   B   \ rS rSrSrSrSSS.S\S\S\\	   S	\\
R                     S
S4
S jjrS
\4S jrS
\\\4   4S jrS
\\   4S jr\4S\S\S
S4S jjrS\/ S4   S
S4S jrS1S jrS
\4S jrS
\4S jrS1S jr\S
\4S j5       rS\S
S4S jrS2S\S\S
S4S jjr S1S jr!S1S jr"S\S
S4S  jr#SS!.S"\\   S
\4S# jjr$ S3SS$.S%\S&\\   S
\4S' jjjr%S4S(\S
\4S) jjr&S
\4S* jr'S
\\\4   4S+ jr(S(\S
\4S, jr)S4S(\S
\4S- jjr*S(\S
\4S. jr+S(\S
\4S/ jr,S0r-g)5r   f   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_low_water_chunks_high_water_chunks_loop_size_cursor_http_chunk_splits_buffer_buffer_offset_eof_waiter_eof_waiter
_exception_timer_eof_callbacks_eof_countertotal_bytestotal_compressed_bytesN)timerloopprotocollimitrz   r{   r*   c                   Xl         X l        US-  U l        Uc  [        R                  " 5       n[        SUS-  5      U l        [        SU R                  S-  5      U l        X@l        SU l	        SU l
        S U l        [        R                  " 5       U l        SU l        SU l        S U l        S U l        S U l        Uc
  [)        5       OUU l        / U l        SU l        SU l        S U l        g )N         r   F)rf   rg   rh   asyncioget_event_loopmaxrj   ri   rk   rl   rm   rn   collectionsdequero   rp   rq   rr   rs   rt   r   ru   rv   rw   rx   ry   )r-   r|   r}   rz   r{   s        r$   r.   StreamReader.__init__   s     " 19<))+D"%a!"4 "%Q(?(?1(D!E

8<%0%6%6%8	7;;?37%*]ik8:59#r#   c                 *   U R                   R                  /nU R                  (       a  UR                  SU R                  -  5        U R                  (       a  UR                  S5        U R
                  S:w  a*  UR                  SU R
                  U R                  4-  5        U R                  (       a  UR                  SU R                  -  5        U R                  (       a  UR                  SU R                  -  5        SSR                  U5      -  $ )	Nz%d byteseofi   zlow=%d high=%dzw=%rze=%r<%s> )
	__class__r   rl   appendrq   rg   rh   rr   rt   join)r-   infos     r$   __repr__StreamReader.__repr__   s    ''(::KK
TZZ/099KK??e#KK(DOOT=M=M+NNO<<KK-.??KK01&&r#   c                 2    U R                   U R                  4$ r,   )rg   rh   r1   s    r$   get_read_buffer_limits#StreamReader.get_read_buffer_limits   s    !1!122r#   c                     U R                   $ r,   rt   r1   s    r$   	exceptionStreamReader.exception       r#   exc	exc_causec                     Xl         U R                  R                  5         U R                  nUb  S U l        [	        X1U5        U R
                  nUb  S U l        [	        X1U5        g g r,   )rt   rv   clearrr   r   rs   r-   r   r   waiters       r$   r   StreamReader.set_exception   sc    
 !!#DL&y1!!#D&y1 r#   callbackc                     U R                   (       a	   U" 5         g U R                  R                  U5        g ! [         a    [        R                  " S5         g f = fNException in eof callback)rq   	Exceptionr   r   rv   r   r-   r   s     r$   on_eofStreamReader.on_eof   sL    99G
 &&x0  G))*EFGs   7  AAc                    SU l         U R                  nUb  S U l        [        US 5        U R                  nUb  S U l        [        US 5        U R                  R
                  (       a  U R                  R                  5         U R                   H  n U" 5         M     U R                  R                  5         g ! [         a    [        R                  " S5         MM  f = f)NTr   )rq   rr   r   rs   rf   _reading_pausedresume_readingrv   r   r   r   r   )r-   r   cbs      r$   feed_eofStreamReader.feed_eof   s    	DLvt$!!#Dvt$>>))NN))+%%BG & 	!!#  G))*EFGs   B77 CCc                     U R                   $ )z&Return True if  'feed_eof' was called.rq   r1   s    r$   is_eofStreamReader.is_eof   s    yyr#   c                 J    U R                   =(       a    U R                  (       + $ )z=Return True if the buffer is empty and 'feed_eof' was called.rq   ro   r1   s    r$   at_eofStreamReader.at_eof   s    yy---r#   c                    #    U R                   (       a  g U R                  b   eU R                  R                  5       U l         U R                  I S h  vN   S U l        g  N! S U l        f = f7fr,   )rq   rs   rk   create_futurer1   s    r$   wait_eofStreamReader.wait_eof   s`     99'''::335	$""""#D ##Ds0   AA.A" A A" A. A" "	A++A.c                 L    U R                   c  U R                  $ U R                   $ r,   )ry   rx   r1   s    r$   total_raw_bytesStreamReader.total_raw_bytes  s&    &&.###***r#   datac                    [         R                  " S[        SS9  U(       d  gU R                  (       a0  U R                  S   U R                  S U R                  S'   SU l        U =R
                  [        U5      -  sl        U =R                  [        U5      -  sl        U R                  R                  U5        SU l	        g)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DeprecationWarningrp   ro   rl   lenrm   
appendleftrw   )r-   r   s     r$   unread_dataStreamReader.unread_data  s    =		
 "ll1od.A.A.CDDLLO"#D

c$i
D	!%r#   sizec                    U R                   (       a   S5       eU(       d  g [        U5      nU =R                  U-  sl        U R                  R	                  U5        U =R
                  U-  sl        U R                  nUb  S U l        [        US 5        U R                  U R                  :  a7  U R                  R                  (       d  U R                  R                  5         g g g )Nzfeed_data after feed_eof)rq   r   rl   ro   r   rx   rr   r   rh   rf   r   pause_reading)r-   r   r   data_lenr   s        r$   	feed_dataStreamReader.feed_data!  s    99888}t9

h
D!H$DLvt$::(((1O1ONN((* 2P(r#   c                     U R                   c7  U R                  (       a  [        S5      e[        R                  " 5       U l         g g )Nz@Called begin_http_chunk_receiving when some data was already fed)rn   rx   RuntimeErrorr   r   r1   s    r$   begin_http_chunk_receiving'StreamReader.begin_http_chunk_receiving4  s?    ""*"V  '2&7&7&9D# +r#   c                    U R                   c  [        S5      eU R                   (       a  U R                   S   OSnU R                  U:X  a  g U R                   R                  U R                  5        [	        U R                   5      U R
                  :  a5  U R                  R                  (       d  U R                  R                  5         U R                  nUb  S U l	        [        US 5        g g )NzFCalled end_chunk_receiving without calling begin_chunk_receiving firstr   )rn   r   rx   r   r   rj   rf   r   r   rr   r   )r-   posr   s      r$   end_http_chunk_receiving%StreamReader.end_http_chunk_receiving<  s    ""*.  .2-D-Dd%%b)!s" &&t'7'78 ''(4+B+BBNN22NN((* DLvt$ r#   	func_namec                 Z  #    U R                   R                  (       d  [        S5      eU R                  b  [        SU-  5      eU R                  R                  5       =o l         U R                     UI S h  vN   S S S 5        S U l        g  N! , (       d  f       N= f! S U l        f = f7f)NzConnection closed.zH%s() called while another coroutine is already waiting for incoming data)rf   	connectedr   rr   rk   r   ru   )r-   r   r   s      r$   _waitStreamReader._waitc  s     ~~''344 <<#46?@ 
 !%

 8 8 ::	    DL    DLsH   A"B+%B 1B7B8B<B B+B
BB 	B((B+max_line_lengthr   c                <   #    U R                  US9I S h  vN $  N7f)Nmax_size)	readuntilr-   r   s     r$   rQ   StreamReader.readlinex  s     ^^_^====s   r   	separatorr   c                  #    [        U5      nUS:X  a  [        S5      eU R                  b  U R                  eSnSnSnU=(       d    U R                  nU(       a  U R                  (       a  U(       a  U R
                  nU R                  S   R                  X5      S-   nU R                  U(       a
  X-
  U-   S-
  OS5      n	XI-  nU[        U	5      -  nU(       a  SnXR:  a  [        US S S	-   U5      eU R                  (       a	  U(       a  M  U R                  (       a   U$ U(       a  U R                  S
5      I S h  vN   U(       a  M  U$  N7f)Nr   z,Separator should be at least one-byte stringr#   Tr   r   Fd   s   ...r   )r   
ValueErrorrt   rh   ro   rp   find_read_nowait_chunkr   rq   r   )
r-   r   r   seplenchunk
chunk_size
not_enoughoffseticharr   s
             r$   r   StreamReader.readuntil{  s4     YQ;KLL??&//!

/t//,,:,,Q,,Y?!C..38ENV+a/b c$i'
!&J(%eDSkF&:HEE ,,:: yy
  jj---) j,  .s   D	E/E<E=E
ErS   c                   #    U R                   b  U R                   e U R                  (       aK  U R                  (       d:  [        U SS5      S-   U l        U R                  S:  a  [
        R                  " SSS9  U(       d  gUS:  aG  / n U R                  5       I S h  vN nU(       d  OUR                  U5        M3  SR                  U5      $ U R                  (       dN  U R                  (       d=  U R                  S	5      I S h  vN   U R                  (       d  U R                  (       d  M=  U R                  U5      $  N N;7f)
NTrw   r   r      zEMultiple access to StreamReader in eof state, might be infinite loop.)
stack_infor#   rV   )rt   rq   ro   getattrrw   r   warningr]   r   r   r   _read_nowait)r-   rS   blocksblocks       r$   rV   StreamReader.read  s    ??&//! yy$+D.!$Dq$H!$$q(#++2#' q5
 F"lln,e$	 
 88F##
 ,,tyy**V$$$ ,,tyyy   ## - %s+   BED>A&EE &E-E Ec                    #    U R                   b  U R                   eU R                  (       dN  U R                  (       d=  U R                  S5      I S h  vN   U R                  (       d  U R                  (       d  M=  U R	                  S5      $  N97f)Nr]   r   )rt   ro   rq   r   r   r1   s    r$   r]   StreamReader.readany  sc     ??&//!
 ,,tyy**Y''' ,,tyyy   $$ (s   ABB&B;Bc                   #     U R                   b  U R                   eU R                  (       a  U R                  R                  5       nXR                  :X  a  gXR                  :  a  U R	                  XR                  -
  5      S4$ [
        R                  " S5        U R                  (       a  M  U R                  (       a  U R                  S5      S4$ U R                  (       a  gU R                  S5      I Sh  vN   M   N7f)	zReturns 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.
TNr#   TzESkipping HTTP chunk end due to data consumption beyond chunk boundaryr   FrH   rI   )rt   rn   popleftrm   r   r   r   ro   r   rq   r   )r-   r   s     r$   rI   StreamReader.readchunk  s      *oo%))--557,,&&% --cLL.@A4HH''8 ))) ||//3U;; yy $**[)))1 0 *s   B+D/A
D9D :Dc                 h  #    U R                   b  U R                   e/ nUS:  a{  U R                  U5      I S h  vN nU(       d4  SR                  U5      n[        R                  " U[        U5      U-   5      eUR                  U5        U[        U5      -  nUS:  a  M{  SR                  U5      $  Nw7f)Nr   r#   )rt   rV   r   r   IncompleteReadErrorr   r   )r-   rS   r   r   partials        r$   readexactlyStreamReader.readexactly  s     ??&//! !e))A,&E((6*11'3w<!;KLLMM% UOA !e xx 's   6B2B0A$B2B2c                     U R                   b  U R                   eU R                  (       a*  U R                  R                  5       (       d  [        S5      eU R	                  U5      $ )Nz9Called while some coroutine is waiting for incoming data.)rt   rr   doner   r   rY   s     r$   read_nowaitStreamReader.read_nowait	  sT    
 ??&//!<< 1 1 3 3K    ##r#   c                 >   U R                   S   nU R                  nUS:w  a.  [        U5      U-
  U:  a  X#X1-    nU =R                  U-  sl        OGU(       a&  U R                   R                  5         X#S  nSU l        OU R                   R                  5       n[        U5      nU =R                  U-  sl        U =R
                  U-  sl        U R                  nU(       a?  US   U R
                  :  a,  UR                  5         U(       a  US   U R
                  :  a  M,  U R                  R                  (       ad  U R                  U R                  :  aJ  U R                  b#  [        U R                  5      U R                  :  a  U R                  R                  5         U$ )Nr   r   )ro   rp   r   r   rl   rm   rn   rf   r   rg   ri   r   )r-   rS   first_bufferr   r   r   chunk_splitss          r$   r   StreamReader._read_nowait_chunk  sE   ||A$$7s<(61A54D1$LL  "(D"#D <<'')Dt9

h
 ..|A=  " |A= NN**

T__,''/t../$2H2HH NN))+r#   c                 0   U R                   R                  5         / nU R                  (       aP  U R                  U5      nUR	                  U5        US:w  a  U[        U5      -  nUS:X  a  OU R                  (       a  MP  U(       a  SR                  U5      $ S$ )z6Read not more than n bytes, or whole buffer if n == -1r   r   r#   )ru   assert_timeoutro   r   r   r   r   )r-   rS   chunksr   s       r$   r   StreamReader._read_nowait;  s{    ""$ll++A.EMM% BwSZ6 lll $*sxx2s2r#   )ro   rp   rm   rq   rv   rw   rs   rt   rh   rj   rn   rk   rg   ri   rf   rl   ru   rr   rx   ry   r*   Nr   )   
r   ).r   r   r   r    r!   r<   r   rc   r	   r   r   AbstractEventLoopr.   strr   r
   r   BaseExceptionr   r   r   r   r   r   rL   r   r   r   propertyr   rK   r   r   r   r   r   rQ   r   rV   r]   rI   r  r  r   r   r"   r   r#   r$   r   r   f   s(   I8 -148 : :  :
 () : w001 : 
 :D'# '3c3h 38M2  $122 !2 
	2$1xD1 1d 1$0 . .	$ + + +
 $ (+e +3 +t +&:%%N S  T  * BF ># >% > "'%EI%%5=c]%	%N($C ($ ($T
%u 
% *ud{!3  *D 3  5  $S $% $!C !E !F3c 3e 3r#   r   c                   J   \ rS rSrSrSS jrS\4S jrS\\	   4S jr
\4S\	S	\	SS4S
 jjrS\/ S4   SS4S jrSS jrS\4S jrS\4S jrSS jrSS\S\SS4S jjrSS.S\\   S\4S jjrSS\S\4S jjrS\4S jrS\\\4   4S jrS\S\4S jrSS\S\4S jjrSrg) EmptyStreamReaderiK  _read_eof_chunkr*   Nc                      SU l         SU l        g )NFr   r  rx   r1   s    r$   r.   EmptyStreamReader.__init__O  s    $r#   c                 4    SU R                   R                  -  $ )Nr   )r   r   r1   s    r$   r   EmptyStreamReader.__repr__S  s    ////r#   c                     g r,   r   r1   s    r$   r   EmptyStreamReader.exceptionV      r#   r   r   c                     g r,   r   )r-   r   r   s      r$   r   EmptyStreamReader.set_exceptionY  s    
 	r#   r   c                 `     U" 5         g ! [          a    [        R                  " S5         g f = fr   )r   r   r   r   s     r$   r   EmptyStreamReader.on_eof`  s-    	CJ 	C%%&AB	Cs   
  --c                     g r,   r   r1   s    r$   r   EmptyStreamReader.feed_eoff      r#   c                     gNTr   r1   s    r$   r   EmptyStreamReader.is_eofi  r$  r#   c                     gr-  r   r1   s    r$   r   EmptyStreamReader.at_eofl  r$  r#   c                    #    g 7fr,   r   r1   s    r$   r   EmptyStreamReader.wait_eofo  s        r   rS   c                     g r,   r   )r-   r   rS   s      r$   r   EmptyStreamReader.feed_datar  r+  r#   r   r   c                   #    g7fr6   r   r   s     r$   rQ   EmptyStreamReader.readlineu       r3  c                    #    g7fr6   r   rY   s     r$   rV   EmptyStreamReader.readx  r8  r3  c                    #    g7fr6   r   r1   s    r$   r]   EmptyStreamReader.readany}  r8  r3  c                 >   #    U R                   (       d  SU l         gg7f)NTrH   r   r  r1   s    r$   rI   EmptyStreamReader.readchunk  s     ###'D s   c                 8   #    [         R                  " SU5      e7fr6   )r   r  rY   s     r$   r  EmptyStreamReader.readexactly  s     ))#q11s   c                     gr6   r   rY   s     r$   r  EmptyStreamReader.read_nowait  s    r#   r  r  r  r  )r   r   r   r    r<   r.   r  r   r	   r  r   r   r   r   r   r   rL   r   r   r   rK   rc   r   rQ   rV   r]   r
   rI   r  r  r"   r   r#   r$   r  r  K  s'   $I0# 08M2  $1 ! 
	CxD1 Cd C  e  D  BF # % C  
u ud{!3 23 25 2S %  r#   r  r   c                       \ rS rSrSrS\R                  SS4S jrS\4S jr	S\
4S jrS\
4S	 jrS\\   4S
 jr\4S\S\SS4S jjrSS\S\SS4S jjrSS jrS\4S jrS\\   4S jrSrg)r   i  z>DataQueue is a general-purpose blocking queue with one reader.r{   r*   Nc                 n    Xl         SU l        S U l        S U l        [        R
                  " 5       U l        g )NF)rk   rq   rr   rt   r   r   ro   )r-   r{   s     r$   r.   DataQueue.__init__  s,    
	7;37.9.?.?.Ar#   c                 ,    [        U R                  5      $ r,   )r   ro   r1   s    r$   __len__DataQueue.__len__  s    4<<  r#   c                     U R                   $ r,   r   r1   s    r$   r   DataQueue.is_eof  s    yyr#   c                 J    U R                   =(       a    U R                  (       + $ r,   r   r1   s    r$   r   DataQueue.at_eof  s    yy---r#   c                     U R                   $ r,   r   r1   s    r$   r   DataQueue.exception  r   r#   r   r   c                 d    SU l         Xl        U R                  =nb  S U l        [        X1U5        g g r-  )rq   rt   rr   r   r   s       r$   r   DataQueue.set_exception  s5    
 	ll"F/DL&y1 0r#   r   r   c                     U R                   R                  X45        U R                  =nb  S U l        [        US 5        g g r,   )ro   r   rr   r   )r-   r   r   r   s       r$   r   DataQueue.feed_data  s;    TL)ll"F/DLvt$ 0r#   c                 X    SU l         U R                  =nb  S U l        [        US 5        g g r-  )rq   rr   r   )r-   r   s     r$   r   DataQueue.feed_eof  s.    	ll"F/DLvt$ 0r#   c                   #    U R                   (       dX  U R                  (       dG  U R                  (       a   eU R                  R	                  5       U l         U R                  I S h  vN   U R                   (       a  U R                   R                  5       u  pU$ U R                  b  U R                  e[        e NR! [
        R                  [
        R                  4 a	    S U l        e f = f7fr,   )ro   rq   rr   rk   r   r   CancelledErrorTimeoutErrorr   rt   r   )r-   r   _s      r$   rV   DataQueue.read  s     ||DII||##::335DLll"" <<ll**,GDK??&//! #**G,@,@A #s1   AC,B< 'B:(B< ,AC,:B< <-C))C,c                 ,    [        U R                  5      $ r,   )r&   rV   r1   s    r$   r2   DataQueue.__aiter__  s    "499--r#   )ro   rq   rt   rk   rr   r  r  )r   r   r   r    r!   r   r  r.   rc   rG  rL   r   r   r	   r  r   r   r   r   r   r   rV   r&   r2   r"   r   r#   r$   r   r     s    HBW66 B4 B! ! . .8M2  $1	2	2 !	2 
		2%b % %D %%B  ..r2 .r#   r   c                      ^  \ rS rSrSrS\S\S\R                  SS4U 4S jjr	SS	\
S
\SS4U 4S jjjrS\
4S jrSrU =r$ )FlowControlDataQueuei  zFlowControlDataQueue 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}   r{   r*   Nc                N   > [         TU ]  US9  SU l        Xl        US-  U l        g )N)r{   r   r   )superr.   rl   rf   _limit)r-   r|   r}   r{   r   s       r$   r.   FlowControlDataQueue.__init__  s,     	d#
!air#   r   r   c                    > [         TU ]  X5        U =R                  U-  sl        U R                  U R                  :  a7  U R                  R
                  (       d  U R                  R                  5         g g g r,   )r_  r   rl   r`  rf   r   r   )r-   r   r   r   s      r$   r   FlowControlDataQueue.feed_data  sS    $%

d
::#DNN,J,JNN((* -K#r#   c                   #    U R                   (       dX  U R                  (       dG  U R                  (       a   eU R                  R	                  5       U l         U R                  I S h  vN   U R                   (       a  U R                   R                  5       u  pU =R                  U-  sl	        U R                  U R                  :  a5  U R                  R                  (       a  U R                  R                  5         U$ U R                  b  U R                  e[        e N! [
        R                  [
        R                  4 a	    S U l        e f = f7fr,   )ro   rq   rr   rk   r   r   rV  rW  r   rl   r`  rf   r   r   rt   r   )r-   r   r   s      r$   rV   FlowControlDataQueue.read  s     ||DII||##::335DLll"" <<--/JDJJ$JzzDKK'DNN,J,J--/K??&//! #**G,@,@A #s1   AED  'D(D  ,B2ED   -EE)r`  rf   rl   rr   r  )r   r   r   r    r!   r   rc   r   r  r.   r   r   rV   r"   __classcell__)r   s   @r$   r]  r]    sc     $ -0 ;B;T;T 	 +b + +D + +B  r#   r]  )&r   r   r   typingr   r   r   r   r   r   r	   r
   r   base_protocolr   helpersr   r   r   r   r   http_exceptionsr   logr   __all__r   r   r   r&   r>   rN   r   r  r   __annotations__r   r]  r   r#   r$   <module>rn     s      
 
 
 (  )   T]!	 !'"+ ( "3 30b3) b3J@ @F &7%8u\" 8>. >.B(9R= (r#   