
    ;3h0                        d Z ddlZddlZddlmZmZmZmZmZm	Z	m
Z
mZmZ ddlmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ dZdZdej6                  cxk  xr dk  nc Zej6                  dk  Zexs eZ G d de
      Z edd      Z  edd      Z!eee"ged   f      Z#eedged   f      Z$ G d de      Z%de&de&fdZ'de&ddde"fdZ(e(Z)	 ddl*m+Z+ e+jR                  Z,ese,Z)yy# e-$ r Y yw xY w)z"Http related parsers and protocol.    N)	TYPE_CHECKINGAny	AwaitableCallableIterableList
NamedTupleOptionalUnion)CIMultiDict   )AbstractStreamWriter)BaseProtocol)ClientConnectionResetError)ZLibCompressor)NO_EXTENSIONS)StreamWriterHttpVersionHttpVersion10HttpVersion11i   )      r   )r   r      )r      	   c                   "    e Zd ZU eed<   eed<   y)r   majorminorN)__name__
__module____qualname__int__annotations__     S/var/www/html/audio-gradio/venv/lib/python3.12/site-packages/aiohttp/http_writer.pyr   r   '   s    JJr%   r   CIMultiDict[str]c                      e Zd ZU dZee   ed<   dZeed<   dZ	eed<   dZ
ee   ed<   	 	 d*dedej                  d	ed
eddf
dZedeej&                     fd       Zedefd       Zd+dZ	 d,dedee   ddfdZdeeeef   ddfdZdee   ddfdZdeeeddf   ddfdZ deeeddf   deddfdZ!ddddeeeef   ded eddfd!Z"d"ed#d$ddfd%Z#d+d&Z$d+d'Z%d-deddfd(Z&d+d)Z'y).r   NlengthFchunked_eof	_compressprotocolloopon_chunk_senton_headers_sentreturnc                 X    || _         || _        || _        || _        d | _        d| _        y )NF)	_protocolr.   _on_chunk_sent_on_headers_sent_headers_buf_headers_written)selfr-   r.   r/   r0   s        r&   __init__zStreamWriter.__init__;   s2     "	.;2A-1&+r%   c                 .    | j                   j                  S N)r3   	transportr8   s    r&   r<   zStreamWriter.transportI   s    ~~'''r%   c                     | j                   S r;   )r3   r=   s    r&   r-   zStreamWriter.protocolM   s    ~~r%   c                     d| _         y )NT)r*   r=   s    r&   enable_chunkingzStreamWriter.enable_chunkingQ   s	    r%   encodingstrategyc                 (    t        ||      | _        y )N)rA   rB   )r   r,   )r8   rA   rB   s      r&   enable_compressionzStreamWriter.enable_compressionT   s     (HMr%   chunkc                     t        |      }| xj                  |z  c_        | xj                  |z  c_        | j                  j                  }||j                         rt        d      |j                  |       y )N!Cannot write to closing transport)lenbuffer_sizeoutput_sizer3   r<   
is_closingr   write)r8   rE   sizer<   s       r&   _writezStreamWriter._writeY   se    5zD D NN,,		 4 4 6,-PQQr%   chunksc                 n   d}|D ]  }|t        |      z  } | xj                  |z  c_        | xj                  |z  c_        | j                  j                  }||j                         rt        d      t        s	|t        k  r!|j                  dj                  |             y |j                  |       y )Nr   rG   r%   )rH   rI   rJ   r3   r<   rK   r   SKIP_WRITELINESMIN_PAYLOAD_FOR_WRITELINESrL   join
writelines)r8   rO   rM   rE   r<   s        r&   _writelineszStreamWriter._writelinesb   s     	ECJD	D D NN,,		 4 4 6,-PQQd%??OOCHHV,-  (r%   zmemoryview[int]zmemoryview[bytes]c                 h    t        |      ddj                  d      }| j                  ||df       y)z+Write a chunk with proper chunked encoding.x
ascii   
N)rH   encoderU   )r8   rE   chunk_len_pres      r&   _write_chunked_payloadz#StreamWriter._write_chunked_payloadp   s6     u:a.-44W=-89r%   is_eofc                    d| _         | j                  }d| _        t        r|J | j                  s(|r| j	                  ||f       y| j                  |       y|rLt        |      ddj                  d      }|r| j	                  |||df       y| j	                  |||df       y|r| j	                  |df       y| j                  |       y)	zASend buffered headers with payload, coalescing into single write.TNrW   rX   rY      
0

