ó
    F\hÎo  ã                   óš  • 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rS SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  \R4                  r " S	 S
\R6                  5      r\ R:                  S 5       r " S S\R>                  \5      r \!S:X  a  \RD                  " 5         gg)é    N)Úsupport)Úimport_helper)Ú	os_helper)Úscript_helper)Úsocket_helper)Úwarnings_helper)ÚExtraAssertionsc                   ó>   ^ • \ rS rSrU 4S jrSU 4S jjrS rSrU =r$ )ÚLogCaptureHandleré   c                 óX   >• [         TU ]  [        R                  " 5       5        / U l        g ©N)ÚsuperÚ__init__ÚioÚStringIOÚrecords)ÚselfÚ	__class__s    €Ú(/usr/lib/python3.13/test/test_support.pyr   ÚLogCaptureHandler.__init__   s   ø€ Ü‰ÑœŸš›Ô'Øˆ�ó    c                 óZ   >• U R                   R                  U5        [        TU ]  U5        g r   )r   Úappendr   Úemit)r   Úrecordr   s     €r   r   ÚLogCaptureHandler.emit#   s!   ø€ Ø�‰×Ñ˜FÔ#Ü‰‰�VÕr   c                 ó   • e r   © )r   r   s     r   ÚhandleErrorÚLogCaptureHandler.handleError'   s   € Ør   )r   )ÚreturnN)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r   r    Ú__static_attributes__Ú__classcell__)r   s   @r   r   r      s   ø† õ÷÷ð r   r   c               #   óÄ   #   • [        5       n [        R                  " 5       nUR                  U 5         U v •  UR	                  U 5        g ! UR	                  U 5        f = f7fr   )r   ÚloggingÚ	getLoggerÚ
addHandlerÚremoveHandler)ÚhandlerÚroot_loggers     r   Ú_caplogr0   +   sO   é € äÓ!€GÜ×#Ò#Ó%€KØ×Ñ˜7Ô#ð+ØŠà×!Ñ! 'Õ*øˆ×!Ñ! 'Õ*üs   ‚1A ´A
 ¸A Á
AÁA c                   óö  • \ rS rSr\S 5       r\S 5       rS rS rS r	S r
\R                  " S5      S	 5       rS
 rS rS rS r\R&                  " 5       S 5       r\R&                  " 5       S 5       r\R&                  " 5       S 5       rS rS rS rS r\R6                  " 5       S 5       rS rS rS rS r S r!S r"S r#S r$S r%S r&S  r'S! r(S" r)S# r*S$ r+S% r,S& r-S' r. " S( S)5      r/ " S* S+5      r0S, r1S- r2S. r3\Rh                  " \5" \6S/5      =(       a	    \5" \6S05      S15      \R6                  " 5       S2 5       5       r7\Rp                  " 5       SFS4 j5       r9\Rt                  " S55      S6 5       r;S7 r<\Rz                  " \R|                  S85      \Rz                  " \R~                  S95      \Rz                  " \R€                  S:5      S; 5       5       5       rAS< rBS= rCS> rDS? rES@ rFSA rGSB rHSC rISD rJSErKg3)GÚTestSupporté6   c                 óê   • [        [        R                  5      n[        R                  " SSS9U l        [        R                  " [        SS9U l        [        [        R                  5      US-   :X  d   eg )Nztest.support.warnings_helperz.*used in test_support.*)Úlikez!.*You should NOT be seeing this.*é   )ÚlenÚwarningsÚfiltersr   Úignore_deprecations_fromÚ_warnings_helper_tokenr#   Ú_test_support_token©ÚclsÚorig_filter_lens     r   Ú
setUpClassÚTestSupport.setUpClass7   sf   € äœh×.Ñ.Ó/ˆÜ%,×%EÒ%EØ*Ð1Kñ&
ˆÔ"ô #*×"BÒ"BÜÐ>ñ#
ˆÔô ”8×#Ñ#Ó$¨¸!Ñ(;Ó;Ð;Ñ;r   c                 óÐ   • [        [        R                  5      n[        R                  " U R
                  U R                  5        [        [        R                  5      US-
  :X  d   eg )Nr6   )r7   r8   r9   r   Úclear_ignored_deprecationsr;   r<   r=   s     r   ÚtearDownClassÚTestSupport.tearDownClassB   sR   € äœh×.Ñ.Ó/ˆÜ×*Ò*Ø×&Ñ&Ø×#Ñ#ô	
ô ”8×#Ñ#Ó$¨¸!Ñ(;Ó;Ð;Ñ;r   c                 óL  • [         R                  " SS9 n[        R                  " 5         [         R                  " S[
        5        U Vs/ s H  n[        UR                  5      PM     nnSSS5        U R                  [        W5      SU5        gs  snf ! , (       d  f       N0= f)z9Test support.ignore_deprecations_from() silences warningsT)r   zYou should NOT be seeing this.Nr   )
