accept module properties without leading '.' in config files
as module properties and parameters anyway share the same namespace, there is no need to distinguish in config files. + a parameter default value may be overriden just with a class attribute. Both improvements help to switch between parameters and properties more easily. Change-Id: Ieb5cf3121f37c7c04e63345d3e95dfaf42726455 Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/22054 Tested-by: JenkinsCodeReview <bjoern_pedersen@frm2.tum.de> Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
This commit is contained in:
@ -25,7 +25,7 @@
|
||||
import time
|
||||
from collections import OrderedDict
|
||||
|
||||
from secop.errors import ProgrammingError
|
||||
from secop.errors import ProgrammingError, BadValueError
|
||||
from secop.params import Command, Override, Parameter
|
||||
from secop.datatypes import EnumType
|
||||
from secop.properties import PropertyMeta
|
||||
@ -103,6 +103,16 @@ class ModuleMeta(PropertyMeta):
|
||||
# 2) for the describing message
|
||||
newtype.accessibles = OrderedDict(sorted(accessibles.items(), key=lambda item: item[1].ctr))
|
||||
|
||||
# check for attributes overriding parameter values
|
||||
for pname, pobj in newtype.accessibles.items():
|
||||
if pname in attrs:
|
||||
try:
|
||||
value = pobj.datatype(attrs[pname])
|
||||
except BadValueError:
|
||||
raise ProgrammingError('parameter %s can not be set to %r'
|
||||
% (pname, attrs[pname]))
|
||||
newtype.accessibles[pname] = Override(default=value).apply(pobj)
|
||||
|
||||
# check validity of Parameter entries
|
||||
for pname, pobj in newtype.accessibles.items():
|
||||
# XXX: create getters for the units of params ??
|
||||
|
Reference in New Issue
Block a user