<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>

]g                 @   s=  d  d d d d d d d d d	 d
 d d g Z  d d l Z d d l Z d d l Z 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 d l m Z Gd d    d  e j  Z e j j Z e j j Z e j j Z e d d d d d e d d   Z d d   Z e d d d d   Z e d d    Z d d d d d d  Z e d d d d  d  Z d d d! d"  Z e e   d <d e _ [ d d d# d  Z e d$ d%    Z Gd& d'   d' e j  Z d d d( d) d* d	  Z  d d d+ d
  Z! d, d   Z" d S)-TaskFIRST_COMPLETEDFIRST_EXCEPTIONALL_COMPLETEDwaitwait_foras_completedsleepasyncgathershieldensure_futurerun_coroutine_threadsafe    N   )compat)
coroutines)events)futures)	coroutinec                   s   e  Z d  Z e j   Z i  Z d Z e d d d   Z	 e d d d   Z
 d d   f d d	  Z e j r{ d
 d   Z   f d d   Z d d d d  Z d d d d d d  Z d d   Z d   f d d  Z d d   Z   S)r   TNc             C   s(   | d  k r t  j   } |  j j |  S)N)r   get_event_loop_current_tasksget)clsloop r   */opt/alt/python35/lib64/python3.5/tasks.pycurrent_task/   s    zTask.current_taskc                s2     d  k r t  j       f d d   |  j D S)Nc                s%   h  |  ] } | j    k r |  q Sr   )_loop).0t)r   r   r   	<setcomp>C   s   	 z!Task.all_tasks.<locals>.<setcomp>)r   r   
_all_tasks)r   r   r   )r   r   	all_tasks;   s    zTask.all_tasksr   c               sk   t    j d |  |  j r& |  j d =| |  _ d  |  _ d |  _ |  j j |  j  |  j	 j
 j |   d  S)Nr   r   F)super__init___source_traceback_coro_fut_waiter_must_cancelr   	call_soon_step	__class__r!   add)selfcoror   )r,   r   r   r%   E   s    	
			zTask.__init__c             C   sg   |  j  t j k rS |  j rS d |  d d i } |  j rC |  j | d <|  j j |  t j j |   d  S)Ntaskmessagez%Task was destroyed but it is pending!Zsource_traceback)	_stater   Z_PENDING_log_destroy_pendingr&   r   Zcall_exception_handlerFuture__del__)r.   contextr   r   r   r5   T   s    	zTask.__del__c                sr   t    j   } |  j r" d | d <t j |  j  } | j d d |  |  j d  k	 rn | j d d |  j  | S)NZ
cancellingr   r   z	coro=<%s>   zwait_for=%r)r$   
_repr_infor)   r   Z_format_coroutiner'   insertr(   )r.   infor/   )r,   r   r   r8   _   s    	
zTask._repr_infolimitc            C   s
  g  } y |  j  j } Wn t k
 r6 |  j  j } Yn X| d  k	 r xI | d  k	 r | d  k	 ru | d k rk P| d 8} | j |  | j } qF W| j   nj |  j d  k	 r|  j j } xL | d  k	 r| d  k	 r | d k r P| d 8} | j | j	  | j
 } q W| S)Nr   r   )r'   cr_frameAttributeErrorgi_frameappendf_backreverse
_exception__traceback__tb_frametb_next)r.   r;   Zframesftbr   r   r   	get_stackm   s0    

zTask.get_stackfilec            C   s]  g  } t    } x |  j d |  D] } | j } | j } | j } | j }	 | | k rr | j |  t j |  t j	 | | | j
  }
 | j | | |	 |
 f  q" W|  j } | s t d |  d | n7 | d  k	 r t d |  d | n t d |  d | t j | d | | d  k	 rYx3 t j | j |  D] }
 t |
 d | d d q9Wd  S)Nr;   zNo stack for %rrI   z)Traceback for %r (most recent call last):z%Stack for %r (most recent call last):end )setrH   f_linenof_codeco_filenameco_namer-   	linecache
