U '7`6@sdZddlZddlZddlmZmZmZmZmZddl m Z ddl m Z m Z dZGdd d ZGd d d Ze eGd d d e Ze eGdddeZdS)al Payload implemenation for coroutines as data provider. As a simple case, you can upload data from file:: @aiohttp.streamer async def file_sender(writer, file_name=None): with open(file_name, 'rb') as f: chunk = f.read(2**16) while chunk: await writer.write(chunk) chunk = f.read(2**16) Then you can use `file_sender` like this: async with session.post('http://httpbin.org/post', data=file_sender(file_name='huge_file')) as resp: print(await resp.text()) ..note:: Coroutine must accept `writer` as first argument N)Any AwaitableCallableDictTuple)AbstractStreamWriter)Payload payload_type)streamerc@sLeZdZededfeedfeeefddddZ e ddddZ dS) _stream_wrapper.N)coroargskwargsreturncCst||_||_||_dSN)types coroutiner rr)selfr rrrK/opt/alt/python38/lib64/python3.8/site-packages/aiohttp/payload_streamer.py__init__#s z_stream_wrapper.__init__writerrcs |j|f|j|jIdHdSr)r rrrrrrr__call__-sz_stream_wrapper.__call__) __name__ __module__ __qualname__rrrrrstrrrrrrrrr "s    r c@s:eZdZededfddddZeeedddZdS) r .N)r rcCstjdtdd||_dS)Nz5@streamer is deprecated, use async generators instead) stacklevel)warningswarnDeprecationWarningr )rr rrrr2s zstreamer.__init__)rrrcOst|j||Sr)r r )rrrrrrr:szstreamer.__call__) rrrrrrrr rrrrrr 1sr c@seZdZeddddZdS)StreamWrapperPayloadNrcs||IdHdSrZ_valuerrrrwrite@szStreamWrapperPayload.write)rrrrr'rrrrr%>sr%cs8eZdZeeeddfdd ZeddddZZS) StreamPayloadN)valuerrrcstj|f||dSr)superr)rr)rr __class__rrrFszStreamPayload.__init__rcs||IdHdSrr&rrrrr'IszStreamPayload.write)rrrrrrr' __classcell__rrr+rr(Dsr()__doc__rr"typingrrrrrabcrZpayloadr r __all__r r r%r(rrrrs