???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................
i f8`                 @   s  d  Z  d d l Z d d l Z d d l m Z m Z d d d d d d	 d
 d d d d g Z i i d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d 6i d  d 6d! d 6d! d 6d! d 6d" d 6d" d 6d d 6d d 6d# 6i d$ d 6d% d 6d& d 6d& d 6d' d 6d' d 6d( d 6d d 6d) 6i d* d 6d* d 6d+ d 6d+ d 6d, d 6d- d 6d. d 6d/ 6i d0 d 6d0 d 6d1 d 6d2 d 6d3 d 6d4 d 6d. d 6d5 6i d6 d 6d6 d 6d7 d 6d7 d 6d8 d 6d4 d 6d. d 6d9 6Z dq 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 e j j e j  Z e j j e j  Z d a d Z d< d=   Z e j re j j e e j   Z n e e j    Z e j d) k rd> e dr d  j    k re e j j! e e   Z n  e j d) k r>d@ e ds d  j    k r>e e j j! e e e   Z n  e j d) k rdB e dt d  j    k re e j j! e e e   Z n  dD e j" k re e j" dD  Z n  dE dF   Z# e$ e dG d  Z% e% r0e j d) k r0e% j    j& du  r0e j j e%  Z% e% j& d>  r0e j j e%  Z% q0n  dI dJ dK  Z' e' dL  Z( e( rx- dv D]" Z) dM e e) d <dN e e) d <qXWn  dO dP   Z* dQ dR   Z+ dS dT   Z, dU dV   Z- dW dX   Z. d dY dZ  Z/ d[ d   Z0 d\ d]   Z1 d^ d_   Z2 d` da   Z3 d db d  Z4 dc d   Z5 dd d   Z6 de d	   Z7 e-   d dL df d
  Z8 e-   d dL dg d  Z9 dh d   Z: di d   Z; dj d   Z< dk d   Z= dl dm   Z> dn do   Z? e@ dp k re?   n  d S)wz-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_hz/{installed_base}/lib64/python{py_version_short}stdlibz){platbase}/lib64/python{py_version_short}
platstdlibz1{base}/lib/python{py_version_short}/site-packagespurelibz7{platbase}/lib64/python{py_version_short}/site-packagesplatlibz;{installed_base}/include/python{py_version_short}{abiflags}includez?{installed_platbase}/include/python{py_version_short}{abiflags}platincludez
{base}/binscriptsz{base}dataposix_prefixz{installed_base}/lib/pythonz{base}/lib/pythonz{installed_base}/include/python
posix_homez{installed_base}/Libz
{base}/Libz{base}/Lib/site-packagesz{installed_base}/Includez{base}/Scriptsntz#{userbase}/Python{py_version_nodot}z1{userbase}/Python{py_version_nodot}/site-packagesz+{userbase}/Python{py_version_nodot}/Includez{userbase}/Scriptsz
{userbase}nt_userz){userbase}/lib64/python{py_version_short}z5{userbase}/lib/python{py_version_short}/site-packagesz7{userbase}/lib64/python{py_version_short}/site-packagesz+{userbase}/include/python{py_version_short}z{userbase}/bin
posix_userz{userbase}/lib/pythonz#{userbase}/lib/python/site-packagesz{userbase}/includeosx_framework_user      c             C   s+   y t  |   SWn t k
 r& |  SYn Xd  S)N)r   OSError)path r!   ./opt/alt/python34/lib64/python3.4/sysconfig.py_safe_realpathc   s    r#   pcbuild   z\pc\v
   z\pcbuild\amd64   Z_PYTHON_PROJECT_BASEc             C   s=   x6 d D]. } t  j j t  j j |  d |   r d Sq Wd S)N
Setup.distSetup.localModulesTF)r(   r)   )osr    isfilejoin)dfnr!   r!   r"   _is_python_source_dir}   s    $r0   _homepcbuild\amd64Fc             C   s    |  r t  r t t   St t  S)N)	_sys_homer0   _PROJECT_BASE)
check_homer!   r!   r"   is_python_build   s    
r6   Tz{srcdir}/Includez{projectbase}/.c             C   sv   y |  j  |   SWn^ t k
 rq y |  j  t j   SWn5 t k
 rl } z t d |   WYd  d  } ~ Xn XYn Xd  S)Nz{%s})formatKeyErrorr+   environAttributeError)s
