From 4892c2fd8fa5cacacc5e3779503efdcb6b420b12 Mon Sep 17 00:00:00 2001 From: sans Date: Wed, 21 Aug 2024 08:04:06 +0200 Subject: [PATCH] frappy_psi/parmod: fix Driv registering updates should be done in initModules --- frappy_psi/parmod.py | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/frappy_psi/parmod.py b/frappy_psi/parmod.py index f27d2b5..8299817 100644 --- a/frappy_psi/parmod.py +++ b/frappy_psi/parmod.py @@ -54,6 +54,7 @@ class Par(Readable): class Driv(Drivable): + # this should be Writable instead! value = Parameter(datatype=FloatRange(unit='$')) target = Parameter(datatype=FloatRange(unit='$')) read = Attached(description='. for read') @@ -64,10 +65,10 @@ class Driv(Drivable): def setProperty(self, key, value): # split properties read/write (including .) - # into read/write (modules) and read_param/write_param (parameters) + # into read/write (modules) and _read_param/_write_param (parameters) if key in ('read', 'write'): value, param = value.split('.') - setattr(self, f'{key}_param', param) + setattr(self, f'_{key}_param', param) super().setProperty(key, value) def checkProperties(self): @@ -76,14 +77,15 @@ class Driv(Drivable): raise ConfigError('illegal recursive read/write module') super().checkProperties() - def registerUpdates(self): - if self.read_param == 'value': + def initModule(self): + super().initModule() + if self._read_param == 'value': try: self.read.addCallback('status', self.updateReadStatus) except KeyError: pass # may be not needed: value is present but not status - self.read.addCallback(self.read_param, self.updateValue) - self.write.addCallback(self.write_param, self.announceUpdate, 'target') + self.read.addCallback(self._read_param, self.updateValue) + self.write.addCallback(self._write_param, self.announceUpdate, 'target') def updateReadStatus(self, status, err=None): self.__status = status @@ -95,17 +97,17 @@ class Driv(Drivable): self.__error = err self.read_status() - def startModule(self, start_events): - start_events.queue(self.registerUpdates) - super().startModule(start_events) + #def startModule(self, start_events): + # start_events.queue(self.registerUpdates) + # super().startModule(start_events) @nopoll def read_value(self): - return getattr(self.read, f'read_{self.read_param}')() + return getattr(self.read, f'read_{self._read_param}')() @nopoll def read_target(self): - return getattr(self.write, f'read_{self.write_param}')() + return getattr(self.write, f'read_{self._write_param}')() @nopoll def read_status(self): @@ -116,7 +118,7 @@ class Driv(Drivable): return (ERROR, repr(self.__error)) if self.__error else (IDLE, '') def write_target(self, target): - return getattr(self.write, f'write_{self.write_param}')(target) + return getattr(self.write, f'write_{self._write_param}')(target) class Converging(HasConvergence, Driv):