def _validate(self, name, opt_or_descr):
apply_requires(opt_or_descr, self)
if not type(opt_or_descr) == OptionDescription:
- # hidden or disabled options
- # XXX let's have a group with a hidden property
- # and an option with a disabled property,
- # then it matches anyway... is it important to fix this ?
if self._cfgimpl_toplevel._cfgimpl_has_properties() and \
- (opt_or_descr.has_properties() or \
- self._cfgimpl_descr.has_properties()):
- raise PropertiesOptionError("trying to access to the option: {0} "
- "with properties: {1}".format(name,
- str(opt_or_descr.properties)))
+ opt_or_descr.has_properties():
+ raise PropertiesOptionError("trying to access"
+ " to an option named: {0}".format(name),
+ opt_or_descr.properties))
+ if self._cfgimpl_toplevel._cfgimpl_has_properties() and \
+ self._cfgimpl_descr.has_properties()):
+ raise PropertiesOptionError("trying to access"
+ " to an option's group named: {0}"
+ " for option named: {1}".format(
+ self._cfgimpl_descr._name, name),
+ self._cfgimpl_descr.properties)
def __getattr__(self, name):
# attribute access by passing a path,
# options with callbacks (fill or auto)
if opt_or_descr.has_callback():
value = self._cfgimpl_values[name]
- if value != None:
+ if (not opt_or_descr.is_frozen() or \
+ not opt_or_descr.is_forced_on_freeze()) and value != None:
if opt_or_descr.is_multi():
if None not in value:
return value
class ConflictConfigError(ConfigError):
pass
class PropertiesOptionError(AttributeError):
- pass
+ def __init__(self, msg, proptype=None):
+ self.proptype = proptype
+ super(PropertiesOptionError, self).__init__(msg)
+
class NotFoundError(Exception):
pass
class MethodCallError(Exception):