
    h                         S r SSKrSSKrSSKJrJrJrJrJr  SSK	J
r
  SSKJrJr  Sr " S S	5      r " S
 S5      r\" \5       " S S\5      5       r\" \5       " S S\5      5       rg)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                   d    \ rS rSrS\S\S   4   S\\S4   S\\	\4   SS4S jr
S	\SS4S
 jrSrg)_stream_wrapper#   coro.Nargskwargsreturnc                 R    [         R                  " U5      U l        X l        X0l        g N)types	coroutiner   r   r   )selfr   r   r   s       J/var/www/html/env/lib/python3.13/site-packages/aiohttp/payload_streamer.py__init___stream_wrapper.__init__$   s     OOD)		    writerc                 t   #    U R                   " U/U R                  Q70 U R                  D6I S h  vN   g  N7fr   )r   r   r   r   r   s     r   __call___stream_wrapper.__call__.   s)     ii::dkk:::s   .868)r   r   r   )__name__
__module____qualname____firstlineno__r   r   r   r   r   strr   r	   r    __static_attributes__ r   r   r   r   #   s_    sIdO+, CHo S#X	
 
;%9 ;d ;r   r   c                   L    \ rS rSrS\S\S   4   SS4S jrS\S\S\4S	 jr	S
r
g)r   2   r   .Nr   c                 D    [         R                  " S[        SS9  Xl        g )Nz5@streamer is deprecated, use async generators instead   )
stacklevel)warningswarnDeprecationWarningr   )r   r   s     r   r   streamer.__init__3   s    C	

 	r   r   r   c                 .    [        U R                  X5      $ r   )r   r   )r   r   r   s      r   r    streamer.__call__;   s    tyy$77r   )r   )r"   r#   r$   r%   r   r   r   r   r   r    r'   r(   r   r   r   r   2   s=    Xc9T?&:;  8c 8S 8_ 8r   r   c                   @    \ rS rSrS\SS4S jrS
S\S\S\4S jjrS	rg)StreamWrapperPayload?   r   r   Nc                 B   #    U R                  U5      I S h  vN   g  N7fr   _valuer   s     r   writeStreamWrapperPayload.writeA        kk&!!!   encodingerrorsc                     [        S5      e)NzUnable to decode.)	TypeError)r   r>   r?   s      r   decodeStreamWrapperPayload.decodeD   s    +,,r   r(   )zutf-8strict)	r"   r#   r$   r%   r	   r:   r&   rB   r'   r(   r   r   r5   r5   ?   s5    ""6 "4 "-s -c - - -r   r5   c                   N   ^  \ rS rSrS\S\S\SS4U 4S jjrS\SS4S	 jrS
rU =r	$ )StreamPayloadH   valuer   r   r   Nc                 8   > [         TU ]  " U" 5       /UQ70 UD6  g r   )superr   )r   rH   r   r   	__class__s       r   r   StreamPayload.__init__J   s    24262r   r   c                 B   #    U R                  U5      I S h  vN   g  N7fr   r8   r   s     r   r:   StreamPayload.writeM   r<   r=   r(   )
r"   r#   r$   r%   r   r   r	   r:   r'   __classcell__)rK   s   @r   rF   rF   H   s=    3c 3# 3 3 3""6 "4 " "r   rF   )__doc__r   r.   typingr   r   r   r   r   abcr	   payloadr
   r   __all__r   r   r5   rF   r(   r   r   <module>rU      sx   0   8 8 % *
; ;
8 
8 o-7 - - h"( " "r   