§
    Ài£  ã                   ó  — 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       ú]/home/mmwave/public_html/mmwave/venv/lib/python3.11/site-packages/aiohttp/payload_streamer.pyÚ__init__z_stream_wrapper.__init__$   s'   € õ ”O DÑ)Ô)ˆŒ	ØˆŒ	ØˆŒˆˆó    Ú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   è è € ØˆdŒi˜Ð: ¤Ð:Ð:Ð:¨d¬kÐ:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:r   )Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   Ústrr   r	   r   © r   r   r   r   #   s�   € € € € € ðà�s˜I dœOÐ+Ô,ðð �C˜�HŒoðð �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   € Ý˜tœy¨$°Ñ7Ô7Ð7r   )	r   r    r!   r   r   r   r   r   r   r#   r   r   r   r   2   sm   € € € € € ð˜X c¨9°T¬?Ð&:Ô;ð Àð ð ð ð ð8˜cð 8¨Sð 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   è è € Ø�kŠk˜&Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ð!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   ø€ Ø�‰ŒÔ˜˜™œÐ2 4Ð2Ð2Ð2¨6Ð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|   ø€ € € € € ð3˜cð 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   