
    n&ph.                         S r SSKrSSKrSSKrSSKrSSKrSSKrSSKJr  SSKJ	r	  SSK
Jr  SSKrSSKrSSKrSSKJr  SSKJr  S r\R*                  R-                  S	5       " S
 S5      5       rg)zTests for distutils.sysconfig.    N)	sysconfig)new_compiler)UnixCCompiler)trim)	swap_itemc                 b    [         R                  R                  S[        U5      0U 5        U S-  $ )NMakefile)jaracopathbuildr   )rootcontentss     ]/var/www/html/venv/lib/python3.13/site-packages/setuptools/_distutils/tests/test_sysconfig.py_gen_makefiler      s*    
KKz4>2D9*    save_envc                      \ rS rSrS r\R                  R                  S5      \R                  R                  S5      S 5       5       rS r	S r
\R                  R                  S5      \R                  R                  S	5      \R                  R                  S
5      S 5       5       5       r\R                  R                  S5      \R                  R                  S5      S 5       5       rS rS r\R                  R                  S5      \R                  R!                  S5      S 5       5       rS rS rS r\R                  R                  S5      S 5       r\R                  R                  S5      S 5       rS rS r\R                  R                  S5      \R                  R                  S5      S 5       5       r\R                  R                  S5      \R                  R                  S5      \R                  R                  SR5                  5       \R8                  R5                  5       ;  SS 9S! 5       5       5       rS" rS#rg$)%TestSysconfig   c                 z    [         R                  " 5       n[        R                  R	                  U5      (       d   eg N)r   get_config_h_filenameosr   isfile)selfconfig_hs     r   test_get_config_h_filename(TestSysconfig.test_get_config_h_filename   s)    224ww~~h''''r   zplatform.system() == 'Windows'z$sys.implementation.name != 'cpython'c                 z    [         R                  " 5       n[        R                  R	                  U5      (       d   eg r   )r   get_makefile_filenamer   r   r   )r   makefiles     r   test_get_makefile_filename(TestSysconfig.test_get_makefile_filename   s+     224ww~~h''''r   c                 ^    [         R                  " 5       [         R                  " US9:w  d   eg )N)prefix)r   get_python_lib)r   tmp_paths     r   test_get_python_lib!TestSysconfig.test_get_python_lib%   s$    '')Y-E-EX-VVVVr   c                 n    [         R                  " 5       n[        U[        5      (       d   eU(       d   eg r   )r   get_config_vars
isinstancedict)r   cvarss     r   test_get_config_vars"TestSysconfig.test_get_config_vars(   s*    ))+%&&&&ur   zsysconfig.IS_PYPYzsysconfig.python_buildzplatform.system() == "Windows"c                 J   [         R                  " [        R                  " S5      5      nUR	                  5       (       d   eUR                  5       (       d   e[         R                  " [        R                  " 5       5      nUR                  R                  U5      (       d   eg )Nsrcdir)	pathlibPathr   get_config_varabsoluteis_dirr    parentsamefile)r   r2   r!   s      r   test_srcdir_simple TestSysconfig.test_srcdir_simple-   sr    
 i66x@A    }}<<	 ? ? AB''////r   znot sysconfig.python_buildc                 0   [         R                  " [        R                  " S5      5      nUR	                  SS5      nUR                  5       (       d   e[        R                  " U5      (       d   e[        R                  " [        U5      5      (       d   eg )Nr2   IncludezPython.h)r3   r4   r   r5   joinpathis_file_is_python_source_dirstr)r   r2   Python_hs      r   test_srcdir_python_build&TestSysconfig.test_srcdir_python_build:   sv     i66x@A ??9j9!!!!..v6666..s6{;;;;r   c                     [         R                  " S5      n[        R                  " S5         [         R                  " S5      nSSS5        UW:X  d   eg! , (       d  f       N= f)z?
