<!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>

ReNi                 @   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 Wn e	 k
 r| d d l
 Z Yn Xd d d d d d	 d
 d d d d g Z d d   Z e j r e j j e e j   Z n e e j    Z e j d k r2d e dE d  j   k r2e e j j e e   Z n  e j d k r~d e dF d  j   k r~e e j j e e e   Z n  e j d k rd e dG d  j   k re e j j e e e   Z n  d d   Z e   Z d a d d   Z e j   Z e j d  Z d d   Z e j j   d Z  e j d d   Z! e  d e  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, d-   Z/ d d. d/  Z0 d0 d   Z1 d1 d2   Z2 d3 d4   Z3 d d5 d  Z4 d6 d   Z5 d7 d   Z6 d8 d	   Z7 e.   d d9 d: d
  Z8 e.   d d9 d; d  Z9 d< d   Z: d= d   Z; d> d   Z< d? d   Z= d@ dA   Z> dB dC   Z? e@ dD k re?   n  d S)Hz-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  |   SWn t k
 r& |  SYn Xd  S)N)r   OSError)path r   B/tmp/pip-ztkk0jow-build/pip/_vendor/distlib/_backport/sysconfig.py_safe_realpath"   s    r   ntZpcbuild   z\pc\v
   z\pcbuild\amd64   c              C   s=   x6 d D]. }  t  j j t  j j t d |    r d Sq Wd 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  s d d l m }  t j d d  d } |  |  } | j d  } | sY t d   | j    } t j	 |  Wd  QXt
 r x7 d D], } t j | d
 d  t j | d d  q Wn  d a  n  d  S)N   )finder.   r   zsysconfig.cfgzsysconfig.cfg existsposix_prefix
posix_homeincludez{srcdir}/Includeplatincludez{projectbase}/.T)zposix_prefixz
posix_home)	_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                s0  t    |  j d  r( |  j d  } n	 t   } |  j   } xb | D]Z } | d k r\ qD n  x? | D]7 \ } } |  j | |  r qc n  |  j | | |  qc WqD W|  j d  xz |  j   D]l } t |  j |       f d d   } x< |  j |  D]+ \ } } |  j | | t	 j
 | |   q Wq Wd  S)Nglobalsc                s0   |  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      r!   c                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                sJ   |  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   sI   |  j    } x6 | j   D]( \ } } | | k r7 q n  | |  | <q Wd  S)N)keysr>   )target_dict
other_dicttarget_keyskeyrI   r   r   r   _extend_dict   s
    rT   c             C   s   i  } | d  k r i  } n  t  | t    x` t j |   D]O \ } } t j d k rk t j j |  } n  t j j t	 | |   | | <q; W| S)Nposixr   )zposixznt)
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                s0   |  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 St  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 rb t  j j d  pE d } |  rR |  S| | d  Sn  t j d k r t d	  } | r |  r |  S| d d
 | d t j d  d   Sq n  |  r |  S| d d  Sd  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 rB i  } n  i  } i  } t j |  d d d d  } | j   } Wd QXx | D] }	 |	 j d	  s |	 j   d
 k r q n  | j |	  }
 |
 r |
 j d d  \ } } | j   } | j	 d d
  } d | k r| | | <q^y t
 |  } Wn( t k
 rP| j	 d d  | | <Yq^X| | | <q q Wt | j    } d } xNt |  d k rx5t |  D]'} | | } | j |  p| j |  }
 |
 d k	 r|
 j d  } d } | | k r
t | |  } n | | k rd } n | t j k r>t j | } nx | | k r| j d  rx| d d  | k rxd
 } qd | | k rd } qt | d |  } n d
 | | <} | r| |
 j   d  } | d |
 j    | | } d | k r	| | | <qy t
 |  } Wn" t k
 r=| j   | | <Yn X| | | <| j |  | j d  r| d d  | k r| d d  } | | k r| | | <qqqq| | | <| j |  qWq}Wx< | j   D]. \ } } t | t  r| j   | | <qqW| 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_]*)}Nencodingzutf-8errorssurrogateescape# r$   r!   z$$$CFLAGSLDFLAGSCPPFLAGSr   TFPY_rK   )zCFLAGSzLDFLAGSzCPPFLAGS)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   s`   t  r t j j t d  St 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   M  s    c             C   s&  t    } y t | |   Wn^ t k
 rz } z> d | } t | d  r\ | d | j } n  t |   WYd d } ~ Xn Xt   } y& t |   } t | |   Wd QXWn^ t k
 r
} z> d | } t | d  r | d | j } n  t |   WYd d } ~ Xn Xt r"|  d |  d <n  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_posixX  s&    	
	
