grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026B tÀÔ¼;„–ã@sœddlZddlZddlZddlmZddlm Z ddl m Z ddl mZmZyddlmZWn ek r|ddlmZYnXddd d d d d ddddddddddddddgZejZejZejZejZejZy ej Z!Wne"k rìdZ!YnXej#Z#[da$da%dd„Z&dd„Z'eZ(dd„Z Gdd „d ƒZ)e)Z*Gd!d „d ƒZ+Gd"d„dƒZ,Gd#d„de,ƒZ-Gd$d„dƒZ.Gd%d„dƒZ/Gd&d„de0ƒZ1eƒj2Z3e3ƒd?d(d)„Z4eƒa5iZ6iZ7e ƒZ8eƒa9e:ƒa;Gd*d„dƒZGd.d/„d/e<ƒZ?d0d „Z@e@ZAd1d„ZBeBZCd2d3„ZDd4d „ZEdd5lmFZFe>ƒaGd6d7„ZHd8d „ZIydd9lmJZKWn"ek �rvdd:lLmKZKYnXd;d<„ZMeNed=ƒ�r˜ejOeMd>�dS)@éN)Ú monotonic)Ú format_exc)ÚWeakSet)ÚisliceÚcount)ÚdequeÚ get_identÚ active_countÚ ConditionÚcurrent_threadÚ enumerateÚ main_threadÚ TIMEOUT_MAXÚEventÚLockÚRLockÚ SemaphoreÚBoundedSemaphoreÚThreadÚBarrierÚBrokenBarrierErrorÚTimerÚ ThreadErrorÚ setprofileÚsettraceÚlocalÚ stack_sizecCs|adS)N)Ú _profile_hook)Úfunc©rú./opt/alt/python37/lib64/python3.7/threading.pyr3scCs|adS)N)Ú _trace_hook)rrrr r=scOstdkrt||ŽSt||ŽS)N)Ú_CRLockÚ_PyRLock)ÚargsÚkwargsrrr rKs  c@sReZdZdd„Zdd„Zddd„ZeZd d „Zd d „Zd d„Z dd„Z dd„Z dS)Ú_RLockcCstƒ|_d|_d|_dS)Nr)Ú_allocate_lockÚ_blockÚ_ownerÚ_count)Úselfrrr Ú__init__bsz_RLock.__init__c Cs^|j}yt|j}Wntk r(YnXd|j ¡r:dnd|jj|jj||j t t |ƒƒfS)Nz)<%s %s.%s object owner=%r count=%d at %s>ÚlockedZunlocked) r)Ú_activeÚnameÚKeyErrorr(r-Ú __class__Ú __module__Ú __qualname__r*ÚhexÚid)r+Úownerrrr Ú__repr__gsz_RLock.__repr__TéÿÿÿÿcCsDtƒ}|j|kr"|jd7_dS|j ||¡}|r@||_d|_|S)Né)rr)r*r(Úacquire)r+ÚblockingÚtimeoutÚmeÚrcrrr r:vs z_RLock.acquirecCs<|jtƒkrtdƒ‚|jd|_}|s8d|_|j ¡dS)Nzcannot release un-acquired lockr9)r)rÚ RuntimeErrorr*r(Úrelease)r+rrrr r@œs  z_RLock.releasecCs | ¡dS)N)r@)r+ÚtÚvÚtbrrr Ú__exit__³sz_RLock.__exit__cCs|j ¡|\|_|_dS)N)r(r:r*r))r+Ústaterrr Ú_acquire_restore¸s z_RLock._acquire_restorecCs<|jdkrtdƒ‚|j}d|_|j}d|_|j ¡||fS)Nrzcannot release un-acquired lock)r*r?r)r(r@)r+rr6rrr Ú _release_save¼s  z_RLock._release_savecCs |jtƒkS)N)r)r)r+rrr Ú _is_ownedÆsz_RLock._is_ownedN)Tr8) Ú__name__r2r3r,r7r:Ú __enter__r@rDrFrGrHrrrr r&Xs  $ r&c@speZdZddd„Zdd„Zdd„Zdd „Zd d „Zd d „Zdd„Z ddd„Z ddd„Z ddd„Z dd„Z e ZdS)r NcCs–|dkrtƒ}||_|j|_|j|_y |j|_Wntk rDYnXy |j|_Wntk rfYnXy |j|_Wntk rˆYnXtƒ|_ dS)N) rÚ_lockr:r@rGÚAttributeErrorrFrHÚ_dequeÚ_waiters)r+Úlockrrr r,Øs$   zCondition.__init__cCs |j ¡S)N)rKrJ)r+rrr rJðszCondition.__enter__cGs |jj|ŽS)N)rKrD)r+r$rrr rDószCondition.__exit__cCsd|jt|jƒfS)Nz)rKÚlenrN)r+rrr r7öszCondition.__repr__cCs|j ¡dS)N)rKr@)r+rrr rGùszCondition._release_savecCs|j ¡dS)N)rKr:)r+Úxrrr rFüszCondition._acquire_restorecCs"|j d¡r|j ¡dSdSdS)NrFT)rKr:r@)r+rrr rHÿs  zCondition._is_ownedcCs¬| ¡stdƒ‚tƒ}| ¡|j |¡| ¡}d}z:|dkrN| ¡d}n |dkrd| d|¡}n | d¡}|S| |¡|s¦y|j |¡Wnt k r¤YnXXdS)Nzcannot wait on un-acquired lockFTr) rHr?r'r:rNÚappendrGrFÚremoveÚ ValueError)r+r<ÚwaiterZ saved_stateZgotitrrr Úwaits*   zCondition.waitcCs\d}|}|ƒ}xH|sV|dk rD|dkr0tƒ|}n|tƒ}|dkrDP| |¡|ƒ}qW|S)Nr)Ú_timerV)r+Z predicater<ÚendtimeZwaittimeÚresultrrr Úwait_for8s    zCondition.wait_forr9c Csj| ¡stdƒ‚|j}tt||ƒƒ}|s,dSx8|D]0}| ¡y| |¡Wq2tk r`Yq2Xq2WdS)Nz!cannot notify on un-acquired lock)rHr?rNrMÚ_islicer@rSrT)r+ÚnZ all_waitersZwaiters_to_notifyrUrrr ÚnotifyOs  zCondition.notifycCs| t|jƒ¡dS)N)r]rPrN)r+rrr Ú notify_allfszCondition.notify_all)N)N)N)r9)rIr2r3r,rJrDr7rGrFrHrVrZr]r^Z notifyAllrrrr r Ìs  0   c@s4eZdZd dd„Zd dd„ZeZdd „Zd d „ZdS)rr9cCs&|dkrtdƒ‚ttƒƒ|_||_dS)Nrz$semaphore initial value must be >= 0)rTr rÚ_condÚ_value)r+Úvaluerrr r,~s zSemaphore.__init__TNc Cs–|s|dk rtdƒ‚d}d}|j�jxb|jdkrt|s6P|dk rf|dkrRtƒ|}n|tƒ}|dkrfP|j |¡q&W|jd8_d}WdQRX|S)Nz.can't specify timeout for non-blocking acquireFrr9T)rTr_r`rWrV)r+r;r<r>rXrrr r:„s$    zSemaphore.acquirec Cs.|j�|jd7_|j ¡WdQRXdS)Nr9)r_r`r])r+rrr r@³szSemaphore.releasecCs | ¡dS)N)r@)r+rArBrCrrr rD¾szSemaphore.__exit__)r9)TN)rIr2r3r,r:rJr@rDrrrr rrs   - c@seZdZddd„Zdd„ZdS)rr9cCst ||¡||_dS)N)rr,Ú_initial_value)r+rarrr r,Ós zBoundedSemaphore.__init__c CsB|j�2|j|jkrtdƒ‚|jd7_|j ¡WdQRXdS)Nz!Semaphore released too many timesr9)r_r`rbrTr])r+rrr r@×s  zBoundedSemaphore.releaseN)r9)rIr2r3r,r@rrrr rÂs c@sBeZdZdd„Zdd„Zdd„ZeZdd„Zd d „Zdd d „Z d S)rcCsttƒƒ|_d|_dS)NF)r rr_Ú_flag)r+rrr r,ós zEvent.__init__cCs|j tƒ¡dS)N)r_r,r)r+rrr Ú_reset_internal_locks÷szEvent._reset_internal_lockscCs|jS)N)rc)r+rrr Úis_setûsz Event.is_setc Cs&|j�d|_|j ¡WdQRXdS)NT)r_rcr^)r+rrr Úsetsz Event.setc Cs|j� d|_WdQRXdS)NF)r_rc)r+rrr Úclear sz Event.clearNc Cs,|j�|j}|s|j |¡}|SQRXdS)N)r_rcrV)r+r<Zsignaledrrr rVs  z Event.wait)N) rIr2r3r,rdreZisSetrfrgrVrrrr rès   c@s|eZdZddd„Zddd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z e dd„ƒZ e dd„ƒZe dd„ƒZdS)rNcCs.ttƒƒ|_||_||_||_d|_d|_dS)Nr)r rr_Ú_actionÚ_timeoutÚ_partiesÚ_stater*)r+ÚpartiesÚactionr<rrr r,@s zBarrier.__init__c Cs€|dkr|j}|j�b| ¡|j}|jd7_z&|d|jkrL| ¡n | |¡|S|jd8_| ¡XWdQRXdS)Nr9)rir_Ú_enterr*rjÚ_releaseÚ_waitÚ_exit)r+r<Úindexrrr rVPs   z Barrier.waitcCs,x|jdkr|j ¡qW|jdkr(t‚dS)N)r8r9r)rkr_rVr)r+rrr rnns   zBarrier._entercCs>y"|jr| ¡d|_|j ¡Wn| ¡‚YnXdS)Nr9)rhrkr_r^Ú_break)r+rrr royszBarrier._releasecs4ˆj ‡fdd„|¡s"ˆ ¡t‚ˆjdkr0t‚dS)Ncs ˆjdkS)Nr)rkr)r+rr ÚˆózBarrier._wait..r)r_rZrsrrk)r+r<r)r+r rp‡s  z Barrier._waitcCs(|jdkr$|jdkr$d|_|j ¡dS)Nr)r8r9)r*rkr_r^)r+rrr rq’s  z Barrier._exitc CsT|j�D|jdkr6|jdkr$d|_q<|jdkr||_n tƒj|_d|_ d|_ t ƒ|_ d|_ d|_tj|_t |¡dS)NFT)Ú_targetÚstrrÚ_nameÚ_argsÚ_kwargsÚ _daemonicr r€Ú_identÚ _tstate_lockrÚ_startedÚ _is_stoppedÚ _initializedÚ_sysÚstderrÚ_stderrÚ _danglingÚadd)r+ÚgroupÚtargetr/r$r%r€rrr r,ûs  zThread.__init__cCs(|j ¡|r| ¡n d|_d|_dS)NT)r‰rdÚ_set_tstate_lockrŠrˆ)r+Úis_aliverrr rd(s   zThread._reset_internal_lockscCs^d}|j ¡rd}| ¡|jr$d}|jr2|d7}|jdk rJ|d|j7}d|jj|j|fS)NÚinitialZstartedZstoppedz daemonz %sz <%s(%s, %s)>) r‰rer”rŠr†r‡r1rIrƒ)r+Ústatusrrr r74s  zThread.__repr__c Cs„|jstdƒ‚|j ¡r tdƒ‚t�|t|<WdQRXyt|jdƒWn,tk rtt� t|=WdQRX‚YnX|j  ¡dS)Nzthread.__init__() not calledz threads can only be started oncer) r‹r?r‰reÚ_active_limbo_lockÚ_limboÚ_start_new_threadÚ _bootstrapÚ ExceptionrV)r+rrr ÚstartBs  z Thread.startcCs.z|jr|j|j|jŽWd|`|`|`XdS)N)r�r„r…)r+rrr Úrun[s z Thread.runcCs2y | ¡Wn |jr&tdkr&dS‚YnXdS)N)Ú_bootstrap_innerr†rŒ)r+rrr ršls  zThread._bootstrapcCs tƒ|_dS)N)rr‡)r+rrr Ú _set_ident€szThread._set_identc Cs8tƒ|_|j ¡|js4t�t |j¡WdQRXdS)N)Ú _set_sentinelrˆr:r€Ú_shutdown_locks_lockÚ_shutdown_locksr�)r+rrr r“ƒs  zThread._set_tstate_lockcCs”�z`| ¡| ¡|j ¡t�|t|j<t|=WdQRXtrLt   t¡t rZt   t ¡�zy |  ¡Wnîtk r~YnÜt r®t jdk r®td|jtƒft jd�n¦|jdk �rT| ¡\}}}z‚td|jd|jd�td|jd�x6|�r&td|jjj|j|jjjf|jd�|j}qòWtd||f|jd�|j ¡Wd~~~XYnXWdXWdt� y ttƒ=Wn YnXWdQRXXdS)NzException in thread %s: %s)ÚfilezException in thread z2 (most likely raised during interpreter shutdown):z"Traceback (most recent call last):z File "%s", line %s, in %sz%s: %s)rŸr“r‰rfr—r.r‡r˜r!rŒrrrr�Ú SystemExitr�Úprintr/Ú _format_excrŽÚ _exc_infoÚtb_frameÚf_codeÚ co_filenameÚ tb_linenoÚco_nameÚtb_nextÚflushr)r+Úexc_typeÚ exc_valueZexc_tbrrr rž�sV         zThread._bootstrap_innerc Cs>|j}|dk rd|_d|_|js:t�t |¡WdQRXdS)NT)rˆrŠr€r¡r¢Údiscard)r+rOrrr Ú_stopÑsz Thread._stopc Cst�ttƒ=WdQRXdS)N)r—r.r)r+rrr Ú_deleteëszThread._deletecCsZ|jstdƒ‚|j ¡s tdƒ‚|tƒkr2tdƒ‚|dkrD| ¡n|jt|dƒd�dS)NzThread.__init__() not calledz'cannot join thread before it is startedzcannot join current threadr)r<)r‹r?r‰rer Ú_wait_for_tstate_lockÚmax)r+r<rrr Újoinôs   z Thread.joinTr8cCs0|j}|dkrn| ||¡r,| ¡| ¡dS)N)rˆr:r@r²)r+Úblockr<rOrrr r´s  zThread._wait_for_tstate_lockcCs|jS)N)rƒ)r+rrr r/(s z Thread.namecCst|ƒ|_dS)N)r‚rƒ)r+r/rrr r/3scCs|jS)N)r‡)r+rrr Úident8s z Thread.identcCs&|js|j ¡sdS| d¡|j S)NF)rŠr‰rer´)r+rrr r”Ds  zThread.is_alivecCs ddl}|jdtdd�| ¡S)Nrz/isAlive() is deprecated, use is_alive() insteadé)Ú stacklevel)ÚwarningsÚwarnÚPendingDeprecationWarningr”)r+r»rrr ÚisAliveRs zThread.isAlivecCs|jS)N)r†)r+rrr r€\s z Thread.daemoncCs*|jstdƒ‚|j ¡r tdƒ‚||_dS)NzThread.__init__() not calledz)cannot set daemon status of active thread)r‹r?r‰rer†)r+Údaemonicrrr r€ks  cCs|jS)N)r€)r+rrr ÚisDaemonsszThread.isDaemoncCs ||_dS)N)r€)r+r¿rrr Ú setDaemonvszThread.setDaemoncCs|jS)N)r/)r+rrr ÚgetNameyszThread.getNamecCs ||_dS)N)r/)r+r/rrr ÚsetName|szThread.setName)NNNrN)N)Tr8)rIr2r3r‹rŒÚexc_infor§r,rdr7rœr�ršrŸr“ržr²r³r¶r´r{r/Úsetterr¸r”r¾r€rÀrÁrÂrÃrrrr rès6 ,  B &    c@s&eZdZddd„Zdd„Zdd„ZdS) rNcCsFt |¡||_||_|dk r"|ng|_|dk r4|ni|_tƒ|_dS)N)rr,ÚintervalÚfunctionr$r%rÚfinished)r+rÆrÇr$r%rrr r,Šs  zTimer.__init__cCs|j ¡dS)N)rÈrf)r+rrr Úcancel’sz Timer.cancelcCs6|j |j¡|j ¡s(|j|j|jŽ|j ¡dS)N)rÈrVrÆrerÇr$r%rf)r+rrr r�–s z Timer.run)NN)rIr2r3r,rÉr�rrrr r�s c@seZdZdd„ZdS)Ú _MainThreadc CsHtj|ddd�| ¡|j ¡| ¡t�|t|j<WdQRXdS)NZ MainThreadF)r/r€) rr,r“r‰rfrŸr—r.r‡)r+rrr r,¡s  z_MainThread.__init__N)rIr2r3r,rrrr rÊŸsrÊc@s.eZdZdd„Zdd„Zdd„Zd dd „ZdS) Ú _DummyThreadc CsDtj|tdƒdd�|j ¡| ¡t�|t|j<WdQRXdS)NzDummy-%dT)r/r€) rr,rr‰rfrŸr—r.r‡)r+rrr r,´s  z_DummyThread.__init__cCsdS)Nr)r+rrr r²¼sz_DummyThread._stopcCsdS)NTr)r+rrr r”¿sz_DummyThread.is_aliveNcCsdS)Nr)r+r<rrr r¶Ãsz_DummyThread.join)N)rIr2r3r,r²r”r¶rrrr r˲srËcCs&y ttƒStk r tƒSXdS)N)r.rr0rËrrrr r És c Cs t�ttƒttƒSQRXdS)N)r—rPr.r˜rrrr r ×scCstt ¡ƒtt ¡ƒS)N)Úlistr.Úvaluesr˜rrrr Ú _enumerateãsrÎc Cs(t�tt ¡ƒtt ¡ƒSQRXdS)N)r—rÌr.rÍr˜rrrr r çs)rc Csntjr dStj}| ¡t ¡xHt�ttƒ}t ¡WdQRX|sHPx|D]}|  ¡| ¡qNWq"WdS)N) Ú _main_threadrŠrˆr@r²r¡rÌr¢rgr:)ZtlockZlocksrOrrr Ú _shutdownús  rÐcCstS)N)rÏrrrr r "s)Ú_local)rc CsÎtƒai}yttƒ}Wntk r2tƒ}YnX|atƒatƒa t�|tt ƒƒ}|  t ¡xF|D]>}||kr�|  d¡tƒ}||_|||<qd|  d¡| ¡qdWt ¡t ¡t  |¡WdQRXdS)NTF)r'r—r.rr0rÊrÏr¡rfr¢rÎÚupdater�rdr‡r²r˜rg)Z new_activeZcurrentZthreadsZthreadr¸rrr Ú _after_fork3s0         rÓÚregister_at_fork)Zafter_in_child)r|)PÚosÚ_osÚsysrŒÚ_threadZtimerrWÚ tracebackrr¦Z _weakrefsetrÚ itertoolsrr[rr*Ú _collectionsrrMÚ ImportErrorÚ collectionsÚ__all__Ústart_new_threadr™Ú allocate_lockr'r rÚerrorrrr"rLrrr!rrrr&r#r rrrrr?rÚ__next__r}rr—r.r˜r�r¡rfr¢rrrÊrËr Z currentThreadr Z activeCountrÎr rrÏrÐr rÑrZ_threading_localrÓÚhasattrrÔrrrr Ús–           q'P&O    ( 5