
    h                        d Z ddlZddlZddlmZmZmZmZmZ ddl	m
Z
 ddlmZmZ dZ G d d	          Z G d
 d          Z ee           G d de                      Z ee           G d de                      ZdS )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                   r    e Zd Zdeded         f         deedf         deeef         ddfdZ	de
ddfd	ZdS )
_stream_wrappercoro.Nargskwargsreturnc                 T    t          j        |          | _        || _        || _        d S N)types	coroutiner   r   r   )selfr   r   r   s       Z/var/www/html/prod/cognitive/venv/lib/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+, CHo S#X	
 
   ;%9 ;d ; ; ; ; ; ;r   r   c                   N    e Zd Zdeded         f         ddfdZdededefdZdS )	r   r   .Nr   c                 L    t          j        dt          d           || _        d S )Nz5@streamer is deprecated, use async generators instead   )
stacklevel)warningswarnDeprecationWarningr   )r   r   s     r   r   zstreamer.__init__3   s1    C	
 	
 	
 	

 			r   r   r   c                 .    t          | j        ||          S r   )r   r   )r   r   r   s      r   r   zstreamer.__call__;   s    ty$777r   )	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                   4    e Zd ZdeddfdZd
dededefd	ZdS )StreamWrapperPayloadr   r   Nc                 @   K   |                      |           d {V  d S r   _valuer   s     r   writezStreamWrapperPayload.writeA   0      kk&!!!!!!!!!!!r   utf-8strictencodingerrorsc                      t          d          )NzUnable to decode.)	TypeError)r   r5   r6   s      r   decodezStreamWrapperPayload.decodeD   s    +,,,r   )r3   r4   )r   r    r!   r	   r1   r"   r9   r#   r   r   r-   r-   ?   se        ""6 "4 " " " "- -s -c - - - - - - -r   r-   c                   @     e Zd Zdedededdf fdZdeddfdZ xZS )	StreamPayloadvaluer   r   r   Nc                 R     t                      j         |            g|R i | d S r   )superr   )r   r<   r   r   	__class__s       r   r   zStreamPayload.__init__J   s6    24222622222r   r   c                 @   K   |                      |           d {V  d S r   r/   r   s     r   r1   zStreamPayload.writeM   r2   r   )r   r    r!   r   r   r	   r1   __classcell__)r?   s   @r   r;   r;   H   s|        3c 3# 3 3 3 3 3 3 3 3""6 "4 " " " " " " " "r   r;   )__doc__r   r(   typingr   r   r   r   r   abcr	   payloadr
   r   __all__r   r   r-   r;   r#   r   r   <module>rG      sY   0   8 8 8 8 8 8 8 8 8 8 8 8 8 8 % % % % % % * * * * * * * *
; ; ; ; ; ; ; ;
8 
8 
8 
8 
8 
8 
8 
8 o- - - - -7 - - - h" " " " "( " " " " "r   