
    bCil                     N   S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	J
r
  S SKJr  S SKJr  S SKJrJrJrJrJrJrJrJr  S SKJrJr  SSKJrJr  SS	KJr  SS
K J!r!  SSK"J#r#J$r$J%r%J&r&J'r'J(r(J)r)J*r*J+r+J,r,  SSKJ-r-J.r.J/r/  SSKJ0r0  SSK1J2r2J3r3  Sr4\(       a  SSK5J6r6  \\7\4   r8O\R<                  R(                  r8 " S S\Rr                  5      r: " S S\8\&5      r; " S S\;5      r<\*4SSSSSS\Rz                  S.S\S\\7   S\\>   S\?S\\7   S\\3   S \7S!\2S"\<4S# jjjr@g)$    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                        \ rS rSrSrSrSrSrg)r%   7   deflategzipidentity N)__name__
__module____qualname____firstlineno__r,   r-   r.   __static_attributes__r/       N/home/james-whalen/.local/lib/python3.13/site-packages/aiohttp/web_response.pyr%   r%   7   s    
 GDHr5   r%   c                     ^  \ rS rSrSrSSSS.S\S\\   S\\   S	S4S
 jjr	\
S	\4S j5       r\
SOS j5       r\
S	\4S j5       r\
S	\4S j5       r\
S	\4S j5       r\
S	\4S j5       r SPS\S\\   S	S4S jjr\
S	\\   4S j5       rSQS jr\
S	\4S j5       r\
S	\4S j5       rSPS\\   S	S4S jjr SPS\\\\4      S	S4S jjr\
SRS j5       r\
S	\4S j5       rSSSSSSSSS.S\S\S \\   S!\\   S"\\\\4      S#\S$\\   S%\\   S&\\   S'\\   S	S4S( jjrSSS).S\S!\\   S#\S	S4S* jjr\
S	\\   4U 4S+ jj5       r \ RB                  S\\   S	S4S, j5       r \
S	\4U 4S- jj5       r"\"RB                  S\S	S4S. j5       r"\
S	\\   4U 4S/ jj5       r#\#RB                  S\\   S	S4S0 j5       r#\
S	\\$RH                     4S1 j5       r%\%RB                  S\\\\&\$RH                  \4      S	S4S2 j5       r%\
S	\\'   4S3 j5       r(\(RB                  S\\\'\4      S	S4S4 j5       r(\)RT                  4S5\+S	S4S6 jjr,S7\S	S4S8 jr-SSS; jr.S9S:S	\\/   4S< jr0S9S:S	\/4S= jr1SQS> jr2SQS? jr3S@\4S	S4SA jr5SQSB jr6STS@\4S	S4SC jjr7S	\4SD jr8SE\S	\94SF jr:SE\S\9S	S4SG jr;SE\S	S4SH jr<S	\4SI jr=S	\>\   4SJ jr?S	\4SK jr@SL\AS	\4SM jrBSNrCU =rD$ )Ur&   F   T   Nstatusreasonheadersr;   r<   r=   returnc                $   S U l         S U l        SU l        SU l        S U l        [        5       U l        S U l        S U l        SU l	        S U l
        SU l        0 U l        Ub  [        U5      U l        O[        5       U l        U R                  X5        g )NFr   )_body_keep_alive_chunked_compression_compression_forcer   _cookies_req_payload_writer	_eof_sent_must_be_empty_body_body_length_stater   _headers
set_status)selfr;   r<   r=   s       r6   __init__StreamResponse.__init__J   s     
+/!;?$+/	?C37 &(.9'.BDM'MDM'r5   c                     U R                   S L$ N)rG   rN   s    r6   preparedStreamResponse.preparedf   s    ##4//r5   c                 R    U R                   (       a  U R                   R                  $ g rR   )rF   taskrS   s    r6   rW   StreamResponse.taskj   s    9999>>!r5   c                     U R                   $ rR   )_statusrS   s    r6   r;   StreamResponse.statusq       ||r5   c                     U R                   $ rR   )rB   rS   s    r6   chunkedStreamResponse.chunkedu       }}r5   c                     U R                   $ rR   )rC   rS   s    r6   compressionStreamResponse.compressiony          r5   c                     U R                   $ rR   )_reasonrS   s    r6   r<   StreamResponse.reason}   r\   r5   c                     U R                   (       a   S5       e[        U5      U l        Uc    [        U R                  5      R                  nX l        g ! [
         a    Sn Nf = f)NzGCannot change the response status code after the headers have been sent )rT   intrZ   r   phrase