rZ      0

)r7   r6   r   r*   rU   rN   rH   r[   )r8   rE   r^   headers_bufr\   s        r&   _send_headers_with_payloadz'StreamWriter._send_headers_with_payloadw   s     !%''  ***||  +u!56  K( "5z!nD188AM  +}eEU!VW  +}eW!MNk<89KK$r%   Ti   )drainLIMITrd   re   c                f  K   | j                   | j                  |       d{    t        |t              r)|j                  t	        |      k7  r|j                  d      }| j                  &| j                  j                  |       d{   }|sy| j                  Ht	        |      }| j                  |k\  r| j                  |z
  | _        n|d| j                   }d| _        |sy| j                  rO| j                  sC| j                  |d       |r.| j                  |kD  rd| _        | j                          d{    y|rb| j                  r| j                  |       n| j!                  |       |r0| j                  |kD  r d| _        | j                          d{    yyyy7 7 7 p7 w)z
        Writes chunk of data to a stream.

        write_eof() indicates end of stream.
        writer can't be used after write_eof() method being called.
        write() return drain future.
        Ncr   F)r4   
isinstance
memoryviewnbytesrH   castr,   compressr)   r6   r7   rc   rI   rd   r*   r]   rN   )r8   rE   rd   re   	chunk_lens        r&   rL   zStreamWriter.write   s}     *%%e,,,eZ(||s5z)

