
    5gq                     
   U d 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	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 ddl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$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/ ddl0m1Z1 ddl2m3Z3m4Z4 ddl5Z5ddl6m7Z7m8Z8m9Z9 ddl:m;Z< ddl=m>Z> ddl?m@Z@ ddlAmBZB ej                  dk\  rddlZDnddlDZDdZE ej                         dk(  ZG ej                         dk(  ZHej                  dk\  ZIej                  dk\  ZJ e,d      ZK e,d      ZL ej                  dd      ZNeNj                  ZO ePe
j                  j                  d            ZS eTddg eUdd             ZVe@j                  ZXej                  j                  xs: ej                  j                   xr!  ePe
j                  j                  d!            Z\ eUdd"      D  ch c]
  }  e]|        c} Z^ eUdd#      D  ch c]
  }  e]|        c}  e]d$      hz  Z_d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6 e]d7      hZ`e^e_z  e`z  Za G d8 d9      Zb G d: d; ed;g d<            Zcd=e>d>e*e>e(ec   f   fd?Zdd>e(e	j                     fd@Ze e5j                  dAdAdAB       G dC dD             ZgdEe(e	j                     dFehd>ecfdGZid>e!ehegf   fdHZjd=e>d>e*e>e(ec   f   fdIZk e5j                  dAdAdAB       G dJ dK             Zl ej                  dLM      dNehd>elfdO       ZnddPedQe(eh   d>e(eh   fdRZo ej                  dS      Zq eUd#d$      D  ch c]
  }  e]|        c} dThz  ZrdUehd>ehfdVZs	 ddWehdXePdYehdZehd>ehf
d[ZtdFe(eh   d>ePfd\Zudave(ew   exd]<   d^ayd>ehfd_Zzdd`Z{	 ddae|dbehdce}ddej                  dee}d>e(ej                     fdfZ	 ddgeg ef   dce}ddej                  dee}d>e(ej                     f
dhZdie}dce}dje}d>e}fdkZ G dl dm      Z G dn doe do         Z G dp dqe      Z G dr dse      Z	 ddte(e}   due}d>eDj                  fdvZ G dw dx      Zdydzd{eKd>dfd|Z e       Z G d} d~e)      Zefdyddeded>dfdZej                   G d de#eK                Z G d de'e-ehee   f   ef         ZdZ ej                  e      Zde dZ ej                  e      Z ej                  d%e d      ZdZ e5j                  dAdAdAB       G d d             Zdehd>dfdZde(eh   d>e(ej
                     fdZej                  dehdewd>ePfd       Zdehdewd>ePfdZyc c} w c c} w c c} w )zVarious helper functions    N)
namedtuple)suppress)HeaderParser)	parsedateceil)Path)TracebackType)AnyCallableContextManagerDict	GeneratorGenericIterableIteratorListMappingOptionalProtocolTupleTypeTypeVarUnionget_argsoverload)quote)
getproxiesproxy_bypass)	MultiDictMultiDictProxyMultiMapping)under_cached_property)URL   )hdrs)client_logger      )	BasicAuthChainMapProxyETagreifyDarwinWindows)r)   
   _T_S	_SENTINELsentinelAIOHTTP_NO_EXTENSIONS   i0  d      PYTHONASYNCIODEBUG          ()<>@,;:\"/[]?={} 	   c                       e Zd Zded   fdZy)noopreturn)NNNc              #      K   d  y wN selfs    e/var/www/python.lazyprojects.co.uk/rdoDiscordBot/venv/lib/python3.12/site-packages/aiohttp/helpers.py	__await__znoop.__await__v   s	     s   N)__name__
__module____qualname__r   rZ   rV       rY   rR   rR   u   s    9%56 r^   rR   c            	            e Zd ZdZ	 ddedededd f fdZeddededd fd	       Zedd
dedede	d    fd       Z
defdZ xZS )r+   z!Http basic authentication helper.latin1loginpasswordencodingrS   c                 z    |t        d      |t        d      d|v rt        d      t        | 	  | |||      S )Nz"None is not allowed as login valuez%None is not allowed as password valuerE   z5A ":" is not allowed in login (RFC 1945#section-11.1))
ValueErrorsuper__new__)clsra   rb   rc   	__class__s       rY   rg   zBasicAuth.__new__}   sP     =ABBDEE%<TUUwsE8X>>r^   auth_headerc                    	 |j                  dd      \  }}|j                         dk7  rt        d|z        	 t        j                  |j                  d      d      j                  |      }	 |j                  d
d      \  }} | |||      S # t        $ r t        d      w xY w# t        j                  $ r t        d	      w xY w# t        $ r t        d      w xY w)z<Create a BasicAuth object from an Authorization HTTP header.rO   r%   z%Could not parse authorization header.basiczUnknown authorization method %sasciiT)validatezInvalid base64 encoding.rE   zInvalid credentials.rc   )	splitre   lowerbase64	b64decodeencodedecodebinasciiError)rh   rj   rc   	auth_typeencoded_credentialsdecodedusernamerb   s           rY   ru   zBasicAuth.decode   s    	F-8->->sA-F*I* ??'>JKK	9&&#**73dfX 	5
 ")sA!6Hh 8X99-  	FDEE	F ~~ 	9788	9  	5344	5s"   B 5B' /C	 B$'C	Cro   urlc                    t        |t              st        d      |j                  |j                  y | |j
                  xs d|j                  xs d|      S )zCreate BasicAuth from url.zurl should be yarl.URL instanceN ro   )
isinstancer$   	TypeErrorraw_userraw_passworduserrb   )rh   r|   rc   s      rY   from_urlzBasicAuth.from_url   sT     #s#=>> <<C$4$4$<388>r3<<#52IIr^   c                     | j                    d| j                   j                  | j                        }dt	        j
                  |      j                  | j                        z  S )zEncode credentials.rE   zBasic %s)ra   rb   rt   rc   rr   	b64encoderu   )rX   credss     rY   rt   zBasicAuth.encode   sN    JJ<q088GF,,U3::4==IIIr^   )r~   r`   )r`   )r[   r\   r]   __doc__strrg   classmethodru   r$   r   r   rt   __classcell__)ri   s   @rY   r+   r+   z   s    + >F??#&?7:?	? : : :; : :8 3; J3 JS J@U J JJ Jr^   r+   )ra   rb   rc   r|   rS   c                     | j                   | j                  | dfS | j                  d      t        | j                  xs d| j
                  xs d      fS )zIRemove user and password from URL if present and return BasicAuth object.Nr~   )r   r   	with_userr+   r   rb   )r|   s    rY   strip_auth_from_urlr      sO     || 0 0 8Dy==	#((.b#,,:L" MMMr^   c                  z   t         j                  j                  d      } | t        |       }n"	 t        j                         }|t        rdndz  }	 t        j                  t        |            S # t
        $ r }t        j                  d|       Y d}~yd}~ww xY w# t        j                  $ r }t        j                  d|       Y d}~yd}~wt        $ re}d}t        j                  t              5  |j!                         }ddd       n# 1 sw Y   nxY w| s|rt        j                  d|       Y d}~yd}~ww xY w)	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        rY   netrc_from_envr      s    

w'I)_
		yy{H ZXF
G{{3z?++  	5
 	    D?CC   G  )%--/L *))  !!"BAFGsS   A/ B /	B8BBD:.C		D:D50D
	D5
D	!D55D:T)auto_attribsfrozenslotsc                   (    e Zd ZU eed<   ee   ed<   y)	ProxyInfoproxy
proxy_authN)r[   r\   r]   r$   __annotations__r   r+   rV   r^   rY   r   r      s    J##r^   r   	netrc_objhostc                     | t        d      | j                  |      }|t        d|d      |\  }}}|s||n|}|d}t        ||      S )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          rY   basicauth_from_netrcr      sv     011..t4OM$1MNOO.E7H '/uH Xx((r^   c                  B   t               j                         D  ci c]  \  } }| dv r| t        |       }} }t               }|j                         D  ci c]  \  } }| t	        |       }} }i }|j                         D ]~  \  }}|\  }}	|j
                  dv r0t        j                  d|j
                  j                         |       I|r%|	#|j                  	 t        ||j                        }	t        ||	      ||<    |S c c}} w c c}} w # t        $ r d }	Y ,w xY w)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
             rY   proxies_from_envr     s4    L&&((DAq.. 	
3q6	(  
  I6@6F6F6HI6Hda&q))6HHI
Cnn&
st<<++!!;U\\=O=O=QSX zz% /	5::FD ud+E
 ' J- J #  D s   DD
DDDc                    | j                   .t        | j                         rt        d| j                   d      t               }	 || j                     }|j
                  |j                  fS # t        $ r t        d| d      w xY w)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      rY   get_env_proxy_for_urlr   *  s    
xxSXX 68AFGG%'N7#CJJ/
 !6!666  H23'FGGHs   A- -Bc                   6    e Zd ZU eed<   eed<   eed<   ded<   y)MimeTypetypesubtypesuffixzMultiDictProxy[str]
parametersN)r[   r\   r]   r   r   rV   r^   rY   r   r   8  s    
ILK%%r^   r   8   )maxsizemimetypec           	         | s t        dddt        t                           S | j                  d      }t               }|dd D ]W  }|s|j	                  d      \  }}}|j                  |j                         j                         |j                  d             Y |d   j                         j                         }|d	k(  rd
}|j	                  d      \  }}}	|	j	                  d      \  }	}}
t        ||	|
t        |            S )a  Parses 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   rD   r%   NrL   z "r   *z*/*rH   +)r   r!   r    rp   	partitionaddrq   strip)r   partsparamsitemkey_valuefulltypemtypestyper   s              rY   parse_mimetyper   @  s     R~ik7R
 	
 NN3E&[Fab	s+Q

399;$$&D(9:	  Qx~~%%'H3((-OE1es+E1fE&^F=S r^   objdefaultc                     t        | dd       }|r5t        |t              r%|d   dk7  r|d   dk7  rt        |      j                  S |S )Nnamer   r@   rA   )getattrr   r   r	   r   )r   r   r   s      rY   guess_filenamer   h  sC    3%D
4%$q'S.T"X_DzNr^   z[^\041\043-\133\135-\176]	contentc                 p    t         t        |       kD  st        d|       t        j	                  d |       S )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                 *    d| j                  d      z   S )NrF   r   )group)xs    rY   <lambda>zquoted_string.<locals>.<lambda>}  s    dQWWQZ&7r^   )QCONTENTsetre   not_qtext_resub)r   s    rY   quoted_stringr   s  s7     s7|#9'EFF7AAr^   disptypequote_fields_charsetr   c                    | rt         t        |       kD  st        d|       | }|rg }|j                         D ]  \  }}|rt         t        |      kD  st        d|d|      |r[|j	                         dk(  r%t        |d|      }|j                  |d|z  f       e	 t        |      }|j                  |d|z  f       |j                  d
d      j                  dd      }|j                  |d|z  f        dj                  d |D              }	dj                  ||	f      }|S # t        $ r: dj                  |dt        |d|      f      }|j                  |d	z   |f       Y 1w xY w)ak  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 rL   filenamer~   ro   z"%s"z''r   rF   z\\rG   z\"z; c              3   >   K   | ]  }d j                  |        yw)rL   N)join).0pairs     rY   	<genexpr>z-content_disposition_header.<locals>.<genexpr>  s     ?wtCHHTNws   )
TOKENr   re   r   rq   r   appendr   r   replace)
r   r   r   r   r   lparamsr   r   qvalsparamss
             rY   content_disposition_headerr    sp   ( 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	:s   D((?E+*E+c                 T    | syd| v xs  | j                  dd      j                         S )zCheck 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.
    FrE   .r~   )r  isdigit)r   s    rY   is_ip_addressr    s/      $;9$,,sB/7799r^   _cached_current_datetimer~   c                      t        t        j                               } | t        k7  r5d}d}t        j                  |       ^}}}}}}}	}
d||	   |||   ||||fz  a| at        S )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)inttimer  gmtime_cached_formatted_datetime)now_weekdayname
_monthnameyearmonthdayhhmmsswdtails              rY   rfc822_formatted_timer1    s     diik
C
&& I

  37++c2B/eS"b"b4%JuN
 &
" $' %%r^   c                     | \  }} |       }|*t        t              5   t        ||              d d d        y y # 1 sw Y   y xY wrU   )r   	Exceptionr   )inforefr   obs       rY   _weakref_handler7    sB    IC	B	~i GB !    s	   :Ar6  r   timeoutlooptimeout_ceil_thresholdc                     |T|dkD  rO|j                         |z   }||k\  rt        |      }|j                  |t        t	        j
                  |       |f      S y Nr   )r#  r   call_atr7  weakrefr5  )r6  r   r8  r9  r:  whens         rY   weakref_handler@    sU     w{yy{W$,,:D||D/GKKOT3JKKr^   cbc                 p    ||dk  ry |j                         }t        |||      }|j                  ||       S r<  )r#  calculate_timeout_whenr=  )rA  r8  r9  r:  r&  r?  s         rY   
call_laterrD    s=     'Q,
))+C!#w0FGD<<b!!r^   	loop_timetimeout_ceiling_thresholdc                 0    | |z   }||kD  rt        |      S |S )z$Calculate when to execute a timeout.r   )rE  r8  rF  r?  s       rY   rC  rC    s&     wD**DzKr^   c            	           e Zd ZdZdZ	 ddej                  dee   deddfdZ	d	e
d
   dededdfdZddZdeej                     fdZddZddZy)TimeoutHandlezTimeout handle_timeout_loop_ceil_threshold
_callbacksr9  r8  ceil_thresholdrS   Nc                 <    || _         || _        || _        g | _        y rU   rJ  )rX   r9  r8  rO  s       rY   __init__zTimeoutHandle.__init__"  s&      
-  	r^   callback).Nargskwargsc                 @    | j                   j                  |||f       y rU   )rN  r  )rX   rR  rS  rT  s       rY   registerzTimeoutHandle.register/  s     	$78r^   c                 8    | j                   j                          y rU   )rN  clearrW   s    rY   closezTimeoutHandle.close4  s    r^   c                     | j                   }|b|dkD  r]| j                  j                         |z   }|| j                  k\  rt	        |      }| j                  j                  || j                        S y r<  )rK  rL  r#  rM  r   r=  __call__)rX   r8  r?  s      rY   startzTimeoutHandle.start7  sa    --7Q;::??$w.D$...Dz::%%dDMM::r^   c                     | j                   A| j                   dkD  r2t        | j                        }| j                  |j                         |S t               S r<  )rK  TimerContextrL  rV  r8  	TimerNoop)rX   timers     rY   r`  zTimeoutHandle.timerA  sB    ==$): ,EMM%--(L;r^   c                     | j                   D ]&  \  }}}t        t              5   ||i | d d d        ( | j                   j                          y # 1 sw Y   MxY wrU   )rN  r   r3  rX  )rX   rA  rS  rT  s       rY   r[  zTimeoutHandle.__call__I  sO     $Bf)$D#F# %$ !0 	 %$s   	AA	   rS   N)rS   BaseTimerContext)r[   r\   r]   r   	__slots__asyncioAbstractEventLoopr   floatrQ  r   r   rV  rY  TimerHandler\  r`  r[  rV   r^   rY   rI  rI    s    FI !"	'' % 	
 
9 +9479CF9	9
 x 3 34  r^   rI  c                       e Zd ZdZddZy)re  rV   Nc                      y)z0Raise TimeoutError if timeout has been exceeded.NrV   rW   s    rY   assert_timeoutzBaseTimerContext.assert_timeoutU  s    r^   rd  )r[   r\   r]   rf  rm  rV   r^   rY   re  re  Q  s    I?r^   re  c                   L    e Zd ZdZdefdZdeee      dee   dee	   ddfdZ
