o ?Og1@sFdZddlZddlZddlZddlZddlZddlmZddlm Z ddl m Z m ZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'e%Z(ej)dkr^ddl m*Z*ej+d e,d d dd d Zee"ddZ-eee(Zeee(Z.dddZ/dZ0zesej1Z0Wn e2yYnwddZ3dddZ4dddZ5dS)aProvide access to Python's configuration information. The specific configuration variables available depend heavily on the platform and configuration. The values may be retrieved using get_config_var(name), and the list of variables is available via get_config_vars().keys(). Additional convenience functions are also available. Written by: Fred L. Drake, Jr. Email: N)partial)DistutilsPlatformError)_PREFIX _BASE_PREFIX _EXEC_PREFIX_BASE_EXEC_PREFIX _PROJECT_BASE _PYTHON_BUILD _init_posixparse_config_h_init_non_posix_is_python_source_dir _sys_home _variable_rx _findvar1_rx _findvar2_rxexpand_makefile_varsis_python_buildget_config_h_filenameget_config_varget_config_varsget_makefile_filenameget_python_versionnt) _fix_pcbuildzCThe distutils.sysconfig module is deprecated, use sysconfig instead) stacklevelcCs t||dS)N)vars)sysconfig_parse_config_h)fpgr":/opt/alt/python310/lib64/python3.10/distutils/sysconfig.pyr Bs r T)Z check_homec Csddlm}||ddddd}|duri}i}i} |}|dur#n@tt|}|rb|dd\}} | } | d d } d | vrF| ||<nzt | } Wnt y]| d d ||<Ynw| ||<qd } |r4t |D]} || } t t | p}t t| }|r.|d}d}||vrt||}n>||vrd }n7|tjvrtj|}n,|| vr| dr| dd| vrd }nd||vrd }nt|d|}nd ||<}|r-| |d}| d|||} d |vr| || <qlzt | } Wnt y| || <Ynw| || <|| =| dr-| dd| vr-| dd} | |vr-| || <ql|| =ql|sh||D]\}} t| trL| ||<q<|||S)zParse a Makefile-style file. A dictionary containing name/value pairs is returned. If an optional dictionary is passed in as the second argument, it is used instead of a new dictionary. r)TextFilersurrogateescape)Zstrip_commentsZ skip_blanksZ join_lineserrorsNTrz$$$)CFLAGSLDFLAGSCPPFLAGSFZPY_)Zdistutils.text_filer$readlinerematchrgroupstripreplaceint ValueErrorlistsearchrrstrosenviron startswithendstartcloseitems isinstanceupdate)fnr!r$r ZdoneZnotdonelinemnvZtmpvZrenamed_variablesnamevaluefounditemZafterkr"r"r#parse_makefileMs                2   rKr'c Cs|jdkrtjdkrtdsddl}|tdtd<tddd d d d d d\}}}}}}}} dtj vrTtj d} tjdkrRd tj vrR| |rR| |t |d}| }dtj vr^tj d}d tj vrhtj d }dtj vrstj d} n|d} dtj vr|dtj d}d tj vr|dtj d }|dtj d }dtj vr| dtj d} |dtj d}|dtj d}d tj vrtj d }dtj vr|dtj d} n|d| } |d|} |j | | | d||||| d||_ dSdS)zDo any platform-specific customization of a CCompiler instance. Mainly needed on Unix, so we can plug in the information that varies across Unices and is stored in Python's Makefile. ZunixdarwinZCUSTOMIZED_OSX_COMPILERrNTrueZCCZCXXr)ZCCSHAREDZLDSHAREDZ SHLIB_SUFFIXZARZARFLAGSZCPPz -Er* r+)Z preprocessorcompilerZ compiler_soZ compiler_cxxZ linker_soZ linker_exearchiver)Z compiler_typesysplatform _config_varsget _osx_supportcustomize_compilerrr8r9r:lenZset_executablesZshared_lib_extension)rOrUZccZcxxZcflagsZccsharedZldsharedZ shlib_suffixZarZar_flagsZnewccZcpprPZcc_cmdr"r"r#rVsf                         rVcCs|dur |rtp t}tjdkr5tr&|rtptStjt dd}tj |Sdt t }tj|d|StjdkrUtrNtj|dtjj tj|dStj|dStd tj) aReturn the directory containing installed Python header files. If 'plat_specific' is false (the default), this is the path to the non-platform-specific header files, i.e. Python.h and so on; otherwise, this is the path to platform-specific header files (namely pyconfig.h). If 'prefix' is supplied, use it instead of sys.base_prefix or sys.base_exec_prefix -- i.e., ignore 'plat_specific'. NposixZsrcdirZIncludepythonZincluderZPCzFI don't know where Python installs its C header files on platform '%s')BASE_EXEC_PREFIX BASE_PREFIXr8rF python_buildr project_basepathjoinrnormpathr build_flagspathsepr) plat_specificprefixZincdirZ python_dirr"r"r#get_python_inc s*     recCs|dur|r |r tp t}n|rtpt}tjdkr8|s|r tj}nd}tj ||dt }|r1|Stj |dStjdkrN|rFtj |dStj |ddSt dtj) aSReturn the directory containing the Python library (standard or site additions). If 'plat_specific' is true, return the directory containing platform-specific modules, i.e. any module from a non-pure-Python module distribution; otherwise, return the platform-shared library directory. If 'standard_lib' is true, return the directory containing standard Python library modules; otherwise, return the directory for site-specific modules. If 'prefix' is supplied, use it instead of sys.base_prefix or sys.base_exec_prefix -- i.e., ignore 'plat_specific'. NrXlibrYz site-packagesrZLibz?I don't know where Python installs its library on platform '%s') rZr[ EXEC_PREFIXPREFIXr8rFrQ platlibdirr^r_rr)rcZ standard_librdlibdirZ libpythonr"r"r#get_python_lib5s.    rk)N)rN)rrN)6__doc___impr8r.rQwarnings functoolsrr&rZ sysconfigrrhrr[rrgrrZr r]r r\r Zsysconfig_init_posixr rr rrrrrrrrrrrrrSrFrwarnDeprecationWarningZ _python_buildZ_init_ntrKraabiflagsAttributeErrorrVrerkr"r"r"r#sB   \       o  G(