Ë
    òT•j5l  ã                   ó,  — d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlZd dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ ej,                  Z G d„ d	ej.                  «      Zed
k(  r ej4                  «        yy)é    N)Úsupport)Úimport_helper)Ú	os_helper)Úscript_helper)Úsocket_helper)Úwarnings_helperc                   óœ  — e Zd Zed„ «       Zed„ «       Zd„ Zd„ Zd„ Zd„ Z	 e
j                  d«      d„ «       Zd	„ Zd
„ Zd„ Zd„ Z ej$                  «       d„ «       Z ej$                  «       d„ «       Z ej$                  «       d„ «       Zd„ Zd„ Zd„ Zd„ Z ej4                  «       d„ «       Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#d„ Z$d„ Z%d„ Z&d „ Z'd!„ Z(d"„ Z)d#„ Z*d$„ Z+d%„ Z,d&„ Z- G d'„ d(«      Z. G d)„ d*«      Z/d+„ Z0d,„ Z1d-„ Z2 e
jf                   e4e5d.«      xr	  e4e5d/«      d0«       ej4                  «       d1„ «       «       Z6 ejn                  «       dBd3„«       Z8 ejr                  d4«      d5„ «       Z:d6„ Z; e
jx                  ejz                  d7«       e
jx                  ej|                  d8«      d9„ «       «       Z?d:„ Z@d;„ ZAd<„ ZBd=„ ZCd>„ ZDd?„ ZEd@„ ZFdA„ ZGy2)CÚTestSupportc                 óð   — t        t        j                  «      }t        j                  dd¬«      | _        t        j                  t        d¬«      | _        t        t        j                  «      |dz   k(  sJ ‚y )Nztest.support.warnings_helperz.*used in test_support.*)Úlikez!.*You should NOT be seeing this.*é   )ÚlenÚwarningsÚfiltersr   Úignore_deprecations_fromÚ_warnings_helper_tokenÚ__name__Ú_test_support_token©ÚclsÚorig_filter_lens     ú(/usr/lib/python3.12/test/test_support.pyÚ
setUpClasszTestSupport.setUpClass   sf   € äœh×.Ñ.Ó/ˆÜ%,×%EÑ%EØ*Ð1Kô&
ˆÔ"ô #*×"BÑ"BÜÐ>ô#
ˆÔô ”8×#Ñ#Ó$¨¸!Ñ(;Ò;Ð;Ñ;ó    c                 óÌ   — t        t        j                  «      }t        j                  | j
                  | j                  «       t        t        j                  «      |dz
  k(  sJ ‚y )Nr   )r   r   r   r   Úclear_ignored_deprecationsr   r   r   s     r   ÚtearDownClasszTestSupport.tearDownClass&   sR   € äœh×.Ñ.Ó/ˆÜ×*Ñ*Ø×&Ñ&Ø×#Ñ#ô	
ô ”8×#Ñ#Ó$¨¸!Ñ(;Ò;Ð;Ñ;r   c                 ó<  — t        j                  d¬«      5 }t        j                  «        t        j                  dt
        «       |D �cg c]  }t        |j                  «      ‘Œ }}ddd«       | j                  t        «      d|«       yc c}w # 1 sw Y   Œ+xY w)z9Test support.ignore_deprecations_from() silences warningsT)ÚrecordzYou should NOT be seeing this.Nr   )
r   Úcatch_warningsr   Ú_warn_about_deprecationÚwarnÚDeprecationWarningÚstrÚmessageÚassertEqualr   )ÚselfÚwarning_objsÚwÚmessagess       r   Ú$test_ignored_deprecations_are_silentz0TestSupport.test_ignored_deprecations_are_silent/   s{   € ä×$Ñ$¨DÔ1ð 	>°\Ü×3Ñ3Ô5Ü�M‰MÐ:Ô<NÔOØ0<Ö=¨1œ˜AŸI™I�Ð=ˆHÐ=÷	>ð 	×Ñœ˜X›¨¨8Õ4ùò >÷	>ð 	>ús   —3BÁ
BÁ&BÂBÂBc                 óŒ   — t        j                  d«       | j                  t        j                  t         j                  d«       y )NÚftplibÚfoo)r   Úimport_moduleÚassertRaisesÚunittestÚSkipTest©r'   s    r   Útest_import_modulezTestSupport.test_import_module7   s1   € Ü×#Ñ# HÔ-Ø×Ñœ(×+Ñ+Ü'×5Ñ5°uõ	>r   c                 ó.   — t        j                  d«       y )Nr-   )r   Úimport_fresh_moduler3   s    r   Útest_import_fresh_modulez$TestSupport.test_import_fresh_module<   s   € Ü×)Ñ)¨(Õ3r   c                 óÄ   — | j                  t        j                  | d«      | j                  «       | j	                  t
        j                  t        j                  | d«       y )NÚtest_get_attributer.   )r&   r   Úget_attributer9   r0   r1   r2   r3   s    r   r9   zTestSupport.test_get_attribute?   sI   € Ø×Ñœ×.Ñ.¨tÐ5IÓJØ×/Ñ/ô	1à×Ñœ(×+Ñ+¬W×-BÑ-BÀDÈ%ÕPr   zfailing buildbotsc                 óh   — | j                  t        j                  «       t        j                  «       y ©N)r&   r   Úget_original_stdoutÚsysÚstdoutr3   s    r   Útest_get_original_stdoutz$TestSupport.test_get_original_stdoutD   s   € à×Ñœ×4Ñ4Ó6¼¿
