
    rp0j                     2   % S 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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rSSKJr  SSKJrJrJrJrJr  SSKJr  SSKJr  SSKJr  SSKJr  SS	K J!r!  SS
K"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/J0r0J1r1  SSK2J3r3  SSK4J5r5J6r6  SSK7r7SSK8J9r9J:r:J;r;  SSK<J=r>  SSK?J@r@  SSKAJBrB  SSKCJDrD  \R                  S:  a  SSKrFOSSKFrFSrG\R                  " 5       S:H  rI\R                  " 5       S:H  rJ\R                  S:  rKSrL\/" S5      rM\/" S5      rN\R                  " SS5      rP\PR                  rQ\R" \
R                  R                  S5      5      rU\V" S S!/\W" S"S#5      Q75      rX\BR                  rZ\R                  R                  =(       dC    \R                  R                  (       + =(       a!    \R" \
R                  R                  S$5      5      r^\W" SS%5       V s1 s H  n \_" U 5      iM     sn r`\W" SS&5       V s1 s H  n \_" U 5      iM     sn \_" S'5      1-  raS(S)S*S+S,S-S.S/S0S1S2S3S4S5S6S7S8S9\_" S:5      1rb\`\a-  \b-  rc " S; S<5      rdSS>\eS?\eS@\eSA\e4SB jjrf " SC SD\" SD/ SEQ5      5      rg SS>\eS?\eS@\eSA\g4SF jjrhSG\@SA\i\@\gS-  4   4SH jrjSA\	R                  S-  4SI jrk\7R                  " SJSJSJSK9 " SL SM5      5       rmSN\	R                  S-  SO\eSA\g4SP jrnSA\o\e\m4   4SQ jrpSG\@SA\i\@\gS-  4   4SR jrq\7R                  " SJSJSJSK9 " SS ST5      5       rr\R                  " SUSV9SW\eSA\r4SX j5       rt " SY SZ\5      ru\R                  " SUSV9S[\eSA\i\e\'\e\e4   4   4S\ j5       rvSS]\*S^\eS-  SA\eS-  4S_ jjrw\R                  " S`5      ry\W" S&S'5       V s1 s H  n \_" U 5      iM     sn Sa1-  rzSb\eSA\e4Sc jr{ SSd\eSe\RSf\eSg\eSA\e4
Sh jjr|SO\eS-  SA\R4Si jr}SO\eSA\R4Sj jr~Sq\S-  \Sk'   S=qSA\e4Sl jrSSm jr SSn\So\eSp\Sq\GR                  Sr\SA\GR                  S-  4Ss jjr SSt\/ \*4   Sp\Sq\GR                  Sr\SA\GR                  S-  4
Su jjrSv\Sp\Sw\SA\4Sx jr " Sy Sz5      r " S{ S|\+S|   5      r " S} S~\5      r " S S\5      r SS\S-  S\SA\FGR                   4S jjr " S S5      rSSS\MSAS4S jr\" 5       r " S S\.5      r\4SSS\S\SAS4S jjr\GR0                   " S S\,\M   5      5       r " S S\\M   5      r " S S\\M   5      r " S S\\M   5      r " S S\\e\\*   -  \*4   5      rSr\R                  " \5      rS\ S3r\R                  " \5      r\R                  " S(\ S35      rSr\7R                  " SJSJSJSK9 " S S5      5       rS\eSAS4S jrS\eS-  SA\R
                  S-  4S jr\R                  S\eS\SA\R4S j5       rS\eS\SA\R4S jrgs  sn f s  sn f s  sn f )zVarious helper functions    N)
