ó
    F\h�`  ã            	       ó°  • % 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	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Jr  S SKJr  S SKJr  S SKJr  Sr\r\S-   rSrS	r\S
-   r\r\r \r!\"\ S4   r#\$\    r%\$\"\ \&4      r'\"\ S4   r(\)\ \(4   r*S\+S\4S jr,S\$\   S-  SS4S jr-SFS\.S\S\S-  S\4S jjr/S\.S\S\4S jr0SGS jr1S\SS4S jr2Sq3\S   S-  \4S'   SHS jr5SHS jr6Sq7\S   S-  \4S'   SHS jr8SHS  jr9S! r:S" r;SFS#\S-  S\4S$ jjr<SHS% jr=SIS'\S(\&S\4S) jjr>\ R~                  S* 5       r@S+\ S,\.SS4S- jrAS+\ S.\S-  S\ 4S/ jrB\C" S05      rDS&S1.S2\S3\&S\S-  4S4 jjrESHS5 jrFS\4S6 jrGS\&4S7 jrHS8\\   S\4S9 jrIS8\"\S4   S:\"\S4   S-  SS4S; jrJS#\SS4S< jrKS=S>S?S@.rLSA rM\Rœ                  " SB5      rOSC rPSD\S\4SE jrQg)Jé    N)ÚCallableÚIterable)Úsupport)Ú	os_helper)Úthreading_helperÚtest_python_Úworker_g      ^@)ÚaudioÚconsoleÚcursesÚ	largefileÚnetworkÚdecimalÚcpuÚ
subprocessÚurlfetchÚguiÚwalltime)ÚextralargefileÚtzdata.ÚsecondsÚreturnc                 ó´  • [         R                  " U S-  5      n[        US5      u  p[        U S5      u  p [        US5      u  p2/ nU(       a  UR                  SU-  5        U(       a  UR                  SU-  5        U (       a5  U(       a  UR                  SU -  5        OUR                  SXS-  -   -  5        U(       d  SU-  $ US S	 nS
R	                  U5      $ )Ng     @�@iè  é<   z%s hourz%s minz%s secz%.1f secz%s msé   Ú )ÚmathÚceilÚdivmodÚappendÚjoin)r   ÚmsÚminutesÚhoursÚpartss        Ú-/usr/lib/python3.13/test/libregrtest/utils.pyÚformat_durationr'   =   sÃ   € Ü	�Š�7˜S‘=Ó	!€BÜ˜˜TÓ"�K€GÜ˜g rÓ*Ñ€GÜ˜G RÓ(�N€Eà€EÞØ�‰�Y Ñ&Ô'ÞØ�‰�X Ñ'Ô(ÞÞà�L‰L˜ GÑ+Õ,ð �L‰L˜ w°d±Ñ':Ñ;Ô<ÞØ˜‰|Ðà�"�1ˆI€EØ�8‰8�E‹?Ðó    Únamesc                 ó–   • U (       d  g [        U 5       H2  u  p[        R                  R                  U5      u  p4US:X  d  M.  X0U'   M4     g )Nz.py)Ú	enumerateÚosÚpathÚsplitext)r)   ÚidxÚnameÚbasenameÚexts        r&   Ústrip_py_suffixr3   V   s=   € ÞØÜ˜uÖ%‰	ˆÜŸ™×(Ñ(¨Ó.‰ˆØ�%�<Ø!�#‹Jò &r(   ÚnÚsingularÚpluralc                 ó&   • U S:X  a  U$ Ub  U$ US-   $ )Né   Ús© )r4   r5   r6   s      r&   r6   r6   _   s#   € ØˆAƒvØˆØ	Ñ	Øˆà˜#‰~Ðr(   Úwordc                 ó,   • U S:X  a  U  SU 3$ U  SU S3$ )Nr8   r   r9   r:   )r4   r;   s     r&   Úcountr=   h   s+   € ØˆAƒvØ��A�d�Vˆ}Ðà��A�d�V˜1ˆ~Ðr(   c           
      óˆ   • SU-  n[        [        R                  " SR                  S [	        U 5       5       5      UXDS9US9  g)zÀPrint the elements of iterable x to stdout.

Optional arg width (default 70) is the maximum line length.
Optional arg indent (default 4) is the number of blanks with which to
begin each line.
r   c              3   ó8   #   • U  H  n[        U5      v •  M     g 7f©N)Ústr)Ú.0Úelts     r&   Ú	<genexpr>Úprintlist.<locals>.<genexpr>y   s   é € Ð ?²Y¨c¤ S§ ²Yùs   ‚)Úinitial_indentÚsubsequent_indent)ÚfileN)ÚprintÚtextwrapÚfillr!   Úsorted)ÚxÚwidthÚindentrH   Úblankss        r&   Ú	printlistrQ   o   s>   € ð �6‰\€Fä	Œ(�-Š-˜Ÿ™Ñ ?´V¸A´YÓ ?Ó?ÀØ'-ñIàór(   Úmsgc                 ó0   • [         R                  " U 5        g r@   )r   Úprint_warning)rR   s    r&   rT   rT   ~   s   € Ü×Ò˜#Õr(   ).NÚorig_unraisablehookc                 ó|  • S[         l        [         R                  " S5        [        R                  n [         R
                  " 5         [         R                  R                  [        l        [        c   S5       e[        U 5        [        R                  R                  5         U[        l        g ! U[        l        f = f)NTzUnraisable exceptionzorig_unraisablehook not set)	r   Úenvironment_alteredrT   ÚsysÚstderrÚflush_std_streamsÚorig_stderrrU   Úflush)Ú
unraisableÚ
old_stderrs     r&   Úregrtest_unraisable_hookr_   …   s   € à"&„GÔÜ×ÒÐ0Ô1Ü—‘€Jð Ü×!Ò!Ô#Ü×*Ñ*×6Ñ6ŒŒ
Ü"Ñ.ÐMÐ0MÓMÐ.Ü˜JÔ'Ü�
‰
×ÑÔàŒ�
ø�ZŒ�
ús   ³A/B. Â.B;c                  óB   • [         R                  q[        [         l        g r@   )rX   ÚunraisablehookrU   r_   r:   r(   r&   Úsetup_unraisable_hookrb   ”   s   € ä×,Ñ,ÐÜ1„CÕr(   Úorig_threading_excepthookc                 óª  • S[         l        [         R                  " SU R                  R                   35        [
        R                  n [         R                  " 5         [         R                  R                  [
        l        [        c   S5       e[        U 5        [
        R                  R                  5         U[
        l        g ! U[
        l        f = f)NTzUncaught thread exception: z!orig_threading_excepthook not set)r   rW   rT   Úexc_typeÚ__name__rX   rY   rZ   r[   rc   r\   )Úargsr^   s     r&   Úregrtest_threading_excepthookrh   �   s‘   € à"&„GÔÜ×ÒÐ7¸¿¹×8NÑ8NÐ7OÐPÔQÜ—‘€Jð Ü×!Ò!Ô#Ü×*Ñ*×6Ñ6ŒŒ
Ü(Ñ4ÐYÐ6YÓYÐ4Ü! $Ô'Ü�
‰
×ÑÔàŒ�
ø�ZŒ�
ús   Á
A/C ÃCc                  ó:   • SS K n U R                  q[        U l        g )Nr   )Ú	threadingÚ
excepthookrc   rh   )rj   s    r&   Úsetup_threading_excepthookrl   ¬   s   € ãØ )× 4Ñ 4ÐÜ8€IÕr(   c                  ó¦  • [         R                  R                  5        H  n [        U S5      (       d  M  U ?M     [         R
                  [         R                  [         R                  [         R                  4 H  nUc  M  UR                  5         M      [         R                  S   nUR                  " 5          [         R                  S   nUR                  R                  5          [         R                  S   nUR                  5          [         R                  S   nUR                  5          [         R                  S   nUR!                  5          [         R                  S   nUR#                  5          [         R                  S   nUR$                  R                  5          [         R                  S	   n	U	R'                  5          [         R                  S
   n
S U
l         [         R                  S   nUR+                  5          [         R                  S   nUR,                   H
  nU" 5         M     SS Kn[1        UR2                  UR4                  R                  5       5      nU H.  nUR7                  5       U/-    H  nUR9                  5         M     M0      [         R                  S   nUR:                  R=                  5          [         R                  S   nUR>                  R=                  5         UR@                  R                  5         URB                  R                  5          [         R                  S   nURD                  RF                  R=                  5         g ! [         a     GN¹f = f! [         a     GNœf = f! [         a     GN‰f = f! [         a     GNvf = f! [         a     GNcf = f! [         a     GNPf = f! [         a     GN3f = f! [         a     GN f = f! [         a     GNf = f! [         a     GNf = f! [         a     GN€f = f! [         a     GNcf = f! [         a     GNf = f! [         a     g f = f)NÚ__warningregistry__ÚreÚ	_strptimezurllib.parsezurllib.requestÚ	linecacheÚ	mimetypesÚfilecmpÚstructÚdoctestÚctypesÚtypingr   Ú	fractionsÚinspectzimportlib.metadata)$rX   ÚmodulesÚvaluesÚhasattrrn   ÚstdoutrY   Ú
__stdout__Ú
__stderr__r\   ÚpurgeÚKeyErrorÚ_regex_cacheÚclearÚclear_cacheÚ
urlcleanupÚ
clearcacheÚ_default_mime_typesÚ_cacheÚ_clearcacheÚmasterÚ_reset_cacheÚ	_cleanupsry   ÚfilterÚ
isabstractÚ__dict__Ú__subclasses__Ú_abc_caches_clearÚ_hash_algorithmÚcache_clearÚ%_shadowed_dict_from_weakref_mro_tupleÚ_filesbymodnameÚmodulesbyfileÚFastPathÚ__new__)ÚmodÚstreamro   rp   Úurllib_parseÚurllib_requestrq   rr   rs   rt   ru   rv   rw   Úfry   Úabs_classesÚabcÚobjrx   Úimportlib_metadatas                       r&   Úclear_cachesr¢   ³   sÚ  € ä�{‰{×!Ñ!Ö#ˆÜ�3Ð-×.Ó.ØÒ'ñ $ô —:‘:œsŸz™z¬3¯>©>¼3¿>¹>ÓJˆØÓØ�L‰LŽNñ KðÜ�[‰[˜Ñˆð 	�ŠŒ
ð'Ü—K‘K Ñ,ˆ	ð 	×Ñ×$Ñ$Ô&ð#Ü—{‘{ >Ñ2ˆð 	× Ñ Ô"ð$ÜŸ™Ð%5Ñ6ˆð 	×!Ñ!Ô#ðÜ—K‘K Ñ,ˆ	ð 	×ÑÔð(Ü—K‘K Ñ,ˆ	ð 	×%Ñ%Ô'ðÜ—+‘+˜iÑ(ˆð 	�‰×ÑÔðÜ—‘˜XÑ&ˆð 	×ÑÔðÜ—+‘+˜iÑ(ˆð ˆŒðÜ—‘˜XÑ&ˆð 	×ÑÔð(Ü—‘˜XÑ&ˆð ×!Ô!ˆAÙŽCñ "ó 	Ü˜W×/Ñ/°·±×1GÑ1GÓ1IÓJˆÛˆCØ×)Ñ)Ó+¨s¨eÔ3�Ø×%Ñ%Ö'ó 4ñ ð0Ü—K‘K Ñ,ˆ	ð 	×!Ñ!×-Ñ-Ô/ð&Ü—+‘+˜iÑ(ˆð 	×5Ñ5×AÑAÔCØ×Ñ×%Ñ%Ô'Ø×Ñ×#Ñ#Ô%ð:Ü Ÿ[™[Ð)=Ñ>Ðð 	×#Ñ#×+Ñ+×7Ñ7Õ9øôO ó Úðûô ó Úðûô ó Úðûô ó Úðûô ó Úðûô ó Úðûô ó Úðûô ó Úðûô ó Úðûô ó Úðûô ó Úðûô ó Úðûô ó Úðûô ó Ùðúsü   ÂM& Â;M7 Ã)N ÄN Ä1N* ÅN; Å9O Æ'O ÇO. Ç&O? È
P ÊP! ËP2 Ì.Q Í&
M4Í3M4Í7
NÎNÎ
NÎNÎ
N'Î&N'Î*
N8Î7N8Î;
O	ÏO	Ï
OÏOÏ
O+Ï*O+Ï.
O<Ï;O<Ï?
PÐPÐ
PÐPÐ!
P/Ð.P/Ð2
Q Ð?Q Ñ
QÑQc                  ó6
  • [         R                  " S5      =(       d    Sn [         R                  " S5      =(       d    SnUS[         R                  " S5      =(       d    S-   -  n[         R                  " S5      =(       d    Sn/ n[         R                  " S5      (       at  [        R                  R                  (       d-  [
        R                  R                  SS 5      nU(       a  US	:H  nOS nS
nUb  U S[        U5       3nUR                  U5        [        [        S5      (       a)  UR                  S5        SU;   a  UR                  S5        O@UR                  S5        SU ;   a  UR                  S5        OSU;  a  UR                  S5        [        R                  " SU5      nU(       a  [        UR                  S5      5      n[        R                  R                  (       d-  [
        R                  R                  SS 5      nU(       a  US:g  nOS nUS:X  a  US:X  a  SnOFSnOCUS:X  a  U(       a  SnO3SnO0US:X  a  US:X  a  SnO!SnOUS:X  a  U(       a  SnOSnOSU;   a  SnOS nU(       a  UR                  U5        [         R                  " S 5      n	U	(       a  UR                  S!U	 35        [        [         R                  " S"5      =(       d    S5      n
U
(       a  UR                  S#5        / nS$U;   a  UR                  S%5        OS&U;   a  UR                  S'5        [        R                  " 5       (       a  UR                  S(5        [        R                   " 5       (       a  UR                  S)5        U(       a   UR                  S*R#                  U5      5        / n[        R$                  " S+S,9(       a  UR                  S-5        [        R$                  " S+S.9(       a  UR                  S/5        [        R$                  " S+S09(       a  UR                  S15        [        R$                  " S+S29(       a  UR                  S35        U(       a   UR                  S*R#                  U5      5        [        [        S45      (       a  UR                  S55        [        [        S65      (       a  UR                  S75        [         R                  " S85      (       a  UR                  S95        [         R                  " S:5      (       a  UR                  S;5        U$ )<NÚCONFIG_ARGSÚ Ú	PY_CFLAGSr   ÚPY_CFLAGS_NODISTÚPY_LDFLAGS_NODISTÚPy_GIL_DISABLEDÚ
PYTHON_GILÚ1Úfree_threadingz GIL=ÚgettotalrefcountÚdebugz-DNDEBUGÚwithout_assertÚreleasez--with-assertionsÚwith_assertz-D_Py_TIER2=([0-9]+)r8   Ú
PYTHON_JITÚ0FzJIT=offÚJITé   é   zJIT-interpreter=offzJIT-interpreteré   z	-D_Py_JITÚPYTHONFRAMEWORKz
framework=ÚPY_ENABLE_SHAREDÚsharedz
-flto=thinÚThinLTOz-fltoÚLTOÚPGOÚBOLTÚ+T©ÚaddressÚASAN©ÚmemoryÚMSAN©ÚubÚUBSAN©ÚthreadÚTSANÚ
getobjectsÚ	TraceRefsÚ	_stats_onÚpystatsÚWITH_VALGRINDÚvalgrindÚWITH_DTRACEÚdtrace)Ú	sysconfigÚget_config_varrX   ÚflagsÚignore_environmentr,   ÚenvironÚgetÚintr    r|   ro   ÚsearchÚgroupr   Úcheck_cflags_pgoÚcheck_bolt_optimizedr!   Úcheck_sanitizer)Úconfig_argsÚcflagsÚldflags_nodistÚbuildrª   r¬   Útier2r²   ÚjitÚ	frameworkrº   ÚoptimizationsÚ
sanitizerss                r&   Úget_build_inforé   +  sõ  € ô ×*Ò*¨=Ó9×?¸R€KÜ×%Ò% kÓ2×8°b€FØ
ˆc”Y×-Ò-Ð.@ÓA×GÀRÑHÑH€FÜ×-Ò-Ð.AÓB×HÀb€Nà€Eô ×ÒÐ 1×2Ñ2Ü�y‰y×+×+ÜŸ™Ÿ™¨°dÓ;ˆJÞØ(¨CÑ/�
øàˆJà)ˆØÑ!Ø .Ð/¨u´S¸³_Ð4EÐFˆNØ�‰�^Ô$äŒsÐ&×'Ñ'à�‰�WÔà˜ÓØ�L‰LÐ)Ô*øà�‰�YÔà +Ó-Ø�L‰L˜Õ'Ø˜vÓ%Ø�L‰L˜Ô'ô �IŠIÐ,¨fÓ5€EÞÜ�E—K‘K “NÓ#ˆä�9‰9×'×'Ü—Z‘Z—^‘^ L°$Ó7ˆ
ÞØ$¨Ñ+ˆJøàˆ
à�ƒzØ˜ÓØ‰Cà‰CØ	�!‹ÞØ‰Cà‰CØ	�!‹Ø˜ÓØ'‰Cà#‰CØ	�!‹ÞØ#‰Cà'‰CØ	˜Ó	Ø‰àˆÞ
Ø�‰�SÔô ×(Ò(Ð):Ó;€IÞØ�‰�z ) Ð-Ô.ô ”×)Ò)Ð*<Ó=×DÀÓE€FÞØ�‰�XÔð €MØ�~Ó%Ø×Ñ˜YÕ'Ø	�NÓ	"Ø×Ñ˜UÔ#ä×Ò×!Ñ!à×Ñ˜UÔ#ä×#Ò#×%Ñ%à×Ñ˜VÔ$æØ�‰�S—X‘X˜mÓ,Ô-ð €JÜ×Ò t×,Ø×Ñ˜&Ô!ä×Ò d×+Ø×Ñ˜&Ô!ä×Ò $×'Ø×Ñ˜'Ô"ä×Ò d×+Ø×Ñ˜&Ô!ÞØ�‰�S—X‘X˜jÓ)Ô*ô Œs�L×!Ñ!Ø�‰�[Ô!äŒs�K× Ñ Ø�‰�YÔä×Ò ×0Ñ0Ø�‰�ZÔ ä×Ò ×.Ñ.Ø�‰�XÔà€Lr(   Útmp_dirc                 óÜ  • U (       a!  [         R                  R                  U 5      n GO&[        R                  " 5       (       a÷  [
        R                  (       d  [        R                  " S5      n U cE  [        R                  " S5      n U (       d(  [        R                  " S5      n U (       d  [        S5      e[         R                  R                  U S5      n Ox[        R                  " S5      n U (       d  [        SU < S35      e[         R                  R                  U S5      n [         R                  " U S	S
9  O[        R                  " 5       n [         R                  R                  U 5      $ )NÚabs_builddirÚ
abs_srcdirÚsrcdirz1Could not determine the correct value for tmp_dirrã   Úprojectbasez>sysconfig.get_config_var('projectbase') unexpectedly returned z on WASIT)Úexist_ok)r,   r-   Ú
expanduserrÔ   Úis_python_buildr   Úis_wasirÕ   ÚRuntimeErrorr!   ÚmakedirsÚtempfileÚ
gettempdirÚabspath)rê   s    r&   Úget_temp_dirrù   µ  s  € ÞÜ—'‘'×$Ñ$ WÓ-Šô
 ×$Ò$×&Ñ&Ü—?—?Ü#×2Ò2°>ÓB�Ø‘?Ü'×6Ò6°|ÓD�GÞ"ô
 #,×":Ò":¸8Ó"D˜Þ&Ü".Ø Só#ð ô Ÿ'™'Ÿ,™, w°Ó8‘ô $×2Ò2°=ÓA�ÞÜ&ð1Ø18±¸8ðEóð ô Ÿ'™'Ÿ,™, w°Ó8�ô —’˜G¨dÓ3ä×)Ò)Ó+ˆGä�7‰7�?‰?˜7Ó#Ð#r(   c                  óÂ   • [         R                  (       aJ  [        R                  " S5      n U S:X  a  [        R                  " S5        g [        R                  " U 5        g g )Nr   iÿ  é   )r   Úis_emscriptenr,   Úumask)Úold_masks    r&   Ú	fix_umaskrÿ   á  s>   € Ü××ô —8’8˜A“;ˆØ�uÓÜ�HŠH�U�Oä�HŠH�XÕð r(   FÚ
parent_dirÚworkerc                 óp  • [         R                  (       d  [         R                  (       a  [        R                  " SS5      nO[
        R                  " 5       nU(       a  [        [        U5      -   nO[        [        U5      -   nU[        R                  -  n[
        R                  R                  X5      nU$ )Nr   i@B )r   rü   ró   ÚrandomÚrandintr,   ÚgetpidÚWORK_DIR_PREFIXrA   ÚWORKER_WORK_DIR_PREFIXr   ÚFS_NONASCIIr-   r!   )r   r  ÚnounceÚwork_dirs       r&   Úget_work_dirr  ì  st   € ô ××¤§§Ü—’  9Ó-‰ä—’“ˆæÜ"¤S¨£[Ñ0‰ä)¬C°«KÑ7ˆØ”	×%Ñ%Ñ%€HÜ�w‰w�|‰|˜JÓ1€HØ€Or(   c               #   óà   #   •  S v •  g ! [          aX  n [        R                  (       a  [        R                  " [
        SS9  [        R                  " U R                  5         S n A g S n A ff = f7f)NT)Úexit)	Ú
SystemExitr   Úcan_start_threadÚfaulthandlerÚdump_traceback_laterÚEXIT_TIMEOUTrX   r  Úcode)Úexcs    r&   Úexit_timeoutr     sJ   é € ðÜøÜó ô ×,×,Ü×-Ò-¬lÀÒFÜ�Š�—‘×Ñûðüs+   ‚A.„	 ˆA.‰
A+“AA&Á!A.Á&A+Á+A.Ú	test_nameÚverbosec           
      óœ  • [         R                  n[        R                  R	                  U5      (       d  g [        R                  R                  U5      (       a  SS KnSUR                  pTOF[        R                  R                  U5      (       a  S[        R                  pTO[        SU< S35      eU(       a  [        U  SU SU< 35        S[        l         SS Kn[        R                  " X&R                   UR"                  -  UR$                  -  5        U" U5        g ! [&         a!  n[        U  SU SU< S	U 35         S nAg S nAff = f)
Nr   Ú	directoryrH   zos.path says z) exists but is neither directory nor filez left behind r   Tz and it couldn't be removed: )r   ÚTESTFNr,   r-   ÚexistsÚisdirÚshutilÚrmtreeÚisfileÚunlinkrô   rT   r   rW   ÚstatÚchmodÚS_IRWXUÚS_IRWXGÚS_IRWXOÚ	Exception)r  r  r0   r  ÚkindÚnukerr!  r  s           r&   Úremove_testfnr)    s  € ô ×Ñ€DÜ�7‰7�>‰>˜$×ÑØô 
‡w�w‡}�}�T×ÑÛØ! 6§=¡=‰eÜ	�‰�‰˜×	Ñ	ØœbŸi™i‰eä˜]¨4©(ð 30ð 1ó 2ð 	2ö Ü˜˜ =°°°a¸±xÐ@ÔAØ&*ŒÔ#ð<Ûä
�Š�—|‘| d§l¡lÑ2°T·\±\ÑAÔBÙˆd�øÜó <Ü˜˜ =°°°a¸±xð @5Ø58°Eð;÷ 	<ñ 	<ûð<ús   ÃAD  Ä 
EÄ*EÅEÚtest_dirc                 óJ   • U R                  S5      (       d  U(       a  U $ SU -   $ )Nztest.)Ú
startswith)r  r*  s     r&   Úabs_module_namer-  1  s(   € Ø×Ñ˜G×$Ñ$®ØÐð ˜Ñ"Ð"r(   )Ú
setUpClassÚtearDownClassÚsetUpModuleÚtearDownModule)Úis_errorÚtest_full_namer2  c                óô   • U R                  S5      S   nU(       a\  U[        ;   aR  U R                  S5      (       a  g U R                  S5      nU R                  S5      nXS-   U R                  S5      S   $ U$ )	Nr   r   )zsetUpModule (ztearDownModule (Ú(Ú)r8   Ú.éÿÿÿÿ)ÚsplitÚ_TEST_LIFECYCLE_HOOKSr,  Úindex)r3  r2  Ú
short_nameÚlparÚrpars        r&   Únormalize_test_namer?  A  s€   € à×%Ñ% cÓ*¨1Ñ-€JÞ�JÔ"7Ó7Ø×$Ñ$Ð%J×KÑKð ð ×#Ñ# CÓ(ˆØ×#Ñ# CÓ(ˆØ Q™h¨Ð-×3Ñ3°CÓ8¸Ñ<Ð<ØÐr(   c            
      ó\  •  SSK n U R                  U R                  5      u  pSnX:  aA  X:  a;  [	        X25      n U R                  U R                  XB45        [        SU SU 35        ggg! [         a     gf = f! [        [        4 a  n[        SU SU SU S	35         SnAgSnAff = f)
z°
On macOS the default fd limit (RLIMIT_NOFILE) is sometimes too low (256)
for our test suite to succeed. Raise it to something more reasonable. 1024
is a common Linux default.
r   Ni   zRaised RLIMIT_NOFILE: z -> z#Unable to raise RLIMIT_NOFILE from z to z: r7  )
ÚresourceÚImportErrorÚ	getrlimitÚRLIMIT_NOFILEÚminÚ	setrlimitrI   Ú
ValueErrorÚOSErrorrT   )rA  Úfd_limitÚmax_fdsÚdesired_fdsÚnew_fd_limitÚerrs         r&   Úadjust_rlimit_nofilerN  W  sÐ   € ðÛð !×*Ñ*¨8×+AÑ+AÓBÑ€Hà€KàÓ (Ó"4Ü˜;Ó0ˆð	5Ø×Ñ˜x×5Ñ5Ø ,Ð6ô8äÐ*¨8¨*°D¸¸ÐGÕHð #5Ðøô ó Ùðûô œGÐ$ó 	5ÜÐ?À¸zÈØ)˜N¨"¨S¨E°ð4÷ 5ñ 5ûð	5ús(   ‚A, ».A< Á,
A9Á8A9Á<B+ÂB&Â&B+c                  óv   • [         R                  R                  S5      =n c  [        R                  " S5      n U $ )NÚ_PYTHON_HOSTRUNNERÚ
HOSTRUNNER)r,   rØ   rÙ   rÔ   rÕ   )Ú
hostrunners    r&   Úget_host_runnerrS  q  s1   € Ü—j‘j—n‘nÐ%9Ó:Ð:ˆ
ÑCÜ×-Ò-¨lÓ;ˆ
ØÐr(   c                  ó(   • S[         R                  ;   $ )NÚ_PYTHON_HOST_PLATFORM)r,   rØ   r:   r(   r&   Úis_cross_compiledrV  w  s   € Ø#¤r§z¡zÑ1Ð2r(   Úuse_resourcesc                 ó’  • [        U 5      n [        [        5      nS/n[        X-
  5       H  nUR                  SU 35        M     [        X-
  5       H  nUR                  U 5        M     SR	                  U5      nSU 3nSR	                  [        U 5      5      nS[        U 5       SU 3n[        U5      [        U5      ::  a  U$ U$ )NÚallÚ-Ú,zresources: zresources (z): )ÚsetÚALL_RESOURCESrL   r    r!   Úlen)rW  Úall_resourcesÚrelative_allr0   Úall_textÚtexts         r&   Úformat_resourcesrc  {  sÊ   € Ü˜Ó&€MÜœÓ&€Mð �7€LÜ�}Ñ4Ö5ˆØ×Ñ˜a ˜v˜JÖ'ñ 6ä�}Ñ4Ö5ˆØ×Ñ˜t˜fÖ&ñ 6à�x‰x˜Ó%€HØ˜X˜JÐ'€Hð �8‰8”F˜=Ó)Ó*€DØœ˜]Ó+Ð,¨C°¨vÐ6€Dô ˆ8ƒ}œ˜D›	Ó!Øˆàˆr(   Ú
python_cmdc                 óP  • [        S[        R                  " 5       /[        R                  R                  5       Q76   [        S[        R                  " SS9S[        R                  -  5        [        SSR                  [        5       5      5        [        S[        R                  " 5       5        [        R                  " 5       nU(       a5  [        R                  " 5       nU(       a  X2:w  a  U SU S	3n[        S
U5        [        S[        R                  " 5       < S[        R                  " 5       < 35        U (       a  [!        U 5      n[        SU 35        O[        S5        [#        5       nU(       a  [        S5        U(       aÊ  [$        R                  " U5      n[        SU 35        / UQSPSPn[&        R(                  " U[&        R*                  S[,        R.                  S9nUR0                  R3                  SS5      R5                  5       n	U	(       a  [        SU	 35        OJUR6                  (       a  [        SUR6                   S35        O[9        5       n
U
(       a  [        SU
 35        [:        R<                  " SS9n[:        R<                  " SS9n[:        R<                  " SS9n[:        R<                  " SS9n/ nU(       a  UR?                  S5        U(       a  UR?                  S5        U(       a  UR?                  S5        U(       a  UR?                  S 5        U(       at  [        S!S"R                  U5       35        US#4US$4US%4US&44 HE  u  nn[        R@                  RC                  U5      nU(       d  M.  Uc  M3  [        SU S'U< 35        MG     [        SS(9  g ))Nz==T)Úaliasedz	%s-endianz== Python build:r   z== cwd:z (process) / z	 (system)z== CPU count:z== encodings: locale=z FS=z== zL== resources: all test resources are disabled, use -u option to unskip testsz== cross compiled: Yesz== host python: z-mÚplatform)r}   rb  ÚcwdÚ
z== host platform: z1== host platform: <command failed with exit code Ú>z== host runner: rÀ   rÃ   rÆ   rÉ   rÁ   rÄ   zundefined behaviorrÊ   z== sanitizers: z, ÚASAN_OPTIONSÚMSAN_OPTIONSÚUBSAN_OPTIONSÚTSAN_OPTIONSÚ=)r\   )"rI   rg  Úpython_implementationrX   Úversionr9  Ú	byteorderr!   ré   r,   ÚgetcwdÚ	cpu_countÚprocess_cpu_countÚlocaleÚgetencodingÚgetfilesystemencodingrc  rV  Úshlexr   ÚrunÚPIPEr   ÚSAVEDCWDr}   ÚreplaceÚstripÚ
returncoderS  r   rß   r    rØ   rÙ   )rW  rd  rt  ru  rb  Úcross_compileÚcmdÚget_cmdÚprocr}   rR  ÚasanÚmsanÚubsanÚtsanrè   Ú	sanitizerÚenv_varÚoptionss                      r&   Údisplay_headerr‹  “  sú  € ô 
ˆ$”×.Ò.Ó0ÐG´3·;±;×3DÑ3DÓ3FÓGÜ	ˆ$”×!Ò!¨$Ñ/Ø¤§¡Ñ-ô/ä	Ð
˜cŸh™h¤~Ó'7Ó8Ô9Ü	ˆ)”R—Y’Y“[Ô!äŸš›€IÞä×0Ò0Ó2ÐÞÐ!2Ó!?Ø,Ð-¨]¸9¸+ÀYÐOˆIÜˆo˜yÔ)Ý	Ü×ÒÖ!¤3×#<Ò#<Õ#>ð@ô Aö Ü Ó.ˆÜ��D�6ˆlÕäð .ô 	/ô &Ó'€MÞÜÐ&Ô'ÞÜ�jŠj˜Ó$ˆÜÐ   Ð&Ô'à1�JÐ1 Ð1 jÐ1ˆÜ�~Š~ØÜ—?‘?ØÜ×"Ñ"ñ	$ˆð
 —‘×$Ñ$ T¨3Ó/×5Ñ5Ó7ˆÞÜÐ& v hÐ/Õ0Ø�_�_ÜÐEÀdÇoÁoÐEVÐVWÐXÔYøä$Ó&ˆ
ÞÜÐ$ Z LÐ1Ô2ô ×"Ò"¨4Ñ0€DÜ×"Ò"¨$Ñ/€DÜ×#Ò# tÑ,€EÜ×"Ò"¨$Ñ/€DØ€JÞØ×Ñ˜)Ô$ÞØ×Ñ˜(Ô#ÞØ×ÑÐ.Ô/ÞØ×Ñ˜(Ô#ÞÜ� §	¡	¨*Ó 5Ð6Ð7Ô8à�>Ð"Ø�>Ð"Ø�OÐ$Ø�>Ð"ó	#
ÑˆI�wô —Z‘Z—^‘^ GÓ,ˆGßˆy˜WÓ0Ü˜˜G˜9 A g¡[Ð1Ö2ñ#
ô 
�Ór(   c                 ó   • SS K n[        R                  R                  UR	                  U 5      [
        S-   5      n[        SU -  5        UR                  U5       Hq  n[        R                  R                  U5      (       a&  [        SU-  5        [        R                  " U5        MM  [        SU-  5        [        R                  " U5        Ms     g )Nr   Ú*zCleanup %s directoryzRemove directory: %szRemove file: %s)Úglobr,   r-   r!   ÚescapeÚ
TMP_PREFIXrI   r  r   r  r   )rê   rŽ  r-   r0   s       r&   Úcleanup_temp_dirr‘  â  s’   € Ûä�7‰7�<‰<˜Ÿ™ GÓ,¬j¸3Ñ.>Ó?€DÜ	Ð
  7Ñ
*Ô+Ø—	‘	˜$–ˆÜ�7‰7�=‰=˜×ÑÜÐ(¨4Ñ/Ô0Ü×Ò˜TÖ"äÐ# dÑ*Ô+Ü×Ò˜TÖ"ò  r(   ÚSTATUS_ACCESS_VIOLATIONÚSTATUS_STACK_OVERFLOWÚSTATUS_CONTROL_C_EXIT)l       l   ý    l   :   c                 ó6  • U S:  a$  U * n [         R                  " U5      R                  $ SU s=:  a  S:  a)  O  O&U S-
  n [         R                  " U5      R                  $  [        U    $ ! [         a     NLf = f! [         a     N&f = f! [
         a     g f = f)Nr   é€   é   )ÚsignalÚSignalsr0   rG  ÚWINDOWS_STATUSr�   )ÚexitcodeÚsignums     r&   Úget_signal_namer�  õ  s©   € Ø�!ƒ|Ø�ˆð	Ü—>’> &Ó)×.Ñ.Ð.ð
 ˆXÕ˜ÖØ˜C‘ˆð	Ü—>’> &Ó)×.Ñ.Ð.ðÜ˜hÑ'Ð'øô ó 	Ùð	ûô ó 	Ùð	ûô
 ó Øàðús5   ‹A+ ÁA; Á"B Á+
A8Á7A8Á;
BÂBÂ
BÂBu   [ --í €-í¿¿ï¿¾ï¿¿]+c                 ó<   • U S   nSR                  S U 5       5      $ )Nr   r¥   c              3   óh   #   • U  H(  nUS ::  a  S[        U5      S 3O[        U5      SS v •  M*     g7f)ô   Ã¿z\xÚ02xr8   r8  N)ÚordÚascii)rB   Úchs     r&   rD   Ú(_sanitize_xml_replace.<locals>.<genexpr>  s9   é € ð #Ú!�rð +-°«,�Sœ˜R› ˜Ñ&¼EÀ"»IÀaÈ¸OÔKÚ!ùs   ‚02)r!   )Úregsrb  s     r&   Ú_sanitize_xml_replacer§    s)   € Ø�‰7€DØ�7‰7ñ #Ù!ó#ó #ð #r(   rb  c                 ó6   • [         R                  [        U 5      $ r@   )ÚILLEGAL_XML_CHARS_REÚsubr§  )rb  s    r&   Úsanitize_xmlr«    s   € Ü×#Ñ#Ô$9¸4Ó@Ð@r(   r@   )éF   r¶   N)r   N)F)RÚ
contextlibr  rv  r   Úos.pathr,   rg  r  ro   ry  r˜  r   rX   rÔ   rö   rJ   Úcollections.abcr   r   Útestr   Útest.supportr   r   r�  r  r  r  r]  ÚRESOURCE_NAMESrA   ÚStrPathÚTestNameÚStrJSONÚtupleÚ	TestTupleÚlistÚTestListÚboolÚ
TestFilterÚFilterTupleÚdictÚ
FilterDictÚfloatr'   r3   rÚ   r6   r=   rQ   rT   rU   Ú__annotations__r_   rb   rc   rh   rl   r¢   ré   rù   rÿ   r  Úcontextmanagerr  r)  r-  Ú	frozensetr:  r?  rN  rS  rV  rc  r‹  r‘  rš  r�  Úcompiler©  r§  r«  r:   r(   r&   Ú<module>rÄ     s'  ðÜ Û Û Û Û Û Û Û 	Û Û Û Û 
Û Û Û ß .å Ý "Ý )ð
 €
Ø€Ø(¨9Ñ4Ð ð
 €ðP€ð Ð!=Ñ=€ð €Ø€Ø
€Ø�(˜C�-Ñ €	Ø�‰>€ð �%˜ $˜Ñ'Ñ(€
Ø�H˜c�MÑ"€Ø�(˜KÐ'Ñ(€
ð˜Uð  sô ð2"˜4 ™9 tÑ+ð "°ô "ñˆcð ˜Sð ¨#°©*ð Àõ ðˆSð ˜ð  ô ôð�sð ˜tô ð 37Ð �X˜iÑ(¨4Ñ/Ó 6ô ô2ð 9=Ð ˜8 IÑ.°Ñ5Ó <ô ô9òu:òpGñT)$˜' D™.ð )$°Gõ )$ôXñ˜Wð ¨dð ¸wõ ð( ×Ññó ðð"<˜Xð "<°ð "<¸ô "<ðJ#˜xð #°7¸T±>ð #Àhô #ñ "ð #ó Ð ð */ò¨ð Ø"&ðØ36¸±:õô,5ð4˜ô ð3˜4ô 3ð H¨S¡Mð °cô ð0L %¨¨S¨¡/ð LØ$ S¨# X™°Ñ5ðLØ:>ôLð^#˜gð #¨$ô #ð *Ø'Ø'ñ€òð0 —z’zð		ó

Ð ò#ð
A�sð A˜sõ Ar(   