File: //usr/local/lib/python3.10/dist-packages/aiohttp/__pycache__/payload_streamer.cpython-310.pyc
o
���g� � @ s� d Z ddlZddlZddlmZmZmZmZmZ ddl m
Z
ddlmZm
Z
dZG dd � d �ZG d
d� d�Ze
e�G dd
� d
e��Ze
e�G dd� 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� Awaitable�Callable�Dict�Tuple� )�AbstractStreamWriter)�Payload�payload_type)�streamerc @ sT e Zd Zdeded f deedf deeef ddfdd�Z d e
ddfd
d�ZdS )�_stream_wrapper�coro.N�args�kwargs�returnc C s t �|�| _|| _|| _d S �N)�types� coroutiner
r r )�selfr
r r � r �C/usr/local/lib/python3.10/dist-packages/aiohttp/payload_streamer.py�__init__$ s
z_stream_wrapper.__init__�writerc � s( �| j |g| j�R i | j��I d H d S r )r
r r �r r r r r �__call__. s �&z_stream_wrapper.__call__)�__name__�
__module__�__qualname__r r r r r �strr r r r r r r r # s �
�
�
�
r c @ s@ e Zd Zdeded f ddfdd�Zdededefd d
�ZdS )r r
.Nr c C s t jdtdd� || _d S )Nz5@streamer is deprecated, use async generators instead� )�
stacklevel)�warnings�warn�DeprecationWarningr
)r r
r r r r 3 s �
zstreamer.__init__r r c O s t | j||�S r )r r
)r r r r r r r ; s zstreamer.__call__) r r r r r r r r r r r r r r 2 s r c @ s6 e Zd Zdeddfdd�Zdded edefd
d�ZdS )
�StreamWrapperPayloadr r Nc � � �| � |�I d H d S r ��_valuer r r r �writeA � �zStreamWrapperPayload.write�utf-8�strict�encoding�errorsc C s t d��)NzUnable to decode.)� TypeError)r r, r- r r r �decodeD s zStreamWrapperPayload.decode)r* r+ )r r r r r( r r/ r r r r r$ ? s r$ c s@ e Zd Zdedededdf� fdd�Zdeddfd d
�Z� ZS )�
StreamPayload�valuer r r Nc s t � j|� g|�R i |�� d S r )�superr )r r1 r r �� __class__r r r J s zStreamPayload.__init__r c � r% r r&