ValueErrorrf   )rN   r;   r<   s      r6   rM   StreamResponse.set_status   sc    
 == 	
X	
  6{>#DLL188   s   A A"!A"c                     U R                   $ rR   rA   rS   s    r6   
keep_aliveStreamResponse.keep_alive   s    r5   c                     SU l         g )NFro   rS   s    r6   force_closeStreamResponse.force_close   s
     r5   c                     U R                   $ rR   )rJ   rS   s    r6   body_lengthStreamResponse.body_length   rd   r5   c                     [         R                  " S[        5        U R                  (       d   eU R                  R                  $ )Nzoutput_length is deprecated)warningswarnDeprecationWarningrG   buffer_sizerS   s    r6   output_lengthStreamResponse.output_length   s3    35GH######///r5   
chunk_sizec                     SU l         [        R                  U R                  ;   a  [	        S5      eUb  [
        R                  " S[        5        gg)z,Enables automatic chunked transfer encoding.Tz>You can't enable chunked encoding when a content length is setNzChunk size is deprecated #1615)rB   r   CONTENT_LENGTHrL   RuntimeErrorry   rz   r{   )rN   r   s     r6   enable_chunked_encoding&StreamResponse.enable_chunked_encoding   sH    $--/S  !MM:<NO "r5   forcec                    [        U5      [        :X  aC  U(       a  [        R                  O[        R                  n[
        R                  " S[        5        OUb  [        U[        5      (       d   S5       eSU l	        Xl
        g)z&Enables response compression encoding.z+Using boolean for force is deprecated #3318Nz1force should one of None, bool or ContentEncodingT)typeboolr%   r,   r.   ry   rz   r{   
isinstancerC   rD   )rN   r   s     r6   enable_compression!StreamResponse.enable_compression   sl    
 ;$-2M))8N8NEMM=?Q e]33 I3 !"'r5   c                     U R                   $ rR   )rL   rS   s    r6   r=   StreamResponse.headers   r`   r5   c                     U R                   $ rR   )rE   rS   s    r6   cookiesStreamResponse.cookies   r`   r5   /)expiresdomainmax_agepathsecurehttponlyversionsamesitenamevaluer   r   r   r   r   r   r   r   c                   U R                   R                  U5      nUb,  UR                  S:X  a  U R                   R                  US5        X R                   U'   U R                   U   nUb  X<S'   OUR                  S5      S:X  a  US	 Ub  XLS'   Ub  [	        U5      US'   O	SU;   a  US	 XlS'   Ub  X|S'   Ub  XS	'   U	b  XS
'   U
b  XS'   gg)zSet or update response cookie.

Sets new cookie or updates existent with new value.
Also updates only those params which are not None.
Nri   r   Thu, 01 Jan 1970 00:00:00 GMTr   zmax-ager   r   r   r   r   )rE   getcoded_valuepopstr)rN   r   r   r   r   r   r   r   r   r   r   oldcs                r6   
set_cookieStreamResponse.set_cookie   s    & mm%?s"4MMdD)#dMM$"iLUU9!@@) hKw<AiL!^)&	 hK$jM"iL$jM  r5   )r   r   c          	      d    U R                   R                  US5        U R                  USSSUUS9  g)z2Delete cookie.

Creates new empty expired cookie.
Nri   r   r   )r   r   r   r   )rE   r   r   )rN   r   r   r   s       r6   
del_cookieStreamResponse.del_cookie   s;     	$%3 	 	
r5   c                    > [         TU ]  $ rR   )supercontent_lengthrN   	__class__s    r6   r   StreamResponse.content_length  s     w%%r5   c                     UbN  [        U5      nU R                  (       a  [        S5      e[        U5      U R                  [
        R                  '   g U R                  R                  [
        R                  S 5        g )Nz<You can't set content length when chunked encoding is enable)rj   rB   r   r   rL   r   r   r   rN   r   s     r6   r   r     s\    JE}}"U  25UDMM$--.MMd1148r5   c                    > [         TU ]  $ rR   )r   content_typer   s    r6   r   StreamResponse.content_type  s     w##r5   c                 \    U R                     [        U5      U l        U R                  5         g rR   )r   r   _content_type_generate_content_type_headerr   s     r6   r   r   "  s#     Z**,r5   c                    > [         TU ]  $ rR   )r   charsetr   s    r6   r   StreamResponse.charset(  s     wr5   c                    U R                   nUS:X  a  [        S5      eU R                  c   eUc  U R                  R                  SS 5        O&[	        U5      R                  5       U R                  S'   U R                  5         g )Napplication/octet-streamzYSetting charset for application/octet-stream doesn't make sense, setup content_type firstr   )r   r   _content_dictr   r   lowerr   )rN   r   ctypes      r6   r   r   -  s    !!..?  !!---=""9d3,/J,<,<,>Dy)**,r5   c                 f    [        U R                  R                  [        R                  5      5      $ )zeThe value of Last-Modified HTTP header, or None.

This header is represented as a `datetime` object.
)r   rL   r   r   LAST_MODIFIEDrS   s    r6   last_modifiedStreamResponse.last_modified<  s$     t}}001C1CDEEr5   c                 p   Uc+  U R                   R                  [        R                  S 5        g [	        U[
        [        45      (       a[  [        R                  " S[        R                  " [        R                  " U5      5      5      U R                   [        R                  '   g [	        U[        R                  5      (       aA  [        R                  " SUR                  5       5      U R                   [        R                  '   g [	        U[        5      (       a  XR                   [        R                  '   g g )Nz%a, %d %b %Y %H:%M:%S GMT)rL   r   r   r   r   rj   floattimestrftimegmtimemathceildatetimeutctimetupler   r   s     r6   r   r   D  s     =MMd00$7U|,,04+T[[59I-J1DMM$,,- x001104+U-?-?-A1DMM$,,- s##05MM$,,- $r5   c                    U R                   R                  [        R                  5      nU(       d  g U[        :X  a  [        [        S9$ [        R                  " U5      nU(       d  g UR                  SS5      u  p4[        [        U5      US9$ )N)r   r      )is_weakr   )
rL   r   r   ETAGr   r   r   	fullmatchgroupr   )rN   quoted_valuematchr   r   s        r6   etagStreamResponse.etagU  sr    }}((3X%h''((6Q*M
 	
r5   c                    Uc+  U R                   R                  [        R                  S 5        g [	        U[
        5      (       a
  U[        :X  d)  [	        U[        5      (       a6  UR                  [        :X  a"  [        U R                   [        R                  '   g [	        U[
        5      (       a-  [        U5        SU S3U R                   [        R                  '   g [	        U[        5      (       a  [	        UR                  [
        5      (       ac  [        UR                  5        UR                  (       a  SUR                   S3OSUR                   S3nX R                   [        R                  '   g [        S[        U5       S35      e)N"zW/"zUnsupported etag type: z . etag must be str, ETag or None)rL   r   r   r   r   r   r   r   r   r   r   rl   r   )rN   r   	hdr_values      r6   r   r   e  s   =MMdii.$$():ud##x(?'/DMM$))$s##&)*5'|DMM$))$t$$EKK)E)E,05#ekk]!,Qu{{mSTCUI'0MM$))$)$u+ 71 2 r5   CONTENT_TYPEc                    U R                   c   eU R                  c   eSR                  S U R                   R                  5        5       5      nU(       a  U R                  S-   U-   nOU R                  nX0R                  U'   g )Nz; c              3   4   #    U  H  u  pU S U 3v   M     g7f)=Nr/   ).0kvs      r6   	<genexpr>?StreamResponse._generate_content_type_header.<locals>.<genexpr>  s     M2L$!aS!:2Ls   )r   r   joinitemsrL   )rN   r   paramsr   s       r6   r   ,StreamResponse._generate_content_type_headerz  sz     !!---!!---M$2D2D2J2J2LMM&&-6E&&E&+l#r5   codingc                 @  #    U[         R                  :w  a  U R                  c   eUR                  U R                  [
        R                  '   U R                  R                  UR                  5        U R                  R                  [
        R                  S 5        g g 7frR   )
r%   r.   rG   r   rL   r   CONTENT_ENCODINGr   popallr   )rN   r   s     r6   _do_start_compression$StreamResponse._do_start_compression  sv     ]+++''33339<<DMM$//0  33FLLA MM  !4!4d; ,s   BBrequestr)   c                 ^  #    U R                   (       a$  U R                  U R                   5      I S h  vN   g UR                  R                  [        R
                  S5      R                  5       n[         H.  nUR                  U;   d  M  U R                  U5      I S h  vN     g    g  Nv N7f)Nri   )	rD   r   r=   r   r   ACCEPT_ENCODINGr   r%   r   )rN   r   accept_encodingr   s       r6   _start_compression!StreamResponse._start_compression  s     "",,T-D-DEEE &oo11$2F2FKQQSO'<<?244V<<< ( F =s(   0B-B)AB-B-B+ 
B-+B-c                    #    U R                   (       a  g U R                  b  U R                  $ [        UR                  U R                  5      U l        U R                  U5      I S h  vN $  N7frR   )rH   rG   r   methodr;   rI   _start)rN   r   s     r6   prepareStreamResponse.prepare  sS     >>+'''#5gnndkk#R [[))))s   A%A.'A,(A.c                    #    Xl         UR                  =o l        U R                  5       I S h  vN   UR                  U 5      I S h  vN   U R	                  5       I S h  vN   U$  N7 N  N
7frR   )rF   rG   _prepare_headers_prepare_hook_write_headers)rN   r   writers      r6   r   StreamResponse._start  sc     	(/(?(??%##%%%##D)))!!###	 	&)#s3   ,A,A&A,A(A,A* A,(A,*A,c                   #    U R                   nUc   eU R                  nUc   eU R                  nUc  UR                  nX0l        UR                  nU R
                  nU R                  R                  5        H5  nUR                  SS9SS  nUR                  [        R                  U5        M7     U R                  (       a  U R                  U5      I S h  vN   U R                  (       a  U[        :w  a$  [!        SR#                  UR                  5      5      eU R$                  (       d#  UR'                  5         SU[        R(                  '   [        R*                  U;   a  U[        R*                  	 OU R,                  (       ap  U R.                  Ul        UR0                  cR  U[        :  a5  U R$                  (       d#  UR'                  5         SU[        R(                  '   OU R$                  (       d  SnU R$                  (       ap  [        R*                  U;   a6  [3        UR4                  U R6                  5      (       a  U[        R*                  	 [        R(                  U;   a  U[        R(                  	 O UR9                  [        R:                  S5        UR9                  [        R<                  [?        5       5        UR9                  [        R@                  [B        5        [        RD                  U;  aE  U(       a  U[F        :X  a  SU[        RD                  '   g g U[        :X  a  S	U[        RD                  '   g g g  GNf7f)
Nri   )headerr   z@Using chunked encoding is forbidden for HTTP/{0.major}.{0.minor}r^   Fr   z
keep-aliveclose)$rF   rG   rA   rp   r   rL   rE   valuesoutputaddr   
SET_COOKIErC   r   rB   r!   r   formatrI   enable_chunkingTRANSFER_ENCODINGr   _length_checkr   lengthr   r   r;   
setdefaultr   DATEr   SERVERr   
CONNECTIONr    )rN   r   r   rp   r   r=   cookier   s           r6   r   StreamResponse._prepare_headers  s    ))"""%%!!!%%
 ++J%//--mm**,FMMM,QR0EKK/ - ))'222==-'"3396'//3J  ++&&(2;../""g-D//0 //FM}}$m+33..0:C 6 6711!&J ##""g-2N3 3 D//0 %%0D223t002LM499&;&=>4;;8 ??')m+/;GDOO, , m+/6GDOO, , *Q 3s   CL?L<I&L?c                   #    U R                   nUc   eU R                  nUc   eUR                  nSR                  US   US   U R                  U R
                  5      nUR                  X@R                  5      I S h  vN   g  N7f)NzHTTP/{}.{} {} {}r   r   )rF   rG   r   r  rZ   rf   write_headersrL   )rN   r   r   r   status_lines        r6   r   StreamResponse._write_headers  s}     ))"""%%!!!//(//AJ
DLL$,,
 "";>>>s   A;B=B>Bdatac                 $  #    [        U[        [        [        45      (       d   S[	        U5      -  5       eU R
                  (       a  [        S5      eU R                  c  [        S5      eU R                  R                  U5      I S h  vN   g  N7f)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   rH   r   rG   writerN   r  s     r6   r  StreamResponse.write  s     5)Z0
 
 	>04:=	> 
 >>FGG'EFF""((...s   BBB	Bc                    #    U R                   (       a   S5       eU R                  c   S5       e[        R                  " S[        SS9  U R                  R                  5       I S h  vN   g  N7f)NzEOF has already been sentResponse has not been startedz2drain method is deprecated, use await resp.write()r   )
stacklevel)rH   rG   ry   rz   r{   drainrS   s    r6   r  StreamResponse.drain  s_     >>>#>>!##/P1PP/@	

 ""((***s   A$A.&A,'A.c                 h  #    [        U[        [        [        45      (       d   S[	        U5      -  5       eU R
                  (       a  g U R                  c   S5       eU R                  R                  U5      I S h  vN   SU l        S U l        U R                  R                  U l
        S U l        g  N57f)Nr  r  T)r   r  r  r  r   rH   rG   	write_eofrF   output_sizerJ   r  s     r6   r"  StreamResponse.write_eof  s     5)Z0
 
 	>04:=	> 
 >>##/P1PP/"",,T222	 00<<#	 	3s   A8B2:B0;6B2c                 $   U R                   (       a  SnOSU R                  (       a@  U R                  c   eU R                  R                   SU R                  R                   S3nOSnSU R
                  R                   SU R                   SU S3$ )Neof znot prepared<>)rH   rT   rF   r   r   r   r0   r<   )rN   infos     r6   __repr__StreamResponse.__repr__!  sz    >>D]]99(((ii&&'q(8:D!D4>>**+1T[[M4&BBr5   keyc                      U R                   U   $ rR   rK   rN   r-  s     r6   __getitem__StreamResponse.__getitem__+  s    {{3r5   c                      X R                   U'   g rR   r/  )rN   r-  r   s      r6   __setitem__StreamResponse.__setitem__.  s     Cr5   c                     U R                   U	 g rR   r/  r0  s     r6   __delitem__StreamResponse.__delitem__1  s    KKr5   c                 ,    [        U R                  5      $ rR   )lenrK   rS   s    r6   __len__StreamResponse.__len__4  s    4;;r5   c                 ,    [        U R                  5      $ rR   )iterrK   rS   s    r6   __iter__StreamResponse.__iter__7  s    DKK  r5   c                 *    [        [        U 5      5      $ rR   )hashidrS   s    r6   __hash__StreamResponse.__hash__:  s    BtH~r5   otherc                     XL $ rR   r/   )rN   rF  s     r6   __eq__StreamResponse.__eq__=  s
    }r5   )r@   rJ   rB   rC   rD   r   rE   rH   rL   rA   rI   rG   rf   rF   rK   rZ   )r>   zOptional[asyncio.Task[None]]rR   )r>   N)r>   zCIMultiDict[str])r   r)   r>   Nr5   )Er0   r1   r2   r3   r  rj   r   r   r$   rO   propertyr   rT   rW   r;   r^   rb   r<   rM   rp   rs   rv   r}   r   r   r%   r   r=   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   r1  r4  r7  r;  r	   r?  rD  objectrH  r4   __classcell__r   s   @r6   r&   r&   F   s|   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  r5   r&   c                     ^  \ rS rSrSSSSSSSSSS.	S\S\S\\   S\\   S	\\   S
\\   S\\   S\\   S\\	   SS4U 4S jjjr
\S\\\\4      4S j5       r\R                   S\SS4S j5       r\S\\   4S j5       r\R                   S\SS4S j5       r\S\\   4U 4S jj5       r\R                   S\\   SS4S j5       rSS\SS4U 4S jjjrSSS\4U 4S jjrS\SS4U 4S jjrSrU =r$ ) r'   iA  Nr9   )	bodyr;   r<   textr=   r   r   zlib_executor_sizezlib_executorrQ  r;   r<   rR  r=   r   r   rS  rT  r>   c       	           > Ub  Ub  [        S5      eUc  [        5       n
O#[        U[        5      (       d  [        U5      n
OUn
Ub  SU;   a  [        S5      eUb  [        R                  U
;   a  U(       d  U(       a  [        S5      eO[        U[
        5      (       d  [        S[        U5      -  5      eUc  SnUc  SnUS-   U-   U
[        R                  '   UR                  U5      nS nOF[        R                  U
;   a  Uc  Ub  [        S5      eO Ub  Ub  USU-   -  nXj[        R                  '   [        TU ])  X#U
S	9  Ub  X@l        OXl        S U l        Xl        Xl        g )
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=r:   )rl   r   r   r   r   r   	TypeErrorr   encoder   rO   rR  rQ  _compressed_body_zlib_executor_size_zlib_executor)rN   rQ  r;   r<   rR  r=   r   r   rS  rT  real_headersr   s              r6   rO   Response.__init__B  s     0EFF?-8]LG[11&w/L"L#	\(ANOO  L07$'  $+ "$,,#$DtDz$QRR'#/L?%G2>2MPW2WT../{{7+  L0+w/B$'  0C  +*$w(>>6B!2!23|LII15#5 +r5   c                     U R                   $ rR   )r@   rS   s    r6   rQ  Response.body  s    zzr5   c                 :   Uc  S U l         SU l        O[        U[        [        45      (       a  Xl         SU l        O [
        R                  R                  U5      =U l         nSU l        U R                  n[        R                  U;  a  UR                  U[        R                  '   UR                  (       a.  UR                  R!                  5        H  u  p4X2;  d  M  XBU'   M     S U l        g ! [
        R                   a    [        S[        U5      -  5      ef = f)NFzUnsupported body type %rT)r@   _body_payloadr   r  r  r   PAYLOAD_REGISTRYr   LookupErrorrl   r   rL   r   r   r   r=   r   r[  )rN   rQ  r=   r-  r   s        r6   rQ  ra    s    <*.DJ',Dui011J!&DJ$+$<$<$@$@$FF
T "&DmmG   /-1->->))* ||$(LL$6$6$8LS)', %9 !%# && J !;d4j!HIIJs   &C. .,Dc                 z    U R                   c  g U R                   R                  U R                  =(       d    S5      $ )NrX  )r@   decoder   rS   s    r6   rR  Response.text  s-    ::zz  !899r5   c                    Ub(  [        U[        5      (       d   S[        U5      -  5       eU R                  S:X  a  SU l        U R                  c  SU l        UR                  U R                  5      U l        SU l        S U l        g )NrV  r   rW  rX  F)	r   r   r   r   r   rZ  r@   rc  r[  )rN   rR  s     r6   rR  rh    s    |z# 
  
 	9+d4j8	9 
  :: ,D<<"DL[[.
" $r5   c                 &  > U R                   (       a  g [        R                  U R                  ;   a
  [        TU ]  $ U R                  b  [        U R                  5      $ U R                  (       a  g U R                  b  [        U R                  5      $ g)Nr   )
rB   r   r   rL   r   r   r[  r:  rc  r@   r   s    r6   r   Response.content_length  sn    ==$--/7))  ,t,,--ZZ#tzz?"r5   r   c                     [        S5      e)Nz#Content length is set automatically)r   r   s     r6   r   rk    s    @AAr5   r  c                 x  >#    U R                   (       a  g U R                  c  U R                  nOU R                  nU(       a   SU< 35       eU R                  c   eU R                  c   eUb  U R
                  (       a  [        TU ]  5       I S h  vN   g U R                  (       aK  [        [        U5      nUR                  " U R                  5      I S h  vN   [        TU ]  5       I S h  vN   g [        TU ]  [        [        U5      5      I S h  vN   g [        TU ]  5       I S h  vN   g  N NZ NF N" N7f)Nzdata arg is not supported, got )rH   r[  r@   rF   rG   rI   r   r"  rc  r   r"   r  r  )rN   r  rQ  r   r   s       r6   r"  Response.write_eof  s    >>  (48JJD((DC:4(CCxyy$$$##///''g')))##w-mmD$8$8999g')))g'UD(9:::'#%%% * :):%s[   BD:D0AD:D2D:-D4.%D:D6D:*D8+D:2D:4D:6D:8D:r   r)   c                 <  >#    [        UR                  U R                  5      (       a;  [        R                  U R
                  ;   a  U R
                  [        R                  	 GOU R                  (       Gd  [        R                  U R
                  ;  a  U R                  (       aN  [        [        U R                  5      R                  nUb&  [        U5      U R
                  [        R                  '   OU R                  (       a  [        U R                  5      OSnUS:w  d<  U R                  S:w  aR  UR                  R                  5       [        R                  :w  a&  [        U5      U R
                  [        R                  '   [         TU ]E  U5      I S h  vN $  N7f)N0i0  )r   r   r;   r   r   rL   rB   rc  r   r"   r@   sizer   r:  upper	METH_HEADr   r   )rN   r   rq  body_lenr   s       r6   r   Response._start  s    'D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   FFFFr   c                 .  >#    U R                   (       d  U R                  (       a  [        TU ]  U5      I S h  vN $ U[        R
                  :w  Ga=  [        [        UR                  5      U R                  U R                  S9nU R                  c   eU R                  cF  [        U R                  5      S:  a-  [        R                  " S[        U R                  5       S35        UR                  U R                  5      I S h  vN UR!                  5       -   U l        U R"                  c   eUR                  U R$                  [&        R(                  '   [        [        U R"                  5      5      U R$                  [&        R*                  '   g g  GNX N7f)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.)rc  rB   r   r   r%   r.   r   r   r   r\  r]  r@   r:  ry   rz   compressflushr[  rL   r   r   r   )rN   r   
compressorr   s      r6   r   Response._do_start_compression  sD    6v>>>]+++ (V\\*$($<$<,,J
 ::)))''/C

Ok4QDJJ( )XX !))$**55
8H8H8JJ ! ((44439<<DMM$//014S9N9N5O1PDMM$--.- , ?& 6s#   5FFCFFBFF)	r@   rc  r[  r]  r\  rQ  r   r   rR  rJ  )r0   r1   r2   r3   r   rj   r   r   r$   r   rO   rK  r   r  r"   rQ  rL  rR  r   r"  r   r   r%   r   r4   rN  rO  s   @r6   r'   r'   A  s     $"*.&*!%,0,0D, D, 	D,
 D, smD, ,'D, smD, #D, %SMD,  )D, 
D, D,L huUG^45   
[[% %4 % %: :hsm : :
 
[[% % % %   $ BHSM Bd B B&E &D & &,-M -6J -&Q- QD Q Qr5   r'   r9   zapplication/json)rR  rQ  r;   r<   r=   r   dumpsr  rR  rQ  r;   r<   r=   r   r~  r>   c          	      r    U [         La!  U(       d  U(       a  [        S5      eU" U 5      n[        UUUUUUS9$ )Nz3only one of data, text, or body should be specified)rR  rQ  r;   r<   r=   r   )r   rl   r'   )r  rR  rQ  r;   r<   r=   r   r~  s           r6   r(   r(     sE     84RSS;D! r5   )Aasynciocollections.abccollectionsr   enumjsonr   r   ry   concurrent.futuresr   httpr   http.cookiesr   typingr   r   r   r	   r
   r   r   r   	multidictr   r   ri   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'   r~  r  rj   r(   r/   r5   r6   <module>r     sP           '  %	 	 	 (  % -   @ ?  /
J (sCx(I..IDII xY xvXQ~ XQx    &**
 3- 5/	
  SM l#   r5   