o
    0 i                  	   @   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   [/home/app/PaddleOCR-VL-test/.venv_paddleocr/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!   closeZRunnerr   )r   r   r   Z
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	cancelledr6   call_exception_handler)r   	to_cancelr7   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   r@   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   )r?   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 rI   r   rJ   r   r   r   get_child_watcher   s   z6__getattr__.<locals>.EventLoopPolicy.get_child_watcherwatcherc                 S   rM   rI   r   )rK   rO   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   rQ   _typingOptional_AbstractEventLoop__annotations__r   r   r   r   _Local   s   
 rV   Nc                 S   s   |   | _d S rI   )rV   _localrJ   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.)rW   rQ   r'   current_threadrB   rJ   	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 'rC   )r   rT   r   typer   rW   rQ   )rK   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.
            )rL   rJ   r   r   r   r      s   z3__getattr__.<locals>.EventLoopPolicy.new_event_loopr   N)r   r   r   __doc__r   rL   rR   TYPE_CHECKINGNoReturnrN   AnyrP   localrV   rX   rT   r\   rS   r+   r   r   rZ   r   r   r?      s&    


r?   AbstractEventLoopPolicyr>   r^   )_deprecated_namesAttributeErrorr%   r&   r[   getattrr   globals)rB   r>   r   )r?   r[   r   __getattr__   s   

E

ri   )$asyncior   typingrR   sysr%   warningsrE    r   Z
__includesr   r   Z
__BaseLoop_versionr   r	   TuplestrrU   AbstractEventLooprT   TypeVarr
   r   r`   	Coroutinerb   rS   Callableboolr   r.   re   r&   ri   r   r   r   r   <module>   s@   
 

B