
    tni0                     
   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j        cxk    odk     nc Zej        dk     Zep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+j)        Z,ese,Z)dS dS # e-$ r Y dS 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<   dS )r   majorminorN)__name__
__module____qualname__int__annotations__     P/var/www/html/gpu-tools/venv/lib/python3.11/site-packages/aiohttp/http_writer.pyr   r   '   s"         JJJJJJJJr%   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'dS )0r   NlengthFchunked_eof	_compressprotocolloopon_chunk_senton_headers_sentreturnc                 Z    || _         || _        || _        || _        d | _        d| _        d S )NF)	_protocolr.   _on_chunk_sent_on_headers_sent_headers_buf_headers_written)selfr-   r.   r/   r0   s        r&   __init__zStreamWriter.__init__;   s8     "	.;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| _         d S )NT)r*   r=   s    r&   enable_chunkingzStreamWriter.enable_chunkingQ   s    r%   deflateencodingstrategyc                 2    t          ||          | _        d S )N)rB   rC   )r   r,   )r8   rB   rC   s      r&   enable_compressionzStreamWriter.enable_compressionT   s     (HMMMr%   chunkc                     t          |          }| xj        |z  c_        | xj        |z  c_        | j        j        }||                                rt          d          |                    |           d S )N!Cannot write to closing transport)lenbuffer_sizeoutput_sizer3   r<   
is_closingr   write)r8   rF   sizer<   s       r&   _writezStreamWriter._writeY   s}    5zzD D N,		 4 4 6 6,-PQQQr%   chunksc                 |   d}|D ]}|t          |          z  }| xj        |z  c_        | xj        |z  c_        | j        j        }||                                rt          d          t          s|t          k     r*|	                    d
                    |                     d S |                    |           d S )Nr   rH   r%   )rI   rJ   rK   r3   r<   rL   r   SKIP_WRITELINESMIN_PAYLOAD_FOR_WRITELINESrM   join
