YfO @ 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 m Z m Z m Z d d l m Z m Z d d l m Z d d l m Z d d l Z d d l m Z d d Z d d Z d d d Z d d d d i Z d d d d d d i Z e d g Z Gd d d e Z d S)a distutils._msvccompiler Contains MSVCCompiler, an implementation of the abstract CCompiler class for Microsoft Visual Studio 2015. The module is compatible with VS 2015 and later. You can find legacy support for older versions in distutils.msvc9compiler and distutils.msvccompiler. N)DistutilsExecErrorDistutilsPlatformErrorCompileErrorLibError LinkError) CCompilergen_lib_options)log)get_platform)countc $ C s y) t j t j d d t j t j B} Wn# t k rN t j d d SYn X| d } d } x t D] } y t j | | \ } } } Wn t k r PYn X| rl | t j k rl t j j | rl y t t | } Wn t t f k rwl Yn X| d k rl | | k rl | | } } ql W| sBt j d d St j j | d } t j j | s}t j d | d Sd } t j | } | rt j j | | j | } t j j | st j d | d } | | f SWd QRXd S)Nz'Software\Microsoft\VisualStudio\SxS\VC7accesszVisual C++ is not registeredr z$No suitable Visual C++ version foundz vcvarsall.batz%s cannot be found)NN)NN)NN)winregZ OpenKeyExHKEY_LOCAL_MACHINEZKEY_READZKEY_WOW64_32KEYOSErrorr debugr Z EnumValueZREG_SZospathisdirintfloat ValueError TypeErrorjoinisfile _VCVARS_PLAT_TO_VCRUNTIME_REDISTgetformat) plat_speckeyZbest_versionZbest_dirivZvc_dirZvtversion vcvarsall vcruntimeZvcruntime_spec r%