
    ϶vg.                         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                            d	           G d
 d                      ZdS )zTests for distutils.sysconfig.    N)	sysconfig)new_compiler)UnixCCompiler)trim)	swap_itemc                 j    t           j                            dt          |          i|            | dz  S )NMakefile)jaracopathbuildr   )rootcontentss     g/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/setuptools/_distutils/tests/test_sysconfig.py_gen_makefiler      s0    
Kz4>>2D999*    save_envc                      e Zd Zd Zej                            d          ej                            d          d                         Zd Zd Z	ej                            d          ej                            d          ej        
                    d	          d
                                     Zej                            d          ej                            d          d                         Zd Zd Zej                            d          ej                            d          d                         Zd Zd Zd Zej                            d          d             Zej                            d          d             Zd Zd Zej                            d          ej                            d          d                         Zej                            d          ej                            d          ej                            d                                ej                                        vd          d                                      Zd! Zd"S )#TestSysconfigc                 n    t          j                    }t          j                            |          sJ d S N)r   get_config_h_filenameosr   isfile)selfconfig_hs     r   test_get_config_h_filenamez(TestSysconfig.test_get_config_h_filename   s0    244w~~h'''''''r   zplatform.system() == 'Windows'z$sys.implementation.name != 'cpython'c                 n    t          j                    }t          j                            |          sJ d S r   )r   get_makefile_filenamer   r   r   )r   makefiles     r   test_get_makefile_filenamez(TestSysconfig.test_get_makefile_filename   s2     244w~~h'''''''r   c                 ^    t          j                    t          j        |          k    sJ d S )N)prefix)r   get_python_lib)r   tmp_paths     r   test_get_python_libz!TestSysconfig.test_get_python_lib%   s0    '))Y-EX-V-V-VVVVVVVr   c                 b    t          j                    }t          |t                    sJ |sJ d S r   )r   get_config_vars
isinstancedict)r   cvarss     r   test_get_config_varsz"TestSysconfig.test_get_config_vars(   s3    )++%&&&&&r   zsysconfig.IS_PYPYzsysconfig.python_buildzplatform.system() == "Windows"c                 ,   t          j        t          j        d                    }|                                sJ |                                sJ t          j        t          j                              }|j                            |          sJ d S )Nsrcdir)	pathlibPathr   get_config_varabsoluteis_dirr   parentsamefile)r   r-   r   s      r   test_srcdir_simplez TestSysconfig.test_srcdir_simple-   s    
 i6x@@AA     }}<	 ? A ABB''///////r   znot sysconfig.python_buildc                    t          j        t          j        d                    }|                    dd          }|                                sJ t          j        |          sJ t          j        t          |                    sJ d S )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:   s     i6x@@AA ??9j99!!!!!.v66666.s6{{;;;;;;;r   c                     t          j        d          }t          j        d          5  t          j        d          }ddd           n# 1 swxY w Y   ||k    sJ dS )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   s    
 )(33Yt__ 	9 	9.x88G	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9      s   A

AAc           	      X    G d d          }ddddddd	d
d} |            }t          j                    5 }|                                D ]3\  }}|                    t	          t
          j        ||                     4t          j        |           d d d            n# 1 swxY w Y   |S )Nc                   ,    e Zd ZdZej        Zd Zd ZdS )2TestSysconfig.customize_compiler.<locals>.compilerunixc                     i | _         d S r   )exesr   s    r   __init__z;TestSysconfig.customize_compiler.<locals>.compiler.__init__W   s    			r   c                 N    |                                 D ]\  }}|| j        |<   d S r   )itemsrF   )r   kwkvs       r   set_executableszBTestSysconfig.customize_compiler.<locals>.compiler.set_executablesZ   s4    HHJJ % %DAq#$DIaLL% %r   N)__name__
__module____qualname__compiler_typer   executablesrH   rN    r   r   compilerrC   S   s?        "M'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   		% 		% 		% 		% 		% 		% 		% 		% %#'%.	
 	
 xzz!## 	/r,2244 P P
