Skip to content
Snippets Groups Projects
Commit 01841b0f authored by Daniel Brown's avatar Daniel Brown
Browse files

adding in param weakref refreshing

parent b70b028d
No related branches found
No related tags found
No related merge requests found
......@@ -199,6 +199,19 @@ class Component(object):
self.__removed = True
def __deepcopy__(self, memo):
cls = self.__class__
result = cls.__new__(cls)
memo[id(self)] = result
for k, v in self.__dict__.items():
setattr(result, k, deepcopy(v, memo))
for p in result._params:
p._updateOwner(result)
return result
class AbstractMirrorComponent(Component):
__metaclass__ = abc.ABCMeta
......
......@@ -88,6 +88,15 @@ class Param(putable, putter):
putable.__init__(self, owner.name, name, isPutable)
def _updateOwner(self, newOwner):
"""
This updates the internal weak reference to link a parameter to who owns it.
Should only be called by the __deepcopy__ component method to ensure things
are kept up to date.
"""
del self._owner
self._owner = weakref.ref(newOwner)
@property
def canFsig(self): return self._canFsig
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment