o
    #`^h                     @   s  d dl Z d dlZd dlZd dlmZmZ d dlmZ d dlm	Z	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 d dlmZ d dlmZ dd	lmZ erkdd
lmZ ddlm Z  ddl!m"Z"m#Z# ddl$m%Z% n
d Z" Z# ZZ%dZ G dd deZ&G dd deZ'G dd deZ(G dd deZ)G dd deZ*eree
e+  Z,neZ,edge-f Z.G dd dee,Z/G dd deZ0G dd deZ1dS )    N)ABCabstractmethod)Sized)
BaseCookieMorsel)TYPE_CHECKINGAny	AwaitableCallableDict	GeneratorIterableListOptionalTuple	TypedDict)CIMultiDict)URL   )LooseCookies)Application)HTTPException)BaseRequestRequest)StreamResponsec                   @   sZ   e Zd ZdddZdeddfddZedefdd	Zdd
dZ	e
deddfddZdS )AbstractRouterreturnNc                 C   s
   d| _ d S )NF_frozenself r!   I/home/air/shanriGPT/back/venv/lib/python3.10/site-packages/aiohttp/abc.py__init__%      
zAbstractRouter.__init__appc                 C      dS )zPost init stage.

        Not an abstract method for sake of backward compatibility,
        but if the router wants to be aware of the application
        it can override this.
        Nr!   r    r%   r!   r!   r"   	post_init(       zAbstractRouter.post_initc                 C      | j S Nr   r   r!   r!   r"   frozen0   s   zAbstractRouter.frozenc                 C   s
   d| _ dS )zFreeze router.TNr   r   r!   r!   r"   freeze4   s   
zAbstractRouter.freezerequestAbstractMatchInfoc                       dS )z#Return MATCH_INFO for given requestNr!   r    r.   r!   r!   r"   resolve8       zAbstractRouter.resolver   N)__name__
__module____qualname__r#   r   r(   propertyboolr,   r-   r   r   r2   r!   r!   r!   r"   r   $   s    

r   c                   @   s   e Zd Zeedeegee f fddZ	eedeegee
e  f fddZeede
e fddZedeeef fdd	Zeedeed
f fddZededdfddZedddZdS )r/   r   c                 C   r&   )zExecute matched request handlerNr!   r   r!   r!   r"   handler>   r)   zAbstractMatchInfo.handlerc                 C   r&   )z*Expect handler for 100-continue processingNr!   r   r!   r!   r"   expect_handlerC   r)   z AbstractMatchInfo.expect_handlerc                 C   r&   )z<HTTPException instance raised on router's resolving, or NoneNr!   r   r!   r!   r"   http_exceptionJ   r)   z AbstractMatchInfo.http_exceptionc                 C   r&   )z;Return a dict with additional info useful for introspectionNr!   r   r!   r!   r"   get_infoO   r)   zAbstractMatchInfo.get_info.c                 C   r&   )z\Stack of nested applications.

        Top level application is left-most element.

        Nr!   r   r!   r!   r"   appsS   r)   zAbstractMatchInfo.appsr%   Nc                 C   r&   )z)Add application to the nested apps stack.Nr!   r'   r!   r!   r"   add_app\   r)   zAbstractMatchInfo.add_appc                 C   r&   )zFreeze the match info.

        The method is called after route resolution.

        After the call .add_app() is forbidden.

        Nr!   r   r!   r!   r"   r-   `   r)   zAbstractMatchInfo.freezer4   )r5   r6   r7   r8   r   r
   r   r	   r   r:   r   r;   r   r<   r   strr   r=   r   r   r>   r?   r-   r!   r!   r!   r"   r/   =   s*     r/   c                   @   sP   e Zd ZdZdeddfddZedefddZede	e
def fd	d
ZdS )AbstractViewzAbstract class based view.r.   r   Nc                 C   s
   || _ d S r+   _requestr1   r!   r!   r"   r#   n   r$   zAbstractView.__init__c                 C   r*   )zRequest instance.rB   r   r!   r!   r"   r.   q   s   zAbstractView.requestc                 C   r&   )zExecute the view handler.Nr!   r   r!   r!   r"   	__await__v   r)   zAbstractView.__await__)r5   r6   r7   __doc__r   r#   r8   r.   r   r   r   r   rD   r!   r!   r!   r"   rA   k   s    rA   c                   @   sB   e Zd ZU dZeed< eed< eed< eed< eed< eed< dS )	ResolveResulta  Resolve result.

    This is the result returned from an AbstractResolver's
    resolve method.

    :param hostname: The hostname that was provided.
    :param host: The IP address that was resolved.
    :param port: The port that was resolved.
    :param family: The address family that was resolved.
    :param proto: The protocol that was resolved.
    :param flags: The flags that were resolved.
    hostnamehostportfamilyprotoflagsN)r5   r6   r7   rE   r@   __annotations__intr!   r!   r!   r"   rF   {   s   
 rF   c                   @   sJ   e Zd ZdZedejfdededej	de
