o ?Og~@sj dZddlZddlZddlZddlZddlZddlZddlZddl Z ddlm Z ddl m Z ddl m Z ddl mZddl mZdd l mZdd l mZedjZdBd d ZdBd dZddZGdddejZeZzddlZWn ey{YnwejZZddddZejjZejj Z ejj!Z!de!dddZ"ddZ#ddZ$ddZ%dd Z&dd!d"d#Z'ej(d$d%Z)dBd&d'Z*dd(d)d*Z+dd(d+d,Z,ej(d-d.Z-ee-_Gd/d0d0ej.Z/d1d2d3d4Z0d5d6Z1d7d8Z2e 3Z4iZ5d9d:Z6d;d<Z7d=d>Z8d?d@Z9e6Z:e9Z;e7Ze9Z?e7Z@e8ZAdS)C)Task create_taskFIRST_COMPLETEDFIRST_EXCEPTION ALL_COMPLETEDwaitwait_for as_completedsleepgathershield ensure_futurerun_coroutine_threadsafe current_task all_tasks_register_task_unregister_task _enter_task _leave_taskN) GenericAlias) base_tasks) coroutines)events) exceptions)futures) _is_coroutinecCs |dur t}t|SN)rget_running_loop_current_tasksgetloopr#4/opt/alt/python310/lib64/python3.10/asyncio/tasks.pyr#s rcs` dur td} ztt}Wnty$|d7}|dkr"Ynwnq fdd|DS)NrTrics&h|]}t|ur|s|qSr#)r _get_loopdone).0tr!r#r$ =szall_tasks..)rrlist _all_tasks RuntimeError)r"iZtasksr#r!r$r*s    rcCs8|durz|j}Wn tyYdSw||dSdSr)set_nameAttributeError)tasknamer.r#r#r$_set_task_nameAs   r2cseZdZ dZdddfdd ZfddZeeZdd Z d d Z d d Z ddZ ddZ ddZddddZdddddZd ddZd fdd ZddZZS)!rTN)r"r1cstj|d|jr|jd=t|sd|_td||dur)dt|_nt ||_d|_ d|_ ||_ t |_|jj|j|jdt|dS)Nr!Fza coroutine was expected, got zTask-context)super__init___source_tracebackr iscoroutine_log_destroy_pending TypeError_task_name_counter_namestr _must_cancel _fut_waiter_coro contextvarsZ copy_context_context_loop call_soon _Task__stepr)selfcoror"r1 __class__r#r$r7]s    z Task.__init__csF|jtjkr|jr|dd}|jr|j|d<|j|tdS)Nz%Task was destroyed but it is pending!)r0messageZsource_traceback) Z_staterZ_PENDINGr:r8rDZcall_exception_handlerr6__del__)rGr5rIr#r$rLts  z Task.__del__cCs t|Sr)rZ_task_repr_inforGr#r#r$ _repr_infos zTask._repr_infocC|jSr)rArMr#r#r$get_coroz Task.get_corocCrOr)r=rMr#r#r$get_namerQz Task.get_namecCst||_dSr)r>r=)rGvaluer#r#r$r.sz Task.set_namecCtd)Nz*Task does not support set_result operationr,)rGresultr#r#r$ set_resultzTask.set_resultcCrT)Nz-Task does not support set_exception operationrU)rG exceptionr#r#r$ set_exceptionrXzTask.set_exception)limitcCs t||Sr)rZ_task_get_stack)rGr[r#r#r$ get_stacks zTask.get_stack)r[filecCs t|||Sr)rZ_task_print_stack)rGr[r]r#r#r$ print_stackszTask.print_stackcCs@ d|_|r dS|jdur|jj|drdSd|_||_dSNFmsgT)Z_log_tracebackr&r@cancelr?_cancel_message)rGrar#r#r$rbs z Task.cancelc s|rtd|d||jrt|tjs|}d|_|j}d|_t |j |zz|dur8| d}n| |}Wnnt yg}z|jrUd|_tj|jdnt|jWYd}~n d}~wtjy}z||_tWYd}~nd}~wttfy}zt|d}~wty}z t|WYd}~nd}~wwt|dd}|dur't||j urtd|d|d}|j j|j||jd n|r||urtd |}|j j|j||jd nd|_|j |j!|jd ||_|jr|jj|jdrd|_ntd |d |}|j j|j||jd nj|dur7|j j|j|jd nt"#|rStd |d |}|j j|j||jd nutd|}|j j|j||jd Wt$|j |d}dSWt$|j |d}dSWt$|j |d}dSWt$|j |d}dSWt$|j |d}dSWt$|j |d}dSWt$|j |d}dSWt$|j |d}dSWt$|j |d}dSWt$|j |d}dSt$|j |d}w)Nz_step(): already done: z, Fr`_asyncio_future_blockingzTask z got Future z attached to a different loopr4zTask cannot await on itself: z-yield was used instead of yield from in task z with z;yield was used instead of yield from for generator in task zTask got bad yield: )%r&rZInvalidStateErrorr? isinstanceCancelledError_make_cancelled_errorrAr@rrDsendthrow StopIterationr6rbrcrWrSZ_cancelled_excKeyboardInterrupt SystemExitrZ BaseExceptiongetattrrr%r,rErFrCrdadd_done_callback _Task__wakeupinspectZ isgeneratorr)rGexcrHrVZblockingnew_excrIr#r$Z__steps                 6 1  (  "   z Task.__stepc CsRz|Wnty }z||WYd}~d}dSd}~ww|d}dSr)rVrmrF)rGfuturerrr#r#r$Z__wakeup.s   z Task.__wakeupr)__name__ __module__ __qualname__r:r7rL classmethodr__class_getitem__rNrPrRr.rWrZr\r^rbrFrp __classcell__r#r#rIr$rKs"    "Wr)r1cCs" t}||}t|||Sr)rrrr2)rHr1r"r0r#r#r$rKs   r)timeout return_whencs t|s t|rtdt|j|std|tt t fvr*td|t t |}tdd|DrCtjdtddfd d |D}t|||IdHS) Nzexpect a list of futures, not z#Set of coroutines/Futures is empty.zInvalid return_when value: css|]}t|VqdSr)rr9r'fr#r#r$ xszwait..zThe explicit passing of coroutine objects to asyncio.wait() is deprecated since Python 3.8, and scheduled for removal in Python 3.11. stacklevelch|]}t|dqSr!r r}r!r#r$r)~zwait..)risfuturerr9r;typeru ValueErrorrrrrrsetanywarningswarnDeprecationWarning_wait)fsr{r|r#r!r$r]s rcGs|s |ddSdSr)r&rW)waiterargsr#r#r$_release_waiterrc s t}|dur|IdHS|dkrBt||d}|r!|St||dIdHz|WStjyA}zt|d}~ww| }| |t |}t t |}t||d}||zfz|IdHWn&tjy|r}|YW|S||t||dIdHw|r|W|S||t||dIdHz |WW|Stjy}zt|d}~ww|w)Nrr!)rrr r&rV_cancel_and_waitrrf TimeoutError create_future call_laterr functoolspartialrorbremove_done_callback)futr{r"rrrtimeout_handlecbr#r#r$rsZ                  rc s |d|dur||tt|fdd}|D]}||q"zIdHWdur9|D]}||q;ndurL|D]}||qNwtt}}|D]}|rl| |q`| |q`||fS)Ncsjd8dkstkstkr-|s/|dur1dur"s3ddSdSdSdSdS)Nrr)rr cancelledrYrbr&rWr~Zcounterr|rrr#r$_on_completions z_wait.._on_completion) rrrlenrorbrrr&add)rr{r|r"rr~r&Zpendingr#rr$rs8      rc sR |}tt|}||z||IdHW||dS||wr)rrrrrorbr)rr"rrr#r#r$rs   r)r{c#s t|s t|rtdt|jddlm}|t fddt |Ddfdd}fdd fd d }D]}| qHr\|dur\ ||ttD]}|VqbdS) Nz#expect an iterable of futures, not r)Queuecrrrr}r!r#r$r)%rzas_completed..cs*D] }|dqdSr)r put_nowaitclearr)rr&todor#r$ _on_timeout(s   z!as_completed.._on_timeoutcs<sdS||sdurdSdSdSr)removerrbr)r&rrr#r$r.s    z$as_completed.._on_completioncs&IdH}|durtj|Sr)r rrrVr)r&r#r$ _wait_for_one6s z#as_completed.._wait_for_one)rrrr9r;rruZqueuesrr_get_event_looprrorranger)rr{rrrr~_r#)rr&r"rrr$r s&      rccs dVdSrr#r#r#r#r$__sleep0Es rcs^ |dkrtIdH|St}|}||tj||}z |IdHW|S|w)Nr)rrrrrrZ_set_result_unless_cancelledrb)ZdelayrVr"rthr#r#r$r Qs  r r!cCs t||dSNr!)_ensure_future)coro_or_futurer"r#r#r$r bs r cCst|r|dur|t|urtd|Sd}t|s-t|r)t|}d}nt d|dur7t j dd}z| |WSt yK|sJ|w)NzRThe future belongs to a different loop than the one specified as the loop argumentFTz:An asyncio.Future, a coroutine or an awaitable is requiredr)rrr%rrr9rqZ isawaitable_wrap_awaitabler;rrrr,close)rr"Zcalled_wrap_awaitabler#r#r$rjs&      rccs |EdHSr) __await__)Z awaitabler#r#r$rsrcs(eZdZ fddZdddZZS)_GatheringFuturecstj|d||_d|_dS)Nr!F)r6r7 _children_cancel_requested)rGchildrenr"rIr#r$r7s z_GatheringFuture.__init__NcCs:|rdSd}|jD] }|j|drd}q |rd|_|Sr_)r&rrbr)rGraZretchildr#r#r$rbs  z_GatheringFuture.cancelr)rurvrwr7rbrzr#r#rIr$rs rF)return_exceptionscs |st}|gSfdd}i}gddd}d|D]3}||vrTt||d}|dur?t|}||urFd|_d7|||<||n||} |q*t |dS)Ncsd7dus r|s|dSs6|r'|}|dS|}|dur6|dSkryg}D]%}|rRt|jdurMdn|j}n |}|dur^|}| |q>j rr|}|dS |dSdS)Nr) r&rrYrgrZrrfrcrVappendrrW)rrrZresultsresrZ nfinishedZnfutsouterrr#r$_done_callbacks>   zgather.._done_callbackrr!Fr) rrrrWrrr%r:rorr)rZcoros_or_futuresr"rZ arg_to_futargrr#rr$r s6 7     r csZ t|r St}|fddfdd}|S)Ncs`r|s |dS|rdS|}|dur'|dS|dSr)rrYrbrZrWrV)innerrrrr#r$_inner_done_callbackOs z$shield.._inner_done_callbackcss dSdSr)r&rr)rrr#r$_outer_done_callback`rz$shield.._outer_done_callback)rr&rr%rro)rr"rr#)rrrr$r 's     r cs< ts tdtjfdd}|S)NzA coroutine object is requiredc sZz ttdWdSttfyty,}z r'|d}~wwr)rZ _chain_futurer rlrkrmZset_running_or_notify_cancelrZ)rrrHrtr"r#r$callbackrs z*run_coroutine_threadsafe..callback)rr9r; concurrentrFutureZcall_soon_threadsafe)rHr"rr#rr$r is   r cC t|dSr)r+rr0r#r#r$rrcCs4t|}|durtd|d|d|t|<dS)NzCannot enter into task z while another task z is being executed.rr r,r"r0rr#r#r$rs   rcCs2t|}||urtd|d|dt|=dS)Nz Leaving task z! does not match the current task .rrr#r#r$rs   rcCrr)r+discardrr#r#r$rrr)rrrrr+rr)B__all__Zconcurrent.futuresrrBrrq itertoolstypesrweakrefrrrrrrrrcount__next__r<rrr2Z _PyFuturerZ_PyTaskZ_asyncio ImportErrorZ_CTaskrrrrrrrrrr coroutinerr r rrrrr r r ZWeakSetr+rrrrrZ_py_register_taskZ_py_unregister_taskZ_py_enter_taskZ_py_leave_taskZ_c_register_taskZ_c_unregister_taskZ _c_enter_taskZ _c_leave_taskr#r#r#r$s            u    &G,9   {B$