y)	r_  rV   rS   c                     | S rU   rV   rW   s    rY   	__enter__zTimerNoop.__enter__]  s    r^   exc_typeexc_valexc_tbNc                      y rU   rV   )rX   rq  rr  rs  s       rY   __exit__zTimerNoop.__exit__`  s     	r^   )r[   r\   r]   rf  re  rp  r   r   BaseExceptionr
   ru  rV   r^   rY   r_  r_  Y  sS    I+ 4./ -( '	
 
r^   r_  c            	           e Zd ZdZdZdej                  ddfdZddZde	fdZ
d	eee      d
ee   dee   dee   fdZddZy)r^  z&Low resolution timeout context managerrL  _tasks
_cancelled_cancellingr9  rS   Nc                 <    || _         g | _        d| _        d| _        y )NFr   rx  )rX   r9  s     rY   rQ  zTimerContext.__init__n  s    
/1r^   c                 >    | j                   rt        j                  dy)z7Raise TimeoutError if timer has already been cancelled.N)rz  rg  TimeoutErrorrW   s    rY   rm  zTimerContext.assert_timeoutt  s    ??&&D0 r^   c                     t        j                  | j                        }|t        d      t        j
                  dk\  r|j                         | _        | j                  rt         j                  d | j                  j                  |       | S )N)r9  z4Timeout context manager should be used inside a taskr(   )rg  current_taskrL  r   sysversion_info
cancellingr{  rz  r~  ry  r  rX   tasks     rY   rp  zTimerContext.__enter__y  sr    ##4<UVVw&  $0D??&&D04 r^   rq  rr  rs  c                    d }| j                   r| j                   j                         }|t        j                  u rR| j                  rF|J t
        j                  dk\  r|j                         | j                  kD  ry t        j                  |y )Nr(   )
ry  poprg  CancelledErrorrz  r  r  uncancelr{  r~  )rX   rq  rr  rs  
enter_tasks        rY   ru  zTimerContext.__exit__  s}     37
;;*Jw---$//))) 7* &&(4+;+;;&&G3r^   c                     | j                   s2t        | j                        D ]  }|j                           d| _         y y NT)rz  r   ry  cancelr  s     rY   r8  zTimerContext.timeout  s3    DKK( ) #DO	 r^   rd  )r[   r\   r]   r   rf  rg  rh  rQ  rm  re  rp  r   r   rv  r
   boolru  r8  rV   r^   rY   r^  r^  i  s}    0@IW66 4 1
+ "4./ -( '	
 
$0#r^   r^  delayrO  c                     | | dk  rt        j                  d       S t        j                         }|j	                         }|| z   }| |kD  rt        |      }t        j                  |      S r<  )async_timeoutr8  rg  get_running_loopr#  r   
timeout_at)r  rO  r9  r&  r?  s        rY   ceil_timeoutr    sd     }
$$T**##%D
))+C;D~Dz##D))r^   c                       e Zd ZU dZ eg d      Zee   ed<   dZ	e
e   ed<   dZe
eeef      ed<   eZeedef   ed<   de
e   d	dfd
Zed	efd       Zed	e
e   fd       Zed	e
e   fd       Zy)HeadersMixinzMixin for handling headers.)_content_type_content_dict_stored_content_type_headersNr  r  r  rawrS   c                     || _         |d| _        i | _        y t               j	                  d|z         }|j                         | _        |j                  d      }t        |dd        | _        y )Nzapplication/octet-streamzContent-Type: rV   r%   )r  r  r  r   parsestrget_content_type
get_paramsdict)rX   r  msgr   s       rY   _parse_content_typez HeadersMixin._parse_content_type  si    $'!;!;D!#D.))*:S*@AC!$!5!5!7D^^B'F!%fQRj!1Dr^   c                     | j                   j                  t        j                        }| j                  |k7  r| j                  |       | j                  J | j                  S )z7The value of content part for Content-Type HTTP header.)r  r   r&   CONTENT_TYPEr  r  r  rX   r  s     rY   content_typezHeadersMixin.content_type  sX     mm 1 12$$+$$S)!!---!!!r^   c                     | j                   j                  t        j                        }| j                  |k7  r| j                  |       | j                  J | j                  j                  d      S )z7The value of charset part for Content-Type HTTP header.charset)r  r   r&   r  r  r  r  r  s     rY   r  zHeadersMixin.charset  sc     mm 1 12$$+$$S)!!---!!%%i00r^   c                 r    | j                   j                  t        j                        }|dS t	        |      S )z(The value of Content-Length HTTP header.N)r  r   r&   CONTENT_LENGTHr"  )rX   content_lengths     rY   r  zHeadersMixin.content_length  s3     **4+>+>?%-tF3~3FFr^   )r[   r\   r]   r   	frozensetATTRSr"   r   r   r  r   r  r   r5   r  r   r4   r  propertyr  r  r"  r  rV   r^   rY   r  r    s    %PQE3#'M8C='.2M8DcN+28@%T9 45@
2x} 
2 
2 "c " " 1# 1 1 G G Gr^   r  futzasyncio.Future[_T]resultc                 H    | j                         s| j                  |       y y rU   )done
set_result)r  r  s     rY   r  r    s    88:v r^   c                   $    e Zd Z	 ddededdfdZy)ErrorableProtocolexc	exc_causerS   Nc                      y rU   rV   )rX   r  r  s      rY   set_exceptionzErrorableProtocol.set_exception  s     r^   .)r[   r\   r]   rv  r  rV   r^   rY   r  r    s(     $' ! 
	r^   r  z&asyncio.Future[_T] | ErrorableProtocolr  r  c                     t        j                  |       r| j                         ry|t        u }||u }|s	|s||_        | j                  |       y)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)rg  isfuturer  _EXC_SENTINEL	__cause__r  )r  r  r  exc_is_sentinelexc_causes_itselfs        rY   r  r    sM     =0Oy(#4!cr^   c                   `    e Zd ZU dZdZee   ed<   ddede	ee
      fdZded	efd
