+
    öÙ†jØY  ã                   ó²  € ^ 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   € Ü—N’NÓ$ˆŒ	Ø$Žó    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   € Ø�Y�Y‹YØ�‰Ò&Ü#Ð#Ü˜Ÿ™Ó(÷ �Y�Y‹Yús   •)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   € Ø�Y�Y‹YØ"ˆDŒO÷ �Y�YŠYús   •'§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   ø‡ ‚ áÑñ ñ ˜•:Ñ$ñ	 ñ
 �4�ZÑò 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ˆÜ+¨F¸GÓ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   ø€ Ü‰ÑÔØ"ŒØŸ™ˆŒØ—~‘~ˆŒØ—m‘mˆŒØ×,Ñ,ˆŒØ—:‘:ˆŒÜ%ˆŒÜŸ.š.Ó*ˆŒØ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ˆØ�=‰=�?Š?Ø�K‰K˜	Õ"à�K‰K˜	Ô"Ø�~‰~ˆßØ�K‰K˜% ˜v˜Ô'Ø—‘ˆØÒÜ—’Ó! D§O¡OÕ3ˆBØ�K‰K˜4 §	¡	˜{Ð+Ø ¤°Ó!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Ü—)’)˜EŸI™IÓ&ˆCØÑ+ˆJçØ�V˜>Ð*‰Dà�V˜8Ð$ˆDä��d�Vˆn¤3§:¡:°TÕ:ð	=ßÜ—	’	˜%Ÿ)™)¤V§^¡^Ö4à—
‘
–øÜ!ô 	ò Üô 	=Ü˜O¨D¨6°°C±7Ð;×<Ò<ûð	=ú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  € ä% h¸7ÓCˆØŒØˆŒð'	Ø�}�}ˆ}ð —
‘
”Ü Ð ðàŸ*™*¨T¯\©\˜*Ó:�ØÒ*Ð*Ð*Øð4 × Ñ Ô"ØˆD�Køô5 ×,Ñ,ô 
Ø—=—=�=ô %Ð$ð —
‘
”ð ’ô ô Ø—=—=�=ô %Ð$Øðúð ð
 × Ñ Ô"ØˆDŽKøð	Ø�J‰JŒLØûà× Ñ Ô"ØˆD�KúsG   ›(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ä—z‘z×*Ñ*ˆHô ×,Ò,¨TØ6>Ø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×&:Ñ&:ð )¹uÁXÉvÐX\Í}Ð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°$ÀÔHˆLØ×Ñ Ô-à"×)Ñ)Ó+ˆGß‹zô $*×#7Ò#7¸Ó#@�Ü$ [Ü%1×%@Ñ%@óB�	ð Ð(Ð(ô % W¬l×.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¸	ÓB‰KàˆKà!#ˆßÙ>IÓ$J¹k°d¨D£\¹kÑ$JˆF�=Ñ!Ø�=‰=×*×*Ð*Ø $ˆF�9ÑØ*/ˆ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   ø€ ÷ $ñ $©^ð $Ù!$ð$Ù).©s°T­z¹4Á½=Ð/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Ü—g‘g—o‘o gÓ.ˆGð*Ø×+Ñ+¨OØ,5ó@�ô ŸJšJ wÓ/�	Ü× Ò  Ô)ð
 Ð#Ð#ð ×'Ñ'¨ÓCˆGØˆIàÐ#Ð#øô ŸJšJ wÓ/�	Ü× Ò  Õ)ú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ñ 
