
    3Cfl                     >   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.m/Z/ ddlm0Z0 ddl1m2Z2m3Z3 dZ4erddl5m6Z6 ee7ef   Z8nej<                  j(                  Z8 G d dejr                        Z: G d de8e&      Z; G d de;      Z<e*fddddddejz                  ddedee7   dee>   de?dee7   dee3   d e7d!e2d"e<fd#Z@y)$    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LooseHeaders)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-        T/var/www/highfloat_scraper/venv/lib/python3.12/site-packages/aiohttp/web_response.pyr%   r%   7   s    
 GDHr2   r%   c                   $    e Zd ZdZdddddedee   dee   ddfd	Ze	de
fd
       Ze	dMd       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	 dNdedee   ddfdZe	dee
   fd       ZdOdZe	defd       Ze	defd       ZdNdee   ddfdZ	 dNdeee
ef      ddfdZe	dPd       Ze	defd       Zddddddddddededee   d ee   d!eeeef      d"ed#ee
   d$ee
   d%ee   d&ee   ddfd'Zddd(ded ee   d"eddfd)Ze	dee   f fd*       Zej@                  dee   ddfd+       Ze	def fd,       Z!e!j@                  deddfd-       Z!e	dee   f fd.       Z"e"j@                  dee   ddfd/       Z"e	dee#jF                     fd0       Z$e$j@                  deeee%e#jF                  ef      ddfd1       Z$e	dee&   fd2       Z'e'j@                  deee&ef      ddfd3       Z'e(jR                  fd4e*ddfd5Z+d6eddfd7Z,dQd:Z-d8d9dee.   fd;Z/d8d9de.fd<Z0dOd=Z1dOd>Z2d?e3ddfd@Z4dOdAZ5dRd?e3ddfdBZ6defdCZ7dDede8fdEZ9dDede8ddfdFZ:dDeddfdGZ;defdHZ<de=e   fdIZ>defdJZ?dKe@de
fdLZA xZBS )Sr&   T   Nstatusreasonheadersr7   r8   r9   returnc                $   d | _         d | _        d| _        d| _        d | _        t               | _        d | _        d | _        d| _	        d | _
        d| _        i | _        |t        |      | _        nt               | _        | j                  ||       y )NFr   )_body_keep_alive_chunked_compression_compression_forcer   _cookies_req_payload_writer	_eof_sent_must_be_empty_body_body_length_stater   _headers
set_status)selfr7   r8   r9   s       r3   __init__zStreamResponse.__init__J   s     
+/!;?$+/	?C37 &(.9'.BDM'MDM'r2   c                     | j                   d uS N)rC   rJ   s    r3   preparedzStreamResponse.preparedf   s    ##4//r2   c                 H    | j                   r| j                   j                  S y rM   )rB   taskrN   s    r3   rQ   zStreamResponse.taskj   s    9999>>!r2   c                     | j                   S rM   )_statusrN   s    r3   r7   zStreamResponse.statusq       ||r2   c                     | j                   S rM   )r>   rN   s    r3   chunkedzStreamResponse.chunkedu       }}r2   c                     | j                   S rM   )r?   rN   s    r3   compressionzStreamResponse.compressiony          r2   c                     | j                   S rM   )_reasonrN   s    r3   r8   zStreamResponse.reason}   rT   r2   c                     | j                   rJ d       t        |      | _        |(	 t        | j                        j                  }|| _        y || _        y # t
        $ r d}Y || _        y w xY w)NzGCannot change the response status code after the headers have been sent )rO   intrS   r   phrase
ValueErrorr\   )rJ   r7   r8   s      r3   rI   zStreamResponse.set_status   sr    
 == 	
X	
  6{>#DLL188 v  s   A A+*A+c                     | j                   S rM   r=   rN   s    r3   
keep_alivezStreamResponse.keep_alive   s    r2   c                     d| _         y )NFrc   rN   s    r3   force_closezStreamResponse.force_close   s
     r2   c                     | j                   S rM   )rF   rN   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DeprecationWarningrC   buffer_sizerN   s    r3   output_lengthzStreamResponse.output_length   s3    35GH######///r2   
