@@ -4,14 +4,15 @@ from sys import exit
5logger = logger.getChild('plugins')
5logger = logger.getChild('plugins')
7−required_attrs = ('name',
7+required_attrs = (('name', str),
8− 'description',
8+ ('description', str),
9− 'default_on')
9+ ('default_on', bool))
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'
17class PluginStore():
18class PluginStore():
@@ -25,8 +26,8 @@ class PluginStore():
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))
32 plugin.id = plugin.name.replace(' ', '_')
33 plugin.id = plugin.name.replace(' ', '_')