ó
    Û°›j±  ã                   óÔ   • S r SSKrSSKrSSKJrJr  SSK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)Ú	AwaitableÚCallable)ÚAnyé   )Ú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       ÚU/home/mande/repo/quber/.venv/lib/python3.13/site-packages/aiohttp/payload_streamer.pyÚ__init__Ú_stream_wrapper.__init__%   s   € ô —O’O DÓ)ˆŒ	ØŒ	Ø�ó    Ú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)   é € Ø�iŠi˜Ð: §¡Ò:¨d¯k©kÑ:×:Ó:ùs   ‚.8°6±8)r   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r   Útupler   ÚdictÚstrr   r   r   Ú__static_attributes__© r   r   r   r   $   s_   † ðà�s˜I d™OÐ+Ñ,ðð �C˜�H‰oðð �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
   é3   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__4   s   € Ü�ŠØCÜØò	
ð
 �	r   r   r   c                 ó.   • [        U R                  X5      $ r   )r   r   )r   r   r   s      r   r   Ústreamer.__call__<   s   € Ü˜tŸy™y¨$Ó7Ð7r   )r   )r    r!   r"   r#   r   r   r   r   r   r   r'   r(   r   r   r
   r
   3   s=   † ð˜X c¨9°T©?Ð&:Ñ;ð Àô ð8˜cð 8¨Sð 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.writeB   ó   é € Ø�k‰k˜&Ó!×!Ó!ùó   ‚—˜ÚencodingÚerrorsc                 ó   • [        S5      e)NzUnable to decode.)Ú	TypeError)r   r>   r?   s      r   ÚdecodeÚStreamWrapperPayload.decodeE   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	$ )ÚStreamPayloadéI   Ú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__K   s   ø€ Ü‰Ò™›Ð2 4Ò2¨6Ó2r   r   c              ƒ   óB   #   • U R                  U5      I S h  v•N   g  N7fr   r8   r   s     r   r:   ÚStreamPayload.writeN   r<   r=   r(   )
r    r!   r"   r#   r   r   r   r:   r'   Ú__classcell__)rK   s   @r   rF   rF   I   s=   ø† ð3˜cð 3¨#ð 3¸ð 3À÷ 3ð"Ð"6ð "¸4÷ "ò "r   rF   )Ú__doc__r   r.   Úcollections.abcr   r   Útypingr   Úabcr   Úpayloadr   r	   Ú__all__r   r
   r5   rF   r(   r   r   Ú<module>rV      sx   ðñó0 Û ß /Ý å %ß *à
€÷;ñ ;÷
8ñ 
8ñ ˆoÓô-˜7ó -ó ð-ñ ˆhÓô"Ð(ó "ó ñ"r   