3>>%..11%88E;;"E
I{{i'"kkI5m, T%:%:++E59))E1#$ jjl""||++E2E"))E1#$ jjl"" 2u = - 9& # #sH   !F1F'A'F1F*B0F1<F-=A!F1F/	F1*F1-F1/F1status_lineheadersr'   c                    K   | j                   | j                  |       d{    t        ||      }d| _        || _        y7 w)zWrite headers to the stream.NF)r5   _serialize_headersr7   r6   )r8   rn   ro   bufs       r&   write_headerszStreamWriter.write_headers   sI        ,''000 g6 %	 1s   !AA Ac                     | j                   r| j                  ryd| _        | j                   }d| _         t        r|J | j                  |       y)z3Force sending buffered headers if not already sent.NT)r6   r7   r   rN   r8   rb   s     r&   send_headerszStreamWriter.send_headers   sL      D$9$9 $'' ***K r%   c                 v   | j                   ry| j                  rp| j                  sdd| _        | j                  }d| _        t        r|J | j                  r| j                  |df       d| _         y| j                  |       d| _         y| j                  r| j                  r| j                  d       d| _         y)z&Indicate that the message is complete.NTra   )r+   r6   r7   r   r*   rU   rN   ru   s     r&   set_eofzStreamWriter.set_eof   s    99 T%:%:$(D!++K $D"... ||  +|!<= 	 K(
 		 \\d33KK%	r%   c                   K   | j                   ry |r%| j                  | j                  |       d {    | j                  rg }d}|rA| j                  j                  |       d {   x}rt	        |      }|j                  |       | j                  j                         }|t	        |      z  }|j                  |       |sJ | j                  r| j                  sd| _        | j                  }d | _        | j                  r.|ddj                  d      }| j                  ||g|d       n| j                  |g|       | j                          d {    d| _         y | j                  r-|ddj                  d      }| j                  |g|d       n4t	        |      dkD  r| j                  |       n| j                  |d          | j                          d {    d| _         y | j                  r>| j                  s2| j                  |d       | j                          d {    d| _         y | j                  rd|r1| j                  t	        |      ddj                  d      |df       n| j                  d       | j                          d {    d| _         y |r)| j                  |       | j                          d {    d| _         y 7 7 ~7 7 7 7 M7 w)	Nr   TrW   rX   rY   r`   r   ra   )r+   r4   r,   rl   rH   appendflushr6   r7   r*   r[   rU   rd   rN   rc   )r8   rE   rO   
chunks_lencompressed_chunkflush_chunkrb   r\   s           r&   	write_eofzStreamWriter.write_eof  s    99T((4%%e,,, >>"$FJDNN4K4KE4R.RR*R !12
./....0K#k**JMM+&:   )>)>(,%"//$(!<<'1!nD$9$@$@$IM$$$mOfO>NO
 $$k%;F%;<jjl"" 	 ||#-a. 5 < <W E  -!K&!K:J!KLVq  (F1I&**,DI T%:%:++E48**,DI <<  E
1~T*11':ECST L)**,DIKK**,	O - /S0 #    s   0K5K#5K5(K&)C3K5K)BK5)K,*A	K53K/4A/K5#K1$2K5K3K5&K5)K5,K5/K51K53K5c                    K   | j                   }|j                  &|j                  r|j                          d{    yyy7 w)zFlush the write buffer.

        The intended use is to write

          await w.write(data)
          await w.drain()
        N)r3   r<   _paused_drain_helper)r8   r-   s     r&   rd   zStreamWriter.drainU  sB      >>)h.>.>((*** /?)*s   8AAA)NN)r1   N)deflateN)r%   )(r   r    r!   r)   r
   r"   r#   r*   boolr+   r,   r   r   asyncioAbstractEventLoop_T_OnChunkSent_T_OnHeadersSentr9   property	Transportr<   r-   r@   strrD   r   bytes	bytearrayri   rN   r   rU   r]   rc   rL   rs   rv   rx   r   rd   r$   r%   r&   r   r   4   s    FHSM GTD$*.Ix'. )-,0,, '', &	,
 *, 
, (8G$5$56 ( ( ,   DHNN3;C=N	N
E%J">? D )(5/ )d ):5)->@SST:	:"%UI'8:MMN"% "% 
	"%P 5#UIz125# 	5#
 5# 
5#n	 	 );	 		 !6LU LT L\
+r%   r   stringr1   c                 ,    d| v sd| v rt        d      | S )N
zRNewline or carriage return detected in headers. Potential header injection attack.)
ValueError)r   s    r&   _safe_headerr   b  s(    v~1
 	
 Mr%   rn   ro   c                     d |j                         D        }| dz   dj                  |      z   dz   }|j                  d      S )Nc              3   V   K   | ]!  \  }}t        |      d z   t        |      z    # yw)z: N)r   ).0kvs      r&   	<genexpr>z(_py_serialize_headers.<locals>.<genexpr>l  s&     X1<?T)LO;Xs   ')rX   z

zutf-8)itemsrS   r[   )rn   ro   headers_genlines       r&   _py_serialize_headersr   k  s>    XXK&++k"::ZGD;;wr%   ).__doc__r   systypingr   r   r   r   r   r   r	   r
   r   	multidictr   abcr   base_protocolr   client_exceptionsr   compression_utilsr   helpersr   __all__rR   version_infoIS_PY313_BEFORE_313_2IS_PY_BEFORE_312_9rQ   r   r   r   r   r   r   r   r   r   r   rq   aiohttp._http_writer_http_writer_c_serialize_headersImportErrorr$   r%   r&   <module>r      sI   (  

 
 
 " % ' 9 - "
K " "c&6&6CC %%
2 '=+=* 
 Aq!Aq! (E7IdO#;<=H&8%99T?%JKL k+' k+\	   s  5G  E   + 	/'::1  		s   C) )C10C1