o
    c[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   v/home/ubuntu/experiments/live_experiments/Pythonexperiments/Otree/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	__asyncioZ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formatZset_event_loopZ	set_debugrun_until_complete_cancel_all_tasksZshutdown_asyncgenshasattrr+   closeZRunnerr#   )r!   r   r    Z
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 )NZreturn_exceptionsTz1unhandled exception during asyncio.run() shutdown)message	exceptiontask)r   Z	all_taskscancelr1   ZgatherZ	cancelledr8   Zcall_exception_handler)r'   Z	to_cancelr9   r   r   r   r2   u   s&   

r2   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 r;   r   r<   r   r   r   get_child_watcher   s   z!EventLoopPolicy.get_child_watcherwatcherc                 C   r?   r;   r   )r=   rA   r   r   r   set_child_watcher   s   z!EventLoopPolicy.set_child_watcherN)r   r   r   __doc__r   r>   _typingTYPE_CHECKINGNoReturnr@   AnyrB   r   r   r   r   r
      s    r
   )r   N)"asyncior   typingrD   sysr   warningsr   Zasyncio.eventsr   Z__BasePolicy r   Z
__includesr'   r   Z
__BaseLoop_versionr   __all__TypeVarr   ZAbstractEventLoopr   r	   rE   	CoroutinerG   OptionalCallableboolr#   r2   r
   r   r   r   r   <module>   s<    


B