o g@s4 ddlZddlZddlZddlZddlmZddl m Z ddl m Z mZzddlmZWney<ddlmZYnwgdZejZejZejZejZz ejZdZedWn eydd ZYnwej Z!zej"Z#Wn eyxdZ#Ynwej$Z$[da%da&d d Z'd d Z(ddZ)ddZ*eZ+ddZ"GdddZ,e,Z-GdddZ.GdddZ/Gddde/Z0GdddZ1GdddZ2Gd d!d!e3Z4ed"j5Z6d#d$Z7e"a8iZ9iZ:e Z;ead%d&Z?Gd'd(d(Z@z dd)lmAaBmCZDWn#eydd*lEmFZGdd+lmHZHeHd,d-ZCd.d,ZDd/d0aBYnwtBZId1d2ZJGd3d4d4e@ZKGd5d6d6e@ZLGd7d8d8e@ZMd9d:ZNd;d<ZOd=d>ZPd?d@ZQdAdBZRdCdDZSgZTd aUdEdFZVddGlmWZWeLaXdHdIZYdJdKZZzddLlm[Z\WneyddMl]m\Z\YnwdNdOZ^e_edPrej`e^dQdSdS)RN) monotonic)WeakSet)islicecount)deque) get_ident active_count Conditioncurrent_thread enumerate main_thread TIMEOUT_MAXEventLockRLock SemaphoreBoundedSemaphoreThreadBarrierBrokenBarrierErrorTimer ThreadError setprofilesettracelocal stack_size excepthookExceptHookArgsgettrace getprofileT get_native_idFcC |adSN _profile_hookfuncr'0/opt/alt/python310/lib64/python3.10/threading.pyr:rcC tSr"r#r'r'r'r(rDrcCr!r" _trace_hookr%r'r'r(rHr)rcCr*r"r,r'r'r'r(rRr+rcOs& tdur t|i|St|i|Sr")_CRLock_PyRLock)argskwargsr'r'r(rZsrc@s\eZdZ ddZddZddZdd d ZeZd d Zd dZ ddZ ddZ ddZ dS)_RLockcCst|_d|_d|_dSNr)_allocate_lock_block_owner_countselfr'r'r(__init__qs z_RLock.__init__c Cs\|j}zt|j}Wn tyYnwd|jrdnd|jj|jj||j t t |fS)Nz)<%s %s.%s object owner=%r count=%d at %s>lockedZunlocked) r6_activenameKeyErrorr5r; __class__ __module__ __qualname__r7hexid)r9ownerr'r'r(__repr__vs  z_RLock.__repr__cCs|jd|_d|_dSr3)r5_at_fork_reinitr6r7r8r'r'r(rFs  z_RLock._at_fork_reinitTcCsF t}|j|kr|jd7_dS|j||}|r!||_d|_|SN)rr6r7r5acquire)r9blockingtimeoutmercr'r'r(rJs z_RLock.acquirecCsB |jtkr td|jd|_}|sd|_|jdSdS)Ncannot release un-acquired lockrI)r6r RuntimeErrorr7r5release)r9rr'r'r(rQs z_RLock.releasecC |dSr"rQr9tvtbr'r'r(__exit__ z_RLock.__exit__cCs|j|\|_|_dSr")r5rJr7r6)r9stater'r'r(_acquire_restores z_RLock._acquire_restorecCs<|jdkr td|j}d|_|j}d|_|j||fS)NrrO)r7rPr6r5rQ)r9rrDr'r'r( _release_saves  z_RLock._release_savecCs |jtkSr")r6rr8r'r'r( _is_ownedrYz_RLock._is_ownedNTrG) __name__r@rAr:rErFrJ __enter__rQrXr[r\r]r'r'r'r(r2gs  $ r2c@s~eZdZ dddZddZddZdd Zd d Zd d ZddZ ddZ dddZ dddZ dddZ ddZddZdS)r NcCs|durt}||_|j|_|j|_z|j|_Wn ty!Ynwz|j|_Wn ty1Ynwz|j|_Wn tyAYnwt|_ dSr") r_lockrJrQr\AttributeErrorr[r]_deque_waitersr9lockr'r'r(r:s*       zCondition.__init__cCs|j|jdSr")rarFrdclearr8r'r'r(rFs zCondition._at_fork_reinitcCs |jSr")rar`r8r'r'r(r` zCondition.__enter__cGs |jj|Sr")rarX)r9r0r'r'r(rX rYzCondition.__exit__cCsd|jt|jfS)Nz)ralenrdr8r'r'r(rEszCondition.__repr__cC|jdSr")rarQr8r'r'r(r\zCondition._release_savecCrjr")rarJ)r9xr'r'r(r[rkzCondition._acquire_restorecCs|jdr |jdSdS)NFT)rarJrQr8r'r'r(r]s  zCondition._is_ownedcCs |s tdt}||j||}d}z7|dur(|d}n|dkr3|d|}n|d}|W|||sSz|j|WSt yRYSwS|||smz|j|Wwt ylYwww)Nzcannot wait on un-acquired lockFTr) r]rPr4rJrdappendr\r[remove ValueError)r9rLwaiterZ saved_stateZgotitr'r'r(wait s@      zCondition.waitcCs` d}|}|}|s.|dur$|durt|}n |t}|dkr$ |S|||}|r |Sr3)_timerq)r9Z predicaterLendtimeZwaittimeresultr'r'r(wait_forPs     zCondition.wait_forrIcCs |s td|j}|rC|dkrE|d}z|Wn ty%Ynw|d8}z||Wn ty:Ynw|rG|dksdSdSdSdS)Nz!cannot notify on un-acquired lockrrI)r]rPrdrQrnro)r9nwaitersrpr'r'r(notifygs$     zCondition.notifycCs |t|jdSr")rxrirdr8r'r'r( notify_allszCondition.notify_allcCs& ddl}|jdtdd|dS)Nrz3notifyAll() is deprecated, use notify_all() instead stacklevel)warningswarnDeprecationWarningryr9r}r'r'r( notifyAlls  zCondition.notifyAllr"rI)r_r@rAr:rFr`rXrEr\r[r]rqrurxryrr'r'r'r(r s  0  r c@s8eZdZ d ddZd ddZeZd dd Zd d ZdS)rrIcCs&|dkrtdtt|_||_dS)Nrz$semaphore initial value must be >= 0)ror r_cond_valuer9valuer'r'r(r:s  zSemaphore.__init__TNcCs |s |dur tdd}d}|jM|jdkr>|sn4|dur3|dur)t|}n |t}|dkr3n$|j||jdks|jd8_d}Wd|SWd|SWd|S1sbwY|S)Nz.can't specify timeout for non-blocking acquireFrrIT)rorrrrrq)r9rKrLrNrsr'r'r(rJs:          zSemaphore.acquirecCsd |dkr td|j|j|7_t|D]}|jqWddS1s+wYdS)NrIn must be one or more)rorrrangerxr9rvir'r'r(rQs  "zSemaphore.releasecCrRr"rSrTr'r'r(rXrYzSemaphore.__exit__r)TN)r_r@rAr:rJr`rQrXr'r'r'r(rs -  rc@s"eZdZ dddZdddZdS)rrIcCst||||_dSr")rr:_initial_valuerr'r'r(r:  zBoundedSemaphore.__init__cCs| |dkr td|j(|j||jkrtd|j|7_t|D]}|jq$WddS1s7wYdS)NrIrz!Semaphore released too many times)rorrrrrxrr'r'r(rQs   "zBoundedSemaphore.releaseNr)r_r@rAr:rQr'r'r'r(rs rc@sHeZdZ ddZddZddZddZd d Zd d ZdddZ d S)rcCstt|_d|_dSNF)r rr_flagr8r'r'r(r:!rzEvent.__init__cCrjr")rrFr8r'r'r(rF%szEvent._at_fork_reinitcC |jSr")rr8r'r'r(is_set)sz Event.is_setcCs" ddl}|jdtdd|S)Nrz+isSet() is deprecated, use is_set() insteadrzr{)r}r~rrrr'r'r(isSet-s z Event.isSetcCs> |jd|_|jWddS1swYdSNT)rrryr8r'r'r(set8s  "z Event.setcCs4 |j d|_WddS1swYdSr)rrr8r'r'r(rgCs"z Event.clearNcCsF |j|j}|s|j|}|WdS1swYdSr")rrrq)r9rLZsignaledr'r'r(rqMs $z Event.waitr") r_r@rAr:rFrrrrgrqr'r'r'r(rs    rc@s~eZdZ dddZdddZddZdd Zd d Zd d ZddZ ddZ ddZ e ddZ e ddZe ddZdS)rNcCs0 tt|_||_||_||_d|_d|_dSr3)r rr_action_timeout_parties_stater7)r9partiesactionrLr'r'r(r:ws  zBarrier.__init__c Cs |dur|j}|jB||j}|jd7_z&|d|jkr'|n|||W|jd8_|WdS|jd8_|w1sPwYdSrH)rr_enterr7r_release_wait_exit)r9rLindexr'r'r(rqs$   z Barrier.waitcCs0|jdvr|j|jdvs|jdkrtdS)NrGrIr)rrrqrr8r'r'r(rs   zBarrier._entercCs6z|jr|d|_|jWdS|rH)rrrry_breakr8r'r'r(rszBarrier._releasecs4jfdd|stjdkrtdS)Ncs jdkSr3rr'r8r'r(s zBarrier._wait..r)rrurrrr9rLr'r8r(rs  z Barrier._waitcCs0|jdkr|jdvrd|_|jdSdSdS)Nrr)r7rrryr8r'r'r(rs  z Barrier._exitcCsl |j(|jdkr|jdkrd|_n |jdkrd|_nd|_|jWddS1s/wYdS)NrrG)rr7rryr8r'r'r(resets    "z Barrier.resetcCs6 |j |WddS1swYdSr")rrr8r'r'r(aborts "z Barrier.abortcCsd|_|jdSNr)rrryr8r'r'r(rszBarrier._breakcCrr")rr8r'r'r(rszBarrier.partiescCs |jdkr |jSdSr3)rr7r8r'r'r( n_waitings zBarrier.n_waitingcCs |jdkSrrr8r'r'r(brokens zBarrier.brokenNNr")r_r@rAr:rqrrrrrrrpropertyrrrr'r'r'r(rns"       rc@s eZdZdS)rN)r_r@rAr'r'r'r(rsrrIcCs |tSr")_counter)Z name_templater'r'r(_newnamerhrcCs ddtD}t|dS)NcSsg|]}|s|qSr')r;).0rfr'r'r( *sz,_maintain_shutdown_locks..)_shutdown_locksdifference_update)Z to_remover'r'r(_maintain_shutdown_locks s rc@seZdZ dZ  d7ddddZddZd d Zd d Zd dZddZ ddZ e r/ddZ ddZ ddZddZddZd8ddZd9d!d"Zed#d$Zejd%d$Zed&d'Ze rded(d)Zd*d+Zed,d-Zejd.d-Zd/d0Zd1d2Zd3d4Zd5d6ZdS):rFNr')daemoncCs |duri}|rt|}ntd}|dur-z |j}|d|d7}Wn ty,Ynw||_||_||_||_|durA||_nt j |_d|_ t rNd|_ d|_t|_d|_d|_tj|_t|_t|dS)Nz Thread-%dz ()FT)strrr_rb_target_name_args_kwargs _daemonicr r_ident_HAVE_THREAD_NATIVE_ID _native_id _tstate_lockr_started _is_stopped _initialized_sysstderr_stderr_make_invoke_excepthook_invoke_excepthook _danglingadd)r9grouptargetr=r0r1rZ target_namer'r'r(r:;s<   zThread.__init__cCsD|j|r|jdur|j|jdSdSd|_d|_dSr)rrFrrJr)r9is_aliver'r'r(_reset_internal_locksus    zThread._reset_internal_lockscCs^d}|jr d}||jrd}|jr|d7}|jdur%|d|j7}d|jj|j|fS)NinitialZstartedZstoppedz daemonz %sz <%s(%s, %s)>) rrrrrrr?r_r)r9Zstatusr'r'r(rEs  zThread.__repr__c Cs |jstd|jrtdt |t|<Wdn1s"wYzt|jdWntyLt t|=Wd1sFwYw|j dS)Nzthread.__init__() not calledz threads can only be started oncer') rrPrr_active_limbo_lock_limbo_start_new_thread _bootstrap Exceptionrqr8r'r'r(starts&     z Thread.startcCsT z!|jdur|j|ji|jW|`|`|`dSW|`|`|`dS|`|`|`wr")rrrr8r'r'r(runs z Thread.runcCs,z|WdS|jrtdurYdSr")_bootstrap_innerrrr8r'r'r(rs  zThread._bootstrapcC t|_dSr")rrr8r'r'r( _set_identrYzThread._set_identcCrr")r rr8r'r'r(_set_native_idrYzThread._set_native_idcCsZ t|_|j|js+ttt|jWddS1s$wYdSdSr") _set_sentinelrrJr_shutdown_locks_lockrrrr8r'r'r(_set_tstate_locks "zThread._set_tstate_lockcCs4zt||tr||jt|t|j<t |=Wdn1s)wYt r5t t t r.invoke_excepthook)rrrPexc_infor)rr'rr(rs rc@s(eZdZ dddZddZddZdS) rNcCsFt|||_||_|dur|ng|_|dur|ni|_t|_dSr")rr:intervalfunctionr0r1rfinished)r9rrr0r1r'r'r(r:Ss  zTimer.__init__cCs |jdSr")r rr8r'r'r(cancel[sz Timer.cancelcCs:|j|j|js|j|ji|j|jdSr")r rqrrrr0r1rr8r'r'r(r_s z Timer.runr)r_r@rAr:r rr'r'r'r(rJs   rc@seZdZddZdS) _MainThreadcCsjtj|ddd||j|tr|t|t |j <WddS1s.wYdS)NZ MainThreadFr=r) rr:rrrrrrrr<rr8r'r'r(r:js  "z_MainThread.__init__N)r_r@rAr:r'r'r'r(r hs r c@s.eZdZddZddZddZd dd ZdS) _DummyThreadcCsftj|tddd|j|tr|t|t |j <WddS1s,wYdS)NzDummy-%dTr ) rr:rrrrrrrr<rr8r'r'r(r:s  "z_DummyThread.__init__cCdSr"r'r8r'r'r(rsz_DummyThread._stopcCsdSrr'r8r'r'r(rsz_DummyThread.is_aliveNcCrr"r'rr'r'r(rsz_DummyThread.joinr")r_r@rAr:rrrr'r'r'r(r }s  r cCs( zttWStytYSwr")r<rr>r r'r'r'r(r s    r cC ddl}|jdtddtS)Nrz;currentThread() is deprecated, use current_thread() insteadrzr{)r}r~rr r}r'r'r( currentThreadrrcCs: tttttWdS1swYdSr")rrir<rr'r'r'r(rs$rcCr)Nrz7activeCount() is deprecated, use active_count() insteadrzr{)r}r~rrrr'r'r( activeCountrrcCsttttSr")listr<valuesrr'r'r'r( _enumeratesrcCsB tttttWdS1swYdSr")rrr<rrr'r'r'r(r s$r cOs4 trtdtj|g|Ri|}t|dS)Nz$can't register atexit after shutdown)_SHUTTING_DOWNrP functoolspartial_threading_atexitsrm)r&argr1Zcallr'r'r(_register_atexits  r)rcCs tjrdSdatj}|tttD]}|q tt t }t Wdn1s3wY|sqr) _main_threadrrrrQrreversedrrrrrgrJ)ZtlockZ atexit_callZlocksrfr'r'r( _shutdowns(   rcCr*r")rr'r'r'r(r sr )_local)rcCs tai}ztt}Wn tyt}Ynw|atat a tBt t }| t |D]}||urG|dt}||_|||<q1|d|q1ttt |WddS1siwYdS)NTF)rrr<rr>r rr4rrrrupdaterrrrrrg)Z new_activeZcurrentZthreadsrrr'r'r( _after_fork.s4         "r!register_at_fork)Zafter_in_child)aos_ossysr_threadrtimerrrZ _weakrefsetr itertoolsrZ_islicerr7 _collectionsrrc ImportError collections__all__start_new_threadr allocate_lockr4rrr rrmrberrorrrr.r r$r-rrrrrr2r/r rrrrrPr__next__rrrr<rrrrrrrrrrr tracebackrrr__excepthook__rrr r r rrrrr rrrrrrr rrZ_threading_localr!hasattrr"r'r'r'r(s          v;S)X 6   ,5      /  5