
    rp0j?x                     v   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	J
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  S SKJrJr  SS	KJrJr  SS
KJr  SSK J!r!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-J.r.  SSKJ/r/J0r0J1r1  SSKJ2r2  SSK3J4r4J5r5J6r6  \ V s0 s H  o Rn                  U Rp                  _M     sn r9Sr:\(       a  SSK;J<r<  \
\=\4   r>O\R<                  R                  r>\" S5      r? " S S\R                  5      rA\A Vs0 s H  oRn                  U_M     snrB " S S\
\=\(\   -  \4   \'5      rC " S S\C5      rD\,4SSSSSS\R                  S.S\S\=S-  S\FS-  S\GS \=S-  S!\6S-  S"\=S#\5S$\D4S% jjjrH\,4SSSSSS&.S\S#\4S\FS-  S\GS \=S-  S!\6S-  S"\=S$\D4S' jjjrIgs  sn f s  snf )(    N)IteratorMutableMapping)Executor)
HTTPStatus)SimpleCookie)TYPE_CHECKINGAnyOptionalTypeVarcastoverload)CIMultiDictistr   )hdrspayload)AbstractStreamWriter)MAX_SYNC_CHUNK_SIZEZLibCompressor)ETAG_ANYQUOTED_ETAG_REETagHeadersMixinResponseKeymust_be_empty_bodyparse_http_daterfc822_formatted_timesentinelshould_remove_content_lengthvalidate_etag_value)SERVER_SOFTWAREHttpVersion10HttpVersion11)Payload)JSONBytesEncoderJSONEncoderLooseHeaders)ContentCodingStreamResponseResponsejson_responsejson_bytes_response)BaseRequest_Tc                        \ rS rSrSrSrSrSrg)r(   <   deflategzipidentity N)__name__
__module____qualname____firstlineno__r1   r2   r3   __static_attributes__r4       N/home/wildlama/miniconda3/lib/python3.13/site-packages/aiohttp/web_response.pyr(   r(   <   s    
 GDHr:   r(   c                     ^  \ rS rSr% S\-  \-  \-  \S'   SrSr	Sr
\S-  \S'   Sr\\S'   Sr\\S'   Sr\S-  \S	'   Sr\S-  \S
'   Sr\S   \S'   Sr\S-  \S'   Sr\\S'   Sr\S-  \S'   SrSr\S-  \S'   Sr\" 5       r\\   \S'   SSSSS.S\S\S-  S\S-  S\ \   S-  SS4
S jjr!\"S\4S j5       r#\"SfS 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( SgS\S\S-  SS4S! jjr)S\S\S-  SS4S" jr*\"S\S-  4S# j5       r+ShS$ jr,\"S\4S% j5       r-\"S\4S& j5       r.SgS'\S-  SS4S( jjr/  SiS)\\-  S-  S*\S-  SS4S+ jjr0\"SjS, j5       r1\"S\4S- j5       r2SSSS.SSSSSS/.	S0\S1\S2\S-  S3\S-  S4\\-  S-  S5\S6\S-  S7\S-  S8\S-  S9\S-  S:\S-  SS4S; jjr3SS.SSSS<.S0\S3\S-  S5\S6\S-  S7\S-  S9\S-  SS4S= jjr4\"S\S-  4U 4S> jj5       r5\5Rl                  S1\S-  SS4S? j5       r5\"S\4U 4S@ jj5       r7\7Rl                  S1\SS4SA j5       r7\"S\S-  4U 4SB jj5       r8\8Rl                  S1\S-  SS4SC j5       r8\"S\9Rr                  S-  4SD j5       r:\:Rl                  S1\\;-  \9Rr                  -  \-  S-  SS4SE j5       r:\"S\<S-  4SF j5       r=\=Rl                  S1\<\-  S-  SS4SG j5       r=\>R~                  4SH\@SS4SI jjrASJ\SS4SK jrBSkSM jrCSLSS\S-  4SN jrDSLSS\4SO jrEShSP jrFShSQ jrGSR\\-  \H-  SS4SS jrIShST jrJSlSR\SS4SU jjrKS\4SV jrL\MSW\N\O   S\O4SX j5       rP\MSW\S\Q4SY j5       rPSW\\N\O   -  S\Q4SZ jrP\MSW\N\O   S1\OSS4S[ j5       rR\MSW\S1\QSS4S\ j5       rRSW\\N\O   -  S1\QSS4S] jrRSW\\N\O   -  SS4S^ jrSS\4S_ jrTS\U\\N\Q   -     4S` jrVS\4Sa jrWSb\XS\4Sc jrYS\4Sd jrZSer[U =r\$ )mr)   M   N_bodyT_keep_aliveF_chunked_compression_compression_strategy_compression_forcer-   _req_payload_writer	_eof_sent_must_be_empty_bodyr   _cookies_seen_str_keys   )statusreasonheaders_real_headersrK   rL   rM   rN   returnc                    0 U l         Ub  X@l        O#Ub  [        U5      U l        O[        5       U l        U R                  X5        g)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)selfrK   rL   rM   rN   s        r;   __init__StreamResponse.__init__`   s?     :<$)M .9'.BDM'MDM(r:   c                 D    U R                   =(       d    U R                  S L$ N)rF   rE   rT   s    r;   preparedStreamResponse.preparedz   s    ~~A!5!5T!AAr:   c                 R    U R                   (       a  U R                   R                  $ g rX   )rD   taskrY   s    r;   r]   StreamResponse.task~   s    9999>>!r:   c                     U R                   $ rX   )_statusrY   s    r;   rK   StreamResponse.status       ||r:   c                     U R                   $ rX   )r@   rY   s    r;   chunkedStreamResponse.chunked       }}r:   c                     U R                   $ rX   )rA   rY   s    r;   compressionStreamResponse.compression          r:   c                     U R                   $ rX   )_reasonrY   s    r;   rL   StreamResponse.reason   rb   r:   c                 V    U R                   (       a   S5       eU R                  X5        g )NzGCannot change the response status code after the headers have been sent)rZ   rS   rT   rK   rL   s      r;   
set_statusStreamResponse.set_status   s+     	UT	U(r:   c                     [        U5      U l        Uc!  [        R                  U R                  S5      nOSU;   d  SU;   a  [	        S5      eX l        g )N 
zReason cannot contain \r or \n)intr`   REASON_PHRASESget
ValueErrorrl   ro   s      r;   rS   StreamResponse._set_status   sF    6{>#''b9FV^tv~?@@r:   c                     U R                   $ rX   r?   rY   s    r;   
keep_aliveStreamResponse.keep_alive   s    r:   c                     SU l         g )NFr|   rY   s    r;   force_closeStreamResponse.force_close   s
     r:   c                     U R                   $ rX   )_body_lengthrY   s    r;   body_lengthStreamResponse.body_length   rj   r:   c                     [         R                  " S[        5        U R                  (       d   eU R                  R                  $ )Nzoutput_length is deprecated)warningswarnDeprecationWarningrE   buffer_sizerY   s    r;   output_lengthStreamResponse.output_length   s3    35GH######///r:   
chunk_sizec                     [         R                  U R                  ;   a  [        S5      eUb  [        R
                  " S[        5        SU l        g)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_LENGTHrR   RuntimeErrorr   r   r   r@   )rT   r   s     r;   enable_chunked_encoding&StreamResponse.enable_chunked_encoding   sC    $--/P  !MM:<NOr:   forcestrategyc                    [        U[        5      (       aC  U(       a  [        R                  O[        R                  n[
        R                  " S[        5        OUb  [        U[        5      (       d   S5       eSU l        Xl	        X l
        g)z&Enables response compression encoding.z+Using boolean for force is deprecated #3318Nz1force should one of None, bool or ContentEncodingT)
isinstanceboolr(   r1   r3   r   r   r   rA   rC   rB   )rT   r   r   s      r;   enable_compression!StreamResponse.enable_compression   s|     eT""-2M))8N8NEMM=?Q }  CBC  !"'%-"r:   c                     U R                   $ rX   )rR   rY   s    r;   rM   StreamResponse.headers   rf   r:   c                 R    U R                   c  [        5       U l         U R                   $ rX   )rH   r   rY   s    r;   cookiesStreamResponse.cookies   s    == (NDM}}r:   /)	expiresdomainmax_agepathsecurehttponlyversionsamesitepartitionednamevaluer   r   r   r   r   r   r   r   r   c       	         J   U R                   c  [        5       U l         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
'   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.
Nr   Thu, 01 Jan 1970 00:00:00 GMTr   zmax-ager   r   r   r   r   r   )rH   r   rx   str)rT   r   r   r   r   r   r   r   r   r   r   r   cs                r;   
set_cookieStreamResponse.set_cookie   s    ( == (NDM#dMM$"iLUU9!@@) hKw<AiL!^)&	 hK$jM"iL$jM"*m #r:   )r   r   r   r   r   c                    U R                   b  U R                   R                  US5        U R                  USSSUUUUUS9	  g)z2Delete cookie.

Creates new empty expired cookie.
Nrs   r   r   )r   r   r   r   r   r   r   )rH   popr   )rT   r   r   r   r   r   r   s          r;   
del_cookieStreamResponse.del_cookie  sN     ==$MMdD)3 	 
	
r:   c                    > [         TU ]  $ rX   )supercontent_lengthrT   	__class__s    r;   r   StreamResponse.content_length3  s     w%%r:   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)rv   r@   r   r   rR   r   r   r   rT   r   s     r;   r   r   8  s\    JE}}"R  25UDMM$--.MMd1148r:   c                    > [         TU ]  $ rX   )r   content_typer   s    r;   r   StreamResponse.content_typeD  s     w##r:   c                 \    U R                     [        U5      U l        U R                  5         g rX   )r   r   _content_type_generate_content_type_headerr   s     r;   r   r   I  s#     Z**,r:   c                    > [         TU ]  $ rX   )r   charsetr   s    r;   r   StreamResponse.charsetO  s     wr:   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   )rT   r   ctypes      r;   r   r   T  s    !!..?  !!---=""9d3,/J,<,<,>Dy)**,r:   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   rR   rx   r   LAST_MODIFIEDrY   s    r;   last_modifiedStreamResponse.last_modifiedc  s$     t}}001C1CDEEr:   c                    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 S[        U5      R                    3n[#        U5      e)Nz%a, %d %b %Y %H:%M:%S GMTz$Unsupported type for last_modified: )rR   r   r   r   r   rv   floattimestrftimegmtimemathceildatetimeutctimetupler   typer5   	TypeError)rT   r   msgs      r;   r   r   k  s     =MMd00$7U|,,04+T[[59I-J1DMM$,,- x001104+U-?-?-A1DMM$,,- s##05MM$,,-8e9M9M8NOCC. r:   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   )
rR   rx   r   ETAGr   r   r   	fullmatchgroupr   )rT   quoted_valuematchr   r   s        r;   etagStreamResponse.etag  sr    }}((3X%h''((6Q*M
 	
r:   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)rR   r   r   r   r   r   r   r   r   r    r   ry   r   )rT   r   	hdr_values      r;   r   r     s   =MMdii.$$():ud##x(?'/DMM$))$s##&)*5'|DMM$))$t$$EKK)E)E,05#ekk]!,Qu{{mSTCUI'0MM$))$)$u+ 71 2 r:   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)=Nr4   ).0kvs      r;   	<genexpr>?StreamResponse._generate_content_type_header.<locals>.<genexpr>  s     M2L$!aS!:2Ls   )r   r   joinitemsrR   )rT   r   paramsr   s       r;   r   ,StreamResponse._generate_content_type_header  sz     !!---!!---M$2D2D2J2J2LMM&&-6E&&E&+l#r:   codingc                 T  #    U[         R                  L a  g U R                  c   eUR                  U R                  [
        R                  '   U R                  R                  UR                  U R                  5        U R                  R                  [
        R                  S 5        g 7frX   )r(   r3   rE   r   rR   r   CONTENT_ENCODINGr   rB   popallr   )rT   r   s     r;   _do_start_compression$StreamResponse._do_start_compression  s     ]+++##////5||d++,//LL$44	

 	T00$7s   B&B(requestc                 h  #    U R                   (       a$  U R                  U R                   5      I S h  vN   g UR                  R                  [        R
                  S5      R                  5       n[        R                  5        H%  u  p4X2;   d  M  U R                  U5      I S h  vN     g    g  N{ N7f)Nrs   )	rC   r   rM   rx   r   ACCEPT_ENCODINGr   CONTENT_CODINGSr   )rT   r   accept_encodingr   r   s        r;   _start_compression!StreamResponse._start_compression  s     "",,T-D-DEEE "//--d.B.BBGMMO,224ME'00888 5 F 9s(   0B2B.AB2B2$B0%
B20B2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rX   )rF   rE   r   methodrK   rG   _start)rT   r   s     r;   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rX   )rD   rE   _prepare_headers_prepare_hook_write_headers)rT   r   writers      r;   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                  (       aS  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                  (       ax  U[        :w  a9  [!        SUR                  R"                   SUR                  R$                   35      eU R&                  (       d#  UR)                  5         S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  [        R2                  U;   a6  [5        UR6                  U R8                  5      (       a  U[        R2                  	 [        R*                  U;   a  U[        R*                  	 OMU R,                  (       a  UR0                  OU R.                  S:w  a   UR;                  [        R<                  S	5        UR;                  [        R>                  [A        5       5        UR;                  [        RB                  [D        5        [        RF                  U;  aE  U(       a  U[H        :X  a  S
U[        RF                  '   g g U[        :X  a  SU[        RF                  '   g g g  GN7f)Nrs   )headerr   z-Using chunked encoding is forbidden for HTTP/.rd   Fr   r   z
keep-aliveclose)%rD   rE   r?   r}   r   rR   rH   valuesoutputaddr   
SET_COOKIErA   r   r@   r#   r   majorminorrG   enable_chunkingTRANSFER_ENCODING_length_checkr   lengthr   r   r  rK   
setdefaultr   DATEr   SERVERr!   
CONNECTIONr"   )rT   r   r  r}   r   rM   cookier   s           r;   r  StreamResponse._prepare_headers  s    ))"""%%!!!%%
 ++J%//--==--..0R04DOOU3 1 ))'222==-'"  ' 5 56a8M8M7NP  ++&&(2;../ //FM}}$m+33..0:C 6 6711!&J ##""g-2N3 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%M-'M*(JM-c                 F  #    U R                   nUc   eU R                  nUc   eUR                  nSUS    SUS    SU R                   SU R                   3nUR                  X@R                  5      I S h  vN   U R                  (       a  UR                  5         g g  N'7f)NzHTTP/r   r  r    )	rD   rE   r   r`   rl   write_headersrR   _send_headers_immediatelysend_headers)rT   r   r  r   status_lines        r;   r
  StreamResponse._write_headers  s     ))"""%%!!!//gaj\71:,a~Qt||nU"";>>>))! * 	?s   A5B!7B8(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   rF   r   rE   writerT   r(  s     r;   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)rF   rE   r   r   r   drainrY   s    r;   r4  StreamResponse.drain4  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*  r2  T)r   r+  r,  r-  r   rF   rE   	write_eofrD   output_sizer   r/  s     r;   r7  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eofr"  znot prepared<>)rF   rZ   rD   r  r   r   r5   rL   )rT   infos     r;   __repr__StreamResponse.__repr__N  sz    >>D]]99(((ii&&'q(8:D!D4>>**+1T[[M4&BBr:   keyc                     g rX   r4   rT   rA  s     r;   __getitem__StreamResponse.__getitem__X  s    7:r:   c                     g rX   r4   rC  s     r;   rD  rE  [  s    ,/r:   c                      U R                   U   $ rX   rQ   rC  s     r;   rD  rE  ^  s    {{3r:   c                     g rX   r4   rT   rA  r   s      r;   __setitem__StreamResponse.__setitem__a  s    DGr:   c                     g rX   r4   rJ  s      r;   rK  rL  d  s    9<r:   c                     [        U[        5      (       dO  U[        R                  ;  a;  SSKJn  [        R                  R                  U5        [        R                  " SUSS9  X R                  U'   g )Nr   )NotAppKeyWarningzIt is recommended to use web.ResponseKey instances for keys.
https://docs.aiohttp.org/en/stable/web_advanced.html#response-s-storager   )categoryr3  )
r   r   r)   rI   web_exceptionsrO  r  r   r   rQ   )rT   rA  r   rO  s       r;   rK  rL  g  s]    3,,>888 9))--c2MM( * !Cr:   c                     U R                   U	 g rX   rH  rC  s     r;   __delitem__StreamResponse.__delitem__y  s    KKr:   c                 ,    [        U R                  5      $ rX   )lenrQ   rY   s    r;   __len__StreamResponse.__len__|  s    4;;r:   c                 ,    [        U R                  5      $ rX   )iterrQ   rY   s    r;   __iter__StreamResponse.__iter__  s    DKK  r:   c                 *    [        [        U 5      5      $ rX   )hashidrY   s    r;   __hash__StreamResponse.__hash__  s    BtH~r:   otherc                     XL $ rX   r4   )rT   rb  s     r;   __eq__StreamResponse.__eq__  s
    }r:   c                     g)NTr4   rY   s    r;   __bool__StreamResponse.__bool__  s    r:   )r   r@   rA   rC   rB   r   rH   rF   rR   r?   rG   rE   rl   rD   rQ   r`   )rO   zasyncio.Task[None] | NonerX   )rO   N)NN)rO   zCIMultiDict[str])r   r-   rO   Nr:   )]r5   r6   r7   r8   r+  r,  r$   __annotations__r  r>   r?   r   r@   rA   rB   rv   rC   r(   rD   r
   rE   r   rF   rG   r   rH   r   r$  setrI   r   r'   r   rU   propertyrZ   r]   rK   rd   rh   rL   rp   rS   r}   r   r   r   r   r   rM   r   r   r   r   setterr   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r
  r-  r.  r4  r7  r?  r   r   r.   rD  r	   rK  rS  rW  r   r[  r`  objectrd  rg  r9   __classcell__r   s   @r;   r)   r)   M   sm   %<)#g--ME#K#HdL$(,3:,/3,3$(D(=
!(37O)D07It'++L$(HlT!( $"uNCH$
 !'+15) ) d
	)
 $) #3'$.) 
)4 B$ B B         !T ! !    ")) d
) 
	)# sTz d   D4K    ! !S ! ! 0s 0 0
#*   .2#.m#d*. *. 
	.*      #!$(" $"##'3+3+ 3+
 t3+ d
3+ sT!3+ 3+ t3+ +3+ t3+ *3+ D[3+ 
3+r "" $#

 d
	

 
 t
 +
 *
 

: &d
 & & 	9C$J 	94 	9 	9 $c $ $ -# -$ - -
 t   ^^-S4Z -D - - Fx0047 F F !5[8#4#44s:TA!	! !& 
dTk 
 
 
[[$*t+   * $(#4#4
, 
,	
,
8- 
8D 
8
*] *7Kd7R *M 6J ?3B"
/	 1J > 
/4 
/+$E $D $ C# C :{2:2: :/s/s/ / s[_4     G{2GrGdG G<s<3<4< <!s[_4 !S !T !$s[_4     !(3S)9#9: !# F t $  r:   r)   c                     ^  \ rS rSr% Sr\S-  \S'   SrSSSSS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\\-  \-  S-  4S j5       r\R&                  S\	SS4S j5       r\S\S-  4S j5       r\R&                  S
\SS4S j5       r\S\
S-  4S j5       r\R&                  S\
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*   i  N_compressed_bodyFrJ   )	bodyrK   rL   textrM   r   r   zlib_executor_sizezlib_executorrs  rK   rL   rt  rM   r   r   ru  rv  rO   c       	           > Ub  Ub  [        S5      eUc  [        5       n
O[        U5      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        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=)rK   rL   rN   )ry   r   r   r   r   r   r   r   encoder   rU   rt  rs  _zlib_executor_size_zlib_executor)rT   rs  rK   rL   rt  rM   r   r   ru  rv  real_headersr   s              r;   rU   Response.__init__  sk     0EFF?-8]L&w/L#	\(AKLL  L07$'  $+ "$,,#$DtDz$QRR'#/L?%G2>2MPW2WT../{{7+,.'7+> #  ,? %"w 66.:**+\RII#5 +r:   c                     U R                   $ rX   )r>   rY   s    r;   rs  Response.body  s    zzr:   c                    Uc  S U l         O[        U[        [        45      (       a  Xl         O [        R
                  R                  U5      =U l         n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)NzUnsupported body type %r)r>   r   r+  r,  r   PAYLOAD_REGISTRYrx   LookupErrorry   r   rR   r   r   r   rM   r   rr  )rT   rs  rM   rA  r   s        r;   rs  r    s    <DJui011JJ$+$<$<$@$@$FF
T mmG   /-1->->))* ||"&,,"4"4"6JC)', #7 !% && J !;d4j!HIIJs   &C ,Dc                 z    U R                   c  g U R                   R                  U R                  =(       d    S5      $ )Nrz  )r>   decoder   rY   s    r;   rt  Response.text  s/    :: zz  !899r:   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        g )Nrx  r   ry  rz  )r   r   r   r   r   r{  r>   rr  )rT   rt  s     r;   rt  r    sy    |z# 
  
 	9+d4j8	9 
  :: ,D<<"DL[[.
 $r:   c                 x   U R                   (       a  g [        R                  U R                  ;   a&  [	        U R                  [        R                     5      $ U R
                  b  [        U R
                  5      $ [        U R                  [        5      (       a  g U R                  b  [        U R                  5      $ g)Nr   )
r@   r   r   rR   rv   rr  rV  r   r>   r$   rY   s    r;   r   Response.content_length  s    ==$--/t}}T%8%89::  ,t,,--

G,,ZZ#tzz?"r:   r   c                     [        S5      e)Nz#Content length is set automatically)r   r   s     r;   r   r    s    @AAr:   r(  c                   >#    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                  [        5      (       ag   U R                  R                  U R                  5      I S h  vN   U R                  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  N Ne NE! U R                  R                  5       I S h  vN    f = f NY N57f)Nzdata arg is not supported, got )rF   rr  r>   rD   rE   rG   r   r7  r   r$   r.  r  r   r+  )rT   r(  rs  r   s      r;   r7  Response.write_eof  s$    >>  (::D((DC:4(CCxyy$$$##///<433'#%%%

G,,)jj&&t';';<<<jj&&((('#%%%'#D$5666 & =(djj&&(((%6sx   BE5E$E57(E	 E E	 $E5EE5E1%E5=E3>E5E	 E5	E.'E*(E..E53E5r   r-   c                   >#    [         R                  U R                  ;   aA  [        UR                  U R
                  5      (       a  U R                  [         R                  	 OU R                  (       d  [        U R                  [        5      (       a@  U R                  R                  =nb&  [        U5      U R                  [         R                  '   OU R                  (       a  [        U R                  5      OSnUS:w  d.  U R
                  S:w  aD  UR                  [         R                  ;  a&  [        U5      U R                  [         R                  '   [        TU ]=  U5      I S h  vN $  N7f)N0i0  )r   r   rR   r   r  rK   r@   r   r>   r$   sizer   rV  METH_HEAD_ALLr   r  )rT   r   r  body_lenr   s       r;   r  Response._start3  s     $--/+GNNDKKHHMM$"5"56$**g.. JJOO+D89<TDMM$"5"56.2jj3tzz?cs?KK3&7>>ASAS+S9<XDMM$"5"56W^G,,,,s   E$E.'E,(E.r   c                 n  >#    U R                   (       d  [        U R                  [        5      (       a  [        TU ]  U5      I S h  vN $ U[        R                  L a  g [        UR                  U R                  U R                  S9nU R                  c   eUR                  U R                  5      I S h  vN UR                  5       -   U l        UR                  U R                  [         R"                  '   [%        ['        U R                  5      5      U R                  [         R(                  '   g  N N}7f)N)encodingmax_sync_chunk_sizeexecutor)r@   r   r>   r$   r   r   r(   r3   r   r   r|  r}  compressflushrr  rR   r   r   r   rV  r   )rT   r   
compressorr   s      r;   r   Response._do_start_compressionE  s     ==Jtzz7;;6v>>>]+++ $\\ $ 8 8((


 zz%%%%%djj11J4D4D4FF 	 06||d++,-0T5J5J1K-Ld))* ? 2s&   AD5D1A.D55D36A<D53D5)r>   rr  r}  r|  rs  r   r   rt  ri  )r5   r6   r7   r8   rr  r+  rj  r$  r   r	   rv   r   r'   r   rU   rl  r,  r$   rs  rm  rt  r   r7  r   r  r(   r   r9   ro  rp  s   @r;   r*   r*     s   %)edl) %
 !'+#'""5)-?, ?, 	?,
 d
?, Dj?, $?, Dj?, t?,  ?,  $?, 
?, ?,B ei''1D8   
[[% % % %2 :cDj : : 
[[% % % % d
  $ BC$J B4 B B7E 7D 7 7*-M -6J -$M- MD M Mr:   r*   rJ   zapplication/json)rt  rs  rK   rL   rM   r   dumpsr(  rt  rs  rK   rL   rM   r   r  rO   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)rt  rs  rK   rL   rM   r   r   ry   r*   )r(  rt  rs  rK   rL   rM   r   r  s           r;   r+   r+   Y  sE     84RSS;D! r:   rs  rK   rL   rM   r   c                Z    U [         La  Ub  [        S5      eU" U 5      n[        UUUUUS9$ )zCreate a JSON response using a bytes-returning encoder.

Use this when your JSON encoder (like orjson) returns bytes
instead of str, avoiding the encode/decode overhead.
z,only one of data or body should be specifiedr  r  )r(  r  rs  rK   rL   rM   r   s          r;   r,   r,   s  sC     8KLL;D! r:   )Jasynciocollections.abccollectionsr   enumjsonr   r   r   r   r   concurrent.futuresr   httpr   http.cookiesr   typingr   r	   r
   r   r   r   	multidictr   r   rs   r   r   abcr   compression_utilsr   r   helpersr   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   typedefsr%   r&   r'   r   phraserw   __all__web_requestr-   r   	BaseClassr.   Enumr(   r   r)   r*   r  r+  rv   r+   r,   )http_statusr   s   00r;   <module>r     s;           4 '  % H H '  % B    @ ?  A AKUV:K##[%7%77:V (sCx(I..I T]DII  7DDmF<<'mD|^C+c*:$:C$?@, |~JM~ JM\  #'*
 * $,	
  $J D    6  #'*
  $,	
  $J D   ] WB Es   ! F1F6