upstream propagation in aliases included

This commit is contained in:
2019-06-25 14:21:33 +02:00
parent f78c661716
commit 5cb941c775
2 changed files with 21 additions and 1 deletions
+20 -1
View File
@@ -1,14 +1,17 @@
import os
from pathlib import Path
import json
import logging
logger = logging.getLogger(__name__)
class Alias:
def __init__(self, alias, channel=None, channeltype=None):
def __init__(self, alias, channel=None, channeltype=None, parent=None):
self.alias = alias
self.channel = channel
self.channeltype = channeltype
self.children = []
self.parent = parent
def append(self, subalias):
assert type(subalias) is Alias, "You can only append aliases to aliases!"
@@ -16,6 +19,10 @@ class Alias:
subalias.alias in [tc.alias for tc in self.children]
), f"Alias {subalias.alias} exists already!"
self.children.append(subalias)
if subalias.parent is None:
subalias.parent = self
else:
logger.warning('parent of alias has been defined already')
def get_all(self, joiner="."):
aa = []
@@ -39,6 +46,18 @@ class Alias:
)
return aa
def get_full_name(self,joiner="."):
name = [self.alias]
parent = self.parent
while not parent == None:
name.append(parent.alias)
parent = parent.__dict__.get('parent',None)
if joiner:
return joiner.join(reversed(name))
else:
return name
# def add_children(self, *args):
# self.children.append(find_aliases(*args))
+1
View File
@@ -1,5 +1,6 @@
from ..devices_general.motors import MotorRecord
from epics import PV
from ..aliases import Alias, append_object_to_object
class RefLaser_Aramis: