Log a useful error message when trying to dump and invalid value.
authorW. Trevor King <wking@drexel.edu>
Thu, 8 Sep 2011 14:26:11 +0000 (10:26 -0400)
committerW. Trevor King <wking@drexel.edu>
Thu, 8 Sep 2011 14:26:11 +0000 (10:26 -0400)
h5config/config.py

index e8ff023f456c760841b13639c67afe9da9658411..6f4112fef21f753e716aecac9dc760dbb3c0f086 100644 (file)
@@ -20,6 +20,8 @@
 
 import copy as _copy
 
+from . import LOG as _LOG
+
 
 class Setting (object):
     "A named setting with arbitrart text values."
@@ -297,20 +299,25 @@ class Config (dict):
         for setting in self.settings:
             name = setting.name
             value = self[name]
-            if isinstance(setting, ConfigSetting):
-                if value is not None:
-                    lines.append(value.dump(help=help, prefix=prefix+'  '))
-                    continue
-            elif isinstance(setting, ConfigListSetting):
-                if value:
-                    for config in value:
-                        lines.append(
-                            config.dump(help=help, prefix=prefix+'  '))
-                    continue
-            value_string = setting.convert_to_text(self[name])
-            if help:
-                help_string = '\t({})'.format(setting.help())
-            else:
-                help_string = ''
-            lines.append('{}: {}{}'.format(name, value_string, help_string))
+            try:
+                if isinstance(setting, ConfigSetting):
+                    if value is not None:
+                        lines.append(value.dump(help=help, prefix=prefix+'  '))
+                        continue
+                elif isinstance(setting, ConfigListSetting):
+                    if value:
+                        for config in value:
+                            lines.append(
+                                config.dump(help=help, prefix=prefix+'  '))
+                        continue
+                value_string = setting.convert_to_text(self[name])
+                if help:
+                    help_string = '\t({})'.format(setting.help())
+                else:
+                    help_string = ''
+                lines.append('{}: {}{}'.format(
+                        name, value_string, help_string))
+            except Exception:
+                _LOG.error('could not dump {} ({!r})'.format(name, value))
+                raise
         return '\n'.join(lines)