on master help sign in
[mod] move load_module function to utils
55dc538Adam Tauber
searx/engines/__init__.py+4−13
@@ -16,13 +16,13 @@ along with searx. If not, see < http://www.gnu.org/licenses/ >.
16(C) 2013- by Adam Tauber, <asciimoo@gmail.com>
16(C) 2013- by Adam Tauber, <asciimoo@gmail.com>
17'''
17'''
18
18
19−from os.path import realpath, dirname, splitext, join
19+from os.path import realpath, dirname
20import sys
20import sys
21−from imp import load_source
22from flask_babel import gettext
21from flask_babel import gettext
23from operator import itemgetter
22from operator import itemgetter
24from searx import settings
23from searx import settings
25from searx import logger
24from searx import logger
25+from searx.utils import load_module
26
26
27
27
28logger = logger.getChild('engines')
28logger = logger.getChild('engines')
@@ -32,6 +32,7 @@ engine_dir = dirname(realpath(__file__))
32engines = {}
32engines = {}
33
33
34categories = {'general': []}
34categories = {'general': []}
35+_initialized = False
35
36
36engine_shortcuts = {}
37engine_shortcuts = {}
37engine_default_args = {'paging': False,
38engine_default_args = {'paging': False,
@@ -46,16 +47,6 @@ engine_default_args = {'paging': False,
46 'time_range_support': False}
47 'time_range_support': False}
47
48
48
49
49−def load_module(filename):
50− modname = splitext(filename)[0]
51− if modname in sys.modules:
52− del sys.modules[modname]
53− filepath = join(engine_dir, filename)
54− module = load_source(modname, filepath)
55− module.name = modname
56− return module
57−
58−
59def load_engine(engine_data):
50def load_engine(engine_data):
60
51
61 if '_' in engine_data['name']:
52 if '_' in engine_data['name']:
@@ -65,7 +56,7 @@ def load_engine(engine_data):
65 engine_module = engine_data['engine']
56 engine_module = engine_data['engine']
66
57
67 try:
58 try:
68− engine = load_module(engine_module + '.py')
59+ engine = load_module(engine_module + '.py', engine_dir)
69 except:
60 except:
70 logger.exception('Cannot load engine "{}"'.format(engine_module))
61 logger.exception('Cannot load engine "{}"'.format(engine_module))
71 return None
62 return None
searx/utils.py+13
@@ -6,7 +6,10 @@ import re
6from babel.dates import format_date
6from babel.dates import format_date
7from codecs import getincrementalencoder
7from codecs import getincrementalencoder
8from HTMLParser import HTMLParser
8from HTMLParser import HTMLParser
9+from imp import load_source
10+from os.path import splitext, join
9from random import choice
11from random import choice
12+import sys
10
13
11from searx.version import VERSION_STRING
14from searx.version import VERSION_STRING
12from searx.languages import language_codes
15from searx.languages import language_codes
@@ -285,3 +288,13 @@ def is_valid_lang(lang):
285 if l[1].lower() == lang.lower():
288 if l[1].lower() == lang.lower():
286 return (True, l[0][:2], l[1].lower())
289 return (True, l[0][:2], l[1].lower())
287 return False
290 return False
291+
292+
293+def load_module(filename, module_dir):
294+ modname = splitext(filename)[0]
295+ if modname in sys.modules:
296+ del sys.modules[modname]
297+ filepath = join(module_dir, filename)
298+ module = load_source(modname, filepath)
299+ module.name = modname
300+ return module