logo

searx

My custom branche(s) on searx, a meta-search engine git clone https://hacktivis.me/git/searx.git
commit: bf5d6f56c66feb3cac760f0f30cf4585a2e6134e
parent f7c18a04ac9d21691f9035ae0ee5e1b0e82dc33e
Author: Adam Tauber <asciimoo@gmail.com>
Date:   Sat, 14 Mar 2015 20:22:26 +0100

[enh] plugin attribute type check

Diffstat:

Msearx/plugins/__init__.py11++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/searx/plugins/__init__.py b/searx/plugins/__init__.py @@ -4,14 +4,15 @@ from sys import exit logger = logger.getChild('plugins') -required_attrs = ('name', - 'description', - 'default_on') +required_attrs = (('name', str), + ('description', str), + ('default_on', bool)) class Plugin(): default_on = False name = 'Default plugin' + description = 'Default plugin description' class PluginStore(): @@ -25,8 +26,8 @@ class PluginStore(): def register(self, *plugins): for plugin in plugins: - for plugin_attr in required_attrs: - if not hasattr(plugin, plugin_attr): + for plugin_attr, plugin_attr_type in required_attrs: + if not hasattr(plugin, plugin_attr) or not isinstance(getattr(plugin, plugin_attr), plugin_attr_type): logger.critical('missing attribute "{0}", cannot load plugin: {1}'.format(plugin_attr, plugin)) exit(3) plugin.id = plugin.name.replace(' ', '_')