on master help sign in
[enh] plugin attribute type check
bf5d6f5Adam Tauber
searx/plugins/__init__.py+6−5
@@ -4,14 +4,15 @@ from sys import exit
4
4
5logger = logger.getChild('plugins')
5logger = logger.getChild('plugins')
6
6
7−required_attrs = ('name',
7+required_attrs = (('name', str),
8− 'description',
8+ ('description', str),
9− 'default_on')
9+ ('default_on', bool))
10
10
11
11
12class Plugin():
12class Plugin():
13 default_on = False
13 default_on = False
14 name = 'Default plugin'
14 name = 'Default plugin'
15+ description = 'Default plugin description'
15
16
16
17
17class PluginStore():
18class PluginStore():
@@ -25,8 +26,8 @@ class PluginStore():
25
26
26 def register(self, *plugins):
27 def register(self, *plugins):
27 for plugin in plugins:
28 for plugin in plugins:
28− for plugin_attr in required_attrs:
29+ for plugin_attr, plugin_attr_type in required_attrs:
29− if not hasattr(plugin, plugin_attr):
30+ if not hasattr(plugin, plugin_attr) or not isinstance(getattr(plugin, plugin_attr), plugin_attr_type):
30 logger.critical('missing attribute "{0}", cannot load plugin: {1}'.format(plugin_attr, plugin))
31 logger.critical('missing attribute "{0}", cannot load plugin: {1}'.format(plugin_attr, plugin))
31 exit(3)
32 exit(3)
32 plugin.id = plugin.name.replace(' ', '_')
33 plugin.id = plugin.name.replace(' ', '_')