From db00803f539791ceefd5f4f0424b00c0e2ae91e6 Mon Sep 17 00:00:00 2001 From: appel_c Date: Thu, 22 Feb 2024 19:56:13 +0100 Subject: [PATCH] fix: extend bec_device with root, parent, kind --- ophyd_devices/utils/bec_device_base.py | 45 +++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/ophyd_devices/utils/bec_device_base.py b/ophyd_devices/utils/bec_device_base.py index c1eda27..8539795 100644 --- a/ophyd_devices/utils/bec_device_base.py +++ b/ophyd_devices/utils/bec_device_base.py @@ -1,4 +1,5 @@ from typing import Protocol, runtime_checkable +from ophyd import Kind @runtime_checkable @@ -8,6 +9,22 @@ class BECDevice(Protocol): name: str _destroyed: bool + @property + def kind(self) -> int: + """kind property""" + + @kind.setter + def kind(self, value: int): + """kind setter""" + + @property + def parent(self): + """Property to find the parent device""" + + @property + def root(self): + """Property to fint the root device""" + @property def hints(self) -> dict: """hints property""" @@ -76,10 +93,36 @@ class BECDeviceBase: """ - def __init__(self, name: str): + def __init__(self, name: str, *args, parent=None, kind=None, **kwargs): self.name = name self._connected = True self._destroyed = False + self._parent = parent + self._kind = kind if kind else Kind.normal + + @property + def kind(self) -> int: + """Kind property, stems from ophyd.""" + return self._kind + + @kind.setter + def kind(self, value: int): + """kind setter""" + self._kind = value + + @property + def parent(self): + """Property to find the parent device""" + return self._parent + + @property + def root(self): + """Property to fint the root device""" + root = self + while True: + if root.parent is None: + return root + root = root.parent @property def hints(self) -> dict: