a
     ÑOcùf  ã                   @   s*  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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l6Z6ddl7m8Z8m9Z9 ddl:m;Z; ddl<m=Z= ddl>m?Z?m@Z@ ddlAmBZBmCZC dZDe	 E¡ dkZFe	 E¡ dkZGejHdkZIejHdkZJejHdkZKejHdkZLejHdk �rddlMZMeM N¡  d±e(ejO e*d dœdd„ZPnejPZPe-dƒZQe-dƒZReSƒ ZTeeUd < eVejW Xd!¡ƒZYeVeUd"< eZej[d#d$ƒ�prej[j\ �oreVejW Xd%¡ƒZ]eVeUd&< d'd(„ e^dd)ƒD ƒZ_d*d(„ e^dd+ƒD ƒe`d,ƒhB Zad-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>e`d?ƒhZbe_eaA ebA ZcG d@dA„ dAƒZdG dBdC„ dCedCg dD¢ƒƒZee;e+e;e(ee f dEœdFdG„Zfe(ej dHœdIdJ„Zge6jhdKdKdKdL�G dMdN„ dNƒƒZie!ejeif dHœdOdP„Zkd²e(ejO dQdœdRdS„Zld³e(ejO ejOdœdTdU„ZmeeVdVœdWdX„Zne;e+e;e(ee f dEœdYdZ„Zoe6jhdKdKdKdL�G d[d\„ d\ƒƒZpejqd]d^�ejepd_œd`da„ƒZrd´ee(ej e(ej dbœdcdd„Zse
 tde¡Zudfd(„ e^d+d,ƒD ƒdghB Zvejejdhœdidj„ZwdµejeVejejejdlœdmdn„ZxG dodp„ dpeCe#eQ ƒZyG dqdr„ dre#eQ ƒZzezZ{zddsl|mzZ} eY�sºe}ZzW n e~�yÐ   Y n0 dtZduZ€e
 te¡Z�e
jte€e
j‚dv�Zƒe
 te „dw¡¡Z…e
jte€ „dw¡e
j‚dv�Z†e)ej e)e‡ e(e.eje‡f  eVdxœdydz„Zˆe ‰eˆe�e…¡ZŠe ‰eˆeƒe†¡Z‹e(e.eje‡eŒe�f  eVd{œd|d}„ZŽejdHœd~d„Z�da�e(e‘ eUd€< d�a’ejdHœd‚dƒ„Z“d„dd…œd†d‡„Z”eSeje•ejOe(ej– dˆœd‰dŠ„Z—eg ef e•ejOe(ej– d‹œdŒd�„Z˜G dŽd�„ d�ƒZ™G d�d‘„ d‘e d‘ ƒZšG d’d“„ d“ešƒZ›G d”d•„ d•ešƒZœe(e• e5j�d–œd—d˜„ZžG d™dš„ dšƒZŸd›eQddœœd�dž„Z d›e¡ddŸœd d¡„Z¢G d¢d£„ d£e'ejef ƒZ£d¤Z¤e
 te¤¡Z¥d¥e¤› d¦�Z¦e
 te¦¡Z§e
 td-e¦› d§�¡Z¨d¨Z©e6jhdKdKdKdL�G d©dª„ dªƒƒZªejdd«œd¬d­„Z«e(ej e(ej d®œd¯d°„Z¬dS )¶zVarious helper functionsé    N)Ú
namedtuple)Úsuppress)ÚHeaderParser)Ú	parsedate)Úceil)ÚPath)ÚTracebackType)ÚAnyÚCallableÚContextManagerÚDictÚ	GeneratorÚGenericÚIterableÚIteratorÚListÚMappingÚOptionalÚPatternÚSetÚTupleÚTypeÚTypeVarÚUnionÚcast)Úquote)Ú
getproxiesÚproxy_bypass)Ú	MultiDictÚMultiDictProxy©ÚURLé   )Úhdrs)Úclient_loggerÚinternal_logger)ÚPathLikeÚProtocol)Ú	BasicAuthÚChainMapProxyÚETagÚDarwinÚWindows)é   é   ©r-   é   )r-   é   )r-   é
   zasyncio.Task[Any]©ÚloopÚreturnc                 C   s   t tj | ¡ƒ}dd„ |D ƒS )Nc                 S   s   h | ]}|  ¡ s|’qS © )Údone)Ú.0Útr6   r6   úF/var/www/html/gsl.tools/lib/python3.9/site-packages/aiohttp/helpers.pyÚ	<setcomp>K   ó    zall_tasks.<locals>.<setcomp>)ÚlistÚasyncioÚTaskÚ	all_tasks)r4   Ztasksr6   r6   r:   r@   G   s    r@   Ú_TÚ_SÚsentinelZAIOHTTP_NO_EXTENSIONSÚNO_EXTENSIONSÚdev_modeFZPYTHONASYNCIODEBUGÚDEBUGc                 C   s   h | ]}t |ƒ’qS r6   ©Úchr©r8   Úir6   r6   r:   r;   _   r<   r;   é€   c                 C   s   h | ]}t |ƒ’qS r6   rG   rI   r6   r6   r:   r;   `   r<   é    é   ú(ú)ú<ú>ú@ú,ú;ú:ú\ú"ú/ú[ú]ú?ú=Ú{Ú}ú é	   c                   @   s   e Zd Zed dœdd„ZdS )Únoop)NNN©r5   c                 c   s
   d V  d S ©Nr6   ©Úselfr6   r6   r:   Ú	__await__|   s    znoop.__await__N)Ú__name__Ú
__module__Ú__qualname__r   rf   r6   r6   r6   r:   ra   {   s   ra   c                       st   e Zd ZdZdeeed dœ‡ fdd„Zedeed dœdd	„ƒZedd
œeee	d  dœdd„ƒZ
edœdd„Z‡  ZS )r(   z!Http basic authentication helper.Ú Úlatin1)ÚloginÚpasswordÚencodingr5   c                    sB   |d u rt dƒ‚|d u r t dƒ‚d|v r0t dƒ‚tƒ  | |||¡S )Nz"None is not allowed as login valuez%None is not allowed as password valuerU   z5A ":" is not allowed in login (RFC 1945#section-11.1))Ú
ValueErrorÚsuperÚ__new__)Úclsrl   rm   rn   ©Ú	__class__r6   r:   rq   ƒ   s    zBasicAuth.__new__)Úauth_headerrn   r5   c                 C   sÂ   z|  dd¡\}}W n ty.   tdƒ‚Y n0 | ¡ dkrHtd| ƒ‚ztj| d¡dd� |¡}W n tjy‚   td	ƒ‚Y n0 z|  d
d¡\}}W n ty²   tdƒ‚Y n0 | |||d�S )z<Create a BasicAuth object from an Authorization HTTP header.r_   r"   z%Could not parse authorization header.ÚbasiczUnknown authorization method %sÚasciiT)ÚvalidatezInvalid base64 encoding.rU   zInvalid credentials.©rn   )	Úsplitro   ÚlowerÚbase64Ú	b64decodeÚencodeÚdecodeÚbinasciiÚError)rr   ru   rn   Z	auth_typeZencoded_credentialsÚdecodedÚusernamerm   r6   r6   r:   r   ‘   s&    
ÿþzBasicAuth.decodery   )Úurlrn   r5   c                C   s6   t |tƒstdƒ‚|jdu r dS | |j|jp.d|d�S )zCreate BasicAuth from url.zurl should be yarl.URL instanceNrj   ry   )Ú
isinstancer!   Ú	TypeErrorÚuserrm   )rr   r„   rn   r6   r6   r:   Úfrom_url®   s
    

zBasicAuth.from_urlrb   c                 C   s0   | j › d| j› � | j¡}dt |¡ | j¡ S )zEncode credentials.rU   zBasic %s)rl   rm   r~   rn   r|   Ú	b64encoder   )re   Úcredsr6   r6   r:   r~   ·   s    zBasicAuth.encode)rj   rk   )rk   )rg   rh   ri   Ú__doc__Ústrrq   Úclassmethodr   r!   r   rˆ   r~   Ú__classcell__r6   r6   rs   r:   r(   €   s    ÿþr(   )rl   rm   rn   )r„   r5   c                 C   s,   t  | ¡}|d u r| d fS |  d ¡|fS d S rc   )r(   rˆ   Z	with_user)r„   Úauthr6   r6   r:   Ústrip_auth_from_url½   s    
r�   rb   c               
   C   sð   t j d¡} | durt| ƒ}nPzt ¡ }W n2 ty\ } zt d|¡ W Y d}~dS d}~0 0 |trhdnd }zt	 	t
|ƒ¡W S  t	jy° } zt d|¡ W Y d}~nDd}~0  tyê } z$| sÊ| ¡ rÖt d|¡ W Y d}~n
d}~0 0 dS )zÙLoad 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: %szCould not read .netrc file: %s)ÚosÚenvironÚgetr   ÚhomeÚRuntimeErrorr$   ÚdebugÚ
IS_WINDOWSÚnetrcrŒ   ÚNetrcParseErrorÚwarningÚOSErrorÚis_file)Z	netrc_envÚ
netrc_pathZhome_dirÚer6   r6   r:   Únetrc_from_envÅ   s(    
ý "r¡   T)Zauto_attribsÚfrozenÚslotsc                   @   s"   e Zd ZU eed< ee ed< dS )Ú	ProxyInfoÚproxyÚ
proxy_authN)rg   rh   ri   r!   Ú__annotations__r   r(   r6   r6   r6   r:   r¤   í   s   
r¤   c                  C   sâ   dd„ t ƒ  ¡ D ƒ} tƒ }dd„ |  ¡ D ƒ}i }| ¡ D ]¤\}}|\}}|jdv rht d|j ¡ |¡ q8|rÎ|d u rÎd }|jd urŽ| |j¡}|d urÎ|�^ }	}
|	d r°|	d n|	d }t	t
t|ƒt
t|
ƒƒ}t||ƒ||< q8|S )Nc                 S   s"   i | ]\}}|d v r|t |ƒ“qS ))ÚhttpÚhttpsÚwsÚwssr    ©r8   ÚkÚvr6   r6   r:   Ú
<dictcomp>ô   s   þz$proxies_from_env.<locals>.<dictcomp>c                 S   s   i | ]\}}|t |ƒ“qS r6   )r�   r¬   r6   r6   r:   r¯   ú   r<   )r©   r«   z)%s proxies %s are not supported, ignoringr   éÿÿÿÿ)r   Úitemsr¡   Úschemer$   rœ   ÚupperÚhostÚauthenticatorsr(   r   rŒ   r¤   )Z
proxy_urlsZ	netrc_objÚstrippedÚretÚprotoÚvalr¥   r�   Zauth_from_netrcZloginsrm   rl   r6   r6   r:   Úproxies_from_envó   s.    þ
ÿ

rº   zOptional[asyncio.Task[Any]]c                 C   s(   t jdkrtj| d�S tjj| d�S d S )Nr/   ©r4   )ÚsysÚversion_infor>   Úcurrent_taskr?   r»   r6   r6   r:   r¾     s    
r¾   c                 C   sB   | d u rt  ¡ } |  ¡ s>tjdtdd� |  ¡ r>tjddd� | S )Nz5The object should be created within an async functionr-   )Ú
stacklevelT)Ú
stack_info)	r>   Zget_event_loopZ
is_runningÚwarningsÚwarnÚDeprecationWarningZ	get_debugr%   rœ   r»   r6   r6   r:   Úget_running_loop  s    ýÿrÄ   )Úobjr5   c                 C   s$   t tdd ƒ}|d ur|| ƒS dS d S )NÚisasyncgenfunctionF)ÚgetattrÚinspect)rÅ   Úfuncr6   r6   r:   rÆ   -  s    rÆ   c                 C   sn   | j dur&t| j ƒr&td| j ›d�ƒ‚tƒ }z|| j }W n" ty\   td| ›d�ƒ‚Y n0 |j|jfS dS )z5Get a permitted proxy for the given URL from the env.NzProxying is disallowed for `ú`zNo proxies found for `z` in the env)r´   r   ÚLookupErrorrº   r²   ÚKeyErrorr¥   r¦   )r„   Zproxies_in_envZ
proxy_infor6   r6   r:   Úget_env_proxy_for_url5  s    rÍ   c                   @   s.   e Zd ZU eed< eed< eed< ded< dS )ÚMimeTypeÚtypeÚsubtypeÚsuffixzMultiDictProxy[str]Ú
parametersN)rg   rh   ri   rŒ   r§   r6   r6   r6   r:   rÎ   C  s   
rÎ   é8   )Úmaxsize)Úmimetyper5   c           
      C   s  | st dddttƒ ƒd�S |  d¡}tƒ }|dd… D ]R}|s@q6ttttf d|v r`| dd¡n|dfƒ\}}| | ¡  	¡ | 	d¡¡ q6|d  	¡  ¡ }|d	kr¦d
}d|v rÈttttf | dd¡ƒn|df\}}d|v röttttf | dd¡ƒn|df\}}	t |||	t|ƒd�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'})

    rj   )rÏ   rÐ   rÑ   rÒ   rT   r"   Nr\   z "r   Ú*z*/*rX   ú+)
rÎ   r   r   rz   r   r   rŒ   Úaddr{   Ústrip)
rÕ   ÚpartsÚparamsÚitemÚkeyÚvalueZfulltypeÚmtypeÚstyperÑ   r6   r6   r:   Úparse_mimetypeK  s2    ÿ
$ÿÿý(ÿÿrá   )rÅ   Údefaultr5   c                 C   s@   t | dd ƒ}|r<t|tƒr<|d dkr<|d dkr<t|ƒjS |S )NÚnamer   rP   r°   rQ   )rÇ   r…   rŒ   r   rã   )rÅ   râ   rã   r6   r6   r:   Úguess_filename{  s    &
rä   z[^\041\043-\133\135-\176]c                 C   s   h | ]}t |ƒ’qS r6   rG   rI   r6   r6   r:   r;   ƒ  r<   ú	)Úcontentr5   c                 C   s*   t t| ƒkstd| ›�ƒ‚t d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                 S   s   d|   d¡ S )NrV   r   )Úgroup)Úxr6   r6   r:   Ú<lambda>�  r<   zquoted_string.<locals>.<lambda>)ÚQCONTENTÚsetro   Únot_qtext_reÚsub)ræ   r6   r6   r:   Úquoted_string†  s    rî   úutf-8)ÚdisptypeÚquote_fieldsÚ_charsetrÛ   r5   c           
      K   s<  | rt t| ƒkstd | ¡ƒ‚| }|�r8g }| ¡ D ]à\}}|rLt t|ƒks\td ||¡ƒ‚|rî| ¡ dkrŽt|d|d�}| |d| f¡ n^zt|ƒ}W n> tyØ   d 	|dt|d|d�f¡}| |d |f¡ Y n0 | |d| f¡ q4| 
d	d
¡ 
dd¡}| |d| f¡ q4d 	dd„ |D ƒ¡}	d 	||	f¡}|S )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 {!r}z+bad content disposition parameter {!r}={!r}Úfilenamerj   ry   z"%s"z''rÖ   rV   z\\rW   z\"z; c                 s   s   | ]}d   |¡V  qdS )r\   N)Újoin)r8   Úpairr6   r6   r:   Ú	<genexpr>Ã  r<   z-content_disposition_header.<locals>.<genexpr>)ÚTOKENrë   ro   Úformatr±   r{   r   Úappendrî   rô   Úreplace)
rð   rñ   rò   rÛ   rÞ   ZlparamsrÝ   r¹   ZqvalZsparamsr6   r6   r:   Úcontent_disposition_header“  s6    
ÿÿrû   c                   @   s   e Zd ZU eeef ed< dS )Ú_TSelfÚ_cacheN)rg   rh   ri   r   rŒ   rA   r§   r6   r6   r6   r:   rü   È  s   
rü   c                   @   s^   e Zd ZdZedef ddœdd„Zdee ee	e
  edœdd	„Zee edd
œdd„ZdS )ÚreifyaU  Use as a class method decorator.

    It operates almost exactly like
    the Python `@property` decorator, but it puts the result of the
    method it decorates into the instance dict after the first call,
    effectively replacing the function it decorates with an instance
    variable.  It is, in Python parlance, a data descriptor.
    .N)Úwrappedr5   c                 C   s   || _ |j| _|j| _d S rc   )rÿ   r‹   rg   rã   )re   rÿ   r6   r6   r:   Ú__init__Ö  s    zreify.__init__)ÚinstÚownerr5   c                 C   sn   zDz|j | j W W S  ty@   |  |¡}||j | j< | Y W S 0 W n$ tyh   |d u rb|  Y S ‚ Y n0 d S rc   )rý   rã   rÌ   rÿ   ÚAttributeError)re   r  r  r¹   r6   r6   r:   Ú__get__Û  s    
zreify.__get__)r  rÞ   r5   c                 C   s   t dƒ‚d S )Nzreified property is read-only)r  )re   r  rÞ   r6   r6   r:   Ú__set__è  s    zreify.__set__)N)rg   rh   ri   r‹   r
   rA   r   rü   r   r   r	   r  r  r6   r6   r6   r:   rþ   Ì  s   	 rþ   )rþ   z[^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$a¶  ^(?:(?:(?:[A-F0-9]{1,4}:){6}|(?=(?:[A-F0-9]{0,4}:){0,6}(?:[0-9]{1,3}\.){3}[0-9]{1,3}$)(([0-9A-F]{1,4}:){0,5}|:)((:[0-9A-F]{1,4}){1,5}:|:)|::(?:[A-F0-9]{1,4}:){5})(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])|(?:[A-F0-9]{1,4}:){7}[A-F0-9]{1,4}|(?=(?:[A-F0-9]{0,4}:){0,7}[A-F0-9]{0,4}$)(([0-9A-F]{1,4}:){1,7}|:)((:[0-9A-F]{1,4}){1,7}|:)|(?:[A-F0-9]{1,4}:){7}:|:(:[A-F0-9]{1,4}){7})$)Úflagsrw   )ÚregexÚregexbr´   r5   c                 C   s^   |d u rdS t |tƒr$t|  |¡ƒS t |tttfƒrBt| |¡ƒS t|› dt|ƒ› d�ƒ‚d S )NFz [z] is not a str or bytes)	r…   rŒ   ÚboolÚmatchÚbytesÚ	bytearrayÚ
memoryviewr†   rÏ   )r  r  r´   r6   r6   r:   Ú_is_ip_address
  s    
r  )r´   r5   c                 C   s   t | ƒpt| ƒS rc   )Úis_ipv4_addressÚis_ipv6_address)r´   r6   r6   r:   Úis_ip_address  s    r  c                   C   s$   t j  t jj¡jdd�t jdd� S )z8Return current time rounded up to the next whole second.r   )Úmicrosecond)Úseconds)ÚdatetimeÚnowÚtimezoneÚutcrú   Ú	timedeltar6   r6   r6   r:   Únext_whole_second  s
    ÿ
þr  Ú_cached_current_datetimerj   c                  C   s\   t t ¡ ƒ} | tkrXd}d}t | ¡^}}}}}}}	}
d||	 ||| ||||f a| atS )N)ÚMonÚTueÚWedÚThuÚFriÚSatÚSun)rj   Ú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)r  Ú_weekdaynameÚ
_monthnameÚyearÚmonthÚdayÚhhÚmmÚssÚwdÚtailr6   r6   r:   Úrfc822_formatted_time*  s     ù	r<  zTuple[weakref.ref[object], str])Úinfor5   c                 C   sN   | \}}|ƒ }|d urJt tƒ� t||ƒƒ  W d   ƒ n1 s@0    Y  d S rc   )r   Ú	ExceptionrÇ   )r=  Úrefrã   Úobr6   r6   r:   Ú_weakref_handleR  s
    
rA  )r@  rã   Útimeoutr4   r5   c                 C   sH   |d urD|dkrD|  ¡ | }|dkr,t|ƒ}| |tt | ¡|f¡S d S ©Nr   é   )r/  r   Úcall_atrA  Úweakrefr?  )r@  rã   rB  r4   Úwhenr6   r6   r:   Úweakref_handleZ  s    rH  )ÚcbrB  r4   r5   c                 C   s<   |d ur8|dkr8|  ¡ | }|dkr,t|ƒ}| || ¡S d S rC  )r/  r   rE  )rI  rB  r4   rG  r6   r6   r:   Ú
call_laterf  s    rJ  c                   @   s~   e Zd ZdZejee ddœdd„Ze	d e
e
ddœdd	„Zdd
œdd„Zeej d
œdd„Zdd
œdd„Zdd
œdd„ZdS )ÚTimeoutHandlezTimeout handleN)r4   rB  r5   c                 C   s   || _ || _g | _d S rc   )Ú_timeoutÚ_loopÚ
_callbacks)re   r4   rB  r6   r6   r:   r   t  s    þzTimeoutHandle.__init__).N)ÚcallbackÚargsÚkwargsr5   c                 O   s   | j  |||f¡ d S rc   )rN  rù   )re   rO  rP  rQ  r6   r6   r:   Úregister}  s    zTimeoutHandle.registerrb   c                 C   s   | j  ¡  d S rc   )rN  Úclearrd   r6   r6   r:   Úclose‚  s    zTimeoutHandle.closec                 C   sL   | j }|d urD|dkrD| j ¡ | }|dkr4t|ƒ}| j || j¡S d S d S rC  )rL  rM  r/  r   rE  Ú__call__)re   rB  rG  r6   r6   r:   Ústart…  s    zTimeoutHandle.startÚBaseTimerContextc                 C   s8   | j d ur.| j dkr.t| jƒ}|  |j¡ |S tƒ S d S )Nr   )rL  ÚTimerContextrM  rR  rB  Ú	TimerNoop)re   Útimerr6   r6   r:   rZ  �  s
    
zTimeoutHandle.timerc              	   C   sV   | j D ]@\}}}ttƒ� ||i |¤Ž W d   ƒ q1 s<0    Y  q| j  ¡  d S rc   )rN  r   r>  rS  )re   rI  rP  rQ  r6   r6   r:   rU  —  s    
.zTimeoutHandle.__call__)rg   rh   ri   r‹   r>   ÚAbstractEventLoopr   Úfloatr   r
   r	   rR  rT  ÚHandlerV  rZ  rU  r6   r6   r6   r:   rK  q  s   
þ

þ
rK  c                   @   s   e Zd ZdS )rW  N)rg   rh   ri   r6   r6   r6   r:   rW  Ÿ  s   rW  c                   @   s>   e Zd Zedœdd„Zeee  ee ee ddœdd„Z	dS )rY  rb   c                 C   s   | S rc   r6   rd   r6   r6   r:   Ú	__enter__¤  s    zTimerNoop.__enter__N©Úexc_typeÚexc_valÚexc_tbr5   c                 C   s   d S rc   r6   ©re   r`  ra  rb  r6   r6   r:   Ú__exit__§  s    zTimerNoop.__exit__)
rg   rh   ri   rW  r^  r   r   ÚBaseExceptionr   rd  r6   r6   r6   r:   rY  £  s   
ûrY  c                   @   sf   e Zd ZdZejddœdd„Zedœdd„Ze	e
e  e	e e	e e	e d	œd
d„Zddœdd„ZdS )rX  z&Low resolution timeout context managerNr3   c                 C   s   || _ g | _d| _d S )NF)rM  Ú_tasksÚ
_cancelled)re   r4   r6   r6   r:   r   ³  s    zTimerContext.__init__rb   c                 C   s:   t | jd�}|d u rtdƒ‚| jr*tjd ‚| j |¡ | S )Nr»   z4Timeout context manager should be used inside a task)r¾   rM  r—   rg  r>   ÚTimeoutErrorrf  rù   ©re   Ztaskr6   r6   r:   r^  ¸  s    ÿzTimerContext.__enter__r_  c                 C   s,   | j r| j  ¡  |tju r(| jr(tjd ‚d S rc   )rf  Úpopr>   ZCancelledErrorrg  rh  rc  r6   r6   r:   rd  Æ  s
    
zTimerContext.__exit__c                 C   s(   | j s$t| jƒD ]}| ¡  qd| _ d S )NT)rg  rë   rf  Úcancelri  r6   r6   r:   rB  Ó  s    
zTimerContext.timeout)rg   rh   ri   r‹   r>   r[  r   rW  r^  r   r   re  r   r	  rd  rB  r6   r6   r6   r:   rX  °  s   
ûrX  )Údelayr5   c                 C   sJ   | d u s| dkrt  d ¡S tƒ }| ¡ }||  }| dkr@t|ƒ}t  |¡S rC  )Úasync_timeoutrB  rÄ   r/  r   Z
timeout_at)rl  r4   r  rG  r6   r6   r:   Úceil_timeoutÛ  s    
rn  c                   @   s”   e Zd ZU eg d¢ƒZdZee ed< dZ	ee
eef  ed< eZeddœdd„Zeedœd	d
„ƒZeee dœdd„ƒZeee dœdd„ƒZdS )ÚHeadersMixin)Ú_content_typeÚ_content_dictÚ_stored_content_typeNrp  rq  )Úrawr5   c                 C   sT   || _ |d u rd| _i | _n4tƒ  d| ¡}| ¡ | _| ¡ }t|dd … ƒ| _d S )Nzapplication/octet-streamzContent-Type: r"   )rr  rp  rq  r   ÚparsestrÚget_content_typeÚ
get_paramsÚdict)re   rs  ÚmsgrÛ   r6   r6   r:   Ú_parse_content_typeï  s    
z HeadersMixin._parse_content_typerb   c                 C   s(   | j  tj¡}| j|kr"|  |¡ | jS )z7The value of content part for Content-Type HTTP header.)Ú_headersr•   r#   ÚCONTENT_TYPErr  ry  rp  ©re   rs  r6   r6   r:   Úcontent_typeû  s    

zHeadersMixin.content_typec                 C   s.   | j  tj¡}| j|kr"|  |¡ | j d¡S )z7The value of charset part for Content-Type HTTP header.Úcharset)rz  r•   r#   r{  rr  ry  rq  r|  r6   r6   r:   r~    s    

zHeadersMixin.charsetc                 C   s&   | j  tj¡}|durt|ƒS dS dS )z(The value of Content-Length HTTP header.N)rz  r•   r#   ÚCONTENT_LENGTHr.  )re   Úcontent_lengthr6   r6   r:   r€    s    ÿzHeadersMixin.content_length)rg   rh   ri   Ú	frozensetÚATTRSrp  r   rŒ   r§   rq  r   rC   rr  ry  Úpropertyr}  r~  r.  r€  r6   r6   r6   r:   ro  ç  s   
ro  zasyncio.Future[_T])ÚfutÚresultr5   c                 C   s   |   ¡ s|  |¡ d S rc   )r7   Ú
set_result)r„  r…  r6   r6   r:   r†    s    r†  )r„  Úexcr5   c                 C   s   |   ¡ s|  |¡ d S rc   )r7   Úset_exception)r„  r‡  r6   r6   r:   rˆ    s    rˆ  c                   @   sª   e Zd ZdZeeeef  ddœdd„Zddœdd„Z	eed	œd
d„Z
deeedœdd„Zedœdd„Zee dœdd„Zeed	œdd„Zedœdd„Zedœdd„ZdS )r)   )Ú_mapsN)Úmapsr5   c                 C   s   t |ƒ| _d S rc   )Útupler‰  )re   rŠ  r6   r6   r:   r   %  s    zChainMapProxy.__init__rb   c                 C   s   t d | j¡ƒ‚d S )Nz4Inheritance class {} from ChainMapProxy is forbidden)r†   rø   rg   )rr   r6   r6   r:   Ú__init_subclass__(  s
    ÿÿzChainMapProxy.__init_subclass__)rÝ   r5   c              	   C   s:   | j D ]&}z|| W   S  ty*   Y q0 qt|ƒ‚d S rc   )r‰  rÌ   )re   rÝ   Úmappingr6   r6   r:   Ú__getitem__.  s    
zChainMapProxy.__getitem__)rÝ   râ   r5   c                 C   s   || v r| | S |S rc   r6   )re   rÝ   râ   r6   r6   r:   r•   6  s    zChainMapProxy.getc                 C   s   t tƒ j| jŽ ƒS rc   )Úlenrë   Úunionr‰  rd   r6   r6   r:   Ú__len__9  s    zChainMapProxy.__len__c                 C   s&   i }t | jƒD ]}| |¡ qt|ƒS rc   )Úreversedr‰  ÚupdateÚiter)re   Údr�  r6   r6   r:   Ú__iter__=  s    zChainMapProxy.__iter__c                    s   t ‡ fdd„| jD ƒƒS )Nc                 3   s   | ]}ˆ |v V  qd S rc   r6   )r8   Úm©rÝ   r6   r:   rö   E  r<   z-ChainMapProxy.__contains__.<locals>.<genexpr>©Úanyr‰  )re   rÝ   r6   r˜  r:   Ú__contains__D  s    zChainMapProxy.__contains__c                 C   s
   t | jƒS rc   r™  rd   r6   r6   r:   Ú__bool__G  s    zChainMapProxy.__bool__c                 C   s   d  tt| jƒ¡}d|› d�S )Nz, zChainMapProxy(rO   )rô   ÚmapÚreprr‰  )re   ræ   r6   r6   r:   Ú__repr__J  s    zChainMapProxy.__repr__)N)rg   rh   ri   Ú	__slots__r   r   rŒ   r	   r   rŒ  rŽ  r•   r.  r‘  r   r–  Úobjectr	  r›  rœ  rŸ  r6   r6   r6   r:   r)   "  s   r)   z[!#-}\x80-\xff]+z(W/)?"(z)"z)(?:\s*,\s*|$)|(.)rÖ   c                   @   s"   e Zd ZU eed< dZeed< dS )r*   rÞ   FÚis_weakN)rg   rh   ri   rŒ   r§   r¢  r	  r6   r6   r6   r:   r*   Y  s   
r*   )rÞ   r5   c                 C   s&   | t kr"t | ¡s"td| ›d�ƒ‚d S )NzValue z, is not a valid etag. Maybe it contains '"'?)ÚETAG_ANYÚ	_ETAGC_REÚ	fullmatchro   )rÞ   r6   r6   r:   Úvalidate_etag_value_  s    
ÿr¦  )Údate_strr5   c                 C   s`   | dur\t | ƒ}|dur\ttƒ�, tj|dd… dtjjiŽW  d  ƒ S 1 sR0    Y  dS )z/Process a date string, return a datetime objectNr.   Útzinfo)r   r   ro   r  r  r  )r§  Ú	timetupler6   r6   r:   Úparse_http_datef  s    
:rª  )N)N)N)N)Trï   )­r‹   r>   r|   r€   r  Ú	functoolsrÈ   rš   r“   ÚplatformÚrer¼   r/  rÁ   rF  Úcollectionsr   Ú
contextlibr   Ú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   rm  ÚattrZ	multidictr   r   Zyarlr!   rj   r#   Úlogr$   r%   Ztypedefsr&   r'   Ú__all__ÚsystemZIS_MACOSr™   r½   ZPY_36ZPY_37ZPY_38ZPY_310Zidna_sslZpatch_match_hostnamer[  r@   rA   rB   r¡  rC   r§   r	  r”   r•   rD   rÇ   r  Úignore_environmentrF   ÚrangeZCHARrH   ZCTLZ
SEPARATORSr÷   ra   r(   r�   r¡   Úsr¤   rŒ   rº   r¾   rÄ   rÆ   rÍ   rÎ   Ú	lru_cacherá   rä   Úcompilerì   rê   rî   rû   rü   rþ   Zreify_pyZ_helpersZreify_cÚImportErrorZ_ipv4_patternZ_ipv6_patternZ_ipv4_regexÚ
IGNORECASEZ_ipv6_regexr~   Z_ipv4_regexbZ_ipv6_regexbr  r  Úpartialr  r  r  r  r  r  r  r.  r1  r<  rA  r\  ZTimerHandlerH  rJ  rK  rW  rY  rX  ÚTimeoutrn  ro  r†  re  rˆ  r)   Z_ETAGCr¤  Z_QUOTED_ETAGZQUOTED_ETAG_REZLIST_QUOTED_ETAG_REr£  r*   r¦  rª  r6   r6   r6   r:   Ú<module>   sH  P



 ÿþÿ
ÿí=(  ÿþ
 ÿþ
/
 ÿþ5 ÿÿ

þ (	
þþ.+1.

