ó
    F\hmk  ã                   óz  • S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKJ	r	  S SK
JrJrJrJr  SSKJrJr  SSKJrJrJr  SSKJr  SSKJr  SS	KJrJr  SS
KJrJr  SSKJ r J!r!  SSK"J#r#J$r$  SSK%J&r&J'r'  SSK(J)r)  SSK*J+r+J,r,J-r-J.r.J/r/J0r0J1r1J2r2J3r3J4r4J5r5J6r6J7r7J8r8J9r9J:r:J;r;J<r<J=r=   " S S5      r>SS\	4S jjr?g)é    N)ÚNoReturn)Ú	os_helperÚ
MS_WINDOWSÚflush_std_streamsÚsuppress_immortalizationé   )Ú_parse_argsÚ	Namespace)Ú	findtestsÚsplit_test_packagesÚ
list_cases)ÚLogger)Úsetup_pgo_tests)ÚStateÚ
TestResult)ÚTestResultsÚEXITCODE_INTERRUPTED)ÚRunTestsÚHuntRefleak)Úsetup_processÚsetup_test_dir)Úrun_single_testÚPROGRESS_MIN_TIME)Úsetup_tsan_tests)ÚStrPathÚStrJSONÚTestNameÚTestListÚ	TestTupleÚ
TestFilterÚstrip_py_suffixÚcountÚformat_durationÚ	printlistÚget_temp_dirÚget_work_dirÚexit_timeoutÚdisplay_headerÚcleanup_temp_dirÚprint_warningÚis_cross_compiledÚget_host_runnerÚEXIT_TIMEOUTc                   ó.  • \ rS rSrSrS+S\S\4S jjrS,S\SS4S	 jjr	S-S
\
S-  S\\\
S-  4   4S jjr\S
\SS4S j5       rS\S\4S jrS\SS4S jrS\S\S\S\4S jrS\SS4S jrS\SS4S jrS\S\S\R0                  S-  S\4S jrS\SS4S jrS\4S jrS\S\SS4S jrS\R>                  S-  SS4S jr S.S jr!S
\S\4S jr"S \S
\
S-  S\4S! jr#S \S
\
S-  S\4S" jr$S# r%S$ r&S% r'S.S& jr(S' r)\*S\+4S( j5       r,S-S
\
S-  S\-4S) jjr.S*r/g)/ÚRegrtesté!   a!  Execute a test suite.

This also parses command-line options and modifies its behavior
accordingly.

tests -- a list of strings containing test names (optional)
testdir -- the directory in which to look for tests (optional)

Users other than the Python test suite will certainly want to
specify testdir; if it's omitted, the directory containing the
Python test suite is searched for.

If the tests argument is omitted, the tests listed on the
command-line will be used.  If that's empty, too, then all *.py
files beginning with test_ will be used.

