From 7b8360dd98f130f199eee02653c7da9f69082942 Mon Sep 17 00:00:00 2001 From: Aurélien Bompard Date: May 23 2022 15:08:17 +0000 Subject: Don't use the deprecated imp module Signed-off-by: Aurélien Bompard --- diff --git a/ipsilon/util/plugin.py b/ipsilon/util/plugin.py index fc24a34..bd84c48 100644 --- a/ipsilon/util/plugin.py +++ b/ipsilon/util/plugin.py @@ -1,14 +1,26 @@ # Copyright (C) 2013 Ipsilon project Contributors, for license see COPYING import os -import imp -import cherrypy +import importlib +import sys import inspect import logging + +import cherrypy + from ipsilon.util.data import AdminStore, Store from ipsilon.util.log import Log +def load_source(module_name, file_path): + # https://docs.python.org/3/library/importlib.html#importing-a-source-file-directly + spec = importlib.util.spec_from_file_location(module_name, file_path) + module = importlib.util.module_from_spec(spec) + sys.modules[module_name] = module + spec.loader.exec_module(module) + return module + + class Plugins(object): def __init__(self): @@ -20,9 +32,7 @@ class Plugins(object): name, ext = os.path.splitext(os.path.split(file_name)[-1]) try: if ext.lower() == '.py': - mod = imp.load_source(name, file_name) - # elif ext.lower() == '.pyc': - # mod = imp.load_compiled(name, file_name) + mod = load_source(name, file_name) else: return except Exception as e: # pylint: disable=broad-except