o
    n~b                     @   sb  d dl Z d dl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ZddlmZ ddl mZ ddlmZmZ erQddlmZ ddlmZ dd	lmZmZ nd Z Z ZZd
ZG dd de jZeee ef Zej dddddG dd deZ!ej dddddG dd deZ"de#de#dedede!f
ddZ$de#dedede!fddZ%de#dedede!fddZ&dddde#ded e	e# d!e'dede!fd"d#Z(de#dedede!fd$d%Z)de#dedede!fd&d'Z*de#dedede!fd(d)Z+de#dedede!fd*d+Z,de#dee dede!fd,d-Z-d.e#dedede"fd/d0Z.eegef Z/G d1d2 d2e
e Z0dS )3    N)TYPE_CHECKINGAnyCallableDictIteratorListOptionalSequenceTypeUnionoverload   )hdrs)AbstractView)HandlerPathLike)Request)StreamResponse)AbstractRouteUrlDispatcher)AbstractRouteDefRouteDef	StaticDefRouteTableDefheadoptionsgetpostpatchputdeleterouteviewstaticc                   @   s(   e Zd Zejdedee fddZdS )r   routerreturnc                 C      d S N )selfr$   r(   r(   ?/usr/local/lib/python3.10/dist-packages/aiohttp/web_routedef.pyregister2      zAbstractRouteDef.registerN)	__name__
__module____qualname__abcabstractmethodr   r   r   r+   r(   r(   r(   r*   r   1   s    r   TF)auto_attribsfrozenreprslotsc                   @   sZ   e Zd ZU eed< eed< eed< eeef ed< defddZde	de
e fd	d
ZdS )r   methodpathhandlerkwargsr%   c                 C   sP   g }t | j D ]\}}|d| d| q	dj| j| j| jd|dS )N, =z8<RouteDef {method} {path} -> {handler.__name__!r}{info}> )r6   r7   r8   info)	sortedr9   itemsappendformatr6   r7   r8   joinr)   r=   namevaluer(   r(   r*   __repr__A   s   zRouteDef.__repr__r$   c                 C   sZ   | j tjv rt|d| j   }|| j| jfi | jgS |j| j | j| jfi | jgS )NZadd_)	r6   r   ZMETH_ALLgetattrlowerr7   r8   r9   Z	add_route)r)   r$   regr(   r(   r*   r+   I   s
   zRouteDef.registerN)r-   r.   r/   str__annotations___HandlerTyper   r   rF   r   r   r   r+   r(   r(   r(   r*   r   :   s   
 r   c                   @   sR   e Zd ZU eed< eed< eeef ed< defddZde	de
e fdd	Zd
S )r   prefixr7   r9   r%   c                 C   sL   g }t | j D ]\}}|d| d| q	dj| j| jd|dS )Nr:   r;   z$<StaticDef {prefix} -> {path}{info}>r<   )rM   r7   r=   )r>   r9   r?   r@   rA   rM   r7   rB   rC   r(   r(   r*   rF   Y   s   zStaticDef.__repr__r$   c                 C   s6   |j | j| jfi | j}| di }t| S )Nroutes)Z
add_staticrM   r7   r9   get_infor   listvalues)r)   r$   resourcerN   r(   r(   r*   r+   a   s   zStaticDef.registerN)r-   r.   r/   rJ   rK   r   r   r   rF   r   r   r   r+   r(   r(   r(   r*   r   S   s   
 r   r6   r7   r8   r9   r%   c                 K   s   t | |||S r'   )r   )r6   r7   r8   r9   r(   r(   r*   r!   g   s   r!   c                 K      t tj| |fi |S r'   r!   r   Z	METH_HEADr7   r8   r9   r(   r(   r*   r   k      r   c                 K   rS   r'   )r!   r   ZMETH_OPTIONSrU   r(   r(   r*   r   o   rV   r   rD   
allow_headrD   rX   c                K   s   t tj| |f||d|S )NrW   r!   r   ZMETH_GET)r7   r8   rD   rX   r9   r(   r(   r*   r   s   s   r   c                 K   rS   r'   r!   r   Z	METH_POSTrU   r(   r(   r*   r      rV   r   c                 K   rS   r'   r!   r   ZMETH_PUTrU   r(   r(   r*   r      rV   r   c                 K   rS   r'   r!   r   Z
METH_PATCHrU   r(   r(   r*   r      rV   r   c                 K   rS   r'   r!   r   ZMETH_DELETErU   r(   r(   r*   r       rV   r    c                 K   rS   r'   r!   r   ZMETH_ANYrU   r(   r(   r*   r"      rV   r"   rM   c                 K   s   t | ||S r'   )r   )rM   r7   r9   r(   r(   r*   r#      s   r#   c                   @   s`  e Zd ZdZd*ddZdefddZedede	fd	d
Z
ededee	 fdd
Z
dd
 Z
dee	 fddZdefddZdedefddZdedededefddZdededefddZdededefddZdededefddZdededefdd Zdededefd!d"Zdededefd#d$Zdededefd%d&Zd'edededdfd(d)ZdS )+r   zRoute definition tabler%   Nc                 C   s
   g | _ d S r'   _itemsr)   r(   r(   r*   __init__      
zRouteTableDef.__init__c                 C   s   dt | j dS )Nz<RouteTableDef count=>lenr`   ra   r(   r(   r*   rF      s   zRouteTableDef.__repr__indexc                 C   r&   r'   r(   r)   rg   r(   r(   r*   __getitem__   r,   zRouteTableDef.__getitem__c                 C   r&   r'   r(   rh   r(   r(   r*   ri      r,   c                 C   s
   | j | S r'   r_   rh   r(   r(   r*   ri      rc   c                 C   
   t | jS r'   )iterr`   ra   r(   r(   r*   __iter__   rc   zRouteTableDef.__iter__c                 C   rj   r'   re   ra   r(   r(   r*   __len__   rc   zRouteTableDef.__len__itemc                 C   s
   || j v S r'   r_   )r)   rn   r(   r(   r*   __contains__   rc   zRouteTableDef.__contains__r6   r7   r9   c                    s    dt dt f fdd}|S )Nr8   r%   c                    s   j t|   | S r'   )r`   r@   r   )r8   r9   r6   r7   r)   r(   r*   inner   s   z"RouteTableDef.route.<locals>.inner)rL   )r)   r6   r7   r9   rq   r(   rp   r*   r!      s   zRouteTableDef.routec                 K      | j tj|fi |S r'   rT   r)   r7   r9   r(   r(   r*   r      rV   zRouteTableDef.headc                 K   rr   r'   rY   rs   r(   r(   r*   r      rV   zRouteTableDef.getc                 K   rr   r'   rZ   rs   r(   r(   r*   r      rV   zRouteTableDef.postc                 K   rr   r'   r[   rs   r(   r(   r*   r      rV   zRouteTableDef.putc                 K   rr   r'   r\   rs   r(   r(   r*   r      rV   zRouteTableDef.patchc                 K   rr   r'   r]   rs   r(   r(   r*   r       rV   zRouteTableDef.deletec                 K   rr   r'   r^   rs   r(   r(   r*   r"      rV   zRouteTableDef.viewrM   c                 K   s   | j t||| d S r'   )r`   r@   r   )r)   rM   r7   r9   r(   r(   r*   r#      s   zRouteTableDef.static)r%   N)r-   r.   r/   __doc__rb   rJ   rF   r   intr   ri   slicer   r   rl   rm   objectboolro   r   _Decor!   r   r   r   r   r   r    r"   r   r#   r(   r(   r(   r*   r      s*    
r   )1r0   ostypingr   r   r   r   r   r   r   r	   r
   r   r   attrr<   r   r   Ztypedefsr   r   Zweb_requestr   Zweb_responser   Zweb_urldispatcherr   r   __all__ABCr   rL   sr   r   rJ   r!   r   r   rx   r   r   r   r   r    r"   r#   ry   r   r(   r(   r(   r*   <module>   sZ    4
