Skip to content

Commit a5a263c

Browse files
committed
SERVER-110068: Modernize dynamic module loading to work with Python3.12
1 parent 38e3f37 commit a5a263c

File tree

1 file changed

+9
-11
lines changed

1 file changed

+9
-11
lines changed

buildscripts/moduleconfig.py

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
__all__ = ('discover_modules', 'discover_module_directories', 'configure_modules',
2828
'register_module_test') # pylint: disable=undefined-all-variable
2929

30-
import imp
30+
import importlib
3131
import inspect
3232
import os
3333

@@ -68,16 +68,14 @@ def discover_modules(module_root, allowed_modules):
6868

6969
try:
7070
print("adding module: %s" % (name))
71-
fp = open(build_py, "r")
72-
try:
73-
module = imp.load_module("module_" + name, fp, build_py,
74-
(".py", "r", imp.PY_SOURCE))
75-
if getattr(module, "name", None) is None:
76-
module.name = name
77-
found_modules.append(module)
78-
found_module_names.append(name)
79-
finally:
80-
fp.close()
71+
spec = importlib.util.spec_from_file_location("module_" + name, build_py)
72+
module = importlib.util.module_from_spec(spec)
73+
spec.loader.exec_module(module)
74+
75+
if getattr(module, "name", None) is None:
76+
module.name = name
77+
found_modules.append(module)
78+
found_module_names.append(name)
8179
except (FileNotFoundError, IOError):
8280
pass
8381

0 commit comments

Comments
 (0)