mirror of
https://github.com/bec-project/bec_widgets.git
synced 2025-07-13 19:21:50 +02:00
fix(entry_validator): device signals retrieved from ._info instead of .describe(), close #570
This commit is contained in:
@ -17,13 +17,23 @@ class EntryValidator:
|
|||||||
raise ValueError(f"Device '{name}' not found in current BEC session")
|
raise ValueError(f"Device '{name}' not found in current BEC session")
|
||||||
|
|
||||||
device = self.devices[name]
|
device = self.devices[name]
|
||||||
description = device.describe()
|
|
||||||
|
# Build list of available signal entries from device._info['signals']
|
||||||
|
signals_dict = getattr(device, "_info", {}).get("signals", {})
|
||||||
|
available_entries = [
|
||||||
|
sig.get("obj_name") for sig in signals_dict.values() if sig.get("obj_name")
|
||||||
|
]
|
||||||
|
|
||||||
|
# If no signals are found, means device is a signal, use the device name as the entry
|
||||||
|
if not available_entries:
|
||||||
|
available_entries = [name]
|
||||||
|
|
||||||
if entry is None or entry == "":
|
if entry is None or entry == "":
|
||||||
entry = next(iter(device._hints), name) if hasattr(device, "_hints") else name
|
entry = next(iter(device._hints), name) if hasattr(device, "_hints") else name
|
||||||
if entry not in description:
|
if entry not in available_entries:
|
||||||
raise ValueError(
|
raise ValueError(
|
||||||
f"Entry '{entry}' not found in device '{name}' signals. Available signals: {description.keys()}"
|
f"Entry '{entry}' not found in device '{name}' signals. "
|
||||||
|
f"Available signals: '{available_entries}'"
|
||||||
)
|
)
|
||||||
|
|
||||||
return entry
|
return entry
|
||||||
|
Reference in New Issue
Block a user