6¡vð 
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ô ˜dŸn™nØ <¸S¸EÐBØ%)Ü$)×$4Ñ$4ô6ð 6ûð	6ús   “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ð   ¹6ÀD½=ð   Ùð  Ù"'©
±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	W“3#   + '       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÷ Ü˜dŸn™n¨l¸FÜ$)×$4Ñ$4ô6ð 6ð	6Ü×)Ò)¨+Ó6ˆFð ÐÐ÷- 5×4ûäô 	6ð =¸S¸EÐBˆGÜ˜dŸn™n¨gÜ$)×$4Ñ$4ô6ð 6ûð		6ûô ô 	6ð >¸c¸UÐCˆGÜ˜dŸn™n¨gÜ$)×$4Ñ$4ô6ð 6ûð		6úsY   ‚%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  r¹R 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Ó3ˆKØ&*×&;Ñ&;¸EÓ&BÑ#ˆIØ"×9Ñ9¸)ÓOˆOð "&×!3Ñ!3°OØ4?×4FÑ4FÓ4Hó"JÑˆGð ×%Ñ% kÓ2ˆFàŠÜ! $§.¡.¸Ø*.Ü(-¯©ô7ð 7ð ˜!Œ|Ü×.Ò.¨wÓ7�ßØ!( 	¨¨D¨6°Ð3�GÜ! $§.¡.°J¸w¸iÐ2HÈ&Ü(-×(;Ñ(;ô=ð =ð "Ÿ^™^¨IÀVÓL‰NˆF÷- $÷0 ð!Ø!* ð ,Ü˜9“~Ð& c¨$¯)©)´F¸9Ó4EÓ*FÐ)GðIˆCð �c�MˆFØ×"Ñ"Ô$ä! &¨&Ó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ñ 2�Tñ 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?LÕR p?ii ; i  \        T n
        i ; i  \(         d     Lx\*         d4    T P"                  P%                  R\,        P.                  ! 4       34        L´i ; 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  € Ø—M‘M×+Ñ+ˆ	ØŸ=™=×9Ñ9Ðð	2Ø—m—m�mðÜ $ T§\¡\Ó 2�Iô #'§.¢.Ó"2�”Ø!*”ð2Ø $§¡¨iÓ 8�Iô &2�D”NÜ,0¯NªNÓ,<¸t¿¹Õ,N�	× Ñ Ô)Ø—‘—‘ ¨	Ð 2Ô3à×#Ñ#×-Ñ-¨i×JÔJØð% $ð0 �K‰K�O‰OÔ.Ó0Ö1øô+ %ô Úðûô #ô .Ø #§¡•Iûð.ûô &2�D•Nûô ô 	ÙÜô 	<Ø�K‰K�O‰O˜T¤9×#7Ò#7Ó#9Ð:Ö;ð	<ûð �K‰K�O‰OÔ.Ó0Õ1úsœ   ®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ð	&Ø�J‰JÔ-Ö.øÜ×)Ñ)¬7Ð3ô 	&ÜÐ/°¨vð 6&Ü&5Ô6LÓ&MÐ%NÈcØ ™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   € ð à�I‰I�cŒNØ—=‘=—?’?ÙÜ—’Ó! JÕ.ˆBØ�H‰H�| D 6¨´oÀbÓ6IÐ5JÐKÔLØÔ'Ö'Ü °¨v°T¼/È"Ó:MÐ9NÐ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ð  2÷D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Ð"7°qÐ9ˆDØ�N‰N˜4Ö ñ ÷ ÙØ”s˜7“|�n C¨¯	©	°'Ó(:Ð';Ð<Ð<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ˆŒØ×'Ñ'ˆŒØ�<‰<Ò#ô 14°D·L±LÀ3Õ4FÈÏÉÐW]ÕH]Ó0^ˆDÕà"&ˆDÔØ+-ˆŒà�}‰}×%Ñ%Ó'ˆØÒô  # 4×#3Ñ#3°TÓ:ˆ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  € ä%*¨1¨d×.>Ñ.>ÀÕ.BÔ%CóEÙ%C˜Eô % UÖ1Ù%CñEˆŒà�}‰}×%Ñ%Ó'ˆØÒÜ˜$ Ó'‰EàˆEÜ�t—|‘|Ó$ˆÜ˜8 Y°Ó<ˆ	Ø�e�WÐ/Ø�˜8 I ;ð0ˆà�<�<ˆ<˜D×/Ñ/Ò;ÙÜ& t§|¡|Ö4Ü& t×':Ñ':Ö;ð=õ >ˆCð 	�‰�ŒØ—l”lˆFØ�L‰LŒNØ×"Ò" 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   € Ü—^’^Ó%ˆ
Ø—l”lˆFØ�K‰KŽMñ #à—l”lˆFØ×Ñ 
Ö+ó #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Ê   € Ø�m‰m×ÑˆØ ŸL™L°Ð4Ðð ×$Ñ$ qÔ(ßÜ×1Ò1Ô2FØ7;õ=ðØŸ™Ÿ™´˜ÓA�Ü˜fÔ&8×9Ò9Ø×*Ò*¨aÕ/Õ*ÙØ�ñ øô —;‘;ô Ùðú÷ ‘3ä% d§l¡lÓ3�ß‘7Ø—H‘H˜WÖ%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Ñ(:ð 5¸tñ 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®   € Ø×!Ñ!ˆØ�m‰m×Ñˆä�6‹{ˆØ××Ðà�G˜i×/Ñ/Õ/Õ/‰DØ�o�oˆo &§/¡/Ô5FÔ"FÏsØ�Gœo¨f¯o©oÓ>Õ>Õ>ˆDßÜ! $§,¡,Ó/ˆGßØ˜$˜w˜iÐ(Õ(�Ø×Ñ˜dŸo™o¨tÖ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ã   € à��7Œ7à˜a�ˆJÜÐ;¸J¸<ÐHÔIÜÐ 3¼5×;KÑ;KÔLˆFØ�L‰L×*Ñ*¨6·=±=ÔAØˆMà�Š˜1Õ�Ø˜•Gˆ	Ø×!Ñ!ˆØ�‰×&Ñ& v¯}©}Ô=Ø×Ñ˜IÔ&ð �}‰}×.×.Ð.Ø‰Kð "Ÿ<™<¬5¯<©<Ñ7ˆKßØ×,Ñ,ˆFßÜ�f DÕ)àˆ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  € Ø—M‘M×+Ñ+ˆ	ØŸ=™=×9Ñ9Ðà×ÑÔàˆŒð	 ØØ×'Ñ'Ó)�Ø’<Øà×-Ñ-¨dÓ3�Ø×#Ñ# I×@Ô@Øð
 �|‰|Ò'Ü×8Ò8Ô:ð �L‰L×ÑÔØ×ÑÖøô !ô 	,ÜŒGØ'+ˆD�L‰LÖ$ð	,ûð �|‰|Ò'Ü×8Ò8Ô:ð �L‰L×ÑÔØ×ÑÕú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ð 
€Ø�G˜E•NÐ$6Ð6Õ7¸%ÀÈÅÈvÐ@UÕ:VÕV€ØÐ/Õ/€ô	�ô 	ô�)ô ð €ôY�9×#Ñ#ô Yõx
=÷\ ó \ r&   