local_varsvarr!   r!   r"   _subst_vars   s    r>   c             C   sI   |  j    } x6 | j   D]( \ } } | | k r7 q n  | |  | <q Wd  S)N)keysitems)target_dict
other_dicttarget_keyskeyvaluer!   r!   r"   _extend_dict   s
    rF   c             C   s   i  } | d  k r i  } n  t  | t    xa t |  j   D]O \ } } t j d k rl t j j |  } n  t j j t	 | |   | | <q< W| S)Nposixr   )zposixznt)
rF   r   _INSTALL_SCHEMESr@   r+   namer    
expandusernormpathr>   )schemevarsresrD   rE   r!   r!   r"   _expand_vars   s    	#rO   c               C   s   t  j d k r d St  j S)NrG   r   )r+   rI   r!   r!   r!   r"   _get_default_scheme   s    rP   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    rJ   r-   )argsr!   r!   r"   joinuser   s    z_getuserbase.<locals>.joinuserr   APPDATA~PythondarwinPYTHONFRAMEWORKLibraryz%d.%dr   z.local)r+   r9   getrI   sysplatformr   version_info)env_baserS   base	frameworkr!   r!   r"   _getuserbase   s"    ra   c             C   s?  d d l  } | j d  } | j d  } | j d  } | d k rN i  } n  i  } i  } t |  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| | | <qay t	 |  } Wn( t
 k
 rS| j d d  | | <YqaX| | | <q q Wt | j    } d } xot |  d k rxVt |  D]H} | | } | j |  p| j |  } | d k	 r| j d
  } d } | | k rt | |  } n | | k r"d } n | t j k rAt j | } nx | | k r| j d  r{| d d  | k r{d	 } qd | | k rd } qt | d |  } n d	 | | <} | r| | j   d  } | d | j    } | j   | k r
| | 7} n  | | 7} d | k r-| | | <qy t	 |  } Wn" t
 k
 ra| 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.
    r   Nz"([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_]*)}errorssurrogateescape#    r   z$$$CFLAGSLDFLAGSCPPFLAGSTFPY_r   )zCFLAGSzLDFLAGSzCPPFLAGS)recompileopen	readlines
startswithstripmatchgroupreplaceint
ValueErrorlistr?   lentuplesearchstrr+   r9   endstartremover@   
isinstanceupdate)filenamerM   rl   _variable_rx_findvar1_rx_findvar2_rxdonenotdoneflineslinemnvtmpv	variablesrenamed_variablesrI   rE   founditemafterkr!   r!   r"   _parse_makefile   s    		!
			


r   c              C   sf   t  r t j j t p t d  St t d  rD 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%sconfigr   )_PYTHON_BUILDr+   r    r-   r3   r4   hasattrr[   _PY_VERSION_SHORTr   r   )config_dir_namer!   r!   r"   r   Q  s    c           +   C   s_  d d l  }  i  } t   } y t | |  Wn^ t k
 r } z> d | } t | d  rn | 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	 r4| d | d <n  d } d	 t
 j k r}d d l } | j |  }	 | |	 _ |	 t
 j | <n  d
 t   t
 j d d  f }
 t t
 d  r|
 d 7}
 n  t j |
 d d t j j |
 | d  } t | d d d 4 } | j d  | j d  |  j  | d | Wd QXt d d d d  } | j |
  Wd QXd S)z;Generate the Python module containing build-time variables.r   Nz.invalid Python installation: unable to open %sstrerrorz (%s)LDSHARED	BLDSHARED_sysconfigdatarW   zbuild/lib.%s-%sr   gettotalrefcountz-pydebugexist_okTz.pywencodingutf8zB# system configuration generated and used by the sysconfig module
zbuild_time_vars = streamzpybuilddir.txtascii)pprintr   r   r   r   r   r   rn   r   r   r[   r\   types
ModuleTypebuild_time_varsmodulesr   versionr+   makedirsr    r-   write)r   rM   makefileemsgconfig_hr   rI   r   module
pybuilddirdestfiler!   r!   r"   _generate_posix_vars[  sL    	
	
	 r   c             C   s!   d d l  m } |  j |  d S)z7Initialize the module as appropriate for POSIX systems.r   )r   N)r   r   r   )rM   r   r!   r!   r"   _init_posix  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   LIBDESTr   
BINLIBDESTr   	INCLUDEPYz.pyd
EXT_SUFFIXz.exeEXEVERSIONBINDIRN)r   _PY_VERSION_SHORT_NO_DOTr+   r    dirnamer#   r[   
executable)rM   r!   r!   r"   _init_non_posix  s    


