a DOgM;@sdZddlZddlZddlmZddlmZGdddZGdd d eZGd d d ZGd d d eZ GdddeZ Gddde Z dS))LockEvent Condition SemaphoreBoundedSemaphoreN)events) exceptionsc@seZdZddZddZdS)_ContextManagerMixincs|IdHdSN)acquireselfr2/opt/alt/python39/lib64/python3.9/asyncio/locks.py __aenter__ sz_ContextManagerMixin.__aenter__cs |dSr )release)rexc_typeexctbrrr __aexit__sz_ContextManagerMixin.__aexit__N)__name__ __module__ __qualname__rrrrrrr sr csJeZdZddddZfddZddZd d Zd d Zd dZZ S)rNloopcCs:d|_d|_|dur t|_n||_tjdtdddSNF[The loop argument is deprecated since Python 3.8, and scheduled for removal in Python 3.10. stacklevel)_waiters_lockedrget_event_loop_loopwarningswarnDeprecationWarningrrrrr__init__Ms z Lock.__init__csLt}|jrdnd}|jr2|dt|j}d|ddd|dS NlockedZunlocked , waiters:)super__repr__r"r!lenrresZextra __class__rrr2Xs  z Lock.__repr__cCs|jSr )r"r rrrr+_sz Lock.lockedc s|js.|jdus$tdd|jDr.d|_dS|jdurBt|_|j}|j|z.z|IdHW|j|n|j|0Wn$t j y|js| Yn0d|_dS)Ncss|]}|VqdSr ) cancelled).0wrrr jzLock.acquire..T) r"r!all collectionsdequer$ create_futureappendremover CancelledError_wake_up_firstrfutrrrr cs&      z Lock.acquirecCs"|jrd|_|ntddS)NFzLock is not acquired.)r"rD RuntimeErrorr rrrrs  z Lock.releasecCsH|js dSztt|j}Wnty0YdS0|sD|ddSNT)r!nextiter StopIterationdone set_resultrErrrrDs zLock._wake_up_first) rrrr)r2r+r rrD __classcell__rrr6rrs 6  rcsJeZdZddddZfddZddZd d Zd d Zd dZZ S)rNrcCs>t|_d|_|dur$t|_n||_tjdt dddSr) r>r?r!_valuerr#r$r%r&r'r(rrrr)s  zEvent.__init__csLt}|jrdnd}|jr2|dt|j}d|ddd|dS) NsetZunsetr,r-rr.r/r0)r1r2rOr!r3r4r6rrr2s  zEvent.__repr__cCs|jSr rOr rrris_setsz Event.is_setcCs.|js*d|_|jD]}|s|dqdSrH)rOr!rLrMrErrrrPs  z Event.setcCs d|_dS)NFrQr rrrclearsz Event.clearc sP|jr dS|j}|j|z|IdHW|j|dS|j|0dSrH)rOr$r@r!rArBrErrrwaits    z Event.wait) rrrr)r2rRrPrSrTrNrrr6rrs    rcsNeZdZdddddZfddZddZd d Zdd d ZddZZ S)rNrcCs~|durt|_n||_tjdtdd|dur>t|d}n|j|jurRtd||_|j |_ |j |_ |j |_ t |_dS)Nrrrrz"loop argument must agree with lock)rr#r$r%r&r'r ValueError_lockr+r rr>r?r!)rlockrrrrr)s   zCondition.__init__csNt}|rdnd}|jr4|dt|j}d|ddd|dSr*)r1r2r+r!r3r4r6rrr2s  zCondition.__repr__cs.|std|z|j}|j|z^|IdHW|j|Wd}z|IdHWqWqPt j y~d}YqP0qP|rt j dS|j|0Wd}z|IdHWqWqt j yd}Yq0q|rt j nHd}z|IdHWqWqt j yd}Yq0q|r(t j 0dS)Nzcannot wait on un-acquired lockFT) r+rGrr$r@r!rArBr r rC)rrFr8rrrrTsJ         zCondition.waitcs$|}|s |IdH|}q|Sr )rT)rZ predicateresultrrrwait_for4s zCondition.wait_forrcCsJ|stdd}|jD]*}||kr*qF|s|d7}|dqdS)Nz!cannot notify on un-acquired lockrrF)r+rGr!rLrM)rnidxrFrrrnotifyAs  zCondition.notifycCs|t|jdSr )r\r3r!r rrr notify_allYszCondition.notify_all)N)r) rrrr)r2rTrYr\r]rNrrr6rrs   % rcsLeZdZdddddZfddZdd Zd d Zd d ZddZZ S)rrNrcCsT|dkrtd||_t|_|dur4t|_n||_tj dt ddd|_ dS)Nrz$Semaphore initial value must be >= 0rrrF) rUrOr>r?r!rr#r$r%r&r'_wakeup_scheduledrvaluerrrrr)qs  zSemaphore.__init__csVt}|rdn d|j}|jr<|dt|j}d|ddd|dS) Nr+zunlocked, value:r,r-rr.r/r0)r1r2r+rOr!r3r4r6rrr2s  zSemaphore.__repr__cCs2|jr.|j}|s|dd|_dSqdSrH)r!popleftrLrMr^)rZwaiterrrr _wake_up_nexts   zSemaphore._wake_up_nextcCs |jdkS)NrrQr rrrr+szSemaphore.lockedcsn|js|jdkr\|j}|j|z|IdHd|_WqtjyX|Yq0q|jd8_dS)NrFrT) r^rOr$r@r!rAr rCrbrErrrr s      zSemaphore.acquirecCs|jd7_|dS)Nr)rOrbr rrrrszSemaphore.release)r) rrrr)r2rbr+r rrNrrr6rrbs  rcs0eZdZdddfdd ZfddZZS) rrNrcs.|rtjdtdd||_tj||ddS)Nrrrr)r%r&r' _bound_valuer1r)r_r6rrr)s zBoundedSemaphore.__init__cs"|j|jkrtdtdS)Nz(BoundedSemaphore released too many times)rOrcrUr1rr r6rrrs zBoundedSemaphore.release)r)rrrr)rrNrrr6rrs r) __all__r>r%rr r rrrrrrrrrs   DzQ