§
    ~Štj±  ã                   ó  — d Z ddlZddlZddlmZmZ ddl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)Ú	AwaitableÚCallable)ÚAnyé   )Ú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       úV/var/www/html/CA-Chatbot/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   Útupler   ÚdictÚ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__4   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
   3   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.writeB   ó0   è è € Ø�kŠk˜&Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ð!r   úutf-8ÚstrictÚencodingÚerrorsc                 ó    — t          d¦  «        ‚)NzUnable to decode.)Ú	TypeError)r   r5   r6   s      r   ÚdecodezStreamWrapperPayload.decodeE   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__K   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.writeN   r2   r   )r   r   r   r   r   r   r1   Ú__classcell__)r?   s   @r   r;   r;   I   s|   ø€ € € € € ð3˜cð 3¨#ð 3¸ð 3Àð 3ð 3ð 3ð 3ð 3ð 3ð"Ð"6ð "¸4ð "ð "ð "ð "ð "ð "ð "ð "r   r;   )Ú__doc__r   r(   Úcollections.abcr   r   Útypingr   Úabcr   Úpayloadr   r	   Ú__all__r   r
   r-   r;   r#   r   r   ú<module>rH      sY  ððð ð0 €€€Ø €€€Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø Ð Ð Ð Ð Ð à %Ð %Ð %Ð %Ð %Ð %Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *à
€ð;ð ;ð ;ð ;ð ;ñ ;ô ;ð ;ð
8ð 
8ð 
8ð 
8ð 
8ñ 
8ô 
8ð 
8ð €ˆoÑÔð-ð -ð -ð -ð -˜7ñ -ô -ñ Ôð-ð €ˆhÑÔð"ð "ð "ð "ð "Ð(ñ "ô "ñ Ôð"ð "ð "r   