
    3Cf:q                        U d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	m
Z
 d dlmZ d dlmZmZmZmZmZmZmZmZmZmZmZmZ d dlmZ d dlZd dlmZmZmZm Z m!Z! d dl"m#Z# dd	l$m%Z% dd
l&m'Z' ddl(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3 ddl4m5Z5 ddl6m7Z7 ddl8m9Z9m:Z: ddl;m<Z<m=Z= ddl>m?Z?m@Z@mAZAmBZBmCZC ddlDmEZE ddlFmGZG dZHerddlImJZJ ddlKmLZL ddlMmNZN  ej                  ddd       G d d             ZPej                  ej                  z   dz   ZSeeT   eUd<   deS dZVeeT   eUd<   d j                  d!j                  d" d# eY eZd$d%            z   D                    Z[eeT   eUd&<   d'Z\eeT   eUd(<   d)j                  e[e\*      Z]eeT   eUd+<   d,j                  eVe]-      Z^eeT   eUd.<    ej                  d/      Z`eeeT      eUd0<    ej                  e^      ZaeeeT      eUd1<    G d2 d3eeTef   e/      Zb G d4 d5eb      Zcy)6    N)SimpleCookie)MappingProxyType)TYPE_CHECKINGAnyDictFinalIteratorMappingMutableMappingOptionalPatternTupleUnioncast)	parse_qsl)CIMultiDictCIMultiDictProxy	MultiDictMultiDictProxyMultiMapping)URL   )hdrs)AbstractStreamWriter)	_SENTINELDEBUGETAG_ANYLIST_QUOTED_ETAG_REChainMapProxyETagHeadersMixinparse_http_datereifysentinelset_exception)RawRequestMessage)HttpVersion)BodyPartReaderMultipartReader)EmptyStreamReaderStreamReader)DEFAULT_JSON_DECODERJSONDecoderLooseHeaders
RawHeadersStrOrURL)HTTPRequestEntityTooLarge)StreamResponse)BaseRequest	FileFieldRequest)Application)RequestHandler)UrlMappingMatchInfoT)auto_attribsfrozenslotsc                   T    e Zd ZU eed<   eed<   ej                  ed<   eed<   ded<   y)r4   namefilenamefilecontent_typezCIMultiDictProxy[str]headersN)__name__
__module____qualname__str__annotations__ioBufferedReader     S/var/www/highfloat_scraper/venv/lib/python3.12/site-packages/aiohttp/web_request.pyr4   r4   L   s$    
IM


$$rJ   r4   z!#$%&'*+.^_`|~-_TCHAR[z]+_TOKENz[{}] c              #   2   K   | ]  }t        |        y wN)chr).0cs     rK   	<genexpr>rU   [   s     KSVKs   )	       !   #      _QDTEXTz
\\[\t !-~]_QUOTED_PAIRz"(?:{quoted_pair}|{qdtext})*")qdtextquoted_pair_QUOTED_STRINGz0({token})=({token}|{quoted_string})(:\d{{1,4}})?)tokenquoted_string_FORWARDED_PAIRz\\([\t !-~])_QUOTED_PAIR_REPLACE_RE_FORWARDED_PAIR_REc                      e Zd Zej                  ej
                  ej                  ej                  ej                  hZ	e
