
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
ó
Àfc           @   sy  d  Z  d d l Z d d l Z d d l Z d d l Z d d l Z d d l m Z d d l	 m
 Z
 d d l m Z e j ƒ  d k r  d d l	 m Z e j Z n d	 f  d
 „  ƒ  YZ e ƒ  Z e e j j f Z y d d l m Z Wn e k
 rõ n Xd „  Z d d „ Z d „  Z d „  Z d d „ Z d f  d „  ƒ  YZ d f  d „  ƒ  YZ d f  d „  ƒ  YZ d f  d „  ƒ  YZ  d S(   s@  
Improved support for Microsoft Visual C++ compilers.

Known supported compilers:
--------------------------
Microsoft Visual C++ 9.0:
    Microsoft Visual C++ Compiler for Python 2.7 (x86, amd64)
    Microsoft Windows SDK 6.1 (x86, x64, ia64)
    Microsoft Windows SDK 7.0 (x86, x64, ia64)

Microsoft Visual C++ 10.0:
    Microsoft Windows SDK 7.1 (x86, x64, ia64)

Microsoft Visual C++ 14.0:
    Microsoft Visual C++ Build Tools 2015 (x86, x64, arm)
    Microsoft Visual Studio 2017 (x86, x64, arm, arm64)
    Microsoft Visual Studio Build Tools 2017 (x86, x64, arm, arm64)
iÿÿÿÿN(   t   LegacyVersion(   t   filterfalsei   (   t   get_unpatchedt   Windows(   t   winregR   c           B   s    e  Z d  Z d  Z d  Z d  Z RS(   N(   t   __name__t
   __module__t   Nonet
   HKEY_USERSt   HKEY_CURRENT_USERt   HKEY_LOCAL_MACHINEt   HKEY_CLASSES_ROOT(    (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyR   (   s   (   t   Regc         C   sÊ   d } | d |  f } y t  j | d ƒ } WnQ t k
 r y& | d |  f } t  j | d ƒ } Wq€ t k
 r{ d } q€ Xn X| rº t j j j j | d ƒ } t j j | ƒ rº | Sn  t t	 ƒ |  ƒ S(   s+  
    Patched "distutils.msvc9compiler.find_vcvarsall" to use the standalone
    compiler build for Python (VCForPython). Fall back to original behavior
    when the standalone compiler is not available.

    Redirect the path of "vcvarsall.bat".

    Known supported compilers
    -------------------------
    Microsoft Visual C++ 9.0:
        Microsoft Visual C++ Compiler for Python 2.7 (x86, amd64)

    Parameters
    ----------
    version: float
        Required Microsoft Visual C++ version.

    Return
    ------
    vcvarsall.bat path: str
    s-   Software\%sMicrosoft\DevDiv\VCForPython\%0.1ft    t
   installdirs   Wow6432Node\s   vcvarsall.batN(
   R   t	   get_valuet   KeyErrorR   t   ost   patht   joint   isfileR   t   msvc9_find_vcvarsall(   t   versiont   VC_BASEt   keyt
   productdirt	   vcvarsall(    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyR   ?   s    t   x86c         O   s—   y# t  t ƒ } | |  | | | Ž SWn' t j j k
 r< n t k
 rL n Xy t | |  ƒ j ƒ  SWn, t j j k
 r’ } t | |  | ƒ ‚  n Xd S(   sœ  
    Patched "distutils.msvc9compiler.query_vcvarsall" for support extra
    compilers.

    Set environment without use of "vcvarsall.bat".

    Known supported compilers
    -------------------------
    Microsoft Visual C++ 9.0:
        Microsoft Visual C++ Compiler for Python 2.7 (x86, amd64)
        Microsoft Windows SDK 6.1 (x86, x64, ia64)
        Microsoft Windows SDK 7.0 (x86, x64, ia64)

    Microsoft Visual C++ 10.0:
        Microsoft Windows SDK 7.1 (x86, x64, ia64)

    Parameters
    ----------
    ver: float
        Required Microsoft Visual C++ version.
    arch: str
        Target architecture.

    Return
    ------
    environment: dict
    N(	   R   t   msvc9_query_vcvarsallt	   distutilst   errorst   DistutilsPlatformErrort
   ValueErrort   EnvironmentInfot
   return_envt   _augment_exception(   t   vert   archt   argst   kwargst   origt   exc(    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyR   j   s    c         C   sx   y t  t ƒ |  ƒ SWn t j j k
 r- n Xy t |  d d ƒj ƒ  SWn) t j j k
 rs } t | d ƒ ‚  n Xd S(   s'  
    Patched "distutils._msvccompiler._get_vc_env" for support extra
    compilers.

    Set environment without use of "vcvarsall.bat".

    Known supported compilers
    -------------------------
    Microsoft Visual C++ 14.0:
        Microsoft Visual C++ Build Tools 2015 (x86, x64, arm)
        Microsoft Visual Studio 2017 (x86, x64, arm, arm64)
        Microsoft Visual Studio Build Tools 2017 (x86, x64, arm, arm64)

    Parameters
    ----------
    plat_spec: str
        Target architecture.

    Return
    ------
    environment: dict
    t
   vc_min_verg      ,@N(   R   t   msvc14_get_vc_envR   R   R   R!   R"   R#   (   t	   plat_specR)   (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyR+   ™   s    c          O   sb   d t  j k rO d d l } t | j ƒ t d ƒ k  rO | j j j |  | Ž  Sn  t t	 ƒ |  | Ž  S(   s¦   
    Patched "distutils._msvccompiler.gen_lib_options" for fix
    compatibility between "numpy.distutils" and "distutils._msvccompiler"
    (for Numpy < 1.11.2)
    s   numpy.distutilsiÿÿÿÿNs   1.11.2(
   t   syst   modulest   numpyR    t   __version__R   t	   ccompilert   gen_lib_optionsR   t   msvc14_gen_lib_options(   R&   R'   t   np(    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyR3   ¿   s
    R   c         C   sñ   |  j  d } d | j ƒ  k s1 d | j ƒ  k rá d } | j t ƒ  �  } d } | d k rž | j ƒ  j d ƒ d k r‘ | d	 7} | | d
 7} qÞ | d 7} qá | d k rÅ | d 7} | | d 7} qá | d k rá | d 7} qá n  | f |  _  d S(   sl   
    Add details to the exception message to help guide the user
    as to what action will resolve it.
    i    R   s   visual cs0   Microsoft Visual C++ {version:0.1f} is required.s-   www.microsoft.com/download/details.aspx?id=%dg      "@t   ia64iÿÿÿÿs*    Get it with "Microsoft Windows SDK 7.0": iB  s%    Get it from http://aka.ms/vcpython27g      $@s*    Get it with "Microsoft Windows SDK 7.1": iW   g      ,@sj    Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-toolsN(   R&   t   lowert   formatt   localst   find(   R)   R   R%   t   messaget   tmplt
   msdownload(    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyR#   Ì   s     $

t   PlatformInfoc           B   sz   e  Z d  Z e j d d ƒ j ƒ  Z d „  Z e d „  ƒ Z	 d „  Z
 d „  Z e e d „ Z e e d „ Z e d	 „ Z RS(
   s‚   
    Current and Target Architectures informations.

    Parameters
    ----------
    arch: str
        Target architecture.
    t   processor_architectureR   c         C   s   | j  ƒ  j d d ƒ |  _ d  S(   Nt   x64t   amd64(   R6   t   replaceR%   (   t   selfR%   (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt   __init__ü   s    c         C   s   |  j  |  j  j d ƒ d S(   Nt   _i   (   R%   R9   (   RB   (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt
   target_cpuÿ   s    c         C   s   |  j  d k S(   NR   (   RE   (   RB   (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt   target_is_x86  s    c         C   s   |  j  d k S(   NR   (   t   current_cpu(   RB   (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt   current_is_x86  s    c         C   s=   |  j  d k r | r d S|  j  d k r2 | r2 d Sd |  j  S(   sj  
        Current platform specific subfolder.

        Parameters
        ----------
        hidex86: bool
            return '' and not '†' if architecture is x86.
        x64: bool
            return 'd' and not 'md64' if architecture is amd64.

        Return
        ------
        subfolder: str
            '	arget', or '' (see hidex86 parameter)
        R   R   R@   s   \x64s   \%s(   RG   (   RB   t   hidex86R?   (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt   current_dir	  s    c         C   s=   |  j  d k r | r d S|  j  d k r2 | r2 d Sd |  j  S(   sr  
        Target platform specific subfolder.

        Parameters
        ----------
        hidex86: bool
            return '' and not '\x86' if architecture is x86.
        x64: bool
            return '\x64' and not '\amd64' if architecture is amd64.

        Return
        ------
        subfolder: str
            '\current', or '' (see hidex86 parameter)
        R   R   R@   s   \x64s   \%s(   RE   (   RB   RI   R?   (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt
   target_dir  s    c         C   sB   | r d n |  j  } |  j | k r( d S|  j ƒ  j d d | ƒ S(   so  
        Cross platform specific subfolder.

        Parameters
        ----------
        forcex86: bool
            Use 'x86' as current architecture even if current acritecture is
            not x86.

        Return
        ------
        subfolder: str
            '' if target architecture is current architecture,
            '\current_target' if not.
        R   R   s   \s   \%s_(   RG   RE   RK   RA   (   RB   t   forcex86t   current(    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt	   cross_dir5  s    (   R   R   t   __doc__t   safe_envt   getR6   RG   RC   t   propertyRE   RF   RH   t   FalseRJ   RK   RN   (    (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyR=   ñ   s   			t   RegistryInfoc           B   sÑ   e  Z d  Z e j e j e j e j f Z d „  Z	 e
 d „  ƒ Z e
 d „  ƒ Z e
 d „  ƒ Z e
 d „  ƒ Z e
 d „  ƒ Z e
 d „  ƒ Z e
 d „  ƒ Z e
 d	 „  ƒ Z e
 d
 „  ƒ Z e d „ Z d „  Z RS(   s    
    Microsoft Visual Studio related registry informations.

    Parameters
    ----------
    platform_info: PlatformInfo
        "PlatformInfo" instance.
    c         C   s   | |  _  d  S(   N(   t   pi(   RB   t   platform_info(    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyRC   Z  s    c         C   s   d S(   s<   
        Microsoft Visual Studio root registry key.
        t   VisualStudio(    (   RB   (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt   visualstudio]  s    c         C   s   t  j j |  j d ƒ S(   s;   
        Microsoft Visual Studio SxS registry key.
        t   SxS(   R   R   R   RX   (   RB   (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt   sxsd  s    c         C   s   t  j j |  j d ƒ S(   s8   
        Microsoft Visual C++ VC7 registry key.
        t   VC7(   R   R   R   RZ   (   RB   (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt   vck  s    c         C   s   t  j j |  j d ƒ S(   s;   
        Microsoft Visual Studio VS7 registry key.
        t   VS7(   R   R   R   RZ   (   RB   (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt   vsr  s    c         C   s   d S(   s?   
        Microsoft Visual C++ for Python registry key.
        s   DevDiv\VCForPython(    (   RB   (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt   vc_for_pythony  s    c         C   s   d S(   s-   
        Microsoft SDK registry key.
        s   Microsoft SDKs(    (   RB   (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt   microsoft_sdk€  s    c         C   s   t  j j |  j d ƒ S(   s>   
        Microsoft Windows/Platform SDK registry key.
        R   (   R   R   R   R`   (   RB   (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt   windows_sdk‡  s    c         C   s   t  j j |  j d ƒ S(   s<   
        Microsoft .NET Framework SDK registry key.
        t   NETFXSDK(   R   R   R   R`   (   RB   (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt	   netfx_sdkŽ  s    c         C   s   d S(   s<   
        Microsoft Windows Kits Roots registry key.
        s   Windows Kits\Installed Roots(    (   RB   (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt   windows_kits_roots•  s    c         C   s:   |  j  j ƒ  s | r d n d } t j j d | d | ƒ S(   s
  
        Return key in Microsoft software registry.

        Parameters
        ----------
        key: str
            Registry key path where look.
        x86: str
            Force x86 software registry.

        Return
        ------
        str: value
        R   t   Wow6432Nodet   Softwaret	   Microsoft(   RU   RH   R   R   R   (   RB   R   R   t   node64(    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt	   microsoftœ  s    !c         C   sò   t  j } t  j } |  j } xÐ |  j D]Å } y | | | | ƒ d | ƒ } Wnk t t f k
 r· |  j j ƒ  s% y" | | | | t	 ƒ d | ƒ } Wq´ t t f k
 r­ q% q´ Xq¸ q% n Xy t  j
 | | ƒ d SWq% t t f k
 ré q% Xq% Wd S(   s  
        Look for values in registry in Microsoft software registry.

        Parameters
        ----------
        key: str
            Registry key path where look.
        name: str
            Value name to find.

        Return
        ------
        str: value
        i    N(   R   t   KEY_READt   OpenKeyRi   t   HKEYSt   OSErrort   IOErrorRU   RH   t   Truet   QueryValueEx(   RB   R   t   nameRj   t   openkeyt   mst   hkeyt   bkey(    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt   lookup®  s"    			"
(   R   R   RO   R   R   R	   R
   R   Rl   RC   RR   RX   RZ   R\   R^   R_   R`   Ra   Rc   Rd   RS   Ri   Rv   (    (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyRT   L  s"   	t
   SystemInfoc           B   sj  e  Z d  Z e j d d ƒ Z e j d d ƒ Z e j d e ƒ Z d d „ Z	 d „  Z
 d „  Z e d „  ƒ Z e d	 „  ƒ Z d
 „  Z d „  Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z d „  Z d d „ Z RS(   sê   
    Microsoft Windows and Visual Studio related system inormations.

    Parameters
    ----------
    registry_info: RegistryInfo
        "RegistryInfo" instance.
    vc_ver: float
        Required Microsoft Visual C++ version.
    t   WinDirR   t   ProgramFiless   ProgramFiles(x86)c         C   s1   | |  _  |  j  j |  _ | p' |  j ƒ  |  _ d  S(   N(   t   riRU   t   _find_latest_available_vc_vert   vc_ver(   RB   t   registry_infoR|   (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyRC   ã  s    	c         C   sB   y |  j  ƒ  d SWn) t k
 r= d } t j j | ƒ ‚ n Xd  S(   Niÿÿÿÿs%   No Microsoft Visual C++ version found(   t   find_available_vc_verst
   IndexErrorR   R   R   (   RB   t   err(    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyR{   è  s
    c         C   s‰  |  j  j } |  j  j |  j  j |  j  j f } g  } xI|  j  j D];} x2| D]*} y% t j | | | ƒ d t j ƒ } Wn t	 t
 f k
 r” qM n Xt j | ƒ \ } } }	 xd t | ƒ D]V }
 y< t t j | |
 ƒ d ƒ } | | k rû | j | ƒ n  Wqº t k
 rqº Xqº Wx` t | ƒ D]R }
 y8 t t j | |
 ƒ ƒ } | | k r^| j | ƒ n  Wq!t k
 rrq!Xq!WqM Wq@ Wt | ƒ S(   sC   
        Find all available Microsoft Visual C++ versions.
        i    (   Rz   Ri   R\   R_   R^   Rl   R   Rk   Rj   Rm   Rn   t   QueryInfoKeyt   ranget   floatt	   EnumValuet   appendR    t   EnumKeyt   sorted(   RB   Rs   t   vckeyst   vc_versRt   R   Ru   t   subkeyst   valuesRD   t   iR$   (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyR~   ï  s2    !%c         C   sK   d |  j  } t j j |  j | ƒ } |  j j |  j j d |  j  ƒ pJ | S(   s4   
        Microsoft Visual Studio directory.
        s   Microsoft Visual Studio %0.1fs   %0.1f(   R|   R   R   R   t   ProgramFilesx86Rz   Rv   R^   (   RB   Rq   t   default(    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt   VSInstallDir  s    c         C   sÐ   |  j  |  j ƒ  p |  j ƒ  } t j j |  j j d |  j ƒ } |  j j	 | d ƒ } | rq t j j | d ƒ n | } |  j j	 |  j j
 d |  j ƒ pœ | } t j j | ƒ sÌ d } t j j | ƒ ‚ n  | S(   s1   
        Microsoft Visual C++ directory.
        s   %0.1fR   t   VCs(   Microsoft Visual C++ directory not found(   R�   t	   _guess_vct   _guess_vc_legacyR   R   R   Rz   R_   R|   Rv   R\   t   isdirR   R   R   (   RB   t   guess_vct   reg_patht	   python_vct
   default_vcR   t   msg(    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt   VCInstallDir  s    "!(c         C   s|   |  j  d k r d Sd } t j j |  j | ƒ } y* t j | ƒ d } t j j | | ƒ SWn t t t f k
 rw n Xd S(   s*   
        Locate Visual C for 2017
        g      ,@Ns   VC\Tools\MSVCiÿÿÿÿ(	   R|   R   R   R   R�   t   listdirRm   Rn   R   (   RB   RŽ   R”   t   vc_exact_ver(    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyR‘   0  s    c         C   s#   d |  j  } t j j |  j | ƒ S(   s<   
        Locate Visual C for versions prior to 2017
        s    Microsoft Visual Studio %0.1f\VC(   R|   R   R   R   R�   (   RB   RŽ   (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyR’   @  s    c         C   sc   |  j  d k r d S|  j  d k r& d S|  j  d k r9 d S|  j  d k rL d S|  j  d k r_ d Sd S(   sN   
        Microsoft Windows SDK versions for specified MSVC++ version.
        g      "@s   7.0s   6.1s   6.0ag      $@s   7.1s   7.0ag      &@s   8.0s   8.0ag      (@s   8.1s   8.1ag      ,@s   10.0N(   s   7.0s   6.1s   6.0a(   s   7.1s   7.0a(   s   8.0s   8.0a(   s   8.1s   8.1a(   s   10.0s   8.1(   R|   (   RB   (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt   WindowsSdkVersionG  s    c         C   s   |  j  t j j |  j d ƒ ƒ S(   s4   
        Microsoft Windows SDK last version
        t   lib(   t   _use_last_dir_nameR   R   R   t   WindowsSdkDir(   RB   (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt   WindowsSdkLastVersionW  s    c         C   sÞ  d } xO |  j  D]D } t j j |  j j d | ƒ } |  j j | d ƒ } | r Pq q W| sr t j j | ƒ rÊ t j j |  j j d |  j	 ƒ } |  j j | d ƒ } | rÊ t j j | d ƒ } qÊ n  | sä t j j | ƒ rKxd |  j  D]V } | | j
 d ƒ  } d | } t j j |  j | ƒ } t j j | ƒ rî | } qî qî Wn  | set j j | ƒ r¹xQ |  j  D]C } d	 | } t j j |  j | ƒ } t j j | ƒ ro| } qoqoWn  | sÚt j j |  j d
 ƒ } n  | S(   s2   
        Microsoft Windows SDK directory.
        R   s   v%st   installationfolders   %0.1fR   t   WinSDKt   .s   Microsoft SDKs\Windows Kits\%ss   Microsoft SDKs\Windows\v%st   PlatformSDK(   Rœ   R   R   R   Rz   Ra   Rv   R“   R_   R|   t   rfindRy   R™   (   RB   t   sdkdirR$   t   locR   t   install_baset   intvert   d(    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyRŸ   _  s6    "

c   	      C   s8  |  j  d k r d } d } n< d } |  j  d k r9 t n t } |  j j d t d | ƒ } d | | j d	 d
 ƒ f } g  } |  j  d k rÇ x9 |  j D]+ } | t j j	 |  j
 j | | ƒ g 7} q• Wn  x: |  j D]/ } | t j j	 |  j
 j d | | ƒ g 7} qÑ Wx- | D]% } |  j
 j | d ƒ } | rPqqW| S(   s=   
        Microsoft Windows SDK executable directory.
        g      &@i#   R   i(   g      (@R?   RI   s   WinSDK-NetFx%dTools%ss   \t   -g      ,@s   v%sAR¡   (   R|   Ro   RS   RU   RJ   RA   t   NetFxSdkVersionR   R   R   Rz   Rc   Rœ   Ra   Rv   (	   RB   t   netfxverR%   RI   t   fxt   regpathsR$   R   t   execpath(    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt   WindowsSDKExecutablePath…  s$    	,-c         C   sA   d |  j  } t j j |  j j | ƒ } |  j j | d ƒ p@ d S(   s0   
        Microsoft Visual F# directory.
        s   %0.1f\Setup\F#R   R   (   R|   R   R   R   Rz   RX   Rv   (   RB   R   (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt   FSharpInstallDir¤  s    c         C   sb   |  j  d k r d } n d } x7 | D]/ } |  j j |  j j d | ƒ } | r% Pq% q% W| pa d S(   s8   
        Microsoft Universal CRT SDK directory.
        g      ,@t   10t   81s
   kitsroot%sR   (   R³   R´   (    (   R|   Rz   Rv   Rd   (   RB   t   versR$   R¦   (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt   UniversalCRTSdkDir­  s    	c         C   s   |  j  t j j |  j d ƒ ƒ S(   s@   
        Microsoft Universal C Runtime SDK last version
        R�   (   Rž   R   R   R   R¶   (   RB   (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt   UniversalCRTSdkLastVersionÀ  s    c         C   s   |  j  d k r d Sd Sd S(   s8   
        Microsoft .NET Framework SDK versions.
        g      ,@s   4.6.1s   4.6N(   s   4.6.1s   4.6(    (   R|   (   RB   (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyR¬   È  s    c         C   sX   xK |  j  D]@ } t j j |  j j | ƒ } |  j j | d ƒ } | r
 Pq
 q
 W| pW d S(   s9   
        Microsoft .NET Framework SDK directory.
        t   kitsinstallationfolderR   (   R¬   R   R   R   Rz   Rc   Rv   (   RB   R$   R§   R¦   (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt   NetFxSdkDirÓ  s    c         C   s7   t  j j |  j d ƒ } |  j j |  j j d ƒ p6 | S(   s;   
        Microsoft .NET Framework 32bit directory.
        s   Microsoft.NET\Frameworkt   frameworkdir32(   R   R   R   Rx   Rz   Rv   R\   (   RB   t   guess_fw(    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt   FrameworkDir32ß  s    c         C   s7   t  j j |  j d ƒ } |  j j |  j j d ƒ p6 | S(   s;   
        Microsoft .NET Framework 64bit directory.
        s   Microsoft.NET\Framework64t   frameworkdir64(   R   R   R   Rx   Rz   Rv   R\   (   RB   R»   (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt   FrameworkDir64ê  s    c         C   s   |  j  d ƒ S(   s:   
        Microsoft .NET Framework 32bit versions.
        i    (   t   _find_dot_net_versions(   RB   (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt   FrameworkVersion32õ  s    c         C   s   |  j  d ƒ S(   s:   
        Microsoft .NET Framework 64bit versions.
        i@   (   R¿   (   RB   (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt   FrameworkVersion64ü  s    c         C   sÜ   |  j  j |  j  j d | ƒ } t |  d | ƒ } | pM |  j | d ƒ pM d } |  j d k rn | d f } nR |  j d k r¨ | j ƒ  d  d	 k r™ d
 n | d f } n |  j d k rÀ d } n  |  j d k rØ d } n  | S(   s¡   
        Find Microsoft .NET Framework versions.

        Parameters
        ----------
        bits: int
            Platform number of bits: 32 or 64.
        s   frameworkver%ds   FrameworkDir%dt   vR   g      (@s   v4.0g      $@i   t   v4s
   v4.0.30319s   v3.5g      "@s
   v2.0.50727g       @s   v3.0(   s   v3.5s
   v2.0.50727(   s   v3.0s
   v2.0.50727(   Rz   Rv   R\   t   getattrRž   R|   R6   (   RB   t   bitst   reg_vert   dot_net_dirR$   t   frameworkver(    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyR¿     s    
		c            s;   ‡  ‡ f d †  t  t j ˆ  ƒ ƒ Dƒ } t | d ƒ p: d S(   sî   
        Return name of the last dir in path or '' if no dir found.

        Parameters
        ----------
        path: str
            Use dirs in this path
        prefix: str
            Use only dirs startings by this prefix
        c         3   sE   |  ]; } t  j j t  j j ˆ  | ƒ ƒ r | j ˆ ƒ r | Vq d  S(   N(   R   R   R“   R   t
   startswith(   t   .0t   dir_name(   R   t   prefix(    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pys	   <genexpr>)  s   !R   N(   t   reversedR   Rš   t   nextR   (   RB   R   RÌ   t   matching_dirs(    (   R   RÌ   s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyRž     s    N(    R   R   RO   RP   RQ   Rx   Ry   R�   R   RC   R{   R~   RR   R�   R™   R‘   R’   Rœ   R    RŸ   R±   R²   R¶   R·   R¬   R¹   R¼   R¾   RÀ   RÁ   R¿   Rž   (    (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyRw   Ñ  s4   
				&		R!   c           B   s   e  Z d  Z d d d „ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z	 e d „  ƒ Z
 e d „  ƒ Z e d	 „  ƒ Z e d
 „  ƒ Z e d „  ƒ Z e d „  ƒ Z d „  Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „ Z d „  Z  d d „ Z! RS(   sY  
    Return environment variables for specified Microsoft Visual C++ version
    and platform : Lib, Include, Path and libpath.

    This function is compatible with Microsoft Visual C++ 9.0 to 14.0.

    Script created by analysing Microsoft environment configuration files like
    "vcvars[...].bat", "SetEnv.Cmd", "vcbuildtools.bat", ...

    Parameters
    ----------
    arch: str
        Target architecture.
    vc_ver: float
        Required Microsoft Visual C++ version. If not set, autodetect the last
        version.
    vc_min_ver: float
        Minimum Microsoft Visual C++ version.
    i    c         C   sd   t  | ƒ |  _ t |  j ƒ |  _ t |  j | ƒ |  _ |  j | k  r` d } t j j	 | ƒ ‚ n  d  S(   Ns.   No suitable Microsoft Visual C++ version found(
   R=   RU   RT   Rz   Rw   t   siR|   R   R   R   (   RB   R%   R|   R*   R€   (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyRC   I  s    c         C   s
   |  j  j S(   s/   
        Microsoft Visual C++ version.
        (   RÐ   R|   (   RB   (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyR|   R  s    c         C   s�   d d g } |  j  d k rd |  j j d t d t ƒ } | d g 7} | d g 7} | d | g 7} n  g  | D]! } t j j |  j j | ƒ ^ qk S(	   s/   
        Microsoft Visual Studio Tools
        s   Common7\IDEs   Common7\Toolsg      ,@RI   R?   s1   Common7\IDE\CommonExtensions\Microsoft\TestWindows   Team Tools\Performance Toolss   Team Tools\Performance Tools%s(	   R|   RU   RJ   Ro   R   R   R   RÐ   R�   (   RB   t   pathst   arch_subdirR   (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt   VSToolsY  s    c         C   s4   t  j j |  j j d ƒ t  j j |  j j d ƒ g S(   sL   
        Microsoft Visual C++ & Microsoft Foundation Class Includes
        t   Includes   ATLMFC\Include(   R   R   R   RÐ   R™   (   RB   (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt
   VCIncludesh  s    c         C   sŸ   |  j  d k r' |  j j d t ƒ } n |  j j d t ƒ } d | d | g } |  j  d k rs | d | g 7} n  g  | D]! } t j j |  j j | ƒ ^ qz S(   sM   
        Microsoft Visual C++ & Microsoft Foundation Class Libraries
        g      .@R?   RI   s   Lib%ss   ATLMFC\Lib%sg      ,@s   Lib\store%s(	   R|   RU   RK   Ro   R   R   R   RÐ   R™   (   RB   RÒ   RÑ   R   (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt   VCLibrariesp  s    c         C   s/   |  j  d k  r g  St j j |  j j d ƒ g S(   sA   
        Microsoft Visual C++ store references Libraries
        g      ,@s   Lib\store\references(   R|   R   R   R   RÐ   R™   (   RB   (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt   VCStoreRefs€  s    c         C   s–  |  j  } t j j | j d ƒ g } |  j d k r9 t n t } |  j j	 | ƒ } | r} | t j j | j d | ƒ g 7} n  |  j d k rÇ d |  j j
 d t ƒ } | t j j | j | ƒ g 7} nË |  j d k rs|  j j ƒ  rë d n d } | t j j | j | |  j j d	 t ƒ ƒ g 7} |  j j |  j j k r’| t j j | j | |  j j
 d	 t ƒ ƒ g 7} q’n | t j j | j d
 ƒ g 7} | S(   s,   
        Microsoft Visual C++ Tools
        t
   VCPackagesg      $@s   Bin%sg      ,@RI   g      .@s   bin\HostX86%ss   bin\HostX64%sR?   t   Bin(   RÐ   R   R   R   R™   R|   Ro   RS   RU   RN   RJ   RH   RK   RG   RE   (   RB   RÐ   t   toolsRL   RÒ   R   t   host_dir(    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt   VCTools‰  s&    	&"&,c         C   s§   |  j  d k rJ |  j j d t d t ƒ } t j j |  j j d | ƒ g S|  j j d t ƒ } t j j |  j j d ƒ } |  j	 } t j j | d | | f ƒ g Sd S(   s1   
        Microsoft Windows SDK Libraries
        g      $@RI   R?   s   Lib%sR�   s   %sum%sN(
   R|   RU   RK   Ro   R   R   R   RÐ   RŸ   t   _sdk_subdir(   RB   RÒ   R�   t   libver(    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt   OSLibraries©  s     	c         C   s®   t  j j |  j j d ƒ } |  j d k rC | t  j j | d ƒ g S|  j d k r^ |  j } n d } t  j j | d | ƒ t  j j | d | ƒ t  j j | d | ƒ g Sd	 S(
   s/   
        Microsoft Windows SDK Include
        t   includeg      $@t   glg      ,@R   s   %sshareds   %sums   %swinrtN(   R   R   R   RÐ   RŸ   R|   RÝ   (   RB   Rà   t   sdkver(    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt
   OSIncludes¸  s    c         C   s  t  j j |  j j d ƒ } g  } |  j d k r@ | |  j 7} n  |  j d k rn | t  j j | d ƒ g 7} n  |  j d k r| | t  j j |  j j d ƒ t  j j | d d ƒ t  j j | d	 d ƒ t  j j | d
 d ƒ t  j j |  j j d d d |  j d d d ƒ g 7} n  | S(   s7   
        Microsoft Windows SDK Libraries Paths
        t
   Referencesg      "@g      &@s   CommonConfiguration\Neutralg      ,@t   UnionMetadatas'   Windows.Foundation.UniversalApiContracts   1.0.0.0s%   Windows.Foundation.FoundationContracts,   Windows.Networking.Connectivity.WwanContractt   ExtensionSDKss   Microsoft.VCLibss   %0.1ft   CommonConfigurationt   neutral(   R   R   R   RÐ   RŸ   R|   Rß   (   RB   t   reft   libpath(    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt	   OSLibpathË  s>    					
c         C   s   t  |  j ƒ  ƒ S(   s-   
        Microsoft Windows SDK Tools
        (   t   listt
   _sdk_tools(   RB   (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt   SdkToolsø  s    c         c   s”  |  j  d k  rG |  j  d k r$ d n d } t j j |  j j | ƒ Vn  |  j j ƒ  s’ |  j j d t	 ƒ } d | } t j j |  j j | ƒ Vn  |  j  d k s° |  j  d k r
|  j j
 ƒ  rÈ d } n |  j j d	 t	 d t	 ƒ } d
 | } t j j |  j j | ƒ Vnl |  j  d k rvt j j |  j j d ƒ } |  j j d t	 ƒ } |  j j } t j j | d | | f ƒ Vn  |  j j r�|  j j Vn  d S(   s=   
        Microsoft Windows SDK Tools paths generator
        g      .@g      &@RÙ   s   Bin\x86R?   s   Bin%sg      $@R   RI   s   Bin\NETFX 4.0 Tools%ss   %s%sN(   R|   R   R   R   RÐ   RŸ   RU   RH   RJ   Ro   RF   R    R±   (   RB   t   bin_dirRÒ   R   Râ   (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyRí   ÿ  s(    
	
!c         C   s   |  j  j } | r d | Sd S(   s6   
        Microsoft Windows SDK version subdir
        s   %s\R   (   RÐ   R    (   RB   t   ucrtver(    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyRÝ     s    c         C   s/   |  j  d k r g  St j j |  j j d ƒ g S(   s-   
        Microsoft Windows SDK Setup
        g      "@t   Setup(   R|   R   R   R   RÐ   RŸ   (   RB   (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt   SdkSetup%  s    c         C   sú   |  j  } |  j } |  j d k rD t } | j ƒ  o> | j ƒ  } n6 | j ƒ  pY | j ƒ  } | j d k pw | j d k } g  } | r» | g  | j D] } t	 j
 j | j | ƒ ^ q“ 7} n  | rö | g  | j D] } t	 j
 j | j | ƒ ^ qÎ 7} n  | S(   s0   
        Microsoft .NET Framework Tools
        g      $@R@   (   RU   RÐ   R|   Ro   RF   RH   RG   RE   RÀ   R   R   R   R¼   RÁ   R¾   (   RB   RU   RÐ   t	   include32t	   include64RÚ   R$   (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt   FxTools/  s    		//c         C   sU   |  j  d k  s |  j j r  g  S|  j j d t ƒ } t j j |  j j d | ƒ g S(   s8   
        Microsoft .Net Framework SDK Libraries
        g      ,@R?   s   lib\um%s(	   R|   RÐ   R¹   RU   RK   Ro   R   R   R   (   RB   RÒ   (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt   NetFxSDKLibrariesG  s    c         C   s<   |  j  d k  s |  j j r  g  St j j |  j j d ƒ g S(   s7   
        Microsoft .Net Framework SDK Includes
        g      ,@s
   include\um(   R|   RÐ   R¹   R   R   R   (   RB   (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt   NetFxSDKIncludesR  s    c         C   s   t  j j |  j j d ƒ g S(   s>   
        Microsoft Visual Studio Team System Database
        s   VSTSDB\Deploy(   R   R   R   RÐ   R�   (   RB   (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt   VsTDb\  s    c         C   s¸   |  j  d k  r g  S|  j  d k  rF |  j j } |  j j d t ƒ } n |  j j } d } d |  j  | f } t j j	 | | ƒ g } |  j  d k r´ | t j j	 | | d ƒ g 7} n  | S(   s(   
        Microsoft Build Engine
        g      (@g      .@RI   R   s   MSBuild\%0.1f\bin%st   Roslyn(
   R|   RÐ   R�   RU   RJ   Ro   R�   R   R   R   (   RB   t	   base_pathRÒ   R   t   build(    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt   MSBuildc  s    "c         C   s/   |  j  d k  r g  St j j |  j j d ƒ g S(   s.   
        Microsoft HTML Help Workshop
        g      &@s   HTML Help Workshop(   R|   R   R   R   RÐ   R�   (   RB   (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt   HTMLHelpWorkshopz  s    c         C   sl   |  j  d k  r g  S|  j j d t ƒ } t j j |  j j d ƒ } |  j	 } t j j | d | | f ƒ g S(   s=   
        Microsoft Universal C Runtime SDK Libraries
        g      ,@R?   R�   s   %sucrt%s(
   R|   RU   RK   Ro   R   R   R   RÐ   R¶   t   _ucrt_subdir(   RB   RÒ   R�   Rð   (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt   UCRTLibraries„  s    	c         C   sK   |  j  d k  r g  St j j |  j j d ƒ } t j j | d |  j ƒ g S(   s;   
        Microsoft Universal C Runtime SDK Include
        g      ,@Rà   s   %sucrt(   R|   R   R   R   RÐ   R¶   Rþ   (   RB   Rà   (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt   UCRTIncludes‘  s    c         C   s   |  j  j } | r d | Sd S(   sB   
        Microsoft Universal C Runtime SDK version subdir
        s   %s\R   (   RÐ   R·   (   RB   Rð   (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyRþ   œ  s    c         C   s,   |  j  d k  r" |  j  d k r" g  S|  j j S(   s%   
        Microsoft Visual F#
        g      &@g      (@(   R|   RÐ   R²   (   RB   (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt   FSharp¤  s    c         C   sž   |  j  j d t ƒ } |  j d k  r9 |  j j } d } n |  j j j d d ƒ } d } |  j d k rl d n |  j } | | |  j | f } t j j	 | | ƒ S(   sA   
        Microsoft Visual C++ runtime redistribuable dll
        R?   i   s-   redist%s\Microsoft.VC%d0.CRT\vcruntime%d0.dlls   \Toolss   \Redists.   onecore%s\Microsoft.VC%d0.CRT\vcruntime%d0.dllg      ,@(
   RU   RK   Ro   R|   RÐ   R™   RA   R   R   R   (   RB   RÒ   t   redist_patht	   vcruntimet   dll_ver(    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt   VCRuntimeRedist®  s    	c         C   s  t  d |  j d |  j |  j |  j |  j g | ƒ d |  j d |  j |  j |  j |  j	 |  j
 g | ƒ d |  j d |  j |  j |  j |  j g | ƒ d |  j d |  j |  j |  j |  j |  j |  j |  j |  j |  j g	 | ƒ ƒ } |  j d k rt j j |  j ƒ r|  j | d <n  | S(   s—   
        Return environment dict.

        Parameters
        ----------
        exists: bool
            It True, only return existing paths.
        Rà   R�   Rê   R   i   t   py_vcruntime_redist(   t   dictt   _build_pathsRÕ   Rã   R   R÷   RÖ   Rß   Rõ   Rÿ   Rö   R×   Rë   RÜ   RÓ   Rø   Rî   Rò   Rü   Rý   R  R|   R   R   R   R  (   RB   t   existst   env(    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyR"   Á  sD    												$c   
      C   s³   t  j j | ƒ } t j | d ƒ j t j ƒ } t  j | | ƒ } | rc t t	 t j
 j | ƒ ƒ n | } | s” d | j ƒ  } t j j | ƒ ‚ n  |  j | ƒ }	 t j j |	 ƒ S(   s  
        Given an environment variable name and specified paths,
        return a pathsep-separated string of paths containing
        unique, extant, directories from those paths and from
        the environment variable. Raise an error if no paths
        are resolved.
        R   s    %s environment variable is empty(   t	   itertoolst   chaint   from_iterableRP   RQ   t   splitR   t   pathsepRì   t   filterR   R“   t   upperR   R   R   t   _unique_everseenR   (
   RB   Rq   t   spec_path_listsR	  t
   spec_pathst	   env_pathsRÑ   t   extant_pathsR˜   t   unique_paths(    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyR  î  s    	'c         c   sŒ   t  ƒ  } | j } | d k rM xg t | j | ƒ D] } | | ƒ | Vq1 Wn; x8 | D]0 } | | ƒ } | | k rT | | ƒ | VqT qT Wd S(   s×   
        List unique elements, preserving order.
        Remember all elements ever seen.

        _unique_everseen('AAAABBBCCDAABBB') --> A B C D

        _unique_everseen('ABBCcAD', str.lower) --> A B C D
        N(   t   sett   addR   R   t   __contains__(   RB   t   iterableR   t   seent   seen_addt   elementt   k(    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyR    s    			

N("   R   R   RO   R   RC   RR   R|   RÓ   RÕ   RÖ   R×   RÜ   Rß   Rã   Rë   Rî   Rí   RÝ   Rò   Rõ   Rö   R÷   Rø   Rü   Rý   Rÿ   R   Rþ   R  R  Ro   R"   R  R  (    (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyR!   1  s:   		 -	



-	(!   RO   R   R-   t   platformR  t   distutils.errorsR   t#   setuptools.extern.packaging.versionR    t   setuptools.extern.six.movesR   t   monkeyR   t   systemR   t   environRP   R  t   ImportErrorR   R   t   _msvc9_suppress_errorst   distutils.msvc9compilerR   R   R   R+   R3   R#   R=   RT   Rw   R!   (    (    (    s3   /usr/lib/python2.7/site-packages/setuptools/msvc.pyt   <module>   s:   		+/	&	%[…ÿ a