o
    Ÿ+id  ã                   @  sÄ   d dl mZ d dlZd dlZd dlmZmZ d dlmZm	Z	 ddgZ
ejdkr.d dlmZ nd dlmZ e	d	ƒZejd
krBejZdS ejdkrRdddœddd„ZdS dddœddd„Zddd„ZdS )é    )ÚannotationsN)ÚCallableÚ	Coroutine)ÚAnyÚTypeVarÚasyncio_runÚiscoroutinefunction)é   é   )r   Ú_T)r	   é   )r	   é   F©ÚdebugÚloop_factoryÚmainúCoroutine[Any, Any, _T]r   Úboolr   ú.Callable[[], asyncio.AbstractEventLoop] | NoneÚreturnc                C  s<   t j||d}| | ¡W  d   ƒ S 1 sw   Y  d S )Nr   )ÚasyncioÚRunnerÚrun)r   r   r   Úrunner© r   úL/var/www/html/psymed-ai/venv/lib/python3.10/site-packages/uvicorn/_compat.pyr      s   $ÿc                C  sF  z	t  ¡  W tdƒ‚ ty   Y nw t  | ¡std| ›ƒ‚|d u r(t  ¡ }n|ƒ }zG|d u r5t  |¡ |d ur>| |¡ | | ¡W z!t	|ƒ | | 
¡ ¡ | | ¡ ¡ W |d u r`t  d ¡ | ¡  S |d u rnt  d ¡ | ¡  w z!t	|ƒ | | 
¡ ¡ | | ¡ ¡ W |d u rt  d ¡ | ¡  w |d u ržt  d ¡ | ¡  w )Nz8asyncio.run() cannot be called from a running event loopza coroutine was expected, got )r   Úget_running_loopÚRuntimeErrorÚiscoroutineÚ
ValueErrorÚnew_event_loopÚset_event_loopÚ	set_debugÚrun_until_completeÚ_cancel_all_tasksÚshutdown_asyncgensÚshutdown_default_executorÚclose)r   r   r   Úloopr   r   r   r   #   sJ   
ýÿ






þ

ù

þ

r(   úasyncio.AbstractEventLoopÚNonec                 C  st   t  | ¡}|s	d S |D ]}| ¡  q|  t j|ddiŽ¡ |D ]}| ¡ r&q| ¡ d ur7|  d| ¡ |dœ¡ qd S )NÚreturn_exceptionsTz1unhandled exception during asyncio.run() shutdown)ÚmessageÚ	exceptionÚtask)r   Ú	all_tasksÚcancelr#   ÚgatherÚ	cancelledr-   Úcall_exception_handler)r(   Ú	to_cancelr.   r   r   r   r$   G   s$   

ýÿ€ür$   )r   r   r   r   r   r   r   r   )r(   r)   r   r*   )Ú
__future__r   r   ÚsysÚcollections.abcr   r   Útypingr   r   Ú__all__Úversion_infoÚinspectr   r   r   r   r$   r   r   r   r   Ú<module>   s(    



üü$