aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Lib/platform.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/platform.py')
-rwxr-xr-xLib/platform.py32
1 files changed, 19 insertions, 13 deletions
diff --git a/Lib/platform.py b/Lib/platform.py
index 7bb222088d5..75aa5551085 100755
--- a/Lib/platform.py
+++ b/Lib/platform.py
@@ -118,6 +118,10 @@ import re
import sys
import functools
import itertools
+try:
+ import _wmi
+except ImportError:
+ _wmi = None
### Globals & Constants
@@ -312,24 +316,26 @@ def _syscmd_ver(system='', release='', version='',
version = _norm_version(version)
return system, release, version
-try:
- import _wmi
-except ImportError:
- def _wmi_query(*keys):
+
+def _wmi_query(table, *keys):
+ global _wmi
+ if not _wmi:
raise OSError("not supported")
-else:
- def _wmi_query(table, *keys):
- table = {
- "OS": "Win32_OperatingSystem",
- "CPU": "Win32_Processor",
- }[table]
+ table = {
+ "OS": "Win32_OperatingSystem",
+ "CPU": "Win32_Processor",
+ }[table]
+ try:
data = _wmi.exec_query("SELECT {} FROM {}".format(
",".join(keys),
table,
)).split("\0")
- split_data = (i.partition("=") for i in data)
- dict_data = {i[0]: i[2] for i in split_data}
- return (dict_data[k] for k in keys)
+ except OSError:
+ _wmi = None
+ raise OSError("not supported")
+ split_data = (i.partition("=") for i in data)
+ dict_data = {i[0]: i[2] for i in split_data}
+ return (dict_data[k] for k in keys)
_WIN32_CLIENT_RELEASES = [