<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
3
Reh                 @   s  d Z ddlZddlZddlZddlZddlmZmZ yddlZW n e	k
r\   ddl
ZY nX dddddd	d
ddddgZdd ZejrejjeejZneej ZejdkrdedHd j kreejjeeZejdkodedId j kr
eejjeeeZejdkr@dedJd j kr@eejjeeeZdd Ze Zdadd Zej ZejdZdd Zd ejdd!  Zd"ejdd#  Z d$ejdd#  Z!ejj"ej#Z$ejj"ej%Z&da'dZ(d%d& Z)d'd( Z*d)d* Z+d+d, Z,d-d. Z-d/d0 Z.dKd1d2Z/d3d Z0d4d5 Z1d6d7 Z2dLd8dZ3d9d Z4d:d Z5d;d	 Z6e- dd<fd=d
Z7e- dd<fd>dZ8d?d Z9d@d Z:dAd Z;dBd Z<dCdD Z=dEdF Z>e?dGkre>  dS )Mz-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_hc             C   s"   yt | S  tk
r   | S X d S )N)r   OSError)path r   /builddir/build/BUILDROOT/alt-python36-pip-20.2.4-5.el8.x86_64/opt/alt/python36/lib/python3.6/site-packages/pip/_vendor/distlib/_backport/sysconfig.py_safe_realpath"   s    r   ntZpcbuild   z\pc\v
   z\pcbuild\amd64   c              C   s.   x(dD ] } t jjt jjtd| rdS qW dS )N
Setup.distSetup.localModulesTF)r   r   )osr   isfilejoin_PROJECT_BASE)fnr   r   r   is_python_build:   s    
r    Fc              C   s   t sddlm}  tjddd }| |}|jd}|s>td|j }tj	| W d Q R X t
rx(dD ] }tj|d
d tj|dd qfW da d S )N   )finder.   r   zsysconfig.cfgzsysconfig.cfg existsposix_prefix
posix_homeincludez{srcdir}/Includeplatincludez{projectbase}/.T)r%   r&   )	_cfg_read	resourcesr"   __name__rsplitfindAssertionError	as_stream_SCHEMESreadfp_PYTHON_BUILDset)r"   Zbackport_packageZ_finderZ_cfgfilesschemer   r   r   _ensure_cfg_readD   s    


r6   z\{([^{]*?)\}c                s   t   | jdr| jd}nt }| j }xD|D ]<}|dkr>q0x,|D ]$\}}| j||rZqD| j||| qDW q0W | jd xX| j D ]L}t| j|  fdd}x,| j|D ]\}}| j||t	j
|| qW qW d S )Nglobalsc                s$   | j d}| kr | S | j dS )Nr$   r   )group)matchobjname)	variablesr   r   	_replacero   s    
z"_expand_globals.<locals>._replacer)r6   has_sectionitemstuplesections
has_optionr3   remove_sectiondict	_VAR_REPLsub)configr7   r@   sectionoptionvaluer<   r   )r;   r   _expand_globalsY   s$    


rJ   z%s.%s.%s   z%s.%sr!   z%s%sc                s    fdd}t j|| S )zIn the string `path`, replace tokens like {some.thing} with the
    corresponding value from the map `local_vars`.

    If there is no corresponding value, leave the token unchanged.
    c                s8   | j d}| kr | S |tjkr.tj| S | j dS )Nr$   r   )r8   r   environ)r9   r:   )
local_varsr   r   r<      s    


z_subst_vars.<locals>._replacer)rD   rE   )r   rM   r<   r   )rM   r   _subst_vars   s    rN   c             C   s4   | j  }x&|j D ]\}}||kr$q|| |< qW d S )N)keysr>   )target_dict
other_dicttarget_keyskeyrI   r   r   r   _extend_dict   s
    rT   c             C   sd   i }|d kri }t |t  xBtj| D ]4\}}tjdkrFtjj|}tjjt	||||< q(W |S )Nposixr   )rU   r   )
