
    rp0j?^                     h   % S SK r S SKrS SKrS SKrS SKJrJr  S SKJrJ	r	J
r
  SSKJr  SSKJr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\" 5       r \\   \!S'    " S S\	\   5      r" " S S\"\   5      r#g)    N)	AwaitableCallable)FinalGenericTypeVar   )BaseProtocol)_EXC_SENTINELDEFAULT_CHUNK_SIZE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       I/home/wildlama/miniconda3/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__)       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__,   sF     	%~~''B 9$$	 ( 	%$$	%s#   A , *, A , =A )r'   zAsyncStreamIterator[_T])r   r   r   r   	__slots__r   r   r   r+   r/   r7   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)
ChunkTupleAsyncStreamIterator6   _streamr'   Nc                     Xl         g r)   r=   )r*   streams     r!   r+   &ChunkTupleAsyncStreamIterator.__init__:   s    r    c                     U $ r)   r   r.   s    r!   r/   'ChunkTupleAsyncStreamIterator.__aiter__=   r1   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)r>   	readchunkr4   r5   s     r!   r7   'ChunkTupleAsyncStreamIterator.__anext__@   s2     <<))++$$	 ,s   535)r@   r   r'   N)r'   r;   )r   r   r   r   r9   r+   r/   tuplebytesboolr7   r   r   r    r!   r;   r;   6   s&    Iud{!3 r    r;   c                      \ rS rSrSrSrSSS.S\S\S\S-  S	\	R                  S-  S
S4
S jjrS
\4S jrS
\\   4S jrS\S
\\   4S jrS
\\   4S jrS
\4S jrS
\\\4   4S jrS\S
S4S jrS
\S-  4S jr\4S\S\S
S4S jjrS\/ S4   S
S4S jrS6S jrS
\4S jr S
\4S jr!S6S jr"\#S
\4S j5       r$S\S
S4S  jr%S7S\S!\S
\4S" jjr&S6S# jr'S6S$ jr(S%\S
S4S& jr)SS'.S(\S-  S
\4S) jjr* S8SS*.S+\S,\S-  S
\4S- jjjr+S9S\S
\4S. jjr,S
\4S/ jr-S
\\\4   4S0 jr.S\S
\4S1 jr/S9S\S
\4S2 jjr0S\S
\4S3 jr1S\S
\4S4 jr2S5r3g):r   G   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limitra   rb   r'   c                   Xl         X l        US-  U l        Uc  [        R                  " 5       n[        SUS-  5      U l        U R                  S-  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)rM   rN   rO   asyncioget_event_loopmaxrQ   rP   rR   rS   rT   rU   collectionsdequerV   rW   rX   rY   rZ   r[   r   r\   r]   r^   r_   r`   )r*   rc   rd   ra   rb   s        r!   r+   StreamReader.__init__l   s     " 19<))+D #&a""5!%!8!8A!=

