Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 4 additions & 7 deletions Lib/platform.py
Original file line number Diff line number Diff line change
Expand Up @@ -114,10 +114,7 @@
import functools
import itertools
lazy import warnings
try:
import _wmi
except ImportError:
_wmi = None
lazy import _wmi

### Globals & Constants

Expand Down Expand Up @@ -331,8 +328,9 @@ def _syscmd_ver(system='', release='', version='',


def _wmi_query(table, *keys):
global _wmi
if not _wmi:
try:
_wmi # Force the deferred import.
except ImportError:
raise OSError("not supported")
table = {
"OS": "Win32_OperatingSystem",
Expand All @@ -344,7 +342,6 @@ def _wmi_query(table, *keys):
table,
)).split("\0")
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}
Expand Down
6 changes: 5 additions & 1 deletion Lib/test/test_platform.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
from unittest import mock

from test import support
from test.support import os_helper, warnings_helper
from test.support import import_helper, os_helper, warnings_helper

try:
# Some of the iOS tests need ctypes to operate.
Expand Down Expand Up @@ -436,6 +436,10 @@ def test_win32_ver_on_non_windows(self):
res = platform.win32_ver(release, version, csd, ptype)
self.assertSequenceEqual(res, (release, version, csd, ptype), seq_type=tuple)

@support.cpython_only
def test_wmi_is_lazily_imported(self):
Comment thread
sobolevn marked this conversation as resolved.
Resolved
import_helper.ensure_lazy_imports('platform', {'_wmi'})

def test_mac_ver(self):
res = platform.mac_ver()

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
:mod:`platform` is now about 30% faster to import on Windows.
Loading