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   )ÚasyncioZRunnerÚrun)r   r   r   Úrunner© r   úF/home/app/Keep/.python/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(    



üü$