checkcachegetline	f_globalsr?   rB   print	traceback
print_listformat_exception_onlyr,   )r.   r;   rI   extracted_listZcheckedrF   linenocofilenamenamelineexcr   r   r   print_stack   s0    							
zTask.print_stackc             C   sH   d |  _  |  j   r d S|  j d  k	 r; |  j j   r; d Sd |  _ d S)NFT)Z_log_tracebackdoner(   cancelr)   )r.   r   r   r   rb      s    		zTask.cancelc                s  |  j  r0 t | t j  s' t j   } d |  _  |  j } d  |  _ |  |  j j |  j <zy1 | d  k ry | j	 d   } n | j
 |  } Wn t k
 r } z= |  j  r d |  _  |  j t j    n |  j | j  WYd  d  } ~ Xnt j k
 r	t   j   Ynt k
 r:} z |  j |  WYd  d  } ~ Xnt k
 rn} z |  j |    WYd  d  } ~ XnXt | d d   } | d  k	 ru| j |  j k	 r|  j j |  j t d j |  |    q| rJ| |  k r|  j j |  j t d j |     qrd | _ | j |  j  | |  _ |  j  rr|  j j   rrd |  _  q|  j j |  j t d j |  |    n | d  k r|  j j |  j  n_ t j |  r|  j j |  j t d j |  |    n% |  j j |  j t d j |    Wd  |  j j j |  j  d  }  Xd  S)NF_asyncio_future_blockingz6Task {!r} got Future {!r} attached to a different loopz!Task cannot await on itself: {!r}z;yield was used instead of yield from in task {!r} with {!r}zGyield was used instead of yield from for generator in task {!r} with {}zTask got bad yield: {!r})r)   
isinstancer   CancelledErrorr'   r(   r,   r   r   sendthrowStopIterationset_exception
set_resultvaluer$   rb   	ExceptionBaseExceptiongetattrr*   r+   RuntimeErrorformatrc   add_done_callback_wakeupinspectZisgeneratorpop)r.   r_   r/   resultblocking)r,   r   r   r+      s~    						"								z
Task._stepc             C   sW   y | j    Wn2 t k
 rB } z |  j |  WYd  d  } ~ Xn X|  j   d  }  d  S)N)ru   rl   r+   )r.   futurer_   r   r   r   rr   4  s     
zTask._wakeup)__name__
__module____qualname__weakrefWeakSetr!   r   r3   classmethodr   r"   r%   r   ZPY34r5   r8   rH   r`   rb   r+   rr   r   r   )r,   r   r      s    		/#!Tr   timeoutreturn_whenc            #   s   t  j |   s t j |   r7 t d t |   j   |  sI t d   | t t	 t
 f k rs t d j |      d  k r t j       f d d   t |   D }  t |  | |    Ed  HS)Nz expect a list of futures, not %sz#Set of coroutines/Futures is empty.zInvalid return_when value: {}c                s"   h  |  ] } t  | d     q S)r   )r   )r   rF   )r   r   r   r    g  s   	 zwait.<locals>.<setcomp>)r   isfuturer   iscoroutine	TypeErrortyperx   
ValueErrorr   r   r   rp   r   r   rL   _wait)fsr   r~   r   r   )r   r   r   L  s    c             G   s   |  j    s |  j d   d  S)N)ra   rj   )waiterargsr   r   r   _release_waiterl  s    r   c            c   s  | d  k r t  j   } | d  k r- |  Ed  HS| j   } | j | t |  } t j t |  } t |  d | }  |  j |  z| y | Ed  HWn/ t	 j
 k
 r |  j |  |  j     Yn X|  j   r |  j   S|  j |  |  j   t	 j    Wd  | j   Xd  S)Nr   )r   r   create_future
call_laterr   	functoolspartialr   rq   r   re   remove_done_callbackrb   ra   ru   TimeoutError)futr~   r   r   timeout_handlecbr   r   r   r   q  s,    	


c             #   s  | j     d   | d  k	 r3 | j | t    t |          f d d   } x |  D] } | j |  qa Wz  Ed  HWd   d  k	 r  j   Xt   t   } } xD |  D]< } | j |  | j   r | j	 |  q | j	 |  q W| | f S)Nc                s     d 8    d k sM  t  k sM  t k r| |  j   r| |  j   d  k	 r|  d  k	 rc  j    j   s|  j d   d  S)Nr   r   )r   r   	cancelled	exceptionrb   ra   rj   )rF   )counterr   r   r   r   r   _on_completion  s    

z_wait.<locals>._on_completion)
r   r   r   lenrq   rb   rL   r   ra   r-   )r   r~   r   r   r   rF   ra   pendingr   )r   r   r   r   r   r     s&    r   c            #   sL  t  j |   s t j |   r7 t d t |   j    d  k	 rI  n	 t j     f d d   t	 |   D  d d l
 m } | d    d       f d d   }    f d	 d
     t  f d d    } x  D] } | j    q W r#| d  k	 r# j | |   x" t t    D] } |   Vq6Wd  S)Nz expect a list of futures, not %sc                s"   h  |  ] } t  | d     q S)r   )r   )r   rF   )r   r   r   r      s   	 zas_completed.<locals>.<setcomp>r   )Queuer   c                 s9   x(  D]  }  |  j      j d   q W j   d  S)N)r   
