
    gp                        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 eD  ci c]  } | jj                  | jl                   c} Z7dZ8dZ9erddl:m;Z; ee<ef   Z=nej>                  j*                  Z= G d dej|                        Z?e?D ci c]  }|jj                  | c}Z@ G d de=e'      ZA G d deA      ZBe+fddddddej                  ddedee<   deeD   deEdee<   d ee4   d!e<d"e3d#eBfd$ZFyc c} w c c}w )%    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LooseHeadersi   )ContentCodingStreamResponseResponsejson_response)BaseRequestc                       e Zd ZdZdZdZy)r%   deflategzipidentityN)__name__
__module____qualname__r+   r,   r-        I/var/www/openai/venv/lib/python3.12/site-packages/aiohttp/web_response.pyr%   r%   <   s    
 GDHr2   r%   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'	 d^d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*d_d"Z+e!defd#       Z,e!defd$       Z-d^d%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!d`d*       Z0e!defd+       Z1dddd,ddddd-d.ed/ed0ee   d1ee   d2eeeef      d3ed4ee   d5ee   d6ee   d7ee   ddfd8Z2dd,dddd9d.ed1ee   d3ed4ee   d5ee   d7ee   ddfd:Z3e!dee   f fd;       Z4e4jj                  d/ee   ddfd<       Z4e!def fd=       Z6e6jj                  d/eddfd>       Z6e!dee   f fd?       Z7e7jj                  d/ee   ddfd@       Z7e!dee8jp                     fdA       Z9e9jj                  d/eeee:e8jp                  ef      ddfdB       Z9e!dee;   fdC       Z<e<jj                  d/eee;ef      ddfdD       Z<e=j|                  fdEe?ddfdFZ@dGeddfdHZAdadJZBdId
dee   fdKZCdId
defdLZDd_dMZEd_dNZFdOeeeeGf   ddfdPZHd_dQZIdbdOeddfdRZJdefdSZKdTedeLfdUZMdTed/eLddfdVZNdTeddfdWZOdefdXZPdeQe   fdYZRdefdZZSd[eTdefd\ZU xZVS )cr&   N_bodyT_keep_aliveF_chunked_compression_compression_strategy_compression_forcer)   _req_payload_writer	_eof_sent_must_be_empty_bodyr   _cookies   )statusreasonheaders_real_headersrA   rB   rC   rD   returnc                    i | _         ||| _        n"|t        |      | _        nt               | _        | j                  ||       y)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)selfrA   rB   rC   rD   s        r3   __init__zStreamResponse.__init__^   sC     ')$)DM .9'.BDM'MDM(r2   c                 :    | j                   xs | j                  d uS N)r=   r<   rJ   s    r3   preparedzStreamResponse.preparedx   s    ~~A!5!5T!AAr2   c                 H    | j                   r| j                   j                  S y rM   )r;   taskrN   s    r3   rQ   zStreamResponse.task|   s    9999>>!r2   c                     | j                   S rM   )_statusrN   s    r3   rA   zStreamResponse.status       ||r2   c                     | j                   S rM   )r7   rN   s    r3   chunkedzStreamResponse.chunked       }}r2   c                     | j                   S rM   )r8   rN   s    r3   compressionzStreamResponse.compression          r2   c                     | j                   S rM   )_reasonrN   s    r3   rB   zStreamResponse.reason   rT   r2   c                 N    | j                   rJ d       | j                  ||       y )NzGCannot change the response status code after the headers have been sent)rO   rI   rJ   rA   rB   s      r3   
set_statuszStreamResponse.set_status   s-     	UT	U(r2   c                     t        |      | _        |(t        j                  | j                  d      }|| _        y d|v rt	        d      || _        y )N 
zReason cannot contain \n)intrS   REASON_PHRASESget
ValueErrorr\   r^   s      r3   rI   zStreamResponse._set_status   sM    6{>#''b9F  V^899r2   c                     | j                   S rM   r6   rN   s    r3   
keep_alivezStreamResponse.keep_alive   s    r2   c                     d| _         y )NFrh   rN   s    r3   force_closezStreamResponse.force_close   s
     r2   c                     | j                   S rM   )_body_lengthrN   s    r3   body_lengthzStreamResponse.body_length   rZ   r2   c                 ~    t        j                  dt               | j                  sJ | j                  j                  S )Nzoutput_length is deprecated)warningswarnDeprecationWarningr<   buffer_sizerN   s    r3   output_lengthzStreamResponse.output_length   s3    35GH######///r2   
