Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
B

Б2˜ƒ‘ã@sdZddlZddlZddlZddlZddlZddlmZddl	m
Z
ddlmZe 
¡dkrpddl	mZejZnGd	d
„d
ƒZeƒZeejjfZyddlmZWnek
r´YnXdd
„Zd dd„Zdd„Zdd„Zd!dd„ZGdd„dƒZGdd„dƒZGdd„dƒZGdd„dƒZ dS)"a@
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)
éN)Ú
LegacyVersion)Úfilterfalseé)Ú
get_unpatchedÚWindows)Úwinregc@seZdZdZdZdZdZdS)rN)Ú__name__Ú
__module__Ú__qualname__Ú
HKEY_USERSÚHKEY_CURRENT_USERÚHKEY_LOCAL_MACHINEÚHKEY_CLASSES_ROOT©rrú7/tmp/pip-install-5x7thzyg/setuptools/setuptools/msvc.pyr(sr)ÚRegcCsžd}|d|f}yt |d¡}WnJtk
rjy|d|f}t |d¡}Wntk
rdd}YnXYnX|r’tjjj |d¡}tj |¡r’|Sttƒ|ƒS)a+
    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
    z-Software\%sMicrosoft\DevDiv\VCForPython\%0.1fÚÚ
installdirzWow6432Node\Nz
vcvarsall.bat)	rÚ	get_valueÚKeyErrorÚosÚpathÚjoinÚisfilerÚmsvc9_find_vcvarsall)ÚversionZVC_BASEÚkeyÚ
productdirÚ	vcvarsallrrrr?srÚx86c
OsŽyttƒ}|||f|ž|ŽStjjk
r2Yntk
rDYnXyt||ƒ ¡Stjjk
rˆ}zt|||ƒ‚Wdd}~XYnXdS)aœ
    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Úmsvc9_query_vcvarsallÚ	distutilsÚerrorsÚDistutilsPlatformErrorÚ
ValueErrorÚEnvironmentInfoÚ
return_envÚ_augment_exception)ÚverÚarchÚargsÚkwargsÚorigÚexcrrrr jsr c
Csnyttƒ|ƒStjjk
r$YnXyt|dd ¡Stjjk
rh}zt|dƒ‚Wdd}~XYnXdS)a'
    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
    g,@)Ú
vc_min_verN)rÚmsvc14_get_vc_envr!r"r#r%r&r')Z	plat_specr-rrrr/™s
r/cOsBdtjkr4ddl}t|jƒtdƒkr4|jjj||ŽStt	ƒ||ŽS)z¦
    Patched "distutils._msvccompiler.gen_lib_options" for fix
    compatibility between "numpy.distutils" and "distutils._msvccompiler"
    (for Numpy < 1.11.2)
    znumpy.distutilsrNz1.11.2)
ÚsysÚmodulesZnumpyrÚ__version__r!Z	ccompilerZgen_lib_optionsrÚmsvc14_gen_lib_options)r*r+Únprrrr3¿s

r3rcCs¬|jd}d| ¡ks"d| ¡kr d}|jftƒŽ}d}|dkrr| ¡ d¡dkrh|d	7}||d
7}q |d7}n.|dkr|d
7}||d7}n|dkr |d7}|f|_dS)zl
    Add details to the exception message to help guide the user
    as to what action will resolve it.
    rrzvisual cz0Microsoft Visual C++ {version:0.1f} is required.z-www.microsoft.com/download/details.aspx?id=%dg"@Zia64éÿÿÿÿz* Get it with "Microsoft Windows SDK 7.0": iBz% Get it from http://aka.ms/vcpython27g$@z* Get it with "Microsoft Windows SDK 7.1": iW g,@z^ Get it with "Microsoft Visual C++ Build Tools": https://visualstudio.microsoft.com/downloads/N)r*ÚlowerÚformatÚlocalsÚfind)r-rr)ÚmessageÚtmplZ
msdownloadrrrr'Ìs 