chunk_sizec                     d| _         t        j                  | j                  v rt	        d      |t        j                  dt               yy)z,Enables automatic chunked transfer encoding.Tz>You can't enable chunked encoding when a content length is setNzChunk size is deprecated #1615)r>   r   CONTENT_LENGTHrH   RuntimeErrorrj   rk   rl   )rJ   ro   s     r3   enable_chunked_encodingz&StreamResponse.enable_chunked_encoding   sH    $--/S  !MM:<NO "r2   forcec                     t        |      t        k(  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)typeboolr%   r+   r-   rj   rk   rl   
isinstancer?   r@   )rJ   rt   s     r3   enable_compressionz!StreamResponse.enable_compression   sk    
 ;$-2M))8N8NEMM=?Q e]3 I3 !"'r2   c                     | j                   S rM   )rH   rN   s    r3   r9   zStreamResponse.headers   rW   r2   c                     | j                   S rM   )rA   rN   s    r3   cookieszStreamResponse.cookies   rW   r2   /)expiresdomainmax_agepathsecurehttponlyversionsamesitenamevaluer~   r   r   r   r   r   r   r   c                   | j                   j                  |      }|+|j                  dk(  r| j                   j                  |d       || 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^   r~   Thu, 01 Jan 1970 00:00:00 GMTr   zmax-ager   r   r   r   r   )rA   getcoded_valuepopstr)rJ   r   r   r~   r   r   r   r   r   r   r   oldcs                r3   
set_cookiezStreamResponse.set_cookie   s    & mm%?s"4MMdD)#dMM$"AiLUU9!@@) AhKw<AiL!^)&	 AhK$AjM"AiL$AjM  r2   )r   r   c                j    | j                   j                  |d       | j                  |ddd||       y)zBDelete cookie.

        Creates new empty expired cookie.
        Nr^   r   r   )r   r~   r   r   )rA   r   r   )rJ   r   r   r   s       r3   
del_cookiezStreamResponse.del_cookie   s;     	$%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)r_   r>   rr   r   rH   r   rq   r   rJ   r   s     r3   r   zStreamResponse.content_length  s\    JE}}"U  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_type"  s#     Z**,r2   c                     t         |   S rM   )r   charsetr   s    r3   r   zStreamResponse.charset(  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   rr   _content_dictr   r   lowerr   )rJ   r   ctypes      r3   r   zStreamResponse.charset-  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   r   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   rx   r_   floattimestrftimegmtimemathceildatetimeutctimetupler   r   s     r3   r   zStreamResponse.last_modifiedD  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   r   r   ETAGr   r   r   	fullmatchgrouprw   )rJ   quoted_valuematchr   r   s        r3   etagzStreamResponse.etagU  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   rx   r   r   r   r   r   r   ra   rv   )rJ   r   	hdr_values      r3   r   zStreamResponse.etage  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     M$!QaS!:Ms   )r   r   joinitemsrH   )rJ   r   paramsr   s       r3   r   z,StreamResponse._generate_content_type_headerz  s|     !!---!!---M$2D2D2J2J2LMM&&-6E&&E&+l#r2   codingc                 <  K   |t         j                  k7  r| j                  J |j                  | j                  t
        j                  <   | j                  j                  |j                         | j                  j                  t
        j                  d        y y wrM   )
r%   r-   rC   r   rH   r   CONTENT_ENCODINGry   popallrq   )rJ   r   s     r3   _do_start_compressionz$StreamResponse._do_start_compression  sw     ]+++''33339<<DMM$//0  33FLLA MM  !4!4d; ,s   BBrequestr)   c                 L  K   | j                   r$| j                  | j                          d {    y |j                  j                  t        j
                  d      j                         }t        D ]+  }|j                  |v s| j                  |       d {     y  y 7 r7 
w)Nr^   )	r@   r   r9   r   r   ACCEPT_ENCODINGr   r%   r   )rJ   r   accept_encodingr   s       r3   _start_compressionz!StreamResponse._start_compression  s     "",,T-D-DEEE &oo11$2F2FKQQSO' <<?244V<<< F =s(   +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   )rD   rC   r   methodr7   rE   _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   )rB   rC   _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                  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(                  <   t        j*                  |v r|t        j*                  = np| j,                  rd| j.                  |_        |j0                  G|t        k\  r0| j$                  s2|j'                          d|t        j(                  <   n| j$                  sd}| j$                  rgt        j*                  |v r1t3        |j4                  | j6                        r|t        j*                  = t        j(                  |v r2|t        j(                  = n |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 1w)
Nr^   )headerr   z@Using chunked encoding is forbidden for HTTP/{0.major}.{0.minor}rV   Fr   z
keep-aliveclose)$rB   rC   r=   rd   r   rH   rA   valuesoutputaddr   
SET_COOKIEr?   r   r>   r!   rr   formatrE   enable_chunkingTRANSFER_ENCODINGrq   _length_checkr   lengthr   r   r7   
setdefaultr   DATEr   SERVERr   
CONNECTIONr    )rJ   r   r   rd   r   r9   cookier   s           r3   r   zStreamResponse._prepare_headers  s    ))"""%%!!!%%
 ++J%//--mm**, 	0FMMM,QR0EKK/	0 ))'222==-'"3396'//3J  ++&&(2;../""g-D//0 //FM}}$m+33..0:C 6 6711!&J ##""g-2N3 D//0 %%0D223t002LM499&;&=>4;;8 ??')m+/;GDOO, , m+/6GDOO, , *Q 3s   CLLH1Lc                   K   | j                   }|J | j                  }|J |j                  }dj                  |d   |d   | j                  | j
                        }|j                  || j                         d {    y 7 w)NzHTTP/{}.{} {} {}r   r   )rB   rC   r   r   rS   r\   write_headersrH   )rJ   r   r   r   status_lines        r3   r   zStreamResponse._write_headers  s     ))"""%%!!!//(//AJ
