????
Your IP : 3.142.201.19
a
�DOgRa�
@s�dZddlZddlZddlmZmZgd�ZdhZdddd d
ddd
d�dddddddd
d�dddddddd
d�dddddddd�ddddd d!dd�d"d"d#d#d$d!dd�d%�ZdZ ej
��dZd&ej
dd'�Zd(ej
dd'�Zej�ej�Zej�ej�Zej�ej�Zej�ej�ZdadZd)d*�Zej�rDej�eej��Znee� ��Zej!d+k�r�e�"��#d,��r�eej�$eee��Zd-ej%v�r�eej%d-�Zd.d/�Z&e'ed0d�Z(ej!d+k�r�d1d2�Z)e)e�Ze)e(�Z(dkd4d5�Z*e*d6�Z+e+�rd7D]Z,d8ee,d9<d:ee,d;<�q�d<d=�Z-d>d?�Z.d@dA�Z/dBdC�Z0dDdE�Z1dldFdG�Z2dHdI�Z3dJdK�Z4dLdM�Z5dNdO�Z6dPdQ�Z7dmdRdS�Z8dTdU�Z9dVdW�Z:dXdY�Z;e0�dd6fdZd[�Z<e0�dd6fd\d]�Z=d^d_�Z>d`da�Z?dbdc�Z@ddde�ZAdfdg�ZBdhdi�ZCeDdjk�r�eC�dS)nz-Access to Python's configuration information.�N)�pardir�realpath)�get_config_h_filename�get_config_var�get_config_vars�get_makefile_filename�get_path�get_path_names� get_paths�get_platform�get_python_version�get_scheme_names�parse_config_hZMACOSX_DEPLOYMENT_TARGETz6{installed_base}/{platlibdir}/python{py_version_short}z0{platbase}/{platlibdir}/python{py_version_short}z1{base}/lib/python{py_version_short}/site-packagesz>{platbase}/{platlibdir}/python{py_version_short}/site-packagesz;{installed_base}/include/python{py_version_short}{abiflags}z?{installed_platbase}/include/python{py_version_short}{abiflags}z
{base}/binz{base})�stdlib�
platstdlib�purelib�platlib�include�platinclude�scripts�dataz{installed_base}/lib/pythonz{base}/lib/pythonz{installed_base}/include/pythonz{installed_base}/Libz
{base}/Libz{base}/Lib/site-packagesz{installed_base}/Includez{base}/Scriptsz#{userbase}/Python{py_version_nodot}z1{userbase}/Python{py_version_nodot}/site-packagesz+{userbase}/Python{py_version_nodot}/Includez+{userbase}/Python{py_version_nodot}/Scriptsz
{userbase})rrrrrrrz0{userbase}/{platlibdir}/python{py_version_short}z5{userbase}/lib/python{py_version_short}/site-packagesz>{userbase}/{platlibdir}/python{py_version_short}/site-packagesz+{userbase}/include/python{py_version_short}z{userbase}/binz{userbase}/lib/pythonz#{userbase}/lib/python/site-packagesz{userbase}/include)�posix_prefix�
posix_home�ntZnt_userZ
posix_userZosx_framework_user�%d.%d�z%d%dcCs&z
t|�WSty |YS0dS�N)r�OSError)�path�r�./opt/alt/python39/lib64/python3.9/sysconfig.py�_safe_realpathgs
r!r)z\pcbuild\win32z\pcbuild\amd64Z_PYTHON_PROJECT_BASEcCs,dD]"}tj�tj�|d|��rdSqdS)N)ZSetupzSetup.localZModulesTF)�osr�isfile�join)�d�fnrrr �_is_python_source_dir|sr'�_homecCs0|r,tj�|��tj�tj�td���r,tS|S)NZPCbuild)r"r�normcase�
startswithr$�_PREFIX)r%rrr �_fix_pcbuild�s
�r,FcCs|rtrtt�Stt�Sr)� _sys_homer'�
_PROJECT_BASE)Z
check_homerrr �is_python_build�sr/T)rrz{srcdir}/Includerz{projectbase}/.rc
Csvz|jfi|��WStypz|jfitj��WYStyj}ztd|�d�WYd}~n
d}~00Yn0dS)Nz{%s})�format�KeyErrorr"�environ�AttributeError)�sZ
local_vars�varrrr �_subst_vars�sr6cCs0|��}|��D]\}}||vr"q|||<qdSr)�keys�items)Ztarget_dictZ
other_dictZtarget_keys�key�valuerrr �_extend_dict�s
r;cCsbi}|duri}t|t��t|��D]4\}}tjdvrFtj�|�}tj�t ||��||<q(|S)N)�posixr)
r;r�_INSTALL_SCHEMESr8r"�namer�
expanduser�normpathr6)�scheme�vars�resr9r:rrr �_expand_vars�s
rDcCstjdkrdStjS)Nr<r)r"r>rrrr �_get_default_scheme�s
rEcCsztj�dd�}|r|Sdd�}tjdkrBtj�d�p6d}||d�Stjdkrptjrp|dd tjd
tjdd��S|dd�S)
N�PYTHONUSERBASEcWstj�tjj|��Sr)r"rr?r$)�argsrrr �joinuser�sz_getuserbase.<locals>.joinuserr�APPDATA�~�Python�darwin�Libraryrrz.local)r"r2�getr>�sys�platform�
_framework�version_info)�env_baserH�baserrr �_getuserbase�s
�rUc Csrddl}|�d�}|�d�}|�d�}|dur2i}i}i}t|dd��}|��} Wd�n1sd0Y| D]�}
|
�d�sr|
��d kr�qr|�|
�}|rr|�d
d�\}}
|
��}
|
�dd �}d
|vr�|
||<qrz|t vr�t
�t|
�}
Wn$t
�y|
�dd
�||<Yqr0|
||<qrt|�
��}d}t|�dk�r8t|�D�]�}||}|�|�}|�|�}|�r�|�r�|��|��k�r�|n|}n|�r�|n|}|du�r|�d
�}d}||v�r�t||�}n�||v�r�d}nx|tjv�r�tj|}n`||v�rD|�d��r|dd�|v�rd }n$d||v�r2d}nt|d|�}nd ||<}|�r0||��d�}|d|���||}d
|v�r�|||<n�z|t v�r�t
�t|�}Wn t
�y�|��||<Yn
0|||<|�|�|�d��r0|dd�|v�r0|dd�}||v�r0|||<n|||<|�|��q@�q*|��D]"\}}
t|
t��r@|
��||<�q@|�|�|S)z�Parse 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.
rNz"([a-zA-Z][a-zA-Z0-9_]+)\s*=\s*(.*)z\$\(([A-Za-z][A-Za-z0-9_]*)\)z\${([A-Za-z][A-Za-z0-9_]*)}�surrogateescape)�errors�#��rz$$�$)ZCFLAGSZLDFLAGSZCPPFLAGSTFZPY_�)�re�compile�open� readlinesr*�strip�match�group�replace�_ALWAYS_STR�
ValueError�int�listr7�len�tuple�search�start�strr"r2�end�remover8�
isinstance�update)�filenamerBr]Z_variable_rxZ_findvar1_rxZ_findvar2_rxZdoneZnotdone�f�lines�line�m�n�vZtmpvZ variablesZrenamed_variablesr>r:Zm1Zm2�found�itemZafter�krrr �_parse_makefile�s�
&
�
�
r|cCsdtrtj�tptd�Sttd�r0dttj f}nd}ttj
d�rP|dtj
j7}tj�td�|d�S)z Return the path of the Makefile.ZMakefile�abiflagszconfig-%s%sZconfig�
_multiarchz-%sr)
�
_PYTHON_BUILDr"rr$r-r.�hasattrrO�_PY_VERSION_SHORTr}�implementationr~r)Zconfig_dir_namerrr rUs
rc
Cs(tj�ddjtjtjttjdd�d��S)NZ_PYTHON_SYSCONFIGDATA_NAMEz+_sysconfigdata_{abi}_{platform}_{multiarch}r~rY)ZabirPZ multiarch) r"r2rNr0rOr}rP�getattrr�rrrr �_get_sysconfigdata_namebs��r�c
Csddl}i}t�}zt||�WnLtyl}z4d|}t|d�rP|d|j}t|��WYd}~n
d}~00t�}z6t|��}t||�Wd�n1s�0YWnLty�}z4d|}t|d�r�|d|j}t|��WYd}~n
d}~00t �r
|d|d<t
�}dtjv�r>ddl
}|�|�} || _| tj|<d t�tf}
ttd
��r`|
d7}
tj|
dd
�tj�|
|d�}t|ddd��2}|�d�|�d�|j||d�Wd�n1�s�0Ytdddd��}|�|
�Wd�n1�s0YdS)z;Generate the Python module containing build-time variables.rNz.invalid Python installation: unable to open %s�strerrorz (%s)ZLDSHAREDZ BLDSHAREDrLzbuild/lib.%s-%sZgettotalrefcountz-pydebugT)�exist_okz.py�w�utf8)�encodingzB# system configuration generated and used by the sysconfig module
zbuild_time_vars = )�streamzpybuilddir.txt)�pprintrr|rr�r�rr_rrr�rOrP�types�
ModuleType�build_time_vars�modulesrr�r"�makedirsrr$�write)r�rBZmakefile�e�msgZconfig_hrsr>r��moduleZ
pybuilddirZdestfilerrr �_generate_posix_varsksL
,
.r�cCs0t�}t|t�t�dgd�}|j}|�|�dS)z7Initialize the module as appropriate for POSIX systems.r�rN)r��
__import__�globals�localsr�rq)rBr>Z_tempr�rrr �_init_posix�sr�cCsfddl}td�|d<td�|d<td�|d<|��d|d <d
|d<t|d<tj�ttj ��|d
<dS)z+Initialize the module as appropriate for NTrNrZLIBDESTrZ
BINLIBDESTrZ INCLUDEPY�
EXT_SUFFIXz.exeZEXEZVERSIONZBINDIR)
�_impr�extension_suffixes�_PY_VERSION_SHORT_NO_DOTr"r�dirnamer!rO�
executable)rBr�rrr �_init_non_posix�sr�c Cs�|duri}ddl}|�d�}|�d�}|��}|s6q�|�|�}|r�|�dd�\}}z|tvrbt�t|�}Wnty~Yn0|||<q(|�|�}|r(d||�d�<q(|S)z�Parse a config.h-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.
Nrz"#define ([A-Z][A-Za-z0-9_]+) (.*)
z&/[*] #undef ([A-Z][A-Za-z0-9_]+) [*]/
rZr)r]r^�readlinerbrcrerfrg) �fprBr]Z define_rxZundef_rxrurvrwrxrrr r�s,
rcCsBtr,tjdkr"tj�tptd�}q4tp(t}ntd�}tj�|d�S)zReturn the path of pyconfig.h.rZPCrz
pyconfig.h)rr"r>rr$r-r.r)Zinc_dirrrr r�s
rcCsttt��S)z,Return a tuple containing the schemes names.)rj�sortedr=rrrr r
�sr
cCstS)z*Return a tuple containing the paths names.)�_SCHEME_KEYSrrrr r �sr cCs|rt||�St|SdS)z�Return a mapping containing an install scheme.
``scheme`` is the install scheme name. If not provided, it will
return the default scheme for the current platform.
N)rDr=)rArB�expandrrr r
�s
r
cCst|||�|S)z[Return a path corresponding to the scheme.
``scheme`` is the install scheme name.
)r
)r>rArBr�rrr rsrcGs�tdu�rViattd<ttd<ttd<ttd<ttd<ttd<ttd<ttd <ttd
<ttd<t j
td<zt jtd
<Wnty�dtd
<Yn0t
jdkr�tt�dtd<t
jdkr�tt�t�d�}|dur�|td<t�td<t�dt�}t
jdk�r,t�rt
j�t��}t
j�||�}nt
j�t��}t|�td<t jdk�rVddl}|�t�|�r�g}|D]}|�t�|���qd|StSdS)anWith no arguments, return a dictionary of all configuration
variables relevant for the current platform.
On Unix, this means every variable defined in Python's installed Makefile;
On Windows it's a much smaller set.
With arguments, return a list of values that result from looking up
each argument in the configuration variable dictionary.
N�prefix�exec_prefixZ
py_versionZpy_version_shortZpy_version_nodotZinstalled_baserTZinstalled_platbaseZplatbaseZprojectbase�
platlibdirr}rYrZTZPATHr<r��SO�userbase�srcdirrLr)�_CONFIG_VARSr+�_EXEC_PREFIX�_PY_VERSIONr�r��_BASE_PREFIX�_BASE_EXEC_PREFIXr.rOr�r}r3r"r>r�r�rNrUrrr�rr$r!rP�_osx_supportZcustomize_config_vars�append)rGr�r�rTr�Zvalsr>rrr rsT
rcCs*|dkrddl}|�dtd�t��|�S)z�Return the value of a single variable using the dictionary returned by
'get_config_vars()'.
Equivalent to get_config_vars().get(name)
r�rNz SO is deprecated, use EXT_SUFFIXr)�warnings�warn�DeprecationWarningrrN)r>r�rrr r^srcCs�tjdkrFdtj��vrdSdtj��vr.dSdtj��vr@dStjStjdksZttd �s`tjSd
tjvrttjd
St��\}}}}}|��� dd�}|� d
d�}|� dd�}|dd�dkr�d||fS|dd�dk�r,|ddk�r�d}dt
|d�d|dd�f}ddd�}|d|tj7}n�|dd�dk�rPdd lm
}|�S|dd!�d"k�r�d"}ddl}|�d#�}|�|�} | �r�| ��}n2|dd!�d$k�r�ddl}
|
�t�|||�\}}}d%|||fS)&a�Return a string that identifies the current platform.
This is used mainly to distinguish platform-specific build directories and
platform-specific built distributions. Typically includes the OS name and
version and the architecture (as supplied by 'os.uname()'), although the
exact information included depends on the OS; on Linux, the kernel version
isn't particularly important.
Examples of returned values:
linux-i586
linux-alpha (?)
solaris-2.6-sun4u
Windows will return one of:
win-amd64 (64bit Windows on AMD64 (aka x86_64, Intel64, EM64T, etc)
win32 (all others - specifically, sys.platform is returned)
For other non-POSIX platforms, currently just returns 'sys.platform'.
rZamd64z win-amd64z(arm)z win-arm32z(arm64)z win-arm64r<�unameZ_PYTHON_HOST_PLATFORM�/rY� �_�-N�Zlinuxz%s-%sZsunosr�5Zsolarisz%d.%sr\rZ32bitZ64bit)i���l����z.%sZaix)�aix_platform��cygwinz[\d.]+rLz%s-%s-%s)r"r>rO�version�lowerrPr�r2r�rdrg�maxsizeZ_aix_supportr�r]r^rbrcr�Zget_platform_osxr)ZosnameZhost�releaser��machineZbitnessr�r]Zrel_rervr�rrr rjsR
�
rcCstSr)r�rrrr r�srcCsFtt|����D]0\}\}}|dkr0td|�td||f�qdS)Nrz%s: z
%s = "%s")� enumerater�r8�print)�titler�indexr9r:rrr �_print_dict�sr�cCsfdtjvrt�dStdt��tdt��tdt��t�tdt��t�tdt ��dS)z*Display all information sysconfig detains.z--generate-posix-varsNzPlatform: "%s"zPython version: "%s"z!Current installation scheme: "%s"ZPathsZ Variables)
rO�argvr�r�rrrEr�r
rrrrr �_main�s
r��__main__)F)N)N)E�__doc__r"rOZos.pathrr�__all__rer=r�r��splitr�rRr�r�rr@r�r+�base_prefixr�r�r��base_exec_prefixr�r�Z
_USER_BASEr!r�r�r.�getcwdr>r��endswithr$r2r'r�r-r,r/rrAr6r;rDrErUr|rr�r�r�r�rrr
r r
rrrrrr�r��__name__rrrr �<module>s���
���
�
��?�
?
"OQ