diff options
| author | Sviatoslav Sydorenko <wk@sydorenko.org.ua> | 2020-12-31 18:03:15 +0100 |
|---|---|---|
| committer | Sviatoslav Sydorenko <wk@sydorenko.org.ua> | 2020-12-31 18:38:49 +0100 |
| commit | 699afd09f252025ff412c3be101d78576ce0fe60 (patch) | |
| tree | f496fe2789393f3185630119c039bc16d5d08b60 | |
| parent | 9c88e35e0e54712f8ac361faffe5bc9cd370ad8d (diff) | |
| download | python-setuptools-git-699afd09f252025ff412c3be101d78576ce0fe60.tar.gz | |
Simplify `msvc.SystemInfo.find_reg_vs_vers`
| -rw-r--r-- | setuptools/msvc.py | 40 |
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): |