¹
ÕCr   c                 ó¶   — dd l }| j                  dt        j                  «       t	        j
                  d«       | j                  dt        j                  «       y )Nr   Úsched)rB   ÚassertInr>   Úmodulesr   ÚunloadÚassertNotIn)r'   rB   s     r   Útest_unloadzTestSupport.test_unloadH   s9   € ÛØ�‰�gœsŸ{™{Ô+Ü×Ñ˜WÔ%Ø×Ñ˜¤#§+¡+Õ.r   c                 ó  — t        t        dd¬«      5 }	 d d d «       t        j                  t        «       | j	                  t
        j                  j                  t        «      «       t        j                  t        «       y # 1 sw Y   ŒnxY w)Nr)   úutf-8©Úencoding)ÚopenÚTESTFNr   ÚunlinkÚassertFalseÚosÚpathÚexists)r'   Úfs     r   Útest_unlinkzTestSupport.test_unlinkN   s_   € Ü”&˜#¨Ô0ð 	°AØ÷	ä×ÑœÔ Ø×ÑœŸ™Ÿ™¬Ó/Ô0Ü×ÑœÕ ÷		ð 	ús   “BÂBc                 óÚ  — t         j                  dz   }t        j                  j	                  |d«      }t        j
                  |«       t        j
                  |«       t        j                  |«       | j                  t        j                  j                  |«      «       t        j                  t        dd«      5  t        j                  |«       d d d «       t        j
                  |«       t        j
                  |«       t        j                  |t        j                  t        j                  z  «       t        j                  t        dd«      5  t        j                  |«       d d d «       | j                  t        j                  j                  |«      «       t        j
                  |«       t        j
                  |«       t        j                  |d«       t        j                  t        dd«      5  t        j                  |«       d d d «       | j                  t        j                  j                  |«      «       y # 1 sw Y   �ŒxxY w# 1 sw Y   ŒìxY w# 1 sw Y   ŒQxY w)NÚdÚsubdirÚverboser   )r   rM   rP   rQ   ÚjoinÚmkdirÚrmtreerO   rR   r   Ú	swap_attrÚchmodÚstatÚS_IRUSRÚS_IXUSR)r'   ÚdirpathÚ
subdirpaths      r   Útest_rmtreezTestSupport.test_rmtreeU   s—  € Ü×"Ñ" SÑ(ˆÜ—W‘W—\‘\ '¨8Ó4ˆ
Ü
�‰�ÔÜ
�‰�ÔÜ×Ñ˜Ô!Ø×ÑœŸ™Ÿ™¨Ó0Ô1Ü×Ñœw¨	°1Ó5ñ 	&Ü×Ñ˜WÔ%÷	&ô 	�‰�ÔÜ
�‰�ÔÜ
�‰�œ$Ÿ,™,¤t§|¡|Ñ3Ô4Ü×Ñœw¨	°1Ó5ñ 	&Ü×Ñ˜WÔ%÷	&à×ÑœŸ™Ÿ™¨Ó0Ô1ä
�‰�ÔÜ
�‰�ÔÜ
�‰�˜!ÔÜ×Ñœw¨	°1Ó5ñ 	&Ü×Ñ˜WÔ%÷	&à×ÑœŸ™Ÿ™¨Ó0Õ1÷	&ñ 	&ú÷	&ð 	&ú÷	&ð 	&ús$   Â<IÅIÇ;I!ÉIÉIÉ!I*c                 óÒ  — t         dz   }t        |dd¬«      5 }t        d|¬«       d d d «       t        j                  j                  dt        j                  «       t        j                  «        	 t        t         «      }| j                  t         t        j                  «       t        j                  t         «       | j                  t         t        j                  «       t        j                  d= t!        j"                  |«       t!        j$                  d«       y # 1 sw Y   ŒøxY w# t        j                  d= t!        j"                  |«       t!        j$                  d«       w xY w)	Nz.pyr)   rI   rJ   zfoo = 1©Úfiler   Ú__pycache__)rM   rL   Úprintr>   rQ   ÚinsertrP   ÚcurdirÚ	importlibÚinvalidate_cachesÚ
__import__rC   rD   r   ÚforgetrF   r   rN   r[   )r'   Úmod_filenamerS   Úmods       r   Útest_forgetzTestSupport.test_forgetm   sî   € Ü ‘~ˆÜ�, ¨gÔ6ð 	%¸!Ü�) !Õ$÷	%ä�‰�‰˜œ2Ÿ9™9Ô%Ü×#Ñ#Ô%ð		,ÜœVÓ$ˆCØ�M‰Mœ&¤#§+¡+Ô.ä× Ñ ¤Ô(Ø×ÑœV¤S§[¡[Ô1ä—‘˜�Ü×Ñ˜\Ô*Ü×Ñ˜]Õ+÷	%ð 	%ûô —‘˜�Ü×Ñ˜\Ô*Ü×Ñ˜]Õ+ús   ˜DÁ1A0D) ÄD&Ä)=E&c                 ón   — t        j                  t        j                  df«      }|j	                  «        y )Nr   )ÚsocketÚcreate_serverr   ÚHOSTÚclose©r'   Úss     r   Ú	test_HOSTzTestSupport.test_HOST~   s&   € ä× Ñ ¤-×"4Ñ"4°aÐ!8Ó9ˆØ	�‰�	r   c                 ó–   — t        j                  «       }t        j                  t         j                  |f«      }|j                  «        y r<   )r   Úfind_unused_portrs   rt   ru   rv   )r'   Úportrx   s      r   Útest_find_unused_portz!TestSupport.test_find_unused_portƒ   s4   € ä×-Ñ-Ó/ˆÜ× Ñ ¤-×"4Ñ"4°dÐ!;Ó<ˆØ	�‰�	r   c                 ó–   — t        j                   «       }t        j                  |«       |j                  «        |j	                  «        y r<   )rs   r   Ú	bind_portÚlistenrv   rw   s     r   Útest_bind_portzTestSupport.test_bind_port‰   s-   € ä�M‰M‹OˆÜ×Ñ Ô"Ø	�‰Œ
Ø	�‰�	r   c                 ó–  — t        j                  «       }t        j                  j	                  |«      }	 t        j                  j                  |d«      }| j                  t        j                  j                  |«      «       t        j                  |«      5 }| j                  ||«       | j                  t        j                  j                  |«      «       ddd«       | j                  t        j                  j                  |«      «       t        j                  |«       y# 1 sw Y   ŒMxY w# t        j                  |«       w xY w)z8Test that temp_dir() creates and destroys its directory.ÚtempN)ÚtempfileÚmkdtemprP   rQ   ÚrealpathrY   rO   Úisdirr   Útemp_dirr&   Ú
assertTruer[   )r'   Ú
parent_dirrQ   Ú	temp_paths       r   Útest_temp_dirzTestSupport.test_temp_dir’   sâ   € ä×%Ñ%Ó'ˆ
Ü—W‘W×%Ñ% jÓ1ˆ
ð	)Ü—7‘7—<‘< 
¨FÓ3ˆDØ×ÑœRŸW™WŸ]™]¨4Ó0Ô1Ü×#Ñ# DÓ)ð 5¨YØ× Ñ  ¨DÔ1Ø—‘¤§¡§¡¨dÓ 3Ô4÷5ð ×ÑœRŸW™WŸ]™]¨4Ó0Ô1ä×Ñ˜ZÕ(÷5ð 5ûô
 ×Ñ˜ZÕ(ús%   µA#D1 ÂAD%Ã6D1 Ä%D.Ä*D1 Ä1Ec                 ó  — t        j                  «       5 }| j                  t        j                  j                  |«      «       ddd«       | j                  t        j                  j                  «      «       y# 1 sw Y   Œ8xY w)zTest passing no path.N)r   rˆ   r‰   rP   rQ   r‡   rO   )r'   r‹   s     r   Útest_temp_dir__path_nonez$TestSupport.test_temp_dir__path_none¡   sY   € ä×ÑÓ!ð 	6 YØ�O‰OœBŸG™GŸM™M¨)Ó4Ô5÷	6à×ÑœŸ™Ÿ™ yÓ1Õ2÷	6ð 	6ús   •/A;Á;Bc                 ó¶  — d„ }t        j                  «       }t        j                  j	                  |«      }	 | j                  t        j                  j                  |«      «       | j                  t        ||«       | j                  t        j                  j                  |«      «       t        j                  |«       y# t        j                  |«       w xY w)z-Test passing a directory that already exists.c                 ó\   — t        j                  | «      5 }t        d«      ‚# 1 sw Y   y xY w©Nzshould not get here)r   rˆ   Ú	Exception)rQ   r‹   s     r   Úcall_temp_dirzMTestSupport.test_temp_dir__existing_dir__quiet_default.<locals>.call_temp_dir©   s.   € Ü×#Ñ# DÓ)ð 7¨YÜÐ 5Ó6Ð6÷7ð 7úó   –"¢+N)r„   r…   rP   rQ   r†   r‰   r‡   r0   ÚFileExistsErrorÚshutilr[   )r'   r“   rQ   s      r   Ú*test_temp_dir__existing_dir__quiet_defaultz6TestSupport.test_temp_dir__existing_dir__quiet_default§   s�   € ò	7ô ×ÑÓ!ˆÜ�w‰w×Ñ Ó%ˆð	 Ø�O‰OœBŸG™GŸM™M¨$Ó/Ô0Ø×Ñœo¨}¸dÔCà�O‰OœBŸG™GŸM™M¨$Ó/Ô0ä�M‰M˜$ÕøŒF�M‰M˜$Õús   ¸A3C ÃCc                 óâ  — t        j                  «       }t        j                  j	                  |«      }	 t        j                  «       5 }t        j                  |d¬«      5 }| j                  ||«       ddd«       |j                  D �cg c]  }t        |j                  «      ‘Œ }}ddd«       | j                  t        j                  j                  |«      «       t        j                   |«       | j                  t#        «      d|«       |d   }| j                  |j%                  d|›d�«      |«       y# 1 sw Y   ŒÇxY wc c}w # 1 sw Y   Œ¤xY w# t        j                   |«       w xY w)z=Test passing a directory that already exists with quiet=True.T©ÚquietNé   r   z5tests may fail, unable to create temporary directory ú: )r„   r…   rP   rQ   r†   r   Úcheck_warningsr   rˆ   r&   r   r$   r%   r‰   r‡   r–   r[   r   Ú
startswith)r'   rQ   Úrecorderr‹   r)   r   r"   s          r   Ú'test_temp_dir__existing_dir__quiet_truez3TestSupport.test_temp_dir__existing_dir__quiet_true·   s,  € ä×ÑÓ!ˆÜ�w‰w×Ñ Ó%ˆð	 Ü ×/Ñ/Ó1ð G°XÜ×'Ñ'¨°DÔ9ð 6¸YØ×$Ñ$ T¨9Ô5÷6à4<×4EÑ4EÖF¨qœC §	¡	�NÐF�ÐF÷Gð
 �O‰OœBŸG™GŸM™M¨$Ó/Ô0ä�M‰M˜$Ôà×Ñœ˜X›¨¨8Ô4Ø˜‰{ˆØ�‰˜Ÿ™ð +?Ø?C¸hÀbð)Jó Kàõ	÷6ð 6üâF÷Gð Gûô �M‰M˜$ÕúsG   µE Á	EÁ!D:Á4EÂ
