+
    BiY                        ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIt^ RIHtHtHt ^ RIHt ^ RIHtHt ^RIHt ^RIHtHt ^RIHt ^RIHtHtH t H!t! ^R	I"H#t# ^R
I$H%t%H&t&H't'H(t(H)t)H*t* ^RI+H,t,H-t- ]'       d	   ^ RI.t.^ RI/t/Rt0]0]#8  g   Q hR"t1]1]08  g   Q hRt2Rt3 ! R R4      t4]Pj                  ! RRR7       ! R R4      4       t6 ! R R4      t7]8t9]:]R,          ]63,          ]:]R,          ]93,          ,          t;];]7,          t< ! R R]=4      t> ! R R]=4      t?Rt@ ! R R]
P                  4      tBR R ltC ! R  R!4      tDR# )#    N)AnyLiteralTextIO)support)	os_helper
MS_WINDOWS)Logger)
TestResultState)TestResults)RunTestsWorkerRunTestsJsonFileJsonFileType)PROGRESS_MIN_TIME)StrPathTestNameformat_durationprint_warningcountplural)create_worker_processUSE_PROCESS_GROUPg      >@g      N@c                   <   a  ] tR t^4t o RtR tR tR tR tRt	V t
R# )MultiprocessIteratorz8A thread-safe iterator over tests for multiprocess mode.c                F    \         P                  ! 4       V n        Wn        R # N)	threadingLocklock
tests_iter)selfr!   s   &&3/usr/lib/python3.14/test/libregrtest/run_workers.py__init__MultiprocessIterator.__init__8   s    NN$	$    c                    V # r    r"   s   &r#   __iter__MultiprocessIterator.__iter__<   s    r&   c                    V P                   ;_uu_ 4        V P                  f   \        h\        V P                  4      uuR R R 4       #   + '       g   i     R # ; ir   )r    r!   StopIterationnextr)   s   &r#   __next__MultiprocessIterator.__next__?   s3    YYY&##( YYYs   )A		A	c                v    V P                   ;_uu_ 4        R V n        R R R 4       R #   + '       g   i     R # ; ir   r    r!   r)   s   &r#   stopMultiprocessIterator.stopE   s    YYY"DO YYYs   '8	r2   N)__name__
__module____qualname____firstlineno____doc__r$   r*   r/   r3   __static_attributes____classdictcell____classdict__s   @r#   r   r   4   s!     B%)# #r&   r   T)slotsfrozenc                   4   a  ] tR t^Jt o RtRtV 3R ltRtV tR# )MultiprocessResultNc                Z   < V ^8  d   Qh/ S[ ;R&   S[R,          ;R&   S[R,          ;R&   # )   resultNworker_stdouterr_msg)r
   str)formatr=   s   "r#   __annotate__MultiprocessResult.__annotate__J   s2       :$	 
 4Z r&   r(   )	r5   r6   r7   r8   rE   rF   __annotate_func__r:   r;   r<   s   @r#   rA   rA   J   s      !%MG  r&   rA   c                       ] tR t^RtRtRtR# )WorkerThreadExitedz)Indicates that a worker thread has exitedr(   N)r5   r6   r7   r8   r9   r:   r(   r&   r#   rM   rM   R   s    3r&   rM   Fc                       ] tR t^ZtRtR# )