AE1<1B1B1D	488<04%*]ik8:26#r    c                 2   U R                   R                  /nU R                  (       a  UR                  SU R                  -  5        U R                  (       a  UR                  S5        U R
                  [        :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eofzlow=%d high=%dzw=%rze=%r<%s> )	__class__r   rS   appendrX   rN   r   rO   rY   r[   join)r*   infos     r!   __repr__StreamReader.__repr__   s    ''(::KK
TZZ/099KK??00KK(DOOT=M=M+NNO<<KK-.??KK01&&r    c                 ,    [        U R                  5      $ r)   )r#   readliner.   s    r!   r/   StreamReader.__aiter__   s    "4==11r    nc                 H   ^ ^ T R                  T5        [        UU 4S j5      $ )z>Returns an asynchronous iterator that yields chunks of size n.c                  &   > TR                  T 5      $ r)   )read)r|   r*   s   r!   <lambda>+StreamReader.iter_chunked.<locals>.<lambda>   s    499Q<r    )set_read_chunk_sizer#   r*   r|   s   ``r!   iter_chunkedStreamReader.iter_chunked   s      #"#788r    c                 ,    [        U R                  5      $ )z3Yield all available data as soon as it is received.)r#   readanyr.   s    r!   iter_anyStreamReader.iter_any   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;   r.   s    r!   iter_chunksStreamReader.iter_chunks   s     -T22r    c                 2    U R                   U R                  4$ r)   rN   rO   r.   s    r!   get_read_buffer_limits#StreamReader.get_read_buffer_limits   s    !1!122r    c                 D    XR                   :  a  Xl         US-  U l        gg)z7Raise buffer limits to match the consumer's chunk size.rf   Nr   r   s     r!   r    StreamReader.set_read_chunk_size   s"    O 1uD r    c                     U R                   $ r)   r[   r.   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)   )r[   r]   clearrY   r   rZ   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)rX   	Exceptionr   r   r]   rt   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                  SS9  U R                   H  n U" 5         M     U R                  R                  5         g ! [         a    [        R                  " S5         MM  f = f)NTF)resume_parserr   )rX   rY   r   rZ   rM   resume_readingr]   r   r   r   r   )r*   r   cbs      r!   feed_eofStreamReader.feed_eof   s    	DLvt$!!#Dvt$ 	%%E%:%%BG & 	!!#  G))*EFGs   5B B?>B?c                     U R                   $ )z&Return True if  'feed_eof' was called.rX   r.   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.rX   rV   r.   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)   )rX   rZ   rR   create_futurer.   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)   )r`   r_   r.   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)rf   )
stacklevelNr   )
warningswarnDeprecationWarningrW   rV   rS   lenrT   
appendleftr^   )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                  :  a  U R                  R                  5         g)Nzfeed_data after feed_eofF)rX   r   rS   rV   rt   r_   rY   r   rO   rM   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$::(((NN((*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)rU   r_   RuntimeErrorrl   rm   r.   s    r!   begin_http_chunk_receiving'StreamReader.begin_http_chunk_receiving0  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
                  :  a  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   )
rU   r   r_   rt   r   rQ   rM   r   rY   r   )r*   posr   s      r!   end_http_chunk_receiving%StreamReader.end_http_chunk_receiving8  s    ""*.  .2-D-Dd%%b)!s" &&t'7'78
 t&&'$*A*AA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)rM   	connectedr   rY   rR   r   r\   )r*   r   r   s      r!   _waitStreamReader._wait\  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!   rz   StreamReader.readlineq  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   
ValueErrorr[   rO   rV   rW   find_read_nowait_chunkr   rX   r   )
r*   r   r   seplenchunk
chunk_size
not_enoughoffseticharr   s
             r!   r   StreamReader.readuntilt  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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:  af  U R                  [        R                  5        / n U R                  5       I S h  vN nU(       d  OUR                  U5        M3  SR                  U5      $ U 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)
NTr^   r   r      zEMultiple access to StreamReader in eof state, might be infinite loop.)
stack_infor    r   )r[   rX   rV   getattrr^   r   warningr   sysmaxsizer   rt   ru   r   _read_nowait)r*   r|   blocksblocks       r!   r   StreamReader.read  s!    ??&//! yy$+D.!$Dq$H!$$q(#++2#' q5$$S[[1F"lln,e$	 
 88F##  # ,,tyy**V$$$ ,,tyyy   ## - %s+   B:E2<E.=A7E24E05&E2E20E2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   )r[   rV   rX   r   r   r.   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   FrE   rF   )r[   rU   popleftrT   r   r   r   rV   r   rX   r   )r*   r   s     r!   rF   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    )r[   r   ru   ri   IncompleteReadErrorr   rt   )r*   r|   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.)r[   rY   doner   r   r   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                  U R                  :  aJ  U R                  b#  [        U R                  5      U R                  :  a  U R                  R                  5         U$ )Nr   r   )rV   rW   r   r   rS   rT   rU   rN   rP   rM   r   )r*   r|   first_bufferr   r   r   chunk_splitss          r!   r   StreamReader._read_nowait_chunk  s6   ||A$$7s<(61A54D1$LL  "(D"#D <<'')Dt9

h
 ..|A=  " |A= ::'##+4**+d.D.DDNN))+r    c                    U R                   R                  5         US:X  ae  [        U R                  5      nUS:X  a  U R	                  S5      $ SR                  [        U5       Vs/ s H  o0R	                  S5      PM     sn5      $ / nU R                  (       aJ  U R	                  U5      nUR                  U5        U[        U5      -  nUS:X  a  OU R                  (       a  MJ  U(       a  SR                  U5      $ S$ s  snf )z6Read not more than n bytes, or whole buffer if n == -1r   r   r    r   )r\   assert_timeoutr   rV   r   ru   rangert   )r*   r|   count_chunksr   s         r!   r   StreamReader._read_nowait/  s    ""$7 %Ez..r2288%,O,Q44R8,OPP ll++A.EMM% UOAAv lll $*sxx2s2 Ps   %C=)rV   rW   rT   rX   r]   r^   rZ   r[   rO   rQ   rU   rR   rN   rP   rM   rS   r\   rY   r_   r`   r'   Nr   )   
r   )4r   r   r   r   r   r9   r	   intr   ri   AbstractEventLoopr+   strrw   r#   rI   r/   r   r   r;   r   rH   r   r   BaseExceptionr   r
   r   r   r   r   rJ   r   r   r   propertyr   r   r   r   r   r   rz   r   r   r   rF   r  r  r   r   r   r   r    r!   r   r   G   s   I8 *.15 7 7  7
  $& 7 ''$. 7 
 7D'# '2.u5 29c 9&9%&@ 9
