o
    Nhh                  	   @   s4  U 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Zejedf ed< ejZed	ZG d
d deeZdefddZejrne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ddfddZ dZ!ej"dd dk ree!7 ZdedejfddZ#dS )    N   )includesLoop)__version__)new_event_looprun.__all___Tc                   @   s   e Zd ZdS )r   N)__name__
__module____qualname__ r   r   O/home/air/websocket/korean/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   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   r      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)	__asyncio_get_running_loop
isinstancer   	TypeError)loopr   r   r   wrapper)   s
   

zrun.<locals>.wrapperN   )   
   z8asyncio.run() cannot be called from a running event loopz"a coroutine was expected, got {!r}shutdown_default_executor)r      r   r      r   )_sysversion_infor   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   &   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cancelr-   gather	cancelledr8   call_exception_handler)r   	to_cancelr9   r   r   r   r.   h   s&   

r.   )installEventLoopPolicyr   r      namec                    s   | t vrtd|  dtjd d dkrtd|  ddd ld fdd	}G fd
ddttd |t d<  t d< t |  S )Nz"module 'uvloop' has no attribute ''r   rB   z;' (it was removed in Python 3.16, use uvloop.run() instead)r   r   c                      s2   t jdd dkrtjdtdd t   dS )zA helper function to install uvloop policy.

        This function is deprecated and will be removed in Python 3.16.
        Use `uvloop.run()` instead.
        Nr   r#   zRuvloop.install() is deprecated in favor of uvloop.run() starting with Python 3.12.r   )
stacklevel)r%   r&   	_warningswarnDeprecationWarningr   set_event_loop_policyr   )rA   r   r   r@      s   z__getattr__.<locals>.installc                       s   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G d
d d jZdddZdef fddZdeje ddfddZdefddZdS )z$__getattr__.<locals>.EventLoopPolicyal  Event loop policy for uvloop.

        This class is deprecated and will be removed in Python 3.16.
        Use `uvloop.run()` instead.

        >>> 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                 S   r   N)r   selfr   r   r   _loop_factory   s   z2__getattr__.<locals>.EventLoopPolicy._loop_factoryc                 S      d S rK   r   rL   r   r   r   get_child_watcher   s   z6__getattr__.<locals>.EventLoopPolicy.get_child_watcherwatcherc                 S   rO   rK   r   )rM   rQ   r   r   r   set_child_watcher   s   z6__getattr__.<locals>.EventLoopPolicy.set_child_watcherc                   @   s    e Zd ZU dZeje ed< dS )z+__getattr__.<locals>.EventLoopPolicy._LocalN_loop)r   r   r   rS   _typingOptional_AbstractEventLoop__annotations__r   r   r   r   _Local   s   
 rX   Nc                 S   s   |   | _d S rK   )rX   _localrL   r   r   r   __init__   s   z-__getattr__.<locals>.EventLoopPolicy.__init__c                    s&   | j jdu rtd  j | j jS )z~Get the event loop for the current context.

            Returns an instance of EventLoop or raises an exception.
            Nz,There is no current event loop in thread %r.)rY   rS   r'   current_threadrD   rL   	threadingr   r   get_event_loop   s   z3__getattr__.<locals>.EventLoopPolicy.get_event_loopr   c                 S   s4   |durt |tstdt|j d|| j_dS )zSet the event loop.Nz<loop must be an instance of AbstractEventLoop or None, not 'rE   )r   rV   r   typer   rY   rS   )rM   r   r   r   r   r+      s   z3__getattr__.<locals>.EventLoopPolicy.set_event_loopc                 S   s   |   S )zvCreate a new event loop.

            You must call set_event_loop() to make this the current event loop.
            )rN   rL   r   r   r   r      s   z3__getattr__.<locals>.EventLoopPolicy.new_event_loopr   N)r   r   r   __doc__r   rN   rT   TYPE_CHECKINGNoReturnrP   AnyrR   localrX   rZ   rV   r^   rU   r+   r   r   r\   r   r   rA      s&    


rA   AbstractEventLoopPolicyr@   r`   )_deprecated_namesAttributeErrorr%   r&   r]   getattrr   globals)rD   r@   r   )rA   r]   r   __getattr__   s   

E

rk   )$asyncior   typingrT   sysr%   warningsrG    r   
__includesr   r   
__BaseLoop_versionr   r	   TuplestrrW   AbstractEventLooprV   TypeVarr
   r   rb   	Coroutinerd   rU   Callableboolr   r.   rg   r&   rk   r   r   r   r   <module>   s@   
 

B