fix issue with alias_config removed at MLZ
rotation_z will be automatically assigned to one of a list of aliases ('unique' entry in frappy_config) but will complain when this is not unique.
This commit is contained in:
13
devices.py
13
devices.py
@ -31,7 +31,7 @@ import os
|
|||||||
from os.path import expanduser
|
from os.path import expanduser
|
||||||
|
|
||||||
from nicos import config, session
|
from nicos import config, session
|
||||||
from nicos.core import Override, Param, Moveable, status, POLLER, SIMULATION
|
from nicos.core import Override, Param, Moveable, status, POLLER, SIMULATION, DeviceAlias
|
||||||
from nicos.devices.secop.devices import SecNodeDevice
|
from nicos.devices.secop.devices import SecNodeDevice
|
||||||
from nicos.core import Device, anytype, listof
|
from nicos.core import Device, anytype, listof
|
||||||
from nicos.utils.comparestrings import compare
|
from nicos.utils.comparestrings import compare
|
||||||
@ -108,7 +108,7 @@ class FrappyConfig(Device):
|
|||||||
aliasnames = [aliasnames]
|
aliasnames = [aliasnames]
|
||||||
for aliasname in aliasnames:
|
for aliasname in aliasnames:
|
||||||
aliasdev = session.devices.get(aliasname)
|
aliasdev = session.devices.get(aliasname)
|
||||||
if aliasdev:
|
if isinstance(aliasdev, DeviceAlias):
|
||||||
result[aliasname] = aliasdev
|
result[aliasname] = aliasdev
|
||||||
return result
|
return result
|
||||||
|
|
||||||
@ -143,6 +143,15 @@ class FrappyConfig(Device):
|
|||||||
if isinstance(aliasnames, str):
|
if isinstance(aliasnames, str):
|
||||||
aliasnames = [aliasnames]
|
aliasnames = [aliasnames]
|
||||||
aliascfg = info.get('targets', {})
|
aliascfg = info.get('targets', {})
|
||||||
|
unique = info.get('unique')
|
||||||
|
if unique:
|
||||||
|
aliases = [a for a in unique
|
||||||
|
if isinstance(session.devices.get(a), DeviceAlias)]
|
||||||
|
if aliases:
|
||||||
|
if len(aliases) > 1:
|
||||||
|
raise TypeError(f'do know to which of {aliases} {meaning} to assign to')
|
||||||
|
alias_config = session.alias_config.setdefault(aliases[0], [])
|
||||||
|
alias_config.extend(list(aliascfg.items()))
|
||||||
importance_list = sample_devices.get(meaning, [])
|
importance_list = sample_devices.get(meaning, [])
|
||||||
importance_list.extend([(nr, nam) for nam, nr in aliascfg.items() if nam in session.devices])
|
importance_list.extend([(nr, nam) for nam, nr in aliascfg.items() if nam in session.devices])
|
||||||
importance_list = sorted(importance_list, reverse=True)
|
importance_list = sorted(importance_list, reverse=True)
|
||||||
|
@ -34,6 +34,7 @@ devices = dict(
|
|||||||
'targets': {'se_mf': 20},
|
'targets': {'se_mf': 20},
|
||||||
},
|
},
|
||||||
rotation_z = {
|
rotation_z = {
|
||||||
|
'unique': ['a3', 'om'],
|
||||||
'alias': 'dom',
|
'alias': 'dom',
|
||||||
'targets': {'se_om': 20, 'se_stickrot': 19},
|
'targets': {'se_om': 20, 'se_stickrot': 19},
|
||||||
'envlist': False,
|
'envlist': False,
|
||||||
|
Reference in New Issue
Block a user