rT   r   r0   r>   r   r:   r   
expandusernormpathrN   )r5   varsresrS   rI   r   r   r   _expand_vars   s    
rZ   c                s    fdd}t j|| S )Nc                s$   | j d}| kr | S | j dS )Nr$   r   )r8   )r9   r:   )rX   r   r   r<      s    
zformat_value.<locals>._replacer)rD   rE   )rI   rX   r<   r   )rX   r   format_value   s    r[   c               C   s   t jdkrdS t jS )NrU   r%   )r   r:   r   r   r   r   _get_default_scheme   s    
r\   c              C   s   t jjdd } dd }t jdkrBt jjdp.d}| r8| S ||dS tjdkr|td	}|r|| r`| S |dd
|dtjd d  S | r| S |ddS d S )NPYTHONUSERBASEc              W   s   t jjt jj|  S )N)r   r   rV   r   )argsr   r   r   joinuser   s    z_getuserbase.<locals>.joinuserr   APPDATA~PythondarwinPYTHONFRAMEWORKLibraryz%d.%dr!   z.local)r   rL   getr:   sysplatformr   version_info)env_baser_   base	frameworkr   r   r   _getuserbase   s"    



rm   c             C   s"  t jd}t jd}t jd}|dkr*i }i }i }tj| ddd}|j }W dQ R X x|D ]}	|	jds\|	j d	krxq\|j|	}
|
r\|
jd
d\}}|j }|j	dd	}d|kr|||< q\yt
|}W n$ tk
r   |j	dd||< Y q\X |||< q\W t|j }d}xt|dkrxt|D ]}|| }|j|pJ|j|}
|
dk	r|
jd
}d}||kr|t|| }n||krd}nx|tjkrtj| }n`||kr|jdr|dd |krd	}n$d| |krd}nt|d|  }nd	 ||< }|r||
j d }|d|
j  | | }d|krF|||< n~yt
|}W n" tk
rt   |j ||< Y n
X |||< |j| |jdr|dd |kr|dd }||kr|||< n|||< |j| q(W qW x.|j D ]"\}}t|tr|j ||< qW |j| |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.
    z"([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_]*)}Nzutf-8surrogateescape)encodingerrors# r$   r!   z$$$CFLAGSLDFLAGSCPPFLAGSr   TFPY_rK   )rt   ru   rv   )recompilecodecsopen	readlines
startswithstripmatchr8   replaceint
ValueErrorlistrO   lenr?   searchstrr   rL   endstartremover>   
isinstanceupdate)filenamerX   _variable_rx_findvar1_rx_findvar2_rxdonenotdoneflineslinemnvtmpvr;   renamed_variablesr:   rI   founditemafterkr   r   r   _parse_makefile   s    	
















r   c              C   sD   t rtjjtdS ttdr,dttjf } nd} tjjt	d| dS )z Return the path of the Makefile.Makefileabiflagszconfig-%s%srF   stdlib)
r2   r   r   r   r   hasattrrg   _PY_VERSION_SHORTr   r   )config_dir_namer   r   r   r   K  s    
c             C   s   t  }yt||  W nJ tk
r^ } z.d| }t|drF|d|j  }t|W Y dd}~X nX t }y"t|}t||  W dQ R X W nJ tk
r } z.d| }t|dr|d|j  }t|W Y dd}~X nX tr| d | d< dS )z7Initialize the module as appropriate for POSIX systems.z.invalid Python installation: unable to open %sstrerrorz (%s)N	BLDSHAREDLDSHARED)	r   r   IOErrorr   r   r   r{   r   r2   )rX   makefileemsgconfig_hr   r   r   r   _init_posixV  s&    


