diff --git a/devices.py b/devices.py index e1cfe1a..48a80f4 100644 --- a/devices.py +++ b/devices.py @@ -31,7 +31,7 @@ import os from os.path import expanduser 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.core import Device, anytype, listof from nicos.utils.comparestrings import compare @@ -108,7 +108,7 @@ class FrappyConfig(Device): aliasnames = [aliasnames] for aliasname in aliasnames: aliasdev = session.devices.get(aliasname) - if aliasdev: + if isinstance(aliasdev, DeviceAlias): result[aliasname] = aliasdev return result @@ -143,6 +143,15 @@ class FrappyConfig(Device): if isinstance(aliasnames, str): aliasnames = [aliasnames] 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.extend([(nr, nam) for nam, nr in aliascfg.items() if nam in session.devices]) importance_list = sorted(importance_list, reverse=True) diff --git a/setups/frappy.py b/setups/frappy.py index d813692..2718eac 100644 --- a/setups/frappy.py +++ b/setups/frappy.py @@ -34,6 +34,7 @@ devices = dict( 'targets': {'se_mf': 20}, }, rotation_z = { + 'unique': ['a3', 'om'], 'alias': 'dom', 'targets': {'se_om': 20, 'se_stickrot': 19}, 'envlist': False,