From 55dc538398090e437c5e495dddad983a7870d09b Mon Sep 17 00:00:00 2001 From: Adam Tauber Date: Sat, 19 Nov 2016 17:51:19 +0100 Subject: [PATCH] [mod] move load_module function to utils --- searx/engines/__init__.py | 17 ++++------------- searx/utils.py | 13 +++++++++++++ 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/searx/engines/__init__.py b/searx/engines/__init__.py index 14376c31f..116eadc97 100644 --- a/searx/engines/__init__.py +++ b/searx/engines/__init__.py @@ -16,13 +16,13 @@ along with searx. If not, see < http://www.gnu.org/licenses/ >. (C) 2013- by Adam Tauber, ''' -from os.path import realpath, dirname, splitext, join +from os.path import realpath, dirname import sys -from imp import load_source from flask_babel import gettext from operator import itemgetter from searx import settings from searx import logger +from searx.utils import load_module logger = logger.getChild('engines') @@ -32,6 +32,7 @@ engine_dir = dirname(realpath(__file__)) engines = {} categories = {'general': []} +_initialized = False engine_shortcuts = {} engine_default_args = {'paging': False, @@ -46,16 +47,6 @@ engine_default_args = {'paging': False, 'time_range_support': False} -def load_module(filename): - modname = splitext(filename)[0] - if modname in sys.modules: - del sys.modules[modname] - filepath = join(engine_dir, filename) - module = load_source(modname, filepath) - module.name = modname - return module - - def load_engine(engine_data): if '_' in engine_data['name']: @@ -65,7 +56,7 @@ def load_engine(engine_data): engine_module = engine_data['engine'] try: - engine = load_module(engine_module + '.py') + engine = load_module(engine_module + '.py', engine_dir) except: logger.exception('Cannot load engine "{}"'.format(engine_module)) return None diff --git a/searx/utils.py b/searx/utils.py index 5039fa975..faa634853 100644 --- a/searx/utils.py +++ b/searx/utils.py @@ -6,7 +6,10 @@ import re from babel.dates import format_date from codecs import getincrementalencoder from HTMLParser import HTMLParser +from imp import load_source +from os.path import splitext, join from random import choice +import sys from searx.version import VERSION_STRING from searx.languages import language_codes @@ -285,3 +288,13 @@ def is_valid_lang(lang): if l[1].lower() == lang.lower(): return (True, l[0][:2], l[1].lower()) return False + + +def load_module(filename, module_dir): + modname = splitext(filename)[0] + if modname in sys.modules: + del sys.modules[modname] + filepath = join(module_dir, filename) + module = load_source(modname, filepath) + module.name = modname + return module