def value(self, key, type_=None):
        """Get the value of a setting.

        If `type` is not provided, the key must be for a known setting,
        present in `self.default_settings`. Conversely if `type` IS provided,
        the key must be for an unknown setting.
        """
        if type_ is None:
            default = self._default_value(key)
            val = self._value(key, default)
            if type(val) == type(default):
                return val
            else:
                return self._convert_value(val, type(default))
        else:
            val = self._value(key, None)
            if val is None:
                return None
            return self._convert_value(val, type_)
Get the value of a setting.

        If `type` is not provided, the key must be for a known setting,
        present in `self.default_settings`. Conversely if `type` IS provided,
        the key must be for an unknown setting.