1-e4 13: 33c3h 3%S %T %=4/  $122 !2 
	2$1xD1 1d 1$0 . .	$ + + +
 $ (e 3 t (:"%H S  T  * ?C >t >u > "'%BF%%584Z%	%N'$C '$ '$R
%u 
% *ud{!3  *D 3  5  $S $% $C E >3c 3e 3r    r   c                   \   \ rS rSrSrSS jrS\4S jrS\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\4S jjrS\SS4S jrS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)!EmptyStreamReaderiF  _read_eof_chunkr'   Nc                      SU l         SU l        g )NFr   r   r_   r.   s    r!   r+   EmptyStreamReader.__init__J  s    $r    c                 4    SU R                   R                  -  $ )Nrq   )rs   r   r.   s    r!   rw   EmptyStreamReader.__repr__N  s    ////r    c                     g r)   r   r.   s    r!   r   EmptyStreamReader.exceptionQ      r    r   r   c                     g r)   r   )r*   r   r   s      r!   r   EmptyStreamReader.set_exceptionT  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   r.   s    r!   r   EmptyStreamReader.feed_eofa  s    r    c                     gNTr   r.   s    r!   r   EmptyStreamReader.is_eofd  r(  r    c                     gr0  r   r.   s    r!   r   EmptyStreamReader.at_eofg  r(  r    c                    #    g 7fr)   r   r.   s    r!   r   EmptyStreamReader.wait_eofj  s        r   r|   c                     gNFr   )r*   r   r|   s      r!   r   EmptyStreamReader.feed_datam  s    r    c                     g r)   r   r   s     r!   r   %EmptyStreamReader.set_read_chunk_sizep  s    r    r   r   c                   #    g7fr3   r   r   s     r!   rz   EmptyStreamReader.readlines       r6  c                    #    g7fr3   r   r   s     r!   r   EmptyStreamReader.readv  r>  r6  c                    #    g7fr3   r   r.   s    r!   r   EmptyStreamReader.readany{  r>  r6  c                 >   #    U R                   (       d  SU l         gg7f)NTrE   r   r  r.   s    r!   rF   EmptyStreamReader.readchunk~  s     ###'D s   c                 8   #    [         R                  " SU5      e7fr3   )ri   r  r   s     r!   r  EmptyStreamReader.readexactly  s     ))#q11s   c                     gr3   r   r   s     r!   r  EmptyStreamReader.read_nowait  s    r    r"  r  r  r  )r   r   r   r   r9   r+   r  rw   r  r   r
   r   r   r   r   rJ   r   r   r   rI   r  r   r   rz   r   r   rH   rF   r  r  r   r   r    r!   r  r  F  s9   $I0# 0=4/  $1 ! 
	CxD1 Cd C  e  D S T  ?C t u 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\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.rb   r'   Nc                 n    Xl         SU l        S U l        S U l        [        R
                  " 5       U l        g r8  )rR   rX   rY   r[   rl   rm   rV   )r*   rb   s     r!   r+   DataQueue.__init__  s,    
	4804:E:K:K:Mr    c                 ,    [        U R                  5      $ r)   )r   rV   r.   s    r!   __len__DataQueue.__len__  s    4<<  r    c                     U R                   $ r)   r   r.   s    r!   r   DataQueue.is_eof  s    yyr    c                 J    U R                   =(       a    U R                  (       + $ r)   r   r.   s    r!   r   DataQueue.at_eof  s    yy---r    c                     U R                   $ r)   r   r.   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 r0  )rX   r[   rY   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)   )rV   rt   rY   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 r0  )rX   rY   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)   )rV   rX   rY   rR   r   ri   CancelledErrorTimeoutErrorr   r[   r   )r*   r   r  s      r!   r   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#   r   r.   s    r!   r/   DataQueue.__aiter__  s    "499--r    )rV   rX   r[   rR   rY   r  r  )r   r   r   r   r   ri   r  r+   r  rM  rJ   r   r   r  r   r
   r   r   r   r   r   r#   r/   r   r   r    r!   r   r     s    HNW66 N4 N! ! . .=4/  $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.
rc   rd   rb   r'   Nc                N   > [         TU ]  US9  SU l        Xl        US-  U l        g )N)rb   r   rf   )superr+   rS   rM   _limit)r*   rc   rd   rb   rs   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)   )rd  r   rS   re  rM   _reading_pausedr   )r*   r   r   rs   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)   )rV   rX   rY   rR   r   ri   r\  r]  r   rS   re  rM   rh  r   r[   r   )r*   r   r   s      r!   r   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)re  rM   rS   rY   r  )r   r   r   r   r   r	   r  ri   r  r+   r   r   r   r   __classcell__)rs   s   @r!   rb  rb    sc     $ -0 ;B;T;T 	 +b + +D + +B  r    rb  )$ri   rl   r   r   collections.abcr   r   typingr   r   r   base_protocolr	   helpersr
   r   r   r   r   r   http_exceptionsr   logr   __all__r   r   r   r#   r;   r   r  r   __annotations__r   rb  r   r    r!   <module>ru     s      
  / * * '  )   T]!	 !'"+ ( "|3 |3~C CL &7%8u\" 8>. >.B(9R= (r    