e fddZedd
dZd	S )AbstractResolverzAbstract DNS resolver.r   rH   rI   rJ   r   c                    r0   )z$Return IP address for given hostnameNr!   )r    rH   rI   rJ   r!   r!   r"   r2      r3   zAbstractResolver.resolveNc                    r0   )zRelease resolverNr!   r   r!   r!   r"   close   r3   zAbstractResolver.closer4   )r5   r6   r7   rE   r   socketAF_INETr@   rN   AddressFamilyr   rF   r2   rP   r!   r!   r!   r"   rO      s    rO   zMorsel[str]c                   @   s   e Zd ZdZdddeej ddfddZeddee	 ddfd	d
Z
ededdfddZee fdededdfddZededdfddZdS )AbstractCookieJarzAbstract Cookie Jar.N)looprU   r   c                C   s   |pt  | _d S r+   )asyncioget_running_loop_loop)r    rU   r!   r!   r"   r#      s   zAbstractCookieJar.__init__	predicatec                 C   r&   )z,Clear all cookies if no predicate is passed.Nr!   )r    rY   r!   r!   r"   clear   r)   zAbstractCookieJar.cleardomainc                 C   r&   )z0Clear all cookies for domain and all subdomains.Nr!   )r    r[   r!   r!   r"   clear_domain   r)   zAbstractCookieJar.clear_domaincookiesresponse_urlc                 C   r&   )zUpdate cookies.Nr!   )r    r]   r^   r!   r!   r"   update_cookies   r)   z AbstractCookieJar.update_cookiesrequest_urlzBaseCookie[str]c                 C   r&   )z6Return the jar's cookies filtered by their attributes.Nr!   )r    r`   r!   r!   r"   filter_cookies   r)   z AbstractCookieJar.filter_cookiesr+   )r5   r6   r7   rE   r   rV   AbstractEventLoopr#   r   ClearCookiePredicaterZ   r@   r\   r   r   r_   ra   r!   r!   r!   r"   rT      s    rT   c                   @   s   e Zd ZU dZdZdZdZee e	d< e
deddfddZe
ddeddfd
dZe
dddZe
ddeddfddZe
dddZe
deddddfddZdS )AbstractStreamWriterzAbstract stream writer.r   lengthchunkr   Nc                    r0   )zWrite chunk into stream.Nr!   r    rf   r!   r!   r"   write   r3   zAbstractStreamWriter.write    c                    r0   )zWrite last chunk.Nr!   rg   r!   r!   r"   	write_eof   r3   zAbstractStreamWriter.write_eofc                    r0   )zFlush the write buffer.Nr!   r   r!   r!   r"   drain   r3   zAbstractStreamWriter.draindeflateencodingc                 C   r&   )zEnable HTTP body compressionNr!   )r    rm   r!   r!   r"   enable_compression   r)   z'AbstractStreamWriter.enable_compressionc                 C   r&   )zEnable HTTP chunked modeNr!   r   r!   r!   r"   enable_chunking   r)   z$AbstractStreamWriter.enable_chunkingstatus_lineheaderszCIMultiDict[str]c                    r0   )zWrite HTTP headersNr!   )r    rp   rq   r!   r!   r"   write_headers   r3   z"AbstractStreamWriter.write_headers)ri   r4   )rl   )r5   r6   r7   rE   buffer_sizeoutput_sizere   r   rN   rM   r   bytesrh   rj   rk   r@   rn   ro   rr   r!   r!   r!   r"   rd      s.   
 rd   c                	   @   sF   e Zd ZdZdejdeddfddZede	d	e
d
eddfddZdS )AbstractAccessLoggerzAbstract writer to access log.logger
log_formatr   Nc                 C   s   || _ || _d S r+   )rw   rx   )r    rw   rx   r!   r!   r"   r#      s   
zAbstractAccessLogger.__init__r.   responsetimec                 C   r&   )zEmit log to logger.Nr!   )r    r.   ry   rz   r!   r!   r"   log   r)   zAbstractAccessLogger.log)r5   r6   r7   rE   loggingLoggerr@   r#   r   r   r   floatr{   r!   r!   r!   r"   rv      s
     rv   )2rV   r|   rQ   abcr   r   collections.abcr   http.cookiesr   r   typingr   r   r	   r
   r   r   r   r   r   r   r   	multidictr   yarlr   typedefsr   web_appr   web_exceptionsr   web_requestr   r   web_responser   r   r/   rA   rF   rO   r@   IterableBaser9   rc   rT   rd   rv   r!   r!   r!   r"   <module>   s:    4."