
    0hhЏ                        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
Jr  S SKJrJ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rS SKrS S
K Jr  S SK J r   \RB                  RD                  (       a  \ RF                  " S5      eS SK$r$\$RJ                  SLr&Sq'S r(S r) " S S\ RT                  5      r+ " S S\,5      r- " S S\ RT                  5      r. " S S\ RT                  5      r/ " S S\ RT                  5      r0 " S S\ RT                  5      r1\2S:X  a  \ Rf                  " 5         gg)    N)support)assert_python_ok)	os_helper)socket_helper)captured_stderr)TESTFNEnvironmentVarGuard)spawn_pythonkill_python)dedent)mock)copyzPython was invoked with -Sc                     [         R                  S S  q[        R                  (       a}  [
        R                  R                  [        R                  5      (       dJ   [
        R                  " [        R                  5        [        R                  " [        R                  5        g g g ! [         a1  n [        R                  " S[        R                  < SU < 35      eS n A ff = f)Nz&unable to create user site directory (z): )syspathOLD_SYS_PATHsiteENABLE_USER_SITEosisdir	USER_SITEmakedirs
addsitedirPermissionErrorunittestSkipTest)excs    7/opt/python-3.13.8/usr/lib/python3.13/test/test_site.pysetUpModuler   /   s    88A;LRWW]]4>>%B%B	=KK'OODNN+ &C  	=##'+~~s%< = =	=s   AB' '
C"1,CC"c                  2    [         [        R                  S S & g N)r   r   r        r   tearDownModuler$   >   s    CHHQKr#   c                   l   \ rS rSrS rS rS rS rS rS r	S\
4S	 jrS
 rS rS rS rS rS r\R&                  " \" \S5      S5      S 5       r\R&                  " \R0                  S:H  S5      \R4                  " 5       S 5       5       rS r\R&                  " \S5      S 5       r\R&                  " \R@                  S5      \R4                  " 5       S 5       5       r!\R&                  " \S5      S 5       r"\R&                  " \S5      S 5       r#S r$\R&                  " \S5      S 5       r%S r&S  r'S!r(g")#HelperFunctionsTestsB   c                    [         R                  S S  U l        [        R                  U l        [        R                  U l        [        R                  U l	        [        R                  U l        [        [        R                  5      U l        g r!   )r   r   sys_pathr   	USER_BASEold_baser   old_sitePREFIXESold_prefixes	sysconfig_CONFIG_VARSoriginal_varsr   old_varsselfs    r   setUpHelperFunctionsTests.setUpF   sS     MM&33Y334r#   c                    U R                   [        R                  S S & U R                  [        l        U R                  [        l        U R                  [        l	        U R                  [        l        [        R                  bH  [        R                  R                  5         [        R                  R                  U R                  5        g g r!   )r)   r   r   r+   r   r*   r,   r   r.   r-   r1   r/   r0   clearupdater2   r3   s    r   tearDownHelperFunctionsTests.tearDownO   s    mm))!%!3!3	!!-""((*""))$--8 .r#   c                    Sn[         R                  R                  " U6 n[        R                  " U6 u  p4U R                  [         R                  R                  U5      U5        U[         R                  R                  U5      :X  a  U R                  X45        g U R                  [         R                  R                  U5      U5        g )N)	BeginningEnd)r   r   joinr   makepathassertEqualabspathnormcase)r4   
path_partsoriginal_dirabs_dirnorm_dirs        r   test_makepath"HelperFunctionsTests.test_makepath[   s     *
ww||Z0 MM:66@277++L99W/RWW--g6Ar#   c                 F   [         R                  " 5       n[        R                   Vs/ s HK  nU(       d  M  [        R                  R                  U5      (       d  M2  [         R                  " U5      S   PMM     sn H  nU R                  X1U< SU< 35        M     g s  snf )N   z> from sys.path not found in set returned by _init_pathinfo(): )r   _init_pathinfor   r   r   existsr@   assertIn)r4   dir_setr   entrys       r   test_init_pathinfo'HelperFunctionsTests.test_init_pathinfoh   s{    %%'9< : -$&GGNN4$8 -dmmD)!, :EMM%7<gGH: :s   B"BBc                 f   U R                  UR                  [        R                  SUR                  -  5        U R                  [        R
                  " UR                  5      S   [        R                  5        U R                  [        R                  R                  UR                  5      5        g )Nz%s not in sys.modulesr   )rN   importedr   modulesr   r@   good_dir_pathr   assertFalser   rM   bad_dir_pathr4   pth_files     r   pth_file_tests#HelperFunctionsTests.pth_file_testsp   sr    h''-0A0AA	CdmmH$:$:;A>I(=(=>?r#   c                 ,   [        5       nUR                  SS9   UR                  5         [        R                  " UR
                  UR                  [        5       5        U R                  U5        UR                  5         g ! UR                  5         f = fNTprep)	PthFilecleanupcreater   
addpackagebase_dirfilenamesetr[   rY   s     r   test_addpackage$HelperFunctionsTests.test_addpackagew   sp    
 9d#	OOOOH--x/@/@#%H)Hs   AB B.c                 *  ^ [         R                  R                  U5      nUS-   n[         R                  R                  X$5      m[	        TSSS9 nU R                  U4S j5        UR                  U5        S S S 5        X$4$ ! , (       d  f       X$4$ = f)N.pthwutf-8encodingc                  0   > [         R                  " T 5      $ r!   )r   remove)pth_fns   r   <lambda>/HelperFunctionsTests.make_pth.<locals>.<lambda>   s    BIIf$5r#   )r   r   rB   r?   open
addCleanupwrite)r4   contentspth_dirpth_namepth_basenamerZ   rs   s         @r   make_pthHelperFunctionsTests.make_pth   s|    ''//'*&(g4&#0HOO56NN8$ 1 $$ 10 $$s   'B
Bc           	      R   U R                  S5      u  p[        5        n[        R                  " X[	        5       5        S S S 5        U R                  WR                  5       S5        U R                  UR                  5       [        R                  " [        R                  R                  X5      5      5        U R                  UR                  5       S5        U R                  UR                  5       S5        U R                  UR                  5       S5        g ! , (       d  f       N= f)Nzimport bad-syntax
zline 1	Tracebackzimport bad-syntaxSyntaxErrorr}   r   r   rd   rg   assertRegexgetvaluereescaper   r   r?   r4   rz   rs   err_outs       r   !test_addpackage_import_bad_syntax6HelperFunctionsTests.test_addpackage_import_bad_syntax   s    --(=>'OOGSU3 ))+X6))+IIbggll734	6
 	))+[9))+-AB))+]; s    D
D&c           	         U R                  S5      u  p[        5        n[        R                  " X[	        5       5        S S S 5        U R                  WR                  5       S5        U R                  UR                  5       [        R                  " [        R                  R                  X5      5      5        U R                  UR                  5       S5        U R                  UR                  5       S5        g ! , (       d  f       N= f)Nzrandompath
import nosuchmodule
zline 2r   ModuleNotFoundErrorr   r   s       r   test_addpackage_import_bad_exec4HelperFunctionsTests.test_addpackage_import_bad_exec   s    --(KL'OOGSU3 ))+X6))+IIbggll734	6 	))+[9))+-BC s    C88
Dc                     U R                  S5      u  p[        R                  " X[        5       5      nU R	                  U[        5       5        g )Nz

  

)r}   r   rd   rg   rA   )r4   rz   rs   known_pathss       r   test_addpackage_empty_lines0HelperFunctionsTests.test_addpackage_empty_lines   s6    --5oogsu=ce,r#   c           	         U R                  S5      u  p[        5        nU R                  [        R                  " X[        5       5      5        S S S 5        S U l        U R                  WR                  5       S5        [        R                   H,  n[        U[        5      (       d  M  U R                  SU5        M.     g ! , (       d  f       Nv= f)Nzabc def
 zabc def)r}   r   rW   r   rd   rg   maxDiffrA   r   r   r   
isinstancestrassertNotIn)r4   rz   rs   r   r   s        r   #test_addpackage_import_bad_pth_file8HelperFunctionsTests.test_addpackage_import_bad_pth_file   s    --7'T__WceDE ))+R0HHD$$$  t4 	 s   /B==
Cc                    [        5       nUR                  SS9   UR                  5         [        R                  " UR
                  [        5       5        U R                  U5        UR                  5         g ! UR                  5         f = fr^   )ra   rb   rc   r   r   re   rg   r[   rY   s     r   test_addsitedir$HelperFunctionsTests.test_addsitedir   sh     9d#	OOOOH--su5)Hs   A
A6 6Bc                    [        S5      nUR                  SS9   UR                  5         [        R                  " UR
                  [        5       5        U R                  [        R                  " UR                  5      S   [        R                  5        U R                  UR
                  [        R                  5        UR                  5         g ! UR                  5         f = f)Nz.dotfileTr_   r   )ra   rb   rc   r   r   re   rg   r   r@   rV   r   r   rN   rY   s     r   test_addsitedir_dotfile,HelperFunctionsTests.test_addsitedir_dotfile   s    :&d#	OOOOH--su5T]]8+A+AB1EsxxPMM(++SXX6Hs   B$C C#chflagsztest needs os.chflags()c                    [        5       nUR                  SS9   UR                  5         [        R                  " UR
                  5      n[        R                  " UR
                  UR                  [        R                  -  5        [        R                  " UR                  [        5       5        U R                  [        R                  " UR                  5      S   [         R"                  5        U R%                  UR                  [         R"                  5        UR                  5         g ! UR                  5         f = f)NTr_   r   )ra   rb   rc   r   stat	file_pathr   st_flags	UF_HIDDENr   r   re   rg   r   r@   rV   r   r   rN   )r4   rZ   sts      r   test_addsitedir_hidden_flags1HelperFunctionsTests.test_addsitedir_hidden_flags   s    9d#	OO++,BJJx))2;;+GHOOH--su5T]]8+A+AB1EsxxPMM(++SXX6Hs   D D, ,D>win32ztest needs Windowsc                    [        5       nUR                  SS9   UR                  5         [        R                  " SSUR
                  /5        [        R                  " UR                  [        5       5        U R                  [        R                  " UR                  5      S   [        R                  5        U R                  UR                  [        R                  5        UR                  5         g ! UR                  5         f = f)NTr_   attribz+Hr   )ra   rb   rc   
subprocess
check_callr   r   r   re   rg   r   r@   rV   r   r   rN   rY   s     r   %test_addsitedir_hidden_file_attribute:HelperFunctionsTests.test_addsitedir_hidden_file_attribute   s     9d#	OO!!8T83E3E"FGOOH--su5T]]8+A+AB1EsxxPMM(++SXX6Hs   CC3 3Dc                 t    U R                  [        R                  " 5       [        R                  " 5       5        g r!   )rA   r   _getuserbaser/   r3   s    r   test__getuserbase&HelperFunctionsTests.test__getuserbase   s$    **,i.D.D.FGr#   zneed user sitec                 X   [         R                  S:X  a  [         R                  (       a  SnO[        R                  S-   nU R                  [        R                  R                  [        R                  " [        R                  " 5       5      5      [        R                  " SU5      5        g )Ndarwinosx_framework_user_userpurelib)r   platform
_frameworkr   namerA   r   normpathr   	_get_pathr   r/   get_path)r4   schemes     r   test_get_path"HelperFunctionsTests.test_get_path   si    <<8#)FWWw&F))$..9J9J9L*MN"++Iv>	@r#   z<requires access to PEP 370 user-site (site.ENABLE_USER_SITE)c                 8   [         R                  R                  [        R                  5      nU R                  U[        R                  5        [         R                  R                  5       n[        R                  " [        R                  SSU-  /US9nU R                  US5        [         R                  R                  5       n[        R                  " [        R                  SSSU-  /US9nU[        R                  " 5       S   :X  a  U R                  US5        OU R                  USS5        [         R                  R                  5       nSUS	'   [        R                  " [        R                  SSU-  /US9nU[        R                  " 5       S   :X  a  U R                  US5        OU R                  USS
5        [         R                  R                  5       nSUS'   [        R                  " [        R                  SS/US9nU R                  USS5        g )N-cz$import sys; sys.exit(%r in sys.path)envrK   -sr   z%User site still added to path with -s1PYTHONNOUSERSITEz3User site still added to path with PYTHONNOUSERSITEz/tmpPYTHONUSERBASEz=import sys, site; sys.exit(site.USER_BASE.startswith("/tmp"))z#User base not set by PYTHONUSERBASE)r   r   r   r   r   rN   r   environr   r   call
executablerA   getsitepackages)r4   usersiter   rcs       r   test_s_option"HelperFunctionsTests.test_s_option   s   
 77##DNN3h)jjoo__cnnd2X=? 	Qjjoo__cnndD2X=? t++-a00R#R$KLjjoo"%__cnnd2X=? t++-a00R#RMO jjoo &__cnndKM 	Q=	?r#   c                    S [         l        [         R                  " 5       nU R                  [         R                  U5        S [         l        SS KnS Ul        [        5        nSUS'   U R                  [         R                  " 5       R                  S5      [         R                  " 5       5        S S S 5        g ! , (       d  f       g = f)Nr   xoxor   )	r   r*   getuserbaserA   r/   r0   r	   
assertTrue
startswith)r4   	user_baser/   r   s       r   test_getuserbase%HelperFunctionsTests.test_getuserbase(  s    $$&	 	3 !%	 "g(.G$%OOD,,.99&A ,,.0 #""s   !AB77
Cc                 ^   S [         l        S [         l        [         R                  " 5       nU R	                  [         R                  U5        U R                  UR                  [         R                  5      U5        U R	                  [         R                  [         R                  " 5       5        g r!   )r   r   r*   getusersitepackagesrA   r   r   r   )r4   	user_sites     r   test_getusersitepackages-HelperFunctionsTests.test_getusersitepackages:  sn    ,,.	 	3	,,T^^<iH)9)9);<r#   c                    S/[         l        [         R                  " 5       n[        R                  S:X  a  [
        R                  S:w  aw  U R                  [        U5      S5        [        R                  R                  S[
        R                  S[        R                  " 5        3S5      nU R                  US   U5        OU R                  [        U5      S5        [        R                  R                  SSS[        R                  " 5        3S5      nU R                  US	   U5        g U R                  [        U5      S5        U R                  US   S5        [        R                  R                  SSS5      nU R                  [        R                  R                  US   5      [        R                  R                  U5      5        g )
Nr   /lib   pythonzsite-packagesr   rK   )r   r-   r   r   sepr   
platlibdirrA   lenr   r?   r/   _get_python_version_abirC   )r4   dirswanteds      r   test_getsitepackages)HelperFunctionsTests.test_getsitepackagesE  sW   ##%66S=~~&  TA.fcnn(.y/P/P/R.S&T&57   a&1  TA.WW\\&%$*9+L+L+N*O"P"13F T"Xv. SY*T!Wf-WW\\&%AFRWW--d1g6WW--f57r#   c                    S [         l        S [         l        [        5        n[        R
                  " SS 5         UR                  SS5        [         R                  " 5       nU R                  UR                  S[        R                  -   5      U5        [         R                  " 5       nU R                  UR                  U5      U5        S S S 5        S S S 5        [        R
                  " SSS9 n[        R
                  R                  [         S	5       n[        R                  " [         S
S5         [!        5       n[         R"                  " U5        UR%                  W5        UR'                  5         U R)                  U5        S S S 5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       NA= f! , (       d  f       NJ= f! , (       d  f       g = f)Nzos.path.expanduserc                     U $ r!   r"   )r   s    r   rt   =HelperFunctionsTests.test_no_home_directory.<locals>.<lambda>g  s    4r#   r   APPDATA~zos.path.isdirF)return_valuer   r   T)r   r   r*   r	   r   patchunsetr   r   r   r   r   r   objectr   	swap_attrrg   addusersitepackagesassert_called_once_withassert_not_calledrW   )r4   r   r   r   
mock_isdirmock_addsitedirr   s          r   test_no_home_directory+HelperFunctionsTests.test_no_home_directory^  sY   
  "gZZ,.?@MM*I6((*IOOI00rvv>%' 002IOOI00;YG A # ZZe<
ZZt\2ot%7> %K$$[1..y9--/[) ? 3 =< A@ #" ?> 32 =<s`   F.BF
F./%G!G1AF?GG!
F+	'F..
F<?
G	G
G	G!!
G/c                     Sn[        SSU S3US9u  p#nU R                  US5        [        SSSU S3US9u  p#nU R                  US5        g )	Nfiler   z.import site; assert site.gethistoryfile() == "")PYTHON_HISTORYr   -Iz.import site; assert site.gethistoryfile() != ")r   rA   )r4   rf   r   outerrs        r   test_gethistoryfile(HelperFunctionsTests.test_gethistoryfile~  sm    '<XJaH#% 	Q (d<XJaH#% 	Qr#   c                    SnSUS-   4S4 H  u  p#[         R                  " S[         R                  " US95         [         R                  " S[        R                  " 5       5         [
        R                  " U5        U R                  [        R                  R                  5       U5        S S S 5        S S S 5        M     g ! , (       d  f       N= f! , (       d  f       M  = f)Nzbla-bla-blaT
)Fr   z	sys.flags)verbosez
sys.stderr)r   r   MockioStringIOr   _tracerA   r   stderrr   )r4   messager
  r  s       r   
test_traceHelperFunctionsTests.test_trace  s    !7T>2K?LGK7)CDJJ|R[[];G$  !4!4!6< < ED @;; EDs$   +C%AB?*C?
C	C
C	)r   r+   r.   r,   r2   r1   r)   N))__name__
__module____qualname____firstlineno__r5   r:   rH   rQ   r[   rh   r   r}   r   r   r   r   r   r   r   
skipUnlesshasattrr   r   r   r   r   requires_subprocessr   r   HAS_USER_SITEr   r   r   r   r   r   r   r   r  r  __static_attributes__r"   r#   r   r&   r&   B   s   5
9BH@ *-v %<
D-	5	 Y/1JK L 02FG  "
 # H
H (89@ :@ .. 1> ?  "%? #?%?N (890 :0" (89= :=72 (89* :*> =r#   r&   c                   6    \ rS rSr\SSS4S jrS rS
S jrSrg	)ra   i  time__testdir____badc                    US-   U l         [        R                  R                  S5      U l        [        R                  R                  U R                  U R                   5      U l        X l        X0l        X@l	        [        R                  R                  U R                  U R                  5      U l
        [        R                  R                  U R                  U R                  5      U l        g )Nrl   r   )rf   r   r   rB   re   r?   r   rT   good_dirnamebad_dirnamerV   rX   )r4   filename_baserT   r!  r"  s        r   __init__PthFile.__init__  s     &.+dmmT]]C (&WW\\$--9J9JKGGLL8H8HIr#   c                 b   [        U R                  S5      n [        SUS9  [        SUS9  [        SU R                  -  US9  [        U R                  US9  [        U R
                  US9  UR                  5         [        R                  " U R                  5        g ! UR                  5         f = f)Nrm   z#import @bad module namer   r	  z	import %s)
rv   r   printrT   r!  r"  closer   mkdirrV   )r4   FILEs     r   rc   PthFile.create  s     DNNC(	,48$T"+-D9$##$/$"".JJL
##$ JJLs   AB B.c                    [         R                  R                  U R                  5      (       a   [         R                  " U R                  5        U(       a[  [
        R                  R                  U R                  5      U l	        U R                  (       a  [
        R                  U R                  	 O8U R                  (       a'  U R                  [
        R                  U R                  '   [         R                  R                  U R                  5      (       a   [         R                  " U R                  5        [         R                  R                  U R                  5      (       a!  [         R                  " U R                  5        g g r!   )r   r   rM   r   rr   r   rU   getrT   imported_modulerV   rmdirrX   )r4   r`   s     r   rb   PthFile.cleanup  s     77>>$..))IIdnn%#&;;??4==#AD ##KK.##-1-A-ADMM*77>>$,,--HHT''(77>>$++,,HHT&&' -r#   )	rX   r"  re   r   rf   rV   r!  rT   r/  N)F)	r  r  r  r  r   r$  rc   rb   r  r"   r#   r   ra   ra     s     &,f!.G
J%,(r#   ra   c                   d   \ rS rS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$                  " \" \R*                  S5      S5      \R                  R/                  S5      \R                  R0                  S 5       5       5       rSrg)ImportSideEffectTestsi  c                 4    [         R                  S S  U l        g r!   )r   r   r)   r3   s    r   r5   ImportSideEffectTests.setUp  s    r#   c                 >    U R                   [        R                  S S & g r!   )r)   r   r   r3   s    r   r:   ImportSideEffectTests.tearDown  s    mmr#   c                     S [         R                  S   l        [        R                  " 5         U R                  [         R                  S   R                  5        g )Ntest)r   rU   
__cached__r   	abs_pathsassertIsNoner3   s    r   test_abs_paths_cached_None0ImportSideEffectTests.test_abs_paths_cached_None  s<     *.F&#++f-889r#   c                     [         R                  " 5         [        5       n[        R                   H%  nU R                  X!5        UR                  U5        M'     g r!   )r   removeduppathsrg   r   r   r   add)r4   
seen_pathsr   s      r   test_no_duplicate_paths-ImportSideEffectTests.test_no_duplicate_paths  s?     	U
HHDT.NN4  r#   ztest not implementedc                     g r!   r"   r3   s    r   test_add_build_dir(ImportSideEffectTests.test_add_build_dir  s    
 	r#   c                     U R                  [        [        S5      5        U R                  [        [        S5      5        g )Nquitexitr   r  builtinsr3   s    r   test_setting_quit'ImportSideEffectTests.test_setting_quit  s(    &12&12r#   c                     U R                  [        [        S5      5        U R                  [        [        S5      5        U R                  [        [        S5      5        g )N	copyrightcreditslicenserK  r3   s    r   test_setting_copyright,ImportSideEffectTests.test_setting_copyright  s;    +67)45)45r#   c                 B    U R                  [        [        S5      5        g )NhelprK  r3   s    r   test_setting_help'ImportSideEffectTests.test_setting_help  s    &12r#   c                 z    S[         R                  ;  a   SS KnU R                  S5        g g ! [         a     g f = f)Nsitecustomizer   z(sitecustomize not imported automatically)r   rU   rZ  failImportError)r4   rZ  s     r   test_sitecustomize_executed1ImportSideEffectTests.test_sitecustomize_executed   s?    #++-F$ 		DE .  s   - 
::c                    S/n[         R                  (       a  UR                  S5        [        R                  " 5       nU R                  [        R                  U5        [        5        nX#S'   U GHa  n[        R                  " U5        [        R                  " U5        [        R                  R                  X$ S35      nSU 3n[        US5       nUR                  SU S35        S S S 5        [        R                   " ["        R$                  S	S
/5      nU R'                  XhR)                  S5      5        [        R                   " ["        R$                  SS	S
/5      nU R+                  XhR)                  S5      5        SU:X  d  GM  [        R                   " ["        R$                  SS	S
/5      nU R+                  XhR)                  S5      5        GMd     S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)NrZ  usercustomize
PYTHONPATHz.py	EXECUTED_rm   zprint("z")r   z""rn   z-Sr   )r   r   appendtempfilemkdtemprw   r   rmtreer	   r   r*  r   r?   rv   rx   r   check_outputr   r   rN   decoder   )	r4   	mod_namestemp_dirr   module_namecustomize_path
eyecatcherfoutputs	            r   %test_customization_modules_on_startup;ImportSideEffectTests.test_customization_modules_on_startup
  s    
	   _-##%	(((3 "g$,L!(  *"!#h-s8K!L(6
.#.!GGgj\45 / $00#..$1MNj--*@A $00#..$d1ST  ]]7-CD #k1'44cnndDRV5WXF$$Zw1GH)  ) #" /. #"s-   )A*G0G)BG0	AG0
G-)G00
G>HTTPSHandlerz$need SSL support to download licensenetworkc                 ^   [         R                  R                  5       S   n[        R                  R                  USS9nU R                  [        R                  R                  5         [        R                  " U5         [        R                  R                  U5       nUR                  5       nS S S 5        S S S 5        U R                  WSSU-   S9  g ! , (       d  f       N+= f! , (       d  f       N4= f! [        R                  R                   a  nUR                  n S nANfS nAff = f)NrK   HEAD)method   zCan't find )msg)rR  _Printer__dataspliturllibrequestRequestrw   
urlcleanupr   transient_interneturlopengetcodeerror	HTTPErrorcoderA   )r4   urlreqdatar  es         r   test_license_exists_at_url0ImportSideEffectTests.test_license_exists_at_url0  s     $$**,Q/nn$$S$8112	11#6^^++C0D<<>D 1 7
 	s(;<	 10 76 ||%% 	66D	sN   *C8   C' C1C'9C8 
C$	 C''
C51C8 5C8 8D,D''D,)r)   N)r  r  r  r  r5   r:   r=  rC  r   skiprF  rM  rS  rW  r]  r   r  rp  r  r  r{  r|  r9  requires_resourcesystem_must_validate_certr  r  r"   r#   r   r3  r3    s    $$	:! ]])* +3
63F   ""I #"IJ @?A	\\##I.	\\++= , /A=r#   r3  c                       \ rS rSr\R
                  " 5       S 5       r\R
                  " 5       S 5       r\R
                  " 5       S 5       r\R
                  " 5       S 5       r	Sr
g)StartupImportTestsiD  c           	      `   [         R                  " [        R                  SSSSS/[         R                  SSS9nUR                  5       S	   nU R                  UR                  S	[        U5      5        [        R                  " U5      nU Ht  n[        R                  " [        R                  R                  [        R                  " U5      S
5      5      nU(       d  MT  U R!                  S[#        U5       SU 35        Mv     [         R                  " [        R                  SSSSSS/[         R                  [         R                  SSS9nUR                  5       u  p&U R                  UR                  S	X&45        [        R                  " U5      nU R%                  SU5        1 SknU R'                  UR)                  U5      U5        U R+                  SXv5        U R+                  SXv5        1 SkR-                  [        R.                  5      n	U R'                  UR)                  U	5      U5        g )N-Xutf8r  r   z!import sys; print(repr(sys.path))rn   surrogateescape)stdoutrp   errorsr   z*.pthzfound z .pth files in: z-vz#import sys; print(set(sys.modules)))r  r  rp   r  r   >   r   _sre
re._parserre._compilerre._constantslocalecopyreg>
   heapqtypeskeywordreprlibweakrefoperator	functools	itertoolscollections_collections)r   Popenr   r   PIPEcommunicaterA   
returncodereprastliteral_evalglobr   r   r?   r   skipTestr   rN   rW   intersectionr   
differencebuiltin_module_names)
r4   popenr  isolated_pathsr   	pth_filesr  rU   re_modscollection_modss
             r   test_startup_imports'StartupImportTests.test_startup_importsF  s      #..$"&(K"M(2*1(9	;
 ""$Q'))1d6l;))&1
 #D		"'',,t{{4/@'"JKIys9~&66FtfMN #   #..$d"&(M"O(2(2*1(9; **,))1v.>?""6*fg& P--g6? 	73 	G4 'Js'?'?@ 	 	--o>Gr#   c                     [         R                  " [        R                  SS/5      R	                  5       nU R                  US5        g )Nr   9import sys; sys.exit(hasattr(sys, "__interactivehook__"))z''__interactivehook__' not added by siter   r  r   r   waitr   r4   rs     r   test_startup_interactivehook/StartupImportTests.test_startup_interactivehooky  s=    cnndGI JJN$& 	
DEr#   c                     [         R                  " [        R                  SSS/5      R	                  5       nU R                  US5        g )Nr  r   r  z,'__interactivehook__' added in isolated mode)r   r  r   r   r  rW   r  s     r   %test_startup_interactivehook_isolated8StartupImportTests.test_startup_interactivehook_isolated  sC     cnndDGI JJN$& 	
JKr#   c                     [         R                  " [        R                  SSS/5      R	                  5       nU R                  US5        g )Nr  r   zYimport site, sys; site.enablerlcompleter(); sys.exit(hasattr(sys, "__interactivehook__"))z6'__interactivehook__' not added by enablerlcompleter()r  r  s     r   .test_startup_interactivehook_isolated_explicitAStartupImportTests.test_startup_interactivehook_isolated_explicit  sC     cnndDgi jjnjnjp 	
STr#   r"   N)r  r  r  r  r   r  r  r  r  r  r  r"   r#   r   r  r  D  s}      "0H #0Hd   "F #F
   "L #L   "U #Ur#   r  c                      \ rS rSr\R
                  S:X  a  SS jrOSS jrS rS\S\	4S jr
\R                  " 5       S	 5       r\R                  " 5       S
 5       r\R                  " 5       S 5       r\R                  " 5       S 5       rSrg)_pthFileTestsi  r   c           
         SS K n[        R                  " 5       nU R                  [        R
                  U5        [        R                  R                  U[        R                  R                  [        R                  5      S   5      nUR                  [        R                  5      n[        R                  R                  U[        R                  R                  U5      S   5      n[        R                  " [        R                  U5        [        R                  " Xg5        [         R                   " [        R                  R                  [        R                  R                  U5      S   S5      5       HX  n[        R                  " U[        R                  R                  U[        R                  R                  U5      S   5      5        MZ     U(       a&  [        R                  R#                  U5      S   S-   n	O%[        R                  R#                  U5      S   S-   n	[%        U	SSS9 n
U H  n['        XS9  M     S S S 5        U$ ! , (       d  f       U$ = f)	Nr   rK   zvcruntime*.dll._pthrm   r  ro   r'  )_winapird  re  rw   r   rf  r   r   r?   rz  r   r   GetModuleFileName	dllhandleshutilr   r  splitextrv   r(  )r4   linesexe_pthr  rj  exe_filedll_src_filedll_filefn	_pth_filern  lines               r   _create_underpth_exe"_pthFileTests._create_underpth_exe  s   '')HOOI,,h7ww||HbggmmCNN.KA.NOH"44S]]CLww||HbggmmL.I!.LMHKK1KK/iiRWW]]<-H-KM] ^_BXrww}}R7H7K LM `GG,,X6q9GC	GG,,X6q9GC	iv6!!D$' " 7 O 76 Os   /I
Ic                    U(       d  [         R                  " S5      e[        R                  " 5       nU R	                  [
        R                  U5        [        R                  R                  U[        R                  R                  [        R                  5      S   5      n[        R                  " [        R                  U5        US-   n[        US5       nU H  n[        XvS9  M     S S S 5        U$ ! , (       d  f       U$ = f)Nz1library ._pth file not supported on this platformrK   r  rm   r'  )r   r   rd  re  rw   r   rf  r   r   r?   rz  r   r   symlinkrv   r(  )r4   r  r  rj  r  r  rn  r  s           r   r  r    s    ''([\\'')HOOI,,h7ww||HbggmmCNN.KA.NOHJJs~~x0 7*Ii%!D$' " & O &% Os   C44
Dc                     / nU Hb  nU(       a	  US   S:X  a  M  [         R                  R                  [         R                  R                  X5      5      nUR	                  U5        Md     U$ )Nr   #)r   r   rB   r?   rc  )r4   
sys_prefixr  r)   r  abs_paths         r   "_calc_sys_path_for_underpth_nosite0_pthFileTests._calc_sys_path_for_underpth_nosite  sS    D47c>wwrww||J'EFHOOH%	 
 r#   libpathimport_sitec                6  ^ S/n[        TR                  S5      5      n[        SSU-  5      nUS::  a  U R                  SUS S35        UR	                  U4S	 j[        U5       5       5        UR	                  S
S/5        U(       a  UR                  S5        U$ )Nfake-path-namern   rw  i0u  r   z Python stdlib path is too long (,z bytes)c              3   (   >#    U  H  nTv   M	     g 7fr!   r"   ).0_r  s     r   	<genexpr>/_pthFileTests._get_pth_lines.<locals>.<genexpr>  s     =*<Q*<s   r   z	# commentzimport site)r   encodeminr  extendrangerc  )r4   r  r  	pth_linesencoded_libpath_lengthrepetitionss    `    r   _get_pth_lines_pthFileTests._get_pth_lines  s    %&	 "%W^^G%<!=#u(>>?!MM23I!2LGTV=%*<=="k*+]+r#   c                 r   SS/[         R                  QSPSPnU R                  U5      nU R                  [        R                  R                  U5      U5      n[        R                  " USSSS/S	S
S9nUR                  5       R                  S5      nU R                  US5        U R                  UUS5        g )Nz#.z# ..rj   z..r  r  r   Cimport sys; print("\n".join(sys.path) if sys.flags.no_site else "")rn   r  )rp   r  r	  sys.flags.no_site was Falsesys.path is incorrect)r   r   r  r  r   dirnamer   rg  rstriprz  r   rA   )r4   r  r  r)   ro  actual_sys_paths         r   test_underpth_basic!_pthFileTests.test_underpth_basic  s    68CHH8c848	,,Y7::GGOOH% (((D&$R*
$57 !--///5)FG#	
r#   c                    [         R                  R                  n[        R                  R                  [        R                  5      nU R                  USS9nU R                  U5      nU R                  [        R                  R                  U5      U5      n[        R                  R                  5       nSUS'   SR                  U[        R                  [        R                  " S5      5      US'   [         R"                  " USS/US	S
S9nUR%                  5       R'                  S5      nU R)                  US5        U R+                  UUS5        g )NFr  from-envra  z{}{}{}PATHr   r  rn   r  )r   rp   r  r	  r  r  )r9  r   
STDLIB_DIRr   r   r  r   r   r  r  r  r   r   formatpathsepgetenvr   rg  r  rz  r   rA   )	r4   r  
exe_prefixr  r  r)   r   ro  r  s	            r   test_underpth_nosite_file'_pthFileTests.test_underpth_nosite_file  s   ,,))WW__S^^4
''U'C	,,Y7::GGOOH% jjoo&Looj"**bii>OPF(((DR*
W->@ !--///5)FG#	
r#   c                    [         R                  R                  n[        R                  R                  [        R                  5      nU R                  U R                  USS95      n[        R                  R                  U5      n[        R                  R                  5       nSUS'   SR                  U[        R                  " S5      5      US'   [        R                  " USS[        R                  R!                  US	5      < S
U< S
[        R                  R!                  US5      < S3/US9nU R#                  US5        g )NTr  r   ra  {};{}r  r   /import sys; sys.exit(not sys.flags.no_site and r   in sys.path and L not in sys.path and all("\r" not in p and "\n" not in p for p in sys.path))r   r  r9  r   r  r   r   r  r   r   r  r  r   r   r  r  r   r   r?   r   r4   r  r  r  r  r   r   s          r   test_underpth_file _pthFileTests.test_underpth_file  s    ,,))WW__S^^4
,,T:<WW__X.
jjoo&LnnZ61BCF__h Z)9:Z4  	34r#   c                    [         R                  R                  n[        R                  R                  [        R                  5      nU R                  U R                  USS9SS9n[        R                  R                  U5      n[        R                  R                  5       nSUS'   SR                  U[        R                  " S5      5      US'   [        R                  " US	S
[        R                  R!                  US5      < SU< S[        R                  R!                  US5      < S3/US9nU R#                  US5        g )NTr  F)r  r   ra  r
  r  r   r  r  r  r  r   r  r  r  s          r   test_underpth_dll_file$_pthFileTests.test_underpth_dll_file	  s    ,,))WW__S^^4
,,T:E - KWW__X.
jjoo&LnnZ61BCF__h Z)9:Z4  	34r#   r"   N)T)r  r  r  r  r   r   r  r  r   boolr  r   r  r  r  r  r  r  r"   r#   r   r  r    s    
||w	(	c 4     "
 #
$   "
 #
.   "5 #5&   "5 #5r#   r  c                      \ rS rSrS rS rS r\R                  " 5       S 5       r	\R                  " 5       S 5       r
\R                  " 5       S 5       r\R                  " 5       S 5       r\R                  " 5       S	 5       rS
rg)CommandLineTestsi  c                 T    Ub%  [         R                  R                  U5      (       a  gg)NrM   zdoesn't exist)r   r   r   )r4   r   s     r   rM   CommandLineTests.exists  s     d 3 3"r#   c                 b   [        U5      S:X  Ga(  [        R                  " 5       n[        R                  " 5       n[        R
                  " 5       nUR                  S5        [        R                   H  nUR                  SU< S35        M     UR                  S5        UR                  SU SU R                  U5       S35        UR                  S	U SU R                  U5       S35        UR                  S
[        R                   S35        S[        UR                  5       5      R                  5       4$ / nSU;   a$  UR                  [        R                  " 5       5        SU;   a$  UR                  [        R                  " 5       5        U(       a  Sn[        R                  (       a  SnO)[        R                  SL a  SnO[        R                  c  Sn[        R                   R#                  U5      nU[        R                  R%                  [        U5      R                  5       5      4$ g)Nr   zsys.path = [
z    z,
z]
zUSER_BASE:  (z)
zUSER_SITE: ENABLE_USER_SITE: r	  --user-base--user-site   FrK   r   )
   N)r   r   r   r   r  r  rx   r   r   rM   r   r   r   striprc  r   r  r?   r   )r4   argsr   r   ro  dirbufferreturn_codes           r   get_excepted_output$CommandLineTests.get_excepted_output%  s   t9>((*I002I[[]FLL)*xxC12  LLLL;ykDKK	4J3K3OPLL;ykDKK	4J3K3OPLL-d.C.C-DBGHfV__./55777D MM$**,-D MM$2245K$$&&%/&&.ZZ__V,F 0 01E1E1G HHHr#   c           	      $   SS/UQn[        5        nSUS'   SUS'   [        USUSSS	.6nS S S 5        [        W5      nUR                  nU[        R
                  R                  [        U5      R                  5       5      4$ ! , (       d  f       N]= f)
Nz-mr   r   
PYTHONUTF8rn   PYTHONIOENCODINGTreplace)textr   rp   r  )	r	   r
   r   r  r   r   r   r   r!  )r4   r"  r   procro  r%  s         r   invoke_command_line$CommandLineTests.invoke_command_lineF  s    f$t$ "c #C&-C"#Dc)0DD # T"ooBGG,,VF^-A-A-CDDD #"s   B
Bc                    U R                  5       u  pU R                  5       u  p4U R                  X5        UR                  5       nU R                  US   S5        U R                  US   S5        S[        R
                  " 5        S3SU R                  [        R
                  " 5       5       S3-   nU R                  US	   U5        S
[        R                  " 5        S3SU R                  [        R                  " 5       5       S3-   nU R                  US   U5        U R                  US   S[        R                   35        g )Nr   zsys.path = []zUSER_BASE: ''r  )zUSER_SITE: 'r   r  )	r.  r&  rA   
splitlinesr   r   rM   r   r   )r4   r%  ro  excepted_return_coder  r  excepted_baseexcepted_sites           r   test_no_argsCommandLineTests.test_no_argsS  s,   "668"&":":"<;!!#q>2rC(&t'7'7'9&:!<T--/0134rM2&t'?'?'A&B!DT55789;<rM2r&89N9N8O$PQr#   c                     U R                  S5      u  pU R                  S5      u  p4U R                  X5        U R                  SU5        g )Nz--unknown-argz[--user-base] [--user-site])r.  r&  rA   rN   )r4   r%  ro  r8  r  s        r   test_unknown_args"CommandLineTests.test_unknown_argsc  sF    "66G"&":":?"K;3V<r#   c                     U R                  S5      u  pU R                  S5      nUu  pEU R                  X5        U R                  X%5        g )Nr  r.  r&  rA   r4   r%  ro  exceptedr8  excepted_outputs         r   test_base_argCommandLineTests.test_base_argj  J    "66}E++M:08-;1r#   c                     U R                  S5      u  pU R                  S5      nUu  pEU R                  X5        U R                  X%5        g )Nr  rA  rB  s         r   test_site_argCommandLineTests.test_site_argr  rG  r#   c                     U R                  SS5      u  pU R                  SS5      nUu  pEU R                  X5        U R                  X%5        g )Nr  r  rA  rB  s         r   test_both_argsCommandLineTests.test_both_argsz  sR    "66}7DF++M=I08-;1r#   r"   N)r  r  r  r  rM   r&  r.  r   r  r;  r>  rE  rI  rL  r  r"   r#   r   r  r    s    #BE   "R #R   "= #=   "2 #2   "2 #2   "2 #2r#   r  __main__)4r   test.supportr9  r   test.support.script_helperr   r   r   r   test.support.os_helperr   r	   r
   r   r  rL  r  r  r   r   r  r   r   r   r/   rd  textwrapr   urllib.errorr{  urllib.requestr   r   flagsno_siter   r   r   r  r   r   r$   TestCaser&   r   ra   r3  r  r  r  r  mainr"   r#   r   <module>rY     s(      7 " & ( > @ 
   	 	 	    
       
 99


8
99  t+=O=8,, O=d
5(f 5(nv=H-- v=rGU** GURN5H%% N5bc2x(( c2L zMMO r#   