r   c             C   sV   t d| d< t d| d< t d| d< d| d< d	| d
< t| d< tjjttj| d< dS )z+Initialize the module as appropriate for NTr   LIBDEST
platstdlib
BINLIBDESTr'   	INCLUDEPYz.pydSOz.exeEXEVERSIONBINDIRN)r   _PY_VERSION_SHORT_NO_DOTr   r   dirnamer   rg   
executable)rX   r   r   r   _init_non_posixr  s    r   c             C   s   |dkri }t jd}t jd}xx| j }|s0P |j|}|rz|jdd\}}yt|}W n tk
rn   Y nX |||< q"|j|}|r"d||jd< q"W |S )zParse 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.
    Nz"#define ([A-Z][A-Za-z0-9_]+) (.*)
z&/[*] #undef ([A-Z][A-Za-z0-9_]+) [*]/
r$   r!   r   )rx   ry   readliner   r8   r   r   )fprX   	define_rxundef_rxr   r   r   r   r   r   r   r     s(    




c              C   s:   t r$tjdkrtjjtd} q,t} ntd} tjj| dS )zReturn the path of pyconfig.h.r   PCr(   z
pyconfig.h)r2   r   r:   r   r   r   r   )inc_dirr   r   r   r     s    
c               C   s   t ttj S )z,Return a tuple containing the schemes names.)r?   sortedr0   r@   r   r   r   r   r     s    c               C   s
   t jdS )z*Return a tuple containing the paths names.r%   )r0   optionsr   r   r   r   r	     s    Tc             C   s&   t   |rt| |S ttj| S dS )zReturn 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)r6   rZ   rC   r0   r>   )r5   rX   expandr   r   r   r
     s    
c             C   s   t ||||  S )z[Return a path corresponding to the scheme.

    ``scheme`` is the install scheme name.
    )r
   )r:   r5   rX   r   r   r   r   r     s    c              G   s  t dkri a tt d< tt d< tt d< tt d< td td  t d< tt d	< tt d
< tt d< ytjt d< W n tk
r   dt d< Y nX t	j
d#krtt  t	j
dkrtt  tjdkrt t d< dt krtt d< ntt d t d< tot	j
dkr\t}yt	j }W n tk
r   d}Y nX t	jjt d  r\||kr\t	jj|t d }t	jj|t d< tjdkrt	j d }t|jdd }|dk rx:d$D ]2}t | }tjdd|}tjdd|}|t |< qW ndt	jkrt	jd }x8d%D ]0}t | }tjdd|}|d | }|t |< qW t jdd}	tjd |	}
|
dk	r|
j d!}t	jj!|sx,d&D ]$}t | }tjd"d|}|t |< q^W | rg }x| D ]}|j"t j| qW |S t S dS )'ay  With 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 and Mac OS 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_prefix
py_versionpy_version_shortr   r!   py_version_nodotrk   platbaseprojectbaser   rr   r   os2rU   z2.6userbasesrcdirrc   r#   r   ru   
BASECFLAGSrt   	PY_CFLAGSr   z-arch\s+\w+\s z-isysroot [^ 	]*Z	ARCHFLAGSz-isysroot\s+(\S+)r$   z-isysroot\s+\S+(\s|$))r   r   )ru   r   rt   r   r   )ru   r   rt   r   r   )ru   r   rt   r   r   )#_CONFIG_VARS_PREFIX_EXEC_PREFIX_PY_VERSIONr   r   rg   r   AttributeErrorr   r:   r   r   versionrm   r   r2   getcwdr   r   isabsr   rW   rh   unamer   splitrx   rE   rL   rf   r   r8   existsappend)r^   rk   cwdr   Zkernel_versionmajor_versionrS   flagsarchrt   r   Zsdkvalsr:   r   r   r   r     s    












