@@ -4,14 +4,15 @@ from sys import exit
44
55logger = logger.getChild('plugins')
66
7−required_attrs = ('name',
8− 'description',
9− 'default_on')
7+required_attrs = (('name', str),
8+ ('description', str),
9+ ('default_on', bool))
1010
1111
1212class Plugin():
1313 default_on = False
1414 name = 'Default plugin'
15+ description = 'Default plugin description'
1516
1617
1718class PluginStore():
@@ -25,8 +26,8 @@ class PluginStore():
2526
2627 def register(self, *plugins):
2728 for plugin in plugins:
28− for plugin_attr in required_attrs:
29− if not hasattr(plugin, plugin_attr):
29+ for plugin_attr, plugin_attr_type in required_attrs:
30+ if not hasattr(plugin, plugin_attr) or not isinstance(getattr(plugin, plugin_attr), plugin_attr_type):
3031 logger.critical('missing attribute "{0}", cannot load plugin: {1}'.format(plugin_attr, plugin))
3132 exit(3)
3233 plugin.id = plugin.name.replace(' ', '_')