chunk_sizec                     t         j                  | j                  v rt        d      |t	        j
                  dt               d| _        y)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_LENGTHrH   RuntimeErrorrp   rq   rr   r7   )rJ   ru   s     r3   enable_chunked_encodingz&StreamResponse.enable_chunked_encoding   sC    $--/P  !MM:<NOr2   forcestrategyc                     t        |t              r=|rt        j                  nt        j                  }t        j                  dt               n|t        |t              sJ d       d| _        || _	        || _
        y)z&Enables response compression encoding.z+Using boolean for force is deprecated #3318Nz1force should one of None, bool or ContentEncodingT)
isinstanceboolr%   r+   r-   rp   rq   rr   r8   r:   r9   )rJ   rz   r{   s      r3   enable_compressionz!StreamResponse.enable_compression   sx     eT"-2M))8N8NEMM=?Q } CBC  !"'%-"r2   c                     | j                   S rM   )rH   rN   s    r3   rC   zStreamResponse.headers   rW   r2   c                 P    | j                   t               | _         | j                   S rM   )r?   r   rN   s    r3   cookieszStreamResponse.cookies   s    == (NDM}}r2   /)expiresdomainmax_agepathsecurehttponlyversionsamesitenamevaluer   r   r   r   r   r   r   r   c                6   | j                   t               | _         || j                   |<   | j                   |   }|||d<   n|j                  d      dk(  r|d= |||d<   |t        |      |d<   nd|v r|d= ||d<   |||d<   |||d<   |	|	|d	<   |
|
|d
<   yy)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   )r?   r   re   str)rJ   r   r   r   r   r   r   r   r   r   r   cs               r3   
set_cookiezStreamResponse.set_cookie   s    & == (NDM#dMM$"AiLUU9!@@) AhKw<AiL!^)&	 AhK$AjM"AiL$AjM  r2   )r   r   r   r   r   c                    | j                   | j                   j                  |d       | j                  |ddd|||||	       y)zBDelete cookie.

        Creates new empty expired cookie.
        Nra   r   r   )r   r   r   r   r   r   r   )r?   popr   )rJ   r   r   r   r   r   r   s          r3   
del_cookiezStreamResponse.del_cookie  sN     ==$MMdD)3 	 
	