EÂ&EÂ(6E Ä:E	Ä?EÅEÅE ÅE.c                 óV   — t        j                  dt        j                  d«      «       y)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Údedentr3   s    r   Útest_temp_dir__forked_childz'TestSupport.test_temp_dir__forked_childÌ   s$   € ô
 	×&Ñ& t¬X¯_©_ð >ó .õ 	r   c                 ó†  — t        j                  «       }t        j                  «       5 }t        j                  |«      5 }| j                  ||«       | j                  t        j                  «       |«       d d d «       d d d «       | j                  t        j                  «       |«       y # 1 sw Y   Œ6xY w# 1 sw Y   Œ:xY wr<   )rP   Úgetcwdr   rˆ   Ú
change_cwdr&   )r'   Úoriginal_cwdr‹   Únew_cwds       r   Útest_change_cwdzTestSupport.test_change_cwdç   s“   € Ü—y‘y“{ˆä×ÑÓ!ð 	7 YÜ×%Ñ% iÓ0ð 7°GØ× Ñ  ¨)Ô4Ø× Ñ ¤§¡£¨gÔ6÷7÷	7ð
 	×ÑœŸ™› lÕ3÷	7ð 7ú÷	7ð 	7ús"   ©B7¿7B+Á6B7Â+B4	Â0B7Â7C c                 ó:  — t        j                  «       }d„ }t        j                  «       5 }t         j                  j                  |d«      }| j                  t        ||«       ddd«       | j                  t        j                  «       |«       y# 1 sw Y   Œ.xY w)z&Test passing a non-existent directory.c                 ó\   — t        j                  | «      5 }t        d«      ‚# 1 sw Y   y xY wr‘   )r   r©   r’   )rQ   r«   s     r   Úcall_change_cwdzFTestSupport.test_change_cwd__non_existent_dir.<locals>.call_change_cwdõ   s.   € Ü×%Ñ% dÓ+ð 7¨wÜÐ 5Ó6Ð6÷7ð 7úr”   Údoes_not_existN)	rP   r¨   r   rˆ   rQ   rY   r0   ÚFileNotFoundErrorr&   )r'   rª   r¯   rŠ   Únon_existent_dirs        r   Ú!test_change_cwd__non_existent_dirz-TestSupport.test_change_cwd__non_existent_dirñ   s{   € ä—y‘y“{ˆò	7ô ×ÑÓ!ð 	0 ZÜ!Ÿw™wŸ|™|¨JÐ8HÓIÐØ×ÑÔ/°Ø.ô0÷	0ð
 	×ÑœŸ™› lÕ3÷	0ð 	0ús   ¬8BÂBc                 óÂ  — t        j                  «       }t        j                  «       5 }t         j                  j                  |d«      }t        j                  «       5 }t        j                  |d¬«      5 }| j                  ||«       | j                  t        j                  «       |«       ddd«       |j                  D �cg c]  }t        |j                  «      ‘Œ }}ddd«       ddd«       | j                  t        «      d|«       |d   }| j                  |j                  d›d�«      |«       y# 1 sw Y   ŒŒxY wc c}w # 1 sw Y   ŒixY w# 1 sw Y   ŒmxY w)	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œ   )rP   r¨   r   rˆ   rQ   rY   r   r�   r©   r&   r   r$   r%   r   r‰   rž   )	r'   rª   rŠ   Úbad_dirrŸ   r«   r)   r   r"   s	            r   Ú-test_change_cwd__non_existent_dir__quiet_truez9TestSupport.test_change_cwd__non_existent_dir__quiet_true   s3  € ä—y‘y“{ˆä×ÑÓ!ð 	G ZÜ—g‘g—l‘l :Ð/?Ó@ˆGÜ ×/Ñ/Ó1ð G°XÜ×)Ñ)¨'¸Ô>ð ;À'Ø×$Ñ$ W¨lÔ;Ø×$Ñ$¤R§Y¡Y£[°'Ô:÷;ð 5=×4EÑ4EÖF¨qœC §	¡	�NÐF�ÐF÷	G÷	Gð 	×Ñœ˜X›¨¨8Ô4Ø˜‰{ˆØ�‰˜Ÿ™ð +.à.5¨[¸ð)<ó =ð õ	÷;ð ;üò G÷	Gð Gú÷	Gð 	GúsG   ©5EÁE	Á67D8Â-E	ÃEÃE	Ã!EÄ8EÄ=E	Å	E	ÅEÅEc                 ó°  — t         dz   }t        j                  «       5 }t        j                  |d¬«      5  	 ddd«       |j
                  D �cg c]  }t        |j                  «      ‘Œ }}ddd«       | j                  t        «      d|«       |d   }| j                  |j                  d|›d�«      |«       y# 1 sw Y   Œ„xY wc c}w # 1 sw Y   ŒaxY w)	z0Check the warning message when os.chdir() fails.Ú_does_not_existT)rQ   rš   Nr›   r   rµ   rœ   )rM   r   r�   r   r©   r   r$   r%   r&   r   r‰   rž   )r'   rQ   rŸ   r)   r*   Úmsgs         r   Útest_change_cwd__chdir_warningz*TestSupport.test_change_cwd__chdir_warning  sÍ   € äÐ)Ñ)ˆÜ×+Ñ+Ó-ð 	C°Ü×%Ñ%¨4°tÔ<ñ Ø÷à08×0AÑ0AÖB¨1œ˜AŸI™I�ÐBˆHÐB÷	Cð
 	×Ñœ˜X›¨¨8Ô4Ø�q‰kˆØ�‰˜Ÿ™ð *-à-1¨H°Bð(8ó 9ð õ	÷ð üâB÷	Cð 	Cús-   žC¶B;¸CÁCÁ*CÂ;C	Ã CÃCc                 óÀ  — t        j                  «       }t        j                  t        ¬«      5  | j                  t         j                  j                  t        j                  «       «      t        «       d d d «       | j                  t         j                  j                  t        «      «       | j                  t        j                  «       |«       y # 1 sw Y   Œ`xY w)N©Úname)