r   c             C   sq   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_posixt  s    


r   c             C   s   | d k r i  } n  t  j d  } t  j d  } x |  j   } | sL Pn  | j |  } | r | j d d  \ } } y t |  } Wn t k
 r Yn X| | | <q6 | j |  } | r6 d | | j d  <q6 q6 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   sU   t  r6 t j d k r- t j j t d  }  qB 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   s1   t    | r t |  |  St t j |    Sd 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 rTi  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 <Wn t k
 r d t  d <Yn Xt	 j
 d# k r t t   n  t	 j
 d k r t t   n  t j d k r t   t  d <n  d t  k rt t  d <n t t  d  t  d <t rt	 j
 d k rt } y t	 j   } Wn t k
 rgd } Yn Xt	 j j t  d  r| | k rt	 j j | t  d  } t	 j j |  t  d <qn  t j d k rTt	 j   d } t | j d  d  } | d k  rVxGd$ D]D } t  | } t j d d |  } t j d d |  } | t  | <qWqQd t	 j k rt	 j d } xH d% D]= } t  | } t j d d |  } | d | } | t  | <qyWn  t  j d d  }	 t j d  |	  }
 |
 d k	 rQ|
 j  d!  } t	 j j! |  sNx: d& D]/ } t  | } t j d" d |  } | t  | <qWqNqQqTn  |  rg  } x$ |  D] } | j" t  j |   qgW| St  Sd 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|$))zntr   )LDFLAGS
BASECFLAGSCFLAGS	PY_CFLAGS	BLDSHARED)r   r   r   r   r   )r   r   r   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_versionZ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   R  s    c              C   s  t  j d k r d }  t j j |   } | d: k r: t j St j j d |  } t j | t |   |  j   } | d k r d S| d k r d St j St  j d	 k s t t  d
  r t j St  j	   \ } } } } } | j   j
 d d  } | j
 d d  } | j
 d d  } | d d  d k r:d | | f S| d d  d k r| d d k rzd } d t | d  d | d d  f } qzn| d d  d k rd | | f S| d d  d k rd | | | f S| d d  d  k r1d  } t j d!  }	 |	 j |  }
 |
 rz|
 j   } qznI| d d  d" k rzt   } | j d#  } | } y t d$  } Wn t k
 rYne Xz t j d% | j    }
 Wd | j   X|
 d k	 rd& j |
 j d  j d&  d d   } n  | s| } n  | rz| } 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 } qt| d; k rd+ } qt| d< k rd0 } qt| d= k rd1 } qt| d> k rd3 } qt| d? k r
d4 } qtt d5 | f   qw| d- k rGt j d@ k rtd/ } qtqw| dA k rwt j dB k rkd2 } qtd. } qwqzn  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   Zfatz-arch\s+(\S+)i386ppcx86_64ZintelZfat3ppc64Zfat64	universalz%Don't know machine value for archs=%r    PowerPCPower_Macintoshz%s-%s-%s)r   ppc)r   r   )r   r   r   )r   r   )r   r   r   r   l        )zPowerPCzPower_Macintoshl        ) 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   [  s    #.		.	!						c               C   s   t  S)N)r   r   r   r   r   r     s    c             C   sd   x] t  t | j     D]C \ } \ } } | d k rH t d |   n  t d | | f  q Wd  S)Nr   z%s: z
	%s = "%s")	enumerater   r>   print)titledataindexrS   rI   r   r   r   _print_dict  s    +r  c               C   se   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)A__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   r   r   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	