
    ho                        d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZ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mZmZmZmZmZmZ d dlmZmZ ddlmZmZ dd	lm Z  dd
l!m"Z" ddl#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z- ddlm.Z.m/Z/m0Z0 ddlm1Z1 ddl2m3Z3m4Z4 d eD             Z5dZ6dZ7erddl8m9Z9 ee:ef         Z;nej        j        Z; G d dej<                  Z=d e=D             Z> G d de;e'          Z? G d de?          Z@e+fddddddejA        ddedee:         deeB         d eCd!ee:         d"ee4         d#e:d$e3d%e@fd&ZDdS )'    N)Executor)
HTTPStatus)SimpleCookie)TYPE_CHECKINGAnyDictIteratorMutableMappingOptionalUnioncast)CIMultiDictistr   )hdrspayload)AbstractStreamWriter)ZLibCompressor)
ETAG_ANYQUOTED_ETAG_REETagHeadersMixinmust_be_empty_bodyparse_http_daterfc822_formatted_timesentinelshould_remove_content_lengthvalidate_etag_value)SERVER_SOFTWAREHttpVersion10HttpVersion11)Payload)JSONEncoderLooseHeadersc                 (    i | ]}|j         |j        S  )valuephrase).0http_statuss     V/var/www/html/prod/cognitive/venv/lib/python3.11/site-packages/aiohttp/web_response.py
<dictcomp>r,   -   s     VVVK+#[%7VVV    i   )ContentCodingStreamResponseResponsejson_response)BaseRequestc                       e Zd ZdZdZdZdS )r.   deflategzipidentityN)__name__
__module____qualname__r4   r5   r6   r&   r-   r+   r.   r.   <   s        
 GDHHHr-   r.   c                     i | ]
}|j         |S r&   r'   )r)   codings     r+   r,   r,   F   s    DDDF6<DDDr-   c                       e Zd ZU edeeef         ed<   dZdZ	dZ
ee         ed<   dZeed<   dZeed<   ej        Zeed<   dZee         ed	<   dZed
         ed<   dZee         ed<   dZeed<   dZee         ed<   dZdZee         ed<   ddddddedee         dee         deee                  ddf
dZ e!defd            Z"e!d`d            Z#e!defd            Z$e!defd            Z%e!defd            Z&e!defd            Z'	 dadedee         ddfd Z(dedee         ddfd!Z)e!dee         fd"            Z*dbd#Z+e!defd$            Z,e!defd%            Z-dad&ee         ddfd'Z.dej        fd(eeeef                  d)eddfd*Z/e!dcd,            Z0e!defd-            Z1dddd.ddddd/d0ed1ed2ee         d3ee         d4eeeef                  d5ed6ee         d7ee         d8ee         d9ee         ddfd:Z2dd.dddd;d0ed3ee         d5ed6ee         d7ee         d9ee         ddfd<Z3e!dee         f fd=            Z4e4j5        d1ee         ddfd>            Z4e!def fd?            Z6e6j5        d1eddfd@            Z6e!dee         f fdA            Z7e7j5        d1ee         ddfdB            Z7e!dee8j8                 fdC            Z9e9j5        d1eeee:e8j8        ef                  ddfdD            Z9e!dee;         fdE            Z<e<j5        d1eee;ef                  ddfdF            Z<e=j>        fdGe?ddfdHZ@dIeddfdJZAdddLZBdKd
dee         fdMZCdKd
defdNZDdbdOZEdbdPZFdQeeeeGf         ddfdRZHdbdSZIdedQeddfdUZJdefdVZKdWedeLfdXZMdWed1eLddfdYZNdWeddfdZZOdefd[ZPdeQe         fd\ZRdefd]ZSd^eTdefd_ZU xZVS )fr/   N_bodyT_keep_aliveF_chunked_compression_compression_strategy_compression_forcer2   _req_payload_writer	_eof_sent_must_be_empty_bodyr   _cookies   )statusreasonheaders_real_headersrJ   rK   rL   rM   returnc                    i | _         ||| _        n*|t          |          | _        nt                      | _        |                     ||           dS )a;  Initialize a new stream response object.

        _real_headers is an internal parameter used to pass a pre-populated
        headers object. It is used by the `Response` class to avoid copying
        the headers when creating a new response object. It is not intended
        to be used by external code.
        N)_state_headersr   _set_status)selfrJ   rK   rL   rM   s        r+   __init__zStreamResponse.__init__^   sX     ')$)DMM .9'.B.BDMM'MMDM(((((r-   c                 "    | j         p| j        d uS N)rF   rE   rS   s    r+   preparedzStreamResponse.preparedx   s    ~A!5T!AAr-   Optional[asyncio.Task[None]]c                 ,    | j         r| j         j        S d S rV   )rD   taskrW   s    r+   r[   zStreamResponse.task|   s    9 	9>!4r-   c                     | j         S rV   )_statusrW   s    r+   rJ   zStreamResponse.status   
    |r-   c                     | j         S rV   )r@   rW   s    r+   chunkedzStreamResponse.chunked   
    }r-   c                     | j         S rV   )rA   rW   s    r+   compressionzStreamResponse.compression         r-   c                     | j         S rV   )_reasonrW   s    r+   rK   zStreamResponse.reason   r^   r-   c                 T    | j         r