rP   r¨   r   Útemp_cwdrM   r&   rQ   ÚbasenamerO   rR   )r'   Úheres     r   Útest_temp_cwdzTestSupport.test_temp_cwd&  sŠ   € Ü�y‰y‹{ˆÜ×Ñ¤VÔ,ñ 	DØ×ÑœRŸW™W×-Ñ-¬b¯i©i«kÓ:¼FÔC÷	Dà×ÑœŸ™Ÿ™¬Ó/Ô0Ø×ÑœŸ™› dÕ+÷	Dð 	Dús   ¯ACÃCc                 ó’  — t        j                  «       }t        j                  d¬«      5 }| j	                  ||«       | j                  t         j                  j                  |«      «       | j                  t        j                  «       |«       ddd«       | j                  t        j                  «       |«       y# 1 sw Y   Œ.xY w)z Test passing None to temp_cwd().Nr½   )	rP   r¨   r   r¿   ÚassertNotEqualr‰   rQ   r‡   r&   )r'   rª   r«   s      r   Útest_temp_cwd__name_nonez$TestSupport.test_temp_cwd__name_none.  s‰   € ä—y‘y“{ˆÜ×Ñ TÔ*ð 	3¨gØ×Ñ ¨Ô6Ø�O‰OœBŸG™GŸM™M¨'Ó2Ô3Ø×ÑœRŸY™Y›[¨'Ô2÷	3ð 	×ÑœŸ™› lÕ3÷		3ð 	3ús   «A%B=Â=Cc                 óV   — | j                  t        j                  ddddœ«      d«       y )Né   r   r›   )rÇ   r   r›   z{1: 1, 2: 2, 3: 3})r&   r   Úsortdictr3   s    r   Útest_sortdictzTestSupport.test_sortdict7  s$   € Ø×Ñœ×)Ñ)¨Q°!°q©/Ó:Ð<PÕQr   c                 ó  — t        j                  «       }| j                  t        «      5 }t	        j
                  |d«       d d d «       | j                  j                  j                  t        j                  «       y # 1 sw Y   Œ>xY w)Ns   foo)