DLL$,,
 "";>>>s   A:B<B=B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())	rx   bytes	bytearray
memoryviewrv   rD   rr   rC   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)rD   rC   rj   rk   rl   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)rx   r   r   r   rv   rD   rC   	write_eofrB   output_sizerF   r   s     r3   r   zStreamResponse.write_eof  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eof znot prepared<>)rD   rO   rB   r   r   r   r.   r8   )rJ   infos     r3   __repr__zStreamResponse.__repr__!  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__+  s    {{3r2   c                 "    || j                   |<   y rM   r  )rJ   r  r   s      r3   __setitem__zStreamResponse.__setitem__.  s     Cr2   c                     | j                   |= y rM   r  r	  s     r3   __delitem__zStreamResponse.__delitem__1  s    KKr2   c                 ,    t        | j                        S rM   )lenrG   rN   s    r3   __len__zStreamResponse.__len__4  s    4;;r2   c                 ,    t        | j                        S rM   )iterrG   rN   s    r3   __iter__zStreamResponse.__iter__7  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   )r:   zOptional[asyncio.Task[None]]rM   )r:   N)r:   zCIMultiDict[str])r   r)   r:   Nr2   )Cr.   r/   r0   r   r_   r   r   r$   rK   propertyrw   rO   rQ   r7   rV   rY   r8   rI   rd   rf   rh   rn   rs   r   r%   ry   r9   r   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  r  objectr  __classcell__r   s   @r3   r&   r&   F   sw   M
  $*.( ( 	(
 ,'( 
(8 0$ 0 0         !T ! !    !%  
	   HTN    ! !S ! ! 0s 0 0
	P(3- 	P4 	P =A(eD-$789(	($      "& $-1!%#'!%"&1%1% 1%
 #1% 1% %S/*1% 1% 1% 4.1% #1% 3-1% 
1%h 59c

$,SM
@C
	
$ & & & 	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
, 
,	
,<- <D <
*] *x@T7U *M 6J @7D
?
/ 
/$ 
/+$E $D $ C# C s  s  !s !3 !4 !s t    !(3- !# F t r2   r&   c                       e Zd Z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 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'   Nr5   )	bodyr7   r8   textr9   r   r   zlib_executor_sizezlib_executorr#  r7   r8   r$  r9   r   r   r%  r&  r:   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|| _        d | _        || _        |	| _        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=r6   )ra   r   rx   r   r   r   	TypeErrorrv   encoder   rK   r$  r#  _compressed_body_zlib_executor_size_zlib_executor)rJ   r#  r7   r8   r$  r9   r   r   r%  r&  real_headersr   s              r3   rK   zResponse.__init__B  s     0EFF?-8]LG[1&w/L"L#	\(ANOO  L07$'  "$,#$DtDz$QRR'#/L?%G2>2MPW2WT../{{7+  L0+w/B$'   +*$w(>>6BL!2!23v|LDIDI15#5 +r2   c                     | j                   S rM   )r<   rN   s    r3   r#  zResponse.body  s    zzr2   c                 8   |d | _         d| _        d | _        y t        |t        t        f      r|| _         d| _        d | _        y 	 t
        j                  j                  |      x| _         }d| _        | 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)NFzUnsupported body type %rT)r<   _body_payloadrx   r   r   r   PAYLOAD_REGISTRYr   LookupErrorra   rv   rH   r   r   r   r9   r   r-  )rJ   r#  r9   r  r   s        r3   r#  zResponse.body  s   <*.DJ',D0 !%/ ui01DJ!&D* !%'J$+$<$<$@$@$FF
T "&DmmG   /-1->->))* ||$(LL$6$6$8 -LS%')',- !%# && J !;d4j!HIIJs   &C. .+Dc                 n    | j                   y | j                   j                  | j                  xs d      S )Nr*  )r<   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| _        d | _        y )Nr(  r   r)  r*  F)	rx   r   rv   r   r   r,  r<   r3  r-  )rJ   r$  s     r3   r$  zResponse.text  s|    |z# 
 	9+d4j8	9 
  :: ,D<<"DL[[.
" $r2   c                 
   | j                   ry t        j                  | j                  v r
t        |   S | j                  t        | j                        S | j                  ry | j                  t        | j                        S y)Nr   )
r>   r   rq   rH   r   r   r-  r  r3  r<   r   s    r3   r   zResponse.content_length  sn    ==$--/7))  ,t,,--ZZ#tzz?"r2   r   c                     t        d      )Nz#Content length is set automatically)rr   r   s     r3   r   zResponse.content_length  s    @AAr2   r   c                 F  K   | j                   ry | j                  | j                  }n| j                  }|r
J d|       | j                  J | j                  J || j
                  rt        |           d {    y | j                  rKt        t        |      } |j                  | j                         d {    t        |           d {    y t        |   t        t        |             d {    y t        |           d {    y 7 7 Z7 F7 "7 w)Nzdata arg is not supported, got )rD   r-  r<   rB   rC   rE   r   r   r3  r   r"   r   r   )rJ   r   r#  r   r   s       r3   r   zResponse.write_eof  s
    >>  (48JJD((DC:4(CCxyy$$$##///''g')))##w-#gmmD$8$8999g')))g'UD(9:::'#%%% * :):%s[   A:D!=D>A D!>D?D!D%D!:D;D!DD!D!D!D!D!r   r)   c                   K   t        |j                  | j                        r:t        j                  | j
                  v r&| j
                  t        j                  = n	| j                  st        j                  | j
                  vr| j                  rMt        t        | j                        j                  }|t        |      | j
                  t        j                  <   n| j                  rt        | j                        nd}|dk7  s:| j                  dk7  rQ|j                  j                         t        j                  k7  r&t        |      | j
                  t        j                  <   t         | E  |       d {   S 7 w)N0i0  )r   r   r7   r   rq   rH   r>   r3  r   r"   r<   sizer   r  upper	METH_HEADr   r   )rJ   r   r>  body_lenr   s       r3   r   zResponse._start  s     'D""dmm3MM$"5"564#6#6dmm#K!!GTZZ055#9<TDMM$"5"56.2jj3tzz?cs?KK3&7>>+?+?+AT^^+S9<XDMM$"5"56W^G,,,,s   E6F 9E>:F r   c                   K   | j                   s| j                  rt        |   |       d {   S |t        j
                  k7  r;t        t        |j                        | j                  | j                        }| j                  J | j                  Dt        | j                        dkD  r,t        j                  dt        | j                         d       |j                  | j                         d {   |j!                         z   | _        | j"                  J |j                  | j$                  t&        j(                  <   t        t        | j"                              | j$                  t&        j*                  <   y y 7 U7 w)N)encodingmax_sync_chunk_sizeexecutori   z2Synchronous 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.)r3  r>   r   r   r%   r-   r   r   r   r.  r/  r<   r  rj   rk   compressflushr-  rH   r   r   rq   )rJ   r   
compressorr   s      r3   r   zResponse._do_start_compression  sF    6v>>>]+++ (V\\*$($<$<,,J
 ::)))''/C