j                   eg d      z  Zdddddddededdd	ed
ddej"                  dedeeeef      dee   dee   dee   ddfdZeeeeeeeddeeef   deeef   deeef   deeef   deeef   deeef   deeef   dd fdZed[d       Zed\d       Z edeejB                     fd       Z"edefd       Z#edefd       Z$e%defd       Z&e%de'fd       Z(e%dej"                  fd        Z)d!edefd"Z*d!ed#eddfd$Z+d!eddfd%Z,defd&Z-de.e   fd'Z/e%de0fd(       Z1e%de2e3eef   d)f   fd*       Z4e%defd+       Z5e%defd,       Z6e%de7fd-       Z8e%defd.       Z9e%dee   fd/       Z:e%de'fd0       Z;e%defd1       Z<e%defd2       Z=e%defd3       Z>e%d]d4       Z?e%defd5       Z@e%d]d6       ZAe%deBfd7       ZCe%deeDj                     fd8       ZEe%deeDj                     fd9       ZFeGd:ede.eH   fd;       ZIeJd<ee   dee2eHd)f      fd=       ZKe%dee2eHd)f      fd>       ZLe%dee2eHd)f      fd?       ZMe%deeDj                     fd@       ZNe%de0fdA       ZOe%de3eef   fdB       ZPe%deQfdC       ZRe%defdD       ZSede0fdE       ZTede0fdF       ZUe%de0fdG       ZVd^dHZWdeXfdIZYdefdJZZe[dKdLe\defdMZ]de^fdNZ_d_dOZ`d`dPedQedefdRZadefdSZbdTecde0fdUZdde0fdVZedWefddfdXZgdYehddfdZZiy)ar3   )_message	_protocol_payload_writer_payload_headers_method_version_rel_url_post_read_bytes_state_cache_task_client_max_size_loop_transport_sslcontext_transport_peernamei   N)client_max_sizestateschemehostremotemessagepayloadprotocolr7   payload_writertaskasyncio.Task[None]looprw   rx   ry   rz   r{   returnc                   |i }|| _         || _        || _        || _        |j                  | _        |j                  | _        |j                  | _	        i | _
        |j                  }|j                         rW|| j                  d<   |j                  | j                  d<   |j                  | j                  d<   |j                         | _        n|j                  | _        d | _        d | _        || _        || _        || _        || _        | j                  j.                  }|J |j1                  d      | _        |j1                  d      | _        |	|	| j                  d<   |
