Ë
    £ªði¹  ã                   ó°   — d dl Z d dlmZ d dlmZ d dlmZ d dlm	Z	m
Z
 d dlmZmZ d dlmZmZmZ d dlmZ  e j&                  e«      Z G d	„ d
e«      Zd„ Zy)é    N)ÚIOBase)ÚProtocolError)ÚReadTimeoutError)ÚScalarTypesÚparsers)ÚXMLParseErrorÚset_socket_timeout)ÚIncompleteReadErrorr   ÚResponseStreamingError)Úfirst_non_none_responsec                   ó„   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Zdd„Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zd„ ZeZedfd„Zefd„Zd„ Zd„ Zd„ Zy)ÚStreamingBodyae  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   c                 ó.   — || _         || _        d| _        y )Nr   )Ú_raw_streamÚ_content_lengthÚ_amount_read)ÚselfÚ
raw_streamÚcontent_lengths      úh/var/www/acinvestment.org/public_html/aci/backend/venv/lib/python3.12/site-packages/botocore/response.pyÚ__init__zStreamingBody.__init__6   s   € Ø%ˆÔØ-ˆÔØˆÕó    c                  ó   — y ©N© ©r   s    r   Ú__del__zStreamingBody.__del__;   s   € ð 	r   c                 óx   — 	 t        | j                  |«       y# t        $ r t        j	                  d«       ‚ w xY w)z&Set the timeout seconds on the socket.zaCannot access the socket object of a streaming response. It's possible the interface has changed.N)r	   r   ÚAttributeErrorÚloggerÚ	exception)r   Útimeouts     r   r	   z StreamingBody.set_socket_timeoutA   s>   € ð	Ü˜t×/Ñ/°Õ9øÜò 	Ü×Ñð;ôð ð	ús   ‚ ™ 9c                 óV   — 	 | j                   j                  «       S # t        $ r Y yw xY w)NF)r   Úreadabler   r   s    r   r$   zStreamingBody.readableV   s.   € ð	Ø×#Ñ#×,Ñ,Ó.Ð.øÜò 	Ùð	ús   ‚ œ	(§(Nc                 ó,  — 	 | j                   j                  |«      }| xj                  t        |«      z  c_        |�|s|dkD  r| j                  «        |S # t        $ r}t        |j                  |¬«      ‚d}~wt
        $ r}t        |¬«      ‚d}~ww xY w)zhRead at most amt bytes from the stream.

        If the amt argument is omitted, read all data.
        ©Úendpoint_urlÚerrorN©r(   r   )
r   ÚreadÚURLLib3ReadTimeoutErrorr   ÚurlÚURLLib3ProtocolErrorr   r   ÚlenÚ_verify_content_length)r   ÚamtÚchunkÚes       r   r*   zStreamingBody.read\   sŒ   € ð
	2Ø×$Ñ$×)Ñ)¨#Ó.ˆEð 	×ÒœS ›ZÑ'ÕØˆ;™u¨¨qªð ×'Ñ'Ô)Øˆøô 'ò 	@ä"°·±¸QÔ?Ð?ûÜ#ò 	2Ü(¨qÔ1Ð1ûð	2ús#   ‚A Á	BÁA6Á6BÂBÂBc                 ó.  — 	 | j                   j                  |«      }| xj                  |z  c_        |dk(  rt        |«      dkD  r| j                  «        |S # t        $ r}t        |j                  |¬«      ‚d}~wt
        $ r}t        |¬«      ‚d}~ww xY w)zcRead bytes into a pre-allocated, writable bytes-like object b, and return the number of bytes read.r&   Nr)   r   )
