From 9451e6b48a55781f8aba173577ae95863984ac99 Mon Sep 17 00:00:00 2001 From: Charles Titus Date: Thu, 1 Aug 2024 10:00:10 -0400 Subject: [PATCH] Propagating Long Name through components, test for name propagation added to test_device --- ophyd/device.py | 5 ++++- ophyd/tests/test_device.py | 14 +++++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/ophyd/device.py b/ophyd/device.py index 86c43345c..9badcf228 100644 --- a/ophyd/device.py +++ b/ophyd/device.py @@ -258,6 +258,10 @@ def create_component(self, instance): attr_name=self.attr, ) + _long_name = kwargs.get("long_name", self.attr) + _parent_long_name = getattr(instance, "long_name", instance.name) + kwargs["long_name"] = f"{_parent_long_name} {_long_name}" + for kw, val in list(kwargs.items()): kwargs[kw] = self.maybe_add_prefix(instance, kw, val) @@ -1785,7 +1789,6 @@ def wrapped(self, *args, **kwargs): def _wait_for_connection_context(value, doc): @contextlib.contextmanager def wrapped(dev): - orig = dev.lazy_wait_for_connection dev.lazy_wait_for_connection = value try: diff --git a/ophyd/tests/test_device.py b/ophyd/tests/test_device.py index c3d8b464c..e3ef54bf7 100644 --- a/ophyd/tests/test_device.py +++ b/ophyd/tests/test_device.py @@ -768,14 +768,14 @@ def test_dotted_name(): from ophyd.sim import SynSignal class Inner(Device): - x = Cpt(SynSignal) + x = Cpt(SynSignal, long_name="Inner X") y = Cpt(SynSignal) class Outer(Device): - a = Cpt(Inner) + a = Cpt(Inner, long_name="Outer A") b = Cpt(Inner) - o = Outer(name="test") + o = Outer(name="test", long_name="Test") assert o.dotted_name == "" assert o.a.dotted_name == "a" @@ -797,6 +797,14 @@ class Outer(Device): assert o.a.y.attr_name == "y" assert o.b.y.attr_name == "y" + assert o.long_name == "Test" + assert o.a.long_name == "Test Outer A" + assert o.b.long_name == "Test b" + assert o.a.x.long_name == "Test Outer A Inner X" + assert o.a.y.long_name == "Test Outer A y" + assert o.b.x.long_name == "Test b Inner X" + assert o.b.y.long_name == "Test b y" + def test_create_device(): components = dict(