|
| j                  d<   ||| j                  d<   y y )Nurlrz   ry   
sslcontextpeernamer{   )rf   rg   rh   ri   rA   rj   methodrk   versionrl   rq   r   is_absoluterz   ry   relativerm   rn   ro   rp   rr   rs   rt   	transportget_extra_inforu   rv   )selfr|   r}   r~   r   r   r   rw   rx   ry   rz   r{   r   r   s                 rK   __init__zBaseRequest.__init__   s`    =E!-~~&(kk?? "%DKK"%((DKK$'JJDKK!LLNDM#KKDMMQ
,0
 /
NN,,	$$$%.%=%=l%K"#,#;#;J#G $*DKK!"&DKK$*DKK! rJ   r   rel_urlrA   ry   rz   r{   rw   r   r   rA   c                   | j                   rt        d      i }|t        ur||d<   |t        urt        |      }	|	|d<   t	        |	      |d<   |t        ur:t        t        |            |d<   t        d |j                         D              |d<    | j                  j                  di |}
i }|t        ur||d<   |t        ur||d	<   |t        ur||d
<   |t        u r| j                  } | j                  |
| j                  | j                  | j                  | j                   | j"                  f|| j$                  j'                         d|S )a  Clone itself with replacement some attributes.

        Creates and returns a new instance of Request object. If no parameters
        are given, an exact copy is returned. If a parameter is not passed, it
        will reuse the one from the current request object.
        z.Cannot clone request after reading its contentr   r   pathrA   c              3   f   K   | ])  \  }}|j                  d       |j                  d       f + yw)utf-8N)encode)rS   kvs      rK   rU   z$BaseRequest.clone.<locals>.<genexpr>   s0      ';?1a'"AHHW$56's   /1raw_headersry   rz   r{   )rw   rx   rI   )ro   RuntimeErrorr$   r   rE   r   r   tupleitemsrf   _replacers   	__class__ri   rg   rh   rr   rt   rp   copy)r   r   r   rA   ry   rz   r{   rw   dctnew_urlr|   kwargss               rK   clonezBaseRequest.clone   sZ   " RSS !"CM("w<G CJg,CK("-k'.BCC	N!& 'CJ==?' "C )$--((/3/!%F8x!F6N!%F8h&"33Ot~~MMNN  JJJJ

 ,++""$

 

 
	
rJ   c                     | j                   S rQ   )rr   r   s    rK   r   zBaseRequest.task	  s    zzrJ   c                     | j                   S rQ   )rg   r   s    rK   r~   zBaseRequest.protocol  s    ~~rJ   c                 H    | j                   y | j                   j                  S rQ   )rg   r   r   s    rK   r   zBaseRequest.transport  s    >>!~~'''rJ   c                     | j                   S rQ   )rh   r   s    rK   writerzBaseRequest.writer  s    ###rJ   c                     | j                   S rQ   )rs   r   s    rK   rw   zBaseRequest.client_max_size  s    $$$rJ   c                 R    t        j                  dt        d       | j                  S )NzRequest.message is deprecated   
stacklevel)warningswarnDeprecationWarningrf   r   s    rK   r|   zBaseRequest.message  s    57IVWX}}rJ   c                     | j                   S rQ   )rm   r   s    rK   r   zBaseRequest.rel_url$  s    }}rJ   c                 R    t        j                  dt        d       | j                  S )Nz#request.loop property is deprecated   r   )r   r   r   rt   r   s    rK   r   zBaseRequest.loop(  s#    13ERS	
 zzrJ   keyc                      | j                   |   S rQ   rp   r   r   s     rK   __getitem__zBaseRequest.__getitem__1  s    {{3rJ   valuec                 "    || j                   |<   y rQ   r   )r   r   r   s      rK   __setitem__zBaseRequest.__setitem__4  s     CrJ   c                     | j                   |= y rQ   r   r   s     rK   __delitem__zBaseRequest.__delitem__7  s    KKrJ   c                 ,    t        | j                        S rQ   )lenrp   r   s    rK   __len__zBaseRequest.__len__:  s    4;;rJ   c                 ,    t        | j                        S rQ   )iterrp   r   s    rK   __iter__zBaseRequest.__iter__=  s    DKK  rJ   c                      | j                   dk(  S )z5A bool indicating if the request is handled with SSL.https)ry   r   s    rK   securezBaseRequest.secureB  s     {{g%%rJ   .c                 <   g }| j                   j                  j                  t        j                  d      D ]X  }t        |      }d}d}i }|j                  t        j                  |             d|cxk  r|k  sEn Ht        j                  ||      }||r|j                  d|      }n|j                         \  }}	}
|	d   dk(  rt        j                  d|	dd       }	|
r|	|
z  }	|	||j                         <   |t        |j!                  d            z  }d	}ne||   dk(  r.d}i }|j                  t        j                  |             |dz  }n/||   d
k(  rd}|dz  }n||   dv r|dz  }n|j                  d|      }d|cxk  r|k  rX [ t#        |      S )a  A tuple containing all parsed Forwarded header(s).

        Makes an effort to parse Forwarded headers as specified by RFC 7239:

        - It adds one (immutable) dictionary per Forwarded 'field-value', ie
          per proxy. The element corresponds to the data in the Forwarded
          field-value added by the first proxy encountered by the client. Each
          subsequent item corresponds to those added by later proxies.
        - It checks that every value has valid syntax in general as specified
          in section 4: either a 'token' or a 'quoted-string'.
        - It un-escapes found escape sequences.
        - It does NOT validate 'by' and 'for' contents as specified in section
          6.
        - It does NOT validate 'host' contents (Host ABNF).
        - It does NOT validate 'proto' contents for valid URI scheme names.

        Returns a tuple containing one or more immutable dicts
        rI   r   F,"z\1r   T;z 	)rf   rA   getallr   	FORWARDEDr   appendtypesr   rd   matchfindgroupsrc   sublowergroupr   )r   elemsfield_valuelengthposneed_separatorelemr   r=   r   ports              rK   	forwardedzBaseRequest.forwardedG  s   ( ==0077K %	5K%FC"N#%DLL//56s#V#*00cB$%)..sC8,1LLN)eT 8s?$;$?$?uQr{$SE!TME-2TZZ\*s5;;q>22)- %,%*NDLL!7!7!=>1HC %,%*N1HC %. 1HC &**34C? s#V##%	5L U|rJ   c                     | j                   ryy)a  A string representing the scheme of the request.

        Hostname is resolved in this order:

        - overridden value by .clone(scheme=new_scheme) call.
        - type of connection to peer: HTTPS if socket is SSL, HTTP otherwise.

        'http' or 'https'.
        r   http)ru   r   s    rK   ry   zBaseRequest.scheme  s     %%rJ   c                     | j                   S )zyRead only property for getting HTTP method.

        The value is upper-cased str like 'GET', 'POST', 'PUT' etc.
        )rk   r   s    rK   r   zBaseRequest.method  s     ||rJ   c                     | j                   S )zxRead only property for getting HTTP version of request.

        Returns aiohttp.protocol.HttpVersion instance.
        )rl   r   s    rK   r   zBaseRequest.version  s     }}rJ   c                     | j                   j                  j                  t        j                        }||S t        j                         S )zHostname of the request.

        Hostname is resolved in this order:

        - overridden value by .clone(host=new_host) call.
        - HOST HTTP header
        - socket.getfqdn() value
        )rf   rA   getr   HOSTsocketgetfqdn)r   rz   s     rK   rz   zBaseRequest.host  s:     }}$$((3K~~rJ   c                     | j                   yt        | j                   t        t        f      rt	        | j                   d         S t	        | j                         S )zRemote IP of client initiated HTTP request.

        The IP is resolved in this order:

        - overridden value by .clone(remote=new_remote) call.
        - peername of opened socket
        Nr   )rv   
isinstancelistr   rE   r   s    rK   r{   zBaseRequest.remote  sN     ##+d..u>t//2334++,,rJ   c                     t        j                  | j                  | j                        }|j	                  | j
                        S )N)ry   rz   )r   buildry   rz   joinrm   )r   r   s     rK   r   zBaseRequest.url  s-    iit{{;xx&&rJ   c                 .    | j                   j                  S )z_The URL including *PATH INFO* without the host or scheme.

        E.g., ``/app/blog``
        )rm   r   r   s    rK   r   zBaseRequest.path  s     }}!!!rJ   c                 ,    t        | j                        S )zXThe URL including PATH_INFO and the query string.

        E.g, /app/blog?id=10
        )rE   rm   r   s    rK   path_qszBaseRequest.path_qs  s     4==!!rJ   c                 .    | j                   j                  S )zThe URL including raw *PATH INFO* without the host or scheme.

        Warning, the path is unquoted and may contains non valid URL characters

        E.g., ``/my%2Fpath%7Cwith%21some%25strange%24characters``
        )rf   r   r   s    rK   raw_pathzBaseRequest.raw_path  s     }}!!!rJ   c                 @    t        | j                  j                        S )z7A multidict with all the variables in the query string.)r   rm   queryr   s    rK   r   zBaseRequest.query  s     dmm1122rJ   c                 .    | j                   j                  S )z:The query string in the URL.

        E.g., id=10
        )rm   query_stringr   s    rK   r   zBaseRequest.query_string  s     }})))rJ   c                     | j                   S )z4A case-insensitive multidict proxy with all headers.)rj   r   s    rK   rA   zBaseRequest.headers       }}rJ   c                 .    | j                   j                  S )z$A sequence of pairs for all headers.)rf   r   r   s    rK   r   zBaseRequest.raw_headers  s     }}(((rJ   c                 f    t        | j                  j                  t        j                              S )zyThe value of If-Modified-Since HTTP header, or None.

        This header is represented as a `datetime` object.
        )r"   rA   r   r   IF_MODIFIED_SINCEr   s    rK   if_modified_sincezBaseRequest.if_modified_since  s$     t||//0F0FGHHrJ   c                 f    t        | j                  j                  t        j                              S )z{The value of If-Unmodified-Since HTTP header, or None.

        This header is represented as a `datetime` object.
        )r"   rA   r   r   IF_UNMODIFIED_SINCEr   s    rK   if_unmodified_sincezBaseRequest.if_unmodified_since   s$     t||//0H0HIJJrJ   etag_headerc              #      K   | t         k(  rt        dt                yt        j                  |       D ]5  }|j	                  ddd      \  }}}|r yt        t        |      |       7 yw)z'Extract `ETag` objects from raw header.F)is_weakr   r   r      N)r   r    r   finditerr   bool)r   r   r  r   garbages        rK   _etag_valueszBaseRequest._etag_values  sw      (" 
 -55kB 
*/++aA*>'  M 
s   A,A.header_valuec                 <    |sy t        | j                  |            S rQ   )r   r  )clsr  s     rK   _if_match_or_none_implz"BaseRequest._if_match_or_none_impl  s      S%%l344rJ   c                 r    | j                  | j                  j                  t        j                              S )zxThe value of If-Match HTTP header, or None.

        This header is represented as a `tuple` of `ETag` objects.
        )r  rA   r   r   IF_MATCHr   s    rK   if_matchzBaseRequest.if_match&  s(     **4<<+;+;DMM+JKKrJ   c                 r    | j                  | j                  j                  t        j                              S )z}The value of If-None-Match HTTP header, or None.

        This header is represented as a `tuple` of `ETag` objects.
        )r  rA   r   r   IF_NONE_MATCHr   s    rK   if_none_matchzBaseRequest.if_none_match.  s*     **4<<+;+;D<N<N+OPPrJ   c                 f    t        | j                  j                  t        j                              S )zpThe value of If-Range HTTP header, or None.

        This header is represented as a `datetime` object.
        )r"   rA   r   r   IF_RANGEr   s    rK   if_rangezBaseRequest.if_range6  s"     t||//>??rJ   c                 0    | j                   j                   S )zIs keepalive enabled by client?)rf   should_closer   s    rK   
keep_alivezBaseRequest.keep_alive>  s     ==----rJ   c                     | j                   j                  t        j                  d      }t	        |      }t        |j                         D ci c]  \  }}||j                   c}}      S c c}}w )zMReturn request cookies.

        A read-only dictionary-like object.
        rO   )rA   r   r   COOKIEr   r   r   r   )r   rawparsedr   vals        rK   cookieszBaseRequest.cookiesC  sS     llt{{B/c" OHCcii OPP Os   A-
c                    | j                   j                  t        j                        }d\  }}|r	 d}t	        j
                  ||      d   \  }}|rt        |      nd}|rt        |      nd}||| }d}|||dz  }||k\  rt        d      ||cxu rt        d       t        ||d      S # t        $ r t        d      w xY w)	zMThe content of Range HTTP header.

        Return a slice instance.

        )NNNz^bytes=(\d*)-(\d*)$r   zrange not in acceptable formatr   zstart cannot be after endz"No start or end of range specified)
rj   r   r   RANGErefindall
IndexError
ValueErrorintslice)r   rngstartendpatterns        rK   
http_rangezBaseRequest.http_rangeM  s     mm

+
s?C0ZZ5a8
s "#c(tC"'CJTE} S_qC<$%@AA# !EFF $ UC##+  C !ABBCs   B0 0Cc                     | j                   S )zReturn raw payload stream.)ri   r   s    rK   contentzBaseRequest.contentq  r   rJ   c                 p    t        j                  dt        d       | j                  j	                          S )@Return True if request's HTTP BODY can be read, False otherwise.z$Deprecated, use .can_read_body #2005r   r   )r   r   r   ri   at_eofr   s    rK   has_bodyzBaseRequest.has_bodyv  s1     	24FST	
 =='')))rJ   c                 8    | j                   j                          S )r.  )ri   r/  r   s    rK   can_read_bodyzBaseRequest.can_read_body~  s     =='')))rJ   c                 8    t        | j                        t        uS )z6Return True if request has HTTP BODY, False otherwise.)typeri   r*   r   s    rK   body_existszBaseRequest.body_exists  s     DMM"*;;;rJ   c                    K   | j                   j                         s>| j                   j                          d{    | j                   j                         s=yy7 !w)zKRelease request.

        Eat unread part of HTTP BODY if present.
        N)ri   r/  readanyr   s    rK   releasezBaseRequest.release  sC     
 --&&(--''))) --&&()s   8AAAAc                 \  K   | j                   t               }	 | j                  j                          d{   }|j	                  |       | j
                  r1t        |      }|| j
                  k\  rt        | j
                  |      |sntt        |      | _         | j                   S 7 rw)z_Read request body if present.

        Returns bytes object with full request content.
        Nmax_sizeactual_size)	ro   	bytearrayri   r7  extendrs   r   r1   bytes)r   bodychunk	body_sizes       rK   readzBaseRequest.read  s     
 #;D"mm3355E"(( #D	I D$9$997%)%:%:	     %T{D 6s   5B,B*A3B,c                    K   | j                          d{   }| j                  xs d}|j                  |      S 7 %w)z1Return BODY as text using encoding from .charset.Nr   )rC  charsetdecode)r   
bytes_bodyencodings      rK   textzBaseRequest.text  s8     99;&
<<*7  ** 's   ><&>)loadsrJ  c                N   K   | j                          d{   } ||      S 7 w)zReturn BODY as JSON.N)rI  )r   rJ  r@  s      rK   jsonzBaseRequest.json  s#     YY[ T{ !s   %#%c                 J   K   t        | j                  | j                        S w)z3Return async iterator to process BODY as multipart.)r)   rj   ri   r   s    rK   	multipartzBaseRequest.multipart  s     t}}dmm<<s   !#c                   K   | j                   | j                   S | j                  | j                  vr$t        t	                     | _         | j                   S | j
                  }|dvr$t        t	                     | _         | j                   S t	               }|dk(  r| j                          d{   }| j                  }|j                          d{   }|*d}|j                  j                  t        j                        }t        |t              rb|j                  J |j                   r| j"                  j%                  dt&        j(                         d{   }|j+                  d       d{   }	|	r|j-                  |	      }	| j"                  j%                  d|j.                  |	       d{    |t1        |	      z  }d|cxk  r|k  r>n n;| j"                  j%                  d|j2                         d{    t5        ||      |j+                  d       d{   }	|	r| j"                  j%                  d|j6                  d       d{    |d}t9        |j                  |j                   t;        t<        j>                  |      ||j                        }
|jA                  |j                  |
       n|jC                  d	
       d{   }||jE                  d      r>|jG                  d      }|jA                  |j                  |j-                  |             n|jA                  |j                  |       |t1        |      z  }d|cxk  r|k  rn nt5        ||      tI        d      |j                          d{   }|nd| jC                          d{   }|rJ| jJ                  xs d}|jM                  tO        |jQ                         j-                  |      d	|             t        |      | _         | j                   S 7 r7 Q7 7 7 r7 +7 7 7 [7 7 w)zReturn POST parameters.N)rO   z!application/x-www-form-urlencodedmultipart/form-datarP  r   i   )sizer:  zapplication/octet-streamT)rF  ztext/r   )defaultz8To decode nested multipart you need to use custom reader)keep_blank_valuesrH  ))rn   rk   POST_METHODSr   r   r@   rN  rs   nextrA   r   r   CONTENT_TYPEr   r(   r=   r>   rt   run_in_executortempfileTemporaryFile
read_chunkrF  writer   closer1   seekr4   r   rG   rH   addrC  
startswithget_charsetr#  rE  r>  r   rstrip)r   r@   outrN  r;  fieldrQ  field_cttmprA  ffr   rE  datas                 rK   postzBaseRequest.post  s    ::!::<<t000'	4DJ::((  
 

 (	4DJ::7@{00"nn..I,,H#..**E# ==,,T->->?e^4 ::111 ~~$(JJ$>$> ("8"8%  ',&6&6E&6&B B#$)LL$7E"&**"<"<T399e"TTT CJ.D 82d2&*jj&@&@syy&Q Q Q&?-54'" !" +0*:*:*:*F$FE $ #jj88sxxKKK#+'AH&!JJ!NN !2!2C8$!MM 

B/ ',jjj&= =#+x/B/B7/K&+&7&7&7&HGGGEJJW0EFGGEJJ6E
*x.$.";)1t#  %U  (nn..u #x $D,,1'

,,W5*.!( $C(
zzY / + !C U !R %GK !>  /$s   B,P?.P /#P?P#BP?P&P?8P)9AP?:P,;A	P?P/&P?+P2,P?3*P?P5A?P?P8B8P?P;P?P?3P=4A-P?#P?&P?)P?,P?/P?2P?5P?8P?;P?=P?r=   rR  c                 f    | j                   }||S |j                  }||S |j                  ||      S )z"Extra info from protocol transport)rg   r   r   )r   r=   rR  r~   r   s        rK   r   zBaseRequest.get_extra_info  s?    >>N&&	N''g66rJ   c                     | j                   j                  dd      j                  d      }dj                  | j                  j
                  | j                  |      S )Nasciibackslashreplacez<{} {} {} >)r   r   rF  formatr   rB   rk   )r   ascii_encodable_paths     rK   __repr__zBaseRequest.__repr__"  sS    #yy//9KLSS 
 ##NN##T\\3G
 	
rJ   otherc                 0    t        |       t        |      k(  S rQ   )id)r   rp  s     rK   __eq__zBaseRequest.__eq__*  s    $x2e9$$rJ   c                      y)NTrI   r   s    rK   __bool__zBaseRequest.__bool__-  s    rJ   responsec                    K   y wrQ   rI   )r   rv  s     rK   _prepare_hookzBaseRequest._prepare_hook0  s	     s   excc                 0    t        | j                  |       y rQ   )r%   ri   )r   ry  s     rK   _cancelzBaseRequest._cancel3  s    dmmS)rJ   )r   r   )r   r7   )r   zMultiMapping[str])r   N)r   z,MultiDictProxy[Union[str, bytes, FileField]]rQ   )jrB   rC   rD   r   
METH_PATCH	METH_POSTMETH_PUT
METH_TRACEMETH_DELETErT  r!   ATTRS	frozensetr&   r+   r   asyncioAbstractEventLoopr$  r   r   rE   r   r   r$   r   r   r0   r.   r   propertyr   r~   	Transportr   r   rw   r#   r|   r   r   r   r   r   r   r   r	   r   r  r   r   r
   r   ry   r   r'   r   rz   r{   r   r   r   r   r   r   rA   r/   r   datetimer   r   staticmethodr    r  classmethodr  r  r  r  r  r  r%  r*  r,  r0  r2  r5  r8  r?  rC  rI  r,   r-   rL  r)   rN  rh  r   ro  objectrs  ru  r2   rx  BaseExceptionr{  rI   rJ   rK   r3   r3   v   s-    	L 	
" E>  '*. $" $7+"7+ 7+ #	7+
 -7+ #7+ ''7+ 7+ S#X'7+ 7+ sm7+ 7+ 
7+x )1.62:(0&.(0198
 c9n%8
 x*+	8

 |Y./8
 c9n%8
 CN#8
 c9n%8
 sI~.8
 
8
t     (8G$5$56 ( (
 $, $ $ % % % *      g//   s  s  !s !3 !4 !s t    !(3- !
 & & & :5c!2C!78 : :x           c     - - - 'S ' ' "c " " " " " "# " " 3 3 *c * *   )Z ) ) I8H,=,=#> I I KXh.?.?%@ K K # (4.  ( 5#C=5	%c	"	#5 5 L(5s#34 L L QxdCi(89 Q Q @(8#4#45 @ @ .D . . Qc* Q Q !$E !$ !$F    *$ * * *t * * <T < <* E  *+C + 2F ; # 
= =`D
73 
7 
7 
7
# 
%F %t %$ N t *= *T *rJ   r3   c                   B    e Zd Zej                   edg      z  Zdededdf fdZerde	deddf fd	Z
eeeeeeed
dee	ef   deeef   deeef   dee	ef   dee	ef   dee	ef   deeef   dd f fdZedd       Zedd       Zedefd       ZdeddfdZ xZS )r5   _match_infoargsr   r   Nc                 2    t        |   |i | d | _        y rQ   )superr   r  )r   r  r   r   s      rK   r   zRequest.__init__;  s    $)&) ;?rJ   r=   r  c                     || j                   vr@t        j                  dj                  | j                  j
                  |      t        d       t        | !  ||       y )Nz-Setting custom {}.{} attribute is discouragedr   r   )	r  r   r   rm  r   rB   r   r  __setattr__)r   r=   r  r   s      rK   r  zRequest.__setattr__F  sM    4::%%%+VDNN,C,CT%J& 	 Gc*rJ   r   r   r   rA   ry   rz   r{   rw   c          	      v    t         
|   |||||||      }t        t        |      }	| j                  |	_        |	S )Nr   )r  r   r   r5   r  )r   r   r   rA   ry   rz   r{   rw   retnew_retr   s             rK   r   zRequest.cloneP  sN     gm+  
 w$"..rJ   c                 &    | j                   }|J |S )zResult of route resolving.)r  r   
match_infos     rK   r  zRequest.match_infoh  s!     %%
%%%rJ   c                 :    | j                   }|J |j                  S )zApplication instance.)r  current_appr  s     rK   appzRequest.appo  s'     %%
%%%%%%rJ   c                     | j                   }|J |j                  }| j                  }|j                  |      }t	        t        |d |dz                }t        |      S )Nr   )r  appsr  indexr   reversedr   )r   r  lstr  idxsublists         rK   config_dictzRequest.config_dictv  s\    %%
%%%oohhiinxIcAg/0W%%rJ   rv  c                    K   | j                   }|y |j                  D ]&  }|j                  j                  | |       d {    ( y 7 wrQ   )r  _appson_response_preparesend)r   rv  r  r  s       rK   rx  zRequest._prepare_hook  sN     %%
## 	?C))..tX>>>	?>s   >A
 AA
)r   r8   )r   r6   )rB   rC   rD   r3   r  r  r   r   r   rE   r  r$   r   r   r0   r.   r$  r   r#   r  r  r  r   r  r2   rx  __classcell__)r   s   @rK   r5   r5   7  sV   	=/ ::E?c ?S ?T ? 	+C 	+c 	+d 	+ )1.62:(0&.(019 c9n% x*+	
 |Y./ c9n% CN# c9n% sI~. 
0   & & &] & &?N ?t ?rJ   r5   )dr  r  rG   r   r   stringrX  r   r   http.cookiesr   r   typingr   r   r   r   r	   r
   r   r   r   r   r   r   urllib.parser   attr	multidictr   r   r   r   r   yarlr   rO   r   abcr   helpersr   r   r   r   r   r    r!   r"   r#   r$   r%   http_parserr&   http_writerr'   rN  r(   r)   streamsr*   r+   typedefsr,   r-   r.   r/   r0   web_exceptionsr1   web_responser2   __all__web_appr6   web_protocolr7   web_urldispatcherr8   sr4   digitsascii_lettersrL   rE   rF   rN   rm  r   r   ranger[   r\   r_   rb   compilerc   rd   r3   r5   rI   rJ   rK   <module>r     s     	 	      % "    #     %    + $ 6 4  6 (
1 $,6 T$d3% % 4% ]]V%9%99<NNc
 N &_c
 $nnHHK/%dD8I2JJKKs  )eCj (=DD E c
  8>>
 ?    0:rzz//J ws|, J +5"**_*E E'#,' E~
*.c*L ~
*BN?k N?rJ   