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', [
('pid_p', 'p', Parameter('control parameter p', FloatRange())),
('pid_i', 'i', Parameter('control parameter i', FloatRange())),
('pid_d', 'd', Parameter('control parameter d', FloatRange())),
], readonly=False)
ctrlpars = StructParam('ctrlpars struct', {
'p': Parameter('control parameter p', FloatRange()),
'i': Parameter('control parameter i', FloatRange()),
'd': Parameter('control parameter d', FloatRange()),
}, prefix='pid_', readonly=False)
...
then implement either read_ctrlpars and write_ctrlpars or
@ -60,22 +59,19 @@ class StructParam(Parameter):
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
in addition to normal Parameter arguments:
:param paramdict: dict <member name> of Parameter(...)
:param prefix_or_map: either a prefix for the parameter name to add to the member name
or a dict <member name> or <parameter name>
:param prefix: a prefix for the parameter name to add to the member name
"""
if isinstance(paramdict, DataType):
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 isinstance(prefix_or_map, str):
prefix_or_map = {m: prefix_or_map + m for m in paramdict}
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()})
kwds['influences'] = [p.name for p in paramdict.values()]
self.updateEnable = {}

View File

@ -116,12 +116,12 @@ def test_readonly():
p = Parameter('control parameter p', FloatRange()),
i = Parameter('control parameter i', 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.pp.readonly is True
assert Mod.ii.readonly is True
assert Mod.dd.readonly is True
assert Mod.p.readonly is True
assert Mod.i.readonly is True
assert Mod.d.readonly is True
def test_order_dependence1():