Skip to content

[BUG]: ComputedSignal bugs from X10SA testing #141

@d-perl

Description

@d-perl

Provide a brief description of the bug.

Several issues appeared during attempted implementation of a ComputedSignal combining some BPMs

  • Function parsing is extremely fragile. e.g., including more than one space between def and the function name will break it with an extremely difficult to interpret error
Device bcu_xasym failed to update:
 Traceback (most recent call last):
  File "/data/test/x10sa-test-bec/production_deployments/20250828T103127/bec/bec_server/bec_server/device_server/devices/devicemanager.py", line 152, in _load_session
    self.initialize_delayed_devices(dev, config, obj)
  File "/data/test/x10sa-test-bec/production_deployments/20250828T103127/bec/bec_server/bec_server/device_server/devices/devicemanager.py", line 175, in initialize_delayed_devices
    obj = self.initialize_device(dev, config, obj)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/test/x10sa-test-bec/production_deployments/20250828T103127/bec/bec_server/bec_server/device_server/devices/devicemanager.py", line 355, in initialize_device
    self.update_config(obj, config)
  File "/data/test/x10sa-test-bec/production_deployments/20250828T103127/bec/bec_server/bec_server/device_server/devices/devicemanager.py", line 264, in update_config
    setattr(obj, config_key, config_value)
  File "/data/test/x10sa-test-bec/production_deployments/20250828T103127/ophyd_devices/ophyd_devices/utils/dynamic_pseudo.py", line 106, in compute_method
    exec(method, out)
  File "<string>", line 1
    user_compute_methodduser_compute_methodeuser_compute_methodfuser_compute_method user_compute_method user_compute_methodcuser_compute_methodouser_compute_methodmuser_compute_methodpuser_compute_methoduuser_compute_methodtuser_compute_methodeuser_compute_method_user_compute_methodxuser_compute_methodauser_compute_methodsuser_compute_methodyuser_compute_methodmuser_compute_method(user_compute_method)user_compute_method:user_compute_method
A recovery config was written to /home/gac-x10sa/data/raw/logs/device_configs/recovery_configs/recovery_config_2025-10-22_10-17-31.yaml.
Failed to update the config for some devices.
Device bcu_xasym failed to update:
 Traceback (most recent call last):
  File "/data/test/x10sa-test-bec/production_deployments/20250828T103127/bec/bec_server/bec_server/device_server/devices/devicemanager.py", line 152, in _load_session
    self.initialize_delayed_devices(dev, config, obj)
  File "/data/test/x10sa-test-bec/production_deployments/20250828T103127/bec/bec_server/bec_server/device_server/devices/devicemanager.py", line 175, in initialize_delayed_devices
    obj = self.initialize_device(dev, config, obj)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/test/x10sa-test-bec/production_deployments/20250828T103127/bec/bec_server/bec_server/device_server/devices/devicemanager.py", line 355, in initialize_device
    self.update_config(obj, config)
  File "/data/test/x10sa-test-bec/production_deployments/20250828T103127/bec/bec_server/bec_server/device_server/devices/devicemanager.py", line 264, in update_config
    setattr(obj, config_key, config_value)
  File "/data/test/x10sa-test-bec/production_deployments/20250828T103127/ophyd_devices/ophyd_devices/utils/dynamic_pseudo.py", line 134, in input_signals
    obj = rgetattr(self._device_manager.devices, target)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/test/x10sa-test-bec/production_deployments/20250828T103127/ophyd_devices/ophyd_devices/utils/dynamic_pseudo.py", line 21, in rgetattr
    return reduce(_getattr, [obj] + attr.split("."))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/test/x10sa-test-bec/production_deployments/20250828T103127/ophyd_devices/ophyd_devices/utils/dynamic_pseudo.py", line 19, in _getattr
    return getattr(obj, attr, *args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/test/x10sa-test-bec/production_deployments/20250828T103127/bec/bec_lib/bec_lib/devicemanager.py", line 88, in __getattr__
    raise DeviceConfigError(f"Device {attr} does not exist.")
bec_lib.bec_errors.DeviceConfigError: Device bcu does not exist.
.
  • Docstring claims numpy is imported as np but it was not available to the function

RPCError: During an RPC, the following error occured:
NameError: ["name 'np' is not defined"].
Traceback: Traceback (most recent call last):
  File "/data/test/x10sa-test-bec/production_deployments/20250828T103127/bec/bec_server/bec_server/device_server/rpc_mixin.py", line 37, in run_rpc
    res = self.process_rpc_instruction(instr)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/test/x10sa-test-bec/production_deployments/20250828T103127/bec/bec_server/bec_server/device_server/rpc_mixin.py", line 216, in process_rpc_instruction
    return self._handle_misc_rpc(instr)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/test/x10sa-test-bec/production_deployments/20250828T103127/bec/bec_server/bec_server/device_server/rpc_mixin.py", line 147, in _handle_misc_rpc
    res = self._get_result_from_rpc(rpc_var, instr_params)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/test/x10sa-test-bec/production_deployments/20250828T103127/bec/bec_server/bec_server/device_server/rpc_mixin.py", line 56, in _get_result_from_rpc
    res = rpc_var()
          ^^^^^^^^^
  File "/data/test/x10sa-test-bec/production_deployments/20250828T103127/ophyd_devices/ophyd_devices/utils/dynamic_pseudo.py", line 146, in get
    return self._compute_method(*self.input_signals)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<string>", line 2, in user_compute_method
NameError: name 'np' is not defined

 The request will be aborted.

Describe what you expected to happen and what actually happened.

No response

Outline the steps that lead to the bug's occurrence. Be specific and provide a clear sequence of actions.

No response

bec_widgets version

No response

bec core version

No response

Any extra info / data? e.g. log output...

No response

Related issues

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions