Commit 699afd09 authored by Sviatoslav Sydorenko's avatar Sviatoslav Sydorenko

Simplify `msvc.SystemInfo.find_reg_vs_vers`

parent 9c88e35e
...@@ -24,6 +24,7 @@ from io import open ...@@ -24,6 +24,7 @@ from io import open
from os import listdir, pathsep from os import listdir, pathsep
from os.path import join, isfile, isdir, dirname from os.path import join, isfile, isdir, dirname
import sys import sys
import contextlib
import platform import platform
import itertools import itertools
import subprocess import subprocess
...@@ -724,28 +725,23 @@ class SystemInfo: ...@@ -724,28 +725,23 @@ class SystemInfo:
ms = self.ri.microsoft ms = self.ri.microsoft
vckeys = (self.ri.vc, self.ri.vc_for_python, self.ri.vs) vckeys = (self.ri.vc, self.ri.vc_for_python, self.ri.vs)
vs_vers = [] vs_vers = []
for hkey in self.ri.HKEYS: for hkey, key in itertools.product(self.ri.HKEYS, vckeys):
for key in vckeys: try:
try: bkey = winreg.OpenKey(hkey, ms(key), 0, winreg.KEY_READ)
bkey = winreg.OpenKey(hkey, ms(key), 0, winreg.KEY_READ) except (OSError, IOError):
except (OSError, IOError): continue
continue with bkey:
with bkey: subkeys, values, _ = winreg.QueryInfoKey(bkey)
subkeys, values, _ = winreg.QueryInfoKey(bkey) for i in range(values):
for i in range(values): with contextlib.suppress(ValueError):
try: ver = float(winreg.EnumValue(bkey, i)[0])
ver = float(winreg.EnumValue(bkey, i)[0]) if ver not in vs_vers:
if ver not in vs_vers: vs_vers.append(ver)
vs_vers.append(ver) for i in range(subkeys):
except ValueError: with contextlib.suppress(ValueError):
pass ver = float(winreg.EnumKey(bkey, i))
for i in range(subkeys): if ver not in vs_vers:
try: vs_vers.append(ver)
ver = float(winreg.EnumKey(bkey, i))
if ver not in vs_vers:
vs_vers.append(ver)
except ValueError:
pass
return sorted(vs_vers) return sorted(vs_vers)
def find_programdata_vs_vers(self): def find_programdata_vs_vers(self):
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment