o
    SÊÆh  ã                   @   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                   @   s>   e Zd Zddededdfdd„Zded	ed
eddfdd„Z	dS )ÚAsyncExitStackMiddlewareÚfastapi_astackÚappÚcontext_nameÚreturnNc                 C   s   || _ || _d S ©N)r
   r   )Úselfr
   r   © r   ún/var/www/html/HyperOracle/crypto_trader/venv/lib/python3.10/site-packages/fastapi/middleware/asyncexitstack.pyÚ__init__   s   
z!AsyncExitStackMiddleware.__init__ÚscopeÚreceiveÚsendc                 Ã   s�   �d }t ƒ 4 I d H š-}||| j< z|  |||¡I d H  W n ty, } z|}|‚d }~ww W d   ƒI d H  n1 I d H s=w   Y  |rF|‚d S r   )r   r   r
   Ú	Exception)r   r   r   r   Ú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   Úfastapi.concurrencyr   Ústarlette.typesr   r   r   r   r   r   r   r   r   Ú<module>   s    