ExitThreadr(   N)r5   r6   r7   r8   r:   r(   r&   r#   rO   rO   Z   s    r&   rO   c                   >   a a ] tR t^^t oV3R lV 3R lltRtVtV ;t# )WorkerErrorc                N   < V ^8  d   QhRS[ RS[R,          RS[R,          RS[/# )rC   	test_namerF   Nstdoutstate)r   rG   )rH   r=   s   "r#   rI   WorkerError.__annotate___   s9      $* t 	r&   c                ^   < \        WR 7      p\        WSV4      V n        \        SV `  4        R# )rU   N)r
   rA   	mp_resultsuperr$   )r"   rS   rF   rT   rU   rD   	__class__s   &&&&& r#   r$   WorkerError.__init___   s(    
 I3+FGDr&   )rY   )r5   r6   r7   r8   r$   r:   r;   __classcell__r[   r=   s   @@r#   rQ   rQ   ^   s       r&   rQ   z<not running>c                   >  a a ] tR t^lt oV3R lV 3R lltV3R lR ltV3R lR ltV3R lR ltR V3R	 lR
 lltV3R lR lt	V3R lR lt
V3R lR ltV3R lR ltV3R lR ltV3R lR ltV3R lR ltV3R lR ltV3R lR ltV3R lR ltRtVtV ;t# )!WorkerThreadc                (   < V ^8  d   QhRS[ RRRR/# )rC   	worker_idrunner
RunWorkersreturnN)int)rH   r=   s   "r#   rI   WorkerThread.__annotate__m   s"      # |  r&   c                N  < \         SV `  4        Wn        VP                  V n        VP                  V n        VP
                  V n        VP                  V n        VP                  V n        \        V n
        \        P                  ! 4       V n        R V n        RV n        RV n        R # )NF)rZ   r$   rb   runtestspendingoutputworker_timeouttimeoutlog_NOT_RUNNINGrS   time	monotonic
start_time_popen_killed_stopped)r"   rb   rc   r[   s   &&&r#   r$   WorkerThread.__init__m   sv    "~~mm,,::%..*48r&   c                    < V ^8  d   QhRS[ /# )rC   re   )rG   )rH   r=   s   "r#   rI   rg   {   s     ' '# 'r&   c                   R V P                    2.pV P                  4       '       d   VP                  R4       MVP                  R4       V P                  pV'       d   VP                  RV 24       V P                  pVeS   \
        P                  ! 4       V P                  ,
          pVP                  RVP                   2R\        V4       234       RRP                  V4      ,          # )zWorkerThread #runningstoppedztest=zpid=ztime=z<%s> )rb   is_aliveappendrS   rs   rp   rq   rr   extendpidr   join)r"   infotestpopendts   &    r#   __repr__WorkerThread.__repr__{   s      012==??KK	"KK	"~~KK%v'!DOO3BKK4		{+ !4 568 9&&r&   c                   < V ^8  d   QhRR/# rC   re   Nr(   )rH   r=   s   "r#   rI   rg      s      =  =t  =r&   c                X   V P                   pVf   R # V P                  '       d   R # RV n        \        pV'       d;   \        P                  ! ^ 4      p\        P                  ! VP
                  4      pWC8g  pV'       d   V  R2pMV  R2p\        RV 2\        P                  RR7        V'       d2   \        P                  ! VP
                  \        P                  4       R # VP                  4        R #   \         d     R # \         d   p\        RT RT: 24        R p?R # R p?ii ; i)NTz process groupz processzKill )fileflushzFailed to kill z: )rs   rt   r   osgetsidr   printsysstderrkillpgsignalSIGKILLkillProcessLookupErrorOSErrorr   )r"   r   
use_killpg
parent_sidsidwhatexcs   &      r#   _killWorkerThread._kill   s    =<<<&
1J))EII&C+JV>*DV8$DdVn3::T:	=		%))V^^4

! 	  	=OD6C7;<<	=s*   )7C4 "C4 4D)D)D)D$$D)c                   < V ^8  d   QhRR/# r   r(   )rH   r=   s   "r#   rI   rg      s      d r&   c                4    R V n         V P                  4        R# )TN)ru   r   r)   s   &r#   r3   WorkerThread.stop   s    