Zd	efdZy)AppKeyz.Keys for static typing support in Application.)_name_t__orig_class__r  Nr   tc                     t        j                         }|r8|j                  j                  dk(  r|j                  d   }n|j
                  }|r8dz   |z   | _        || _        y )Nz<module>r[   r
  )inspectcurrentframef_codeco_name	f_globalsf_backr  r  )rX   r   r  framemodules        rY   rQ  zAppKey.__init__  s]    $$&||##z1#ooj9LLE	  c\D(
r^   otherrS   c                 V    t        |t              r| j                  |j                  k  S yr  )r   r  r  )rX   r  s     rY   __lt__zAppKey.__lt__%  s"    eV$::++r^   c                 l   | j                   }|0t        t              5  t        | j                        d   }d d d        |d}nSt        |t              r8|j                  dk(  r|j                  }n'|j                   d|j                   }nt        |      }d| j                   d| dS # 1 sw Y   txY w)Nr   z<<Unknown>>builtinsr
  z<AppKey(z, type=z)>)r  r   AttributeErrorr   r  r   r   r\   r]   reprr  )rX   r  t_reprs      rY   __repr__zAppKey.__repr__*  s    GG9.)T001!4 * 9"F4 ||z)LL>1>>*:;!WF$**WVHB77 *)s   B**B3rU   )r[   r\   r]   r   rf  r   objectr   r   r   r2   rQ  r  r  r  rV   r^   rY   r  r    sQ    81I
 L 
