`: d Z ddlZddlZddlmZmZmZmZmZ ddl m
Z
ddlmZm
Z
dZ G d d Z G d
d Z e
e G d d
e Z e
e G d de ZdS )am
Payload implementation 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)Payloadpayload_type)streamerc r e Zd Zdeded f deedf deeef ddfdZ de
ddfd ZdS )
_stream_wrappercoro.Nargskwargsreturnc T t j | | _ || _ || _ d S N)types coroutiner r r )selfr r r s l/builddir/build/BUILD/cloudlinux-venv-1.0.10/venv/lib64/python3.11/site-packages/aiohttp/payload_streamer.py__init__z_stream_wrapper.__init__$ s' OD)) writerc L K | j |g| j R i | j d {V d S r )r r r r r s r __call__z_stream_wrapper.__call__. sD di::::dk:::::::::::r )__name__
__module____qualname__r r r r r strr r r r r r r # s sIdO+, CHo S#X
;%9 ;d ; ; ; ; ; ;r r c N e Zd Zdeded f ddfdZdededefdZdS ) r r .Nr c L t j dt d || _ d S )Nz5@streamer is deprecated, use async generators instead )
stacklevel)warningswarnDeprecationWarningr )r r s r r zstreamer.__init__3 s1
C
r r r c . t | j || S r )r r )r r r s r r zstreamer.__call__; s ty$777r ) r r r! r r r r r r r# r r r r 2 sm Xc9T?&:; 8c 8S 8_ 8 8 8 8 8 8r r c e Zd ZdeddfdZdS )StreamWrapperPayloadr r Nc @ K | | d {V d S r _valuer s r writezStreamWrapperPayload.writeA 0 kk&!!!!!!!!!!!r )r r r! r r1 r# r r r- r- ? s7 ""6 "4 " " " " " "r r- c @ e Zd Zdedededdf fdZdeddfdZ xZS )
StreamPayloadvaluer r r Nc R t j | g|R i | d S r )superr )r r5 r r __class__s r r zStreamPayload.__init__G s6 24222622222r r c @ K | | d {V d S r r/ r s r r1 zStreamPayload.writeJ r2 r )r r r! r r r r1
__classcell__)r8 s @r r4 r4 E s| 3c 3# 3 3 3 3 3 3 3 3""6 "4 " " " " " " " "r r4 )__doc__r r( typingr r r r r abcr payloadr
r __all__r r r- r4 r# r r