Ok4QDJJ( )XX !))$**55
8H8H8JJ ! ((44439<<DMM$//014S9N9N5O1PDMM$--.- , ?& 6s#   +FFC	F8F9BFFr  )r.   r/   r0   r   r_   r   r   r$   r   rK   r  r   r   r"   r#  r  r$  r   r   r   r   r%   r   r   r!  s   @r3   r'   r'   A  s     $"*.&*!%,0,0D, D, 	D,
 D, smD, ,'D, smD, #D, %SMD,  )D, 
D,L huUG^45   
[[% %4 % %: :hsm : :
 
[[% % % %   $ BHSM Bd B B&E &D &,-M -6J -&Q- QD Q Qr2   r'   r5   zapplication/json)r$  r#  r7   r8   r9   r   dumpsr   r$  r#  r7   r8   r9   r   rI  r:   c                b    | t         ur|s|rt        d       ||       }t        ||||||      S )Nz3only one of data, text, or body should be specified)r$  r#  r7   r8   r9   r   )r   ra   r'   )r   r$  r#  r7   r8   r9   r   rI  s           r3   r(   r(     sE     84RSS;D! r2   )Aasynciocollections.abccollectionsr   enumjsonr   r   rj   concurrent.futuresr   httpr   http.cookiesr   typingr   r   r   r	   r
   r   r   r   	multidictr   r   r^   r   r   abcr   compression_utilsr   helpersr   r   r   r   r   r   r   r   r   r   r   r    r!   r"   typedefsr#   r$   __all__web_requestr)   r   	BaseClassEnumr%   r&   r'   rI  r   r_   r(   r1   r2   r3   <module>r]     sP           '  %	 	 	 (  % -   @ ?  /
J (sCx(I..IDII xY xvXQ~ XQx    &**
 3- 5/	
  SM l#   r2   