r'c@sbeZdZdZe dd¡ ¡Zdd„Ze	dd„ƒZ
dd	„Zd
d„Zdd
d„Z
ddd„Zddd„ZdS)ÚPlatformInfoz‚
    Current and Target Architectures informations.

    Parameters
    ----------
    arch: str
        Target architecture.
    Zprocessor_architecturercCs| ¡ dd¡|_dS)NÚx64Úamd64)r6Úreplacer))Úselfr)rrrÚ__init__ûszPlatformInfo.__init__cCs|j|j d¡dd…S)NÚ_r)r)r9)r@rrrÚ
target_cpuþszPlatformInfo.target_cpucCs
|jdkS)Nr)rC)r@rrrÚ
target_is_x86szPlatformInfo.target_is_x86cCs
|jdkS)Nr)Úcurrent_cpu)r@rrrÚcurrent_is_x86szPlatformInfo.current_is_x86FcCs.|jdkr|rdS|jdkr$|r$dSd|jS)uk
        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)
        rrr>z\x64z\%s)rE)r@Úhidex86r=rrrÚcurrent_dirszPlatformInfo.current_dircCs.|jdkr|rdS|jdkr$|r$dSd|jS)ar
        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)
        rrr>z\x64z\%s)rC)r@rGr=rrrÚ
target_dirszPlatformInfo.target_dircCs0|rdn|j}|j|krdS| ¡ dd|¡S)ao
        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.
        rrú\z\%s_)rErCrIr?)r@Úforcex86ÚcurrentrrrÚ	cross_dir4szPlatformInfo.cross_dirN)FF)FF)F)rr	r
Ú__doc__Úsafe_envÚgetr6rErAÚpropertyrCrDrFrHrIrMrrrrr<ðs

r<c@sªeZdZdZejejejejfZ	dd„Z
edd„ƒZedd„ƒZ
edd	„ƒZed
d„ƒZedd
„ƒZedd„ƒZedd„ƒZedd„ƒZedd„ƒZddd„Zdd„ZdS)ÚRegistryInfoz 
    Microsoft Visual Studio related registry informations.

    Parameters
    ----------
    platform_info: PlatformInfo
        "PlatformInfo" instance.
    cCs
||_dS)N)Úpi)r@Z
platform_inforrrrAYszRegistryInfo.__init__cCsdS)z<
        Microsoft Visual Studio root registry key.
        ZVisualStudior)r@rrrÚvisualstudio\szRegistryInfo.visualstudiocCstj |jd¡S)z;
        Microsoft Visual Studio SxS registry key.
        ZSxS)rrrrT)r@rrrÚsxscszRegistryInfo.sxscCstj |jd¡S)z8
        Microsoft Visual C++ VC7 registry key.
        ZVC7)rrrrU)r@rrrÚvcjszRegistryInfo.vccCstj |jd¡S)z;
        Microsoft Visual Studio VS7 registry key.
        ZVS7)rrrrU)r@rrrÚvsqszRegistryInfo.vscCsdS)z?
        Microsoft Visual C++ for Python registry key.
        zDevDiv\VCForPythonr)r@rrrÚ
vc_for_pythonxszRegistryInfo.vc_for_pythoncCsdS)z-
        Microsoft SDK registry key.
        zMicrosoft SDKsr)r@rrrÚ
microsoft_sdkszRegistryInfo.microsoft_sdkcCstj |jd¡S)z>
        Microsoft Windows/Platform SDK registry key.
        r)rrrrY)r@rrrÚwindows_sdk†szRegistryInfo.windows_sdkcCstj |jd¡S)z<
        Microsoft .NET Framework SDK registry key.
        ZNETFXSDK)rrrrY)r@rrrÚ	netfx_sdkszRegistryInfo.netfx_sdkcCsdS)z<
        Microsoft Windows Kits Roots registry key.
        zWindows Kits\Installed Rootsr)r@rrrÚwindows_kits_roots”szRegistryInfo.windows_kits_rootsFcCs(|j ¡s|rdnd}tj d|d|¡S)a

        Return key in Microsoft software registry.

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

        Return
        ------
        str: value
        rZWow6432NodeZSoftwareÚ	Microsoft)rSrFrrr)r@rrZnode64rrrÚ	microsoft›szRegistryInfo.microsoftc
