o
    `g                     @   s  d dl Z 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rod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-Z0G dd deZ1G dd deZ2d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!   F/var/www/html/propose/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"   frozen1   s   zAbstractRouter.frozenc                 C   s
   d| _ dS )zFreeze router.TNr   r   r!   r!   r"   freeze5   s   
zAbstractRouter.freezerequestAbstractMatchInfoc                       dS )z#Return MATCH_INFO for given requestNr!   r    r.   r!   r!   r"   resolve9       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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!   r   c                 C   r&   )zExecute matched request handlerNr!   r   r!   r!   r"   handlerB   r)   zAbstractMatchInfo.handlerc                 C   r&   )z*Expect handler for 100-continue processingNr!   r   r!   r!   r"   expect_handlerG   r)   z AbstractMatchInfo.expect_handlerc                 C   r&   )z<HTTPException instance raised on router's resolving, or NoneNr!   r   r!   r!   r"   http_exceptionN   r)   z AbstractMatchInfo.http_exceptionc                 C   r&   )z;Return a dict with additional info useful for introspectionNr!   r   r!   r!   r"   get_infoS   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"   appsW   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-   d   r)   zAbstractMatchInfo.freezer4   )r5   r6   r7   	__slots__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#   r   r$   zAbstractView.__init__c                 C   r*   )zRequest instance.rC   r   r!   r!   r"   r.   u   s   zAbstractView.requestc                 C   r&   )zExecute the view handler.Nr!   r   r!   r!   r"   	__await__z   r)   zAbstractView.__await__)r5   r6   r7   __doc__r   r#   r8   r.   r   r   r   r   rE   r!   r!   r!   r"   rB   o   s    rB   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   rF   rA   __annotations__intr!   r!   r!   r"   rG      s   
 rG   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   rI   rJ   rK   r   c                    r0   )z$Return IP address for given hostnameNr!   )r    rI   rJ   rK   r!   r!   r"   r2      r3   zAbstractResolver.resolveNc                    r0   )zRelease resolverNr!   r   r!   r!   r"   close   r3   zAbstractResolver.closer4   )r5   r6   r7   rF   r   socketAF_INETrA   rO   AddressFamilyr   rG   r2   rQ   r!   r!   r!   r"   rP      s    rP   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)looprV   r   c                C   s   |pt  | _d S r+   )asyncioget_running_loop_loop)r    rV   r!   r!   r"   r#      s   zAbstractCookieJar.__init__	predicatec                 C   r&   )z,Clear all cookies if no predicate is passed.Nr!   )r    rZ   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    ra   r!   r!   r"   filter_cookies   r)   z AbstractCookieJar.filter_cookiesr+   )r5   r6   r7   rF   r   rW   AbstractEventLoopr#   r   ClearCookiePredicater[   rA   r]   r   r   r`   rb   r!   r!   r!   r"   rU      s    rU   c                   @   s   e Zd ZU dZdZeed< dZeed< 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ejfde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   buffer_sizeoutput_sizelengthchunkr   Nc                    r0   )zWrite chunk into stream.Nr!   r    ri   r!   r!   r"   write   r3   zAbstractStreamWriter.write    c                    r0   )zWrite last chunk.Nr!   rj   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encodingstrategyc                 C   r&   )zEnable HTTP body compressionNr!   )r    rp   rq   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    rt   ru   r!   r!   r"   write_headers   r3   z"AbstractStreamWriter.write_headers)rl   r4   )r5   r6   r7   rF   rf   rO   rN   rg   rh   r   r   bytesrk   rm   rn   zlibZ_DEFAULT_STRATEGYrA   rr   rs   rv   r!   r!   r!   r"   re      s<   
 re   c                	   @   s\   e Zd 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edefddZdS )AbstractAccessLoggerzAbstract writer to access log.logger
log_formatr|   r}   r   Nc                 C   s   || _ || _d S r+   r{   )r    r|   r}   r!   r!   r"   r#      s   
zAbstractAccessLogger.__init__r.   responsetimec                 C   r&   )zEmit log to logger.Nr!   )r    r.   r~   r   r!   r!   r"   log   r)   zAbstractAccessLogger.logc                 C   r&   )zCheck if logger is enabled.Tr!   r   r!   r!   r"   enabled   s   zAbstractAccessLogger.enabled)r5   r6   r7   rF   r@   loggingLoggerrA   r#   r   r   r   floatr   r8   r9   r   r!   r!   r!   r"   rz      s    rz   )3rW   r   rR   rx   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/   rB   rG   rP   rA   IterableBaser9   rd   rU   re   rz   r!   r!   r!   r"   <module>   s<    41$