put_nowaitclear)rF   )r   ra   todor   r   _on_timeout  s    z!as_completed.<locals>._on_timeoutc                sE    s
 d  S j  |     j |    rA  d  k	 rA  j   d  S)N)remover   rb   )rF   )ra   r   r   r   r   r     s    z$as_completed.<locals>._on_completionc              3   s0     j    Ed  H}  |  d  k r& t j  |  j   S)N)r   r   r   ru   )rF   )ra   r   r   _wait_for_one  s    	z#as_completed.<locals>._wait_for_one)r   r   r   r   r   r   rx   r   r   rL   queuesr   r   rq   r   ranger   )r   r   r~   r   r   r   rF   _r   )r   ra   r   r   r   r   r     s     c         
   c   sv   |  d k r d  V| S| d  k r- t  j   } | j   } | j j |  t j | |  } z | Ed  HSWd  | j   Xd  S)Nr   )r   r   r   r   r   r   Z_set_result_unless_cancelledrb   )delayru   r   rw   hr   r   r   r     s    c            C   s&   t  j d t d d t |  d | S)Nz;asyncio.async() function is deprecated, use ensure_future()
stacklevelr7   r   )warningswarnDeprecationWarningr   )coro_or_futurer   r   r   r   async_  s    	r   c            C   s   t  j |   r: | d  k	 r6 | |  j k	 r6 t d   |  St j |   r | d  k ra t j   } | j |   } | j	 r | j	 d =| St
 j r t j |   r t t |   d | St d   d  S)Nz$loop argument must agree with Futurer   r   z:An asyncio.Future, a coroutine or an awaitable is requiredr#   )r   r   r   r   r   r   r   r   Zcreate_taskr&   r   ZPY35rs   Zisawaitabler   _wrap_awaitabler   )r   r   r0   r   r   r   r   +  s    	
c             c   s   |  j    Ed  HS)N)	__await__)Z	awaitabler   r   r   r   B  s    r   c                   s4   e  Z d  Z d d   f d d  Z d d   Z   S)_GatheringFuturer   Nc               s    t    j d |  | |  _ d  S)Nr   )r$   r%   	_children)r.   childrenr   )r,   r   r   r%   T  s    z_GatheringFuture.__init__c             C   s@   |  j    r d Sd } x# |  j D] } | j   r  d } q  W| S)NFT)ra   r   rb   )r.   retZchildr   r   r   rb   X  s    
z_GatheringFuture.cancel)rx   ry   rz   r%   rb   r   r   )r,   r   r   L  s   r   return_exceptionsFc                s  | s; |  d  k r t  j   }  |  j     j g    Si    x t |  D] } t j |  s t | d |  } |  d  k r | j }  d | _	 n9 | } |  d  k r | j }  n | j |  k	 r t
 d   |   | <qN W  f d d   | D } t |   t | d |   d  d  g        f d d   } x3 t |  D]% \ } } | j t j | |   qRW S)	Nr   Fz)futures are tied to different event loopsc                s   g  |  ] }   |  q Sr   r   )r   arg)
arg_to_futr   r   
<listcomp>  s   	 zgather.<locals>.<listcomp>r   c                s    j    r& | j   s" | j   d  S| j   rX t j   }  s  j |  d  Sn> | j d  k	 r | j   }  s  j |  d  Sn	 | j } |  |  < d 7    k r  j   d  S)Nr   )	ra   r   r   r   re   ri   rB   _resultrj   )ir   res)	nchildren	nfinishedouterresultsr   r   r   _done_callback  s&    
	

zgather.<locals>._done_callback)r   r   r   rj   rL   r   r   r   r   r3   r   r   r   	enumeraterq   r   r   )r   r   Zcoros_or_futuresr   r   r   r   r   r   )r   r   r   r   r   r   r   r
   b  s8    	c               sZ   t  |  d | } | j   r" | S| j } | j       f d d   } | j |    S)Nr   c                s~     j    r& |  j    s" |  j   d  S|  j    r?   j   n; |  j   } | d  k	 rg   j |  n   j |  j    d  S)N)r   r   rb   ri   rj   ru   )innerr_   )r   r   r   r     s    
zshield.<locals>._done_callback)r   ra   r   r   rq   )r   r   r   r   r   )r   r   r     s    	c                sS   t  j    s t d   t j j        f d d   }  j |   S)NzA coroutine object is requiredc                 sh   y  t  j t   d    WnA t k
 rc }  z!  j   rN  j |     WYd  d  }  ~  Xn Xd  S)Nr   )r   Z_chain_futurer   rl   set_running_or_notify_cancelri   )r_   )r/   rw   r   r   r   callback  s     z*run_coroutine_threadsafe.<locals>.callback)r   r   r   
concurrentr   r4   Zcall_soon_threadsafe)r/   r   r   r   )r/   rw   r   r   r     s    )#__all__concurrent.futuresr   r   rs   rQ   rV   r   r{   rK   r   r   r   r   r   r4   r   r   r   r   r   r   r   r   r   r   r   globalsrx   r   r   r   r
   r   r   r   r   r   r   <module>   sN   	 0--8	
T5