From 31e32d0964fcff54c1b87944370ea669581795a2 Mon Sep 17 00:00:00 2001 From: Joost van Griethuysen Date: Tue, 28 Jan 2025 12:56:19 +0000 Subject: [PATCH] BUG: Remove deprecated `load_module` In importlib's `SourceFileLoader`, the `load_module` function has been deprecated since python 3.6 and scheduled to be removed. Following the suggestions from https://stackoverflow.com/questions/19009932/import-arbitrary-python-source-file-python-3-3, replace this function with the `exec_module` function. --- pykwalify/core.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pykwalify/core.py b/pykwalify/core.py index 140389c..8a14fe4 100644 --- a/pykwalify/core.py +++ b/pykwalify/core.py @@ -13,6 +13,7 @@ import time from io import open from importlib.machinery import SourceFileLoader +import importlib.util # pyKwalify imports import pykwalify @@ -170,7 +171,11 @@ def _load_extensions(self): if not os.path.exists(f): raise CoreError(u"Extension file: {0} not found on disk".format(f)) - self.loaded_extensions.append(SourceFileLoader("", f).load_module()) + loader = SourceFileLoader("", f) + spec = importlib.util.spec_from_loader(loader.name, loader) + mod = importlib.util.module_from_spec(spec) + loader.exec_module(mod) + self.loaded_extensions.append(mod) log.debug(self.loaded_extensions) log.debug([dir(m) for m in self.loaded_extensions])