-# Copyright (C) 2010 W. Trevor King <wking@drexel.edu>
+# Copyright (C) 2010-2012 W. Trevor King <wking@drexel.edu>
#
# This file is part of Hooke.
#
-# Hooke is free software: you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
+# Hooke is free software: you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation, either version 3 of the License, or (at your option) any
+# later version.
#
-# Hooke is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
-# Public License for more details.
+# Hooke is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
#
-# You should have received a copy of the GNU Lesser General Public
-# License along with Hooke. If not, see
-# <http://www.gnu.org/licenses/>.
+# You should have received a copy of the GNU Lesser General Public License
+# along with Hooke. If not, see <http://www.gnu.org/licenses/>.
"""``pluggable`` provides utility functions for extensible plugin modules.
"""
obj = getattr(submod, objname)
if class_selector(obj):
if instantiate == True:
- obj = obj()
+ try:
+ obj = obj()
+ except Exception, e:
+ logging.error('could not instantiate %s from %s: %s'
+ % (obj, submodname, e))
+ raise
name = getattr(obj, 'name', submodname)
objs[name] = obj
return objs
for objname in dir(submod):
obj = getattr(submod, objname)
if class_selector(obj):
- instance = obj()
+ try:
+ instance = obj()
+ except Exception, e:
+ logging.error('could not instantiate %s from %s: %s'
+ % (obj, submodname, e))
+ raise
if assert_name_match == True and instance.name != submodname:
raise Exception(
'Instance name %s does not match module name %s'