
    ,h.                         d 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ZddlZddlZddlmZ ddlmZ d Zej*                  j-                  d	       G d
 d             Zy)zTests for distutils.sysconfig.    N)	sysconfig)new_compiler)UnixCCompiler)trim)	swap_itemc                 b    t         j                  j                  dt        |      i|        | dz  S )NMakefile)jaracopathbuildr   )rootcontentss     l/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/setuptools/_distutils/tests/test_sysconfig.py_gen_makefiler      s*    
KKz4>2D9*    save_envc                      e Zd Zd Zej
                  j                  d      ej
                  j                  d      d               Zd Zd Z	ej
                  j                  d      ej
                  j                  d      ej
                  j                  d	      d
                      Zej
                  j                  d      ej
                  j                  d      d               Zd Zd Zej
                  j                  d      ej
                  j                  d      d               Zd Zd Zd Zej
                  j                  d      d        Zej
                  j                  d      d        Zd Zd Zej
                  j                  d      ej
                  j                  d      d               Zej
                  j                  d      ej
                  j                  d      ej
                  j                  dj3                         ej6                  j3                         vd      d                       Zd! Zy")#TestSysconfigc                 n    t        j                         }t        j                  j	                  |      sJ y N)r   get_config_h_filenameosr   isfile)selfconfig_hs     r   test_get_config_h_filenamez(TestSysconfig.test_get_config_h_filename   s&    224ww~~h'''r   zplatform.system() == 'Windows'z$sys.implementation.name != 'cpython'c                 n    t        j                         }t        j                  j	                  |      sJ y r   )r   get_makefile_filenamer   r   r   )r   makefiles     r   test_get_makefile_filenamez(TestSysconfig.test_get_makefile_filename   s(     224ww~~h'''r   c                 ^    t        j                         t        j                  |      k7  sJ y )N)prefix)r   get_python_lib)r   tmp_paths     r   test_get_python_libz!TestSysconfig.test_get_python_lib%   s$    '')Y-E-EX-VVVVr   c                 X    t        j                         }t        |t              sJ |sJ y r   )r   get_config_vars
isinstancedict)r   cvarss     r   test_get_config_varsz"TestSysconfig.test_get_config_vars(   s$    ))+%&&ur   zsysconfig.IS_PYPYzsysconfig.python_buildzplatform.system() == "Windows"c                 $   t        j                  t        j                  d            }|j	                         sJ |j                         sJ t        j                  t        j                               }|j                  j                  |      sJ y )Nsrcdir)	pathlibPathr   get_config_varabsoluteis_dirr   parentsamefile)r   r-   r   s      r   test_srcdir_simplez TestSysconfig.test_srcdir_simple-   se    
 i66x@A  }}<<	 ? ? AB''///r   znot sysconfig.python_buildc                 
   t        j                  t        j                  d            }|j	                  dd      }|j                         sJ t        j                  |      sJ t        j                  t        |            sJ y )Nr-   IncludezPython.h)r.   r/   r   r0   joinpathis_file_is_python_source_dirstr)r   r-   Python_hs      r   test_srcdir_python_buildz&TestSysconfig.test_srcdir_python_build:   sg     i66x@A ??9j9!!..v66..s6{;;;r   c                     t        j                  d      }t        j                  d      5  t        j                  d      }ddd       |k(  sJ y# 1 sw Y   xY w)zO
        srcdir should be independent of the current working directory
        r-   z..N)r   r0   r   r/   )r   r-   srcdir2s      r   test_srcdir_independent_of_cwdz,TestSysconfig.test_srcdir_independent_of_cwdG   sR    
 ))(3YYt_ 	9..x8G	9   	9 	9s   AAc           	      @    G d d      }ddddddd	d