The other default arguments (verbose, quiet, exclude,
single, randomize, use_resources, trace, coverdir,
print_slow, and random_seed) allow programmers calling main()
directly to set the values that would normally be set by flags
on the command line.
ÚnsÚ_add_python_optsc                 ó&	  • [        UR                  5      U l        UR                  U l        UR                  U l        UR                  U l        UR
                  U l        [        5       U l        S U l        [        U R                  U R                  U R                  5      U l
        UR                  U l        UR                  U l        UR                  U l        UR"                  U l        UR&                  U l        UR*                  U l        UR.                  U l        UR2                  U l        UR6                  =(       d    UR8                  U l        U=(       a    UR<                  U l        UR@                  U l         URB                  U l!        URD                  U l"        URF                  U l$        URJ                  U l&        URN                  U l'        U RN                  (       d  URP                  c  SnOURP                  S::  a  SnOURP                  nX0l)        URT                  U l*        URV                  U l,        URZ                  U l-        UR\                  U l.        UR^                  U l/        UR`                  U l1        URd                  U l2        URf                  (       a@  URf                  u  pEn[h        Rj                  Rm                  U5      n[o        XEU5      U l8        OS U l8        URr                  U l:        URv                  U l<        URz                  U l>        UR~                  U l@        [ƒ        UR„                  5      U lB        UR†                  (       a  [ƒ        UR†                  5      U lD        OS U lD        URŠ                  U lF        URŽ                  U lH        UR’                  U lJ        UR–                  U lK        S[h        R˜                  ;   a8  [h        R˜                  S   (       a   SU lK        [h        R˜                  S   U lM        O:URš                  c  [œ        Rž                  " S5      U lM        OURš                  U lM        S U lP        UR¢                  U lR        [¦        R¨                  " 5       U lU        UR¬                  U lW        S U lX        S U lY        g )Nr   éÿÿÿÿÚSOURCE_DATE_EPOCHFé    )ZÚintÚverboseÚquietÚpgoÚpgo_extendedÚtsanr   ÚresultsÚfirst_stater   ÚloggerÚheaderÚwant_headerÚ
list_testsÚwant_list_testsr   Úwant_list_casesÚwaitÚ	want_waitÚcleanupÚwant_cleanupÚrerunÚ
want_rerunÚrunleaksÚwant_run_leaksÚbisectÚwant_bisectÚfast_ciÚslow_ciÚci_moder2   Úwant_add_python_optsÚmatch_testsÚexcludeÚfromfileÚstartÚstarting_testÚargsÚcmdline_argsÚsingle_processÚuse_mpÚnum_workersÚworker_jsonÚfailfastÚ	fail_fastÚfail_env_changedÚ
fail_rerunÚforeverÚverbose3Úoutput_on_failureÚtimeoutÚ
huntrleaksÚosÚpathÚabspathr   Úhunt_refleakÚtestdirÚtest_dirÚxmlpathÚjunit_filenameÚmemlimitÚmemory_limitÚ	thresholdÚgc_thresholdÚtupleÚuse_resourcesÚpythonÚ
python_cmdÚtraceÚcoverageÚcoverdirÚcoverage_dirÚtempdirÚ_tmp_dirÚ	randomizeÚenvironÚrandom_seedÚrandomÚgetrandbitsÚfirst_runtestsÚ
print_slowÚprint_slowestÚtimeÚperf_counterÚ
start_timeÚsingleÚsingle_test_runÚnext_single_testÚnext_single_filename)Úselfr1   r2   r\   ÚwarmupsÚrunsÚfilenames          Ú,/usr/lib/python3.13/test/libregrtest/main.pyÚ__init__ÚRegrtest.__init__8   sE  € ä §
¡
›OˆŒØŸ8™8ˆŒ
ØŸ™ˆŒØ"$§/¡/ˆÔØŸ'™'ˆŒ	ô %0£MˆŒØ'+ˆÔô ˜TŸ\™\¨4¯:©:°t·x±xÓ@ˆŒð "$§¡ˆÔØ%'§]¡]ˆÔØ%'§]¡]ˆÔØ!Ÿw™wˆŒØ"$§*¡*ˆÔØ "§¡ˆŒØ$&§K¡KˆÔØ!#§¡ˆÔà Ÿj™j×6¨B¯J©JˆŒØ+;÷ ,CØ/1×/BÑ/Bð 	Ô!ð (*§~¡~ˆÔØŸZ™ZˆŒØ(*¯©ˆŒØ.0¯h©hˆÔØ&(§g¡gˆÔð %'×$5Ñ$5ˆÔØ×× "§)¡)Ñ"3Ø‰KØ�Y‰Y˜!‹^Ø‰KàŸ)™)ˆKØ +ÔØ+-¯>©>ˆÔð  "Ÿ{™{ˆŒØ&(×&9Ñ&9ˆÔØ "§¡ˆŒØŸZ™ZˆŒØ')§{¡{ˆÔØ%'§Z¡ZˆŒØ�=�=Ø&(§m¡mÑ#ˆG˜8Ü—w‘w—‘ xÓ0ˆHÜ4?ÀÈxÓ4XˆDÕà $ˆDÔØ(*¯
©
ˆŒØ.0¯j©jˆÔØ(*¯©ˆÔØ(*¯©ˆÔÜ.3°B×4DÑ4DÓ.EˆÔØ�9�9Ü6;¸B¿I¹IÓ6FˆD�Oà"ˆDŒOØ Ÿh™hˆŒØ,.¯K©KˆÔØ(*¯
©
ˆŒð  "Ÿ|™|ˆŒØ¤2§:¡:Ó-ä—
‘
Ð.×/à"ˆDŒNô +-¯*©*Ð5HÑ*IˆDÕØ�^‰^Ñ#Ü%×1Ò1°"Ó5ˆDÕà!Ÿ~™~ˆDÔð 04ˆÔð $&§=¡=ˆÔô ×+Ò+Ó-ˆŒð &(§Y¡YˆÔØ15ˆÔØ48ˆÕ!ó    ÚlineÚreturnNc                 ó:   • U R                   R                  U5        g ©N)r?   Úlog)rŒ   r”   s     r�   r˜   ÚRegrtest.logŸ   s   € Ø�‰�‰˜Õr“   Útestsc                 ó*  • Uc  / nU R                   (       ap  [        R                  R                  U R                  S5      U l         [        U R
                  S5       nUR                  5       R                  5       nU/nS S S 5        U R                  (       aÅ  / n[        R                  " S5      n[        [        R                  R                  [        R                  U R                  5      5       nU H]  nUR                  SS5      S   nUR                  5       nUR!                  U5      nUc  M>  UR#                  UR%                  5       5        M_     S S S 5        ['        U5        U R(                  (       a   [+        U R,                  U R.                  5        U R0                  (       a  [3        U R,                  5        [5        5       nU R6                  (       a+  U R,                   H  nUR9                  U5        M     / U l        [;        U R<                  US9n	U R                  (       d+  U=(       d    U R,                  n
U
(       a  [?        U
5      n
OU	n
OUn
U R                   (       a&  U
S S n
 U	RA                  U
S   5      nX›S-      U l!        U RF                  (       a   U
S U
RA                  U RF                  5      2	 [P        RR                  " U RT                  5        U RV                  (       a  [P        RX                  " U
5        [[        U
5      U4$ ! , (       d  f       GNš= f! [         a     GNªf = f! , (       d  f       GNç= f! [D         a     NÅf = f! [H         a1    [K        SU RF                   35        [L        RN                  " S5         NÓf = f)	NÚ
pynexttestÚrz\btest_[a-zA-Z0-9_]+\bÚ#r   r   )rk   rT   zCannot find starting test: ).r‰   rg   rh   ÚjoinÚtmp_dirr‹   ÚopenÚreadÚstripÚOSErrorrU   ÚreÚcompiler   ÚSAVEDCWDÚsplitÚsearchÚappendÚgroupr!   r:   r   rY   r;   r<   r   ÚsetrT   Úaddr   rl   r   ÚindexrŠ   Ú
IndexErrorrW   Ú
ValueErrorÚprintÚsysÚexitr€   Úseedr   r}   Úshufflers   )rŒ   rš   ÚfpÚ	next_testÚregexr”   ÚmatchÚexclude_testsÚargÚalltestsÚselectedÚposs               r�   Ú
find_testsÚRegrtest.find_tests¢   sº  € Ø‰=ØˆEØ××Ü(*¯©¯©°T·\±\À<Ó(PˆDÔ%ðÜ˜$×3Ñ3°SÔ9¸RØ "§¡£	§¡Ó 1�IØ&˜K�E÷ :ð �=�=ØˆEô —J’JÐ8Ó9ˆEÜ”b—g‘g—l‘l¤9×#5Ñ#5°t·}±}ÓEÔFÈ"Û�DØŸ:™: c¨1Ó-¨aÑ0�DØŸ:™:›<�DØ!ŸL™L¨Ó.�EØÓ(ØŸ™ U§[¡[£]Ö3ñ ÷ Gô 	˜Ôà�8�8ä˜D×-Ñ-¨t×/@Ñ/@ÔAà�9�9Ü˜T×.Ñ.Ô/ä›ˆØ�<�<Ø×(Ô(�Ø×!Ñ! #Ö&ñ )à "ˆDÔä T§]¡]Ø%2ñ4ˆð �}�}Ø×1 × 1Ñ 1ˆHÞÜ.¨xÓ8‘à#‘àˆHà××Ø  �|ˆHðØ—n‘n X¨a¡[Ó1�Ø(0°q±Ñ(9�Ô%ð
 ××ðØÐ@˜hŸn™n¨T×-?Ñ-?Ó@Ð@ÐAô
 	�Š�D×$Ñ$Ô%Ø�>�>Ü�NŠN˜8Ô$ä�h“ Ð'Ð'÷E :Ö9ûô ó Úðú÷ GÖFûôP ó Ùðûô ó ÜÐ3°D×4FÑ4FÐ3GÐHÔIÜ—’˜–ðúsf   ÁL$ Á"LÁ?L$ Ã1=L5Ä2#L5É. M Ê M Ì
L!ÌL$ Ì!L$ Ì$
L2Ì1L2Ì5
MÍ
MÍMÍ8NÎNc                 ó,   • U  H  n[        U5        M     g r—   )r±   )rš   Únames     r�   rB   ÚRegrtest.list_testsì   s   € ãˆDÜ�$ŽKò r“   Úruntestsc           
      óØ  • U R                   S:X  a  U R                  (       d  SU l         U R                  R                  5       u  p#UR	                  USSSSUSS9nU R
                  R                  U5        S[        U5       S3nU R                  (       d3  U S3nU R                  U5        U R                  XR                   5        U$ U R                  U5        U R                  U5        U$ )	Nr   r   TF)rš   rI   r8   rb   r_   Úmatch_tests_dictrd   zRe-running z failed tests in verbose modez in subprocesses)r\   rZ   r=   Úprepare_rerunÚcopyr?   Ú	set_testsÚlenr˜   Ú_run_tests_mpÚrun_tests_sequentially)rŒ   rÄ   rš   rÆ   Úmsgs        r�   Ú_rerun_failed_testsÚRegrtest._rerun_failed_testsñ   sä   € à×Ñ˜qÓ ¨×)<×)<ð
  !ˆDÔà"&§,¡,×"<Ñ"<Ó">Ñˆð —=‘=ØØØØØØ-Ø#ð !ð %ˆð 	�‰×Ñ˜hÔ'àœC ›J˜<Ð'DÐEˆØ×"×"Ø�EÐ)Ð*ˆCØ�H‰H�SŒMØ×Ñ˜x×)9Ñ)9Ô:ð ˆð �H‰H�SŒMØ×'Ñ'¨Ô1Øˆr“   c                 ó¦  • U R                   (       a  U R                  S5        g U R                  5       U l        [	        5         U R                  U5      nU R                  R                  (       aR  [	        [        [        U R                  R                  5      S5      S5        [        U R                  R                  5        U R                  U5        g )NzJRe-running failed tests is not supported with --python host runner option.Útestzfailed again:)rv   r˜   Ú	get_stater>   r±   rÎ   r=   Úbadr"   rÊ   r$   Údisplay_result)rŒ   rÄ   Úrerun_runtestss      r�   Úrerun_failed_testsÚRegrtest.rerun_failed_tests  s�   € Ø�?�?à�H‰Hð&ôð àŸ>™>Ó+ˆÔäŒØ×1Ñ1°(Ó;ˆà�<‰<××Ü”%œ˜DŸL™L×,Ñ,Ó-¨vÓ6¸ÔHÜ�d—l‘l×&Ñ&Ô'à×Ñ˜NÕ+r“   rÑ   Úprogressc                 ór  • [        5         SU 3nU(       a  U SU S3n[        U5        [        S[        U5      -  5        [        5         UR                  5       nUR                  / SQ5        UR                  UR	                  5       5        UR                  U5        [        S[        R                  " U5      SS9  [        5         S	S K	nUR                  XQR                  S
9nUR                  nU SU 3n[        U5        [        S[        U5      -  5        [        SS9  U(       a  [        SU 35        gg)NzBisect z (Ú)rž   )ú-uz-mztest.bisect_cmdz
--max-iterÚ25z-vÚ+T©Úflushr   ©re   z: exit code zBisect failed with exit code F)r±   rÊ   Úcreate_python_cmdÚextendÚbisect_cmd_argsrª   ÚshlexrŸ   r   Ú
subprocessÚrunre   Ú
returncode)	rŒ   rÄ   rÑ   rØ   ÚtitleÚcmdrå   ÚprocÚexitcodes	            r�   Ú_run_bisectÚRegrtest._run_bisect%  s  € ÜŒØ˜$˜Ð ˆÞØ�g˜R ˜z¨Ð+ˆEÜˆeŒÜˆc”C˜“JÑÔÜŒà×(Ñ(Ó*ˆØ�
‰
ò 
ô 	ð 	�
‰
�8×+Ñ+Ó-Ô.Ø�
‰
�4ÔÜˆc”5—:’:˜c“?¨$Ò/äÔãØ�~‰~˜c×+;Ñ+;ˆ~Ð<ˆØ—?‘?ˆà�'˜ h ZÐ0ˆÜˆeŒÜˆc”C˜“JÑÔÜ�DÒæÜÐ1°(°Ð<Ô=Øàr“   c                 óÚ   • U R                   R                  SS9u  p#[        US5       H@  u  pE[        U5      S:”  a  U S[        U5       3nOSnU R	                  XU5      (       a  M@    g    g )NF)Úclearr   Ú/Ú )r=   rÇ   Ú	enumeraterÊ   rì   )rŒ   rÄ   rš   Ú_r®   rÂ   rØ   s          r�   Ú
run_bisectÚRegrtest.run_bisectK  sh   € Ø—<‘<×-Ñ-°EÐ-Ð:‰ˆä$ U¨AÖ.‰KˆEÜ�5‹z˜A‹~Ø#˜W A¤c¨%£j \Ð2‘à�Ø×#Ñ# H°H×=Ó=Ùò /r“   c                 óð   • UR                   (       a  g U R                  5       n[        5         [        SU S35        U R                  R	                  UR
                  U R                  U R                  5        g )Nz== Tests result: z ==)r:   rÒ   r±   r=   rÔ   rš   r9   r„   )rŒ   rÄ   Ústates      r�   rÔ   ÚRegrtest.display_resultV  sW   € à�<�<Øà—‘Ó ˆÜŒÜÐ! % ¨Ð,Ô-à�‰×#Ñ# H§N¡NØ$(§J¡J°×0BÑ0Bõ	Dr“   Ú	test_nameÚtracerc                 óô   • UbN  Sn[        [        5       5      nUR                  U[        5       US9  US   n[	        UR
                  5      Ul        O[        X5      nU R                  R                  Xb5        U$ )Nz-result = run_single_test(test_name, runtests))ÚglobalsÚlocalsÚresult)
Údictrý   Úrunctxrü   ÚlistÚcountsÚcovered_linesr   r=   Úaccumulate_result)rŒ   rù   rÄ   rú   ré   Ú	namespacerþ   s          r�   Úrun_testÚRegrtest.run_testb  sm   € ð Ñð CˆCÜœV›X›ˆIØ�M‰M˜#¤w£y¸ˆMÑCØ˜xÑ(ˆFÜ#'¨¯©Ó#6ˆFÕ ä$ YÓ9ˆFà�‰×&Ñ& vÔ8àˆr“   c                 óœ  • U R                   (       a  [        R                  " SSS9nOS n[        [        R
                  5      nUR                  5       nUb  [        US5      nOSnSU S3nUR                  (       a  US[        UR                  5      -  -  nU R                  U5        UR                  5       n[        US	5       GHh  u  p‰[        R                  " 5       n
U R                  R!                  X‰5        U R#                  X‘U5      n[        R
                   Vs/ s H$  nXÃ;  d  M
  UR%                  S
5      (       d  M"  UPM&     nnU HU  n[        R
                  R'                  US 5        UR)                  S5      u  pïn [+        [        R
                  U   U5        MW     [1        U5      n[        R                  " 5       U
-
  nU[2        :¼  a  U S[        U5       3nU R                  R!                  UU5        UR5                  U R6                  U R8                  5      (       d  GMi    g    g s  snf ! [,        [.        4 a     Mý  f = f)NFT)rw   r"   rÑ   rš   zRun z! sequentially in a single processz (timeout: %s)r   )ztest.Útest_Ú.z in )rx   rw   ÚTracer¬   r²   ÚmodulesÚget_jobsr"   re   r#   r˜   Ú
iter_testsrò   r…   r†   r?   Údisplay_progressr  Ú
startswithÚpopÚ
rpartitionÚdelattrÚKeyErrorÚAttributeErrorÚstrr   Ú	must_stopr_   r`   )rŒ   rÄ   rú   Úsave_modulesÚjobsrš   rÍ   Ú
tests_iterÚ
test_indexrù   r‡   rþ   ÚmoduleÚnew_modulesÚparentró   rÂ   ÚtextÚ	test_times                      r�   rÌ   ÚRegrtest.run_tests_sequentiallyt  sø  € Ø�=�=Ü—[’[ u°DÑ9‰FàˆFäœ3Ÿ;™;Ó'ˆà× Ñ Ó"ˆØÑÜ˜$ Ó'‰EàˆEØ�U�GÐ<Ð=ˆØ××ØÐ#¤o°h×6FÑ6FÓ&GÑGÑGˆCØ�‰�Œà×(Ñ(Ó*ˆ
Ü%.¨z¸1×%=Ñ!ˆJÜ×*Ò*Ó,ˆJà�K‰K×(Ñ(¨Ô?à—]‘] 9¸Ó?ˆFô 14·²ó G² fØ$Ñ8ó "à &× 1Ñ 1Ð2D× E÷ "±ˆKð Gó &�Ü—‘—‘ ¨Ô-à"(×"3Ñ"3°CÓ"8‘�˜4ðÜœCŸK™K¨Ñ/°Ö6ñ &ô �v“;ˆDÜ×)Ò)Ó+¨jÑ8ˆIØÔ-Ó-Ø˜˜t¤O°IÓ$>Ð#?Ð@�Ø�K‰K×(Ñ(¨°TÔ:à×Ñ §¡°×0EÑ0E×FÔFÙò7 &>ùòGøô !¤.Ð1ó Úðús$   Ä	H2Ä+H2ÅH2ÆH7È7IÉ
Ic                 ó”   • U R                   R                  U R                  5      nU R                  (       a  U R                   SU 3nU$ )Nz then )r=   rÒ   r`   r>   )rŒ   r÷   s     r�   rÒ   ÚRegrtest.get_state¤  sA   € Ø—‘×&Ñ& t×'<Ñ'<Ó=ˆØ××Ø×'Ñ'Ð(¨¨u¨gÐ6ˆEØˆr“   r\   c                 óh   • SSK Jn  U" X!U R                  U R                  5      R	                  5         g )Nr   )Ú
RunWorkers)Úrun_workersr%  r?   r=   ræ   )rŒ   rÄ   r\   r%  s       r�   rË   ÚRegrtest._run_tests_mpª  s"   € Ý+Ù�;¨$¯+©+°t·|±|ÓD×HÑHÕJr“   rx   c                 óL  • U R                   (       ao  U R                  (       a>  [        U R                   S5       nUR                  U R                  S-   5        S S S 5        O [        R
                  " U R                   5        Ub  UR                  SSU R                  SS9  U R                  (       a,  [        R                  " S[        R                  " 5       -  5        U R                  (       a&  U R                  R                  U R                  5        g g ! , (       d  f       N¢= f)NÚwÚ
T)Úshow_missingÚsummaryry   Úignore_missing_fileszleaks %d)r‹   rŠ   r¡   Úwriterg   ÚunlinkÚwrite_resultsrz   rL   ÚsystemÚgetpidrn   r=   Úwrite_junit)rŒ   rx   r¶   s      r�   Úfinalize_testsÚRegrtest.finalize_tests®  sÓ   € Ø×$×$Ø×$×$Ü˜$×3Ñ3°SÔ9¸RØ—H‘H˜T×2Ñ2°TÑ9Ô:÷ :Ð9ô —	’	˜$×3Ñ3Ô4àÑà×"Ñ"°¸dØ,0×,=Ñ,=Ø8<ð #ñ >ð ××Ü�IŠI�j¤2§9¢9£;Ñ.Ô/à××Ø�L‰L×$Ñ$ T×%8Ñ%8Õ9ð ÷ :Õ9ús   ¹DÄ
D#c                 ó€  • U R                   c  [        S5      e[        R                  " 5       U R                  R
                  -
  n[        U R                  5      n[        5         [        S[        U5      -  5        U R                  R                  U R                   U5        U R                  5       n[        SU 35        g )NzBShould never call `display_summary()` before calling `_run_test()`zTotal duration: %szResult: )r‚   r°   r…   r†   r?   r‡   ÚboolrS   r±   r#   r=   Údisplay_summaryrÒ   )rŒ   ÚdurationÚfilteredr÷   s       r�   r8  ÚRegrtest.display_summaryÂ  sž   € Ø×ÑÑ&ÜØTóð ô ×$Ò$Ó&¨¯©×)?Ñ)?Ñ?ˆÜ˜×(Ñ(Ó)ˆô 	ŒÜÐ"¤_°XÓ%>Ñ>Ô?à�‰×$Ñ$ T×%8Ñ%8¸(ÔCð —‘Ó ˆÜ�˜˜Ð Õ!r“   c                 ó.  • [        U40 SU R                  _SU R                  _SU R                  _SS _SS_SU R                  _SU R
                  _S	U R                  _S
U R                  _SU R                  _SU R                  _SU R                  _SU R                  _SU R                  _SU R                  S L_SU R                  _SU R                  _SU R                   _SU R"                  _SU R$                  _SU R&                  _SU R(                  _6$ )Nr_   r`   rS   rÆ   rI   Frb   r:   r;   rd   re   r8   r9   rj   rl   Ú	use_junitrx   rp   rr   rt   rv   r}   r   )r   r_   r`   rS   rb   r:   r;   rd   re   r8   r9   rj   rl   rn   rx   rp   rr   rt   rv   r}   r   )rŒ   rš   s     r�   Úcreate_run_testsÚRegrtest.create_run_testsÕ  sU  € ÜØò
à—n’nð
ð "×2Ò2ð
ð ×(Ò(ð	
ñ
 "ð
ñ ð
ð —L’Lð
ð —’ð
ð ×*Ò*ð
ð #×4Ò4ð
ð —L’Lð
ð —L’Lð
ð —*’*ð
ð ×*Ò*ð
ð —]’]ð
ð  ×*Ñ*°$Ñ6ð!
ð" —]’]ð#
ð$ ×*Ò*ð%
ð& ×*Ò*ð'
ð( ×,Ò,ð)
ð* —’ð+
ð, —n’nð-
ð. ×(Ò(ð/
ð 	
r“   r½   c                 ó|  • U R                   (       a5  U R                   R                  S:  a  Sn[        U[        R                  SS9  U R
                  S:  a&  [        R                  " 5       =(       d    SS-   U l        U R                  (       dK  U R                  (       dZ  U R                  (       dI  U R                  (       d8  U(       d1  U R                  (       d   [        U R                  U R                  5        [        SU R                   5        U R#                  U5      nX@l        U R&                  R)                  U5        UR                   b  U R
                  (       d  S	nO[*        nU(       a  U R&                  R-                  5          U R
                  (       a  U R/                  X@R
                  5        O/[1        UR                   5         U R3                  U5        S S S 5        U R4                  R7                  5       nU R9                  U5        U R:                  (       a0  U R4                  R=                  5       (       a  U R?                  U5        U R@                  (       a0  U R4                  R=                  5       (       a  U RC                  U5        U(       a  U R&                  RE                  5         U RG                  5         U RI                  U5        U R4                  RK                  U RL                  U RN                  5      $ ! , (       d  f       GN.= f! U(       a  U R&                  RE                  5         f f = f)
Né   zhWARNING: Running tests with --huntrleaks/-R and less than 3 warmup repetitions can give false positives!T)Úfilerß   r   r   é   zUsing random seed:F)(rj   r�   r±   r²   Ústdoutr\   rg   Úprocess_cpu_countrA   r:   r9   r‰   rY   r(   rt   rv   r   r>  r‚   r?   rÉ   r   Ústart_load_trackerrË   r   rÌ   r=   Úget_coverage_resultsrÔ   rJ   Ú
need_rerunrÖ   rN   rô   Ústop_load_trackerr8  r4  Úget_exitcoder`   ra   )rŒ   r½   rš   rÍ   rÄ   Úuse_load_trackerrx   s          r�   Ú
_run_testsÚRegrtest._run_testsð  s<  € Ø×× ×!2Ñ!2×!:Ñ!:¸QÓ!>ðNˆCä�#œCŸJ™J¨dÒ3à×Ñ˜aÓô !#× 4Ò 4Ó 6× ;¸!¸qÑ@ˆDÔð ××Ø—8—8˜tŸzŸz¨T×-A×-AÞ˜t×0×0Ü˜4×-Ñ-¨t¯©Ô?äÐ" D×$4Ñ$4Ô5à×(Ñ(¨Ó2ˆØ&ÔØ�‰×Ñ˜hÔ'à×!Ñ!Ñ-¸×8H×8Hà$Ñô  *ÐæØ�K‰K×*Ñ*Ô,ð	0Ø××Ø×"Ñ" 8×-=Ñ-=Õ>ô .¨h×.CÑ.CÕDØ×/Ñ/°Ô9÷ Eð —|‘|×8Ñ8Ó:ˆHØ×Ñ Ô)à�� 4§<¡<×#:Ñ#:×#<Ñ#<Ø×'Ñ'¨Ô1à×× D§L¡L×$;Ñ$;×$=Ñ$=Ø—‘ Ô)æØ—‘×-Ñ-Ô/à×ÑÔØ×Ñ˜HÔ%à�|‰|×(Ñ(¨×)>Ñ)>Ø)-¯©ó:ð 	:÷% EÖDûö  Ø—‘×-Ñ-Õ/ð  ús&   Æ
AL ÇLÇB5L Ì
LÌL Ì$L;c                 óJ  • [         R                  " U R                  SS9  [        U R                  5      n[	        5          [
        R                  " USS9   U R                  X5      sS S S 5        sS S S 5        $ ! , (       d  f       O= f S S S 5        g ! , (       d  f       g = f)NT)Úexist_ok)r9   )rg   Úmakedirsr    r&   r'   r   Útemp_cwdrL  )rŒ   r½   rš   Úwork_dirs       r�   Ú	run_testsÚRegrtest.run_tests.  sn   € Ü
�Š�D—L‘L¨4Ò0Ü §¡Ó-ˆô �^ô
 ×#Ò# H°DÓ9ð
 —‘ xÓ7÷ :Ð9÷ ‰^÷
 :Õ9úÐ9÷ �^Ž^ús#   ¿BÁA9Á&	BÁ9
B	ÂBÂ
B"c                 óZ  • [        U R                  5      nS n[        5       n[        5       nU(       al  1 Skn[        R
                  n[        R
                  R                  5        VV	s0 s H$  u  p‰UR                  S5      (       a  X†;   d  M"  X‰_M&     n
nn	X§:w  a  U
nSnU(       a~  U(       aw  U R                  S:X  a$  U R                  (       d  UR                  SS/5        U R                  (       d2  [        R                  " S5      nU SU 3nUR                  S	U/5        SnX24$ s  sn	nf )
N>   Ú
PYTHONPATHÚ_PYTHON_PROJECT_BASEÚ_PYTHON_HOST_PLATFORMÚ_PYTHON_SYSCONFIGDATA_NAMEÚ_PYTHON_SYSCONFIGDATA_PATH)ÚPYTHONÚ_PYTHONTr   z-jÚ2ÚBUILDPYTHONÚ z--python)r7  rv   r+   r,   rg   r~   Úitemsr  r\   rZ   râ   Ú	sysconfigÚget_config_var)rŒ   Úregrtest_optsÚkeep_environr~   Úcross_compileÚ
hostrunnerÚkeepÚold_environrÂ   ÚvalueÚnew_environÚbuildpythonrv   s                r�   Ú_add_cross_compile_optsÚ Regrtest._add_cross_compile_opts?  s  € ô ˜DŸO™OÓ,ˆØˆô *Ó+ˆô %Ó&ˆ
æòˆDô Ÿ*™*ˆKä/1¯z©z×/?Ñ/?Ô/AôÚ/A¡ Ø—‘Ð'<×=Ñ=ÀÁó �’Ñ/Að ñ ð
 Ó)Ø%�ØˆLæžZØ×Ñ 1Ó$¨T×-@×-@ð ×$Ñ$ d¨C [Ô1ð —?—?Ü'×6Ò6°}ÓE�Ø *˜|¨1¨[¨MÐ:�
Ø×$Ñ$ j°*Ð%=Ô>Ø#�àÐ&Ð&ùó/s   Á(!D'ÂD'c                 ó~  • [         R                  R                  (       d  UR                  S5        S[         R                  ;  a  UR                  S5        [         R                  R                  S:  a  UR                  S5        U(       d2  [         R                  R                  (       d  UR                  S5        g g g )NrÛ   Údefault)z-WÚerrorrC  z-bbz-E)	r²   rD  Úwrite_throughrª   Úwarnoptionsrâ   ÚflagsÚbytes_warningÚignore_environment)rŒ   Úpython_optsrd  s      r�   Ú_add_ci_python_optsÚRegrtest._add_ci_python_optso  s…   € ô
 �z‰z×'×'Ø×Ñ˜tÔ$ð œCŸO™OÓ+Ø×Ñ˜Ô/ô �9‰9×"Ñ" QÓ&Ø×Ñ˜uÔ%æä—9‘9×/×/Ø×"Ñ" 4Õ(ð 0ð r“   c                 ó2  • [         R                  R                  5         [         R                  R                  5         [        R
                  " U5      n [        SU 3SS9  [        [        S5      (       a&  [        (       d  [        R                  " US   U5        g SS KnUR                  XS9 n UR                  5         S S S 5        [         R$                  " WR(                  5        g ! [         ah     UR                  [        S9   NI! UR                    a>    UR#                  5         UR                  5         [         R$                  " [&        5          N–f = ff = f! , (       d  f       N¤= f! [*         a  n[-        SU< S	U 35         S nAg S nAff = f)
Nz+ TrÞ   Úexecvr   )Úenvrà   z!Failed to change Python options: z

Command: )r²   rD  rß   Ústderrrä   rŸ   r±   Úhasattrrg   r   rz  rå   ÚPopenrE   ÚKeyboardInterruptr-   ÚTimeoutExpiredÚkillr³   r   rç   Ú	Exceptionr*   )rŒ   ré   r~   Úcmd_textrå   rê   Úexcs          r�   Ú_execute_pythonÚRegrtest._execute_python„  s:  € ä�
‰
×ÑÔÜ�
‰
×ÑÔä—:’:˜c“?ˆð	2Ü�B�x�j�/¨Ò.ä”r˜7×#Ñ#¯JªJÜ—’˜˜Q™ Õ%ó "Ø×%Ñ% cÐ%Ñ7¸4ð
;ØŸ	™	œ÷ 8ô —’˜Ÿ™Õ)øô -ó ;ð;Ø ŸI™I¬l˜IÓ;øØ)×8Ñ8ó ;Ø ŸI™IœKØ ŸI™IœKÜŸHšHÔ%9×:ð;úð;ú÷ 8Õ7ûô ó 	2ÜÐ=¸c¹Wð E&Ø&. Zð1÷ 2ñ 2ûð	2úst   ÁAE0 ÂE0 Â/EÂ1C*Ã(E0 Ã*
EÃ5D
ÄEÄ
A
EÅEÅEÅEÅEÅEÅ
E-Å)E0 Å0
FÅ:FÆFc                 óV  • / n/ nU R                  U5      u  p4U R                  (       a  U R                  X5        U(       d  U(       d  Uc  g [        [        R
                  5      nU(       a  XSS& U(       a  UR                  U5        UR                  S5        U R                  XS5        g )Nr   z--dont-add-python-opts)	rl  rQ   rw  r  r²   Ú	orig_argvrâ   rª   r…  )rŒ   rv  rc  r~   rd  ré   s         r�   r2   ÚRegrtest._add_python_opts¦  s†   € Ø!#ˆØ#%ˆà $× <Ñ <¸]Ó KÑˆØ�<�<Ø×$Ñ$ [Ô?æ¦m¸'¹/àô ”3—=‘=Ó!ˆÞØ"��!ˆHÞØ�J‰J�}Ô%Ø�
‰
Ð+Ô,à×Ñ˜SÕ*r“   c                 óP  • [        5         U R                  (       a\  [        R                  R	                  U R                  5      (       d.  [        R                  R                  U R                  5      U l        [        U R                  5        [        U R                  5      U l	        g r—   )
r   rn   rg   rh   Úisabsri   r!   rY   r%   r|   ©rŒ   s    r�   Ú_initÚRegrtest._init¼  sa   € ÜŒà××¤r§w¡w§}¡}°T×5HÑ5H×'IÑ'IÜ"$§'¡'§/¡/°$×2EÑ2EÓ"FˆDÔä˜×)Ñ)Ô*ä$ T§]¡]Ó3ˆ�r“   c                 óJ   • U R                   c  [        S5      eU R                   $ )Nz4Should never use `.tmp_dir` before calling `.main()`)r|   r°   rŒ  s    r�   r    ÚRegrtest.tmp_dirÆ  s(   € à�=‰=Ñ ÜØFóð ð �}‰}Ðr“   c                 ó`  • U R                   (       a  U R                  5         U R                  5         U R                  (       a+  [	        U R
                  5        [        R                  " S5        U R                  (       a  [        S5        [        U R                  5        U R                  U5      u  p!SnU R                  (       a  U R                  U5        OBU R                  (       a   [!        UU R"                  U R                  S9  OU R%                  X!5      n[        R                  " U5        g )Nr   zPress any key to continue...)rS   rl   )rR   r2   r�  rH   r)   r    r²   r³   rF   Úinputr   rl   r¿   rC   rB   rD   r   rS   rS  )rŒ   rš   r½   rë   s       r�   ÚmainÚRegrtest.mainÎ  sÅ   € Ø×$×$Ø×!Ñ!Ô#à�
‰
Œà××Ü˜TŸ\™\Ô*Ü�HŠH�QŒKà�>�>ÜÐ0Ô1ä�t—}‘}Ô%ØŸ/™/¨%Ó0‰ˆàˆØ××Ø�O‰O˜HÕ%Ø×!×!Ü�xØ#'×#3Ñ#3Ø $§¡ó/ð —~‘~ hÓ6ˆHä�Š�Õr“   )2r|   rQ   rY   rx   rz   rT   r`   r_   ra   r‚   r>   rb   rU   rr   rj   rn   r?   rS   rp   r‹   rŠ   r\   rd   r:   r;   r„   rv   r9   r   r}   r=   rZ   r‰   r‡   rW   rl   re   r<   rt   r8   rR   rN   rH   rA   rD   rC   rJ   rL   rF   r]   )F)rñ   r—   )r•   N)0Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r
   r7  r‘   r  r˜   r   rs   r   r¿   ÚstaticmethodrB   r   rÎ   rÖ   rì   rô   rÔ   r   rw   r  r   r  rÌ   rÒ   r7   rË   ÚCoverageResultsr4  r8  r>  rL  rS  rl  rw  r…  r2   r�  Úpropertyr   r    r   r“  Ú__static_attributes__© r“   r�   r/   r/   !   s   † ññ,e9˜9ð e9¸õ e9ñN˜ð  Tõ ñH( ¨4¡ð H(¸5ÀÈHÐW[ÉOÐA[Ñ;\õ H(ðT ð˜)ð ¨ó ó ðð¨Hð ¸ô ð@,¨8ð ,¸ô ,ð($ Hð $°Cð $À3ð $È4ô $ðL	 8ð 	°ô 	ð
D xð 
D°Dô 
DðØ!ðØ-5ðØ?D¿{¹{ÈTÑ?Qðà	ôð$.¨xð .¸Dô .ð`˜3ô ðK hð K¸Sð KÀTô Kð: u×'<Ñ'<¸tÑ'Cð :Èô :ô("ð&
 ið 
°Hô 
ð6<: 9ð <:°XÀ±_ð <:Èô <:ð|8 )ð 8°H¸t±Oð 8Èô 8ò".'ò`)ò*2ôD+ò,4ð ð˜ó ó ðñ˜( T™/ð °X÷ ð r“   r/   r•   c                 ój   • [        [        R                  SS 40 UD6n[        X1S9R	                  U S9  g)zRun the Python suite.r   N)r2   )rš   )r	   r²   Úargvr/   r“  )rš   r2   Úkwargsr1   s       r�   r“  r“  ë  s1   € ä	”S—X‘X˜a˜b�\Ñ	, VÑ	,€BÜˆRÑ3×8Ñ8¸uÐ8ÒEr“   )NF)@rg   r€   r¥   rä   r²   ra  r…   rw   Útypingr   Útest.supportr   r   r   r   Úcmdliner	   r
   r   r   r   r?   r   r:   r   rþ   r   r   r=   r   r   rÄ   r   r   Úsetupr   r   rˆ   r   r   r<   r   Úutilsr   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r/   r“  rž  r“   r�   Ú<module>r§     s†   ðÛ 	Û Û 	Û Û 
Û Û Û Ý ÷4ó 4÷ ,ß AÑ AÝ Ý  ß %ß 6ß +ß 0ß 6Ý "÷÷ ÷ ÷ ÷ ñ ÷Gñ GñTF¸(ö Fr“   