U
    EZh
                     @  s  d dl m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r\d dlmZ nd dlmZ dZej
dk rzd d	lmZ W n ek
r   d
ZY nX edZejdeje f ZejdddddZejdddddZdd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"d#Z d$d%d&d'd(Z!dS ))    )annotationsN)contextmanager)Scope)   
   )	TypeGuardT)r      )BaseExceptionGroupFT.zAwaitableCallable[T]zTypeGuard[AwaitableCallable[T]])objreturnc                 C  s   d S N r   r   r   W/home/aprabhat/apps/x.techxrdev.in/venv/lib/python3.8/site-packages/starlette/_utils.pyis_async_callable   s    r   
typing.Anyz(TypeGuard[AwaitableCallable[typing.Any]]c                 C  s   d S r   r   r   r   r   r   r      s    c                 C  s2   t | tjr| j} q t| p0t| o0t| 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dZdS )SupportsAsyncCloseNoner   c                   s   d S r   r   selfr   r   r   close1       zSupportsAsyncClose.closeN)r   r   r    r&   r   r   r   r   r!   0   s   r!   SupportsAsyncCloseType)boundr   c                   @  sL   e Zd ZdZdddddZddd	d
ZddddZdddddZdS ) AwaitableOrContextManagerWrapperawenteredz(typing.Awaitable[SupportsAsyncCloseType]r"   )r,   r   c                 C  s
   || _ d S r   )r,   )r%   r,   r   r   r   __init__:   s    z)AwaitableOrContextManagerWrapper.__init__z:typing.Generator[typing.Any, None, SupportsAsyncCloseType]r#   c                 C  s
   | j  S r   )r,   	__await__r$   r   r   r   r/   =   s    z*AwaitableOrContextManagerWrapper.__await__r(   c                   s   | j I d H | _| jS r   r+   r$   r   r   r   
__aenter__@   s    z+AwaitableOrContextManagerWrapper.__aenter__r   zNone | bool)argsr   c                   s   | j  I d H  d S r   )r-   r&   )r%   r1   r   r   r   	__aexit__D   s    z*AwaitableOrContextManagerWrapper.__aexit__N)r   r   r    	__slots__r.   r/   r0   r2   r   r   r   r   r*   7   s
   r*   z$typing.Generator[(None, None, None)]r#   c               
   c  s^   z
d V  W nN t k
rX }  z0trDt| trDt| jdkrD| jd } q | W 5 d } ~ X Y nX d S )N   r   )BaseExceptionhas_exceptiongroupsr   r	   len
exceptions)excr   r   r   collapse_excgroupsI   s    
r:   r   str)scoper   c                 C  sZ   | d }|  dd}|s|S ||s*|S ||kr6dS |t| dkrV|t|d  S |S )Npath	root_path /)get
startswithr7   )r<   r=   r>   r   r   r   get_route_pathU   s    
rC   )"
__future__r   r   r   systyping
contextlibr   Zstarlette.typesr   version_infor   typing_extensionsr6   Zexceptiongroupr	   ImportErrorTypeVarr
   Callable	AwaitableZAwaitableCallableoverloadr   r   AsyncContextManagerProtocolr   r!   r(   Genericr*   r:   rC   r   r   r   r   <module>   s<   



&