d} |       }t        j                         5 }|j                         D ]/  \  }}|j                  t	        t
        j                  ||             1 t        j                  |       d d d        |S # 1 sw Y   |S xY w)Nc                   4    e Zd ZdZej
                  Zd Zd Zy)2TestSysconfig.customize_compiler.<locals>.compilerunixc                     i | _         y r   )exesr   s    r   __init__z;TestSysconfig.customize_compiler.<locals>.compiler.__init__W   s	    	r   c                 R    |j                         D ]  \  }}|| j                  |<    y r   )itemsrF   )r   kwkvs       r   set_executableszBTestSysconfig.customize_compiler.<locals>.compiler.set_executablesZ   s(    HHJ %DAq#$DIIaL%r   N)__name__
__module____qualname__compiler_typer   executablesrH   rN    r   r   compilerrC   S   s    "M'33K%r   rU   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	ExitStackrJ   enter_contextr   r   _config_varscustomize_compiler)r   rU   sysconfig_varscompcmkeyvalues          r   rg   z TestSysconfig.customize_compilerQ   s    		% 		% %#'%.	
 z!!# 	/r,224 P
U  9+A+A3!NOP((.	/
 	/
 s   ABBz-not isinstance(new_compiler(), UnixCCompiler)disable_macos_customizationc                 >   t        j                          dt        j                  d<   dt        j                  d<   dt        j                  d<   dt        j                  d<   d	t        j                  d
<   dt        j                  d<   dt        j                  d<   dt        j                  d<   dt        j                  d<   dt        j                  d<   | j	                         }|j
                  d   dk(  sJ |j
                  d   dk(  sJ |j
                  d   dk(  sJ |j
                  d   dk(  sJ |j
                  d   dk(  sJ |j
                  d   dk(  sJ |j
                  d    d!k(  sJ |j                  d"k(  sJ t        j                  d#k(  r|j
                  d$   dk(  sJ d$|j
                  vsJ t        j                  d= t        j                  d= t        j                  d= t        j                  d= t        j                  d
= t        j                  d= t        j                  d= t        j                  d= t        j                  d= t        j                  d= | j	                         }|j
                  d   d%k(  sJ |j
                  d   d&k(  sJ |j
                  d   d'k(  sJ |j
                  d   d(k(  sJ |j
                  d   d)k(  sJ |j
                  d   d*k(  sJ |j
                  d    d+k(  sJ |j                  d"k(  sJ d$|j
                  vsJ y ),Nenv_arr[   env_ccr\   env_cppCPPzenv_cxx --env-cxx-flagsr]   env_ldsharedra   z--env-ldflagsLDFLAGSz--env-arflagsr^   z--env-cflagsr_   z--env-cppflagsCPPFLAGS
env_ranlibRANLIBarchiverzenv_ar --env-arflagspreprocessorzenv_cpp --env-cppflagsrU   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-cppflagsrZ   darwinranlibzsc_ar --sc-arflagszsc_cc -Ezsc_cc --sc-cflagszsc_cc --sc-cflags --sc-ccsharedzsc_cxx --sc-cflagsrW   rY   )	r   r'   r   environrg   rF   shared_lib_extensionsysplatform)r   ri   s     r   test_customize_compilerz%TestSysconfig.test_customize_compilerq   s    	!!##

4#

4%

55

5!/

: /

9 /

9-

8!1

:+

8&&(yy$(>>>yy(,DDDyy$(LLLyy'>
 	
 IIn%CD	
 yy&(22yy%D
 	
 ((,>>><<8#99X&,66499,,JJtJJtJJuJJuJJz"JJy!JJy!JJx JJz"JJx &&(yy$(<<<yy(J66yy$(;;;yy'+LLLyy(,@@@yy&'11yy%66((,>>>tyy(((r   c                 Z    t        |d      }t        j                  |      }|dddk(  sJ y )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_basez&TestSysconfig.test_parse_makefile_base   s:     
 $$X.$@5QQQQr   c                 Z    t        |d      }t        j                  |      }|dddk(  sJ y )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_dollarz0TestSysconfig.test_parse_makefile_literal_dollar   s:     
 $$X.$CeTTTTr   c                     dd l }|j                  d      t        j                  d      k(  sJ |j                  d      t        j                  d      k(  sJ y )Nr   r_   rt   r   r0   r   global_sysconfigs     r   test_sysconfig_modulez#TestSysconfig.test_sysconfig_module   s\    ,..x8I<T<T=
 
 	
  ..y9Y=U=U>
 
 	
 
r   z3sysconfig.get_config_var('CUSTOMIZED_OSX_COMPILER')c                    dd l }t        j                  d      rt        j                  d       |j                  d      t        j                  d      k(  sJ |j                  d      t        j                  d      k(  sJ y )Nr   CUSTOMIZED_OSX_COMPILERzcompiler flags customizedra   r\   )r   r0   pytestskipr   s     r   test_sysconfig_compiler_varsz*TestSysconfig.test_sysconfig_compiler_vars   sp    ,##$=>KK34..z:i>V>V?
 
 	
  ..t4	8P8PQU8VVVVr   z*not sysconfig.get_config_var('EXT_SUFFIX')c                     t        j                  t              5  t        j                  d       d d d        y # 1 sw Y   y xY w)NSO)r   warnsDeprecationWarningr   r0   rG   s    r   test_SO_deprecationz!TestSysconfig.test_SO_deprecation   s2    \\,- 	+$$T*	+ 	+ 	+s	   9Ac                 D   t         j                  j                  dt        d      i|       t	        j
                  t        j                  |dz  gt        j                  t        j                  dd      }|j                         \  }}d|j                  k(  s
J d|z          y )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_varsz<TestSysconfig.test_customize_compiler_before_get_config_vars   s     	   	
 ^^X./??$$#
 ]]_
dALL >"7$">> r   c                 @   t        j                         }i }t        |d      5 }t        j                  ||      }d d d        |u sJ t        |d      5 }t        j                  |      }d d d        t	        |t
              sJ y # 1 sw Y   MxY w# 1 sw Y   (xY w)Nr   )r   )g)r   r   openparse_config_hr(   r)   )r   r   inputfresults        r   test_parse_config_hz!TestSysconfig.test_parse_config_h  s    224(W- 	:--a59F	:(W- 	1--a0F	1&$'''	: 	:	1 	1s   BBBBzplatform.system() != 'Windows'c                     t        j                  d      j                  d      sJ t        j                  d      dk7  sJ y )N
EXT_SUFFIXz.pyd)r   r0   endswithrG   s    r   test_win_ext_suffixz!TestSysconfig.test_win_ext_suffix  s9     ''5>>vFF''5???r   z	\PCbuild\z*Need sys.executable to be in a source tree)reasonc                    t         j                  j                         }|j                  |_        ||_        |j                          |j                         ddg}t        j                  j                  t        j                  j                  t        j                              }t        j                  |i t        j                  d|i      }|dk(  sJ y)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_treez2TestSysconfig.test_win_build_venv_from_source_tree  s     kk ..GGIQ

 9K9K)LM%%A

AL.A
 f}}r   c                     d }|j                  t        d|       t        j                  j	                  t        j
                               sJ y)a5  
        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                 8    | dk(  ryt        j                  |       S )N	INCLUDEPYz/does-not-existr   )names    r   overridezFTestSysconfig.test_get_python_inc_missing_config_dir.<locals>.override8  s    {"(++D11r   r0   N)setattrr   r   r   existsget_python_inc)r   monkeypatchr   s      r   &test_get_python_inc_missing_config_dirz4TestSysconfig.test_get_python_inc_missing_config_dir.  s;    	2
 	I'7Bww~~i668999r   N)rO   rP   rQ   r   r   markskipifr    r%   r+   xfailr5   r=   r@   rg   usefixturesr   r   r   r   r   r   r   r   r   casefoldr   r   r   r   rT   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__rc   r   r   r.   r   r   r   distutils.ccompilerr   distutils.unixccompilerr   jaraco.envsr
   r   r   jaraco.textr   test.supportr   r   r   r   r   rT   r   r   <module>r      sb    $   	   
  , 1     "
 $e: e: %e:r   