U  9+A3!N!NOOOO(...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/
 s   ABB#&B#z-not isinstance(new_compiler(), UnixCCompiler)disable_macos_customizationc                 h   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        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 n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        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 d S ),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 --sc-cflags --env-cflags --env-cppflagscompiler_soz<env_cc --sc-cflags --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&&((y$(>>>>>y(,DDDDDy$(XXXXXy'J
 
 
 
 In%CD D D D y&(2222y%D
 
 
 
 (,>>>>><8##9X&,6666649,,,,JtJtJuJuJz"Jy!Jy!Jx Jz"Jx &&((y$(<<<<<y(J6666y$(;;;;;y'+LLLLLy(,@@@@@y&'1111y%6666(,>>>>>ty((((((r   c                 d    t          |d          }t          j        |          }|dddk    sJ d S )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   sK     
 
 $X..$@5QQQQQQQQr   c                 d    t          |d          }t          j        |          }|dddk    sJ d S )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   sK     
 
 $X..$CeTTTTTTTTr   c                     dd l }|                    d          t          j        d          k    sJ |                    d          t          j        d          k    sJ d S )Nr   r_   rt   r   r0   r   global_sysconfigs     r   test_sysconfig_modulez#TestSysconfig.test_sysconfig_module   s    ,,,,..x88I<T=
 =
 
 
 
 
  ..y99Y=U>
 >
 
 
 
 
 
 
r   z3sysconfig.get_config_var('CUSTOMIZED_OSX_COMPILER')c                    dd l }t          j        d          rt          j        d           |                    d          t          j        d          k    sJ |                    d          t          j        d          k    sJ d S )Nr   CUSTOMIZED_OSX_COMPILERzcompiler flags customizedra   r\   )r   r0   pytestskipr   s     r   test_sysconfig_compiler_varsz*TestSysconfig.test_sysconfig_compiler_vars   s    ,,,,#$=>> 	5K3444..z::i>V?
 ?
 
 
 
 
  ..t44	8PQU8V8VVVVVVVr   z*not sysconfig.get_config_var('EXT_SUFFIX')c                     t          j        t                    5  t          j        d           d d d            d S # 1 swxY w Y   d S )NSO)r   warnsDeprecationWarningr   r0   rG   s    r   test_SO_deprecationz!TestSysconfig.test_SO_deprecation   s    \,-- 	+ 	+$T***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s   <A A c                 :   t           j                            dt          d          i|           t	          j        t          j        |dz  gt          j        t          j	        dd          }|
                                \  }}d|j        k    sJ d|z               d S )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AL   "7$">     r   c                 b   t          j                    }i }t          |d          5 }t          j        ||          }d d d            n# 1 swxY w Y   ||u sJ t          |d          5 }t          j        |          }d d d            n# 1 swxY w Y   t	          |t
                    sJ d S )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44(W--- 	:-a5999F	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:(W--- 	1-a00F	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1&$'''''''s#   A

AA,BBBzplatform.system() != 'Windows'c                     t          j        d                              d          sJ t          j        d          dk    sJ d S )N
EXT_SUFFIXz.pyd)r   r0   endswithrG   s    r   test_win_ext_suffixz!TestSysconfig.test_win_ext_suffix  sK     '55>>vFFFFF'55??????r   z	\PCbuild\z*Need sys.executable to be in a source tree)reasonc                    t           j                                        }|j        |_        ||_        |                                 |                                ddg}t          j	        
                    t          j	        
                    t          j                            }t          j        |i t          j        d|i          }|dk    sJ dS )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     k  .GGIIQ

 9K)L)LMM%A
AL.AA
 
 
 f}}}}}}r   c                     d }|                     t          d|           t          j                            t          j                              sJ dS )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                 :    | dk    rdS t          j        |           S )N	INCLUDEPYz/does-not-existr   )names    r   overridezFTestSysconfig.test_get_python_inc_missing_config_dir.<locals>.override8  s$    {""((+D1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.  sU    	2 	2 	2
 	I'7BBBw~~i6889999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      sE       ( ( ( [899[>??( ( @? :9(W W W  
 [+,,[011[7880 0 98 21 -,0 [+,,[455	< 	< 65 -,	<! ! !  @ [GHH[:;;9) 9) <; IH9)v
R 
R 
R
U 
U 
U
 
 
. [MNNW W ONW [DEE+ + FE+? ? ?4( ( ( [899[>??@ @ @? :9@ [899[>??[  (?(?(A(AA;    	  @? :9": : : : :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      s*   $ $         				      



       , , , , , , 1 1 1 1 1 1             " " " " " "  
 $$e: e: e: e: e: e: e: %$e: e: e:r   