S 
Xd2h%7 
F t 
8# 8r^   r  c            	          e Zd ZdZdeeeeee	   f   e	f      ddfdZ
ddZedee   defd       Zedede	fd	       Zdeeee   f   de	fd
Zedee   dedeeef   fd       Zeddee   dddee   fd       Zeddede	de	fd       Zddeeee   f   de	de	fdZdefdZdeeeee	   f      fdZdedefdZdefdZdefdZy)r,   )_mapsmapsrS   Nc                 $    t        |      | _        y rU   )tupler  )rX   r  s     rY   rQ  zChainMapProxy.__init__@  s    4[
r^   c                 J    t        dj                  | j                              )Nz4Inheritance class {} from ChainMapProxy is forbidden)r   formatr[   )rh   s    rY   __init_subclass__zChainMapProxy.__init_subclass__C  s"    !6#,,/
 	
r^   r   c                      y rU   rV   rX   r   s     rY   __getitem__zChainMapProxy.__getitem__I  s    25r^   c                      y rU   rV   r  s     rY   r  zChainMapProxy.__getitem__L  s    ,/r^   c                 f    | j                   D ]	  }	 ||   c S  t        |      # t        $ r Y "w xY wrU   )r  r   )rX   r   mappings      rY   r  zChainMapProxy.__getitem__O  s?    zzGs|# "
 sm  s   $	00r   c                      y rU   rV   rX   r   r   s      rY   r   zChainMapProxy.getW  s    BEr^   c                      y rU   rV   r  s      rY   r   zChainMapProxy.getZ  s    ILr^   c                      y rU   rV   r  s      rY   r   zChainMapProxy.get]  s    8;r^   c                 0    	 | |   S # t         $ r |cY S w xY wrU   )r   r  s      rY   r   zChainMapProxy.get`  s%    	9 	N	s    c                 V    t         t               j                  | j                         S rU   )lenr   unionr  rW   s    rY   __len__zChainMapProxy.__len__f  s    ;35;;

