wcedQjUddlZddlZddlZddlmZmZmZmZmZm Z m Z m Z m Z ddl mZddlmZmZmZmZddlmZdZe dZGd d eZGd d eeZGd dZGddZGddeZGddeZeZeee d<GddeeZ!Gdde!eZ"y)N) AwaitableCallableDequeFinalGenericListOptionalTupleTypeVar) BaseProtocol)BaseTimerContext TimerNoop set_exception set_result)internal_logger) EMPTY_PAYLOAD EofStream StreamReader DataQueueFlowControlDataQueue_TceZdZdZy)rzeof stream indication.N)__name__ __module__ __qualname____doc__1/usr/lib/python3/dist-packages/aiohttp/streams.pyrrs rrc@eZdZdegeefddfdZddZdefdZy)AsyncStreamIterator read_funcreturnNc||_yN)r#)selfr#s r __init__zAsyncStreamIterator.__init__$s "rc|Sr&rr's r __aiter__zAsyncStreamIterator.__aiter__' rcK |jd{}|dk(rt|S7#t$rtwxYwwNr)r#rStopAsyncIterationr'rvs r __anext__zAsyncStreamIterator.__anext__*sG %~~''B 9$ $ ( %$ $ %s >+)+ >+;>)r$zAsyncStreamIterator[_T]) rrrrrrr(r+r2rrr r"r"#s4#(2y}+<"=#$#rr"c2eZdZddZddZdeeeffdZy)ChunkTupleAsyncStreamIteratorr$Nc||_yr&)_stream)r'streams r r(z&ChunkTupleAsyncStreamIterator.__init__5s  rc|Sr&rr*s r r+z'ChunkTupleAsyncStreamIterator.__aiter__8r,rclK|jjd{}|dk(rt|S7w)NrF)r6 readchunkr/r0s r r2z'ChunkTupleAsyncStreamIterator.__anext__;s3<<))+ +  $ $ ,s 424)r7rr$N)r$r4) rrrr(r+r bytesboolr2rrr r4r44s!ud{!3rr4cReZdZdeefdZdedeefdZdeefdZde fdZ y)AsyncStreamReaderMixinr$c,t|jSr&)r"readliner*s r r+z AsyncStreamReaderMixin.__aiter__Cs"4==11rnc$tfdS)z>Returns an asynchronous iterator that yields chunks of size n.c&jSr&)read)rBr'sr z5AsyncStreamReaderMixin.iter_chunked..Hs499Q<r)r"r'rBs``r iter_chunkedz#AsyncStreamReaderMixin.iter_chunkedFs"#788rc,t|jS)z3Yield all available data as soon as it is received.)r"readanyr*s r iter_anyzAsyncStreamReaderMixin.iter_anyJs"4<<00rct|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. )r4r*s r iter_chunksz"AsyncStreamReaderMixin.iter_chunksNs -T22rN) rrrr"r<r+intrHrKr4rMrrr r?r?BsL2.u529c9&9%&@91-e413:3rr?c eZdZdZdZddddededeedee jd df d Z d e fd Z d eeeffd Zd eefd Zded dfdZdegdfd dfdZd)dZd efdZd efdZd)dZded dfdZd*deded dfdZd)dZd)dZde d dfdZd efdZ d+ded efd Z!d,d!ed efd"Z"d efd#Z#d eeeffd$Z$d!ed efd%Z%d,d!ed efd&Z&d!ed efd'Z'd!ed efd(Z(y)-ra*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(): ... rN)timerloopprotocollimitrPrQr$cD||_||_|dz|_|tj}||_d|_d|_d|_tj|_ d|_ d|_ d|_d|_d|_| t#n||_g|_y)NrF) _protocol _low_water _high_waterasyncioget_event_loop_loop_size_cursor_http_chunk_splits collectionsdeque_buffer_buffer_offset_eof_waiter _eof_waiter _exceptionr_timer_eof_callbacks)r'rRrSrPrQs r r(zStreamReader.__init__gs" 19 <))+D   7;%0%6%6%8  7; ;?37%*]ik 8:rc|jjg}|jr|jd|jz|jr|jd|j dk7r*|jd|j |j fz|jr|jd|jz|jr|jd|jzddj|zS) Nz%d byteseofizlow=%d high=%dzw=%rze=%r<%s> ) __class__rr\appendrcrWrXrdrfjoin)r'infos r __repr__zStreamReader.__repr__s''( :: KK TZZ/ 0 99 KK  ??e # KK(DOOT=M=M+NN O << KK- . ?? KK0 1&&rc2|j|jfSr&)rWrXr*s r get_read_buffer_limitsz#StreamReader.get_read_buffer_limitss!1!122rc|jSr&rfr*s r exceptionzStreamReader.exception rexcc||_|jj|j}|d|_t |||j }|d|_t ||yyr&)rfrhclearrdrrer'rxwaiters r rzStreamReader.set_exceptionsc !!#  DL &# &!!  #D  &# & rcallbackc|jr |y|jj |y#t$rtjdYywxYwNException in eof callback)rc Exceptionrrvrhrnr'r}s r on_eofzStreamReader.on_eofsL 99 G     & &x 0 G))*EF Gs2AAcDd|_|j}|d|_t|d|j}|d|_t|d|jD] } | |jjy#t $rt jdYHwxYw)NTr) rcrdrrerhrrrvrz)r'r|cbs r feed_eofzStreamReader.feed_eofs   DL vt $!!  #D  vt $%% GB G G !!# G))*EF GsA>>BBc|jS)z&Return True if 'feed_eof' was called.rcr*s r is_eofzStreamReader.is_eofs yyrc8|jxr |j S)z=Return True if the buffer is empty and 'feed_eof' was called.rcrar*s r at_eofzStreamReader.at_eofsyy---rcK|jry|jJ|jj|_ |jd{d|_y7 #d|_wxYwwr&)rcrer[ create_futurer*s r wait_eofzStreamReader.wait_eofsa 99 '''::335 $"" " "#D  ##D s.;A(A AAA(A A%%A(datacvtjdtd|sy|jr0|jd|jd|jd<d|_|xj t |z c_|xjt |zc_|jj|d|_ y)zDrollback reading some data from stream, inserting it to buffer head.zJunread_data() is deprecated and will be removed in future releases (#3260)rU) stacklevelNr) warningswarnDeprecationWarningrbrar\lenr] appendleft _eof_counter)r'rs r unread_datazStreamReader.unread_datas  =       "ll1od.A.A.CDDLLO"#D  c$i  D !  %rsizec|jrJd|sy|xjt|z c_|jj ||xj t|z c_|j }|d|_t|d|j|jkDr2|jjs|jjyyy)Nzfeed_data after feed_eof) rcr\rrarn total_bytesrdrrXrV_reading_paused pause_readingr'rrr|s r feed_datazStreamReader.feed_datas99888}  c$i  D! CI%  DL vt $ ::(( (1O1O NN ( ( *2P (rcZ|j|jr tdg|_yy)Nz?Called begin_http_chunk_receiving whensome data was already fed)r^r RuntimeErrorr*s r begin_http_chunk_receivingz'StreamReader.begin_http_chunk_receivings6  " " *"X')D # +rc|j td|jr|jdnd}|j|k(ry|jj|j|j}|d|_t |dyy)NzFCalled end_chunk_receiving without calling begin_chunk_receiving firstr)r^rrrnrdr)r'posr|s r end_http_chunk_receivingz%StreamReader.end_http_chunk_receivings  " " *. .2-D-Dd%%b)!   s "  &&t'7'78  DL vt $ r func_namecK|jtd|z|jjx}|_ |j5|d{dddd|_y7#1swYxYw#d|_wxYww)NzH%s() called while another coroutine is already waiting for incoming data)rdrr[rrg)r'rr|s r _waitzStreamReader._wait s << #46?@  !% 8 8 ::     DL   DLsFK|jd{S7wr&) readuntilr*s r rAzStreamReader.readline2s^^%%%%s  separatorcKt|}|dk(r td|j |jd}d}d}|r|jr|r|j}|jdj ||dz}|j |r ||z |zdz nd}||z }|t|z }|rd}||jkDr td|jr|r|jr |S|r|jd d{|r|S7 w) Nrz,Separator should be at least one-byte stringrTr rFz Chunk too bigr) r ValueErrorrfrarbfind_read_nowait_chunkrXrcr) r'rseplenchunk chunk_size not_enoughoffseticharrs r rzStreamReader.readuntil5s Y Q;KL L ?? &// !  ,,:,, Q,,Y?!C..38EFNV+a/b c$i' !&J 0 00$_55,,:yy  jj---), .sCD %D =D>D D rBc2K|j |j |jrG|js;t|dddz|_|jdkDrt j dd|sy|dkrAg} |jd{}|sn|j|-dj|S|js>|js2|jd d{|js |js2|j|S770w) NTrrr zEMultiple access to StreamReader in eof state, might be infinite loop.) stack_inforrE) rfrcragetattrrrwarningrJrnror _read_nowait)r'rBblocksblocks r rEzStreamReader.readYs ?? &// ! yy$+D.!$Dq$H!$$q(#++2#'  q5 F"lln, e$  88F# # ,,tyy**V$ $ $,,tyy  ##- %s+B D DAD$D%DDDcK|j |j|js>|js2|jdd{|js |js2|j dS7.w)NrJr)rfrarcrrr*s r rJzStreamReader.readanysb ?? &// ! ,,tyy**Y' ' ',,tyy  $$ (sAA8A6A8%A8cK |j |j|jr||jjd}||jk(ry||jkDr |j ||jz dfSt j d|jr||jr|jddfS|jry|jd d{7w) aReturns a tuple of (data, end_of_http_chunk). When chunked transfer encoding is used, end_of_http_chunk is a boolean indicating if the end of the data corresponds to the end of a HTTP chunk , otherwise it is always False. TNrrTzESkipping HTTP chunk end due to data consumption beyond chunk boundaryrFr:r;) rfr^popr]rrrrarrcr)r'rs r r;zStreamReader.readchunks*oo%))--11!4$,,&&% --cDLL.@A4HH''8 ))||//3U;;yy$**[) ) )10 *sB!C,$AC,$C*%C,cTK|j |jg}|dkDrs|j|d{}|s3dj|}tj|t ||z|j ||t |z}|dkDrsdj|S7ow)Nrr)rfrErorYIncompleteReadErrorrrn)r'rBrrpartials r readexactlyzStreamReader.readexactlys ?? &// ! !e))A,&E((6*11'3wDataQueue is a general-purpose blocking queue with one reader.rQr$Nc|||_d|_d|_d|_d|_t j |_y)NFr)r[rcrdrfr\r_r`ra)r'rQs r r(zDataQueue.__init__;s5  7; 37 .9.?.?.A rc,t|jSr&)rrar*s r __len__zDataQueue.__len__Cs4<<  rc|jSr&rr*s r rzDataQueue.is_eofFs yyrc8|jxr |j Sr&rr*s r rzDataQueue.at_eofIsyy---rc|jSr&rur*s r rvzDataQueue.exceptionLrwrrxcdd|_||_|j}|d|_t||yyr)rcrfrdrr{s r rzDataQueue.set_exceptionOs5   DL &# & rrrc|xj|z c_|jj||f|j}|d|_t |dyyr&)r\rarnrdrrs r rzDataQueue.feed_dataXsK d  T4L)  DL vt $ rcVd|_|j}|d|_t|dyyr)rcrdr)r'r|s r rzDataQueue.feed_eofas.   DL vt $ rcK|jsN|jsB|jrJ|jj |_ |jd{|jr4|jj\}}|xj|zc_ |S|j |jt7b#t j t jf$r d|_wxYwwr&) rarcrdr[rrYCancelledError TimeoutErrorrr\rfr)r'rrs r rEzDataQueue.readis||DII|| ##::335DL ll"" <<--/JD$ JJ$ JK*oo%#**G,@,@A #  s1AC, B=B;B=AC,;B==,C))C,c,t|jSr&)r"rEr*s r r+zDataQueue.__aiter__}s"499--rrr)rrrrrYrr(rNrr=rrr rrvrrrrrEr"r+rrr rr8sHBW66B4B!!..8M2''4'%b%%D%% B (..r2.rrcreZdZdZdededejddffd Zd de d eddffd Z de ffd Z xZ S) rzlFlowControlDataQueue resumes and pauses an underlying stream. It is a destination for parsed data. rRrSrQr$NcHt||||_|dz|_y)N)rQrU)superr(rV_limit)r'rRrSrQrms r r(zFlowControlDataQueue.__init__s' d#!ai rrrct||||j|jkDr2|jj s|jj yyyr&)rrr\rrVrr)r'rrrms r rzFlowControlDataQueue.feed_datasG $% :: #DNN,J,J NN ( ( *-K #rctK t|d{|j|jkr2|jj r|jj SSS7O#|j|jkr2|jj r|jj wwwxYwwr&)rrEr\rrVrr)r'rms r rEzFlowControlDataQueue.reads 0'zzDKK'DNN,J,J--/-K'(zzDKK'DNN,J,J--/-K's-B8A(A&A(A B8&A((A B55B8r) rrrrr rNrYrr(rrrE __classcell__)rms@r rrs^  $ -0 ;B;T;T  +b++D+ 0B00rr)#rYr_rtypingrrrrrrr r r base_protocolr helpersrrrrlogr__all__rrrr"r4r?rrr__annotations__rrrrr rs   (KK   T]! !'"+"  33*`3)`3F 8 8v&7%8 u\"8F. F.R09R=0r