r&   c          	      N   < V ^8  d   QhRS[ RS[RS[R,          RS[R,          /# )rC   ri   	output_fdtmp_dirNre   )r   rf   r   )rH   r=   s   "r#   rI   rg      s3     - -^ - -%n-8;d
-r&   c                f   \        WV4      pW@n        R V n         V P                  '       d   V P	                  4        \
        h VP                  V P                  R7      pVf   Q hVV P                  4        RV n        #   \        P                   d.    T P                  '       d   \
        hT P	                  4        Rp M'\         d    T P                  '       d   \
        hh i ; i T P                  4        RT n        R#    T P	                  4        h ; i  T P                  4        RT n        i ; i)Frm   N)r   rs   rt   ru   r   rO   waitrm   _wait_completed
subprocessTimeoutExpiredr   )r"   ri   r   r   r   retcodes   &&&&  r#   _run_processWorkerThread._run_process   s   %h7C'	}}} 

  **T\\*:***4   "DK5 ,, 
=== %$ 

   === %$ 
   "DK	JJL  "DKsG   (D #A? ?&C$&C$>D  C$	C$C$$D DD D0c                :   < V ^8  d   QhRS[ P                  RS[/# )rC   stackre   )
contextlib	ExitStackr   )rH   r=   s   "r#   rI   rg      s!      :#7#7 F r&   c                    \         '       d   \        P                  ! 4       pM\        P                  P
                  p\        P                  ! RVRR7      pVP                  V4       V# )z/Create stdout temporary file (file descriptor).w+backslashreplace)encodingerrors)	r   localegetencodingr   rT   r   tempfileTemporaryFileenter_context)r"   r   r   stdout_files   &&  r#   create_stdoutWorkerThread.create_stdout   sY     : ))+Hzz**H ,,T6>4FH 	K(r&   c                ^   < V ^8  d   QhRS[ P                  RS[S[S[R,          3,          /# )rC   r   re   N)r   r   tupler   r   )rH   r=   s   "r#   rI   rg      s0     ) )j&:&: )uXvX\}E\?] )r&   c                   V P                   P                  4       pV'       d    \        R\        P                  4      pRpW43# \
        P                  ! RRR7      pVP                  V4       VP                  4       p\        '       d4   \        P                  ! V4      p\        V\        P                  4      pW43# \        V\        P                  4      pW43# )zCreate JSON file.Nr   utf8r   )ri   json_file_use_stdoutr   r   STDOUTr   r   r   filenor   msvcrtget_osfhandleWINDOWS_HANDLEUNIX_FD)r"   r   r   	json_filejson_tmpfilejson_fdjson_handles   &&     r#   create_json_fileWorkerThread.create_json_file   s      $}}AAC |':':;IL (( $11$HL-"))+Gz $*#7#7#@$[%1%@%@B	 (( %Wl.B.BC	((r&   c                ,   < V ^8  d   QhRS[ RS[RS[/# )rC   rS   r   re   )r   r   r   )rH   r=   s   "r#   rI   rg     s#       X R` r&   c                R   V3pV P                   P                  '       d   V P                   P                  V4      pMR p/ pV'       d   V Uu. uF  qfR3NK  	  upVR&   V P                   P                  '       d   RVR&   RVR&   V P                   P                  ! RRVRV/VB # u upi )	NTmatch_testsverboseFoutput_on_failuretestsr   r(   )ri   rerunget_match_testsr   create_worker_runtests)r"   rS   r   r   r   kwargsr   s   &&&    r#   r   #WorkerThread.create_worker_runtests  s    ==--77	BKK!#>I$JkdD\k$JF=!==*** $F9*/F&'}}33   		 %Ks   B$c          	      `   < V ^8  d   QhRS[ RS[RS[S[R,          S[S[,          3,          /# )rC   worker_runtests	stdout_fdre   N)r   rf   r   listr   )rH   r=   s   "r#   rI   rg     s6     $ $^ $!$$).sTz4=/H)I$r&   c                   \         P                  '       gy   \        P                  ! R R7      p\        P
                  P                  V4      p V P                  VW#4      p\        P                  ! V4      p\        P                  ! V4       WE3# V P                  W4      p. pWE3#   \        P                  ! T4      p\        P                  ! T4       i ; i)test_python_)prefix)r   is_wasir   mkdtempr   pathabspathr   listdirr   rmtree)r"   r   r   r   r   	tmp_filess   &&&   r#   run_tmp_filesWorkerThread.run_tmp_files  s    
  &&n=Gggoog.G*++O,5@ JJw/	  )
 ## ''CGI## JJw/	  )s   B% %.Cc                &   < V ^8  d   QhRS[ RS[/# )rC   r   re   )r   rG   )rH   r=   s   "r#   rI   rg   6  s     
6 
6v 
6# 
6r&   c                    VP                  ^ 4        VP                  4       P                  4       #   \         d0   p\	        T P
                  RT 2R\        P                  R7      hRp?ii ; i)r   zCannot read process stdout: N)rT   rU   )seekreadstrip	ExceptionrQ   rS   r   