+,,r^   c                 r    i }t        | j                        D ]  }|j                  |        t        |      S rU   )reversedr  updateiter)rX   dr  s      rY   __iter__zChainMapProxy.__iter__j  s1    02

+GHHW , Awr^   c                 @    t        fd| j                  D              S )Nc              3   &   K   | ]  }|v  
 y wrU   rV   )r   mr   s     rY   r  z-ChainMapProxy.__contains__.<locals>.<genexpr>r  s     0Z3!8Zs   anyr  r  s    `rY   __contains__zChainMapProxy.__contains__q  s    0TZZ000r^   c                 ,    t        | j                        S rU   r  rW   s    rY   __bool__zChainMapProxy.__bool__t  s    4::r^   c                 `    dj                  t        t        | j                              }d| dS )Nz, zChainMapProxy(r?   )r   mapr  r  )rX   r   s     rY   r  zChainMapProxy.__repr__w  s*    ))Cdjj12y**r^   rd  r  rU   )r[   r\   r]   rf  r   r   r   r   r  r   rQ  r  r   r2   r  r3   r   r   r"  r  r   r  r  r  r  r  r  rV   r^   rY   r,   r,   =  s}   I!XgeC4D.Es.J&KL !QU !
 5vbz5b5 5/s/s/ /uS&*_5 #  EvbzEBE5R=E ELvbzLDL8B<L L;s;S;3; ;uS&*_-  s - -(5fSk)9#:; 1 14 1$ +# +r^   r,   z[!\x23-\x7E\x80-\xff]+z(W/)?"(z)"z)(?:\s*,\s*|$)|(.)r   c                   &    e Zd ZU eed<   dZeed<   y)r-   r   Fis_weakN)r[   r\   r]   r   r   r  r  rV   r^   rY   r-   r-     s    JGTr^   r-   r   c                 `    | t         k7  r%t        j                  |       st        d| d      y y )NzValue z, is not a valid etag. Maybe it contains '"'?)ETAG_ANY	_ETAGC_RE	fullmatchre   )r   s    rY   validate_etag_valuer    s9    !4!4U!;UIJK
 	
 "<r^   date_strc                     | Vt        |       }|It        t              5  t        j                  |dd dt        j                  j
                  icddd       S y# 1 sw Y   yxY w)z/Process a date string, return a datetime objectN   tzinfo)r   r   re   datetimetimezoneutc)r  	timetuples     rY   parse_http_dater    sY    h'	 *%(()BQ-V@Q@Q@U@UV &% &s   0AA#methodcodec                 r    |t         v xs. | t        v xs$ d|cxk  xr dk  nc xr | t        j                  v S )z-Check if a request must return an empty body.r9   ,  )EMPTY_BODY_STATUS_CODESEMPTY_BODY_METHODSr&   METH_CONNECT_ALLr  r  s     rY   must_be_empty_bodyr    sD     	'' 	C''	C4#A&D,A,A"Ar^   c                 ^    |t         v xs$ d|cxk  xr dk  nc xr | t        j                  v S )zrCheck if a Content-Length header should be removed.

    This should always be a subset of must_be_empty_body
    r9   r  )r  r&   r  r  s     rY   should_remove_content_lengthr    s4     ** tc=f(=(==r^   rU   )Tzutf-8)r4  zTuple[weakref.ref[object], str]rS   Nrb  )r   rg  rr   rv   r   r  enum	functoolsr  r   r   platformrer  r#  r>  collectionsr   r   email.parserr   email.utilsr   mathr   pathlibr	   typesr
   typingr   r   r   r   r   r   r   r   r   r   r   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_310PY_311r2   r3   Enumr4   r5   r  r   r   NO_EXTENSIONSr  ranger  METH_HEAD_ALLr  flagsdev_modeignore_environmentDEBUGchrCHARCTL
