frappy_psi.extparams.StructParam: fix doc + simplify

- the doc string contained wrong, obsolete information
+ simplify: remove customizeable mapping member name -> param name

Change-Id: I0ffdcb336f45001d45f68238b56e1e257d98dd3d
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33993
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
This commit is contained in:
zolliker 2024-06-19 15:47:09 +02:00
parent 455f15d975
commit 986065e1f6
2 changed files with 12 additions and 16 deletions

View File

@ -39,12 +39,11 @@ class StructParam(Parameter):
... ...
ctrlpars = StructParam('ctrlpars struct', [ ctrlpars = StructParam('ctrlpars struct', {
('pid_p', 'p', Parameter('control parameter p', FloatRange())), 'p': Parameter('control parameter p', FloatRange()),
('pid_i', 'i', Parameter('control parameter i', FloatRange())), 'i': Parameter('control parameter i', FloatRange()),
('pid_d', 'd', Parameter('control parameter d', FloatRange())), 'd': Parameter('control parameter d', FloatRange()),
], readonly=False) }, prefix='pid_', readonly=False)
... ...
then implement either read_ctrlpars and write_ctrlpars or then implement either read_ctrlpars and write_ctrlpars or
@ -60,22 +59,19 @@ class StructParam(Parameter):
insideRW = 0 # counter for avoiding multiple superfluous updates insideRW = 0 # counter for avoiding multiple superfluous updates
def __init__(self, description=None, paramdict=None, prefix_or_map='', *, datatype=None, readonly=False, **kwds): def __init__(self, description=None, paramdict=None, prefix='', *, datatype=None, readonly=False, **kwds):
"""create a struct parameter together with individual parameters """create a struct parameter together with individual parameters
in addition to normal Parameter arguments: in addition to normal Parameter arguments:
:param paramdict: dict <member name> of Parameter(...) :param paramdict: dict <member name> of Parameter(...)
:param prefix_or_map: either a prefix for the parameter name to add to the member name :param prefix: a prefix for the parameter name to add to the member name
or a dict <member name> or <parameter name>
""" """
if isinstance(paramdict, DataType): if isinstance(paramdict, DataType):
raise ProgrammingError('second argument must be a dict of Param') raise ProgrammingError('second argument must be a dict of Param')
if datatype is None and paramdict is not None: # omit the following on Parameter.copy() if datatype is None and paramdict is not None: # omit the following on Parameter.copy()
if isinstance(prefix_or_map, str):
prefix_or_map = {m: prefix_or_map + m for m in paramdict}
for membername, param in paramdict.items(): for membername, param in paramdict.items():
param.name = prefix_or_map[membername] param.name = prefix + membername
datatype = StructOf(**{m: p.datatype for m, p in paramdict.items()}) datatype = StructOf(**{m: p.datatype for m, p in paramdict.items()})
kwds['influences'] = [p.name for p in paramdict.values()] kwds['influences'] = [p.name for p in paramdict.values()]
self.updateEnable = {} self.updateEnable = {}

View File

@ -116,12 +116,12 @@ def test_readonly():
p = Parameter('control parameter p', FloatRange()), p = Parameter('control parameter p', FloatRange()),
i = Parameter('control parameter i', FloatRange()), i = Parameter('control parameter i', FloatRange()),
d = Parameter('control parameter d', FloatRange()), d = Parameter('control parameter d', FloatRange()),
), {'p': 'pp', 'i':'ii', 'd': 'dd'}, readonly=True) ), readonly=True)
assert Mod.ctrlpars.readonly is True assert Mod.ctrlpars.readonly is True
assert Mod.pp.readonly is True assert Mod.p.readonly is True
assert Mod.ii.readonly is True assert Mod.i.readonly is True
assert Mod.dd.readonly is True assert Mod.d.readonly is True
def test_order_dependence1(): def test_order_dependence1():