From d9e3dec0c283c025bf2a1a8475fa810ebf2d2b25 Mon Sep 17 00:00:00 2001 From: enkore Date: Wed, 30 Oct 2013 10:41:08 +0100 Subject: [PATCH] Catch ConfigError in register() --- i3pystatus/core/__init__.py | 7 ++++++- i3pystatus/core/exceptions.py | 4 ++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/i3pystatus/core/__init__.py b/i3pystatus/core/__init__.py index 37d9b6a..64e3aab 100644 --- a/i3pystatus/core/__init__.py +++ b/i3pystatus/core/__init__.py @@ -2,6 +2,7 @@ import sys import os from threading import Thread +from i3pystatus.core.exceptions import ConfigError from i3pystatus.core.imputil import ClassFinder from i3pystatus.core import io, util @@ -54,6 +55,7 @@ class Status: def register(self, module, *args, **kwargs): """Register a new module.""" + from i3pystatus.text import Text if module: try: @@ -61,7 +63,6 @@ class Status: except ImportError as import_error: if import_error.name and not import_error.path and isinstance(module, str): # This is a package/module not found exception raised by importing a module on-the-fly - from i3pystatus.text import Text return self.modules.append(Text( color="#FF0000", text="{i3py_mod}: Missing Python module '{missing_module}'".format( @@ -69,6 +70,10 @@ class Status: missing_module=import_error.name))) else: raise import_error + except ConfigError as configuration_error: + return self.modules.append(Text( + color="#FF0000", + text=configuration_error.message)) else: return None diff --git a/i3pystatus/core/exceptions.py b/i3pystatus/core/exceptions.py index feef0b0..feefeca 100644 --- a/i3pystatus/core/exceptions.py +++ b/i3pystatus/core/exceptions.py @@ -3,10 +3,10 @@ class ConfigError(Exception): """ABC for configuration exceptions""" def __init__(self, module, *args, **kwargs): - message = "Module '{0}': {1}".format( + self.message = "Module '{0}': {1}".format( module, self.format(*args, **kwargs)) - super().__init__(message) + super().__init__(self.message) def format(self, *args, **kwargs): return ""