o
    )f|                     @   s  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 d dl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)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Z/G dd deZ0dS )    N)ABCabstractmethod)Sized)
BaseCookieMorsel)
TYPE_CHECKINGAny	AwaitableCallableDict	GeneratorIterableListOptionalTuple)CIMultiDict)URL   )get_running_loop)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Z_frozenself r    +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!   frozen/   s   zAbstractRouter.frozenc                 C   s
   d| _ dS )zFreeze router.TNr   r   r    r    r!   freeze3   s   
zAbstractRouter.freezerequestAbstractMatchInfoc                       dS )z#Return MATCH_INFO for given requestNr    r   r-   r    r    r!   resolve7       zAbstractRouter.resolver   N)__name__
__module____qualname__r"   r   r'   propertyboolr+   r,   r   r   r1   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_handlerB   r(   z AbstractMatchInfo.expect_handlerc                 C   r%   )z<HTTPException instance raised on router's resolving, or NoneNr    r   r    r    r!   http_exceptionI   r(   z AbstractMatchInfo.http_exceptionc                 C   r%   )z;Return a dict with additional info useful for introspectionNr    r   r    r    r!   get_infoN   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!   appsR   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.freezer3   )r4   r5   r6   r7   r   r
   r   r	   r   r9   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*   Z_requestr0   r    r    r!   r"   m   r#   zAbstractView.__init__c                 C   r)   )zRequest instance.rA   r   r    r    r!   r-   p   s   zAbstractView.requestc                 C   r%   )zExecute the view handler.Nr    r   r    r    r!   	__await__u   r(   zAbstractView.__await__)r4   r5   r6   __doc__r   r"   r7   r-   r   r   r   r   rB   r    r    r    r!   r@   j   s    r@   c                   @   sH   e Zd ZdZededededeeee	f  fddZ
edd	d
ZdS )AbstractResolverzAbstract DNS resolver.hostportfamilyr   c                    r/   )z$Return IP address for given hostnameNr    )r   rE   rF   rG   r    r    r!   r1   }   r2   zAbstractResolver.resolveNc                    r/   )zRelease resolverNr    r   r    r    r!   close   r2   zAbstractResolver.closer3   )r4   r5   r6   rC   r   r?   intr   r   r   r1   rH   r    r    r    r!   rD   z   s    (rD   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)looprK   r   c                C   s   t || _d S r*   )r   Z_loop)r   rK   r    r    r!   r"      s   zAbstractCookieJar.__init__	predicatec                 C   r%   )z,Clear all cookies if no predicate is passed.Nr    )r   rL   r    r    r!   clear   r(   zAbstractCookieJar.cleardomainc                 C   r%   )z0Clear all cookies for domain and all subdomains.Nr    )r   rN   r    r    r!   clear_domain   r(   zAbstractCookieJar.clear_domaincookiesresponse_urlc                 C   r%   )zUpdate cookies.Nr    )r   rP   rQ   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   rS   r    r    r!   filter_cookies   r(   z AbstractCookieJar.filter_cookiesr*   )r4   r5   r6   rC   r   asyncioZAbstractEventLoopr"   r   ClearCookiePredicaterM   r?   rO   r   r   rR   rT   r    r    r    r!   rJ      s    rJ   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                    r/   )zWrite chunk into stream.Nr    r   rY   r    r    r!   write   r2   zAbstractStreamWriter.write    c                    r/   )zWrite last chunk.Nr    rZ   r    r    r!   	write_eof   r2   zAbstractStreamWriter.write_eofc                    r/   )zFlush the write buffer.Nr    r   r    r    r!   drain   r2   zAbstractStreamWriter.draindeflateencodingc                 C   r%   )zEnable HTTP body compressionNr    )r   r`   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                    r/   )zWrite HTTP headersNr    )r   rc   rd   r    r    r!   write_headers   r2   z"AbstractStreamWriter.write_headers)r\   r3   )r_   )r4   r5   r6   rC   Zbuffer_sizeZoutput_sizerX   r   rI   __annotations__r   bytesr[   r]   r^   r?   ra   rb   re   r    r    r    r!   rW      s.   
 rW   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*   )ri   rj   )r   ri   rj   r    r    r!   r"      s   
zAbstractAccessLogger.__init__r-   responsetimec                 C   r%   )zEmit log to logger.Nr    )r   r-   rk   rl   r    r    r!   log   r(   zAbstractAccessLogger.log)r4   r5   r6   rC   loggingZLoggerr?   r"   r   r   r   floatrm   r    r    r    r!   rh      s
     rh   )1rU   rn   abcr   r   Zcollections.abcr   Zhttp.cookiesr   r   typingr   r   r	   r
   r   r   r   r   r   r   Z	multidictr   Zyarlr   Zhelpersr   Ztypedefsr   Zweb_appr   Zweb_exceptionsr   Zweb_requestr   r   Zweb_responser   r   r.   r@   rD   r?   ZIterableBaser8   rV   rJ   rW   rh   r    r    r    r!   <module>   s8    0."