o
    KK&hl                  	   @   s  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 ddlmZ ddlmZ dZedZG d	d
 d
eejZdefddZdddZejrmedddejejejef dejejg ef  deje defddZneddddZdejddfddZ G dd de
Z!dS )    N)BaseDefaultEventLoopPolicy   )includesLoop)__version__)new_event_loopinstallEventLoopPolicy_Tc                   @   s   e Zd ZdS )r   N)__name__
__module____qualname__ r   r   B/var/www/html/venv/lib/python3.10/site-packages/uvloop/__init__.pyr      s    r   returnc                   C      t  S )zReturn a new event loop.r   r   r   r   r   r      s   r   c                   C   s2   t jdd dkrtjdtdd tt  dS )z+A helper function to install uvloop policy.N         zRuvloop.install() is deprecated in favor of uvloop.run() starting with Python 3.12.r   )
stacklevel)_sysversion_info	_warningswarnDeprecationWarning	__asyncioset_event_loop_policyr
   r   r   r   r   r	      s   r	   loop_factorydebugmainr    r!   c                C   s   dS )5The preferred way of running a coroutine with uvloop.Nr   )r"   r    r!   r   r   r   run)   s    r$   c                   s   fdd}t jdd }|dkrt durtdt s'td | }zLt| |dur9|	| |
| W z-t| |
|  t|drb|
|  W td |  S W td |  S td |  w z-t| |
|  t|dr|
|  W td |  w W td |  w td |  w |d	krt durtdtjd||d
|}|| W  d   S 1 sw   Y  dS |dksJ tj| f||d
|S )r#   c                     s&   t  } t| tstd I d H S )Nz)uvloop.run() uses a non-uvloop event loop)r   _get_running_loop
isinstancer   	TypeError)loopr"   r   r   wrapper6   s
   

zrun.<locals>.wrapperNr   )r   
   z8asyncio.run() cannot be called from a running event loopz"a coroutine was expected, got {!r}shutdown_default_executor)r      r   r   r   )r   r   r   r%   RuntimeErroriscoroutine
ValueErrorformatset_event_loop	set_debugrun_until_complete_cancel_all_tasksshutdown_asyncgenshasattrr,   closeRunnerr$   )r"   r    r!   
run_kwargsr*   vir(   runnerr   r)   r   r$   3   s   	

















$r(   c                 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cancelr4   gather	cancelledr?   call_exception_handler)r(   	to_cancelr@   r   r   r   r5   u   s&   

r5   c                   @   sN   e Zd ZdZdefddZejr%dejfddZ	dej
dejfdd	Zd
S d
S )r
   a  Event loop policy.

    The preferred way to make your application use uvloop:

    >>> import asyncio
    >>> import uvloop
    >>> asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())
    >>> asyncio.get_event_loop()
    <uvloop.Loop running=False closed=False debug=False>
    r   c                 C   r   N)r   selfr   r   r   _loop_factory   s   zEventLoopPolicy._loop_factoryc                 C      d S rG   r   rH   r   r   r   get_child_watcher   s   z!EventLoopPolicy.get_child_watcherwatcherc                 C   rK   rG   r   )rI   rM   r   r   r   set_child_watcher   s   z!EventLoopPolicy.set_child_watcherN)r   r   r   __doc__r   rJ   _typingTYPE_CHECKINGNoReturnrL   AnyrN   r   r   r   r   r
      s    r
   )r   N)"asyncior   typingrP   sysr   warningsr   asyncio.eventsr   __BasePolicy r   
__includesr(   r   
__BaseLoop_versionr   __all__TypeVarr   AbstractEventLoopr   r	   rQ   	CoroutinerS   OptionalCallableboolr$   r5   r
   r   r   r   r   <module>   s<    


B