CsÂtj}tj}|j}xª|jD] }y||||ƒd|ƒ}WnZttfk
rŽ|j ¡sˆy||||dƒd|ƒ}WqŠttfk
r„wYqŠXnwYnXyt 	||¡dSttfk
r¸YqXqWdS)a
        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
        rTN)
rÚKEY_READÚOpenKeyr^ÚHKEYSÚOSErrorÚIOErrorrSrFÚQueryValueEx)r@rÚnamer_ZopenkeyÚmsÚhkeyÚbkeyrrrÚlookup­s"

zRegistryInfo.lookupN)F)rr	r
rNrrrr
rrarArQrTrUrVrWrXrYrZr[r\r^rirrrrrRKs"
rRc@s$eZdZdZe dd¡Ze dd¡Ze de¡Zd3dd„Z	d	d
„Z
dd„Zed
d„ƒZ
edd„ƒZdd„Zdd„Zedd„ƒZedd„ƒZedd„ƒZedd„ƒZedd„ƒZedd „ƒZed!d"„ƒZed#d$„ƒZed%d&„ƒZed'd(„ƒZed)d*„ƒZed+d,„ƒZed-d.„ƒZd/d0„Zd4d1d2„ZdS)5Ú
SystemInfozê
    Microsoft Windows and Visual Studio related system inormations.

    Parameters
    ----------
    registry_info: RegistryInfo
        "RegistryInfo" instance.
    vc_ver: float
        Required Microsoft Visual C++ version.
    ÚWinDirrÚProgramFileszProgramFiles(x86)NcCs"||_|jj|_|p| ¡|_dS)N)ÚrirSÚ_find_latest_available_vc_verÚvc_ver)r@Z
registry_infororrrrAâs
zSystemInfo.__init__cCs6y| ¡dStk
r0d}tj |¡‚YnXdS)Nr5z%No Microsoft Visual C++ version found)Úfind_available_vc_versÚ
IndexErrorr!r"r#)r@Úerrrrrrnçs
z(SystemInfo._find_latest_available_vc_vercCs6|jj}|jj|jj|jjf}g}x|jjD]ü}xö|D]î}yt |||ƒdtj¡}Wnt	t
fk
rpw8YnXt |¡\}}}	xPt|ƒD]D}
y*t
t ||
¡dƒ}||kr¸| |¡WqŒtk
rÎYqŒXqŒWxPt|ƒD]D}
y(t
t ||
¡ƒ}||kr| |¡WqÞtk
r YqÞXqÞWq8Wq.Wt|ƒS)zC
        Find all available Microsoft Visual C++ versions.
        r)rmr^rVrXrWrarr`r_rbrcZQueryInfoKeyÚrangeÚfloatZ	EnumValueÚappendr$ÚEnumKeyÚsorted)r@rfZvckeysZvc_versrgrrhZsubkeysÚvaluesrBÚir(rrrrpîs2


z!SystemInfo.find_available_vc_verscCs6d|j}tj |j|¡}|j |jjd|j¡p4|S)z4
        Microsoft Visual Studio directory.
        zMicrosoft Visual Studio %0.1fz%0.1f)rorrrÚProgramFilesx86rmrirW)r@reÚdefaultrrrÚVSInstallDirs
zSystemInfo.VSInstallDircCsŽ|j| ¡p| ¡}tj |jjd|j¡}|j 	|d¡}|rNtj |d¡n|}|j 	|jj
d|j¡pl|}tj |¡sŠd}tj
 |¡‚|S)z1
        Microsoft Visual C++ directory.
        z%0.1frZVCz(Microsoft Visual C++ directory not found)r|Ú	_guess_vcÚ_guess_vc_legacyrrrrmrXrorirVÚisdirr!r"r#)r@Úguess_vcZreg_pathZ	python_vcZ
default_vcrÚmsgrrrÚVCInstallDirszSystemInfo.VCInstallDirc
Cs^|jdkrdSd}tj |j|¡}yt |¡d}tj ||¡Stttfk
rXYnXdS)z*
        Locate Visual C for 2017
        g,@Nz
VC\Tools\MSVCr5)	rorrrr|Úlistdirrbrcrq)r@r{r€Zvc_exact_verrrrr}/s
zSystemInfo._guess_vccCsd|j}tj |j|¡S)z<
        Locate Visual C for versions prior to 2017
        z Microsoft Visual Studio %0.1f\VC)rorrrrz)r@r{rrrr~?s
zSystemInfo._guess_vc_legacycCsJ|jdkrdS|jdkrdS|jdkr*dS|jdkr8dS|jd	krFd
SdS)zN
        Microsoft Windows SDK versions for specified MSVC++ version.
        g"@)z7.0z6.1z6.0ag$@)z7.1z7.0ag&@)z8.0z8.0ag(@)z8.1z8.1ag,@)z10.0z8.1N)ro)r@rrrÚWindowsSdkVersionFs




zSystemInfo.WindowsSdkVersioncCs| tj |jd¡¡S)z4
        Microsoft Windows SDK last version
        Úlib)Ú_use_last_dir_namerrrÚ
WindowsSdkDir)r@rrrÚWindowsSdkLastVersionVs
z SystemInfo.WindowsSdkLastVersioncCsDd}x8|jD].}tj |jjd|¡}|j |d¡}|rPqW|rNtj |¡s†tj |jjd|j	¡}|j |d¡}|r†tj |d¡}|r–tj |¡sàxH|jD]>}|d| 
d¡…}d	|}tj |j|¡}tj |¡rž|}qžW|ròtj |¡s*x6|jD],}d
|}tj |j|¡}tj |¡rú|}qúW|s@tj |jd¡}|S)z2
        Microsoft Windows SDK directory.
        rzv%sÚinstallationfolderz%0.1frZWinSDKNÚ.zMicrosoft SDKs\Windows Kits\%szMicrosoft SDKs\Windows\v%sZPlatformSDK)
r„rrrrmrZrirrXroÚrfindrlr‚)r@Úsdkdirr(ÚlocrÚinstall_baseZintverÚdrrrr‡^s6zSystemInfo.WindowsSdkDirc	CsÚ|jdkrd}d}n&d}|jdkr&dnd}|jjd|d}d	|| d
d¡f}g}|jdkr†x(|jD]}|tj |jj	||¡g7}qdWx,|j
D]"}|tj |jjd
||¡g7}qŽWx |D]}|j |d¡}|rºPqºW|S)z=
        Microsoft Windows SDK executable directory.
        g&@é#ré(g(@TF)r=rGzWinSDK-NetFx%dTools%srJú-g,@zv%sAr‰)
rorSrHr?ÚNetFxSdkVersionrrrrmr[r„rZri)	r@Znetfxverr)rGZfxZregpathsr(rZexecpathrrrÚWindowsSDKExecutablePath„s$

"
z#SystemInfo.WindowsSDKExecutablePathcCs.d|j}tj |jj|¡}|j |d¡p,dS)z0
        Microsoft Visual F# directory.
        z%0.1f\Setup\F#rr)rorrrrmrTri)r@rrrrÚFSharpInstallDir£s
zSystemInfo.FSharpInstallDircCsF|jdkrd}nd}x(|D] }|j |jjd|¡}|rPqW|pDdS)z8
        Microsoft Universal CRT SDK directory.
        g,@)Ú10Z81rz
kitsroot%sr)rormrir\)r@Úversr(rŒrrrÚUniversalCRTSdkDir¬s


zSystemInfo.UniversalCRTSdkDircCs| tj |jd¡¡S)z@
        Microsoft Universal C Runtime SDK last version
        r…)r†rrrr˜)r@rrrÚUniversalCRTSdkLastVersion¿s
z%SystemInfo.UniversalCRTSdkLastVersioncCs|jdkrdSdSdS)z8
        Microsoft .NET Framework SDK versions.
        g,@)z4.6.1z4.6rN)ro)r@rrrr“Çs
zSystemInfo.NetFxSdkVersioncCs>x4|jD]*}tj |jj|¡}|j |d¡}|rPqW|p<dS)z9
        Microsoft .NET Framework SDK directory.
        Zkitsinstallationfolderr)r“rrrrmr[ri)r@r(rrŒrrrÚNetFxSdkDirÒszSystemInfo.NetFxSdkDircCs&tj |jd¡}|j |jjd¡p$|S)z;
        Microsoft .NET Framework 32bit directory.
        zMicrosoft.NET\FrameworkZframeworkdir32)rrrrkrmrirV)r@Úguess_fwrrrÚFrameworkDir32ÞszSystemInfo.FrameworkDir32cCs&tj |jd¡}|j |jjd¡p$|S)z;
        Microsoft .NET Framework 64bit directory.
        zMicrosoft.NET\Framework64Zframeworkdir64)rrrrkrmrirV)r@r›rrrÚFrameworkDir64észSystemInfo.FrameworkDir64cCs
| d¡S)z:
        Microsoft .NET Framework 32bit versions.
        é )Ú_find_dot_net_versions)r@rrrÚFrameworkVersion32ôszSystemInfo.FrameworkVersion32cCs
| d¡S)z:
        Microsoft .NET Framework 64bit versions.
        é@)rŸ)r@rrrÚFrameworkVersion64ûszSystemInfo.FrameworkVersion64cCs˜|j |jjd|¡}t|d|ƒ}|p6| |d¡p6d}|jdkrL|df}n:|jdkrx| ¡dd	…d
krndn|df}n|jd
kr†d}|jdkr”d}|S)z¡
        Find Microsoft .NET Framework versions.

        Parameters
        ----------
        bits: int
            Platform number of bits: 32 or 64.
        zframeworkver%dzFrameworkDir%dÚvrg(@zv4.0g$@NéZv4z
v4.0.30319zv3.5g"@)zv3.5z
v2.0.50727g @)zv3.0z
v2.0.50727)rmrirVÚgetattrr†ror6)r@ÚbitsZreg_verZdot_net_dirr(ZframeworkverrrrrŸs





z!SystemInfo._find_dot_net_versionscs,‡‡fdd„tt ˆ¡ƒDƒ}t|dƒp*dS)zî
        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
        c3s2|]*}tj tj ˆ|¡¡r| ˆ¡r|VqdS)N)rrrrÚ
startswith)Ú.0Zdir_name)rÚprefixrrú	<genexpr>(sz0SystemInfo._use_last_dir_name.<locals>.<genexpr>Nr)ÚreversedrrƒÚnext)r@rr©Z
matching_dirsr)rr©rr†szSystemInfo._use_last_dir_name)N)r) rr	r
rNrOrPrkrlrzrArnrprQr|r‚r}r~r„rˆr‡r”r•r˜r™r“ršrœrr r¢rŸr†rrrrrjÐs4

&	rjc@sReZdZdZd=dd„Zedd„ƒZedd	„ƒZed
d„ƒZedd
„ƒZ	edd„ƒZ
edd„ƒZedd„ƒZedd„ƒZ
edd„ƒZedd„ƒZdd„Zedd„ƒZedd„ƒZed d!„ƒZed"d#„ƒZed$d%„ƒZed&d'„ƒZed(d)„ƒZed*d+„ƒZed,d-„ƒZed.d/„ƒZed0d1„ƒZed2d3„ƒZed4d5„ƒZd>d7d8„Zd9d:„Zd?d;d<„Z dS)@r%aY
    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.
    NrcCsBt|ƒ|_t|jƒ|_t|j|ƒ|_|j|kr>d}tj 	|¡‚dS)Nz.No suitable Microsoft Visual C++ version found)
r<rSrRrmrjÚsiror!r"r#)r@r)ror.rrrrrrAHs

zEnvironmentInfo.__init__cCs|jjS)z/
        Microsoft Visual C++ version.
        )r­ro)r@rrrroQszEnvironmentInfo.vc_vercsVddg}ˆjdkrDˆjjddd}|dg7}|dg7}|d|g7}‡fd	d
„|DƒS)z/
        Microsoft Visual Studio Tools
        zCommon7\IDEz
Common7\Toolsg,@T)rGr=z1Common7\IDE\CommonExtensions\Microsoft\TestWindowzTeam Tools\Performance ToolszTeam Tools\Performance Tools%scsg|]}tj ˆjj|¡‘qSr)rrrr­r|)r¨r)r@rrú
<listcomp>esz+EnvironmentInfo.VSTools.<locals>.<listcomp>)rorSrH)r@ÚpathsÚarch_subdirr)r@rÚVSToolsXs


zEnvironmentInfo.VSToolscCs$tj |jjd¡tj |jjd¡gS)zL
        Microsoft Visual C++ & Microsoft Foundation Class Includes
        ÚIncludezATLMFC\Include)rrrr­r‚)r@rrrÚ
VCIncludesgszEnvironmentInfo.VCIncludescsbˆjdkrˆjjdd}nˆjjdd}d|d|g}ˆjdkrP|d|g7}‡fd	d
„|DƒS)zM
        Microsoft Visual C++ & Microsoft Foundation Class Libraries
        g.@T)r=)rGzLib%szATLMFC\Lib%sg,@zLib\store%scsg|]}tj ˆjj|¡‘qSr)rrrr­r‚)r¨r)r@rrr®}sz/EnvironmentInfo.VCLibraries.<locals>.<listcomp>)rorSrI)r@r°r¯r)r@rÚVCLibrariesos

zEnvironmentInfo.VCLibrariescCs"|jdkrgStj |jjd¡gS)zA
        Microsoft Visual C++ store references Libraries
        g,@zLib\store\references)rorrrr­r‚)r@rrrÚVCStoreRefss
zEnvironmentInfo.VCStoreRefscCs|j}tj |jd¡g}|jdkr&dnd}|j |¡}|rT|tj |jd|¡g7}|jdkrˆd|jjdd}|tj |j|¡g7}nŒ|jdkrþ|j 	¡r d	nd
}|tj |j||jj
dd¡g7}|jj|jjkrü|tj |j||jjdd¡g7}n|tj |jd¡g7}|S)
z,
        Microsoft Visual C++ Tools
        Z
VCPackagesg$@TFzBin%sg,@)rGg.@z
bin\HostX86%sz
bin\HostX64%s)r=ÚBin)
r­rrrr‚rorSrMrHrFrIrErC)r@r­ÚtoolsrKr°rZhost_dirrrrÚVCToolsˆs&

zEnvironmentInfo.VCToolscCst|jdkr2|jjddd}tj |jjd|¡gS|jjdd}tj |jjd¡}|j}tj |d||f¡gSdS)	z1
        Microsoft Windows SDK Libraries
        g$@T)rGr=zLib%s)r=r…z%sum%sN)	rorSrIrrrr­r‡Ú_sdk_subdir)r@r°r…ZlibverrrrÚOSLibraries¨s
zEnvironmentInfo.OSLibrariescCs|tj |jjd¡}|jdkr.|tj |d¡gS|jdkr@|j}nd}tj |d|¡tj |d|¡tj |d|¡gSd	S)
z/
        Microsoft Windows SDK Include
        Úincludeg$@Úglg,@rz%ssharedz%sumz%swinrtN)rrrr­r‡ror¹)r@r»ÚsdkverrrrÚ
OSIncludes·s

zEnvironmentInfo.OSIncludescCsºtj |jjd¡}g}|jdkr*||j7}|jdkrH|tj |d¡g7}|jdkr¶||tj |jjd¡tj |dd¡tj |d	d¡tj |d
d¡tj |jjddd
|jddd¡g7}|S)z7
        Microsoft Windows SDK Libraries Paths
        Z
Referencesg"@g&@zCommonConfiguration\Neutralg,@Z
UnionMetadataz'Windows.Foundation.UniversalApiContractz1.0.0.0z%Windows.Foundation.FoundationContractz,Windows.Networking.Connectivity.WwanContractZ
ExtensionSDKszMicrosoft.VCLibsz%0.1fZCommonConfigurationZneutral)rrrr­r‡rorº)r@ÚrefÚlibpathrrrÚ	OSLibpathÊs>




zEnvironmentInfo.OSLibpathcCst| ¡ƒS)z-
        Microsoft Windows SDK Tools
        )ÚlistÚ
_sdk_tools)r@rrrÚSdkTools÷szEnvironmentInfo.SdkToolsccs|jdkr0|jdkrdnd}tj |jj|¡V|j ¡sd|jjdd}d|}tj |jj|¡V|jdksx|jdkr¶|j 	¡rˆd	}n|jjddd
}d|}tj |jj|¡VnL|jdkrtj |jjd¡}|jjdd}|jj
}tj |d||f¡V|jjr|jjVd
S)z=
        Microsoft Windows SDK Tools paths generator
        g.@g&@r¶zBin\x86T)r=zBin%sg$@r)rGr=zBin\NETFX 4.0 Tools%sz%s%sN)rorrrr­r‡rSrFrHrDrˆr”)r@Úbin_dirr°rr½rrrrÃþs(



zEnvironmentInfo._sdk_toolscCs|jj}|rd|SdS)z6
        Microsoft Windows SDK version subdir
        z%s\r)r­rˆ)r@Úucrtverrrrr¹szEnvironmentInfo._sdk_subdircCs"|jdkrgStj |jjd¡gS)z-
        Microsoft Windows SDK Setup
        g"@ZSetup)rorrrr­r‡)r@rrrÚSdkSetup$s
zEnvironmentInfo.SdkSetupcs”|j}|j‰|jdkr0d}| ¡o,| ¡}n$| ¡p>| ¡}|jdkpR|jdk}g}|rt|‡fdd„ˆjDƒ7}|r|‡fdd„ˆjDƒ7}|S)z0
        Microsoft .NET Framework Tools
        g$@Tr>csg|]}tj ˆj|¡‘qSr)rrrrœ)r¨r()r­rrr®?sz+EnvironmentInfo.FxTools.<locals>.<listcomp>csg|]}tj ˆj|¡‘qSr)rrrr)r¨r()r­rrr®Bs)	rSr­rorDrFrErCr r¢)r@rSZ	include32Z	include64r·r)r­rÚFxTools.s
zEnvironmentInfo.FxToolscCs<|jdks|jjsgS|jjdd}tj |jjd|¡gS)z8
        Microsoft .Net Framework SDK Libraries
        g,@T)r=zlib\um%s)ror­ršrSrIrrr)r@r°rrrÚNetFxSDKLibrariesFsz!EnvironmentInfo.NetFxSDKLibrariescCs*|jdks|jjsgStj |jjd¡gS)z7
        Microsoft .Net Framework SDK Includes
        g,@z
include\um)ror­ršrrr)r@rrrÚNetFxSDKIncludesQsz EnvironmentInfo.NetFxSDKIncludescCstj |jjd¡gS)z>
        Microsoft Visual Studio Team System Database
        z
VSTSDB\Deploy)rrrr­r|)r@rrrÚVsTDb[szEnvironmentInfo.VsTDbcCs~|jdkrgS|jdkr0|jj}|jjdd}n|jj}d}d|j|f}tj ||¡g}|jdkrz|tj ||d¡g7}|S)z(
        Microsoft Build Engine
        g(@g.@T)rGrzMSBuild\%0.1f\bin%sZRoslyn)	ror­rzrSrHr|rrr)r@Ú	base_pathr°rÚbuildrrrÚMSBuildbs


zEnvironmentInfo.MSBuildcCs"|jdkrgStj |jjd¡gS)z.
        Microsoft HTML Help Workshop
        g&@zHTML Help Workshop)rorrrr­rz)r@rrrÚHTMLHelpWorkshopys
z EnvironmentInfo.HTMLHelpWorkshopcCsL|jdkrgS|jjdd}tj |jjd¡}|j}tj |d||f¡gS)z=
        Microsoft Universal C Runtime SDK Libraries
        g,@T)r=r…z%sucrt%s)	rorSrIrrrr­r˜Ú_ucrt_subdir)r@r°r…rÆrrrÚ
UCRTLibrariesƒs
zEnvironmentInfo.UCRTLibrariescCs6|jdkrgStj |jjd¡}tj |d|j¡gS)z;
        Microsoft Universal C Runtime SDK Include
        g,@r»z%sucrt)rorrrr­r˜rÐ)r@r»rrrÚUCRTIncludess
zEnvironmentInfo.UCRTIncludescCs|jj}|rd|SdS)zB
        Microsoft Universal C Runtime SDK version subdir
        z%s\r)r­r™)r@rÆrrrrЛszEnvironmentInfo._ucrt_subdircCs |jdkr|jdkrgS|jjS)z%
        Microsoft Visual F#
        g&@g(@)ror­r•)r@rrrÚFSharp£szEnvironmentInfo.FSharpcCsl|jjdd}|jdkr&|jj}d}n|jj dd¡}d}|jdkrHdn|j}|||j|f}tj ||¡S)	zA
        Microsoft Visual C++ runtime redistribuable dll
        T)r=éz-redist%s\Microsoft.VC%d0.CRT\vcruntime%d0.dllz\Toolsz\Redistz.onecore%s\Microsoft.VC%d0.CRT\vcruntime%d0.dllg,@)	rSrIror­r‚r?rrr)r@r°Zredist_pathZ	vcruntimeZdll_verrrrÚVCRuntimeRedist­s
zEnvironmentInfo.VCRuntimeRedistTcCs¶t| d|j|j|j|jg|¡| d|j|j|j|j	|j
g|¡| d|j|j|j|jg|¡| d|j
|j|j|j|j|j|j|j|jg	|¡d}|jdkr²tj |j¡r²|j|d<|S)z—
        Return environment dict.

        Parameters
        ----------
        exists: bool
            It True, only return existing paths.
        r»r…rÀr)r»r…rÀréZpy_vcruntime_redist)ÚdictÚ_build_pathsr³r¾rÒrÊr´rºrÈrÑrÉrµrÁr¸r±rËrÄrÇrÎrÏrÓrorrrrÕ)r@ÚexistsÚenvrrrr&ÀsD	

zEnvironmentInfo.return_envc
Csxtj |¡}t |d¡ tj¡}t ||¡}|rBtt	tj
j|ƒƒn|}|sbd| ¡}t
j |¡‚| |¡}	tj |	¡S)a
        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.
        rz %s environment variable is empty)Ú	itertoolsÚchainÚ
from_iterablerOrPÚsplitrÚpathseprÂÚfilterrrÚupperr!r"r#Ú_unique_everseenr)
r@reZspec_path_listsrÙZ
spec_pathsZ	env_pathsr¯Zextant_pathsrZunique_pathsrrrrØís	
zEnvironmentInfo._build_pathsccsjtƒ}|j}|dkr:xPt|j|ƒD]}||ƒ|Vq"Wn,x*|D]"}||ƒ}||kr@||ƒ|Vq@WdS)z×
        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)ÚsetÚaddrÚ__contains__)r@ÚiterablerÚseenZseen_addÚelementÚkrrrrâs	
z EnvironmentInfo._unique_everseen)Nr)T)N)!rr	r
rNrArQror±r³r´rµr¸rºr¾rÁrÄrÃr¹rÇrÈrÉrÊrËrÎrÏrÑrÒrÐrÓrÕr&rØrârrrrr%0s:
		 -





-r%)r)r)!rNrr0ÚplatformrÛZdistutils.errorsr!Z#setuptools.extern.packaging.versionrZsetuptools.extern.six.movesrZmonkeyrÚsystemrÚenvironrOr×ÚImportErrorr"r#Z_msvc9_suppress_errorsZdistutils.msvc9compilerrrr r/r3r'r<rRrjr%rrrrÚ<module>s>
+
/&
$[b