r   c       	      C   s   | d k r i  } n  d d l  } | j d  } | j d  } x |  j   } | sX Pn  | j |  } | r | j d d  \ } } y t |  } Wn t k
 r Yn X| | | <qB | j |  } | rB d | | j d  <qB qB 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.
    Nr   z"#define ([A-Z][A-Za-z0-9_]+) (.*)
z&/[*] #undef ([A-Z][A-Za-z0-9_]+) [*]/
rf   r   )rl   rm   readlinerr   rs   ru   rv   )	fprM   rl   	define_rxundef_rxr   r   r   r   r!   r!   r"   r     s*    	c              C   sa   t  rB t j d k r3 t j j t p' t d  }  qN t p< t }  n t d  }  t j j |  d  S)zReturn the path of pyconfig.h.r   PCr   zpyconfig-64.h)r   r+   rI   r    r-   r3   r4   r   )inc_dirr!   r!   r"   r     s    c               C   s   t  t t   S)z,Return a tuple containing the schemes names.)ry   sortedrH   r!   r!   r!   r"   r     s    c               C   s   t  S)z*Return a tuple containing the paths names.)_SCHEME_KEYSr!   r!   r!   r"   r	     s    c             C   s   | r t  |  |  St |  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)rO   rH   )rL   rM   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
   )rI   rL   rM   r   r!   r!   r"   r     s    c              G   s  t  d k r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 <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  } | d k	 r| t  d <n  t   t  d <t  j d t  } t j d k rt rst j j t    } t j j | |  } qt j j t    } n  t |  t  d <t j d k rd d l } | j t   qn  |  r g  } x$ |  D] } | j t  j |   qW| St  Sd S)an  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 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_nodotinstalled_baser_   installed_platbaseplatbaseprojectbaser   re   r   rG   r   SOuserbasesrcdirrW   )_CONFIG_VARS_PREFIX_EXEC_PREFIX_PY_VERSIONr   _BASE_PREFIX_BASE_EXEC_PREFIXr4   r[   r   r:   r+   rI   r   r   rZ   ra   r   r    r   r   r-   r#   r\   _osx_supportcustomize_config_varsappend)rR   r   r   r_   r   valsrI   r!   r!   r"   r     sP    








c             C   s>   |  d k r. d d l  } | j d t d  n  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   r   Nz SO is deprecated, use EXT_SUFFIXr   )warningswarnDeprecationWarningr   rZ   )rI   r   r!   r!   r"   r   G  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 Sd t  j	 k r t  j	 d St  j
   \ } } } } } | j   j d d  } | j d d  } | j d d  } | d d  d k rTd | | f S| d d  d k r| d d k rd } d t | d  d | d d  f } i d d 6d d 6}	 | d  |	 t j 7} qn | d d!  d" k rd | | f S| d d  d# k r"d$ | | | f S| d d%  d& k rd& } d d l }
 |
 j d'  } | j |  } | r| j   } qnI | d d%  d( k rd d l } | j t   | | |  \ } } } n  d) | | | f S)+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; 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 (rf   )amd64z	win-amd64itaniumzwin-ia64rG   uname_PYTHON_HOST_PLATFORM/re    _-N   linuxz%s-%ssunosr   5solarisz%d.%sr   r   32biti64bitl    z.%s   irixaixz%s-%s.%s   cygwinz[\d.]+rW   z%s-%s-%s)r+   rI   r[   r   findr\   rx   lowerr   r9   r   rt   ru   maxsizerl   rm   rr   rs   r   get_platform_osxr   )r   ijlookosnamehostreleaser   machinebitnessrl   rel_rer   r   r!   r!   r"   r   S  sZ    #(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)titler   indexrD   rE   r!   r!   r"   _print_dict  s    +r  c               C   s   d t  j k r t   d St 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--generate-posix-varsNzPlatform: "%s"zPython version: "%s"z!Current installation scheme: "%s"Paths	Variables)
r[   argvr   r	  r   r   rP   r  r
   r   r!   r!   r!   r"   _main  s    r  __main__)zstdlibz
platstdlibzpurelibzplatlibzincludezscriptszdataiii)r$   r2   )zposix_prefixz
posix_home)A__doc__r+   r[   Zos.pathr   r   __all__rH   r   r   splitr   r   r   r    rK   r   r   base_prefixr   r   r   base_exec_prefixr   r   
_USER_BASEr#   r   r   r4   getcwdrI   r   r-   r9   r0   getattrr3   endswithr6   r   rL   r>   rF   rO   rP   ra   r   r   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r  r  __name__r!   r!   r!   r"   <module>   s   	 	++!+!	z
? M[