
    h                        d Z ddl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 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)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__     U/var/www/html/prod/cognitive/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ej        fded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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eddfd$Z%d'd%Z&dS ))r   NlengthFchunked_eof	_compressprotocolloopon_chunk_senton_headers_sentreturnc                 >    || _         || _        || _        || _        d S N)	_protocolr-   _on_chunk_sent_on_headers_sent)selfr,   r-   r.   r/   s        r%   __init__zStreamWriter.__init__;   s(     "	.;2Ar$   c                     | j         j        S r2   )r3   	transportr6   s    r%   r9   zStreamWriter.transportG   s    ~''r$   c                     | j         S r2   )r3   r:   s    r%   r,   zStreamWriter.protocolK   s
    ~r$   c                     d| _         d S )NT)r)   r:   s    r%   enable_chunkingzStreamWriter.enable_chunkingO   s    r$   deflateencodingstrategyc                 2    t          ||          | _        d S )N)r?   r@   )r   r+   )r6   r?   r@   s      r%   enable_compressionzStreamWriter.enable_compressionR   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   r9   
is_closingr   write)r6   rC   sizer9   s       r%   _writezStreamWriter._writeW   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   rE   r$   )rF   rG   rH   r3   r9   rI   r   SKIP_WRITELINESMIN_PAYLOAD_FOR_WRITELINESrJ   join
writelines)r6   rM   rK   rC   r9   s        r%   _writelineszStreamWriter._writelines`   s     	 	ECJJDDD D N,		 4 4 6 6,-PQQQ 	)d%???OOCHHV,,-----  (((((r$   Ti   )drainLIMITrT   rU   c                  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 |r| j	        r=| 
                    t	          |          dd                    d          |df           n|                     |           | j        |k    r'|r'd| _        |                                  d{V  dS dS dS dS )zWrites 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   x
asciis   
)r4   
isinstance
memoryviewnbytesrF   castr+   compressr(   r)   rS   encoderL   rG   rT   )r6   rC   rT   rU   	chunk_lens        r%   rJ   zStreamWriter.writen   s      *%%e,,,,,,,,,eZ(( 	(|s5zz))

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

I{i''"kI5mm, F 
	#| #  E

****11'::E7K    E"""%''E'#$ jjll"""""""""
	# 
	# ('''r$   status_lineheadersr&   c                    K   | j         |                      |           d{V  t          ||          }|                     |           dS )z*Write request/response status and headers.N)r5   _serialize_headersrL   )r6   rb   rc   bufs       r%   write_headerszStreamWriter.write_headers   s`        ,''000000000 !g66Cr$   c                     d| _         dS )z&Indicate that the message is complete.TN)r*   r:   s    r%   set_eofzStreamWriter.set_eof   s    			r$   r$   c                   K   | j         rd S |r"| j        |                     |           d {V  | j        rg }d}|rF| j                            |           d {V x}r$t	          |          }|                    |           | j                                        }|t	          |          z  }|                    |           |sJ | j        r5|dd                    d          }| 	                    |g|dR            nt	          |          dk    r| 	                    |           n| 
                    |d                    nu| j        rW|r?t	          |          dd                    d          }| 	                    ||df           n-| 
                    d           n|r| 
                    |           |                                  d {V  d| _         d S )	Nr   rX   rY   rZ   s   
0

r   s   0

T)r*   r4   r+   r_   rF   appendflushr)   r`   rS   rL   rT   )r6   rC   rM   
chunks_lencompressed_chunkflush_chunkchunk_len_pres          r%   	write_eofzStreamWriter.write_eof   s9     9 	F 	-T(4%%e,,,,,,,,,> 	"$FJ 0DN4K4KE4R4R.R.R.R.R.R.RR* 0 !122
.///...00K#k***JMM+&&&:| '#- 5 5 5 5 < <W E E  -!K&!K:J!K!KLLLLVq  ((((F1I&&&&\ 	 *#&u:: 5 5 5 5 < <W E E  -8H!IJJJJL)))) 	KKjjll			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   r9   _paused_drain_helper)r6   r,   s     r%   rT   zStreamWriter.drain   sX       >)h.>)((*********** *)))r$   )NN)r0   N)r$   )'r   r   r    r(   r	   r!   r"   r)   boolr*   r+   r   r   asyncioAbstractEventLoop_T_OnChunkSent_T_OnHeadersSentr7   property	Transportr9   r,   r=   zlibZ_DEFAULT_STRATEGYstrrB   r
   bytes	bytearrayr\   rL   r   rS   rJ   rg   ri   rq   rT   r#   r$   r%   r   r   4   s         FHSM   GTD$*.Ix'... )-,0
B 
B
B '
B &	
B
 *
B 

B 
B 
B 
B (8G$56 ( ( ( X( ,    X    (9PN NN36N	N N N N
E%J">? D    )(5/ )d ) ) ) )$ .# .# .#UIz12.# 	.#
 .# 
.# .# .# .#`		);			 	 	 	   % %U %T % % % %N
+ 
+ 
+ 
+ 
+ 
+r$   r   stringr0   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      s1    v~~1
 
 	
 Mr$   rb   rc   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>   s<      XX1<??T)LOO;XXXXXXr$   rY   z

zutf-8)itemsrQ   r`   )rb   rc   headers_genlines       r%   _py_serialize_headersr      sO    XXXXXK&++k":"::ZGD;;wr$   ).__doc__rv   sysr|   typingr   r   r   r   r   r   r	   r
   	multidictr   abcr   base_protocolr   client_exceptionsr   compression_utilsr   helpersr   __all__rP   version_infoIS_PY313_BEFORE_313_2IS_PY_BEFORE_312_9rO   r   r   r   r   rx   ry   r   r~   r   r   re   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 j+ j+ j+ j+ j+' j+ j+ j+Z      s  5G  E         + 	//////': 212 2 	 	 	DD	s   &C; ;DD