r   Úmake_bad_fdr0   ÚOSErrorrP   Úwriter&   Ú	exceptionÚerrnoÚEBADF)r'   ÚfdÚcms      r   Útest_make_bad_fdzTestSupport.test_make_bad_fd:  sa   € Ü×"Ñ"Ó$ˆØ×ÑœwÓ'ð 	!¨2Ü�H‰H�R˜Ô ÷	!à×Ñ˜Ÿ™×+Ñ+¬U¯[©[Õ9÷	!ð 	!ús   ªA>Á>Bc                 ó¶   — t        j                  | ddd¬«       | j                  t        «      5  t        j                  | d«       d d d «       y # 1 sw Y   y xY w)Nz	def classr›   é   )ÚlinenoÚoffsetzx=1)r   Úcheck_syntax_errorr0   ÚAssertionErrorr3   s    r   Útest_check_syntax_errorz#TestSupport.test_check_syntax_error@  sI   € Ü×"Ñ" 4¨¸QÀqÕIØ×Ñœ~Ó.ñ 	4Ü×&Ñ& t¨UÔ3÷	4÷ 	4ñ 	4ús   ¯AÁAc                 ó„   — dd l }t        j                  d«      5   |j                  d«       d d d «       y # 1 sw Y   y xY w)Nr   Úpprint)rk   r   ÚCleanImportr/   )r'   rk   s     r   Útest_CleanImportzTestSupport.test_CleanImportE  s8   € ÛÜ×&Ñ& xÓ0ñ 	.Ø#ˆI×#Ñ# HÔ-÷	.÷ 	.ñ 	.ús   š6¶?c                 óZ  — t        j                  dd«      5  | j                  dt        j                  «       | j                  dt        j                  «       d d d «       | j                  dt        j                  «       | j                  dt        j                  «       y # 1 sw Y   ŒJxY w)Nr.   Úbar)r   ÚDirsOnSysPathrC   r>   rQ   rF   r3   s    r   Útest_DirsOnSysPathzTestSupport.test_DirsOnSysPathJ  su   € Ü×(Ñ(¨°Ó6ñ 	+Ø�M‰M˜%¤§¡Ô*Ø�M‰M˜%¤§¡Ô*÷	+ð 	×Ñ˜¤§¡Ô)Ø×Ñ˜¤§¡Õ)÷		+ð 	+ús   —AB!Â!B*c                 ó¬   — t        j                  «       5 }t        d«       d d d «       | j                  j	                  «       d«       y # 1 sw Y   Œ*xY w)NÚhelloúhello
)r   Úcaptured_stdoutrh   r&   Úgetvalue)r'   r?   s     r   Útest_captured_stdoutz TestSupport.test_captured_stdoutQ  sC   € Ü×$Ñ$Ó&ð 	¨&Ü�'ŒN÷	à×Ñ˜Ÿ™Ó*¨IÕ6÷	ð 	ús   •A
Á
Ac                 óÌ   — t        j                  «       5 }t        dt        j                  ¬«       d d d «       | j                  j                  «       d«       y # 1 sw Y   Œ*xY w)Nrä   re   rå   )r   Úcaptured_stderrrh   r>   Ústderrr&   rç   )r'   rë   s     r   Útest_captured_stderrz TestSupport.test_captured_stderrV  sJ   € Ü×$Ñ$Ó&ð 	,¨&Ü�'¤§
¡
Õ+÷	,à×Ñ˜Ÿ™Ó*¨IÕ6÷	,ð 	,ús   •AÁA#c                 óÒ   — t        j                  «       5 }|j                  d«       |j                  d«       t	        «       }d d d «       | j                  d«       y # 1 sw Y   ŒxY w)Nrå   r   rä   )r   Úcaptured_stdinrÍ   ÚseekÚinputr&   )r'   ÚstdinÚcaptureds      r   Útest_captured_stdinzTestSupport.test_captured_stdin[  sU   € Ü×#Ñ#Ó%ð 	¨Ø�K‰K˜	Ô"Ø�J‰J�qŒMä“wˆH÷		ð
 	×Ñ˜ 7Õ+÷	ð 	ús   •-AÁA&c                 ó,   — t        j                  «        y r<   )r   Ú