J d            |                     ||           d S )NzGCannot change the response status code after the headers have been sent)rX   rR   rS   rJ   rK   s      r+   
set_statuszStreamResponse.set_status   sC     	U 	UT	U 	U(((((r-   c                     t          |          | _        |!t                              | j        d          }nd|v rt	          d          || _        d S )N 
zReason cannot contain \n)intr]   REASON_PHRASESget
ValueErrorrf   rh   s      r+   rR   zStreamResponse._set_status   sP    6{{>#''b99FFV^^8999r-   c                     | j         S rV   r?   rW   s    r+   
keep_alivezStreamResponse.keep_alive   s    r-   c                     d| _         d S )NFrr   rW   s    r+   force_closezStreamResponse.force_close   s     r-   c                     | j         S rV   )_body_lengthrW   s    r+   body_lengthzStreamResponse.body_length   rd   r-   c                 `    t          j        dt                     | j        sJ | j        j        S )Nzoutput_length is deprecated)warningswarnDeprecationWarningrE   buffer_sizerW   s    r+   output_lengthzStreamResponse.output_length   s1    35GHHH#####//r-   
chunk_sizec                     t           j        | j        v rt          d          |t	          j        dt                     d| _        dS )z,Enables automatic chunked transfer encoding.z>You can't enable chunked encoding when a content length is setNzChunk size is deprecated #1615T)r   CONTENT_LENGTHrQ   RuntimeErrorrz   r{   r|   r@   )rS   r   s     r+   enable_chunked_encodingz&StreamResponse.enable_chunked_encoding   sN    $-//P   !M:<NOOOr-   forcestrategyc                    t          |t                    r5|rt          j        nt          j        }t          j        dt                     n!|t          |t                    s
J d            d| _        || _	        || _
        dS )z&Enables response compression encoding.z+Using boolean for force is deprecated #3318Nz1force should one of None, bool or ContentEncodingT)
isinstanceboolr.   r4   r6   rz   r{   r|   rA   rC   rB   )rS   r   r   s      r+   enable_compressionz!StreamResponse.enable_compression   s     eT"" 	C-2NM))8NEM=?Q    }  C CBC C  !"'%-"""r-   CIMultiDict[str]c                     | j         S rV   )rQ   rW   s    r+   rL   zStreamResponse.headers   ra   r-   c                 D    | j         t                      | _         | j         S rV   )rH   r   rW   s    r+   cookieszStreamResponse.cookies   s    = (NNDM}r-   /)expiresdomainmax_agepathsecurehttponlyversionsamesitenamer'   r   r   r   r   r   r   r   r   c                <   | j         t                      | _         || j         |<   | j         |         }|||d<   n|                    d          dk    r|d= |||d<   |t          |          |d<   nd|v r|d= ||d<   |||d<   |||d<   |	|	|d	<   |
|
|d
<   dS dS )zSet or update response cookie.

        Sets new cookie or updates existent with new value.
        Also updates only those params which are not None.
        Nr   Thu, 01 Jan 1970 00:00:00 GMTr   zmax-ager   r   r   r   r   )rH   r   ro   str)rS   r   r'   r   r   r   r   r   r   r   r   cs               r+   
set_cookiezStreamResponse.set_cookie   s    & = (NNDM#dM$"AiLLUU9!@@@) AhKw<<AiLL!^^)&	 AhK$AjM"AiL$AjMMM  r-   )r   r   r   r   r   c                    | j         | j                             |d           |                     |ddd|||||	  	         dS )zBDelete cookie.

        Creates new empty expired cookie.
        Nrk   r   r   )r   r   r   r   r   r   r   )rH   popr   )rS   r   r   r   r   r   r   s          r+   
del_cookiezStreamResponse.del_cookie  sd     =$MdD)))3 	 
	
 
	
 
	
 
	
 
	
r-   c                 *    t                      j        S rV   )supercontent_lengthrS   	__class__s    r+   r   zStreamResponse.content_length-  s     ww%%r-   c                     |Ht          |          }| j        rt          d          t          |          | j        t
          j        <   d S | j                            t
          j        d            d S )Nz<You can't set content length when chunked encoding is enable)rm   r@   r   r   rQ   r   r   r   rS   r'   s     r+   r   zStreamResponse.content_length2  sp    JJE} "R   25UDM$-...Md1488888r-   c                 *    t                      j        S rV   )r   content_typer   s    r+   r   zStreamResponse.content_type>  s     ww##r-   c                 d    | j          t          |          | _        |                                  d S rV   )r   r   _content_type_generate_content_type_headerr   s     r+   r   zStreamResponse.content_typeC  s1     ZZ**,,,,,r-   c                 *    t                      j        S rV   )r   charsetr   s    r+   r   zStreamResponse.charsetI  s     wwr-   c                    | j         }|dk    rt          d          | j        J || j                            dd            n)t	          |                                          | j        d<   |                                  d S )Napplication/octet-streamzYSetting charset for application/octet-stream doesn't make sense, setup content_type firstr   )r   r   _content_dictr   r   lowerr   )rS   r'   ctypes      r+   r   zStreamResponse.charsetN  s    !...?   !---=""9d3333,/JJ,<,<,>,>Dy)**,,,,,r-   c                 d    t          | j                            t          j                            S )zuThe value of Last-Modified HTTP header, or None.

        This header is represented as a `datetime` object.
        )r   rQ   ro   r   LAST_MODIFIEDrW   s    r+   last_modifiedzStreamResponse.last_modified]  s%     t}001CDDEEEr-   c                 *   |'| j                             t          j        d            d S t	          |t
          t          f          rMt          j        dt          j	        t          j        |                              | j         t          j        <   d S t	          |t          j                  r;t          j        d|                                          | j         t          j        <   d S t	          |t                    r|| j         t          j        <   d S d S )Nz%a, %d %b %Y %H:%M:%S GMT)rQ   r   r   r   r   rm   floattimestrftimegmtimemathceildatetimeutctimetupler   r   s     r+   r   zStreamResponse.last_modifiede  s     =Md0$77777U|,, 		604+T[59I9I-J-J1 1DM$,--- x011 	604+U-?-?-A-A1 1DM$,--- s## 	605DM$,---	6 	6r-   c                 0   | j                             t          j                  }|sd S |t          k    rt          t                    S t          j        |          }|sd S |                    dd          \  }}t          t          |          |          S )Nr;   r      )is_weakr'   )
rQ   ro   r   ETAGr   r   r   	fullmatchgroupr   )rS   quoted_valuematchr   r'   s        r+   etagzStreamResponse.etagv  s    }((33 	(4X%%h''''(66 	4Q**MM
 
 
 	
r-   c                    |'| j                             t          j        d            d S t	          |t
                    r|t          k    s%t	          |t                    r+|j        t          k    rt          | j         t          j        <   d S t	          |t
                    r)t          |           d| d| j         t          j        <   d S t	          |t                    rat	          |j        t
                    rGt          |j                   |j
        rd|j         dn
d|j         d}|| j         t          j        <   d S t          dt          |           d          )N"zW/"zUnsupported etag type: z . etag must be str, ETag or None)rQ   r   r   r   r   r   r   r   r'   r   r   rp   type)rS   r'   	hdr_values      r+   r   zStreamResponse.etag  sV   =Mdi.....$$ 	():):ud## *;(-x(?(?'/DM$)$$$s## 	&&&'35|||DM$)$$$t$$ 	EK)E)E 	,,,05U,ek,,,,CUu{CUCUCUI'0DM$)$$$2$u++ 2 2 2  r-   CONTENT_TYPEc                     | j         J | j        J d                    d | j                                         D                       }|r| j        dz   |z   }n| j        }|| j        |<   d S )Nz; c              3   *   K   | ]\  }}| d | V  dS )=Nr&   )r)   kvs      r+   	<genexpr>z?StreamResponse._generate_content_type_header.<locals>.<genexpr>  s0      MM$!Qa::!::MMMMMMr-   )r   r   joinitemsrQ   )rS   r   paramsr   s       r+   r   z,StreamResponse._generate_content_type_header  s     !---!---MM$2D2J2J2L2LMMMMM 	'&-6EE&E&+l###r-   r<   c                   K   |t           j        u rd S | j        J |j        | j        t
          j        <   | j                            |j        | j                   | j        	                    t
          j
        d            d S rV   )r.   r6   rE   r'   rQ   r   CONTENT_ENCODINGr   rB   popallr   )rS   r<   s     r+   _do_start_compressionz$StreamResponse._do_start_compression  s      ]+++F#////5|d+,//L$4	
 	
 	

 	T0$77777r-   requestc                 L  K   | j         r"|                     | j                    d {V  d S |j                            t          j        d                                          }t                                          D ]'\  }}||v r|                     |           d {V   d S (d S )Nrk   )	rC   r   rL   ro   r   ACCEPT_ENCODINGr   CONTENT_CODINGSr   )rS   r   accept_encodingr'   r<   s        r+   _start_compressionz!StreamResponse._start_compression  s      " 	,,T-DEEEEEEEEEF "/--d.BBGGMMOO,2244 	 	ME6''00888888888 (	 	r-   c                    K   | j         rd S | j        | j        S t          |j        | j                  | _        |                     |           d {V S rV   )rF   rE   r   methodrJ   rG   _start)rS   r   s     r+   preparezStreamResponse.prepare  sa      > 	4+''#5gndk#R#R [[)))))))))r-   c                    K   || _         |j        x}| _        |                                  d {V  |                    |            d {V  |                                  d {V  |S rV   )rD   rE   _prepare_headers_prepare_hook_write_headers)rS   r   writers      r+   r   zStreamResponse._start  s      	(/(??%##%%%%%%%%%##D)))))))))!!#########r-   c                 \  K   | j         }|J | j        }|J | j        }||j        }|| _        |j        }| j        }| j        rZ| j                                        D ]@}|                    d          dd          }|	                    t          j        |           A| j        r|                     |           d {V  | j        r]|t          k    r't!          d                    |j                            | j        s#|                                 d|t          j        <   nY| j        rR| j        |_        |j        ?|t          k    r+| j        s#|                                 d|t          j        <   n	| j        sd}| j        rQt          j        |v r't3          |j        | j                  r|t          j        = t          j        |v r|t          j        = n9| j        r|j        n| j        dk    r |                    t          j        d           |                    t          j        t?                                 |                    t          j         tB                     t          j"        |vr<|r|tF          k    rd	|t          j"        <   d S d S |t          k    rd
|t          j"        <   d S d S d S )Nrk   )headerr   z@Using chunked encoding is forbidden for HTTP/{0.major}.{0.minor}r`   Fr   r   z
keep-aliveclose)$rD   rE   r?   rs   r   rQ   rH   valuesoutputaddr   
SET_COOKIErA   r   r@   r!   r   formatrG   enable_chunkingTRANSFER_ENCODING_length_checkr   lengthr   r   r   rJ   
setdefaultr   DATEr   SERVERr   
CONNECTIONr    )rS   r   r   rs   r   rL   cookier'   s           r+   r   zStreamResponse._prepare_headers  s     )"""%!!!%
 +J%/-= 	4-..00 4 4R004DOU3333 	3))'222222222= 	'-''"3396'/3J3J   + <&&(((2;./ 	' /FM}$m++3 D..000:C 671 '!&J # 	N"g--2N3 3- D/0 %00D23#1Jfmmt7JqPPt02LMMM49&;&=&=>>>4;888 ?')) 3m++/;GDO,,, ,+M))+2((( *) *)r-   c                    K   | j         }|J | j        }|J |j        }d|d          d|d          d| j         d| j         }|                    || j                   d {V  d S )NzHTTP/r   .r    )rD   rE   r   r]   rf   write_headersrQ   )rS   r   r   r   status_lines        r+   r   zStreamResponse._write_headers  s      )"""%!!!/UgajUU71:UUUUt|UU"";>>>>>>>>>>>r-   datac                   K   t          |t          t          t          f          sJ dt	          |          z              | j        rt          d          | j        t          d          | j                            |           d {V  d S )N#data argument must be byte-ish (%r)z%Cannot call write() after write_eof()z$Cannot call write() before prepare())	r   bytes	bytearray