SEPARATORSr  rR   r+   r   r   sr   r   r   r   r   r   	lru_cacher   r   compiler   r   r   r  r  r  r"  r   r%  r1  r7  r  ri  rh  rj  r@  rD  rC  rI  re  r_  r^  Timeoutr  r  r  rv  r  r  r  total_orderingr  r,   _ETAGCr  _QUOTED_ETAGQUOTED_ETAG_RELIST_QUOTED_ETAG_REr  r-   r  r  r  r  )is   0rY   <module>rI     sF             	  	 
   "  % !       (  3  = = 8   w#
98??(X__)+
			W	$			W	$ T]T]DIIk:.	RZZ^^$;<= $S#$@c3$@A  '' 		 			$$$Sbjjnn=Q.R)S 
 a&1A&Q|$|!s1v|$H(  F'
* 	s
Z 
<J
;(IJ <J~NS NU30C+C%D N(- (V T$d3$ $ 4$
)HU[[$9 ) ) ):$sI~. 47s 7uS(92E-E'F 7 T$d3& & 4& R $S $X $ !$N hsm x}  rzz67!$-.-qCF-.$7
B3 
B3 
B ?F00!%08;0QT00f
: 
:$ 
: +/ (3- . %&s %&P  %&
  
#
#	
 " g!!"( %&	
"S
"
" 
#
#
" "	
"
 g!!"
"			  %	 		1  1 h?~&89 ?   >## >#D 56*E?*,1**,G ,G^( "  
    -	1	  
	. +8WR[ +8 +8\<+GE#vc{"23S89 <+@ 
#BJJv	&$L) bjjAl^3E!FG  T$d3  4

s 
t 
hsm 9J9J0K  s # $  	 	C 	D 	] '$l /s   3UU#U(