namedtuple)Callable	GeneratorIterableIteratorMapping)suppress)EmailMessage)HeaderParser)HTTP)	parsedateceil)Path)MappingProxyTypeTracebackType)AnyContextManagerGenericOptionalProtocolTypeVarget_argsoverload)quote)
getproxiesproxy_bypass)	MultiDictMultiDictProxyMultiMapping)under_cached_property)URL   )hdrs)client_logger      )	BasicAuthChainMapProxyETagreifyDarwinWindowsi   _T_S	_SENTINELsentinelAIOHTTP_NO_EXTENSIONS   i0  d      PYTHONASYNCIODEBUG          ()<>@,;:\"/[]?={} 	   c                   (    \ rS rSrS\S   4S jrSrg)noopr   return)NNNc              #      #    S v   g 7fN selfs    I/home/wildlama/miniconda3/lib/python3.13/site-packages/aiohttp/helpers.py	__await__noop.__await__s   s     s   rT   N)__name__
__module____qualname____firstlineno__r   rX   __static_attributes__rT       rW   rO   rO   r   s    9%56 r_   rO    loginpasswordencodingrQ   c                     SU ;   a  [        S5      eU  SU 3R                  U5      nS[        R                  " U5      R	                  U5      -   $ )zEncode HTTP Basic Authentication credentials as an Authorization header value.

Returns a string of the form ``"Basic <base64>"`` suitable for use as the
value of the ``Authorization`` (or ``Proxy-Authorization``) header.
rB   z2A ":" is not allowed in login (RFC 7617#section-2)zBasic )
ValueErrorencodebase64	b64encodedecode)ra   rb   rc   credss       rW   encode_basic_authrk   w   sS     e|MNNgQxj!((2Ef&&u-44X>>>r_   c            	          ^  \ rS rSrSr SS\S\S\SS 4U 4S jjjr\SS	\S\SS 4S
 jj5       r\SS.S\	S\S\
S    4S jj5       rS\4S jrSrU =r$ )r)      z!Http basic authentication helper.latin1ra   rb   rc   rQ   c                    > Uc  [        S5      eUc  [        S5      eSU;   a  [        S5      e[        R                  " S[        SS9  [        TU ]  XX#5      $ )Nz"None is not allowed as login valuez%None is not allowed as password valuerB   z5A ":" is not allowed in login (RFC 1945#section-11.1)zBasicAuth is deprecated and will be removed in aiohttp 4.0; use aiohttp.encode_basic_auth() with headers={'Authorization': ...} instead   )
stacklevel)re   warningswarnDeprecationWarningsuper__new__)clsra   rb   rc   	__class__s       rW   rv   BasicAuth.__new__   sg     =ABBDEE%<TUU5 	
 ws8>>r_   auth_headerc                     UR                  SS5      u  p4UR                  5       S:w  a  [        SU-  5      e [        R                  " UR                  S5      SS9R                  U5      n UR                  S
S5      u  pg[        XgU5      $ ! [         a    [        S5      ef = f! [        R                   a    [        S	5      ef = f! [         a    [        S5      ef = f)z<Create a BasicAuth object from an Authorization HTTP header.rL   r#   z%Could not parse authorization header.basiczUnknown authorization method %sasciiT)validatezInvalid base64 encoding.rB   zInvalid credentials.)
splitre   lowerrg   	b64decoderf   ri   binasciiError_basic_auth_no_warn)rw   rz   rc   	auth_typeencoded_credentialsdecodedusernamerb   s           rW   ri   BasicAuth.decode   s    	F-8->->sA-F*I ??'>JKK	9&&#**73dfX 	5
 ")sA!6H #8x@@-  	FDEE	F ~~ 	9788	9  	5344	5s"   B 3B& -C	 B#& C	Crc   urlc                    [        U[        5      (       d  [        S5      eUR                  c  UR                  c  g[        UR                  =(       d    SUR                  =(       d    SU5      $ )zCreate BasicAuth from url.zurl should be yarl.URL instanceNr`   )
isinstancer"   	TypeErrorraw_userraw_passwordr   userrb   )rw   r   rc   s      rW   from_urlBasicAuth.from_url   sW     #s##=>> <<C$4$4$<"388>r3<<3E2xPPr_   c                 X    [        U R                  U R                  U R                  5      $ )zEncode credentials.)rk   ra   rb   rc   rU   s    rW   rf   BasicAuth.encode   s     T]]DMMJJr_   rT   r`   rn   )rn   )rZ   r[   r\   r]   __doc__strrv   classmethodri   r"   r   r   rf   r^   __classcell__rx   s   @rW   r)   r)      s    + >F??#&?7:?	? ?* A A A; A A8 3; Q3 QS Q@U Q QK K Kr_   r)   ra   rb   rc   c                 :    [         R                  [        XU45      $ )zConstruct a BasicAuth without emitting the deprecation warning.

For internal use only. Bypasses BasicAuth.__new__ so that aiohttp's own
machinery doesn't trigger deprecation warnings in user code.
)tuplerv   r)   r   s      rW   r   r      s     ==Uh$?@@r_   r   c                     U R                   c  U R                  c  U S4$ U R                  S5      [        U R                  =(       d    SU R
                  =(       d    S5      4$ )zIRemove user and password from URL if present and return BasicAuth object.Nr`   )r   r   	with_userr   r   rb   )r   s    rW   strip_auth_from_urlr      sQ     || 0 0 8Dy== 3CHHNCLLDVTV WWWr_   c                     [         R                  R                  S5      n U b  [        U 5      nO( [        R                  " 5       nU[        (       a  SOS-  n [        R                  " [        U5      5      $ ! [
         a!  n[        R                  " SU5         SnAgSnAff = f! [        R                   a!  n[        R                  " SU5         SnAgSnAf[         av  nSn[        R                  " [        5         UR!                  5       nSSS5        O! , (       d  f       O= fU (       d  U(       a  [        R                  " SU5         SnAgSnAff = f)	zLoad netrc from file.

Attempt to load it from the path specified by the env-var
NETRC or in the default location in the user's home directory.

Returns None if it couldn't be found or fails to parse.
NETRCNzHCould not resolve home directory when trying to look for .netrc file: %s_netrcz.netrczCould not parse .netrc file: %sFzCould not read .netrc file: %s)osenvirongetr   homeRuntimeErrorr%   debug
IS_WINDOWSnetrcr   NetrcParseErrorwarningOSError
contextlibr	   is_file)	netrc_env
netrc_pathhome_direnetrc_existss        rW   netrc_from_envr      s    

w'I)_
		yy{H ZZXF
G{{3z?++  	5
 	    D?CC   G  )%--/L *))  !!"BAFGsS   A7 B% 7
B"BB"%E9CE"E>D	E
D&	",EET)auto_attribsfrozenslotsc                   0    \ rS rSr% \\S'   \S-  \S'   Srg)	ProxyInfoi  proxyN
proxy_authrT   )rZ   r[   r\   r]   r"   __annotations__r)   r^   rT   r_   rW   r   r     s    JD  r_   r   	netrc_objhostc                     U c  [        S5      eU R                  U5      nUc  [        SU< S35      eUu  p4nU(       d  Uc  UOUnUc  Sn[        Xe5      $ )z
Return :py:class:`~aiohttp.BasicAuth` credentials for ``host`` from ``netrc_obj``.

:raises LookupError: if ``netrc_obj`` is :py:data:`None` or if no
        entry is found for the ``host``.
zNo .netrc file foundzNo entry for z found in the `.netrc` file.r`   )LookupErrorauthenticatorsr   )r   r   auth_from_netrcra   accountrb   r   s          rW   basicauth_from_netrcr     sr     011..t4OM$1MNOO.EH '/uH x22r_   c                  d   [        5       R                  5        V Vs0 s H  u  pU S;   d  M  U [        U5      _M     nn n[        5       nUR                  5        V Vs0 s H  u  pU [	        U5      _M     nn n0 nUR                  5        H  u  pgUu  pUR
                  S;   a2  [        R                  " SUR
                  R                  5       U5        MK  U(       a&  U	c#  UR                  b   [        X8R                  5      n	[        X5      XV'   M     U$ s  snn f s  snn f ! [         a    S n	 N-f = f)N)httphttpswswss)r   r   z)%s proxies %s are not supported, ignoring)r   itemsr"   r   r   schemer%   r   upperr   r   r   r   )
kv
proxy_urlsr   strippedretprotovalr   auths
             rW   proxies_from_envr   *  s(    L&&((DA.. 	3q6	(  
  I6@6F6F6HI6Hda&q))6HHI
Cnn&
<<++!!;U\\=O=O=QSX zz% /	::FD u+
 ' J- J #  D s"   DDD,D  D/.D/c                 "   U R                   b4  [        U R                   5      (       a  [        SU R                   < S35      e[        5       n XR                     nUR
                  UR                  4$ ! [         a    [        SU < S35      ef = f)z5Get a permitted proxy for the given URL from the env.zProxying is disallowed for ``zNo proxies found for `z` in the env)r   r   r   r   r   r   r   KeyError)r   proxies_in_env
proxy_infos      rW   get_env_proxy_for_urlr   D  s    
xxSXX 6 68AFGG%'N7#JJ/
 !6!666  H23'FGGHs   A3 3Bc                   >    \ rS rSr% \\S'   \\S'   \\S'   S\S'   Srg)	MimeTypeiR  typesubtypesuffixzMultiDictProxy[str]
parametersrT   N)rZ   r[   r\   r]   r   r   r^   rT   r_   rW   r   r   R  s    
ILK%%r_   r   8   )maxsizemimetypec           	         U (       d  [        SSS[        [        5       5      S9$ U R                  S5      n[        5       nUSS  H]  nU(       d  M  UR	                  S5      u  pEnUR                  UR                  5       R                  5       UR                  S5      5        M_     US   R                  5       R                  5       nUS	:X  a  S
nUR	                  S5      u  pn	U	R	                  S5      u  pn
[        XU
[        U5      S9$ )zParses a MIME type into its components.

mimetype is a MIME type string.

Returns a MimeType object.

Example:

>>> parse_mimetype('text/html; charset=utf-8')
MimeType(type='text', subtype='html', suffix='',
         parameters={'charset': 'utf-8'})

r`   )r   r   r   r   rA   r#   NrI   z "r   *z*/*rE   +)r   r   r   r   	partitionaddr   strip)r   partsparamsitemkey_valuefulltypemtypestyper   s              rW   parse_mimetyper   Z  s     R~ik7R
 	
 NN3E&[Fab	s+

399;$$&D(9:	  Qx~~%%'H3((-OEes+Ef&^F=S r_   c                   :   ^  \ rS rSrSU 4S jjrS\4S jrSrU =r$ )EnsureOctetStreami  rQ   c                 D   > [         TU ]  5         U R                  S5        g Nzapplication/octet-stream)ru   __init__set_default_type)rV   rx   s    rW   r   EnsureOctetStream.__init__  s    89r_   c                     U R                  SS5      R                  5       nUR                  S5      u  n  nUR                  5       nUR	                  S5      S:w  a  U R                  5       $ U$ )zRe-implementation from Message

Returns application/octet-stream in place of plain/text when
value is wrong.

The way this class is used guarantees that content-type will
be present so simplify the checks wrt to the base implementation.
zcontent-typer`   rA   rE   r#   )r   r   r   r   countget_default_type)rV   r   ctyper   s       rW   get_content_type"EnsureOctetStream.get_content_type  sc     ,224 ooc*q!;;sq ((**r_   rT   rQ   N)	rZ   r[   r\   r]   r   r   r  r^   r   r   s   @rW   r   r     s    :
#  r_   r   rawc                     [        [        [        S9R                  SU  35      nUR	                  5       nUR                  S5      n[        USS 5      nU[        U5      4$ )zParse Content-Type header.

Returns a tuple of the parsed content type and a
MappingProxyType of parameters. The default returned value
is `application/octet-stream`
)policyzContent-Type: rT   r#   N)r   r   r   parsestrr  
get_paramsdictr   )r  msgcontent_typer   content_dicts        rW   parse_content_typer    sb     (
6
?
?.QTPU@V
WC'')L^^BFqr
#L),777r_   objdefaultc                     [        U SS 5      nU(       a<  [        U[        5      (       a'  US   S:w  a  US   S:w  a  [        U5      R                  $ U$ )Nnamer   r=   r>   )getattrr   r   r   r  )r  r  r  s      rW   guess_filenamer    sF    3%D
4%%$q'S.T"X_DzNr_   z[^\041\043-\133\135-\176]	contentc                 t    [         [        U 5      :  d  [        SU < 35      e[        R	                  S U 5      $ )a   Return 7-bit content as quoted-string.

Format content into a quoted-string as defined in RFC5322 for
Internet Message Format. Notice that this is not the 8-bit HTTP
format, but the 7-bit email format. Content must be in usascii or
a ValueError is raised.
zbad content for quoted-string c                 *    SU R                  S5      -   $ )NrC   r   )group)xs    rW   <lambda>quoted_string.<locals>.<lambda>  s    dQWWQZ&7r_   )QCONTENTsetre   not_qtext_resub)r  s    rW   quoted_stringr#    s7     s7|#9'EFF7AAr_   disptypequote_fields_charsetr   c                    U (       a  [         [        U 5      :  d  [        SU < 35      eU nU(       Ga  / nUR                  5        H  u  pgU(       a  [         [        U5      :  d  [        SU< SU< 35      eU(       a[  UR	                  5       S:X  a#  [        USUS9nUR                  USU-  45        Mp   [        U5      nUR                  USU-  45        M  UR                  S
S5      R                  SS5      nUR                  USU-  45        M     SR                  S U 5       5      n	SR                  XI45      nU$ ! [         a8    SR                  US[        USUS945      nUR                  US	-   U45         GM=  f = f)a?  Sets ``Content-Disposition`` header for MIME.

This is the MIME payload Content-Disposition header from RFC 2183
and RFC 7579 section 4.2, not the HTTP Content-Disposition from
RFC 6266.

disptype is a disposition type: inline, attachment, form-data.
Should be valid extension token (see RFC 2183)

quote_fields performs value quoting to 7-bit MIME headers
according to RFC 7578. Set to quote_fields to False if recipient
can take 8-bit file names and field values.

_charset specifies the charset to use when quote_fields is True.

params is a dict with disposition params.
zbad content disposition type z"bad content disposition parameter rI   filenamer`   r   z"%s"z''r   rC   z\\rD   z\"z; c              3   D   #    U  H  nS R                  U5      v   M     g7f)rI   N)join).0pairs     rW   	<genexpr>-content_disposition_header.<locals>.<genexpr>  s     ?wtCHHTNNws    )
TOKENr   re   r   r   r   appendr#  r*  replace)
r$  r%  r&  r   r   lparamsr   r   qvalsparamss
             rW   content_disposition_headerr5    so   ( ECM18EFFEHCus3x/ #EcWAcW!UVV99;*, b8<DNNC$#78=,S1  Vd]';<{{4088eDVd]34' '( ))?w??		5*+L & :!ww%tU3X-NO   c	4'899	:s   7E=FFc                 j    U (       d  gSU ;   =(       d     U R                  SS5      R                  5       $ )z}Check if host looks like an IP Address.

This check is only meant as a heuristic to ensure that
a host is not a domain name.
FrB   .r`   )r1  isdigit)r   s    rW   is_ip_addressr9    s/      $;9$,,sB/7799r_   c                 :   U R                  S5      n[        U5      S:w  a  gU Ht  nS[        U5      s=::  a  S::  a.  O    gUR                  5       (       a  UR                  5       (       d    gUS   S:X  a  [        U5      S:w  a    g[	        U5      S:  d  Mt    g   g	)
zCheck if host is a canonical dotted-quad IPv4 address.

Rejects the legacy numeric forms that ``socket`` still accepts and
maps onto an address, e.g. ``2130706433``, ``017700000001``, ``127.1``.
r7     Fr#   r'   r   0   T)r   lenisasciir8  int)r   r   parts      rW   is_canonical_ipv4_addressrB    s     JJsOE
5zQ SY#!# -1LLNN$,,..7c>c$i1nt9s?  r_   _cached_current_datetimec                      [        [        R                  " 5       5      n U [        :w  a0  SnSn[        R                  " U 5      tp4pVpxpSX   UX$   UUUU4-  qU q[        $ )N)MonTueWedThuFriSatSun)r`   JanFebMarAprMayJunJulAugSepOctNovDecz#%s, %02d %3s %4d %02d:%02d:%02d GMT)r@  timerC  gmtime_cached_formatted_datetime)now_weekdayname
_monthnameyearmonthdayhhmmsswdtails              rW   rfc822_formatted_timerf    s     diik
C
&& I

  37++c2B/Sbb%JN
 &
" $' %%r_   c                     U u  pU" 5       nUb)  [        [        5         [        X25      " 5         S S S 5        g g ! , (       d  f       g = frS   )r	   	Exceptionr  )inforefr  obs       rW   _weakref_handlerl  D  s<    IC	B	~i B !    s	   9
Ark  r  timeoutlooptimeout_ceil_thresholdc                     UbV  US:  aP  UR                  5       U-   nX$:  a  [        U5      nUR                  U[        [        R
                  " U 5      U45      $ g Nr   )rX  r   call_atrl  weakrefrj  )rk  r  rm  rn  ro  whens         rW   weakref_handleru  L  sR     w{yy{W$,:D||D/GKKOT3JKKr_   cbc                 p    Ub  US::  a  g UR                  5       n[        XAU5      nUR                  XP5      $ rq  )rX  calculate_timeout_whenrr  )rv  rm  rn  ro  r[  rt  s         rW   
call_laterry  \  s9     'Q,
))+C!#0FGD<<!!r_   	loop_timetimeout_ceiling_thresholdc                 .    X-   nX:  a  [        U5      $ U$ )z$Calculate when to execute a timeout.r   )rz  rm  r{  rt  s       rW   rx  rx  i  s!     D*DzKr_   c            	           \ rS rSrSrSr SS\R                  S\S-  S\SS4S	 jjr	S
\
S   S\S\SS4S jrSS jrS\R                  S-  4S jrSS jrSS jrSrg)TimeoutHandleiu  zTimeout handle_timeout_loop_ceil_threshold
_callbacksrn  rm  Nceil_thresholdrQ   c                 6    X l         Xl        X0l        / U l        g rS   r  )rV   rn  rm  r  s       rW   r   TimeoutHandle.__init__z  s       
-  	r_   callback).Nargskwargsc                 >    U R                   R                  XU45        g rS   )r  r0  )rV   r  r  r  s       rW   registerTimeoutHandle.register  s     	78r_   c                 8    U R                   R                  5         g rS   )r  clearrU   s    rW   closeTimeoutHandle.close  s    r_   c                     U R                   nUbb  US:  a\  U R                  R                  5       U-   nXR                  :  a  [	        U5      nU R                  R                  X R                  5      $ g rq  )r  r  rX  r  r   rr  __call__)rV   rm  rt  s      rW   startTimeoutHandle.start  s]    --7Q;::??$w.D...Dz::%%dMM::r_   c                     U R                   bB  U R                   S:  a2  [        U R                  5      nU R                  UR                  5        U$ [        5       $ rq  )r  TimerContextr  r  rm  	TimerNoop)rV   timers     rW   r  TimeoutHandle.timer  sB    ==$): ,EMM%--(L;r_   c                     U R                    H&  u  pn[        [        5         U" U0 UD6  S S S 5        M(     U R                   R                  5         g ! , (       d  f       MT  = frS   )r  r	   rh  r  )rV   rv  r  r  s       rW   r  TimeoutHandle.__call__  sM     $Bf)$D#F# %$ !0 	 %$s   	A
A!	)r  r  r  r     r  )rQ   BaseTimerContext)rZ   r[   r\   r]   r   	__slots__asyncioAbstractEventLoopfloatr   r   r   r  r  TimerHandler  r  r  r^   rT   r_   rW   r~  r~  u  s    FI !"	''  	
 
9 +9479CF9	9
 w**T1  r_   r~  c                   "    \ rS rSrSrSS jrSrg)r  i  rT   Nc                     g)z0Raise TimeoutError if timeout has been exceeded.NrT   rU   s    rW   assert_timeoutBaseTimerContext.assert_timeout  s    r_   r  )rZ   r[   r\   r]   r  r  r^   rT   r_   rW   r  r    s    I?r_   r  c                   X    \ rS rSrSrS\4S jrS\\   S-  S\S-  S\	S-  SS4S	 jr
Srg)
r  i  rT   rQ   c                     U $ rS   rT   rU   s    rW   	__enter__TimerNoop.__enter__  s    r_   exc_typeNexc_valexc_tbc                     g rS   rT   )rV   r  r  r  s       rW   __exit__TimerNoop.__exit__  s     	r_   )rZ   r[   r\   r]   r  r  r  r   BaseExceptionr   r  r^   rT   r_   rW   r  r    sS    I+ }%, % $	
 
r_   r  c            	           \ rS rSrSrSrS\R                  SS4S jrSS jr	S\
4S	 jrS
\\   S-  S\S-  S\S-  S\S-  4S jrSS jrSrg)r  i  z&Low resolution timeout context managerr  _tasks
_cancelled_cancellingrn  rQ   Nc                 :    Xl         / U l        SU l        SU l        g )NFr   r  )rV   rn  s     rW   r   TimerContext.__init__  s    
/1r_   c                 H    U R                   (       a  [        R                  Seg)z7Raise TimeoutError if timer has already been cancelled.N)r  r  TimeoutErrorrU   s    rW   r  TimerContext.assert_timeout  s    ??&&D0 r_   c                 *   [         R                  " U R                  S9nUc  [        S5      e[        R
                  S:  a  UR                  5       U l        U R                  (       a  [         R                  S eU R                  R                  U5        U $ )N)rn  z4Timeout context manager should be used inside a taskr&   )r  current_taskr  r   sysversion_info
cancellingr  r  r  r  r0  rV   tasks     rW   r  TimerContext.__enter__  sr    ##4<UVVw&  $0D??&&D04 r_   r  r  r  c                 8   S nU R                   (       a  U R                   R                  5       nU[        R                  L aZ  U R                  (       aI  Uc   e[
        R                  S:  a  UR                  5       U R                  :  a  g [        R                  Ueg )Nr&   )