memoryviewr   rF   r   rE   writerS   r   s     r+   r  zStreamResponse.write  s      5)Z0
 
 	> 	>04::=	> 	> 
 > 	HFGGG'EFFF"((...........r-   c                    K   | j         r
J d            | j        
J d            t          j        dt          d           | j                                         d {V  d S )NzEOF has already been sentResponse has not been startedz2drain method is deprecated, use await resp.write()r   )
stacklevel)rF   rE   rz   r{   r|   drainrW   s    r+   r
  zStreamResponse.drain(  s      >>>#>>>!#//1P///@	
 	
 	
 	

 "((***********r-   r-   c                 B  K   t          |t          t          t          f          sJ dt	          |          z              | j        rd S | j        
J d            | j                            |           d {V  d| _        d | _        | j        j	        | _
        d | _        d S )Nr  r  T)r   r  r  r  r   rF   rE   	write_eofrD   output_sizerw   r  s     r+   r  zStreamResponse.write_eof2  s      5)Z0
 
 	> 	>04::=	> 	> 
 > 	F#//1P///",,T222222222	 0<#r-   c                     | j         rd}n/| j        r&| j        J | j        j         d| j        j         d}nd}d| j        j         d| j         d| dS )Neofr   znot prepared<>)rF   rX   rD   r   r   r   r7   rK   )rS   infos     r+   __repr__zStreamResponse.__repr__B  sy    > 	"DD] 	"9(((i&:::::DD!DB4>*BBT[BB4BBBBr-   keyc                     | j         |         S rV   rP   rS   r  s     r+   __getitem__zStreamResponse.__getitem__L  s    {3r-   c                     || j         |<   d S rV   r  )rS   r  r'   s      r+   __setitem__zStreamResponse.__setitem__O  s     Cr-   c                     | j         |= d S rV   r  r  s     r+   __delitem__zStreamResponse.__delitem__R  s    Kr-   c                 *    t          | j                  S rV   )lenrP   rW   s    r+   __len__zStreamResponse.__len__U  s    4;r-   c                 *    t          | j                  S rV   )iterrP   rW   s    r+   __iter__zStreamResponse.__iter__X  s    DK   r-   c                 :    t          t          |                     S rV   )hashidrW   s    r+   __hash__zStreamResponse.__hash__[  s    BtHH~~r-   otherc                 
    | |u S rV   r&   )rS   r'  s     r+   __eq__zStreamResponse.__eq__^  s    u}r-   )rN   rY   rV   )rN   N)rN   r   )r   r2   rN   Nr-   )Wr7   r8   r9   r   r  r  r"   __annotations__r   r>   r?   r   r   r@   rA   zlibZ_DEFAULT_STRATEGYrB   rm   rC   r.   rD   rE   r   rF   rG   rw   rH   r   r   r$   r   rT   propertyrX   r[   rJ   r`   rc   rK   ri   rR   rs   ru   rx   r~   r   r   rL   r   r   r   r   setterr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r
  r  r  r   r  r  r  r  r	   r"  r&  objectr)  __classcell__r   s   @r+   r/   r/   M   s	        ui01111ME"&K$&&&HdL$!%!8388826/666$(D(=
!(((6:OX23:::It*.$...L'+Hh|$+++
  $*.48) ) ) ) 	)
 ,')  C 01) 
) ) ) )4 B$ B B B XB    X     X     X !T ! ! ! X!     X !%) )) ) 
	) ) ) )# x}       HTN       X ! ! ! ! !S ! ! ! X! 0s 0 0 0 X0
 (3- 4     7;/. .dM123. . 
	. . . .*    X     X "& $-1!%#'!%"&/% /% /%/% /%
 #/% /% %S/*/% /% /% 4./% #/% 3-/% 
/% /% /% /%j !%!%#'"&
 
 

 	

 
 
 4.
 3-
 

 
 
 
: & & & & & & X& 	9HSM 	9d 	9 	9 	9 	9 $c $ $ $ $ $ X$ -# -$ - - - -
 #      X ^-Xc] -t - - - ^- Fx(9: F F F XF 6eC0A3$FGH6	6 6 6 6  
htn 
 
 
 X
 
[(5s#34     [* $(#4
, 
, 
,	
, 
, 
, 
,
8- 
8D 
8 
8 
8 
8
 
 
 
*] *x@T7U * * * *M 6J    ?3 ?3 ?3 ?3B? ? ? ?
/eY
&B C 
/ 
/ 
/ 
/ 
/+ + + +$ $E $D $ $ $ $ C# C C C C s  s        !s !3 !4 ! ! ! !s t             !(3- ! ! ! !#    F t        r-   r/   c                       e Zd ZU dZee         ed<   dddddddddd	dededee	         dee	         d	ee
         d
ee	         dee	         dee         dee         ddf fdZedeeeef                  fd            Zej        deddfd            Zedee	         fd            Zej        de	ddfd            Zedee         fd            Zej        dee         ddfd            Zddeddf fdZdddef fdZdeddf fdZ xZS ) r0   N_compressed_bodyrI   )	bodyrJ   rK   textrL   r   r   zlib_executor_sizezlib_executorr5  rJ   rK   r6  rL   r   r   r7  r8  rN   c       	            ||t          d          |t                      }
nt          |          }
|d|v rt          d          |t          j        |
v r|s|rt          d          nt	          |t
                    st          dt          |          z            |d}|d}|dz   |z   |
