Override does not change the order of inherited accessibles.

except when explicitely mentioned with reorder=True
improved test_modules for unique accessibles, as this
was related with Accessible.ctr

Change-Id: I61877de9300bb0297c88a6c44bb265c634937856
Reviewed-on: https://forge.frm2.tum.de/review/19693
Tested-by: JenkinsCodeReview <bjoern_pedersen@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
This commit is contained in:
2019-01-08 14:44:06 +01:00
committed by Enrico Faulhaber
parent 1c33a41748
commit 4f83bc42cc
4 changed files with 75 additions and 32 deletions

View File

@ -214,10 +214,10 @@ class Module(object):
def early_init(self):
# may be overriden in derived classes to init stuff
self.log.debug('empty early_init()')
self.log.debug('empty %s.early_init()' % self.__class__.__name__)
def init_module(self):
self.log.debug('empty init_module()')
self.log.debug('empty %s.init_module()' % self.__class__.__name__)
def start_module(self, started_callback):
'''runs after init of all modules
@ -226,7 +226,7 @@ class Module(object):
or, if not implmemented, immediately
'''
self.log.debug('empty start_module()')
self.log.debug('empty %s.start_module()' % self.__class__.__name__)
started_callback(self)

View File

@ -48,7 +48,6 @@ class Accessible(CountedObj):
def copy(self):
# return a copy of ourselfs
props = self.__dict__.copy()
props.pop('ctr')
return type(self)(**props)
def exported_properties(self):
@ -155,10 +154,12 @@ class Override(CountedObj):
"""Stores the overrides to be applied to a Parameter
note: overrides are applied by the metaclass during class creating
reorder= True: use position of Override instead of inherited for the order
"""
def __init__(self, description="", **kwds):
def __init__(self, description="", reorder=False, **kwds):
super(Override, self).__init__()
self.kwds = kwds
self.reorder = reorder
# allow to override description without keyword
if description:
self.kwds['description'] = description
@ -177,7 +178,8 @@ class Override(CountedObj):
raise ProgrammingError( "%s is not a valid %s property" %
(key, type(obj).__name__))
props.update(self.kwds)
props['ctr'] = self.ctr
if self.reorder:
props['ctr'] = self.ctr
return type(obj)(**props)
else:
raise ProgrammingError(