U
    <{fl                     @   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edddZddddZejreddejejejef ejejg ef  eje edddZneddddZejdd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   N/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/uvloop/__init__.pyr      s   r   returnc                   C   s   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!   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                   sP   fdd}t jdd }|dkrt dk	r6tdt sNtd | }z,t| |dk	rr|| || W S z2t
| ||  t|dr||  W 5 td |	  X X n~|d	kr$t dk	rtdtjf ||d
|}|| W  5 Q R  S Q R X n(|dks2ttj| f||d
|S 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%   RuntimeErroriscoroutine
ValueErrorformatset_event_loopclose_cancel_all_tasksrun_until_completeshutdown_asyncgenshasattrr,   	set_debugZRunnerr$   AssertionError)r"   r    r!   Z
run_kwargsr*   vir(   runnerr   r)   r   r$   3   s`    	





 )r(   r   c                 C   st   t | }|sd S |D ]}|  q| t j|ddi |D ]0}| rLq>| d k	r>| d| |d q>d S )Nreturn_exceptionsTz1unhandled exception during asyncio.run() shutdown)message	exceptiontask)r   	all_taskscancelr5   gather	cancelledr>   call_exception_handler)r(   	to_cancelr?   r   r   r   r4   u   s"    

r4   c                   @   sH   e Zd ZdZedddZejrDejdddZ	ej
ejddd	Z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   s   t  S N)r   selfr   r   r   _loop_factory   s    zEventLoopPolicy._loop_factoryc                 C   s   d S rF   r   rG   r   r   r   get_child_watcher   s    z!EventLoopPolicy.get_child_watcher)watcherr   c                 C   s   d S rF   r   )rH   rK   r   r   r   set_child_watcher   s    z!EventLoopPolicy.set_child_watcherN)r   r   r   __doc__r   rI   _typingTYPE_CHECKINGNoReturnrJ   AnyrL   r   r   r   r   r
      s   r
   )"asyncior   typingrN   sysr   warningsr   Zasyncio.eventsr   Z__BasePolicy r   Z
__includesr(   r   Z
__BaseLoop_versionr   __all__TypeVarr   AbstractEventLoopr   r	   rO   	CoroutinerQ   OptionalCallableboolr$   r4   r
   r   r   r   r   <module>   s4   

B