r   Úreadintor+   r   r,   r-   r   r   r.   r/   )r   ÚbÚamount_readr2   s       r   r4   zStreamingBody.readintop   sŽ   € ð	2Ø×*Ñ*×3Ñ3°AÓ6ˆKð 	×Ò˜[Ñ(ÕØ˜!Ò¤ A£¨¢
ð ×'Ñ'Ô)ØÐøô 'ò 	@ä"°·±¸QÔ?Ð?ûÜ#ò 	2Ü(¨qÔ1Ð1ûð	2ús#   ‚A Á	BÁ A7Á7BÂBÂBc                 ó6   — | j                   j                  «       S r   )r   Ú	readlinesr   s    r   r8   zStreamingBody.readlines€   s   € Ø×Ñ×)Ñ)Ó+Ð+r   c                 ó8   — | j                  | j                  «      S )z:Return an iterator to yield 1k chunks from the raw stream.)Úiter_chunksÚ_DEFAULT_CHUNK_SIZEr   s    r   Ú__iter__zStreamingBody.__iter__ƒ   s   € à×Ñ × 8Ñ 8Ó9Ð9r   c                 óT   — | j                  | j                  «      }|r|S t        «       ‚)z-Return the next 1k chunk from the raw stream.)r*   r;   ÚStopIteration)r   Úcurrent_chunks     r   Ú__next__zStreamingBody.__next__‡   s'   € àŸ	™	 $×":Ñ":Ó;ˆÙØ Ð Ü‹oÐr   c                 ó   — | j                   S r   )r   r   s    r   Ú	__enter__zStreamingBody.__enter__Ž   s   € Ø×ÑÐr   c                 ó8   — | j                   j                  «        y r   ©r   Úclose)r   ÚtypeÚvalueÚ	tracebacks       r   Ú__exit__zStreamingBody.__exit__‘   s   € Ø×Ñ×ÑÕ r   Fc              #   óà   K  — d}| j                  |«      D ];  }||z   j                  d«      }|dd D ]  }|j                  |«      d   –— Œ |d   }Œ= |r|j                  |«      d   –— yy­w)zÓReturn 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   TNéÿÿÿÿr   )r:   Ú
splitlines)r   Ú
chunk_sizeÚkeependsÚpendingr1   ÚlinesÚlines          r   Ú
iter_lineszStreamingBody.iter_lines–   s�   è ø€ ð ˆØ×%Ñ% jÓ1ò 	 ˆEØ˜u‘_×0Ñ0°Ó6ˆEØ˜c˜r˜
ò 3�Ø—o‘o hÓ/°Ñ2Ó2ð3à˜B‘i‰Gð		 ñ
 Ø×$Ñ$ XÓ.¨qÑ1Ó1ð ùs   ‚A,A.c              #   óD   K  — 	 | j                  |«      }|dk(  ry|–— Œ­w)z\Return an iterator to yield chunks of chunk_size bytes from the raw
        stream.
        r   N)r*   )r   rM   r?   s      r   r:   zStreamingBody.iter_chunks¥   s/   è ø€ ð Ø ŸI™I jÓ1ˆMØ Ò#ØØÒð	 ùs   ‚ 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   r/   z$StreamingBody._verify_content_length¯   s\   € ð ×ÑÐ+°×0AÑ0AÄSØ× Ñ óF
ò 1
ô &Ø!×.Ñ.Ü" 4×#7Ñ#7Ó8ôð ð1
Ð+r   c                 ó6   — | j                   j                  «       S r   )r   Útellr   s    r   rY   zStreamingBody.tell»   s   € Ø×Ñ×$Ñ$Ó&Ð&r   c                 ó8   — | j                   j                  «        y)z*Close the underlying http response stream.NrD   r   s    r   rE   zStreamingBody.close¾   s   € à×Ñ×ÑÕ r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r;   r   r   r	   r$   r*   r4   r8   r<   r@   rB   rI   ÚnextrR   r:   r/   rY   rE   r   r   r   r   r   '   sp   „ ñ
ð Ðòò
òò*óò(ò ,ò:òò ò!ð €Dà$7À%ó 2ð &9ó  ò
ò'ó!r   r   c                 ó„  — | j                   j                  }|j                  |j                  dœ}|d   dk\  r|j                  |d<   nG| j
                  r,t        |j                  |d   j                  d«      «      |d<   n|j                  |d<   t        j                  |«      }||j                  || j                  «      fS )N)ÚheadersÚstatus_coderb   i,  Úbodyra   zcontent-length)Úservice_modelÚresolved_protocolra   rb   ÚcontentÚhas_streaming_outputr   ÚrawÚgetr   Úcreate_parserÚparseÚoutput_shape)Úoperation_modelÚhttp_responseÚprotocolÚresponse_dictÚparsers        r   Úget_responserr   Ã   sÄ   € Ø×,Ñ,×>Ñ>€Hà ×(Ñ(Ø$×0Ñ0ñ€Mð �]Ñ# sÒ*Ø -× 5Ñ 5ˆ�fÒØ	×	-Ò	-Ü -Ø×Ñ˜}¨YÑ7×;Ñ;Ð<LÓMó!
ˆ�fÒð !.× 5Ñ 5ˆ�fÑä×"Ñ" 8Ó,€FØ˜&Ÿ,™,Ø�×3Ñ3óð ð r   )ÚloggingÚior   Úurllib3.exceptionsr   r-   r   r+   Úbotocorer   r   Úbotocore.compatr   r	   Úbotocore.exceptionsr
   r   Úbotocore.hooksr   Ú	getLoggerr[   r    r   rr   r   r   r   ú<module>r{      sR   ðó Ý å DÝ J÷÷÷ñ õ
 3à	ˆ×	Ñ	˜8Ó	$€ôY!�Fô Y!óxr   