summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSviatoslav Sydorenko <wk@sydorenko.org.ua>2020-12-31 18:03:15 +0100
committerSviatoslav Sydorenko <wk@sydorenko.org.ua>2020-12-31 18:38:49 +0100
commit699afd09f252025ff412c3be101d78576ce0fe60 (patch)
treef496fe2789393f3185630119c039bc16d5d08b60
parent9c88e35e0e54712f8ac361faffe5bc9cd370ad8d (diff)
downloadpython-setuptools-git-699afd09f252025ff412c3be101d78576ce0fe60.tar.gz
Simplify `msvc.SystemInfo.find_reg_vs_vers`
-rw-r--r--setuptools/msvc.py40
1 files changed, 18 insertions, 22 deletions
diff --git a/setuptools/msvc.py b/setuptools/msvc.py
index 1ead72b4..53d45e59 100644
--- a/setuptools/msvc.py
+++ b/setuptools/msvc.py
@@ -24,6 +24,7 @@ from io import open
from os import listdir, pathsep
from os.path import join, isfile, isdir, dirname
import sys
+import contextlib
import platform
import itertools
import subprocess
@@ -724,28 +725,23 @@ class SystemInfo:
ms = self.ri.microsoft
vckeys = (self.ri.vc, self.ri.vc_for_python, self.ri.vs)
vs_vers = []
- for hkey in self.ri.HKEYS:
- for key in vckeys:
- try:
- bkey = winreg.OpenKey(hkey, ms(key), 0, winreg.KEY_READ)
- except (OSError, IOError):
- continue
- with bkey:
- subkeys, values, _ = winreg.QueryInfoKey(bkey)
- for i in range(values):
- try:
- ver = float(winreg.EnumValue(bkey, i)[0])
- if ver not in vs_vers:
- vs_vers.append(ver)
- except ValueError:
- pass
- for i in range(subkeys):
- try:
- ver = float(winreg.EnumKey(bkey, i))
- if ver not in vs_vers:
- vs_vers.append(ver)
- except ValueError:
- pass
+ for hkey, key in itertools.product(self.ri.HKEYS, vckeys):
+ try:
+ bkey = winreg.OpenKey(hkey, ms(key), 0, winreg.KEY_READ)
+ except (OSError, IOError):
+ continue
+ with bkey:
+ subkeys, values, _ = winreg.QueryInfoKey(bkey)
+ for i in range(values):
+ with contextlib.suppress(ValueError):
+ ver = float(winreg.EnumValue(bkey, i)[0])
+ if ver not in vs_vers:
+ vs_vers.append(ver)
+ for i in range(subkeys):
+ with contextlib.suppress(ValueError):
+ ver = float(winreg.EnumKey(bkey, i))
+ if ver not in vs_vers:
+ vs_vers.append(ver)
return sorted(vs_vers)
def find_programdata_vs_vers(self):