r8   Úcatch_warningsr   Ú_warn_about_deprecationÚwarnÚDeprecationWarningÚstrÚmessageÚassertEqualr7   )r   Úwarning_objsÚwÚmessagess       r   Ú$test_ignored_deprecations_are_silentÚ0TestSupport.test_ignored_deprecations_are_silentK   su   € ä×$Ò$¨DÒ1°\Ü×3Ò3Ô5Ü�MŠMÐ:Ô<NÔOÙ0<Ó=²¨1œ˜AŸI™Iž±ˆHÐ=÷ 2ð 	×Ñœ˜X›¨¨8Õ4ùò >÷ 2Õ1ús   •5BÁ
BÁ)BÂBÂ
B#c                 óŽ   • [         R                  " S5        U R                  [        R                  [         R                  S5        g )NÚftplibÚfoo)r   Úimport_moduleÚassertRaisesÚunittestÚSkipTest©r   s    r   Útest_import_moduleÚTestSupport.test_import_moduleS   s1   € Ü×#Ò# HÔ-Ø×Ñœ(×+Ñ+Ü'×5Ñ5°uõ	>r   c                 ó0   • [         R                  " S5        g )NrT   )r   Úimport_fresh_modulerZ   s    r   Útest_import_fresh_moduleÚ$TestSupport.test_import_fresh_moduleX   s   € Ü×)Ò)¨(Õ3r   c                 óÆ   • U R                  [        R                  " U S5      U R                  5        U R	                  [
        R                  [        R                  U S5        g )NÚtest_get_attributerU   )rM   r   Úget_attributerb   rW   rX   rY   rZ   s    r   rb   ÚTestSupport.test_get_attribute[   sI   € Ø×Ñœ×.Ò.¨tÐ5IÓJØ×/Ñ/ô	1à×Ñœ(×+Ñ+¬W×-BÑ-BÀDÈ%ÕPr   zfailing buildbotsc                 ój   • U R                  [        R                  " 5       [        R                  5        g r   )rM   r   Úget_original_stdoutÚsysÚstdoutrZ   s    r   Útest_get_original_stdoutÚ$TestSupport.test_get_original_stdout`   s   € à×Ñœ×4Ò4Ó6¼¿
¹
ÕCr   c                 ó¸   • SS K nU R                  S[        R                  5        [        R
                  " S5        U R                  S[        R                  5        g )Nr   Úsched)rl   ÚassertInrg   Úmodulesr   ÚunloadÚassertNotIn)r   rl   s     r   Útest_unloadÚTestSupport.test_unloadd   s9   € ÛØ�‰�gœsŸ{™{Ô+Ü×Ò˜WÔ%Ø×Ñ˜¤#§+¡+Õ.r   c                 ó$  • [        [        SSS9 n S S S 5        [        R                  " [        5        U R	                  [
        R                  R                  [        5      5        [        R                  " [        5        g ! , (       d  f       Nu= f)NrO   úutf-8©Úencoding)ÚopenÚTESTFNr   ÚunlinkÚassertFalseÚosÚpathÚexists)r   Úfs     r   Útest_unlinkÚTestSupport.test_unlinkj   sX   € Ü”&˜#¨Ò0°AØ÷ 1ä×ÒœÔ Ø×ÑœŸ™Ÿ™¬Ó/Ô0Ü×ÒœÕ ÷	 1Õ0ús   �BÂ
Bc                 ó  • [         R                  S-   n[        R                  R	                  US5      n[        R
                  " U5        [        R
                  " U5        [         R                  " U5        U R                  [        R                  R                  U5      5        [        R                  " [        SS5         [         R                  " U5        S S S 5        [        R
                  " U5        [        R
                  " U5        [        R                  " U[        R                  [        R                  -  5        [        R                  " [        SS5         [         R                  " U5        S S S 5        U R                  [        R                  R                  U5      5        [        R
                  " U5        [        R
                  " U5        [        R                  " US5        [        R                  " [        SS5         [         R                  " U5        S S S 5        U R                  [        R                  R                  U5      5        g ! , (       d  f       GN‡= f! , (       d  f       Nû= f! , (       d  f       N`= f)NÚdÚsubdirÚverboser   )r   rx   r{   r|   ÚjoinÚmkdirÚrmtreerz   r}   r   Ú	swap_attrÚchmodÚstatÚS_IRUSRÚS_IXUSR)r   ÚdirpathÚ
subdirpaths      r   Útest_rmtreeÚTestSupport.test_rmtreeq   s‚  € Ü×"Ñ" SÑ(ˆÜ—W‘W—\‘\ '¨8Ó4ˆ
Ü
�Š�ÔÜ
�Š�ÔÜ×Ò˜Ô!Ø×ÑœŸ™Ÿ™¨Ó0Ô1Ü×Òœw¨	°1Õ5Ü×Ò˜WÔ%÷ 6ô 	�Š�ÔÜ
�Š�ÔÜ
�Š�œ$Ÿ,™,¤t§|¡|Ñ3Ô4Ü×Òœw¨	°1Õ5Ü×Ò˜WÔ%÷ 6à×ÑœŸ™Ÿ™¨Ó0Ô1ä
�Š�ÔÜ
�Š�ÔÜ
�Š�˜!ÔÜ×Òœw¨	°1Õ5Ü×Ò˜WÔ%÷ 6à×ÑœŸ™Ÿ™¨Ó0Õ1÷ 6Ö5ú÷ 6Õ5ú÷ 6Õ5ús$   Ã IÅI)È	I:É
I&É)
I7É:
Jc                 óÞ  • [         S-   n[        USSS9 n[        SUS9  S S S 5        [        R                  R                  S[        R                  5        [        R                  " 5          [        [         5      nU R                  [         [        R                  5        [        R                  " [         5        U R                  [         [        R                  5        [        R                  S	 [         R"                  " U5        [         R$                  " S5        g ! , (       d  f       GN= f! [        R                  S	 [         R"                  " U5        [         R$                  " S5        f = f)	Nz.pyrO   rt   ru   zfoo = 1©Úfiler   Ú__pycache__)rx   rw   Úprintrg   r|   Úinsertr{   ÚcurdirÚ	importlibÚinvalidate_cachesÚ
__import__rm   rn   r   Úforgetrp   r   ry   r‡   )r   Úmod_filenamer~   Úmods       r   Útest_forgetÚTestSupport.test_forget‰   sç   € Ü ‘~ˆÜ�, ¨gÒ6¸!Ü�) !Ò$÷ 7ä�‰�‰˜œ2Ÿ9™9Ô%Ü×#Ò#Ô%ð		,ÜœVÓ$ˆCØ�M‰Mœ&¤#§+¡+Ô.ä× Ò ¤Ô(Ø×ÑœV¤S§[¡[Ô1ä—‘˜�Ü×Ò˜\Ô*Ü×Ò˜]Õ+÷ 7Ö6ûô —‘˜�Ü×Ò˜\Ô*Ü×Ò˜]Õ+ús   •DÁ,A1D- Ä
D*Ä-?E,c                 óp   • [         R                  " [        R                  S45      nUR	                  5         g )Nr   )ÚsocketÚcreate_serverr   ÚHOSTÚclose©r   Úss     r   Ú	test_HOSTÚTestSupport.test_HOSTš   s&   € ä× Ò ¤-×"4Ñ"4°aÐ!8Ó9ˆØ	�‰�	r   c                 óš   • [         R                  " 5       n[        R                  " [         R                  U45      nUR                  5         g r   )r   Úfind_unused_portr¡   r¢   r£   r¤   )r   Úportr¦   s      r   Útest_find_unused_portÚ!TestSupport.test_find_unused_portŸ   s4   € ä×-Ò-Ó/ˆÜ× Ò ¤-×"4Ñ"4°dÐ!;Ó<ˆØ	�‰�	r   c                 óš   • [         R                   " 5       n[        R                  " U5        UR                  5         UR	                  5         g r   )r¡   r   Ú	bind_portÚlistenr¤   r¥   s     r   Útest_bind_portÚTestSupport.test_bind_port¥   s-   € ä�MŠM‹OˆÜ×Ò Ô"Ø	�‰Œ
Ø	�‰�	r   c                 ó¦  • [         R                  " 5       n[        R                  R	                  U5      n [        R                  R                  US5      nU R                  [        R                  R                  U5      5        [        R                  " U5       nU R                  X25        U R                  [        R                  R                  U5      5        SSS5        U R                  [        R                  R                  U5      5        [        R                  " U5        g! , (       d  f       NS= f! [        R                  " U5        f = f)z8Test that temp_dir() creates and destroys its directory.ÚtempN)ÚtempfileÚmkdtempr{   r|   Úrealpathr…   rz   Úisdirr   Útemp_dirrM   Ú
assertTruer‡   )r   Ú
parent_dirr|   Ú	temp_paths       r   Útest_temp_dirÚTestSupport.test_temp_dir®   sÙ   € ä×%Ò%Ó'ˆ
Ü—W‘W×%Ñ% jÓ1ˆ
ð	)Ü—7‘7—<‘< 
¨FÓ3ˆDØ×ÑœRŸW™WŸ]™]¨4Ó0Ô1Ü×#Ò# DÔ)¨YØ× Ñ  Ô1Ø—‘¤§¡§¡¨dÓ 3Ô4÷ *ð ×ÑœRŸW™WŸ]™]¨4Ó0Ô1ä×Ò˜ZÕ(÷ *Õ)ûô
 ×Ò˜ZÕ(ús%   ¶A$D8 ÂA D'Ã6D8 Ä'
D5Ä1D8 Ä8Ec                 ó  • [         R                  " 5        nU R                  [        R                  R                  U5      5        SSS5        U R                  [        R                  R                  W5      5        g! , (       d  f       N== f)zTest passing no path.N)r   r¹   rº   r{   r|   r¸   rz   )r   r¼   s     r   Útest_temp_dir__path_noneÚ$TestSupport.test_temp_dir__path_none½   sR   € ä×ÒÔ! YØ�O‰OœBŸG™GŸM™M¨)Ó4Ô5÷ "à×ÑœŸ™Ÿ™ yÓ1Õ2÷ "Õ!ús   –/A<Á<
B
c                 óº  • S n[         R                  " 5       n[        R                  R	                  U5      n U R                  [        R                  R                  U5      5        U R                  [        X5        U R                  [        R                  R                  U5      5        [        R                  " U5        g! [        R                  " U5        f = f)z-Test passing a directory that already exists.c                 óh   • [         R                  " U 5       n[        S5      e! , (       d  f       g = f©Nzshould not get here)r   r¹   Ú	Exception)r|   r¼   s     r   Úcall_temp_dirÚMTestSupport.test_temp_dir__existing_dir__quiet_default.<locals>.call_temp_dirÅ   s'   € Ü×#Ò# DÔ)¨YÜÐ 5Ó6Ð6÷ *Õ)úó   —#£
1N)rµ   r¶   r{   r|   r·   rº   r¸   rW   ÚFileExistsErrorÚshutilr‡   )r   rÆ   r|   s      r   Ú*test_temp_dir__existing_dir__quiet_defaultÚ6TestSupport.test_temp_dir__existing_dir__quiet_defaultÃ   s‹   € ò	7ô ×ÒÓ!ˆÜ�w‰w×Ñ Ó%ˆð	 Ø�O‰OœBŸG™GŸM™M¨$Ó/Ô0Ø×Ñœo¨}ÔCà�O‰OœBŸG™GŸM™M¨$Ó/Ô0ä�MŠM˜$ÕøŒF�MŠM˜$Õús   ¹A2C ÃCc                 ó�  • [         R                  " 5       n[        R                  R	                  U5      n [
        R                  " 5        n[        5        n[        R                  " USS9 nU R                  X5        SSS5        UR                   Vs/ s H  n[        UR                  5      PM     nnSSS5        SSS5        U R                  [        R                  R                  U5      5        [         R"                  " U5        U R%                  W/ 5        U R                  ['        WR(                  5      S5        UR(                  S   nU R+                  UR-                  5       SU< S35        g! , (       d  f       Ný= fs  snf ! , (       d  f       NÜ= f! , (       d  f       Nå= f! [         R"                  " U5        f = f)z=Test passing a directory that already exists with quiet=True.T©ÚquietNé   r   z5tests may fail, unable to create temporary directory ú: )rµ   r¶   r{   r|   r·   r   Úcheck_warningsr0   r   r¹   rM   r8   rK   rL   rº   r¸   rÊ   r‡   ÚassertListEqualr7   r   ÚassertStartsWithÚ
getMessage)r   r|   ÚrecorderÚcaplogr¼   rO   r8   r   s           r   Ú'test_temp_dir__existing_dir__quiet_trueÚ3TestSupport.test_temp_dir__existing_dir__quiet_trueÓ   sD  € ä×ÒÓ!ˆÜ�w‰w×Ñ Ó%ˆð	 Ü ×/Ò/Ô1°X¼w¼yÈFÜ×'Ò'¨°DÒ9¸YØ×$Ñ$ TÔ5÷ :à4<×4EÒ4EÓFÒ4E¨qœC §	¡	žNÑ4E�ÐF÷ @I×1ð
 �O‰OœBŸG™GŸM™M¨$Ó/Ô0ä�MŠM˜$Ôà×Ñ˜X rÔ*Ø×Ñœ˜VŸ^™^Ó,¨aÔ0Ø—‘ Ñ"ˆØ×ÑØ×ÑÓð#Ø#'¡(¨"ð.õ	
÷ :Õ9üâF÷ @I½yú×1Õ1ûô �MŠM˜$Õús_   ¶F- ÁFÁFÁ,E5Á>FÂFÂ3FÂ5FÂ=6F- Å5
FÅ?FÆ
F	ÆFÆ
F*Æ&F- Æ-Gc                 óZ   • [         R                  " S[        R                  " S5      5        g)z?Test that a forked child process does not remove the directory.ú-ca  
            import os
            from test import support
            from test.support import os_helper
            with os_helper.temp_cwd() as temp_path:
                pid = os.fork()
                if pid != 0:
                    # parent process

                    # wait for the child to terminate
                    support.wait_process(pid, exitcode=0)

                    # Make sure that temp_path is still present. When the child
                    # process leaves the 'temp_cwd'-context, the __exit__()-
                    # method of the context must not remove the temporary
                    # directory.
                    if not os.path.isdir(temp_path):
                        raise AssertionError("Child removed temp_path.")
        N)r   Úassert_python_okÚtextwrapÚdedentrZ   s    r   Útest_temp_dir__forked_childÚ'TestSupport.test_temp_dir__forked_childë   s$   € ô
 	×&Ò& t¬X¯_ª_ð >ó .õ 	r   c                 ó¢  • [         R                  " 5       n[        R                  " 5        n[        R                  " U5       nU R                  X25        U R                  [         R                  " 5       U5        S S S 5        S S S 5        U R                  [         R                  " 5       U5        g ! , (       d  f       N<= f! , (       d  f       NE= fr   )r{   Úgetcwdr   r¹   Ú
change_cwdrM   )r   Úoriginal_cwdr¼   Únew_cwds       r   Útest_change_cwdÚTestSupport.test_change_cwd  sƒ   € Ü—y’y“{ˆä×ÒÔ! YÜ×%Ò% iÔ0°GØ× Ñ  Ô4Ø× Ñ ¤§¢£¨gÔ6÷ 1÷ "ð
 	×ÑœŸš› lÕ3÷	 1Õ0ú÷ "Õ!ús#   «C Á7B/Á9C Â/
B=	Â9C Ã 
Cc                 óJ  • [         R                  " 5       nS n[        R                  " 5        n[         R                  R                  US5      nU R                  [        UU5        SSS5        U R                  [         R                  " 5       U5        g! , (       d  f       N4= f)z&Test passing a non-existent directory.c                 óh   • [         R                  " U 5       n[        S5      e! , (       d  f       g = frÄ   )r   rã   rÅ   )r|   rå   s     r   Úcall_change_cwdÚFTestSupport.test_change_cwd__non_existent_dir.<locals>.call_change_cwd  s'   € Ü×%Ò% dÔ+¨wÜÐ 5Ó6Ð6÷ ,Õ+úrÈ   Údoes_not_existN)	r{   râ   r   r¹   r|   r…   rW   ÚFileNotFoundErrorrM   )r   rä   rê   r»   Únon_existent_dirs        r   Ú!test_change_cwd__non_existent_dirÚ-TestSupport.test_change_cwd__non_existent_dir  st   € ä—y’y“{ˆò	7ô ×ÒÔ! ZÜ!Ÿw™wŸ|™|¨JÐ8HÓIÐØ×ÑÔ/°Ø.ô0÷ "ð
 	×ÑœŸš› lÕ3÷ "Õ!ús   ®8BÂ
B"c           	      óz  • [         R                  " 5       n[        R                  " 5        n[         R                  R                  US5      n[        R                  " 5        n[        5        n[        R                  " USS9 nU R                  Xa5        U R                  [         R                  " 5       U5        SSS5        UR                   Vs/ s H  n[        UR                  5      PM     nnSSS5        SSS5        SSS5        U R                  W/ 5        U R                  [        WR                   5      S5        UR                   S   n	U R#                  U	R%                  5       SW< S35        g! , (       d  f       NÁ= fs  snf ! , (       d  f       N = f! , (       d  f       N©= f! , (       d  f       N²= f)	z6Test passing a non-existent directory with quiet=True.rì   TrÎ   NrÐ   r   úBtests may fail, unable to change the current working directory to rÑ   )r{   râ   r   r¹   r|   r…   r   rÒ   r0   rã   rM   r8   rK   rL   rÓ   r7   r   rÔ   rÕ   )
r   rä   r»   Úbad_dirrÖ   r×   rå   rO   r8   r   s
             r   Ú-test_change_cwd__non_existent_dir__quiet_trueÚ9TestSupport.test_change_cwd__non_existent_dir__quiet_true  s@  € ä—y’y“{ˆä×ÒÔ! ZÜ—g‘g—l‘l :Ð/?Ó@ˆGÜ ×/Ò/Ô1°X¼w¼yÈFÜ×)Ò)¨'¸Ò>À'Ø×$Ñ$ WÔ;Ø×$Ñ$¤R§Y¢Y£[°'Ô:÷ ?ð 5=×4EÒ4EÓFÒ4E¨qœC §	¡	žNÑ4E�ÐF÷	 @I×1÷ "ð 	×Ñ˜X rÔ*Ø×Ñœ˜VŸ^™^Ó,¨aÔ0Ø—‘ Ñ"ˆØ×ÑØ×ÑÓðà‘˜Bð õ	
÷ ?Õ>üò G÷	 @I½yú×1Õ1ú÷ "Õ!ús_   «6F,Á!FÁ,F
Â7E4	Â9F
ÃF
Ã.F
Ã0FÃ8F,Å4
FÅ>F
Æ

FÆFÆ
F)	Æ%F,Æ,
F:c                 óZ  • [         S-   n[        R                  " 5        n[        5        n[        R
                  " USS9    SSS5        UR                   Vs/ s H  n[        UR                  5      PM     nnSSS5        SSS5        U R                  W/ 5        U R                  [        WR                  5      S5        UR                  S   nU R                  UR                  5       SU< S35        g! , (       d  f       N¹= fs  snf ! , (       d  f       N˜= f! , (       d  f       N¡= f)	z0Check the warning message when os.chdir() fails.Ú_does_not_existT)r|   rÏ   NrÐ   r   rò   rÑ   )rx   r   rÒ   r0   r   rã   r8   rK   rL   rÓ   rM   r7   r   rÔ   rÕ   )r   r|   rÖ   r×   rO   rP   r   s          r   Útest_change_cwd__chdir_warningÚ*TestSupport.test_change_cwd__chdir_warning7  så   € äÐ)Ñ)ˆÜ×+Ò+Ô-°¼7¼9ÈÜ×%Ò%¨4°tÓ<Ø÷ =à08×0AÒ0AÓBÒ0A¨1œ˜AŸI™IžÑ0AˆHÐB÷ <E×-ð
 	×Ñ˜X rÔ*Ø×Ñœ˜VŸ^™^Ó,¨aÔ0Ø—‘ Ñ"ˆØ×ÑØ×ÑÓðà‘˜ðõ	
÷ =Õ<üâB÷ <E½9ú×-Õ-úsF   ŸDªDÁ C5ÁDÁDÁ7DÁ9DÃ5
DÃ?DÄ
D	ÄDÄ
D*c                 óÌ  • [         R                  " 5       n[        R                  " [        S9   U R                  [         R                  R                  [         R                  " 5       5      [        5        S S S 5        U R                  [         R                  R                  [        5      5        U R                  [         R                  " 5       U5        g ! , (       d  f       Nf= f)N©Úname)
r{   râ   r   Útemp_cwdrx   rM   r|   Úbasenamerz   r}   )r   Úheres     r   Útest_temp_cwdÚTestSupport.test_temp_cwdK  s   € Ü�yŠy‹{ˆÜ×Ò¤VÓ,Ø×ÑœRŸW™W×-Ñ-¬b¯iªi«kÓ:¼FÔC÷ -à×ÑœŸ™Ÿ™¬Ó/Ô0Ø×ÑœŸš› dÕ+÷ -Õ,ús   ®ACÃ
C#c                 óœ  • [         R                  " 5       n[        R                  " SS9 nU R	                  X!5        U R                  [         R                  R                  U5      5        U R                  [         R                  " 5       U5        SSS5        U R                  [         R                  " 5       U5        g! , (       d  f       N4= f)z Test passing None to temp_cwd().Nrû   )	r{   râ   r   rý   ÚassertNotEqualrº   r|   r¸   rM   )r   rä   rå   s      r   Útest_temp_cwd__name_noneÚ$TestSupport.test_temp_cwd__name_noneS  s€   € ä—y’y“{ˆÜ×Ò TÒ*¨gØ×Ñ Ô6Ø�O‰OœBŸG™GŸM™M¨'Ó2Ô3Ø×ÑœRŸYšY›[¨'Ô2÷ +ð 	×ÑœŸš› lÕ3÷	 +Õ*ús   ªA%B=Â=
Cc                 óX   • U R                  [        R                  " SSSS.5      S5        g )Né   r6   rÐ   )r  r6   rÐ   z{1: 1, 2: 2, 3: 3})rM   r   ÚsortdictrZ   s    r   Útest_sortdictÚTestSupport.test_sortdict\  s$   € Ø×Ñœ×)Ò)¨Q°!°q©/Ó:Ð<PÕQr   c                 ó"  • [         R                  " 5       nU R                  [        5       n[        R
                  " US5        S S S 5        U R                  WR                  R                  [        R                  5        g ! , (       d  f       NC= f)Ns   foo)
r   Úmake_bad_fdrW   ÚOSErrorr{   ÚwriterM   Ú	exceptionÚerrnoÚEBADF)r   ÚfdÚcms      r   Útest_make_bad_fdÚTestSupport.test_make_bad_fd_  sZ   € Ü×"Ò"Ó$ˆØ×ÑœwÔ'¨2Ü�HŠH�R˜Ô ÷ (à×Ñ˜Ÿ™×+Ñ+¬U¯[©[Õ9÷ (Õ'ús   «B Â 
Bc                 ó¾   • [         R                  " U SSSS9  U R                  [        5         [         R                  " U S5        S S S 5        g ! , (       d  f       g = f)Nz	def classrÐ   é   )ÚlinenoÚoffsetzx=1)r   Úcheck_syntax_errorrW   ÚAssertionErrorrZ   s    r   Útest_check_syntax_errorÚ#TestSupport.test_check_syntax_errore  s@   € Ü×"Ò" 4¨¸QÀqÒIØ×Ñœ~Õ.Ü×&Ò& t¨UÔ3÷ /×.Ö.ús   ­AÁ
Ac                 ó�   • SS K n[        R                  " S5         UR                  " S5        S S S 5        g ! , (       d  f       g = f)Nr   Úpprint)r˜   r   ÚCleanImportrV   )r   r˜   s     r   Útest_CleanImportÚTestSupport.test_CleanImportj  s-   € ÛÜ×&Ò& xÕ0Ø×#Ò# HÔ-÷ 1×0Ö0ús	   ›7·
Ac                 óf  • [         R                  " SS5         U R                  S[        R                  5        U R                  S[        R                  5        S S S 5        U R                  S[        R                  5        U R                  S[        R                  5        g ! , (       d  f       NO= f)NrU   Úbar)r   ÚDirsOnSysPathrm   rg   r|   rp   rZ   s    r   Útest_DirsOnSysPathÚTestSupport.test_DirsOnSysPatho  sn   € Ü×(Ò(¨°Õ6Ø�M‰M˜%¤§¡Ô*Ø�M‰M˜%¤§¡Ô*÷ 7ð 	×Ñ˜¤§¡Ô)Ø×Ñ˜¤§¡Õ)÷	 7Õ6ús   ˜AB"Â"
B0c                 ó¸   • [         R                  " 5        n[        S5        S S S 5        U R                  WR	                  5       S5        g ! , (       d  f       N/= f)NÚhelloúhello
)r   Úcaptured_stdoutr•   rM   Úgetvalue)r   rh   s     r   Útest_captured_stdoutÚ TestSupport.test_captured_stdoutv  s<   € Ü×$Ò$Ô&¨&Ü�'ŒN÷ 'à×Ñ˜Ÿ™Ó*¨IÕ6÷ 'Õ&ús   –AÁ
Ac                 óÒ   • [         R                  " 5        n[        S[        R                  S9  S S S 5        U R                  WR                  5       S5        g ! , (       d  f       N/= f)Nr)  r’   r*  )r   Úcaptured_stderrr•   rg   ÚstderrrM   r,  )r   r1  s     r   Útest_captured_stderrÚ TestSupport.test_captured_stderr{  sC   € Ü×$Ò$Ô&¨&Ü�'¤§
¡
Ò+÷ 'à×Ñ˜Ÿ™Ó*¨IÕ6÷ 'Õ&ús   –AÁ
A&c                 óÞ   • [         R                  " 5        nUR                  S5        UR                  S5        [	        5       nS S S 5        U R                  WS5        g ! , (       d  f       N!= f)Nr*  r   r)  )r   Úcaptured_stdinr  ÚseekÚinputrM   )r   ÚstdinÚcaptureds      r   Útest_captured_stdinÚTestSupport.test_captured_stdin€  sN   € Ü×#Ò#Ô%¨Ø�K‰K˜	Ô"Ø�J‰J�qŒMä“wˆH÷	 &ð
 	×Ñ˜ 7Õ+÷ &Õ%ús   –-AÁ
A,c                 ó.   • [         R                  " 5         g r   )r   Ú
gc_collectrZ   s    r   Útest_gc_collectÚTestSupport.test_gc_collectˆ  s   € Ü×ÒÕr   c                 óV   • U R                  [        R                  " 5       [        5        g r   )ÚassertIsInstancer   Úpython_is_optimizedÚboolrZ   s    r   Útest_python_is_optimizedÚ$TestSupport.test_python_is_optimized‹  s   € Ø×Ñœg×9Ò9Ó;¼TÕBr   c                 ó¾  •  " S S5      nU" 5       nSUl         [        R                  " USS5       nU R                  UR                   S5        U R                  US5        S S S 5        U R                  UR                   S5        [        R                  " USS5       nU R                  UR                  S5        U R                  U5        S S S 5        U R                  [        US5      5        [        R                  " USS5         U?S S S 5        U R                  [        US5      5        g ! , (       d  f       NÒ= f! , (       d  f       Ny= f! , (       d  f       NL= f)Nc                   ó   • \ rS rSrSrg)Ú'TestSupport.test_swap_attr.<locals>.Obji�  r   N)r#   r$   r%   r&   r'   r   r   r   ÚObjrH  �  s   † Úr   rI  rÐ   Úxr  Úy)rJ  r   rˆ   rM   rK  ÚassertIsNonerz   Úhasattr)r   rI  ÚobjrJ  rK  s        r   Útest_swap_attrÚTestSupport.test_swap_attrŽ  s  € ÷	ñ 	á‹eˆØˆŒÜ×Ò˜s C¨Ô+¨qØ×Ñ˜SŸU™U AÔ&Ø×Ñ˜Q Ô"÷ ,ð 	×Ñ˜Ÿ™ Ô"Ü×Ò˜s C¨Ô+¨qØ×Ñ˜SŸU™U AÔ&Ø×Ñ˜aÔ ÷ ,ð 	×Ñœ  cÓ*Ô+Ü×Ò˜s C¨Õ+Ø�÷ ,à×Ñœ  cÓ*Õ+÷ ,Õ+ú÷ ,Õ+ú÷ ,Õ+ús#   ±/D,Â.D=ÄEÄ,
D:Ä=
EÅ
Ec                 óJ  • SS0n[         R                  " USS5       nU R                  US   S5        U R                  US5        S S S 5        U R                  US   S5        [         R                  " USS5       nU R                  US   S5        U R                  U5        S S S 5        U R	                  SU5        [         R                  " USS5         US	 S S S 5        U R	                  SU5        g ! , (       d  f       N³= f! , (       d  f       Nh= f! , (       d  f       NC= f)NrJ  rÐ   r  rK  )r   Ú	swap_itemrM   rL  rp   )r   ÚDrJ  rK  s       r   Útest_swap_itemÚTestSupport.test_swap_itemŸ  sô   € Ø�ˆGˆÜ×Ò˜q # qÔ)¨QØ×Ñ˜Q˜s™V QÔ'Ø×Ñ˜Q Ô"÷ *ð 	×Ñ˜˜3™ Ô#Ü×Ò˜q # qÔ)¨QØ×Ñ˜Q˜s™V QÔ'Ø×Ñ˜aÔ ÷ *ð 	×Ñ˜˜aÔ Ü×Ò˜q # qÕ)Ø�#�÷ *à×Ñ˜˜aÕ ÷ *Õ)ú÷ *Õ)ú÷ *Õ)ús#   �(C2Á:'DÃDÃ2
D Ä
DÄ
D"c                   ó$   • \ rS rSrSrSrSrSrSrg)ÚTestSupport.RefClassi­  Nr   )	r#   r$   r%   r&   Ú
attribute1Ú
attribute2Ú_hidden_attribute1Ú__magic_1__r'   r   r   r   ÚRefClassrW  ­  s   † Øˆ
Øˆ
Ø!ÐØ‹r   r\  c                   ó$   • \ rS rSrSrSrSrSrSrg)ÚTestSupport.OtherClassi³  Nr   )	r#   r$   r%   r&   rY  Ú
attribute3r[  Ú__magic_2__r'   r   r   r   Ú
OtherClassr^  ³  s   † Øˆ
Øˆ
ØˆØ‹r   ra  c                 óþ   • [         R                  " U R                  U R                  5      nU R	                  S1U5        [         R                  " U R                  U R                  5      nU R	                  SS1U5        g )NrX  r_  r`  )r   Údetect_api_mismatchr\  ra  rM   )r   Úmissing_itemss     r   Útest_detect_api_mismatchÚ$TestSupport.test_detect_api_mismatch¹  se   € Ü×3Ò3°D·M±MØ48·O±OóEˆà×Ñ˜,˜¨Ô7ä×3Ò3°D·O±OØ48·M±MóCˆà×Ñ˜,¨Ð6¸ÕFr   c                 ó  • / SQn[         R                  " U R                  U R                  US9nU R	                  [        5       U5        [         R                  " U R                  U R                  US9nU R	                  [        5       U5        g )N)rX  r_  r`  Únot_in_either)Úignore)r   rc  r\  ra  rM   Úset)r   ri  rd  s      r   Ú test_detect_api_mismatch__ignoreÚ,TestSupport.test_detect_api_mismatch__ignoreÂ  si   € ÚMˆä×3Ò3Ø—‘˜tŸ™°vñ?ˆà×Ñœ› Ô.ä×3Ò3Ø—‘ §¡°vñ?ˆà×Ñœ› Õ.r   c                 óâ   • S1nS1n[         R                  " U [        UUS9  SS1n1 Skn[         R                  " U [        SUUS9  U R	                  [
        [         R                  U [        5        g )NÚtempdirÚtemplate)ÚextraÚnot_exportedÚTextTestResultÚinstallHandler>   Ú
load_testsÚTestProgramÚBaseTestSuite)zunittest.resultzunittest.casezunittest.suitezunittest.loaderzunittest.mainzunittest.runnerzunittest.signalszunittest.async_case)r   Úcheck__all__rµ   rX   rW   r  )r   rp  rq  s      r   Útest_check__all__ÚTestSupport.test_check__all__Í  s}   € Ø�ˆØ"�|ˆÜ×Ò˜TÜ%Ø#(Ø*6ò	8ð Øð
ˆò FˆÜ×Ò˜TÜ%ðIð $)Ø*6ò	8ð 	×Ñœ.¬'×*>Ñ*>ÀÄhÕOr   ÚwaitpidÚWNOHANGz need os.waitpid() and os.WNOHANGc                 ó  • [         R                  " 5         [        R                  " 5       nUS:X  a  [        R                  " S5        [         R
                  n S[         l        [        R                  " 5       n[         R                  " [         R                  5       H^  n[         R                  " [         R                  SU5         [         R                  " 5         S S S 5        [         R
                  (       d  M^    O   SU-  nU R                  XSR                  5       5        U R                  [         R
                  5        U[         l        [         R                  " 5         g ! , (       d  f       N�= f! U[         l        f = f)Nr   FÚorig_stderrz2Warning -- reap_children() reaped child process %s)r   Úreap_childrenr{   ÚforkÚ_exitÚenvironment_alteredr   r   Úsleeping_retryÚSHORT_TIMEOUTrˆ   Úprint_warningrm   r,  rº   )r   ÚpidÚwas_alteredr1  Ú_Úmsgs         r   Útest_reap_childrenÚTestSupport.test_reap_childrenå  s  € ô
 	×ÒÔô �gŠg‹iˆØ�!‹8ä�HŠH�QŒKä×1Ñ1ˆð	6Ø*/ŒGÔ'Ü—[’[“]ˆFä×+Ò+¬G×,AÑ,AÖB�Ü×&Ò&¤w×'<Ñ'<¸mÈVÕTÜ×)Ò)Ô+÷ Uô
 ×.×.Ñ.Ùñ Cð GÈÑLˆCØ�M‰M˜#Ÿ™Ó0Ô1Ø�O‰OœG×7Ñ7Ô8à*5ŒGÔ'ô 	×ÒÕ÷! UÕTûð +6ŒGÕ'ús,   ÁA-E3 ÃE"ÃE3 Ã:AE3 Å"
E0	Å,E3 Å3F Nc                 óô  • SU SU S3n[         R                  /UQSPUPn[        R                  R	                  5        VVs0 s H  u  pgUR                  S5      (       a  M  Xg_M!     nnn[        R                  " U[        R                  [        R                  SUS9n	Uc  UnU R                  U	R                  R                  5       [        U5      5        U R                  U	R                  S5        g s  snnf )	Nzfrom test.support import z; print(repr(z()))rÛ   ÚPYTHONT)rh   r1  Úuniversal_newlinesÚenvr   )rg   Ú
executabler{   ÚenvironÚitemsÚ
startswithÚ
subprocessÚrunÚPIPEÚDEVNULLrM   rh   ÚrstripÚreprÚ
returncode)
r   ÚargsÚfuncÚexpectedÚcodeÚcmdÚkeyÚvaluerŽ  Úprocs
             r   Úcheck_optionsÚTestSupport.check_options
  sÚ   € à*¨4¨&°¸d¸VÀ4ÐHˆÜ�~‰~Ð1 Ð1 dÐ1¨DÐ1ˆÜ,.¯J©J×,<Ñ,<Ô,>ô 0Ò,>™j˜cØ—n‘n X×.ó ˆsŠzÑ,>ˆñ 0ä�~Š~˜cÜ%/§_¡_Ü%/×%7Ñ%7Ø15Ø"%ñ	'ˆð
 ÑØˆHØ×Ñ˜Ÿ™×+Ñ+Ó-¬t°H«~Ô>Ø×Ñ˜Ÿ™¨!Õ,ùó0s   ÁC4Á"C4Úcpuc                 ó  • / S/S/S/S/S/S/S/S/S	/S
/S/S/SS// SQSS/SS/SS/SS/SS/4 H-  nU R                  US9   U R                  US5        S S S 5        M/     U R                  / SQSS	/5        g ! , (       d  f       MW  = f)Nz-Bú-sz-Sú-Ez-vz-bú-Pz-qú-Iz-bbz-vvvú-Wignoreú-XÚdev)rª  r«  r¬  ÚfaulthandlerÚ
importtimeÚshowrefcountÚtracemallocztracemalloc=3©ÚoptsÚargs_from_interpreter_flags)r©  r§  r¦  r¨  ©ÚsubTestr¢  ©r   r²  s     r   Ú test_args_from_interpreter_flagsÚ,TestSupport.test_args_from_interpreter_flags  sÎ   € ð
 àˆFØˆFØˆFØˆFØˆFØˆFØˆFØˆFØˆFàˆGØˆHàˆLà�5ˆMÚ%Ø�>Ð"Ø�<Ð Ø�>Ð"Ø�=Ð!Ø�?Ð#ó3
ˆDð6 —‘ 4�Ò(Ø×"Ñ" 4Ð)FÔG÷ )Ñ(ñ7
ð< 	×ÑÒ3Ø8Ø ˜6õ	#÷ )Ö(ús   ÁA9Á9
B	c                 óœ   • / S/S/S/4 H-  nU R                  US9   U R                  US5        S S S 5        M/     g ! , (       d  f       MA  = f)Nz-Oz-OOz-OOOOr±  Ú!optim_args_from_interpreter_flagsr´  r¶  s     r   Ú&test_optim_args_from_interpreter_flagsÚ2TestSupport.test_optim_args_from_interpreter_flags?  sT   € ð ØˆFØˆGØˆIó
ˆDð —‘ 4�Ò(Ø×"Ñ" 4Ð)LÔM÷ )Ñ(ò
÷ )Ö(ús	   œ<¼
A	zUnstable on Apple MobilezUnstable in EmscriptenzUnavailable on WASIc                 ó6  • [         R                  " 5       n[        R                  " [        [        R
                  5      n [         R                  " 5       n[        R                  " U5        U R                  X1-
  S5        g ! [        R                  " U5        f = f©NrÐ   )r   Úfd_countr{   rw   Ú__file__ÚO_RDONLYr¤   rM   )r   Ústartr  Úmores       r   Útest_fd_countÚTestSupport.test_fd_countK  se   € ô ×"Ò"Ó$ˆÜ�WŠW”XœrŸ{™{Ó+ˆð	Ü×%Ò%Ó'ˆDä�HŠH�RŒLØ×Ñ˜™ qÕ)øô �HŠH�R�Lús   Á B  Â Bc                 ó  • [         R                  " 5       n[        R                  " [        R                  SU5         [        R                  " U5        S S S 5        U R                  UR                  5       U5        g ! , (       d  f       N/= f)Nr}  )r   r   r   rˆ   r„  rM   r,  )r   rˆ  rœ  r1  s       r   Úcheck_print_warningÚTestSupport.check_print_warning\  sZ   € Ü—’“ˆÜ×Òœw×4Ñ4°mÀVÕLÜ×!Ò! #Ô&÷ Mà×Ñ˜Ÿ™Ó*¨HÕ5÷ MÕLús   ¼A<Á<
B
c                 óL   • U R                  SS5        U R                  SS5        g )Nrˆ  zWarning -- msg
za
bzWarning -- a
Warning -- b
)rÇ  rZ   s    r   Útest_print_warningÚTestSupport.test_print_warningb  s)   € Ø× Ñ  Ø!3ô	5à× Ñ  Ø!?õ	Ar   c                 óÔ   • [         R                  (       d  [        R                  S:X  a   U R	                  [         R
                  5        g U R                  [         R
                  5        g )NÚwin32)r   Úis_emscriptenrg   Úplatformrz   Úhas_strftime_extensionsrº   rZ   s    r   Útest_has_strftime_extensionsÚ(TestSupport.test_has_strftime_extensionsh  s<   € Ü× × ¤C§L¡L°GÓ$;Ø×ÑœW×<Ñ<Õ=à�O‰OœG×;Ñ;Õ<r   c                 ó^   • [         R                  " S5      n[        R                  " SU5        g )Nap  
            from test import support
            import sys

            def check(cond):
                if not cond:
                    raise AssertionError("test failed")

            # depth 1
            check(support.get_recursion_depth() == 1)

            # depth 2
            def test_func():
                check(support.get_recursion_depth() == 2)
            test_func()

            def test_recursive(depth, limit):
                if depth >= limit:
                    # cannot call get_recursion_depth() at this depth,
                    # it can raise RecursionError
                    return
                get_depth = support.get_recursion_depth()
                print(f"test_recursive: {depth}/{limit}: "
                      f"get_recursion_depth() says {get_depth}")
                check(get_depth == depth)
                test_recursive(depth + 1, limit)

            # depth up to 25
            with support.infinite_recursion(max_depth=25):
                limit = sys.getrecursionlimit()
                print(f"test with sys.getrecursionlimit()={limit}")
                test_recursive(2, limit)

            # depth up to 500
            with support.infinite_recursion(max_depth=500):
                limit = sys.getrecursionlimit()
                print(f"test with sys.getrecursionlimit()={limit}")
                test_recursive(2, limit)
        rÛ   )rÝ   rÞ   r   rÜ   )r   r�  s     r   Útest_get_recursion_depthÚ$TestSupport.test_get_recursion_depthn  s(   € ä�Šð & ó &ˆôN 	×&Ò& t¨TÕ2r   c                 óÎ  ^• U4S jmS H\  n[         R                  " U5         [         R                  " 5       nT" U5         T" US-   5        U R                  S5        S S S 5        M^     [         R                  " S5          T" S5        U R                  S5        S S S 5        g ! [         a     NRf = f! , (       d  f       M¹  = f! [         a     N7f = f! , (       d  f       g = f)Nc                 ó,   >• U (       a  T" U S-
  5        g g r¾  r   )ÚdepthÚrecursive_functions    €r   rÙ  Ú6TestSupport.test_recursion.<locals>.recursive_function›  s   ø€ ÞÙ" 5¨1¡9Õ-ð r   )r  é   éú   iÄ	  rÐ   zRecursionError was not raisedr  )r   Úinfinite_recursionÚget_recursion_availableÚfailÚRecursionError)r   Ú	max_depthÚ	availablerÙ  s      @r   Útest_recursionÚTestSupport.test_recursion™  sÏ   ø€ õ	.ó ,ˆIÜ×+Ò+¨IÕ6Ü#×;Ò;Ó=�	ñ # 9Ô-ð
?Ù& y°1¡}Ô5ð —I‘IÐ=Ô>÷ 7Ñ6ñ ,ô$ ×'Ò'¨Õ*ð;Ù" 1Ô%ð —	‘	Ð9Ô:÷ +Ð*øô &ó Ùðú÷ 7Ö6ûô( "ó Ùðú÷ +Õ*ús_   £B4ÁB$ÁB4Â CÂCÂ
CÂ$
B1Â.B4Â0B1Â1B4Â4
C	Ã
CÃCÃCÃCÃ
C$c                 ó@  • [         R                  nSnUS-  nUS-  nUS-  nU R                  U" S5      S5        U R                  U" S5      SU-  5        U R                  U" S5      [        SU-  5      5        U R                  U" S5      [        S	U-  5      5        U R                  U" S
5      U5        S HA  nU R	                  US9   U R                  [        5         U" U5        S S S 5        S S S 5        MC     g ! , (       d  f       N= f! , (       d  f       Mf  = f)Ni   Ú0kr   Ú3kr  z2.4mg333333@Ú4gé   Ú1t)Ú Ú3z3.5.10kÚ10x)Úlimit)r   Ú_parse_memlimitrM   Úintrµ  rW   Ú
ValueError)r   ÚparseÚKiBÚMiBÚGiBÚTiBrî  s          r   Útest_parse_memlimitÚTestSupport.test_parse_memlimit¹  sï   € Ü×'Ñ'ˆØˆØ�D‰jˆØ�D‰jˆØ�D‰jˆØ×Ñ™˜t› aÔ(Ø×Ñ™˜t› a¨#¡gÔ.Ø×Ñ™˜v›¬¨C°#©I«Ô7Ø×Ñ™˜t›¤c¨!¨c©'£lÔ3Ø×Ñ™˜t› cÔ*ã0ˆEØ—‘ E�Ò*Ø×&Ñ&¤zÕ2Ù˜%”L÷ 3÷ +Ñ*ò 1ç2Õ2ú÷ +Ö*ús$   Ã	DÃ	C=Ã(DÃ=
DÄDÄ
D	c                 ó0  • SnSn[         R                  n[         R                  n [        R                  S:”  aÈ  [         R
                  " S5        U R                  [         R                  U5        U R                  [         R                  U5        SS-  U-  n[         R
                  " U S35        U R                  [         R                  [        R                  5        U R                  [         R                  XR-  5        Od[         R
                  " S5        U R                  [         R                  [        R                  5        U R                  [         R                  U5        U[         l        U[         l        g ! U[         l        U[         l        f = f)Nl        l        rè  r6   éd   Út)r   Ú
max_memuseÚreal_max_memuserg   ÚmaxsizeÚset_memlimitrM   )r   Ú_4GiBrö  Úold_max_memuseÚold_real_max_memuseÚbigs         r   Útest_set_memlimitÚTestSupport.test_set_memlimitÊ  s#  € ØˆØˆÜ ×+Ñ+ˆÜ%×5Ñ5Ðð	:Ü�{‰{˜UÓ"Ü×$Ò$ TÔ*Ø× Ñ ¤×!3Ñ!3°UÔ;Ø× Ñ ¤×!8Ñ!8¸%Ô@à˜‘f ‘m�Ü×$Ò$¨ u¨A YÔ/Ø× Ñ ¤×!3Ñ!3´S·[±[ÔAØ× Ñ ¤×!8Ñ!8¸#¹)ÕDä×$Ò$ TÔ*Ø× Ñ ¤×!3Ñ!3´S·[±[ÔAØ× Ñ ¤×!8Ñ!8¸%Ô@à!/ŒGÔØ&9ŒGÕ#øð "0ŒGÔØ&9ŒGÕ#ús   ¦E E= Å=Fc                 óÌ  • [         R                  " S5      nU(       d  [         R                  " S5      n[        R                  R	                  U5      n[        R                  R                  U5      (       d  U R                  SU< 35        [        R                  R                  US5      n[        R                  R                  U5      (       d  U R                  SU< S35        SS1n[        R                  " U5      nU R                  [        R                  " X5      US1-  5        [        R                  R                  US	5      nU R                  [        R                  " U[        R                  " U5      5      USS
1-  5        [        R                  R                  US5      nU R                  [        R                  " U[        R                  " U5      5      U5        g )NÚ
abs_srcdirÚsrcdirz,cannot access Python source code directory: ÚModulesz landmark is missingz.gitr”   ÚbuildÚDocÚvenvÚObjects)Ú	sysconfigÚget_config_varr{   r|   Úabspathr}   ÚskipTestr…   ÚlistdirrM   r   Úcopy_python_src_ignore)r   Úsrc_dirÚlandmarkÚignoredÚnamesr|   s         r   Útest_copy_python_src_ignoreÚ'TestSupport.test_copy_python_src_ignoreá  sv  € ä×*Ò*¨<Ó8ˆÞÜ×.Ò.¨xÓ8ˆGÜ—'‘'—/‘/ 'Ó*ˆô �w‰w�~‰~˜g×&Ñ&Ø�M‰Mð Ø%™[ð*ô +ô —7‘7—<‘< ¨Ó3ˆÜ�w‰w�~‰~˜h×'Ñ'Ø�M‰Mð Ø&™\Ð)=ð?ô @ð ˜=Ð)ˆÜ—
’
˜7Ó#ˆØ×Ñœ×7Ò7¸ÓGØ  G 9Ñ,ô	.ô �w‰w�|‰|˜G UÓ+ˆØ×Ñœ×7Ò7¸¼b¿jºjÈÓ>NÓOØ  G¨VÐ#4Ñ4ô	6ô �w‰w�|‰|˜G YÓ/ˆØ×Ñœ×7Ò7¸¼b¿jºjÈÓ>NÓOØ õ	"r   c                 óZ   • [         R                  " 5       nU R                  U[        5        g r   )r   Úlinked_to_muslrA  rC  )r   Úlinkeds     r   Útest_linked_to_muslÚTestSupport.test_linked_to_musl  s    € Ü×'Ò'Ó)ˆØ×Ñ˜f¤dÕ+r   r   r   )Lr#   r$   r%   r&   Úclassmethodr@   rD   rQ   r[   r_   rb   rX   Úskipri   rq   r   r�   rž   r   Úrequires_working_socketr§   r¬   r±   r½   rÀ   rË   rØ   Úrequires_forkrß   ræ   rï   rô   rø   r   r  r	  r  r  r!  r&  r-  r2  r:  r>  rD  rO  rT  r\  ra  re  rk  rx  Ú
skipUnlessrM  r{   r‰  Úrequires_subprocessr¢  Úrequires_resourcer·  r»  ÚskipIfÚis_apple_mobilerÎ  Úis_wasirÄ  rÇ  rÊ  rÑ  rÔ  rã  r÷  r  r  r  r'   r   r   r   r2   r2   6   s‘  † Øñ<ó ð<ð ñ<ó ð<ò5ò>ò
4òQð
 ‡]‚]Ð&Ó'ñDó (ðDò/ò!ò2ò0,ð" ×$Ò$Ó&ñó 'ðð ×$Ò$Ó&ñó 'ðð
 ×$Ò$Ó&ñó 'ðò)ò3ò ò 
ð0 ×ÒÓñó ðò44ò4ò
ò0
ò(,ò4òRò:ò4ò
.ò
*ò7ò
7ò
,òòCò,ò"!÷ñ ÷ñ òGò	/òPð0 ×Ò™  YÓ/×J±G¸BÀ	Ó4JØ;ó=à×ÒÓñ  ó ó=ð  ðD × Ò Ó"ó-ó #ð-ð ×Ò˜uÓ%ñ"#ó &ð"#òH
Nð ‡_‚_�W×,Ñ,Ð.HÓIØ‡_‚_�W×*Ñ*Ð,DÓEØ‡_‚_�W—_‘_Ð&;Ó<ñ*ó =ó Fó Jð*ò6òAò=ò)3òV;ò@!ò":ò.""õH,r   r2   Ú__main__)#Ú
contextlibr  r˜   r   r*   r{   rÊ   r¡   rŠ   r“  rg   r  rµ   rÝ   rX   r8   Útestr   Útest.supportr   r   r   r   r   Útest.support.testcaser	   rx   ÚStreamHandlerr   Úcontextmanagerr0   ÚTestCaser2   r#   Úmainr   r   r   Ú<module>r2     s°   ðÛ Û Û Û 	Û Û 	Û Û Û Û Û 
Û Û Û Û Û å Ý &Ý "Ý &Ý &Ý (Ý 1à	×	Ñ	€ô˜×-Ñ-ô ð ×Ññ+ó ð+ôQ,�(×#Ñ# _ô Q,ðR ˆzÓØ‡M‚M…Oð r   