c             C   s   t  j| S )zReturn the value of a single variable using the dictionary returned by
    'get_config_vars()'.

    Equivalent to get_config_vars().get(name)
    )r   rf   )r:   r   r   r   r   P  s    c              C   s`  t jdkrnd} tjj| }|d:kr(tjS tjjd|}tj|t|  | j }|dkr\dS |dkrhdS tjS t jd	kstt d
 rtjS t j	 \}}}}}|j j
dd}|j
dd}|j
dd}|dd dkrd||f S |dd dkr(|d dkrRd}dt|d d |dd f }n*|dd dkrFd||f S |dd dkrfd|||f S |dd d krd }tjd!}	|	j|}
|
rR|
j }n|dd d"krRt }|jd#}|}ytd$}W n tk
r   Y nJX ztjd%|j }
W d|j  X |
dk	r4d&j|
jdjd&dd }|s>|}|rR|}d'}|d& d(krd)t jd*dj krd+}t jd*}tjd,|}ttt|}t|dkr|d }n^|d;krd+}nN|d<krd0}n>|d=krd1}n.|d>krd3}n|d?krd4}ntd5|f n<|d-kr2tjd@krRd/}n |dAkrRtjdBkrNd2}nd.}d9|||f S )Ca  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; eg. for IRIX
    the architecture isn't particularly important (IRIX only runs on SGI
    hardware), but for Linux the kernel version isn't particularly
    important.

    Examples of returned values:
       linux-i586
       linux-alpha (?)
       solaris-2.6-sun4u
       irix-5.3
       irix64-6.2

    Windows will return one of:
       win-amd64 (64bit Windows on AMD64 (aka x86_64, Intel64, EM64T, etc)
       win-ia64 (64bit Windows on Itanium)
       win32 (all others - specifically, sys.platform is returned)

    For other non-POSIX platforms, currently just returns 'sys.platform'.
    r   z bit (r$   )amd64z	win-amd64itaniumzwin-ia64rU   r   /rr   r   _-N   linuxz%s-%ssunosr   5solarisz%d.%srK   r!      irixaixz%s-%s.%s   cygwinz[\d.]+rc   MACOSX_DEPLOYMENT_TARGETz0/System/Library/CoreServices/SystemVersion.plistz=<key>ProductUserVisibleVersion</key>\s*<string>(.*?)</string>r#   macosxz10.4.z-archrt   fatz-arch\s+(\S+)i386ppcx86_64intelZfat3ppc64fat64	universalz%Don't know machine value for archs=%r    PowerPCPower_Macintoshz%s-%s-%s)r   r   )r   r   )r   r   r   )r   r   )r   r   r   r   l        )r   r   l        ) r   r:   rg   r   r-   rh   r   lowerr   r   r   r   rx   ry   r   r8   r   rf   r{   r   r   readcloser   r   r~   findallr?   r   r3   r   maxsize)r   ijlookosnamehostreleaser   machinerel_rer   ZcfgvarsZmacverZ
macreleaser   cflagsZarchsr   r   r   r   Y  s    
$












c               C   s   t S )N)r   r   r   r   r   r     s    c             C   sJ   xDt t|j D ]0\}\}}|dkr2td|   td||f  qW d S )Nr   z%s: z
	%s = "%s")	enumerater   r>   print)titledataindexrS   rI   r   r   r   _print_dict  s    r  c               C   sR   t dt   t dt   t dt   t   tdt  t   tdt  dS )z*Display all information sysconfig detains.zPlatform: "%s"zPython version: "%s"z!Current installation scheme: "%s"Paths	VariablesN)r  r   r   r\   r  r
   r   r   r   r   r   _main  s    r  __main__iii)N)N)@__doc__rz   r   rx   rg   os.pathr   r   configparserImportErrorConfigParser__all__r   r   r   r   r   r   r:   r   r   r    r2   r)   r6   RawConfigParserr0   ry   rD   rJ   ri   r   r   r   rW   r   r   r   r   r   
_USER_BASErN   rT   rZ   r[   r\   rm   r   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r  r  r+   r   r   r   r   <module>   s    "
!	
v
 	 #
