U
    EZhl                     @   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   V/home/aprabhat/apps/x.techxrdev.in/venv/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	__asyncioZ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formatZset_event_loopclose_cancel_all_tasksrun_until_completeZshutdown_asyncgenshasattrr+   Z	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 )NZreturn_exceptionsTz1unhandled exception during asyncio.run() shutdown)message	exceptiontask)r   Z	all_taskscancelr3   ZgatherZ	cancelledr9   Zcall_exception_handler)r'   Z	to_cancelr:   r   r   r   r2   u   s"    

r2   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 r<   r   r=   r   r   r   get_child_watcher   s    z!EventLoopPolicy.get_child_watcher)watcherr   c                 C   s   d S 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
   )"Z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>   s4   

B