From 474847081a11b0f643df5950f4763ac29a1524b0 Mon Sep 17 00:00:00 2001 From: Ned Batchelder Date: Sat, 9 Jan 2021 08:27:11 -0500 Subject: Use the modern way to load modules by file name. Python 3.10 finally got super-noisy about load_module, which has been deprecated since 3.4! https://docs.python.org/3/library/importlib.html#importlib.abc.Loader.load_module --- coverage/backward.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'coverage/backward.py') diff --git a/coverage/backward.py b/coverage/backward.py index 9d1d78e5..8af3452b 100644 --- a/coverage/backward.py +++ b/coverage/backward.py @@ -245,15 +245,17 @@ def import_local_file(modname, modfile=None): """ try: - from importlib.machinery import SourceFileLoader + import importlib.util as importlib_util except ImportError: - SourceFileLoader = None + importlib_util = None if modfile is None: modfile = modname + '.py' - if SourceFileLoader: - # pylint: disable=no-value-for-parameter, deprecated-method - mod = SourceFileLoader(modname, modfile).load_module() + if importlib_util: + spec = importlib_util.spec_from_file_location(modname, modfile) + mod = importlib_util.module_from_spec(spec) + sys.modules[modname] = mod + spec.loader.exec_module(mod) else: for suff in imp.get_suffixes(): # pragma: part covered if suff[0] == '.py': -- cgit v1.2.1