r  popr  CancelledErrorr  r  r  uncancelr  r  )rV   r  r  r  
enter_tasks        rW   r  TimerContext.__exit__  s}     04
;;*Jw---$//))) 7* &&(4+;+;;&&G3r_   c                     U R                   (       d4  [        U R                  5       H  nUR                  5         M     SU l         g g NT)r  r   r  cancelr  s     rW   rm  TimerContext.timeout  s3    DKK( ) #DO	 r_   )r  r  r  r  r  )rZ   r[   r\   r]   r   r  r  r  r   r  r  r  r   r  r   boolr  rm  r^   rT   r_   rW   r  r    s}    0@IW66 4 1
+ "}%, % $	
 
0#r_   r  delayr  c                     U b  U S::  a  [         R                  " S 5      $ [        R                  " 5       nUR	                  5       nX0-   nX:  a  [        U5      n[         R                  " U5      $ rq  )async_timeoutrm  r  get_running_looprX  r   
timeout_at)r  r  rn  r[  rt  s        rW   ceil_timeoutr    s`     }
$$T**##%D
))+C;DDz##D))r_   c                       \ rS rSr% Sr\" / SQ5      r\\   \	S'   Sr
\S-  \	S'   Sr\\\4   S-  \	S'   \r\S-  \-  \	S'   S	\S-  S
S4S jr\S
\4S j5       r\S
\S-  4S j5       r\S
\S-  4S j5       rSrg)HeadersMixini  zMixin for handling headers.)_content_type_content_dict_stored_content_type_headersNr  r  r  r  rQ   c                     Xl         Uc  SU l        0 U l        g [        U5      u  p#X l        UR	                  5       U l        g r   )r  r  r  r  copy)rV   r  r  content_mapping_proxys       rW   _parse_content_type HeadersMixin._parse_content_type  sA    $'!;!;D!#D2DS2I/L!-!6!;!;!=Dr_   c                     U R                   R                  [        R                  5      nU R                  U:w  a  U R                  U5        U R                  c   eU R                  $ )z7The value of content part for Content-Type HTTP header.)r  r   r$   CONTENT_TYPEr  r  r  rV   r  s     rW   r  HeadersMixin.content_type&  sX     mm 1 12$$+$$S)!!---!!!r_   c                     U R                   R                  [        R                  5      nU R                  U:w  a  U R                  U5        U R                  c   eU R                  R                  S5      $ )z7The value of charset part for Content-Type HTTP header.charset)r  r   r$   r  r  r  r  r  s     rW   r  HeadersMixin.charset/  sc     mm 1 12$$+$$S)!!---!!%%i00r_   c                 t    U R                   R                  [        R                  5      nUc  S$ [	        U5      $ )z(The value of Content-Length HTTP header.N)r  r   r$   CONTENT_LENGTHr@  )rV   content_lengths     rW   r  HeadersMixin.content_length8  s3     **4+>+>?%-tF3~3FFr_   )r  r  r  )rZ   r[   r\   r]   r   	frozensetATTRSr    r   r   r  r  r  r2   r  r1   r  propertyr  r  r@  r  r^   rT   r_   rW   r  r    s    %PQE3 $M3:$+/M4S>D(/3;#*y0;
>sTz 
>d 
> "c " " 1t 1 1 Gd
 G Gr_   r  futzasyncio.Future[_T]resultc                 R    U R                  5       (       d  U R                  U5        g g rS   )done
set_result)r  r  s     rW   r  r  ?  s    88::v r_   c                   0    \ rS rSr SS\S\SS4S jjrSrg)	ErrorableProtocoliG  exc	exc_causerQ   Nc                     g rS   rT   )rV   r  r  s      rW   set_exceptionErrorableProtocol.set_exceptionH  s     r_   rT   .)rZ   r[   r\   r]   r  r  r^   rT   r_   rW   r  r  G  s-     $' ! 
	 r_   r  z&asyncio.Future[_T] | ErrorableProtocolr  r  c                     [         R                  " U 5      (       a  U R                  5       (       a  gU[        L nXL nU(       d  U(       d  X!l        U R                  U5        g)zSet future exception.

If the future is marked as complete, this function is a no-op.

:param exc_cause: An exception that is a direct cause of ``exc``.
                  Only set if provided.
N)r  isfuturer  _EXC_SENTINEL	__cause__r  )r  r  r  exc_is_sentinelexc_causes_itselfs        rW   r  r  O  sN     =0O(#4!cr_   c                   p    \ rS rSr% SrSr\\   \S'   SS\	S\\
   S-  4S jjrS	\S
\4S jrS
\	4S jrSrg)BaseKeyif  zBase for concrete context storage key classes.

Each storage is provided with its own sub-class for the sake of some additional type safety.
)_name_t__orig_class__r  Nr  tc                     [         R                  " 5       nU(       a?  UR                  R                  S:X  a  UR                  S   nOUR
                  nU(       a  M?  WS-   U-   U l        X l        g )Nz<module>rZ   r7  )inspectcurrentframef_codeco_name	f_globalsf_backr  r  )rV   r  r  framemodules        rW   r   BaseKey.__init__t  s]    $$&||##z1#ooj9LLE	 e c\D(
r_   otherrQ   c                 `    [        U[        5      (       a  U R                  UR                  :  $ gr  )r   r  r  )rV   r  s     rW   __lt__BaseKey.__lt__  s%    eW%%::++r_   c                    U R                   nUc0  [        [        5         [        U R                  5      S   nS S S 5        Uc  SnOY[        U[        5      (       a9  UR                  S:X  a  UR                  nO'UR                   SUR                   3nO[        U5      nSU R                  R                   SU R                   SU S3$ ! , (       d  f       N= f)	Nr   z<<Unknown>>builtinsr7  r=   r;   z, type=z)>)r  r	   AttributeErrorr   r  r   r   r[   r\   reprrx   rZ   r  )rV   r  t_reprs      rW   __repr__BaseKey.__repr__  s    GG9.)T001!4 * 9"F4  ||z)LL>1>>*:;!WF4>>**+1TZZLxrJJ *)s   C		
C)r  r  rS   )rZ   r[   r\   r]   r   r  r   objectr   r   r/   r   r  r  r  r^   rT   r_   rW   r  r  f  sV    
 2I
 L 
S 
T"X_ 
F t 
K# Kr_   r  c                       \ rS rSrSrSrg)AppKeyi  z.Keys for static typing support in Application.rT   NrZ   r[   r\   r]   r   r^   rT   r_   rW   r  r    s    8r_   r  c                       \ rS rSrSrSrg)
RequestKeyi  z*Keys for static typing support in Request.rT   Nr   rT   r_   rW   r"  r"    s    4r_   r"  c                       \ rS rSrSrSrg)ResponseKeyi  z+Keys for static typing support in Response.rT   Nr   rT   r_   rW   r$  r$    s    5r_   r$  c            	          \ rS rSrSrS\\\\\	   -  \	4      SS4S jr
SS jr\S\\   S\4S	 j5       r\S\S\	4S
 j5       rS\\\   -  S\	4S jr\S\\   S\S\\-  4S j5       r\SS\\   SSS\S-  4S jj5       r\SS\S\	S\	4S jj5       rSS\\\   -  S\	S\	4S jjrS\4S jrS\\\\	   -     4S jrS\S\4S jrS\4S jrS\4S jrSrg)r*   i  )_mapsmapsrQ   Nc                 $    [        U5      U l        g rS   )r   r&  )rV   r'  s     rW   r   ChainMapProxy.__init__  s    4[
r_   c                 4    [        SU R                   S35      e)NzInheritance class z  from ChainMapProxy is forbidden)r   rZ   )rw   s    rW   __init_subclass__ChainMapProxy.__init_subclass__  s      .NO
 	
r_   r   c                     g rS   rT   rV   r   s     rW   __getitem__ChainMapProxy.__getitem__  s    25r_   c                     g rS   rT   r.  s     rW   r/  r0    s    ,/r_   c                 j    U R                    H  n X!   s  $    [        U5      e! [         a     M$  f = frS   )r&  r   )rV   r   mappings      rW   r/  r0    s=    zzG|# "
 sm  s   $
22r  c                     g rS   rT   rV   r   r  s      rW   r   ChainMapProxy.get  s    <?r_   c                     g rS   rT   r5  s      rW   r   r6    s    FIr_   c                     g rS   rT   r5  s      rW   r   r6    s    8;r_   c                 0     X   $ ! [          a    Us $ f = frS   )r   r5  s      rW   r   r6    s#    	9 	N	s    c                 V    [        [        5       R                  " U R                  6 5      $ rS   )r>  r   unionr&  rU   s    rW   __len__ChainMapProxy.__len__  s    35;;

+,,r_   c                 v    0 n[        U R                  5       H  nUR                  U5        M     [        U5      $ rS   )reversedr&  updateiter)rV   dr3  s      rW   __iter__ChainMapProxy.__iter__  s1    *,

+GHHW , Awr_   c                 B   ^ [        U4S jU R                   5       5      $ )Nc              3   .   >#    U  H
  nTU;   v   M     g 7frS   rT   )r+  mr   s     rW   r-  -ChainMapProxy.__contains__.<locals>.<genexpr>  s     0Z3!8Zs   anyr&  r.  s    `rW   __contains__ChainMapProxy.__contains__  s    0TZZ000r_   c                 ,    [        U R                  5      $ rS   rI  rU   s    rW   __bool__ChainMapProxy.__bool__  s    4::r_   c                 `    SR                  [        [        U R                  5      5      nSU S3$ )Nz, zChainMapProxy(r<   )r*  mapr  r&  )rV   r  s     rW   r  ChainMapProxy.__repr__  s*    ))Cdjj12y**r_   r  r  rS   )rZ   r[   r\   r]   r  r   r   r   r  r   r   r+  r   r/   r/  r0   r   r@  r<  r   rC  r  r  rK  rN  r  r^   rT   r_   rW   r*   r*     sf   I!XgcF3K.?.D&EF !4 !

 5vbz5b5 5/s/s/ /sVBZ/ C  ?vbz?B?27? ?IvbzIDI29I I;s;S;3; ;sVBZ' #  - -(3#45 1 14 1$ +# +r_   r*   z[!\x23-\x7E\x80-\xff]+z(W/)?"(z)"z)(?:\s*,\s*|$)|(.)r   c                   .    \ rS rSr% \\S'   Sr\\S'   Srg)r+   i  r   Fis_weakrT   N)	rZ   r[   r\   r]   r   r   rT  r  r^   rT   r_   rW   r+   r+     s    JGTr_   r+   r   c                 n    U [         :w  a+  [        R                  U 5      (       d  [        SU < S35      eg g )NzValue z, is not a valid etag. Maybe it contains '"'?)ETAG_ANY	_ETAGC_RE	fullmatchre   )r   s    rW   validate_etag_valuerY    s<    !4!4U!;!;UIJK
 	
 "<r_   date_strc                     U bX  [        U 5      nUbJ  [        [        5         [        R                  " USS S[        R                  R
                  06sSSS5        $ g! , (       d  f       g= f)z/Process a date string, return a datetime objectN   tzinfo)r   r	   re   datetimetimezoneutc)rZ  	timetuples     rW   parse_http_daterb    s\    h'	 *%(()BQ-V@Q@Q@U@UV &% &%s   1A