t          j        <   |                    |          }d }n=t          j        |
v r||t          d          n|||d|z   z  }||
t          j        <   t                      
                    |||
	           ||| _        n|| _        || _        |	| _        d S )
Nz&body and text are not allowed togetherr   z,charset must not be in content_type argumentzPpassing both Content-Type header and content_type or charset params is forbiddentext argument must be str (%r)
text/plainutf-8z
; charset=)rJ   rK   rM   )rp   r   r   r   r   r   	TypeErrorr   encoder   rT   r6  r5  _zlib_executor_size_zlib_executor)rS   r5  rJ   rK   r6  rL   r   r   r7  r8  real_headersr   s              r+   rT   zResponse.__init__f  s     0EFFF?-8]]LL&w//L#	\(A(AKLLL L00 7 $'   "$,, S#$DtDzz$QRRR'#/L?%G2>2MPW2WT./{{7++,..'7+> #   ,? %"w 66.:L*+v\RRRDIIDI#5 +r-   c                     | j         S rV   )r>   rW   s    r+   r5  zResponse.body  s
    zr-   c                    |d | _         nt          |t          t          f          r|| _         n	 t          j                            |          x| _         }n2# t          j        $ r  t          dt          |          z            w xY w| j
        }t          j        |vr|j        |t          j        <   |j        r(|j                                        D ]\  }}||vr|||<   d | _        d S )NzUnsupported body type %r)r>   r   r  r  r   PAYLOAD_REGISTRYro   LookupErrorrp   r   rQ   r   r   r   rL   r   r4  )rS   r5  rL   r  r'   s        r+   r5  zResponse.body  s
   <DJJui011 	-DJJJ$+$<$@$@$F$FF