gc_collectr3   s    r   Útest_gc_collectzTestSupport.test_gc_collectc  s   € Ü×ÑÕr   c                 óT   — | j                  t        j                  «       t        «       y r<   )ÚassertIsInstancer   Úpython_is_optimizedÚboolr3   s    r   Útest_python_is_optimizedz$TestSupport.test_python_is_optimizedf  s   € Ø×Ñœg×9Ñ9Ó;¼TÕBr   c                 óš  —  G d„ d«      } |«       }d|_         t        j                  |dd«      5 }| j                  |j                   d«       | j                  |d«       d d d «       | j                  |j                   d«       t        j                  |dd«      5 }| j                  |j                  d«       | j                  |«       d d d «       | j                  t        |d«      «       t        j                  |dd«      5  |`d d d «       | j                  t        |d«      «       y # 1 sw Y   ŒËxY w# 1 sw Y   ŒnxY w# 1 sw Y   Œ=xY w)Nc                   ó   — e Zd Zy)ú'TestSupport.test_swap_attr.<locals>.ObjN)r   Ú
__module__Ú__qualname__© r   r   ÚObjrþ   j  s   „ Ør   r  r›   ÚxrÕ   Úy)r  r   r\   r&   r  ÚassertIsNonerO   Úhasattr)r'   r  Úobjr  r  s        r   Útest_swap_attrzTestSupport.test_swap_attri  s   € ÷	ñ 	á‹eˆØˆŒÜ×Ñ˜s C¨Ó+ð 	#¨qØ×Ñ˜SŸU™U AÔ&Ø×Ñ˜Q Ô"÷	#ð 	×Ñ˜Ÿ™ Ô"Ü×Ñ˜s C¨Ó+ð 	!¨qØ×Ñ˜SŸU™U AÔ&Ø×Ñ˜aÔ ÷	!ð 	×Ñœ  cÓ*Ô+Ü×Ñ˜s C¨Ó+ñ 	Ø�÷	à×Ñœ  cÓ*Õ+÷	#ð 	#ú÷	!ð 	!ú÷	ð 	ús#   °/D)Â.D5ÄEÄ)D2Ä5D>ÅE
c                 ó&  — ddi}t        j                  |dd«      5 }| j                  |d   d«       | j                  |d«       d d d «       | j                  |d   d«       t        j                  |dd«      5 }| j                  |d   d«       | j                  |«       d d d «       | j	                  d|«       t        j                  |dd«      5  |d= d d d «       | j	                  d|«       y # 1 sw Y   Œ¬xY w# 1 sw Y   Œ]xY w# 1 sw Y   Œ4xY w)Nr  r›   rÕ   r  )r   Ú	swap_itemr&   r  rF   )r'   ÚDr  r  s       r   Útest_swap_itemzTestSupport.test_swap_itemz  s	  € Ø�ˆGˆÜ×Ñ˜q # qÓ)ð 	#¨QØ×Ñ˜Q˜s™V QÔ'Ø×Ñ˜Q Ô"÷	#ð 	×Ñ˜˜3™ Ô#Ü×Ñ˜q # qÓ)ð 	!¨QØ×Ñ˜Q˜s™V QÔ'Ø×Ñ˜aÔ ÷	!ð 	×Ñ˜˜aÔ Ü×Ñ˜q # qÓ)ñ 	Ø�#�÷	à×Ñ˜˜aÕ ÷	#ð 	#ú÷	!ð 	!ú÷	ð 	ús#   œ(C/Á8'C;ÃDÃ/C8Ã;DÄDc                   ó   — e Zd ZdZdZdZdZy)úTestSupport.RefClassN)r   rÿ   r   Ú
attribute1Ú
attribute2Ú_hidden_attribute1Ú__magic_1__r  r   r   ÚRefClassr  ˆ  s   „ Øˆ
Øˆ
Ø!ÐØ‰r   r  c                   ó   — e Zd ZdZdZdZdZy)úTestSupport.OtherClassN)r   rÿ   r   r  Ú
attribute3r  Ú__magic_2__r  r   r   Ú
OtherClassr  Ž  s   „ Øˆ
Øˆ
ØˆØ‰r   r  c                 óú   — t        j                  | j                  | j                  «      }| j	                  dh|«       t        j                  | j                  | j                  «      }| j	                  ddh|«       y )Nr  r  r  )r   Údetect_api_mismatchr  r  r&   )r'   Úmissing_itemss     r   Útest_detect_api_mismatchz$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                 ó$  — g d¢}t        j                  | j                  | j                  |¬«      }| j	                  t        «       |«       t        j                  | j                  | j                  |¬«      }| j	                  t        «       |«       y )N)r  r  r  Únot_in_either)Úignore)r   r  r  r  r&   Úset)r'   r  r  s      r   Ú test_detect_api_mismatch__ignorez,TestSupport.test_detect_api_mismatch__ignore�  si   € ÚMˆä×3Ñ3Ø—‘˜tŸ™°vô?ˆà×Ñœ› Ô.ä×3Ñ3Ø—‘ §¡°vô?ˆà×Ñœ› Õ.r   c                 óê   — dh}dh}t        j                  | t        ||¬«       h d£}h d£}t        j                  | t        d||¬«       | j	                  t
        t         j                  | t        «       y )NÚtempdirÚtemplate)ÚextraÚnot_exported>   Ú	makeSuiteÚfindTestCasesÚTextTestResultÚinstallHandlerÚgetTestCaseNames>   Ú
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„   r1   r0   rÙ   )r'   r%  r&  s      r   Útest_check__all__zTestSupport.test_check__all__¨  su   € Ø�ˆØ"�|ˆÜ×Ñ˜TÜ%Ø#(Ø*6õ	8ò

ˆò FˆÜ×Ñ˜TÜ%ðIð $)Ø*6õ	8ð 	×Ñœ.¬'×*>Ñ*>ÀÄhÕOr   ÚwaitpidÚWNOHANGz need os.waitpid() and os.WNOHANGc                 óÞ  — t        j                  «        t        j                  «       }|dk(  rt        j                  d«       t         j
                  }	 dt         _        t        j                  «       }t        j                  t         j                  «      D ]V  }t        j                  t         j                  d|«      5  t        j                  «        d d d «       t         j
                  sŒV n d|z  }| j                  ||j                  «       «       | j                  t         j
                  «       |t         _        t        j                  «        y # 1 sw Y   Œ�xY w# |t         _        w xY w)Nr   FÚorig_stderrz2Warning -- reap_children() reaped child process %s)r   Úreap_childrenrP   ÚforkÚ_exitÚenvironment_alteredÚioÚStringIOÚsleeping_retryÚSHORT_TIMEOUTr\   Úprint_warningrC   rç   r‰   )r'   ÚpidÚwas_alteredrë   Ú_rº   s         r   Útest_reap_childrenz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ñ ,Ü×)Ñ)Ô+÷,ô
 ×.Ó.Ùðð GÈÑLˆCØ�M‰M˜#˜vŸ™Ó0Ô1Ø�O‰OœG×7Ñ7Ô8à*5ŒGÔ'ô 	×ÑÕ÷!,ð ,ûð +6ŒGÕ'ús,   ÁA*E Â>EÃE Ã,AE ÅE	ÅE ÅE,Nc                 óæ  — d|› d|› d�}t         j                  g|¢d‘|‘}t        j                  j	                  «       D ��ci c]  \  }}|j                  d«      s||“Œ }}}t        j                  |t        j                  t        j                  d|¬«      }	|€|}| j                  |	j                  j                  «       t        |«      «       | j                  |	j                  d«       y c c}}w )	Nzfrom test.support import z; print(repr(z()))r¢   ÚPYTHONT)r?   rë   Úuniversal_newlinesÚenvr   )r>   Ú
executablerP   ÚenvironÚitemsrž   Ú
subprocessÚrunÚPIPEÚDEVNULLr&   r?   ÚrstripÚreprÚ
returncode)
r'   ÚargsÚfuncÚexpectedÚcodeÚcmdÚkeyÚvaluerE  Úprocs
             r   Úcheck_optionszTestSupport.check_optionsè  sÛ   € à*¨4¨&°¸d¸VÀ4ÐHˆÜ�~‰~Ð1 Ð1 dÐ1¨DÐ1ˆÜ,.¯J©J×,<Ñ,<Ó,>÷ 0™j˜c 5Ø—n‘n XÔ.ð �E‰zð 0ˆñ 0ä�~‰~˜cÜ%/§_¡_Ü%/×%7Ñ%7Ø15Ø"%ô	'ˆð
 ÐØˆHØ×Ñ˜Ÿ™×+Ñ+Ó-¬t°H«~Ô>Ø×Ñ˜Ÿ™¨!Õ,ùó0s   ÁC-Úcpuc                 ó  — g dgdgdgdgdgdgdgdgd	gd
gdgdgddgg d¢ddgddgddgddgddgfD ]/  }| j                  |¬«      5  | j                  |d«       d d d «       Œ1 | j                  g d¢dd	g«       y # 1 sw Y   ŒRxY w)Nz-Bú-sz-Sú-Ez-vz-bú-Pz-qú-Iz-bbz-vvvú-Wignoreú-XÚdev)r_  r`  ra  ÚfaulthandlerÚ
importtimeÚshowrefcountÚtracemallocztracemalloc=3©ÚoptsÚargs_from_interpreter_flags)r^  r\  r[  r]  ©ÚsubTestrX  ©r'   rg  s     r   Ú test_args_from_interpreter_flagsz,TestSupport.test_args_from_interpreter_flagsø  sã   € ð
 àˆFØˆFØˆFØˆFØˆFØˆFØˆFØˆFØˆFàˆGØˆHàˆLà�5ˆMÚ%Ø�>Ð"Ø�<Ð Ø�>Ð"Ø�=Ð!Ø�?Ð#ð3
