U
    &%e  ã                   @   sB   d dl mZ d dlmZ d dlmZmZmZmZ G dd„ dƒZ	dS )é    )ÚOptional)ÚAsyncExitStack)ÚASGIAppÚReceiveÚScopeÚSendc                   @   s4   e Zd Zd	eeddœdd„Zeeeddœdd„Z	dS )
ÚAsyncExitStackMiddlewareÚfastapi_astackN)ÚappÚcontext_nameÚreturnc                 C   s   || _ || _d S ©N)r
   r   )Úselfr
   r   © r   ú`/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/fastapi/middleware/asyncexitstack.pyÚ__init__   s    z!AsyncExitStackMiddleware.__init__)ÚscopeÚreceiveÚsendr   c                 Ã   s~   d }t ƒ 4 I d H šT}||| j< z|  |||¡I d H  W n* tk
r` } z|}|‚W 5 d }~X Y nX W 5 Q I d H R X |rz|‚d S r   )r   r   r
   Ú	Exception)r   r   r   r   Zdependency_exceptionÚstackÚer   r   r   Ú__call__   s    
&z!AsyncExitStackMiddleware.__call__)r	   )
Ú__name__Ú
__module__Ú__qualname__r   Ústrr   r   r   r   r   r   r   r   r   r      s   r   N)
Útypingr   Zfastapi.concurrencyr   Zstarlette.typesr   r   r   r   r   r   r   r   r   Ú<module>   s   