"""
import ConfigParser as configparser
+import logging
import os.path
import textwrap
import unittest
"""An entry (section or option) in HookeConfigParser.
"""
def __init__(self, section, option=None, value=None, type='string',
- help=None, wrap=True):
+ count=1, help=None, wrap=True):
self.section = section
self.option = option
- self.value = to_string(value=value, type=type)
+ self.value = value
self.type = type
+ self.count = count
self.help = help
self.wrap = wrap
str(value).replace('\n', '\n\t')))
DEFAULT_SETTINGS = [
- Setting('conditions', help='Default environmental conditions in case they are not specified in the force curve data.'),
+ Setting('conditions', help='Default environmental conditions in case they are not specified in the force curve data. Configuration options in this section are available to every plugin.'),
Setting('conditions', 'temperature', value='301', type='float', help='Temperature in Kelvin'),
# Logging settings
Setting('loggers', help='Configure loggers, see\nhttp://docs.python.org/library/logging.html#configuration-file-format', wrap=False),
Setting('logger_hooke', 'qualname', 'hooke'),
Setting('handler_hand1', help='Configure the default log handler, see\nhttp://docs.python.org/library/logging.html#configuration-file-format', wrap=False),
Setting('handler_hand1', 'class', 'StreamHandler'),
- Setting('handler_hand1', 'level', 'NOTSET'),
+ Setting('handler_hand1', 'level', 'WARN'),
Setting('handler_hand1', 'formatter', 'form1'),
Setting('handler_hand1', 'args', '(sys.stderr,)'),
Setting('formatter_form1', help='Configure the default log formatter, see\nhttp://docs.python.org/library/logging.html#configuration-file-format', wrap=False),
self, section, *args, **kwargs)
for i,kv in enumerate(items):
key,value = kv
- setting = self._default_settings_dict[(section, key)]
- items[i] = (key, from_string(value=value, type=setting.type))
+ log = logging.getLogger('hooke')
+ try:
+ setting = self._default_settings_dict[(section, key)]
+ except KeyError, e:
+ log.error('unknown setting %s/%s: %s' % (section, key, e))
+ raise
+ try:
+ items[i] = (key, from_string(value=value, type=setting.type,
+ count=setting.count))
+ except ValueError, e:
+ log.error("could not convert '%s' (%s) for %s/%s: %s"
+ % (value, type(value), section, key, e))
+ raise
return items
def set(self, section, option, value):
"""Set an option."""
setting = self._default_settings_dict[(section, option)]
- value = to_string(value=value, type=setting.type)
+ value = to_string(value=value, type=setting.type, count=setting.count)
# Can't use super() because RawConfigParser is a classic class
#return super(HookeConfigParser, self).set(section, option, value)
configparser.RawConfigParser.set(self, section, option, value)