ò 	HˆDð6 —‘ 4�Ó(ñ HØ×"Ñ" 4Ð)FÔG÷Hð Hð7	Hð< 	×ÑÒ3Ø8Ø ˜6õ	#÷Hð Hús   ÁA:Á:B	c                 ó’   — g dgdgdgfD ]/  }| j                  |¬«      5  | j                  |d«       d d d «       Œ1 y # 1 sw Y   Œ<xY w)Nz-Oz-OOz-OOOOrf  Ú!optim_args_from_interpreter_flagsri  rk  s     r   Ú&test_optim_args_from_interpreter_flagsz2TestSupport.test_optim_args_from_interpreter_flags  si   € ð ØˆFØˆGØˆIð
ò 	NˆDð —‘ 4�Ó(ñ NØ×"Ñ" 4Ð)LÔM÷Nð Nñ	N÷Nð Nús	   Ÿ=½A	zUnstable in EmscriptenzUnavailable on WASIc                 ó.  — t        j                  «       }t        j                  t        t        j
                  «      }	 t        j                  «       }t        j                  |«       | j                  ||z
  d«       y # t        j                  |«       w xY w©Nr›   )r   Úfd_countrP   rL   Ú__file__ÚO_RDONLYrv   r&   )r'   ÚstartrÑ   Úmores       r   Útest_fd_countzTestSupport.test_fd_count)  sg   € ô ×"Ñ"Ó$ˆÜ�W‰W”XœrŸ{™{Ó+ˆð	Ü×%Ñ%Ó'ˆDä�H‰H�RŒLØ×Ñ˜ ™ qÕ)øô �H‰H�R�Lús   ¾A= Á=Bc                 ó
  — t        j                  «       }t        j                  t        j                  d|«      5  t        j                  |«       d d d «       | j                  |j                  «       |«       y # 1 sw Y   Œ*xY w)Nr4  )r9  r:  r   r\   r=  r&   rç   )r'   rº   rR  rë   s       r   Úcheck_print_warningzTestSupport.check_print_warning9  s_   € Ü—‘“ˆÜ×Ñœw×4Ñ4°mÀVÓLñ 	'Ü×!Ñ! #Ô&÷	'à×Ñ˜Ÿ™Ó*¨HÕ5÷	'ð 	'ús   ºA9Á9Bc                 óL   — | j                  dd«       | j                  dd«       y )Nrº   zWarning -- msg
za
bzWarning -- a
Warning -- b
)ry  r3   s    r   Útest_print_warningzTestSupport.test_print_warning?  s)   € Ø× Ñ  Ø!3ô	5à× Ñ  Ø!?õ	Ar   c                 óÈ   — t         j                  st        j                  dk(  r | j	                  t         j
                  «       y | j                  t         j
                  «       y )NÚwin32)r   Úis_emscriptenr>   ÚplatformrO   Úhas_strftime_extensionsr‰   r3   s    r   Útest_has_strftime_extensionsz(TestSupport.test_has_strftime_extensionsE  s<   € Ü× Ò ¤C§L¡L°GÒ$;Ø×ÑœW×<Ñ<Õ=à�O‰OœG×;Ñ;Õ<r   c                 óZ   — t        j                  d«      }t        j                  d|«       y )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'   rS  s     r   Útest_get_recursion_depthz$TestSupport.test_get_recursion_depthK  s(   € ä�‰ð & ó &ˆôN 	×&Ñ& t¨TÕ2r   c                 ó¨  ‡— ˆfd„ŠdD ]Y  }t        j                  |«      5  t        j                  «       } ‰|«       	  ‰|dz   «       | j                  d«       d d d «       Œ[ t        j                  d«      5  	  ‰d«       | j                  d«       d d d «       y # t        $ r Y ŒNw xY w# 1 sw Y   Œ­xY w# t        $ r Y Œ/w xY w# 1 sw Y   y xY w)Nc                 ó"   •— | r ‰| dz
  «       y y rq  r  )ÚdepthÚrecursive_functions    €r   r‡  z6TestSupport.test_recursion.<locals>.recursive_functionx  s   ø€ ÙÙ" 5¨1¡9Õ-ð r   )rÕ   é   éú   r›   zRecursionError was not raisedrÇ   )r   Úinfinite_recursionÚget_recursion_availableÚfailÚRecursionError)r'   Ú	max_depthÚ	availabler‡  s      @r   Útest_recursionzTestSupport.test_recursionv  sæ   ø€ ô	.ð &ò 	?ˆIÜ×+Ñ+¨IÓ6ñ ?Ü#×;Ñ;Ó=�	ñ # 9Ô-ð
