Owner: catch ImportError in a less confusing, friendlier way

This commit is contained in:
GLolol 2014-11-01 10:57:01 -07:00
parent 13c2bd3fcc
commit 1b2617bf8e

View File

@ -194,7 +194,16 @@ class Owner(callbacks.Plugin):
s = 'Failed to load %s: no suitable database(%s).' % (name, e) s = 'Failed to load %s: no suitable database(%s).' % (name, e)
log.warning(s) log.warning(s)
except ImportError as e: except ImportError as e:
s = 'Failed to load %s: import error (%s).' % (name, e) e = str(e)
if e.endswith(name):
s = 'No plugin named %s exists.' % utils.str.dqrepr(name)
elif "No module named 'config'" in e:
s = ("Failed to load %s: This plugin is incompatible "
"with your current Python version. If this error is appearing "
"with stock Supybot plugins, remove the stock plugins directory "
"(usually ~/Limnoria/plugins) from 'config directories.plugins'." % name)
else:
s = 'Failed to load %s: import error (%s).' % (name, e)
log.warning(s) log.warning(s)
except Exception as e: except Exception as e:
log.exception('Failed to load %s:', name) log.exception('Failed to load %s:', name)
@ -418,6 +427,9 @@ class Owner(callbacks.Plugin):
except ImportError as e: except ImportError as e:
if str(e).endswith(name): if str(e).endswith(name):
irc.error('No plugin named %s exists.' % utils.str.dqrepr(name)) irc.error('No plugin named %s exists.' % utils.str.dqrepr(name))
elif "No module named 'config'" in str(e):
irc.error('This plugin is incompatible with your current Python '
'version. Try running 2to3 on it.')
else: else:
irc.error(str(e)) irc.error(str(e))
return return