TT& J J J !;d4jj!HIIIJ mG  //-1->)* | -"&,"4"4"6"6 - -JC'))', $s   &A /Bc                 V    | j         d S | j                             | j        pd          S )Nr<  )r>   decoder   rW   s    r+   r6  zResponse.text  s,    :4z  !8999r-   c                     |/t          |t                    sJ dt          |          z              | j        dk    rd| _        | j        d| _        |                    | j                  | _        d | _        d S )Nr:  r   r;  r<  )r   r   r   r   r   r>  r>   r4  )rS   r6  s     r+   r6  zResponse.text  s    |z# 
  
||+d4jj8 | 
  ::: ,D<"DL[[..
 $r-   c                 *   | j         rd S t          j        | j        v r$t	          | j        t          j                           S | j        t          | j                  S t          | j        t                    rd S | j        t          | j                  S dS )Nr   )
r@   r   r   rQ   rm   r4  r  r   r>   r"   rW   s    r+   r   zResponse.content_length  s    = 	4$-//t}T%89::: ,t,---
G,, 	4Z#tz??"1r-   r'   c                      t          d          )Nz#Content length is set automatically)r   r   s     r+   r   zResponse.content_length  s    @AAAr-   r-   r   c                 0  K   | j         rd S | j        | j        }n| j        }|rJ d|            | j        J | j        J || j        r(t                                                       d {V  d S t          | j        t                    rM| j        
                    | j                   d {V  t                                                       d {V  d S t                                          t          t          |                     d {V  d S )Nzdata arg is not supported, got )rF   r4  r>   rD   rE   rG   r   r  r   r"   r  r   r  )rS   r   r5  r   s      r+   r  zResponse.write_eof  sJ     > 	F (48JDD(DCCC4CCCCxy$$$#///<43<''##%%%%%%%%%%%
G,, 	7*""4#7888888888''##%%%%%%%%%%%''##D$5$566666666666r-   r   r2   c                 L  K   t           j        | j        v r-t          |j        | j                  r| j        t           j        = n| j        st          | j        t                    r8| j        j
        +t          | j        j
                  | j        t           j        <   nb| j        rt          | j                  nd}|dk    s| j        dk    r4|j        t           j        vr!t          |          | j        t           j        <   t                                          |           d {V S )N0i0  )r   r   rQ   r   r   rJ   r@   r   r>   r"   sizer   r  METH_HEAD_ALLr   r   )rS   r   body_lenr   s      r+   r   zResponse._start  s      $-//+GNDKHH 7M$"56 
	G$*g.. 	G:?.9<TZ_9M9MDM$"56.2jA3tz???cs??K3&&7>AS+S+S9<XDM$"56WW^^G,,,,,,,,,r-   r<   c                   K   | j         st          | j        t                    r't	                                          |           d {V S |t          j        u rd S t          |j	        | j
        | j                  }| j        J | j
        Gt          | j                  t          k    r*t          j        dt          | j                   d           |                    | j                   d {V |                                z   | _        |j	        | j        t(          j        <   t-          t          | j                            | j        t(          j        <   d S )N)encodingmax_sync_chunk_sizeexecutorz2Synchronous compression of large response bodies (z bytes) might block the async event loop. Consider providing a custom value to zlib_executor_size/zlib_executor response properties or disabling compression on it.)r@   r   r>   r"   r   r   r.   r6   r   r'   r?  r@  r  LARGE_BODY_SIZErz   r{   compressflushr4  rQ   r   r   r   r   )rS   r<   
