U if|C@sdZddlZddlZddlZddlmZddlmZddlmZddlmZGdd d Z Gd d d Z Gd d d e Z GdddZ Gddde Z Gddde ZGdddeZdS))LockEvent Condition SemaphoreBoundedSemaphoreN)events)futures) exceptions) coroutinesc@s$eZdZddZddZddZdS)_ContextManagercCs ||_dSN)_lock)selflockr2/opt/alt/python38/lib64/python3.8/asyncio/locks.py__init__"sz_ContextManager.__init__cCsdSr rrrrr __enter__%sz_ContextManager.__enter__cGsz|jW5d|_XdSr )rreleaserargsrrr__exit__*sz_ContextManager.__exit__N)__name__ __module__ __qualname__rrrrrrrr sr c@sReZdZddZddZejddZej e_ ddZ d d Z d d Z d dZ dS)_ContextManagerMixincCs tddS)Nz9"yield from" should be used as context manager expression) RuntimeErrorrrrrr2sz_ContextManagerMixin.__enter__cGsdSr rrrrrr6sz_ContextManagerMixin.__exit__ccs&tjdtdd|EdHt|S)NzD'with (yield from lock)' is deprecated use 'async with lock' instead stacklevel)warningswarnDeprecationWarningacquirer rrrr__iter__;s z_ContextManagerMixin.__iter__cs|IdHt|Sr )r%r rrrrZ __acquire_ctxUsz"_ContextManagerMixin.__acquire_ctxcCstjdtdd|S)Nz='with await lock' is deprecated use 'async with lock' insteadrr )r"r#r$!_ContextManagerMixin__acquire_ctx __await__rrrrr(Ys z_ContextManagerMixin.__await__cs|IdHdSr )r%rrrr __aenter__`sz_ContextManagerMixin.__aenter__cs |dSr )r)rexc_typeexctbrrr __aexit__fsz_ContextManagerMixin.__aexit__N)rrrrrtypes coroutiner&r Z _is_coroutiner'r(r)r-rrrrr1s rcsJeZdZddddZfddZddZd d Zd d Zd dZZ S)rNloopcCs:d|_d|_|dkr t|_n||_tjdtdddSNF[The loop argument is deprecated since Python 3.8, and scheduled for removal in Python 3.10.rr )_waiters_lockedrget_event_loop_loopr"r#r$rr1rrrrs z Lock.__init__csLt}|jrdnd}|jr2|dt|j}d|ddd|dS NlockedZunlocked , waiters:)super__repr__r5r4lenrresZextra __class__rrrAs  z Lock.__repr__cCs|jSr )r5rrrrr:sz Lock.lockedc s|js.|jdks$tdd|jDr.d|_dS|jdkrBt|_|j}|j|z"z|IdHW5|j|XWn&t j k r|js| YnXd|_dS)Ncss|]}|VqdSr ) cancelled).0wrrr szLock.acquire..T) r5r4all collectionsdequer7 create_futureappendremover CancelledError_wake_up_firstrfutrrrr%s&    z Lock.acquirecCs"|jrd|_|ntddS)NFzLock is not acquired.)r5rRrrrrrrs  z Lock.releasecCsJ|js dSztt|j}Wntk r2YdSX|sF|ddSNT)r4nextiter StopIterationdone set_resultrSrrrrRszLock._wake_up_first) rrrrrAr:r%rrR __classcell__rrrErrjs 6  rcsJeZdZddddZfddZddZd d Zd d Zd dZZ S)rNr0cCs>t|_d|_|dkr$t|_n||_tjdt dddSr2) rLrMr4_valuerr6r7r"r#r$r8rrrrs  zEvent.__init__csLt}|jrdnd}|jr2|dt|j}d|ddd|dS) NsetZunsetr;r<rr=r>r?)r@rAr\r4rBrCrErrrA s  zEvent.__repr__cCs|jSr r\rrrris_setsz Event.is_setcCs.|js*d|_|jD]}|s|dqdSrU)r\r4rYrZrSrrrr]s  z Event.setcCs d|_dS)NFr^rrrrclear"sz Event.clearc sF|jr dS|j}|j|z|IdHWdS|j|XdSrU)r\r7rNr4rOrPrSrrrwait(s   z Event.wait) rrrrrAr_r]r`rar[rrrErrs    rcsNeZdZdddddZfddZddZd d Zdd d ZddZZ S)rNr0cCs~|dkrt|_n||_tjdtdd|dkr>t|d}n|j|jk rRtd||_|j |_ |j |_ |j |_ t |_dS)Nr3rr r0z"loop argument must agree with lock)rr6r7r"r#r$r ValueErrorrr:r%rrLrMr4)rrr1rrrrEs    zCondition.__init__csNt}|rdnd}|jr4|dt|j}d|ddd|dSr9)r@rAr:r4rBrCrErrrA[s  zCondition.__repr__cs|std|z@|j}|j |z|IdHWWdS|j |XW5d}z|IdHWqWq^tjk rd}Yq^Xq^|rtjXdS)Nzcannot wait on un-acquired lockFT) r:rrr%r rQr7rNr4rOrP)rrGrTrrrrabs$      zCondition.waitcs$|}|s |IdH|}q|Sr )ra)rZ predicateresultrrrwait_fors zCondition.wait_forrcCsJ|stdd}|jD]*}||kr*qF|s|d7}|dqdS)Nz!cannot notify on un-acquired lockrrF)r:rr4rYrZ)rnidxrTrrrnotifys  zCondition.notifycCs|t|jdSr )rgrBr4rrrr notify_allszCondition.notify_all)N)r) rrrrrArardrgrhr[rrrErr;s   % rcsLeZdZdddddZfddZdd Zd d Zd d ZddZZ S)rrNr0cCsN|dkrtd||_t|_|dkr4t|_n||_tj dt dddS)Nrz$Semaphore initial value must be >= 0r3rr ) rbr\rLrMr4rr6r7r"r#r$rvaluer1rrrrs  zSemaphore.__init__csVt}|rdn d|j}|jr<|dt|j}d|ddd|dS) Nr:zunlocked, value:r;r<rr=r>r?)r@rAr:r\r4rBrCrErrrAs  zSemaphore.__repr__cCs,|jr(|j}|s|ddSqdSr )r4popleftrYrZ)rZwaiterrrr _wake_up_nexts   zSemaphore._wake_up_nextcCs |jdkS)Nrr^rrrrr:szSemaphore.lockedcst|jdkrb|j}|j|z|IdHWq||jdkrX|sX|YqXq|jd8_dS)NrrT)r\r7rNr4rOZcancelrGrlrSrrrr%s    zSemaphore.acquirecCs|jd7_|dS)Nr)r\rlrrrrrszSemaphore.release)r) rrrrrArlr:r%rr[rrrErrs  rcs0eZdZdddfdd ZfddZZS) rrNr0cs.|rtjdtdd||_tj||ddS)Nr3rr r0)r"r#r$ _bound_valuer@rrirErrr szBoundedSemaphore.__init__cs"|j|jkrtdtdS)Nz(BoundedSemaphore released too many times)r\rmrbr@rrrErrrs zBoundedSemaphore.release)r)rrrrrr[rrrErrs r)__all__rLr.r"rr r r r rrrrrrrrrrs    "9DzN