allow to remove accessibles
removing an inherited command or parameter can now be indicated with an attribute set to None Change-Id: I7582434013856190b346e381d2e634509896ccb3 Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/25963 Tested-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de> Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de> Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
This commit is contained in:
parent
a343b07f1d
commit
27ac70b1da
@ -56,13 +56,19 @@ class HasAccessibles(HasProperties):
|
||||
for base in reversed(cls.__bases__):
|
||||
accessibles.update(getattr(base, 'accessibles', {}))
|
||||
newaccessibles = {k: v for k, v in cls.__dict__.items() if isinstance(v, Accessible)}
|
||||
for aname, aobj in accessibles.items():
|
||||
for aname, aobj in list(accessibles.items()):
|
||||
value = getattr(cls, aname, None)
|
||||
if not isinstance(value, Accessible): # else override is already done in __set_name__
|
||||
if value is None:
|
||||
accessibles.pop(aname)
|
||||
else:
|
||||
# this is either a method overwriting a command
|
||||
# or a value overwriting a property value or parameter default
|
||||
anew = aobj.override(value)
|
||||
newaccessibles[aname] = anew
|
||||
setattr(cls, aname, anew)
|
||||
anew.__set_name__(cls, aname)
|
||||
|
||||
ordered = {}
|
||||
for aname in cls.__dict__.get('paramOrder', ()):
|
||||
if aname in accessibles:
|
||||
|
Loading…
x
Reference in New Issue
Block a user