From 0a71c97f69f85898c39b694fc83fa5ddc1706fac Mon Sep 17 00:00:00 2001 From: Markus Zolliker Date: Thu, 13 Dec 2018 11:47:08 +0100 Subject: [PATCH] allow Override also for Commands modified cryo.py for using Override correctly, here the description of the stop command is overridden Change-Id: I060a2802226239f3af3dc1e573b7148d863b938c Reviewed-on: https://forge.frm2.tum.de/review/19607 Tested-by: JenkinsCodeReview Reviewed-by: Enrico Faulhaber --- secop/params.py | 10 +++++----- secop_demo/cryo.py | 14 ++++++-------- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/secop/params.py b/secop/params.py index a6d78a5..2551456 100644 --- a/secop/params.py +++ b/secop/params.py @@ -136,9 +136,9 @@ class Override(CountedObj): return '%s_%d(%s)' % (self.__class__.__name__, self.ctr, ', '.join( ['%s=%r' % (k, v) for k, v in sorted(self.kwds.items())])) - def apply(self, paramobj): - if isinstance(paramobj, Parameter): - props = paramobj.__dict__.copy() + def apply(self, obj): + if isinstance(obj, CountedObj): + props = obj.__dict__.copy() for k, v in self.kwds.items(): if k in props: props[k] = v @@ -147,11 +147,11 @@ class Override(CountedObj): "Can not apply Override(%s=%r) to %r: non-existing property!" % (k, v, props)) props['ctr'] = self.ctr - return Parameter(**props) + return type(obj)(**props) else: raise ProgrammingError( "Overrides can only be applied to Parameter's, %r is none!" % - paramobj) + obj) class Command(CountedObj): diff --git a/secop_demo/cryo.py b/secop_demo/cryo.py index 68168e4..c573f9e 100644 --- a/secop_demo/cryo.py +++ b/secop_demo/cryo.py @@ -28,7 +28,7 @@ from math import atan from secop.datatypes import EnumType, FloatRange, TupleOf from secop.lib import clamp, mkthread -from secop.modules import Command, Drivable, Parameter +from secop.modules import Drivable, Parameter, Override class CryoBase(Drivable): @@ -75,11 +75,11 @@ class Cryostat(CryoBase): datatype=FloatRange(0), default=0, unit="W", group='heater_settings', ), - target=Parameter("target temperature", + target=Override("target temperature", datatype=FloatRange(0), default=0, unit="K", readonly=False, ), - value=Parameter("regulation temperature", + value=Override("regulation temperature", datatype=FloatRange(0), default=0, unit="K", ), pid=Parameter("regulation coefficients", @@ -105,7 +105,7 @@ class Cryostat(CryoBase): default='ramp', readonly=False, ), - pollinterval=Parameter("polling interval", + pollinterval=Override("polling interval", datatype=FloatRange(0), default=5, ), tolerance=Parameter("temperature range for stability checking", @@ -125,10 +125,8 @@ class Cryostat(CryoBase): ), ) commands = dict( - stop=Command( - "Stop ramping the setpoint\n\nby setting the current setpoint as new target", - None, - None), + stop=Override( + "Stop ramping the setpoint\n\nby setting the current setpoint as new target"), ) def init_module(self):