
    2hr                        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  \ V s0 s H  o Rh                  U Rj                  _M     sn r6Sr7Sr8\(       a  SSK9J:r:  \\;\4   r<O\R<                  R(                  r< " S S\Rz                  5      r>\> Vs0 s H  oRh                  U_M     snr? " S S\<\&5      r@ " S S\@5      rA\*4SSSSSS\R                  S.S\S\\;   S\\C   S\DS\\;   S \\3   S!\;S"\2S#\A4S$ jjjrEgs  sn f s  snf )%    N)Executor)
HTTPStatus)SimpleCookie)TYPE_CHECKINGAnyDictIteratorMutableMappingOptionalUnioncast)CIMultiDictistr   )hdrspayload)AbstractStreamWriter)ZLibCompressor)
ETAG_ANYQUOTED_ETAG_REETagHeadersMixinmust_be_empty_bodyparse_http_daterfc822_formatted_timesentinelshould_remove_content_lengthvalidate_etag_value)SERVER_SOFTWAREHttpVersion10HttpVersion11)Payload)JSONEncoderLooseHeadersi   )ContentCodingStreamResponseResponsejson_response)BaseRequestc                        \ rS rSrSrSrSrSrg)r%   ;   deflategzipidentity N)__name__
__module____qualname____firstlineno__r,   r-   r.   __static_attributes__r/       L/var/www/auris/envauris/lib/python3.13/site-packages/aiohttp/web_response.pyr%   r%   ;   s    
 GDHr5   r%   c                     ^  \ rS rSr% \S\\\4   \S'   Sr	Sr
