
    Dh                         d dl Z d dlZd dlZd dlZd dlmZmZmZ d dlm	Z	  G d dee j                        Z G d dej                        Zd Zy)	    N)IncompleteReadErrorReadTimeoutErrorResponseStreamingError)parsersc                       e Zd Zy)AioReadTimeoutErrorN)__name__
__module____qualname__     v/var/www/fastuser/data/www/generator.snapmosaic.io/flask_app/venv/lib/python3.12/site-packages/aiobotocore/response.pyr   r      s    r   r   c                        e Zd ZdZdZdej                  def fdZd Z	d Z
d Zdd	Zd
 Zd Zd ZeZedfdZefdZd Zd Z xZS )StreamingBodyad  Wrapper class for an http response body.

    This provides a few additional conveniences that do not exist
    in the urllib3 model:

        * Set the timeout on the socket (i.e read() timeouts)
        * Auto validation of content length, if the amount of bytes
          we read does not match the content length, an exception
          is raised.
    i   
raw_streamcontent_lengthc                 @    t         |   |       || _        d| _        y )Nr   )super__init___self_content_length_self_amount_read)selfr   r   	__class__s      r   r   zStreamingBody.__init__!   s     $$2!!"r   c                 R   K   | j                   j                          d {   S 7 wN)__wrapped__
__aenter__r   s    r   r   zStreamingBody.__aenter__'   s!     %%002222s   '%'c                 X   K   | j                   j                  |||       d {   S 7 wr   )r   	__aexit__)r   exc_typeexc_valexc_tbs       r   r    zStreamingBody.__aexit__*   s'     %%//'6JJJJs   !*(*c                 $    | j                          S r   )at_eofr   s    r   readablezStreamingBody.readable/   s    ;;=  r   c                   K   	 | j                   j                  j                  ||nd       d{   }| xj                  t        |      z  c_        ||s|dkD  r| j                          |S 7 =# t        j                  $ r&}t        | j                   j                  |      d}~wt        j                  j                  $ r}t        |      d}~ww xY ww)zhRead at most amt bytes from the stream.

        If the amt argument is omitted, read all data.
        N)endpoint_urlerror)r*   r   )r   contentreadasyncioTimeoutErrorr   urlaiohttpclient_exceptionsClientConnectionErrorr   r   len_verify_content_length)r   amtchunkes       r   r,   zStreamingBody.read2   s     		2**2277B E 	#e*,;uq '')! ## 	%!--11  ((>> 	2(q11	2sC   C,A0 A.A0 9C.A0 0C!B$$ CCCCc                 b   K   | j                         2 cg c3 d {   }|7 6 }}|S c c}w wr   )
iter_lines)r   lineliness      r   	readlineszStreamingBody.readlinesK   s1     (,(9::::: ;s$   /*%#
%*%*	/c                 8    | j                  | j                        S )z:Return an iterator to yield 1k chunks from the raw stream.)iter_chunks_DEFAULT_CHUNK_SIZEr   s    r   	__aiter__zStreamingBody.__aiter__P   s     8 899r   c                 h   K   | j                  | j                         d{   }|r|S t        7 w)z-Return the next 1k chunk from the raw stream.N)r,   r?   StopAsyncIteration)r   current_chunks     r   	__anext__zStreamingBody.__anext__T   s2     "ii(@(@AA     Bs   202Fc                   K   d}| j                  |      2 3 d{   }||z   j                  d      }|dd D ]  }|j                  |      d     |d   }D7 ?6 |r|j                  |      d    yyw)zReturn an iterator to yield lines from the raw stream.

        This is achieved by reading chunk of bytes (of size chunk_size) at a
        time from the raw stream, and then yielding lines from there.
        r   NTr(   r   )r>   
splitlines)r   
chunk_sizekeependspendingr6   r;   r:   s          r   r9   zStreamingBody.iter_lines]   s      ++J7 	  	 %u_006Ecr
 3ooh/223BiG		 7
 $$X.q11 s%   A8AAA<A8AA8c                Z   K   	 | j                  |       d{   }|dk(  ry| %7 w)z\Return an iterator to yield chunks of chunk_size bytes from the raw
        stream.
        Nr   )r,   )r   rG   rC   s      r   r>   zStreamingBody.iter_chunksl   s5      "&))J"77M#	 7s   +)+c                     | j                   M| j                  t        | j                         k7  r*t        | j                  t        | j                               y y )N)actual_bytesexpected_bytes)r   r   intr   r   s    r   r4   z$StreamingBody._verify_content_lengthv   sX    
 %%1&&#d.G.G*HH%!33"4#<#<=  I 2r   c                     | j                   S r   )r   r   s    r   tellzStreamingBody.tell   s    %%%r   r   )r	   r
   r   __doc__r?   r0   StreamReaderstrr   r   r    r&   r,   r<   r@   rD   anextr9   r>   r4   rP   __classcell__)r   s   @r   r   r      sr    	 #7#7#7 # #3K
!2
:! E*= 2 ,?  &r   r   c                 <  K   | j                   d   }|j                  |j                  d}|d   dk\  r|j                   d {   |d<   nO| j                  r,t        |j                  |d   j                  d            |d<   n|j                   d {   |d<   t        j                  |      }t        j                  |j                        r(|j                  || j                         d {   }||fS |j                  || j                        }||fS 7 7 7 ,w)Nprotocol)headersstatus_coderY   i,  bodyrX   zcontent-length)metadatarX   rY   r+   has_streaming_outputr   rawgetr   create_parserr-   iscoroutinefunctionparseoutput_shape)operation_modelhttp_responserW   response_dictparserparseds         r   get_responserh      s    ''
3H (($00M ]#s*&3&;&; ;f		-	- -}Y7;;<LM!
f '4&;&; ;f""8,F""6<<0||?77
 

 &   m_-I-IJ&   !< !<
s8   A DDADDAD-D.)DDD)r-   r0   aiohttp.client_exceptionswraptbotocore.responser   r   r   aiobotocorer   r.   r   ObjectProxyr   rh   r   r   r   <module>rn      sO           	*G,@,@ 	q&E%% q&h!r   