A+methodcodec                     U[         ;   =(       d?    U [        ;   =(       d/    SUs=:*  =(       a    S:  Os  =(       a    U [        R                  ;   $ )z-Check if a request must return an empty body.r6   ,  )EMPTY_BODY_STATUS_CODESEMPTY_BODY_METHODSr$   METH_CONNECT_ALLrc  rd  s     rW   must_be_empty_bodyrk    sG     	'' 	C''	C4#A&D,A,A"Ar_   c                     U[         ;   =(       d/    SUs=:*  =(       a    S:  Os  =(       a    U [        R                  ;   $ )zjCheck if a Content-Length header should be removed.

This should always be a subset of must_be_empty_body
r6   rf  )rg  r$   ri  rj  s     rW   should_remove_content_lengthrm    s7     ** tc=f(=(==r_   )r`   utf-8r   rS   )Trn  )ri  ztuple[weakref.ref[object], str]rQ   Nr  )r   r  rg   r   r   r^  enum	functoolsr	  r   r   platformrer  rX  rr   rs  collectionsr   collections.abcr   r   r   r   r   r	   email.messager
   email.parserr   email.policyr   email.utilsr   mathr   pathlibr   typesr   r   typingr   r   r   r   r   r   r   r   urllib.parser   urllib.requestr   r   attr	multidictr   r   r    propcache.apir!   r,   yarlr"   r`   r$   logr%   r  r  __all__systemIS_MACOSr   PY_311DEFAULT_CHUNK_SIZEr/   r0   Enumr1   r2   r  r   r   NO_EXTENSIONSr  rangerg  METH_HEAD_ALLrh  flagsdev_modeignore_environmentDEBUGchrCHARCTL
SEPARATORSr/  rO   r   rk   r)   r   r   r   r   sr   r   r  r   r   r   	lru_cacher   r   r  r  compiler!  r  r#  r5  r9  rB  rC  r@  r   rZ  rf  rl  r  r  r  r  ru  ry  rx  r~  r  r  r  Timeoutr  r  r  r  r  r  r  total_orderingr  r  r"  r$  r*   _ETAGCrW  _QUOTED_ETAGQUOTED_ETAG_RELIST_QUOTED_ETAG_RErV  r+   rY  rb  rk  rm  )is   0rW   <module>r     s             	  	 
    " L L  & %  !   1	 	 	  3  = = 8   w#
9??(__)+
			W	$
  T]T]IIk:.	RZZ^^$;<= $S#$@c3$@A  '' 		 			$$$Sbjjnn=Q.R)S 
 a&1A&Q|$|!s1v|$H(  F'
* 	s
Z 
	?S 	?C 	? 	?RU 	?BK
;(IJ BKL 5=AAA.1AAXS XU3	D0@+@%A X(d* (V T$d3! ! 4!
3EKK$$6 3c 3i 3:$sI~. 47s 7uS)d2B-B'C 7 T$d3& & 4& R $S $X $ !$N 2 R 8C 8E#/?S/I*I$J 8 !8 cDj C$J  zz67!$-.-qCF-.$7
B3 
B3 
B ?F00!%08;0QT00f
:d
 
:t 
:C D , (, #* + %&s %&P  %&
  
#
#	
 " 4( %&	
"S
"
" 
#
#
" "	
"
 4
"			  %	 		1  1 h?~&89 ?   >## >#D 23*4<*).**,G ,G^( "  
    -	1	  
	. .Kgbk .K .Kb9WR[ 95 56'"+ 6;+GC&+-s23 ;+~ 
#JJv	&$L)jjAl^3E!FG  T$d3  4

s 
t 
cDj X->->-E  s # $  	 	C 	D 	o '$v
 /s   X
!X5X