Sr\\   \S'   Sr\\S'   Sr\\S'   Sr\\   \S	'   Sr\\   \S
'   Sr\S   \S'   Sr\\   \S'   Sr\\S'   Sr\\   \S'   SrSr\\   \S'   SrSSSSS.S\S\\   S\\   S\\\      SS4
S jjr \!S\4S j5       r"\!SaS 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' SbS\S\\   SS4S  jjr(S\S\\   SS4S! jr)\!S\\   4S" j5       r*ScS# jr+\!S\4S$ j5       r,\!S\4S% j5       r-SbS&\\   SS4S' jjr.  SdS(\\\\4      S)\\   SS4S* jjr/\!SeS+ j5       r0\!S\4S, j5       r1SSSS-SSSSSS..	S/\S0\S1\\   S2\\   S3\\\\4      S4\S5\\   S6\\   S7\\   S8\\   S9\\   SS4S: jjr2SS-SSSS;.S/\S2\\   S4\S5\\   S6\\   S8\\   SS4S< jjr3\!S\\   4U 4S= jj5       r4\4Rj                  S0\\   SS4S> j5       r4\!S\4U 4S? jj5       r6\6Rj                  S0\SS4S@ j5       r6\!S\\   4U 4SA jj5       r7\7Rj                  S0\\   SS4SB j5       r7\!S\\8Rp                     4SC j5       r9\9Rj                  S0\\\\:\8Rp                  \4      SS4SD j5       r9\!S\\;   4SE j5       r<\<Rj                  S0\\\;\4      SS4SF j5       r<\=R|                  4SG\?SS4SH jjr@SI\SS4SJ jrASfSL jrBSKSS\\   4SM jrCSKSS\4SN jrDScSO jrEScSP jrFSQ\\\\G4   SS4SR jrHScSS jrISgSQ\SS4ST jjrJS\4SU jrKSV\S\L4SW jrMSV\S0\LSS4SX jrNSV\SS4SY jrOS\4SZ jrPS\Q\   4S[ jrRS\4S\ jrSS]\TS\4S^ jrUS\4S_ jrVS`rWU =rX$ )hr&   L   N_bodyT_keep_aliveF_chunked_compression_compression_strategy_compression_forcer)   _req_payload_writer	_eof_sent_must_be_empty_bodyr   _cookies   )statusreasonheaders_real_headersrE   rF   rG   rH   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)selfrE   rF   rG   rH   s        r6   __init__StreamResponse.__init__^   s?     ')$)M .9'.BDM'MDM(r5   c                 D    U R                   =(       d    U R                  S L$ N)rA   r@   rN   s    r6   preparedStreamResponse.preparedx   s    ~~A!5!5T!AAr5   c                 R    U R                   (       a  U R                   R                  $ g rR   )r?   taskrS   s    r6   rW   StreamResponse.task|   s    9999>>!r5   c                     U R                   $ rR   )_statusrS   s    r6   rE   StreamResponse.status       ||r5   c                     U R                   $ rR   )r;   rS   s    r6   chunkedStreamResponse.chunked       }}r5   c                     U R                   $ rR   )r<   rS   s    r6   compressionStreamResponse.compression          r5   c                     U R                   $ rR   )_reasonrS   s    r6   rF   StreamResponse.reason   r\   r5   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)rT   rM   rN   rE   rF   s      r6   
set_statusStreamResponse.set_status   s+     	UT	U(r5   c                     [        U5      U l        Uc!  [        R                  U R                  S5      nOSU;   a  [	        S5      eX l        g )N 
zReason cannot contain \n)intrZ   REASON_PHRASESget
ValueErrorrf   ri   s      r6   rM   StreamResponse._set_status   s@    6{>#''b9FV^899r5   c                     U R                   $ rR   r:   rS   s    r6   
keep_aliveStreamResponse.keep_alive   s    r5   c                     SU l         g )NFru   rS   s    r6   force_closeStreamResponse.force_close   s
     r5   c                     U R                   $ rR   )_body_lengthrS   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DeprecationWarningr@   buffer_sizerS   s    r6   output_lengthStreamResponse.output_length   s3    35GH######///r5   
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_LENGTHrL   RuntimeErrorr   r   r   r;   )rN   r   s     r6   enable_chunked_encoding&StreamResponse.enable_chunked_encoding   sC    $--/P  !MM:<NOr5   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%   r,   r.   r   r   r   r<   r>   r=   )rN   r   r   s      r6   enable_compression!StreamResponse.enable_compression   s|     eT""-2M))8N8NEMM=?Q }  CBC  !"'%-"r5   c                     U R                   $ rR   )rL   rS   s    r6   rG   StreamResponse.headers   r`   r5   c                 R    U R                   c  [        5       U l         U R                   $ rR   )rC   r   rS   s    r6   cookiesStreamResponse.cookies   s    == (NDM}}r5   /)	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   )rC   r   rq   str)rN   r   r   r   r   r   r   r   r   r   r   r   cs                r6   
set_cookieStreamResponse.set_cookie   s    ( == (NDM#dMM$"iLUU9!@@) hKw<AiL!^)&	 hK$jM"iL$jM"*m #r5   )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.
Nrm   r   r   )r   r   r   r   r   r   r   )rC   popr   )rN   r   r   r   r   r   r   s          r6   
del_cookieStreamResponse.del_cookie  sN     ==$MMdD)3 	 
	
r5   c                    > [         TU ]  $ rR   )supercontent_lengthrN   	__class__s    r6   r   StreamResponse.content_length1  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)ro   r;   r   r   rL   r   r   r   rN   r   s     r6   r   r   6  s\    JE}}"R  25UDMM$--.MMd1148r5   c                    > [         TU ]  $ rR   )r   content_typer   s    r6   r   StreamResponse.content_typeB  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   G  s#     Z**,r5   c                    > [         TU ]  $ rR   )r   charsetr   s    r6   r   StreamResponse.charsetM  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   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   rq   r   LAST_MODIFIEDrS   s    r6   last_modifiedStreamResponse.last_modifieda  s$     t}}001C1CDEEr5   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: )rL   r   r   r   r   ro   floattimestrftimegmtimemathceildatetimeutctimetupler   typer0   	TypeError)rN   r   msgs      r6   r   r   i  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. 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   rq   r   ETAGr   r   r   	fullmatchgroupr   )rN   quoted_valuematchr   r   s        r6   etagStreamResponse.etag}  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   rr   r   )rN   r   	hdr_values      r6   r   r     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_header  sz     !!---!!---M$2D2D2J2J2LMM&&-6E&&E&+l#r5   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rR   )r%   r.   r@   r   rL   r   CONTENT_ENCODINGr   r=   popallr   )rN   r   s     r6   _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)Nrm   )	r>   r   rG   rq   r   ACCEPT_ENCODINGr   CONTENT_CODINGSr   )rN   r   accept_encodingr   r   s        r6   _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rR   )rA   r@   r   methodrE   rB   _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   )r?   r@   _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                  (       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                  (       ac  U[        :w  a$  [!        SR#                  UR                  5      5      eU R$                  (       d#  UR'                  5         SU[        R(                  '   OU R*                  (       ap  U R,                  Ul        UR.                  cR  U[        :  a5  U R$                  (       d#  UR'                  5         SU[        R(                  '   OU R$                  (       d  SnU R$                  (       ap  [        R0                  U;   a6  [3        UR4                  U R6                  5      (       a  U[        R0                  	 [        R(                  U;   a  U[        R(                  	 OMU R*                  (       a  UR.                  OU R,                  S:w  a   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Nn7f)Nrm   )headerr   z@Using chunked encoding is forbidden for HTTP/{0.major}.{0.minor}r^   Fr   r   z
keep-aliveclose)$r?   r@   r:   rv   r   rL   rC   valuesoutputaddr   
SET_COOKIEr<   r   r;   r!   r   formatrB   enable_chunkingTRANSFER_ENCODING_length_checkr   lengthr   r   r   rE   
setdefaultr   DATEr   SERVERr   
CONNECTIONr    )rN   r   r  rv   r   rG   cookier   s           r6   r  StreamResponse._prepare_headers  s    ))"""%%!!!%%
 ++J%//--==--..0R04DOOU3 1 ))'222==-'"3396'//3J  ++&&(2;../ //FM}}$m+33..0:C 6 6711!&J ##""g-2N3 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(I.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?   r@   r   rZ   rf   write_headersrL   _send_headers_immediatelysend_headers)rN   r   r  r   status_lines        r6   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   rA   r   r@   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)rA   r@   r   r   r   drainrS   s    r6   r,  StreamResponse.drain2  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   rA   r@   	write_eofr?   output_sizer|   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eofr  znot prepared<>)rA   rT   r?   r   r   r   r0   rF   )rN   infos     r6   __repr__StreamResponse.__repr__L  sz    >>D]]99(((ii&&'q(8:D!D4>>**+1T[[M4&BBr5   keyc                      U R                   U   $ rR   rK   rN   r9  s     r6   __getitem__StreamResponse.__getitem__V  s    {{3r5   c                      X R                   U'   g rR   r;  )rN   r9  r   s      r6   __setitem__StreamResponse.__setitem__Y  s     Cr5   c                     U R                   U	 g rR   r;  r<  s     r6   __delitem__StreamResponse.__delitem__\  s    KKr5   c                 ,    [        U R                  5      $ rR   )lenrK   rS   s    r6   __len__StreamResponse.__len___  s    4;;r5   c                 ,    [        U R                  5      $ rR   )iterrK   rS   s    r6   __iter__StreamResponse.__iter__b  s    DKK  r5   c                 *    [        [        U 5      5      $ rR   )hashidrS   s    r6   __hash__StreamResponse.__hash__e  s    BtH~r5   otherc                     XL $ rR   r/   )rN   rR  s     r6   __eq__StreamResponse.__eq__h  s
    }r5   c                     g)NTr/   rS   s    r6   __bool__StreamResponse.__bool__k  s    r5   )r|   r;   r<   r>   r=   r   rC   rA   rL   r:   rB   r@   rf   r?   rK   rZ   )rI   zOptional[asyncio.Task[None]]rR   )rI   N)NN)rI   zCIMultiDict[str])r   r)   rI   Nr5   )Yr0   r1   r2   r3   r   r#  r$  r"   __annotations__r  r9   r:   r   r   r;   r<   r=   ro   r>   r%   r?   r@   r   rA   rB   r|   rC   r   r  r   r$   r   rO   propertyrT   rW   rE   r^   rb   rF   rj   rM   rv   ry   r}   r   r   r   rG   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/  r7  r   r=  r@  rC  rG  r	   rK  rP  objectrT  rW  r4   __classcell__r   s   @r6   r&   r&   L   s   ui011ME"&K$&HdL$+/8C=/26/6$(D(=
!(6:OX23:It*.$.L'+Hh|$+ $
  $*.48) ) 	)
 ,')  C 01) 
)4 B$ B B         !T ! !    !%)) ) 
	)# x}    HTN    ! !S ! ! 0s 0 0
(3- 4  7;"&.dM123. 3-. 
	.*      "& $-1!%#'!%"&&*3+3+ 3+
 #3+ 3+ %S/*3+ 3+ 3+ 4.3+ #3+ 3-3+ d^3+ 
3+r !%!%#'"&

 	

 
 
 4.
 3-
 

: & & & 	9HSM 	9d 	9 	9 $c $ $ -# -$ - -
 #   ^^-Xc] -t - - Fx(9(9: F F !eC0A0A3$FGH!	! !& 
htn 
 
 
[[(5s#34   * $(#4#4
, 
,	
,
8- 
8D 
8
*] *x@T7U *M 6J ?3B"
/eY
&B C 
/ 
/+$E $D $ C# C s  s  !s !3 !4 !s t    !(3- !# F t $  r5   r&   c                     ^  \ rS rSr% Sr\\   \S'   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S 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'   io  N_compressed_bodyFrD   )	bodyrE   rF   textrG   r   r   zlib_executor_sizezlib_executorrb  rE   rF   rc  rG   r   r   rd  re  rI   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=)rE   rF   rH   )rr   r   r   r   r   r   r   r   encoder   rO   rc  rb  _zlib_executor_size_zlib_executor)rN   rb  rE   rF   rc  rG   r   r   rd  re  real_headersr   s              r6   rO   Response.__init__t  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 +r5   c                     U R                   $ rR   )r9   rS   s    r6   rb  Response.body  s    zzr5   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)r9   r   r#  r$  r   PAYLOAD_REGISTRYrq   LookupErrorrr   r   rL   r   r   r   rG   r   ra  )rN   rb  rG   r9  r   s        r6   rb  rp    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      $ )Nri  )r9   decoder   rS   s    r6   rc  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        g )Nrg  r   rh  ri  )r   r   r   r   r   rj  r9   ra  )rN   rc  s     r6   rc  rv    sy    |z# 
  
 	9+d4j8	9 
  :: ,D<<"DL[[.
 $r5   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   rL   ro   ra  rF  r   r9   r"   rS   s    r6   r   Response.content_length  s    ==$--/t}}T%8%89::  ,t,,--

G,,ZZ#tzz?"r5   r   c                     [        S5      e)Nz#Content length is set automatically)r   r   s     r6   r   ry    s    @AAr5   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      (       af  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 N1 N7f)Nzdata arg is not supported, got )rA   ra  r9   r?   r@   rB   r   r/  r   r"   r&  r  r   r#  )rN   r   rb  r   s      r6   r/  Response.write_eof  s    >>  (48JJD((DC:4(CCxyy$$$##///<433'#%%%

G,,**""4#7#7888**""$$$'#%%%'#D$5666 &8$%6s[   BEEAEE!E EEE%E<E
=EEEE
Er   r)   c                   >#    [         R                  U R                  ;   aB  [        UR                  U R
                  5      (       a  U R                  [         R                  	 GOU R                  (       d  [        U R                  [        5      (       aR  U R                  R                  b:  [        U R                  R                  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   rL   r   r   rE   r;   r   r9   r"   sizer   rF  METH_HEAD_ALLr   r   )rN   r   body_lenr   s      r6   r   Response._start  s     $--/+GNNDKKHHMM$"5"56$**g..::??.9<TZZ__9MDMM$"5"56.2jj3tzz?cs?KK3&7>>ASAS+S9<XDMM$"5"56W^G,,,,s   E7F:E?;Fr   c                   >#    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                  cJ  [        U R                  5      [        :  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                  U R&                  [(        R*                  '   [-        [        U R$                  5      5      U R&                  [(        R.                  '   g  GNB N~7f)N)encodingmax_sync_chunk_sizeexecutorz2Synchronous compression of large response bodies (z bytes) might block the async event loop. Consider providing a custom value to zlib_executor_size/zlib_executor response properties or disabling compression on it.)r;   r   r9   r"   r   r   r%   r.   r   r   rk  rl  rF  LARGE_BODY_SIZEr   r   compressflushra  rL   r   r   r   r   )rN   r   
compressorr   s      r6   r   Response._do_start_compression&  s3    ==Jtzz7;;6v>>>]+++ $\\ $ 8 8((


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

O$ %TT %%djj11J4D4D4FF 	 06||d++,-0T5J5J1K-Ld))*- ?& 2s&   AFFCFFA<FF)r9   ra  rl  rk  rb  r   r   rc  rY  )r0   r1   r2   r3   ra  r   r#  rZ  r  r   ro   r   r$   r   rO   r[  r   r"   rb  r\  rc  r   r/  r   r   r%   r   r4   r^  r_  s   @r6   r'   r'   o  s   (,huo, %
  $"*.&*!%,0,0?, ?, 	?,
 ?, sm?, ,'?, sm?, #?, %SM?,  )?, 
?, ?,B huUG^45   
[[% % % %2 :hsm : : 
[[% % % %   $ BHSM Bd B B7E 7D 7 7&-M -6J -$M- MD M Mr5   r'   rD   zapplication/json)rc  rb  rE   rF   rG   r   dumpsr   rc  rb  rE   rF   rG   r   r  rI   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)rc  rb  rE   rF   rG   r   )r   rr   r'   )r   rc  rb  rE   rF   rG   r   r  s           r6   r(   r(   A  sE     84RSS;D! r5   )Fasynciocollections.abccollectionsr   enumjsonr   r   r   concurrent.futuresr   httpr   http.cookiesr   typingr   r   r   r	   r
   r   r   r   	multidictr   r   rm   r   r   abcr   compression_utilsr   helpersr   r   r   r   r   r   r   r   r   r   r   r    r!   r"   typedefsr#   r$   r   phraserp   r  __all__web_requestr)   r   	BaseClassEnumr%   r   r&   r'   r  r#  ro   r(   )http_statusr   s   00r6   <module>r     s           '  %	 	 	 (  % -   @ ?  /KUV:K##[%7%77:V
J (sCx(I..IDII  7DDmF<<'mD`Y `FOM~ OMf    &**
 3- 5/	
  SM l#   k W2 Es    E-E2