compressorr   s      r+   r   zResponse._do_start_compression  se     = 	?Jtz7;; 	?66v>>>>>>>>>]+++F $\ $ 8(
 
 


 z%%%#+DJ/0Q0QMT
OOT T T   %%dj11111111J4D4D4F4FF 	 06|d+,-0T5J1K1K-L-Ld)***r-   r*  )r7   r8   r9   r4  r   r  r+  r   rm   r   r$   r   rT   r.  r   r"   r5  r/  r6  r   r  r   r   r.   r   r1  r2  s   @r+   r0   r0   b  s        (,huo,,,
  $"*.&*!%,0,0?, ?, ?, ?, 	?,
 ?, sm?, ,'?, sm?, #?, %SM?,  )?, 
?, ?, ?, ?, ?, ?,B huUG^45    X 
[% % % % % [%2 :hsm : : : X:
 
[% % % % % [%     X$ BHSM Bd B B B B7 7E 7D 7 7 7 7 7 7$-M -6J - - - - - -$M- MD M M M M M M M M M Mr-   r0   rI   zapplication/json)r6  r5  rJ   rK   rL   r   dumpsr   r6  r5  rJ   rK   rL   r   rY  rN   c                z    | t           ur|s|rt          d           ||           }t          ||||||          S )Nz3only one of data, text, or body should be specified)r6  r5  rJ   rK   rL   r   )r   rp   r0   )r   r6  r5  rJ   rK   rL   r   rY  s           r+   r1   r1   /  sc     8 	4 	RSSS5;;D!   r-   )Easynciocollections.abccollectionsr   enumjsonr   r   rz   r,  concurrent.futuresr   httpr   http.cookiesr   typingr   r   r   r	   r
   r   r   r   	multidictr   r   rk   r   r   abcr   compression_utilsr   helpersr   r   r   r   r   r   r   r   r   r   r   r    r!   r"   typedefsr#   r$   rn   rU  __all__web_requestr2   r   	BaseClassEnumr.   r   r/   r0   rY  r  rm   r1   r&   r-   r+   <module>rm     s               ' ' ' ' ' '       % % % % % %	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ( ' ' ' ' ' ' '         % % % % % % - - - - - -                        @ ? ? ? ? ? ? ? ? ?       / / / / / / / /VV:VVV
J  /((((((sCx(II.I    DI    EDmDDDR R R R RY R R RjJM JM JM JM JM~ JM JM JM\    &**  
 3- 5/	
  SM l#        r-   