WORKER_BUG)r"   r   r   s   && r#   read_stdoutWorkerThread.read_stdout6  sh    	6##%++-- 	6 dnn <SEB%)$)$4$46 6	6s   1 A+*A&&A+c          
      V   < V ^8  d   QhRS[ RS[R,          RS[RS[S[S[3,          /# )rC   r   r   NrT   re   )r   r   rG   r   r
   )rH   r=   s   "r#   rI   rg   B  s8          8   6D=     "'
C"8  r&   c                    Ve#   VP                  ^ 4       VP                  4       pMwVP                  \        P                  8X  d&   VP                  R4      w  r5pVP                  4       pM3VP                  RR7      ;_uu_ 4       pVP                  4       pR R R 4       X'       g(   \        V P                  RV\        P                  R7      h \        P                  ! V4      p	W3#   + '       g   i     LY; i  \         d1   pRT 2p\        T P                  Y\        P                  R7      hR p?ii ; i  \         d1   pRT 2p\        T P                  Y\        P                  R7      hR p?ii ; i)N
r   r   z$Failed to read worker process JSON: rX   z
empty JSONz%Failed to parse worker process JSON: )r   r   	file_typer   r   
rpartitionrstripopenr   rQ   rS   r   r   r
   	from_json)
r"   r   r   rT   worker_json_json_fpr   rF   rD   s
   &&&&      r#   	read_jsonWorkerThread.read_jsonB  sF   	6'!!!$*//1$$(;(;;)/):):4)@&;^^V^44"),,.K 5 dnnlF$)$4$46 6	6))+6F - 54 	6 =SEBGdnng$)$4$46 6		6  	6 >cUCGdnng$)$4$46 6		6sY   %C; AC; ,C; C(C; D9 (C8	3C; 8C; ;D6+D11D69E4+E//E4c                &   < V ^8  d   QhRS[ RS[/# )rC   rS   re   )r   rA   )rH   r=   s   "r#   rI   rg   d  s      2  2(  2/A  2r&   c           
     "   \         P                  ! 4       ;_uu_ 4       pV P                  V4      pV P                  V4      w  rEV P	                  W4      pV P                  VVP                  4       4      w  rxV P                  V4      p	Vf(   \        V P                  V	R \        P                  R7      hV^ 8w  dQ   \        P                  ! V4      p
V
'       d	   V RV
 R2p\        V P                  RV 2V	\        P                  R7      hV P                  WEV	4      w  rR R R 4       X'       dF   RV R\!        V4       RR	P#                  \%        V4      4       2pX	V,          p	XP'                  4        \)        XX	4      #   + '       g   i     Li; i)
N)rT   rF   rU    ()z
Exit code rX   z

Warning -- z leaked temporary files (): , )r   r   r   r   r   r   r   r   rQ   rS   r   TIMEOUTr   get_signal_nameWORKER_FAILEDr   lenr   sortedset_env_changedrA   )r"   rS   r   r   r   r   r   r   r   rT   namerD   msgs   &&           r#   _runtestWorkerThread._runtestd  sv   !!##u,,U3K&*&;&;E&B#I"99)OO "&!3!3O4?4F4F4H"JG %%k2F!$..*.(-7 7 !|..w7!(	D63G!$..Jwi2H&(-(;(;= = "^^IVLNF- $0 !!* ,9~&c$))F94E*F)GIC cMF""$!&&11? $#s   B8E>AE>>F	c                   < V ^8  d   QhRR/# r   r(   )rH   r=   s   "r#   rI   rg     s     2 2T 2r&   c                   V P                   P                  pV P                   P                  p V P                  '       g    \	        V P
                  4      p\        P                  ! 4       T n	        Y0n
         T P                  T4      p\        T n
        \        P                  ! 4       T P                  ,
          TP                  n        T P"                  P%                  RT34       TP                  P'                  Y4      '       g   K  M V P"                  P%                  \1        4       4       R #   \         d     K3  i ; i  \         d   pTP                  p R p?LR p?ii ; i  \        T n
        i ; i  \(         d     Lx\*         d4    T P"                  P%                  R\,        P.                  ! 4       34        Li ; i  T P"                  P%                  \1        4       4       i ; i)NFT)ri   	fail_fastfail_env_changedru   r.   rj   r-   rp   rq   rr   rS   r  rQ   rY   ro   rD   durationrk   put	must_stoprO   BaseException	traceback
format_excrM   )r"   r  r  rS   rY   r   s   &     r#   runWorkerThread.run  sc   MM++	==99	2mmm $T\\ 2I #'.."2!*2 $i 8I &2DN,0NN,<t,N	  )	 23##--iJJ% $0 KKOO.01+ %  # . #I. &2DN  	 	<KKOOT9#7#7#9:;	< KKOO.01s   E5 D/  E5 7E A;E5 G /D>:E5 ;G =D>>E5 E"EE% E""E% %E22E5 5F? G F?1F?<G >F??G %G'c                   < V ^8  d   QhRR/# r   r(   )rH   r=   s   "r#   rI   rg     s     & & &r&   c           	         V P                   pVf   \        R4      h VP                  \        4       R #   \        P
                  \        3 d.   p\        RT  R\        \        4       RT: 24        R p?R # R p?ii ; i)Nz5Should never access `._popen` before calling `.run()`zFailed to wait for z completion (timeout=r  )	rs   
ValueErrorr   WAIT_COMPLETED_TIMEOUTr   r   r   r   r   )r"   r   r   s   &  r#   r   WorkerThread._wait_completed  sz    =TUU	&JJ-.))73 	&/v 6&&56L&M%Nc G% & &	&s   4 A<"A77A<c                $   < V ^8  d   QhRS[ RR/# )rC   rr   re   N)float)rH   r=   s   "r#   rI   rg     s      u  r&   c                     V P                  R4       V P                  4       '       g   R# \        P                  ! 4       V,
          pV P	                  RV  R\        V4       24       V\        8  g   Ks  \        RV  R\        V4       24       R# )Tg      ?zWaiting for z thread for zFailed to join z in N)r   r|   rp   rq   rn   r   WAIT_KILLED_TIMEOUTr   )r"   rr   r   s   && r#   wait_stoppedWorkerThread.wait_stopped  sw     IIcN==??!J.BHH|D6ob6I5JKL''vT/":M9NOPr&   )rt   rs   ru   rn   rk   rj   ri   rr   rS   rm   rb   r   )r5   r6   r7   r8   r$   r   r   r3   r   r   r   r   r   r   r   r  r  r   r&  r:   r;   r]   r^   s   @@r#   r`   r`   l   s      ' '  =  =D 
- -^ ,) ), $$ $.
6 
6     D 2  2D2 2<& &  r&   r`   c                T    V ^8  d   QhR\         \        ,          R\        R,          /# )rC   workersre   N)r   r`   rG   )rH   s   "r#   rI   rI     s#     = =l+ =d
 =r&   c                 H   . pV  Fq  pVP                   pV\        8X  d   K  \        P                  ! 4       VP                  ,
          pV\
        8  g   KO  V R \        V4       R2pVP                  V4       Ks  	  V'       g   R# R\        V4       RRP                  V4       2# )r  r  Nz	running (r  r  )