writelines)r8   rP   rN   rF   r<   s        r&   _writelineszStreamWriter._writelinesb   s     	 	ECJJDDD D N,		 4 4 6 6,-PQQQ 	)d%???OOCHHV,,-----  (((((r%   zmemoryview[int]zmemoryview[bytes]c                     t          |          dd                    d          }|                     ||df           dS )z+Write a chunk with proper chunked encoding.x
ascii   
N)rI   encoderV   )r8   rF   chunk_len_pres      r&   _write_chunked_payloadz#StreamWriter._write_chunked_payloadp   sJ     u::----44W==-899999r%   is_eofc                    d| _         | j        }d| _        t          r|J | j        s1|r|                     ||f           n|                     |           dS |r^t          |          dd                    d          }|r|                     |||df           dS |                     |||df           dS |r|                     |df           dS |                     |           dS )	zASend buffered headers with payload, coalescing into single write.TNrX   rY   rZ      
0

r[      0

)r7   r6   r   r*   rV   rO   rI   r\   )r8   rF   r_   headers_bufr]   s        r&   _send_headers_with_payloadz'StreamWriter._send_headers_with_payloadw   s5    !%'  	+ ***| 	 )  +u!56666K(((F  		%"5zz111188AAM O  +}eEU!VWWWWW  +}eW!MNNNNN 	%k<899999KK$$$$$r%   Ti   )drainLIMITre   rf   c                6  K   | j         |                      |           d{V  t          |t                    r-|j        t	          |          k    r|                    d          }| j        $| j                            |           d{V }|sdS | j        Dt	          |          }| j        |k    r| j        |z
  | _        n|d| j                 }d| _        |sdS | j	        rM| j
        sF|                     |d           |r,| j        |k    r!d| _        |                                  d{V  dS |rb| j        r|                     |           n|                     |           |r0| j        |k    r'd| _        |                                  d{V  dS dS dS dS )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nbytesrI   castr,   compressr)   r6   r7   rd   rJ   re   r*   r^   rO   )r8   rF   re   rf   	chunk_lens        r&   rM   zStreamWriter.write   s      *%%e,,,,,,,,,eZ(( 	(|s5zz))

3>%.11%88888888E ;"E

I{i''"kI5mm, F  	T%: 	++E5999 #)E11#$ jjll"""""""F 	#| #++E2222E""" #)E11#$ jjll"""""""""	# 	## #11r%   status_lineheadersr'   c                    K   | j         |                      |           d{V  t          ||          }d| _        || _        dS )zWrite headers to the stream.NF)r5   _serialize_headersr7   r6   )r8   ro   rp   bufs       r&   write_headerszStreamWriter.write_headers   s\        ,''000000000 g66 %r%   c                     | j         r| j        rdS d| _        | j         }d| _         t          r|J |                     |           dS )z3Force sending buffered headers if not already sent.NT)r6   r7   r   rO   r8   rc   s     r&   send_headerszStreamWriter.send_headers   s`      	D$9 	F $'  	+***K     r%   c                 2   | j         rdS | j        r\| j        sUd| _        | j        }d| _        t          r|J | j        r|                     |df           n9|                     |           n#| j        r| j        r|                     d           d| _         dS )z&Indicate that the message is complete.NTrb   )r+   r6   r7   r   r*   rV   rO   rv   s     r&   set_eofzStreamWriter.set_eof   s    9 	F  	&T%: 	&$(D!+K $D /"... | )  +|!<====K((((\ 	&d3 	&KK%%%			r%   r%   c                   K   | j         rd S |r"| j        |                     |           d {V  | j        rg }d}|rF| j                            |           d {V x}r$t	          |          }|                    |           | j                                        }|t	          |          z  }|                    |           |sJ | j        r| j        sd| _        | j        }d | _        | j	        r6|dd
                    d          }|                     ||g|dR            n|                     |g|R            |                                  d {V  d| _         d S | j	        r5|dd
                    d          }|                     |g|dR            nDt	          |          dk    r|                     |           n|                     |d                    |                                  d {V  d| _         d S | j        r@| j        s9|                     |d           |                                  d {V  d| _         d S | j	        rw|r=|                     t	          |          dd
                    d          |df           n|                     d           |                                  d {V  d| _         d S |r/|                     |           |                                  d {V  d| _         d S )	Nr   TrX   rY   rZ   ra   r   rb   )r+   r4   r,   rm   rI   appendflushr6   r7   r*   r\   rV   re   rO   rd   )r8   rF   rP   
chunks_lencompressed_chunkflush_chunkrc   r]   s           r&   	write_eofzStreamWriter.write_eof  s     9 	F 	-T(4%%e,,,,,,,,, > )	"$FJ 0DN4K4KE4R4R.R.R.R.R.R.RR* 0 !122
.///...00K#k***JMM+&&&   )> (,%"/$(!< ='1$9$9$9$9$@$@$I$IM$$$mOfO>NOO   
 $$k%;F%;%;<<<jjll""""""" 	 | '#- 5 5 5 5 < <W E E  -!K&!K:J!K!KLLLLVq  ((((F1I&&&**,,DIF  	T%: 	++E4888**,,DIF < 
	 *  E

****11'::ECST    L)))**,,DIF 	KK**,,			r%   c                 p   K   | j         }|j        #|j        r|                                 d{V  dS dS dS )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&   re   zStreamWriter.drainU  sX       >)h.>)((*********** *)))r%   )NN)r1   N)rA   N)r%   )(r   r    r!   r)   r
   r"   r#   r*   boolr+   r,   r   r   asyncioAbstractEventLoop_T_OnChunkSent_T_OnHeadersSentr9   property	Transportr<   r-   r@   strrE   r   bytes	bytearrayrj   rO   r   rV   r^   rd   rM   rt   rw   ry   r   re   r$   r%   r&   r   r   4   s         FHSM   GTD$*.Ix'... )-,0, ,, ', &	,
 *, 
, , , , (8G$56 ( ( ( X( ,    X    DHN NN3;C=N	N N N N
E%J">? D    )(5/ )d ) ) ) ):5)->@SST:	: : : :"%UI'8:MMN"% "% 
	"% "% "% "%P 5# 5# 5#UIz125# 	5#
 5# 
5# 5# 5# 5#n	 	 );	 		  	  	  	 ! ! ! !   6L LU LT L L L L\
+ 
+ 
+ 
+ 
+ 
+r%   r   stringr1   c                 4    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  s1    v~~1
 
 	
 Mr%   ro   rp   c                     d |                                 D             }| dz   d                    |          z   dz   }|                    d          S )Nc              3   `   K   | ])\  }}t          |          d z   t          |          z   V  *dS )z: N)r   ).0kvs      r&   	<genexpr>z(_py_serialize_headers.<locals>.<genexpr>l  s<      XX1<??T)LOO;XXXXXXr%   rY   z

zutf-8)itemsrT   r\   )ro   rp   headers_genlines       r&   _py_serialize_headersr   k  sO    XXX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__rS   version_infoIS_PY313_BEFORE_313_2IS_PY_BEFORE_312_9rR   r   r   r   r   r   r   r   r   r   r   rr   aiohttp._http_writer_http_writer_c_serialize_headersImportErrorr$   r%   r&   <module>r      s   ( (  




 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 " ! ! ! ! ! % % % % % % ' ' ' ' ' ' 9 9 9 9 9 9 - - - - - - " " " " " "
K " "c&6CCCCCCCC %
2 '=+=    *   
 Aq!!Aq!! (E7IdO#;<=H&8%99T?%JKL k+ k+ k+ k+ k+' k+ k+ k+\	      s  5G  E         + 	//////': 212 2 	 	 	DD	s   $C9 9DD