srcdir should be independent of the current working directory
r2   z..N)r   r5   r   r4   )r   r2   srcdir2s      r   test_srcdir_independent_of_cwd,TestSysconfig.test_srcdir_independent_of_cwdG   sJ    
 ))(3YYt_..x8G     _s   A
A#c           	      N    " S S5      nSSSSSSS	S
S.nU" 5       n[         R                  " 5        nUR                  5        H.  u  pVUR                  [	        [
        R                  XV5      5        M0     [
        R                  " U5        S S S 5        U$ ! , (       d  f       U$ = f)Nc                   <    \ rS rSrSr\R                  rS rS rSr	g)2TestSysconfig.customize_compiler.<locals>.compilerS   unixc                     0 U l         g r   exesr   s    r   __init__;TestSysconfig.customize_compiler.<locals>.compiler.__init__W   s	    	r   c                 R    UR                  5        H  u  p#X0R                  U'   M     g r   )itemsrP   )r   kwkvs       r   set_executablesBTestSysconfig.customize_compiler.<locals>.compiler.set_executablesZ   s    HHJDA#$IIaL 'r   rO   N)
__name__
__module____qualname____firstlineno__compiler_typer   executablesrR   rY   __static_attributes__ r   r   compilerrK   S   s    "M'33K%r   rc   sc_arsc_ccsc_cxxz--sc-arflagsz--sc-cflagsz--sc-ccsharedsc_ldsharedsc_shutil_suffix)ARCCCXXARFLAGSCFLAGSCCSHAREDLDSHAREDSHLIB_SUFFIX)
contextlib	ExitStackrU   enter_contextr   r   _config_varscustomize_compiler)r   rc   sysconfig_varscompcmkeyvalues          r   ru    TestSysconfig.customize_compilerQ   s    		% 		% %#'%.	
 z!!#r,224
  9+A+A3!NO 5((. $
  $#
 s   AB
B$z-not isinstance(new_compiler(), UnixCCompiler)disable_macos_customizationc                 n   [         R                  " 5         S[        R                  S'   S[        R                  S'   S[        R                  S'   S[        R                  S'   S	[        R                  S
'   S[        R                  S'   S[        R                  S'   S[        R                  S'   S[        R                  S'   S[        R                  S'   U R	                  5       nUR
                  S   S:X  d   eUR
                  S   S:X  d   eUR
                  S   S:X  d   eUR
                  S   S:X  d   eUR
                  S   S:X  d   eUR
                  S   S:X  d   eUR
                  S    S!:X  d   eUR                  S":X  d   e[        R                  S#:X  a  UR
                  S$   S:X  d   eOS$UR
                  ;  d   e[        R                  S	 [        R                  S	 [        R                  S	 [        R                  S	 [        R                  S
	 [        R                  S	 [        R                  S	 [        R                  S	 [        R                  S	 [        R                  S	 U R	                  5       nUR
                  S   S%:X  d   eUR
                  S   S&:X  d   eUR
                  S   S':X  d   eUR
                  S   S(:X  d   eUR
                  S   S):X  d   eUR
                  S   S*:X  d   eUR
                  S    S+:X  d   eUR                  S":X  d   eS$UR
                  ;  d   eg ),Nenv_arri   env_ccrj   env_cppCPPzenv_cxx --env-cxx-flagsrk   env_ldsharedro   z--env-ldflagsLDFLAGSz--env-arflagsrl   z--env-cflagsrm   z--env-cppflagsCPPFLAGS
env_ranlibRANLIBarchiverzenv_ar --env-arflagspreprocessorzenv_cpp --env-cppflagsrc   z"env_cc --env-cflags --env-cppflagscompiler_soz0env_cc --env-cflags --env-cppflags --sc-ccsharedcompiler_cxxz2env_cxx --env-cxx-flags --sc-cflags --env-cppflags
linker_exe	linker_soz6env_ldshared --env-ldflags --env-cflags --env-cppflagsrh   darwinranlibzsc_ar --sc-arflagszsc_cc -Ezsc_cc --sc-cflagszsc_cc --sc-cflags --sc-ccsharedzsc_cxx --sc-cflagsre   rg   )	r   r+   r   environru   rP   shared_lib_extensionsysplatform)r   rw   s     r   test_customize_compiler%TestSysconfig.test_customize_compilerq   s    	!!##

4#

4%

55

5!/

: /

9 /

9-

8!1

:+

8&&(yy$(>>>>yy(,DDDDyy$(LLLLyy'>
 	
 
 IIn%CD	
D yy&(222yy%D
 	
 
 ((,>>>><<8#99X&,666499,,,JJtJJtJJuJJuJJz"JJy!JJy!JJx JJz"JJx &&(yy$(<<<<yy(J666yy$(;;;;yy'+LLLLyy(,@@@@yy&'111yy%666((,>>>>tyy(((r   c                 ^    [        US5      n[        R                  " U5      nUSSS.:X  d   eg )Nzo
            CONFIG_ARGS=  '--arg1=optarg1' 'ENV=LIB'
            VAR=$OTHER
            OTHER=foo
            z'--arg1=optarg1' 'ENV=LIB'fooCONFIG_ARGSOTHERr   r   parse_makefiler   r'   r!   ds       r   test_parse_makefile_base&TestSysconfig.test_parse_makefile_base   s:     
 $$X.$@5QQQQr   c                 ^    [        US5      n[        R                  " U5      nUSSS.:X  d   eg )Nzr
            CONFIG_ARGS=  '--arg1=optarg1' 'ENV=\$$LIB'
            VAR=$OTHER
            OTHER=foo
            z'--arg1=optarg1' 'ENV=\$LIB'r   r   r   r   s       r   "test_parse_makefile_literal_dollar0TestSysconfig.test_parse_makefile_literal_dollar   s:     
 $$X.$CeTTTTr   c                     SS K nUR                  S5      [         R                  " S5      :X  d   eUR                  S5      [         R                  " S5      :X  d   eg )Nr   rm   r   r   r5   r   global_sysconfigs     r   test_sysconfig_module#TestSysconfig.test_sysconfig_module   sa    ,..x8I<T<T=
 
 	
 
  ..y9Y=U=U>
 
 	
 
r   z3sysconfig.get_config_var('CUSTOMIZED_OSX_COMPILER')c                    SS K n[         R                  " S5      (       a  [        R                  " S5        UR                  S5      [         R                  " S5      :X  d   eUR                  S5      [         R                  " S5      :X  d   eg )Nr   CUSTOMIZED_OSX_COMPILERzcompiler flags customizedro   rj   )r   r5   pytestskipr   s     r   test_sysconfig_compiler_vars*TestSysconfig.test_sysconfig_compiler_vars   sx    ,##$=>>KK34..z:i>V>V?
 
 	
 
  ..t4	8P8PQU8VVVVr   z*not sysconfig.get_config_var('EXT_SUFFIX')c                     [         R                  " [        5         [        R                  " S5        S S S 5        g ! , (       d  f       g = f)NSO)r   warnsDeprecationWarningr   r5   rQ   s    r   test_SO_deprecation!TestSysconfig.test_SO_deprecation   s)    \\,-$$T* .--s	   ;
A	c                 @   [         R                  R                  S[        S5      0U5        [        R
                  " [        R                  US-  /[        R                  [        R                  SSS9nUR                  5       u  p4SUR                  :X  d
   SU-   5       eg )Nfilea[  
                    from distutils.core import Distribution
                    config = Distribution().get_command_obj('config')
                    # try_compile may pass or it may fail if no compiler
                    # is found but it should not raise an exception.
                    rc = config.try_compile('int x;')
                    Tutf-8)stdoutstderruniversal_newlinesencodingr   zSubprocess failed: )r
   r   r   r   
subprocessPopenr   
executablePIPESTDOUTcommunicate
returncode)r   r'   poutserrss        r   .test_customize_compiler_before_get_config_vars<TestSysconfig.test_customize_compiler_before_get_config_vars   s     	   	
 ^^X./??$$#
 ]]_
ALL >"7$">> r   c                 R   [         R                  " 5       n0 n[        USS9 n[         R                  " X2S9nS S S 5        UWL d   e[        USS9 n[         R                  " U5      nS S S 5        [	        U[
        5      (       d   eg ! , (       d  f       NV= f! , (       d  f       N7= f)Nr   )r   )g)r   r   openparse_config_hr,   r-   )r   r   inputfresults        r   test_parse_config_h!TestSysconfig.test_parse_config_h  s    224(W---a9F .(W---a0F .&$'''' .- .-s   BB
B
B&zplatform.system() != 'Windows'c                     [         R                  " S5      R                  S5      (       d   e[         R                  " S5      S:w  d   eg )N
EXT_SUFFIXz.pyd)r   r5   endswithrQ   s    r   test_win_ext_suffix!TestSysconfig.test_win_ext_suffix  s?     ''5>>vFFFF''5???r   z	\PCbuild\z*Need sys.executable to be in a source tree)reasonc                    [         R                  R                  5       nUR                  Ul        Xl        UR                  5         UR                  5       SS/n[        R                  R                  [        R                  R                  [        R                  5      5      n[        R                  " U0 [        R                  ESU0ES9nUS:X  d   eg)zAEnsure distutils.sysconfig detects venvs from source tree builds.z-czCimport distutils.sysconfig; print(distutils.sysconfig.python_build)
PYTHONPATH)envTrueN)r
   envsVEnv
clean_optscreate_optsr   
ensure_envexer   r   dirname	distutils__file__r   check_outputr   )r   r'   r   cmddistutils_pathouts         r   $test_win_build_venv_from_source_tree2TestSysconfig.test_win_build_venv_from_source_tree  s     kk ..GGIQ

 9K9K)LM%%A

AL.A
 f}}r   c                     S nUR                  [        SU5        [        R                  R	                  [        R
                  " 5       5      (       d   eg)a  
In portable Python installations, the sysconfig will be broken,
pointing to the directories where the installation was built and
not where it currently is. In this case, ensure that the missing
directory isn't used for get_python_inc.

See pypa/distutils#178.
c                 <    U S:X  a  g[         R                  " U 5      $ )N	INCLUDEPYz/does-not-existr   )names    r   overrideFTestSysconfig.test_get_python_inc_missing_config_dir.<locals>.override8  s    {"(++D11r   r5   N)setattrr   r   r   existsget_python_inc)r   monkeypatchr   s      r   &test_get_python_inc_missing_config_dir4TestSysconfig.test_get_python_inc_missing_config_dir.  s>    	2
 	I'7Bww~~i6689999r   rb   N) r[   r\   r]   r^   r   r   markskipifr"   r(   r/   xfailr:   rC   rG   ru   usefixturesr   r   r   r   r   r   r   r   r   casefoldr   r   r   r   ra   rb   r   r   r   r      sM   ( [[89[[>?( @ :(W
 [[+,[[01[[780 9 2 -0 [[+,[[45	< 6 -	<!@ [[GH[[:;9) < I9)v
R
U
. [[MNW OW [[DE+ F+?4( [[89[[>?@ @ :@ [[89[[>?[[ (?(?(AA;  	 @ :":r   r   )__doc__rq   r   r   r3   r   r   r   distutils.ccompilerr   distutils.unixccompilerr   jaraco.envsr
   r   r   jaraco.textr   test.supportr   r   r   r   r   rb   r   r   <module>r     sb    $   	   
  , 1     "
 $e: e: %e:r   