r2   c                     t         |   S rM   )supercontent_lengthrJ   	__class__s    r3   r   zStreamResponse.content_length-  s     w%%r2   c                     |It        |      }| j                  rt        d      t        |      | j                  t
        j                  <   y | j                  j                  t
        j                  d        y )Nz<You can't set content length when chunked encoding is enable)rc   r7   rx   r   rH   r   rw   r   rJ   r   s     r3   r   zStreamResponse.content_length2  s\    JE}}"R  25UDMM$--.MMd1148r2   c                     t         |   S rM   )r   content_typer   s    r3   r   zStreamResponse.content_type>  s     w##r2   c                 \    | j                    t        |      | _        | j                          y rM   )r   r   _content_type_generate_content_type_headerr   s     r3   r   zStreamResponse.content_typeC  s#     Z**,r2   c                     t         |   S rM   )r   charsetr   s    r3   r   zStreamResponse.charsetI  s     wr2   c                    | j                   }|dk(  rt        d      | j                  J || j                  j                  dd        n&t	        |      j                         | j                  d<   | j                          y )Napplication/octet-streamzYSetting charset for application/octet-stream doesn't make sense, setup content_type firstr   )r   rx   _content_dictr   r   lowerr   )rJ   r   ctypes      r3   r   zStreamResponse.charsetN  s    !!..?  !!---=""9d3,/J,<,<,>Dy)**,r2   c                 f    t        | j                  j                  t        j                              S )zuThe value of Last-Modified HTTP header, or None.

        This header is represented as a `datetime` object.
        )r   rH   re   r   LAST_MODIFIEDrN   s    r3   last_modifiedzStreamResponse.last_modified]  s$     t}}001C1CDEEr2   c                 J   |+| j                   j                  t        j                  d        y t	        |t
        t        f      rXt        j                  dt        j                  t        j                  |                  | j                   t        j                  <   y t	        |t        j                        r@t        j                  d|j                               | j                   t        j                  <   y t	        |t              r|| j                   t        j                  <   y y )Nz%a, %d %b %Y %H:%M:%S GMT)rH   r   r   r   r}   rc   floattimestrftimegmtimemathceildatetimeutctimetupler   r   s     r3   r   zStreamResponse.last_modifiede  s     =MMd00$7U|,04+T[[59I-J1DMM$,,- x00104+U-?-?-A1DMM$,,- s#05DMM$,,- $r2   c                    | j                   j                  t        j                        }|sy |t        k(  rt        t              S t        j                  |      }|sy |j                  dd      \  }}t        t        |      |      S )N)r   r      )is_weakr   )
rH   re   r   ETAGr   r   r   	fullmatchgroupr~   )rJ   quoted_valuematchr   r   s        r3   etagzStreamResponse.etagv  st    }}((3X%h''((6Q*M
 	
r2   c                    |+| j                   j                  t        j                  d        y t	        |t
              r	|t        k(  s#t	        |t              r5|j                  t        k(  r"t        | j                   t        j                  <   y t	        |t
              r-t        |       d| d| j                   t        j                  <   y t	        |t              ryt	        |j                  t
              r_t        |j                         |j                  rd|j                   dnd|j                   d}|| j                   t        j                  <   y t        dt        |       d      )N"zW/"zUnsupported etag type: z . etag must be str, ETag or None)rH   r   r   r   r}   r   r   r   r   r   r   rf   type)rJ   r   	hdr_values      r3   r   zStreamResponse.etag  s   =MMdii.$():ud#x(?'/DMM$))$s#&)*5'|DMM$))$t$EKK)E,05#ekk]!,Qu{{mSTCUI'0DMM$))$)$u+ 71 2 r2   CONTENT_TYPEc                     | j                   J | j                  J dj                  d | j                   j                         D              }|r| j                  dz   |z   }n| j                  }|| j                  |<   y )Nz; c              3   0   K   | ]  \  }}| d |   yw)=Nr1   ).0kvs      r3   	<genexpr>z?StreamResponse._generate_content_type_header.<locals>.<genexpr>  s!     M2L$!QaS!:2Ls   )r   r   joinitemsrH   )rJ   r   paramsr   s       r3   r   z,StreamResponse._generate_content_type_header  s|     !!---!!---M$2D2D2J2J2LMM&&-6E&&E&+l#r2   codingc                 P  K   |t         j                  u ry | j                  J |j                  | j                  t
        j                  <   | j                  j                  |j                  | j                         | j                  j                  t
        j                  d        y wrM   )r%   r-   r<   r   rH   r   CONTENT_ENCODINGr   r9   popallrw   )rJ   r   s     r3   _do_start_compressionz$StreamResponse._do_start_compression  s     ]+++##////5||d++,//LL$44	

 	T00$7s   B$B&requestc                 Z  K   | j                   r$| j                  | j                          d {    y |j                  j                  t        j
                  d      j                         }t        j                         D ]$  \  }}||v s| j                  |       d {     y  y 7 y7 
w)Nra   )	r:   r   rC   re   r   ACCEPT_ENCODINGr   CONTENT_CODINGSr   )rJ   r   accept_encodingr   r   s        r3   _start_compressionz!StreamResponse._start_compression  s     "",,T-D-DEEE "//--d.B.BBGMMO,224ME6'00888 5 F 9s(   +B+B'AB+
B+B)	B+)B+c                    K   | j                   ry | j                  | j                  S t        |j                  | j                        | _        | j                  |       d {   S 7 wrM   )r=   r<   r   methodrA   r>   _start)rJ   r   s     r3   preparezStreamResponse.prepare  sT     >>+'''#5gnndkk#R [[))))s   AA(!A&"A(c                    K   || _         |j                  x}| _        | j                          d {    |j                  |        d {    | j	                          d {    |S 7 77  7 
wrM   )r;   r<   _prepare_headers_prepare_hook_write_headers)rJ   r   writers      r3   r   zStreamResponse._start  sj     	(/(?(??%##%%%##D)))!!###	 	&)#s3   .A.A(A.	A*
A.!A,"A.*A.,A.c                 ,  K   | j                   }|J | j                  }|J | j                  }||j                  }|| _        |j                  }| j
                  }| j                  rT| j                  j                         D ]7  }|j                  d      dd  }|j                  t        j                  |       9 | j                  r| j                  |       d {    | j                  r]|t        k7  r$t!        dj#                  |j                              | j$                  s|j'                          d|t        j(                  <   np| j*                  rd| j,                  |_        |j.                  G|t        k\  r0| j$                  s2|j'                          d|t        j(                  <   n| j$                  sd}| j$                  rgt        j0                  |v r1t3        |j4                  | j6                        r|t        j0                  = t        j(                  |v rY|t        j(                  = nG| j*                  r|j.                  n| j,                  dk7  r |j9                  t        j:                  d       |j9                  t        j<                  t?                      |j9                  t        j@                  tB               t        jD                  |vr>|r|tF        k(  rd	|t        jD                  <   y y |t        k(  rd
|t        jD                  <   y y y 7 5w)Nra   )headerr   z@Using chunked encoding is forbidden for HTTP/{0.major}.{0.minor}rV   Fr   r   z
keep-aliveclose)$r;   r<   r6   ri   r   rH   r?   valuesoutputaddr   
SET_COOKIEr8   r   r7   r!   rx   formatr>   enable_chunkingTRANSFER_ENCODING_length_checkr   lengthrw   r   r   rA   
setdefaultr   DATEr   SERVERr   
CONNECTIONr    )rJ   r   r   ri   r   rC   cookier   s           r3   r   zStreamResponse._prepare_headers  s    ))"""%%!!!%%
 ++J%//--==--..0R04DOOU3 1 ))'222==-'"3396'//3J  ++&&(2;../ //FM}}$m+33..0:C 6 6711!&J ##""g-2N3 D//0 %%0D223#11fmmt7J7JqPt002LM499&;&=>4;;8 ??')m+/;GDOO, ,M)+2( *	 *O 3s   CLLH5Lc                    K   | j                   }|J | j                  }|J |j                  }d|d    d|d    d| j                   d| j                   }|j                  || j                         d {    y 7 w)NzHTTP/r   .r    )r;   r<   r   rS   r\   write_headersrH   )rJ   r   r   r   status_lines        r3   r   zStreamResponse._write_headers  s     ))"""%%!!!//gaj\71:,a~Qt||nU"";>>>s   A4A>6A<7A>datac                   K   t        |t        t        t        f      sJ dt	        |      z         | j
                  rt        d      | j                  t        d      | j                  j                  |       d {    y 7 w)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   r=   rx   r<   writerJ   r   s     r3   r   zStreamResponse.write  s|     5)Z0
 	>04:=	> 
 >>FGG'EFF""((...s   A;B=B>Bc                    K   | j                   rJ d       | j                  J d       t        j                  dt        d       | j                  j                          d {    y 7 w)NzEOF has already been sentResponse has not been startedz2drain method is deprecated, use await resp.write()r   )
stacklevel)r=   r<   rp   rq   rr   drainrN   s    r3   r  zStreamResponse.drain(  s`     >>>#>>!##/P1PP/@	

 ""((***s   A A*"A(#A*c                 R  K   t        |t        t        t        f      sJ dt	        |      z         | j
                  ry | j                  J d       | j                  j                  |       d {    d| _        d | _        | j                  j                  | _
        d | _        y 7 5w)Nr   r   T)r}   r   r   r   r   r=   r<   	write_eofr;   output_sizerm   r   s     r3   r  zStreamResponse.write_eof2  s     5)Z0
 	>04:=	> 
 >>##/P1PP/"",,T222	 00<<#	 	3s   A-B'/B%06B'c                    | j                   rd}nM| 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<>)r=   rO   r;   r   r   r   r.   rB   )rJ   infos     r3   __repr__zStreamResponse.__repr__B  sz    >>D]]99(((ii&&'q(8:D!D4>>**+1T[[M4&BBr2   keyc                      | j                   |   S rM   rG   rJ   r  s     r3   __getitem__zStreamResponse.__getitem__L  s    {{3r2   c                 "    || j                   |<   y rM   r  )rJ   r  r   s      r3   __setitem__zStreamResponse.__setitem__O  s     Cr2   c                     | j                   |= y rM   r  r  s     r3   __delitem__zStreamResponse.__delitem__R  s    KKr2   c                 ,    t        | j                        S rM   )lenrG   rN   s    r3   __len__zStreamResponse.__len__U  s    4;;r2   c                 ,    t        | j                        S rM   )iterrG   rN   s    r3   __iter__zStreamResponse.__iter__X  s    DKK  r2   c                 *    t        t        |             S rM   )hashidrN   s    r3   __hash__zStreamResponse.__hash__[  s    BtH~r2   otherc                 
    | |u S rM   r1   )rJ   r  s     r3   __eq__zStreamResponse.__eq__^  s    u}r2   )rE   zOptional[asyncio.Task[None]]rM   )rE   N)rE   zCIMultiDict[str])r   r)   rE   Nr2   )Wr.   r/   r0   r   r   r   r"   __annotations__r   r5   r6   r   r~   r7   r8   zlibZ_DEFAULT_STRATEGYr9   rc   r:   r%   r;   r<   r   r=   r>   rm   r?   r   r   r$   r   rK   propertyrO   rQ   rA   rV   rY   rB   r_   rI   ri   rk   rn   rt   ry   r   rC   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   @r3   r&   r&   M   s   ui011ME"&K$&HdL$!%!8!83826/6$(D(=
!(6:OX23:It*.$.L'+Hh|$+
  $*.48) ) 	)
 ,')  C 01) 
)4 B$ B B         !T ! !    !%)) ) 
	)# x}    HTN    ! !S ! ! 0s 0 0
(3- 4  7;//.dM123. . 
	.*      "& $-1!%#'!%"&/%/% /%
 #/% /% %S/*/% /% /% 4./% #/% 3-/% 
/%j !%!%#'"&

 	

 
 
 4.
 3-
 

: & & & 	9HSM 	9d 	9 	9 $c $ $ -# -$ - -
 #   ^^-Xc] -t - - Fx(9(9: F F 6eC0A0A3$FGH6	6 6  
htn 
 
 
[[(5s#34   * $(#4#4
, 
,	
,
8- 
8D 
8
*] *x@T7U *M 6J ?3B?
/eY
&B C 
/ 
/+$E $D $ C# C s  s  !s !3 !4 !s t    !(3- !# F t r2   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 )r'   N_compressed_bodyr@   )	bodyrA   rB   textrC   r   r   zlib_executor_sizezlib_executorr-  rA   rB   r.  rC   r   r   r/  r0  rE   c       	         |   ||t        d      |t               }
nt        |t              st        |      }
n|}
|d|v rt        d      |}t        j                  |
v r|s|rt        d      t        |t
              st        dt        |      z        |d}|d}|dz   |z   |
t        j                  <   |j                  |      }d }n@t        j                  |
v r||*t        d      |||d|z   z  }||
t        j                  <   t        | )  |||
	       ||| _        n|| _        || _        |	| _        y )
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=)rA   rB   rD   )rf   r   r}   r   r   r   	TypeErrorr   encoder   rK   r.  r-  _zlib_executor_size_zlib_executor)rJ   r-  rA   rB   r.  rC   r   r   r/  r0  real_headersr   s              r3   rK   zResponse.__init__f  sy     0EFF?-8]LG[1&w/L"L#	\(AKLL  L07$'  "$,#$DtDz$QRR'#/L?%G2>2MPW2WT../{{7+,.'7+> # 
 %"w 66.:L**+v\RDIDI#5 +r2   c                     | j                   S rM   )r5   rN   s    r3   r-  zResponse.body  s    zzr2   c                    |d | _         d | _        y t        |t        t        f      r|| _         d | _        y 	 t        j
                  j                  |      x| _         }| j                  }t        j                  |vr|j                  |t        j                  <   |j                  r,|j                  j                         D ]  \  }}||vs|||<    d | _        y # t        j                  $ r t        dt        |      z        w xY w)NzUnsupported body type %r)r5   r}   r   r   r   PAYLOAD_REGISTRYre   LookupErrorrf   r   rH   r   r   r   rC   r   r,  )rJ   r-  rC   r  r   s        r3   r-  zResponse.body  s    <DJ* !%) ui01DJ& !%#J$+$<$<$@$@$FF
T mmG   /-1->->))* ||"&,,"4"4"6JC')', #7 !% && J !;d4j!HIIJs   &C +Dc                 n    | j                   y | j                   j                  | j                  xs d      S )Nr4  )r5   decoder   rN   s    r3   r.  zResponse.text  s-    ::zz  !899r2   c                     |#t        |t              sJ dt        |      z         | j                  dk(  rd| _        | j                  d| _        |j                  | j                        | _        d | _        y )Nr2  r   r3  r4  )r}   r   r   r   r   r6  r5   r,  )rJ   r.  s     r3   r.  zResponse.text  st    |z# 
 	9+d4j8	9 
  :: ,D<<"DL[[.
 $r2   c                 \   | j                   ry t        j                  | j                  v r&t	        | j                  t        j                           S | j
                  t        | j
                        S t        | j                  t              ry | j                  t        | j                        S y)Nr   )
r7   r   rw   rH   rc   r,  r  r}   r5   r"   rN   s    r3   r   zResponse.content_length  s    ==$--/t}}T%8%89::  ,t,,--

G,ZZ#tzz?"r2   r   c                     t        d      )Nz#Content length is set automatically)rx   r   s     r3   r   zResponse.content_length  s    @AAr2   r   c                 "  K   | j                   ry | j                  | j                  }n| j                  }|r
J d|       | j                  J | j                  J || j
                  rt        |           d {    y t        | j                  t              rD| j                  j                  | j                         d {    t        |           d {    y t        |   t        t        |             d {    y 7 7 C7 /7 w)Nzdata arg is not supported, got )r=   r,  r5   r;   r<   r>   r   r  r}   r"   r   r   r   )rJ   r   r-  r   s      r3   r  zResponse.write_eof  s     >>  (48JJD((DC:4(CCxyy$$$##///<433'#%%%

G,**""4#7#7888'#%%%'#D$5666 &8%6sI   A:D=D>ADD	DD%DDD	DDDr   r)   c                   K   t         j                  | j                  v r=t        |j                  | j
                        r| j                  t         j                  = n| j                  st        | j                  t              rQ| j                  j                  t        | j                  j                        | j                  t         j                  <   ny| j                  rt        | j                        nd}|dk7  s+| j
                  dk7  rB|j                  t         j                  vr&t        |      | j                  t         j                  <   t        | =  |       d {   S 7 w)N0i0  )r   rw   rH   r   r   rA   r7   r}   r5   r"   sizer   r  METH_HEAD_ALLr   r   )rJ   r   body_lenr   s      r3   r   zResponse._start  s     $--/+GNNDKKHMM$"5"56$**g.::??.9<TZZ__9MDMM$"5"56.2jj3tzz?cs?KK3&7>>ASAS+S9<XDMM$"5"56W^G,,,,s   EE&E$ E&r   c                   K   | j                   st        | j                  t              rt        |   |       d {   S |t        j                  u ry t        |j                  | j                  | j                        }| j                  J | j                  Ht        | j                        t        kD  r,t        j                  dt        | j                         d       |j!                  | j                         d {   |j#                         z   | _        |j                  | j&                  t(        j*                  <   t-        t        | j$                              | j&                  t(        j.                  <   y 7 @7 ~w)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.)r7   r}   r5   r"   r   r   r%   r-   r   r   r7  r8  r  LARGE_BODY_SIZErp   rq   compressflushr,  rH   r   r   r   rw   )rJ   r   
compressorr   s      r3   r   zResponse._do_start_compression  s2    ==Jtzz7;6v>>>]+++ $\\ $ 8 8((


 zz%%%##+DJJ/0QMM

O$ %TT %%djj11J4D4D4FF 	 06||d++,-0T5J5J1K-Ld))*- ?& 2s#   9FE<CF E?A<F?Fr"  )r.   r/   r0   r,  r   r   r#  r   rc   r   r$   r   rK   r&  r   r"   r-  r'  r.  r   r  r   r   r%   r   r)  r*  s   @r3   r'   r'   b  s   (,huo,
  $"*.&*!%,0,0A, A, 	A,
 A, smA, ,'A, smA, #A, %SMA,  )A, 
A,F huUG^45   
[[% % % %2 :hsm : :
 
[[% % % %   $ BHSM Bd B B7E 7D 7$-M -6J -$M- MD M Mr2   r'   r@   zapplication/json)r.  r-  rA   rB   rC   r   dumpsr   r.  r-  rA   rB   rC   r   rQ  rE   c                b    | t         ur|s|rt        d       ||       }t        ||||||      S )Nz3only one of data, text, or body should be specified)r.  r-  rA   rB   rC   r   )r   rf   r'   )r   r.  r-  rA   rB   rC   r   rQ  s           r3   r(   r(   1  sE     84RSS;D! r2   )Gasynciocollections.abccollectionsr   enumjsonr   r   rp   r$  concurrent.futuresr   httpr   http.cookiesr   typingr   r   r   r	   r
   r   r   r   	multidictr   r   ra   r   r   abcr   compression_utilsr   helpersr   r   r   r   r   r   r   r   r   r   r   r    r!   r"   typedefsr#   r$   r   phraserd   rM  __all__web_requestr)   r   	BaseClassEnumr%   r   r&   r'   rQ  r   rc   r(   )http_statusr   s   00r3   <module>rg     s            '  %	 	 	 (  % -   @ ?  /KUV:K+##[%7%77:V
J (sCx(I..IDII  7DDmF6<<'mDRY RjLM~ LM`    &**
 3- 5/	
  SM l#   I W2 Es   E%?E*