rS   ro   rp   rq   rr   r   r   r}   r
  r   )r)  ry   workerrS   r   texts   &     r#   get_runningr-    s    G$$	$^^ 1 11""[?2#6"7q9DNN4   s7|nC		'(:';<<r&   c                      a  ] tR tRt o V 3R lR ltV 3R lR ltV 3R lR ltV 3R lR	 ltV 3R
 lR ltV 3R lR lt	V 3R lR lt
RtV tR# )rd   i  c          
      6   < V ^8  d   QhRS[ RS[RS[RS[RR/# )rC   num_workersri   loggerresultsre   N)rf   r   r	   r   )rH   r=   s   "r#   rI   RunWorkers.__annotate__  s3     ; ;C ;8 ;;*5;:>;r&   c                (   Wn         W n        VP                  V n        VP                  V n        W@n        ^ V n        \        P                  ! 4       V n        VP                  4       p\        V4      V n        VP                  V n        V P                  e5   \        V P                  R,          V P                  R,           4      V n        MRV n        . V n        V P                  P!                  4       pVe   \        V P                   V4      V n         R# R# )r   Ng      ?i,  )r0  ri   rn   display_progressr2  live_worker_countqueueQueuerk   
iter_testsr   rj   rm   minrl   r)  get_jobs)r"   r0  ri   r1  r2  r!   jobss   &&&&&  r#   r$   RunWorkers.__init__  s    & :: & 7 7$+!"16((*
+J7''<<# 14DLL34FW]H]0^D"&D+-}}%%'  #4#3#3T:D r&   c                   < V ^8  d   QhRR/# r   r(   )rH   r=   s   "r#   rI   r3    s     ( (t (r&   c                   \        ^V P                  ^,           4       Uu. uF  p\        W4      NK  	  upV n        V P                  P                  4       pVe   \        VR4      pMRp\        V P                  4      p\        VRR4      pRV RV RV 2pV P                  '       dG   V P                  e9   VR	\        V P                  4      : R
\        V P                  4      : R2,          pV P                  V4       V P                   F,  pVP                  4        V ;P                  ^,          un        K.  	  R# u upi )   Nr   r   process	processeszRun z in parallel using z worker z (timeout: z, worker timeout: r  )ranger0  r`   r)  ri   r;  r   r
  r   rm   rl   r   rn   startr6  )r"   indexr<  r   nworkersrB  r  r+  s   &       r#   start_workersRunWorkers.start_workers  s   %*1d.>.>.B%CE%CE %U1%CE}}%%'$'EEt||$8Y<	eW/8I;0<<<D//;&t||4&t':':;= >C 	llFLLN""a'" #!Es   D=c                   < V ^8  d   QhRR/# r   r(   )rH   r=   s   "r#   rI   r3  	  s     , ,d ,r&   c                    \         P                  ! 4       pV P                   F  pVP                  4        K  	  V P                   F  pVP	                  V4       K  	  R # r   )rp   rq   r)  r3   r&  )r"   rr   r+  s   &  r#   stop_workersRunWorkers.stop_workers	  sA    ^^%
llFKKM #llF
+ #r&   c                .   < V ^8  d   QhRS[ R,          /# r   )QueueOutput)rH   r=   s   "r#   rI   r3    s      [4/ r&   c                   V P                   P                  pV P                  R JpV P                  ^ 8  dy   V'       d   \        P
                  ! \        RR7        V P                  P                  \        R7      p\        V\        4      '       d   V ;P                  ^,          un        K  V# R #   \        P                   d     Mi ; iT'       d   K  \        T P                  4      pT'       g   K  T P!                  T4       K  )NT)exitr   )ri   pgorm   r6  faulthandlerdump_traceback_laterMAIN_PROCESS_TIMEOUTrk   getPROGRESS_UPDATE
isinstancerM   r7  Emptyr-  r)  rn   )r"   rQ  use_faulthandlerrD   ry   s   &    r#   _get_resultRunWorkers._get_result  s    mm LL4 $$q(112F7;=Af&899**a/*  ;;  3%dll37HHW%s   AB0 ,B0 0CCc                $   < V ^8  d   QhRS[ RR/# )rC   rY   re   N)rA   )rH   r=   s   "r#   rI   r3  ,  s     5 5(: 5t 5r&   c                   VP                   pV P                  P                  p\        V4      pVP                  '       d   VR VP                  ,          ,          pMRVP
                  '       dA   VP
                  \        8  d,   V'       g$   VR \        VP
                  4      ,          ,          pV'       g*   \        V P                  4      pV'       d   VRV 2,          pV P                  V P                  V4       R# )z (%s)z -- N)rD   ri   rQ  rG   rF   r  r   r   r-  r)  r5  
test_index)r"   rY   rD   rQ  r,  ry   s   &&    r#   display_resultRunWorkers.display_result,  s    !!mm6{Gi////Dooo&//5F"FsGofoo>>>D!$,,/G$wi((doot4r&   c                &   < V ^8  d   QhRS[ RS[/# )rC   itemre   )rN  r
   )rH   r=   s   "r#   rI   r3  <  s      K J r&   c                h   V^ ,          '       dZ   V^,          p\        RV 24       \        R\        P                  R7      pV P                  P                  W0P                  4       V# V ;P                  ^,          un        V^,          pVP                  pV P                  P                  W0P                  4       V P                  V4       V P                  P                  '       g   RpMVP                  \        P                  8g  pV'       d"   VP                  pV'       d   \        VRR7       V# )z&Returns True if test runner must stop.zregrtest worker thread failed: z<regrtest worker>rX   T)r   )r   r
   r   r   r2  accumulate_resultri   r^  rD   r_  r   rU   PASSEDrE   r   )r"   rb  r  rD   rY   show_stdoutrT   s   &&     r#   _process_resultRunWorkers._process_result<  s    77aJ;J<HI 35;K;KLFLL**6==AM1G	!!&&v}}=I& }}...K "<<5<<7K,,FfD)r&   c                   < V ^8  d   QhRR/# r   r(   )rH   r=   s   "r#   rI   r3  Y  s        T  r&   c                   V P                   P                  pV P                   P                  pV P                  4        ^ V n          V P                  4       pVf   M+V P                  V4      pVP                  W4      '       g   K@   V P                  e   \        P                  ! 4        V P                  P!                  4        V P#                  4        R#   \         d    \        4        RT P                  n         Lwi ; i  T P                  e   \        P                  ! 4        T P                  P!                  4        T P#                  4        i ; i)r   TN)ri   r  r  rG  r^  rZ  rg  r  KeyboardInterruptr   r2  interruptedrm   rR  cancel_dump_traceback_laterrj   r3   rK  )r"   r  r  rb  rD   s   &    r#   r  RunWorkers.runY  s   MM++	==99	 '')<--d3##I@@
 ||'88: LL ! 	,G'+DLL$	, ||'88: LLs7   C D %C D &C>;D =C>>D AE)r5  r6  rn   r0  rk   rj   r2  ri   r^  rm   rl   r)  N)r5   r6   r7   r8   r$   rG  rK  rZ  r_  rg  r  r:   r;   r<   s   @r#   rd   rd     sK     ; ;8( (*, , 85 5  :   r&   rd   g     r@)Er   dataclassesrR  os.pathr   r7  r   r   r   r   r   rp   r  typingr   r   r   r   r   test.supportr   r   r1  r	   rD   r
   r   r2  r   ri   r   r   r   r   singler   utilsr   r   r   r   r   r   r+  r   r   r   r   rV  rT  r   r%  r   	dataclassrA   rM   rG   ExcStrr   rN  QueueContentr   rO   rQ   ro   Threadr`   r-  rd   r(   r&   r#   <module>ry     sS          
     ' '  .  %   F F %3 3 =
 ++ ++
   . ..    # #, T$/  04 4 
GEN$667%v@U:VV//	 	)  Y9## Yx
=\  \ r&   