From 67faff6e0f98769d13d72754ff3ea15c5e9a6862 Mon Sep 17 00:00:00 2001 From: enkore Date: Wed, 23 Oct 2013 09:50:14 +0200 Subject: [PATCH] Handling ImportError in Status.register() (#22) --- i3pystatus/core/__init__.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/i3pystatus/core/__init__.py b/i3pystatus/core/__init__.py index 6a8f552..b470ad4 100644 --- a/i3pystatus/core/__init__.py +++ b/i3pystatus/core/__init__.py @@ -33,7 +33,19 @@ class Status: """Register a new module.""" if module: - return self.modules.append(module, *args, **kwargs) + try: + return self.modules.append(module, *args, **kwargs) + 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( + i3py_mod=module, + missing_module=import_error.name))) + else: + raise import_error else: return None