fw ddlZddlZddlZddlZddlmZddl m Z ddl m Z mZ ddlmZn#e$r ddlmZYnwxYwgdZejZejZejZejZ ejZdZedn #e$rd ZYnwxYwej Z! ej"Z#n #e$rdZ#YnwxYwej$Z$[da%da&d Z'd Z(d Z)d Z*eZ+dZ"GddZ,e,Z-GddZ.GddZ/Gdde/Z0GddZ1GddZ2Gdde3Z4edj5Z6dZ7e"a8iZ9iZ:e Z;ea<e=a>dZ?Gd d!Z@ dd"lmAaBmCZDn)#e$r!dd#lEmFZGdd$lmHZHeHd%d&ZCd'ZDd(aBYnwxYwtZId)ZJGd*d+e@ZKGd,d-e@ZLGd.d/e@ZMd0ZNd1ZOd2ZPd3ZQd4ZRd5ZSgZTd aUd6ZVdd7lmWZWeLaXd8ZYd9ZZ dd:lm[Z\n#e$r dd;l]m\Z\YnwxYwd<Z^e_ed=rej`e^>dSdS)?N) monotonic)WeakSet)islicecount)deque) get_ident active_count Conditioncurrent_thread enumerate main_thread TIMEOUT_MAXEventLockRLock SemaphoreBoundedSemaphoreThreadBarrierBrokenBarrierErrorTimer ThreadError setprofilesettracelocal stack_size excepthookExceptHookArgsgettrace getprofileT get_native_idFc |adSN _profile_hookfuncs 0/opt/alt/python311/lib64/python3.11/threading.pyrr:sMMMc tSr#r$r)r(r r Ds E r)c |adSr# _trace_hookr&s r(rrHsKKKr)c tSr#r-r+r)r(rrRs @ r)cB t t|i|St|i|Sr#)_CRLock_PyRLock)argskwargss r(rrZs4(((( D #F # ##r)cReZdZ dZdZdZddZeZdZdZ d Z d Z d Z d Z d S)_RLockcHt|_d|_d|_dSNr)_allocate_lock_block_owner_countselfs r(__init__z_RLock.__init__qs!$&&   r)c  |j} t|j}n#t$rYnwxYwd|jrdnd|jj|jj||j tt|fzS)Nz)<%s %s.%s object owner=%r count=%d at %s>lockedunlocked) r;_activenameKeyErrorr:rA __class__ __module__ __qualname__r<hexid)r>owners r(__repr__z_RLock.__repr__vs  EN'EE    D : **,,   s  ))cT|jd|_d|_dSr8)r:_at_fork_reinitr;r<r=s r(rNz_RLock._at_fork_reinits( ##%%%  r)Tc t}|j|kr|xjdz c_dS|j||}|r||_d|_|SN)rr;r<r:acquire)r>blockingtimeoutmercs r(rSz_RLock.acquiresf 2[[ ;"   KK1 KK1 [ 7 3 3  DKDK r)c |jtkrtd|jdz x|_}|s"d|_|jdSdS)Ncannot release un-acquired lockrR)r;r RuntimeErrorr<r:release)r>rs r(r[z_RLock.releasesn  ;)++ % %@AA A"kAo- e "DK K   ! ! ! ! ! " "r)c.|dSr#r[r>tvtbs r(__exit__z_RLock.__exit__ r)cV|j|\|_|_dSr#)r:rSr<r;)r>states r(_acquire_restorez_RLock._acquire_restores( #(  T[[[r)c|jdkrtd|j}d|_|j}d|_|j||fS)NrrY)r<rZr;r:r[)r>rrKs r( _release_savez_RLock._release_savesX ;!  @AA A     u~r)c0|jtkSr#)r;rr=s r( _is_ownedz_RLock._is_owneds{ikk))r)cB|jtkrdS|jSr8)r;rr<r=s r(_recursion_countz_RLock._recursion_counts ;)++ % %1{r)NTrO)__name__rGrHr?rLrNrS __enter__r[rbrfrhrjrlr+r)r(r6r6gs     """"HI""". )))*** r)r6cfeZdZ ddZdZdZdZdZdZdZ d Z dd Z dd Z dd Z dZdZdS)r Nc>|t}||_|j|_|j|_ |j|_n#t $rYnwxYw |j|_n#t $rYnwxYw |j|_n#t $rYnwxYwt|_ dSr#) r_lockrSr[rhAttributeErrorrfrj_deque_waitersr>locks r(r?zCondition.__init__s <77D | |  !%!3D      D  $($9D ! !    D  !^DNN    D  s3 > A  A  A A)(A)- A:: BBcj|j|jdSr#)rrrNruclearr=s r(rNzCondition._at_fork_reinit s0 ""$$$ r)c4|jSr#)rrror=s r(rozCondition.__enter__sz##%%%r)c |jj|Sr#)rrrb)r>r3s r(rbzCondition.__exit__s"tz"D))r)c>d|jt|jfzS)Nz)rrlenrur=s r(rLzCondition.__repr__s$ C 4F4F'GGGr)c8|jdSr#)rrr[r=s r(rhzCondition._release_save r)c8|jdSr#)rrrS)r>xs r(rfzCondition._acquire_restorerr)cp|jdr|jdSdS)NFT)rrrSr[r=s r(rjzCondition._is_owneds: :  e $ $  J   54r)c |stdt}||j||}d} ||d}n2|dkr|d|}n|d}||||s, |j|S#t$rYSwxYwS#|||s, |j|w#t$rYwwxYwwxYw)Nzcannot wait on un-acquired lockFTr) rjrZr9rSruappendrhrfremove ValueError)r>rUwaiter saved_stategotits r(waitzCondition.wait's ,~~ B@AA A!! V$$$((**     Q;;"NN499EE"NN511E  ! !+ . . . M((0000!D   ! !+ . . . M((0000!D sC8A DC77 DDE !D<;E < E E E  E c d}|}|}|sO|,|t|z}n|tz }|dkrn!|||}|O|Sr8)_timer)r> predicaterUendtimewaittimeresults r(wait_forzCondition.wait_forWs  !#?#gg0GG&0H1}} IIh   Y[[F ! r)rRc< |std|j}|rj|dkrf|d} ||dz}n#t$rYnwxYw ||n#t $rYnwxYw|r |dkbdSdSdSdS)Nz!cannot notify on un-acquired lockrrR)rjrZrur[rr)r>nwaitersrs r(notifyzCondition.notifyns ~~ DBCC C- !a%%QZF    Q        v&&&&     !a%%%%  %%  s#A A$#A$(A>> B  B cV |t|jdSr#)rr}rur=s r( notify_allzCondition.notify_alls+ C &&'''''r)cr ddl}|dtd|dS)Nrz3notifyAll() is deprecated, use notify_all() instead stacklevel)warningswarnDeprecationWarningrr>rs r( notifyAllzCondition.notifyAllsK  K(Q  8 8 8 r)r#rR)rnrGrHr?rNrorbrLrhrfrjrrrrrr+r)r(r r s !!!!0&&&***HHH....`.<(((     r)r c8eZdZ d dZdZd dZeZd dZdZdS) rrRc~|dkrtdtt|_||_dS)Nrz$semaphore initial value must be >= 0)rr r_cond_valuer>values r(r?zSemaphore.__init__s8 199CDD Dtvv&&  r)c h|j}d|jd|jdt|dd|jd S)N<. at #x: value=>)rFrGrHrJrr>clss r(rLzSemaphore.__repr__sYn)CN))S%5))2d88I))+))) *r)TNcZ |s|tdd}d}|j5|jdkrV|sne|,|t|z}n|tz }|dkrn7|j||jdkV|xjdzc_d}dddn #1swxYwY|S)Nz.can't specify timeout for non-blocking acquireFrrRT)rrrrr)r>rTrUrWrs r(rSzSemaphore.acquires . OG/MNN N  Z  +""&"'''G"3")EGG"3"a<<! (((+"" q                 sA4B  B$'B$c |dkrtd|j5|xj|z c_t|D]}|j ddddS#1swxYwYdS)NrRn must be one or more)rrrrangerr>ris r(r[zSemaphore.releases q55455 5 Z $ $ KK1 KK1XX $ $ !!#### $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $srstatuss r(rLzEvent.__repr__6sPn*1'R3>RRC$4RR"T((RRRRRRRr)c8|jdSr#)rrNr=s r(rNzEvent._at_fork_reinit;s ""$$$$$r)c |jSr#)rr=s r(is_setz Event.is_set?s Czr)cn ddl}|dtd|S)Nrz+isSet() is deprecated, use is_set() insteadrr)rrrrrs r(isSetz Event.isSetCsC  C(Q  8 8 8{{}}r)c |j5d|_|jddddS#1swxYwYdSNT)rrrr=s r(rz Event.setNs Z $ $DJ J ! ! # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $s !7;;cV |j5d|_ddddS#1swxYwYdSr)rrr=s r(ryz Event.clearYs| Z  DJ                  s ""Nc |j5|j}|s|j|}|cdddS#1swxYwYdSr#)rrr)r>rUsignaleds r(rz Event.waitcs Z  zH 4:??733                   s %;??r#) rnrGrHr?rLrNrrrryrr+r)r(rr'sSSS %%%    $ $ $r)rceZdZ ddZdZddZdZdZdZdZ d Z d Z d Z e d Ze d Ze dZdS)rNc tt|_||_||_||_d|_d|_dSr8)r rr_action_timeout_parties_stater<)r>partiesactionrUs r(r?zBarrier.__init__sC tvv&&      r)c |j}|jr$d|jd|jdt |ddSd|jd|jdt |dd|jd|jd S) Nrrrrz : broken>z : waiters=rr)rFbrokenrGrHrJ n_waitingrrs r(rLzBarrier.__repr__sn ; UTs~TT(8TTbhhTTTT T=CN==S%5==2d88I== N==-1\=== >r)c ||j}|j5||j}|xjdz c_ |dz|jkr|n||||xjdzc_|cdddS#|xjdzc_|wxYw#1swxYwYdSrQ)rr_enterr<r_release_wait_exit)r>rUindexs r(rz Barrier.waits#  ?mG Z   KKMMMKE KK1 KK 19 --MMOOOOJJw''' q           q            s(,C9B)8$C)&CCCCc|jdvr"|j|jdv"|jdkrtdS)NrOrRr)rrrrr=s r(rzBarrier._entersJkW$$ JOO   kW$$ ;??$ $ ?r)c |jr|d|_|jdS#|xYwrQ)rrrr_breakr=s r(rzBarrier._releasesX |  DK J ! ! # # # # #  KKMMM s ;?Acjfd|stjdkrtdS)NcjdkSr8rr=sr(zBarrier._wait..sDK1,<r)r)rrrrrr>rUs` r(rz Barrier._waitsRz""#<#<#<#{b  r)NNr#)rnrGrHr?rLrrrrrrrrpropertyrrrr+r)r(rrs  >>><         ((($$$(   XX!!X!!!r)rceZdZdS)rN)rnrGrHr+r)r(rr%sDr)rrRc$|tzSr#)_counter) name_templates r(_newnamer+s 8:: %%r)c^ dtD}t|dS)Nc:g|]}||Sr+)rA).0rws r( z,_maintain_shutdown_locks..Gs%GGG$GGGGr))_shutdown_locksdifference_update) to_removes r(_maintain_shutdown_locksr=s7HG/GGGI%%i00000r)c6eZdZ dZ d dddZdZdZdZd Zd Z d Z e rd Z d Z dZdZdZd!dZd"dZedZejdZedZe r edZdZedZejdZdZdZdZdZdS)#rFNr+)daemonc  |i}|rt|}n3td}|" |j}|d|dz }n#t$rYnwxYw||_||_||_||_|||_ntj |_d|_ trd|_ d|_t|_d|_d|_t&j|_t-|_t0|dS)Nz Thread-%dz ()FT)strrrnrs_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)r>grouptargetrDr3r4r target_names r(r?zThread.__init__Xs$ , >F  t99DDK((D!"(/K/////DD%D     #DNN+--4DN ! #"DO    { "9";"; ds; AAc|j|r=|j4|j|jdSdSd|_d|_dSr)rrNrrSr)r>is_alives r(_reset_internal_lockszThread._reset_internal_lockss{ %%'''  % ,!11333!))+++++-, $D  $D   r)cd}|jrd}||jrd}|jr|dz }|j |d|jzz }d|jjd|jd|d S) Ninitialstartedstoppedz daemonz %sr(z, z)>) rrr!rrrrFrnr )r>rs r(rLzThread.__repr__s =   ! ! F    F > i F ; " edk) )F!%!8!8!8$***fffMMr)c |jstd|jrtdt5|t |<dddn #1swxYwY t |jdn6#t$r)t5t |=dddn #1swxYwYwxYw|j dS)Nzthread.__init__() not calledz threads can only be started oncer+) rrZrr_active_limbo_lock_limbo_start_new_thread _bootstrap Exceptionrr=s r(startz Thread.startsc   ?=>> > =   ! ! CABB B   F4L                 dor 2 2 2 2   # ! !4L ! ! ! ! ! ! ! ! ! ! ! ! ! ! !   sB AA"%A"*BB3 B& B3&B* *B3-B* .B3ch |j|j|ji|j|`|`|`dS#|`|`|`wxYwr#)r r r r=s r(runz Thread.runs[  7|' dj9DL999 dj$,,, dj$, 6 6 6 6s)1c^ |dS#|jr tYdSxYwr#)_bootstrap_innerrrr=s r(r,zThread._bootstraps@   ! ! # # # # # ~ $, s ,,c,t|_dSr#)rrr=s r( _set_identzThread._set_identskk r)c,t|_dSr#)r!rr=s r(_set_native_idzThread._set_native_ids+ooDOOOr)c  t|_|j|jsOt5t t |jddddS#1swxYwYdSdSr#) _set_sentinelrrSr_shutdown_locks_lockrrrr=s r(_set_tstate_lockzThread._set_tstate_locks *OO !!###{ 7% 7 7(***##D$5666 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7s.A77A;>A;cj ||tr||jt 5|t|j<t|=dddn #1swxYwYtrtj ttrtjt |n#||YnxYw|dS#|wxYwr#)r4r:rr6rrr)rCrr*r.rrr%rr0r_deleter=s r(r2zThread._bootstrap_innersQ  OO     ! ! # # #% &##%%% M     # ! !'+ $4L ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! + k*** / ... .  .''----- LLNNNNNDLLNNNNsIA#D%B = D B  DB ADC*)D*DDD2c|j}|d|_d|_|js0t5t ddddS#1swxYwYdSdSr)rrrr9rrvs r(_stopz Thread._stops"    { +% + +(*** + + + + + + + + + + + + + + + + + + + +sAA Acp t5tt=ddddS#1swxYwYdSr#)r)rCrr=s r(r<zThread._delete6s{K  % % $ % % % % % % % % % % % % % % % % % %rc: |jstd|jstd|t urtd||dS|t |ddS)NThread.__init__() not calledz'cannot join thread before it is startedzcannot join current threadr)rU)rrZrrr _wait_for_tstate_lockmaxrs r(joinz Thread.join?s .  ?=>> >}##%% JHII I >## # #;<< < ?  & & ( ( ( ( (  & &s7A & ? ? ? ? ?r)TrOc"|j}|dS |||r*||dSdS#|r(||xYwr#)rrSr[r>rA)r>blockrUrws r(rBzThread._wait_for_tstate_lockes  < F ||E7++      {{}}    s >A?Bc |jSr#)r r=s r(rDz Thread.names zr)c.t||_dSr#)r r )r>rDs r(rDz Thread.namesYY r)c |jSr#)rr=s r(identz Thread.idents {r)c |jSr#)rr=s r( native_idzThread.native_ids ? "r)c |js|jsdS|d|j Sr)rrrrBr=s r(r!zThread.is_alivesN    4=#7#7#9#9 5 ""5)))###r)c |jSr#)rr=s r(rz Thread.daemons ~r)c|jstd|jrtd||_dS)NrAz)cannot set daemon status of active thread)rrZrrr)r>daemonics r(rz Thread.daemonsM  ?=>> > =   ! ! LJKK K!r)cT ddl}|dtd|jS)Nrz:isDaemon() is deprecated, get the daemon attribute insteadrrrrrrrs r(isDaemonzThread.isDaemons=  R(Q  8 8 8{r)cX ddl}|dtd||_dS)Nrz;setDaemon() is deprecated, set the daemon attribute insteadrrrR)r>rPrs r( setDaemonzThread.setDaemons@  S(Q  8 8 8 r)cT ddl}|dtd|jS)Nrz7getName() is deprecated, get the name attribute insteadrrrrrrDrs r(getNamezThread.getNames=  O(Q  8 8 8yr)cX ddl}|dtd||_dS)Nrz7setName() is deprecated, set the name attribute insteadrrrW)r>rDrs r(setNamezThread.setNames@  O(Q  8 8 8 r))NNNr+Nr#rm)rnrGrHrr?r"rLr.r0r,r4rr6r:r2r>r<rDrBrrDsetterrJrLr!rrSrUrXrZr+r)r(rrMs L59!%81588888t%%%" N N N4777"(""". . . . 7 7 7.+++6%%%$@$@$@$@L6X [[  X  #  # #  # $ $ $  X  ]""]"              r)r) _excepthook_ExceptHookArgs)print_exception) namedtuplerz'exc_type exc_value exc_traceback threadct|Sr#)r])r3s r(rrs %%r)c| |jtkrdSttj tj}n|j|jj}|dSndS|j |jj}nt}td|d|dt|j|j |j || dS)NzException in thread :Tfileflush)rd) exc_type SystemExitrrthreadrrDrprint_print_exception exc_value exc_tracebackre)r3rrDs r(rr s  =J & & F   7[FF [ $[(F~ F ; ";#DD;;D ,T,,, ' ' ' '8J$ & & & & r)cttjtdtdtjttfd}|S)Nzthreading.excepthook is Nonezsys.excepthook is NonecJ t}|}tg |}||ne#t$rX}d|_~jj}n|j}d|djj}n }| Yd}~nd}~wwxYwd}dS#d}wxYw)NTz"Exception in threading.excepthook:rc)rrr-__suppress_context__rr) rhhookr3excrsys_excepthook local_print local_sysold_excepthookold_sys_excepthook sys_exc_infos r(invoke_excepthookz2_make_invoke_excepthook..invoke_excepthook<s D|%!";LLNN";F";<r|r}r3r4s r(r?zTimer.__init__jsQ     ,DD" & 2ff  r)c: |jdSr#)r~rr=s r(cancelz Timer.cancelrs7 r)c|j|j|js|j|ji|j|jdSr#)r~rr|rr}r3r4rr=s r(r0z Timer.runvse 4=)))}##%% 5 DM49 4 4 4 4 r)r)rnrGrHr?rr0r+r)r(rrasK    r)rceZdZdZdS) _MainThreadcVt|dd||j|t r|t5|t|j <ddddS#1swxYwYdS)N MainThreadFrDr) rr?r:rrr4rr6r)rCrr=s r(r?z_MainThread.__init__s<>>>    ! "    ! ! !  ( (#'GDK  ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (sBB"%B"N)rnrGrHr?r+r)r(rrs#(((((r)rc(eZdZdZdZdZddZdS) _DummyThreadcHt|tdd|j|t r|t5|t|j <ddddS#1swxYwYdS)NzDummy-%dTr) rr?rrrr4rr6r)rCrr=s r(r?z_DummyThread.__init__s8J#7#7EEE   ! "    ! ! !  ( (#'GDK  ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s:BBBcdSr#r+r=s r(r>z_DummyThread._stops r)cdSrr+r=s r(r!z_DummyThread.is_alivestr)NcdSr#r+rs r(rDz_DummyThread.joinsr)r#)rnrGrHr?r>r!rDr+r)r(rrsU(((   333333r)rct ttS#t$rtcYSwxYwr#)rCrrErr+r)r(r r sF y{{## ~~s 77cb ddl}|dtdtS)Nrz;currentThread() is deprecated, use current_thread() insteadrr)rrrr rs r( currentThreadrsA OOO MMO$444   r)c t5ttttzcdddS#1swxYwYdSr#)r)r}rCr*r+r)r(r r s **7||c&kk)******************s)?AAcb ddl}|dtdtS)Nrz7activeCount() is deprecated, use active_count() insteadrr)rrrr rs r( activeCountrs? OOO MMK$444 >>r)cttttzSr#)listrCvaluesr*r+r)r( _enumeraters/   ! !D$9$9 99r)c t5ttttzcdddS#1swxYwYdSr#)r)rrCrr*r+r)r(r r s >>GNN$$%%V]]__(=(==>>>>>>>>>>>>>>>>>>sA A##A'*A'c trtdtj|g|Ri|}t|dS)Nz$can't register atexit after shutdown)_SHUTTING_DOWNrZ functoolspartial_threading_atexitsr)r'argr4calls r(_register_atexitrs[CABBB  T 2C 2 2 26 2 2Dd#####r))rc tjrdSdattD] }| tjt kr:tj}|t n t5tt}t dddn #1swxYwY|sdS|D]*}||+~r) _main_threadrrreversedrrJrrr[r>r9rrryrS) atexit_calltlocklocksrws r( _shutdownrsJN 233  Y[[(()     ! $ $))E  ! ! # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $  E  D LLNNN LLNNNN s.C  CCc tSr#)rr+r)r(r r =s r))_local)rcb tai} tt}n#t$rt }YnwxYw|atata t5tt}| t|D]}||urs|dt}t|t r.t |_d|_d|_|||_|||<y|d|t.tt |ddddS#1swxYwYdS)NTrF)rr)rCrrErrr9r9rrrupdaterr" isinstancerrFr rr:rr>r*ry) new_activecurrentthreadsrhrJs r( _after_forkrNsJ )++&    --  L*++eeO !!jll##y!!!  F  ,,T222! fl33.'2F$#/FL',F$++--- % $* 5!!,,U333   z"""7!!!!!!!!!!!!!!!!!!s"-AA0D'F$$F(+F(register_at_fork)after_in_child)aos_ossysr_threadrtimerr _weakrefsetr itertoolsr_islicerr< _collectionsrrt ImportError collections__all__start_new_threadr+ allocate_lockr9r8rr!rrrserrorrrr1rr%r.rr rrrr6r2r rrrrrZr__next__rrr)rCr*rr9rrrrr\rr]r tracebackr^rjr___excepthook__rrrrr rr rrr rrrrrrr rr_threading_localrhasattrrr+r)r(rslA######88888888,,,,,,,,,,,++++++++, E E E,&%   #)M! NN?#######"#m mGGGGG!      $ $ ${{{{{{{{z wwwwwwwwtUUUUUUUUp+$+$+$+$+$y+$+$+$\OOOOOOOOz^!^!^!^!^!^!^!^!B        6!99 &&&UWW   GII &~''#%% 1 1 1 jjjjjjjjZ +<<<<<<<<<(((======&&&&&& j133O&&&(X000jF< ( ( ( ( (& ( ( (*3333363332      ***   ::: > > >$$$" {}} 222p'''''''''''&&&&&&&&'7!7!7!t 73"##5C 44444455sT. << A??B B BB&%B&5E>>#F$#F$ H H H