343 def _eval_statement(self, statement):
344 from GaudiKernel.Proxy.Configurable
import (
351 _log.info(
"%s%s", statement, self.statement_sep)
353 property, value = statement.split(
"=", 1)
356 if property[-1]
in [
"+",
"-"]:
358 property = property[:-1]
360 property = property.strip()
361 value = value.strip()
378 property =
".".join([w.strip()
for w
in property.split(
".")])
379 component, property = property.rsplit(
".", 1)
380 if component
in Configurable.allConfigurables:
381 cfg = Configurable.allConfigurables[component]
383 cfg = ConfigurableGeneric(component)
386 value = value.replace(
"true",
"True").replace(
"false",
"False")
389 if ":" in value
and not (
390 value[: value.index(
":")].count(
'"') % 2
391 or value[: value.index(
":")].count(
"'") % 2
394 value =
"{" + value[1:-1].replace(
"{",
"[").replace(
"}",
"]") +
"}"
396 value = value.replace(
"{",
"[").replace(
"}",
"]")
399 value = value.replace(
"\\",
"\\\\")
402 value.replace(
r"\\n",
r"\n").replace(
r"\\t",
r"\t").replace(
r'\\"',
r"\"")
407 (v
if i % 2
else re.sub(
r"\\[nt]",
" ", v))
408 for i, v
in enumerate(value.split(
'"'))
413 m = self.reference.match(value)
416 value = PropertyReference(m.group(1))
418 value = eval(value, self.units)
423 if property
not in cfg.__slots__
and not hasattr(cfg, property):
425 lprop = property.lower()
426 for p
in cfg.__slots__:
427 if lprop == p.lower():
429 "property '%s' was requested for %s, but the correct spelling is '%s'",
439 if hasattr(cfg, property):
440 prop = getattr(cfg, property)
441 if type(prop) == dict:
447 setattr(cfg, property, value)
449 if hasattr(cfg, property):
450 prop = getattr(cfg, property)
451 if type(prop)
is dict:
457 "key '%s' not in %s.%s", k, cfg.name(), property
465 "value '%s' not in %s.%s", k, cfg.name(), property
468 setattr(cfg, property, value)