o
    `^h	                     @  sv  d dl m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
 ejdkr2d dlmZ nd dlmZ dZejdk rSzd d	lmZ W n eyR   d
ZY nw edZejdeje f Zejd)ddZejd*ddZd+ddZejdddZG dd deje eje eje ZG dd dejZejded
dZG dd  d eje Z ed,d"d#Z!d-d'd(Z"dS ).    )annotationsN)contextmanager)Scope)   
   )	TypeGuardT)r      )BaseExceptionGroupFT.objAwaitableCallable[T]returnTypeGuard[AwaitableCallable[T]]c                 C     d S N r   r   r   N/home/air/shanriGPT/back/venv/lib/python3.10/site-packages/starlette/_utils.pyis_async_callable      r   
typing.Any(TypeGuard[AwaitableCallable[typing.Any]]c                 C  r   r   r   r   r   r   r   r       r   c                 C  s<   t | tjr| j} t | tjst| pt| ot| jS r   )
isinstance	functoolspartialfuncasyncioiscoroutinefunctioncallable__call__r   r   r   r   r   $   s   T_co)	covariantc                   @  s   e Zd ZdS )AwaitableOrContextManagerN)__name__
__module____qualname__r   r   r   r   r"   .   s    r"   c                   @  s   e Zd ZdddZdS )SupportsAsyncCloser   Nonec                   s   d S r   r   selfr   r   r   close2   s    zSupportsAsyncClose.closeN)r   r'   )r#   r$   r%   r*   r   r   r   r   r&   1   s    r&   SupportsAsyncCloseType)boundr!   c                   @  s8   e Zd ZdZdddZdd	d
ZdddZdddZdS ) AwaitableOrContextManagerWrapperawenteredr/   (typing.Awaitable[SupportsAsyncCloseType]r   r'   c                 C  s
   || _ d S r   )r/   )r)   r/   r   r   r   __init__;      
z)AwaitableOrContextManagerWrapper.__init__:typing.Generator[typing.Any, None, SupportsAsyncCloseType]c                 C  s
   | j  S r   )r/   	__await__r(   r   r   r   r5   >   r3   z*AwaitableOrContextManagerWrapper.__await__r+   c                   s   | j I d H | _| jS r   r.   r(   r   r   r   
__aenter__A   s   z+AwaitableOrContextManagerWrapper.__aenter__argsr   None | boolc                   s   | j  I d H  d S r   )r0   r*   )r)   r7   r   r   r   	__aexit__E   s   z*AwaitableOrContextManagerWrapper.__aexit__N)r/   r1   r   r'   )r   r4   )r   r+   )r7   r   r   r8   )r#   r$   r%   	__slots__r2   r5   r6   r9   r   r   r   r   r-   8   s    


r-   "typing.Generator[None, None, None]c               
   c  sj    zd V  W d S  t y4 }  z!tr.t| tr.t| jdkr.| jd } t| tr.t| jdks| d } ~ ww )N   r   )BaseExceptionhas_exceptiongroupsr   r	   len
exceptions)excr   r   r   collapse_excgroupsJ   s   
rB   scoper   strc                 C  s*   |  dd}td| d d| d }|S )N	root_path ^z(?=/|$)path)getresub)rC   rE   
route_pathr   r   r   get_route_pathV   s   rM   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r;   )rC   r   r   rD   )#
__future__r   r   r   rJ   systyping
contextlibr   starlette.typesr   version_infor   typing_extensionsr>   exceptiongroupr	   ImportErrorTypeVarr
   Callable	AwaitableAwaitableCallableoverloadr   r    AsyncContextManagerProtocolr"   r&   r+   Genericr-   rB   rM   r   r   r   r   <module>   sB    



&