?Ù& y°1¡}Ô5ð —I‘IÐ=Ô>÷?ð ?ð	?ô$ ×'Ñ'¨Ó*ñ 	;ð;Ù" 1Ô%ð —	‘	Ð9Ô:÷	;ð 	;øô &ò Ùðú÷?ð ?ûô( "ò Ùðú÷	;ð 	;ús^   ¡B-¿BÁ
B-Á:CÁ<B9ÂCÂ	B*Â'B-Â)B*Â*B-Â-B6	Â9	CÃCÃCÃCÃCc                 ó,  — t         j                  }d}|dz  }|dz  }|dz  }| j                   |d«      d«       | j                   |d«      d|z  «       | j                   |d«      t        d|z  «      «       | j                   |d«      t        d	|z  «      «       | j                   |d
«      |«       dD ]C  }| j	                  |¬«      5  | j                  t        «      5   ||«       d d d «       d d d «       ŒE y # 1 sw Y   ŒxY w# 1 sw Y   Œ\xY w)Ni   Ú0kr   Ú3krÇ   z2.4mg333333@Ú4gé   Ú1t)Ú Ú3z3.5.10kÚ10x)Úlimit)r   Ú_parse_memlimitr&   Úintrj  r0   Ú
ValueError)r'   ÚparseÚKiBÚMiBÚGiBÚTiBrš  s          r   Útest_parse_memlimitz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÷!÷!ð !ñ	!÷!ð !ú÷!ð !ús$   ÃD
Ã"	C>Ã+D
Ã>DÄD
Ä
D	c                 ó*  — d}d}t         j                  }t         j                  }	 t        j                  dkD  rÇt        j
                  d«       | j                  t         j                  |«       | j                  t         j                  |«       ddz  |z  }t        j
                  |› d�«       | j                  t         j                  t        j                  «       | j                  t         j                  ||z  «       nct        j
                  d«       | j                  t         j                  t        j                  «       | j                  t         j                  |«       |t         _        |t         _        y # |t         _        |t         _        w xY w)Nl        l        r”  r   éd   Út)r   Ú
max_memuseÚreal_max_memuser>   ÚmaxsizeÚset_memlimitr&   )r'   Ú_4GiBr¢  Úold_max_memuseÚold_real_max_memuseÚbigs         r   Útest_set_memlimitz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   ¦D=E: Å:Fc                 óœ  — t        j                  d«      }|st        j                  d«      }t        j                  j	                  |«      }t        j                  j                  |«      s| j                  d|›�«       t        j                  j                  |d«      }t        j                  j                  |«      s| j                  d|›d�«       ddh}t        j                  |«      }| j                  t        j                  ||«      |dhz  «       t        j                  j                  |d	«      }| j                  t        j                  |t        j                  |«      «      |dd
hz  «       t        j                  j                  |d«      }| j                  t        j                  |t        j                  |«      «      |«       y )NÚ
abs_srcdirÚsrcdirz,cannot access Python source code directory: ÚModulesz landmark is missingz.gitrg   ÚbuildÚDocÚvenvÚObjects)Ú	sysconfigÚget_config_varrP   rQ   ÚabspathrR   ÚskipTestrY   Úlistdirr&   r   Úcopy_python_src_ignore)r'   Úsrc_dirÚlandmarkÚignoredÚnamesrQ   s         r   Útest_copy_python_src_ignorez'TestSupport.test_copy_python_src_ignore¾  sr  € ä×*Ñ*¨<Ó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   r<   )Hr   rÿ   r   Úclassmethodr   r   r+   r4   r7   r9   r1   Úskipr@   rG   rT   rc   rq   r   Úrequires_working_socketry   r}   r�   rŒ   rŽ   r—   r    Úrequires_forkr¦   r¬   r³   r·   r»   rÂ   rÅ   rÉ   rÓ   rÚ   rÞ   râ   rè   rì   ró   rö   rû   r  r  r  r  r  r!  r0  Ú
skipUnlessr  rP   rA  Úrequires_subprocessrX  Úrequires_resourcerl  ro  ÚskipIfr~  Úis_wasirw  ry  r{  r�  rƒ  r�  r£  r¯  rÂ  r  r   r   r
   r
      s†  „ Øñ<ó ð<ð ñ<ó ð<ò5ò>ò
4òQð
 €X‡]�]Ð&Ó'ñDó (ðDò/ò!ò2ò0,ð" %€W×$Ñ$Ó&ñó 'ðð %€W×$Ñ$Ó&ñó 'ðð
 %€W×$Ñ$Ó&ñó 'ðò)ò3ò ò ð* €W×ÑÓñó ðò44ò4òò*ò",ò4òRò:ò4ò
.ò
*ò7ò
7ò
,òòCò,ò"!÷ñ ÷ñ òGò	/òPð6 €X×Ñ™  YÓ/ÒJ±G¸BÀ	Ó4JØ;ó=à€W×ÑÓñ  ó ó=ð  ðD !€W× Ñ Ó"ò-ó #ð-ð €W×Ñ˜uÓ%ñ"#ó &ð"#òH
Nð €X‡_�_�W×*Ñ*Ð,DÓEØ€X‡_�_�W—_‘_Ð&;Ó<ñ*ó =ó Fð*ò6òAò=ò)3òV;ò@!ò":ó.""r   r
   Ú__main__)rÏ   rk   r9  rP   r–   rs   r^   rI  r>   r¸  r„   r¤   r1   r   Útestr   Útest.supportr   r   r   r   r   rM   ÚTestCaser
   r   Úmainr  r   r   ú<module>rÑ     s{   ðÛ Û Û 	Û 	Û Û Û Û Û 
Û Û Û Û Û å Ý &Ý "Ý &Ý &Ý (à	×	Ñ	€ôF"�(×#Ñ#ô F"ð| ˆzÒØ€H‡M�M…Oð r   