removed old style syntax

- removed secop/metaclass.py
- moved code from ModuleMeta to modules.HasAccessibles.__init_subclass__
- reworked properties:
  assignment obj.property = value now always allowed
- reworked Parameters and Command to be true descriptors
- Command must now be solely used as decorator
- renamed 'usercommand' to 'Command'
- command methods no longer start with 'do_'
- reworked mechanism to determine accessible order:
  the attribute paramOrder, if given, determines order of accessibles
+ fixed some issues makeing the IDE more happy
+ simplified code for StatusType and added a test for it

Change-Id: I8045cf38ee6f4d4862428272df0b12a7c8abaca7
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/25049
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
This commit is contained in:
2021-02-12 18:37:04 +01:00
parent f9a2152883
commit 07b758c3dd
34 changed files with 1678 additions and 1978 deletions

View File

@ -58,20 +58,20 @@ except ImportError:
class EpicsReadable(Readable):
"""EpicsDrivable handles a Drivable interfacing to EPICS v4"""
# Commmon parameter for all EPICS devices
parameters = {
'value': Parameter('EPICS generic value',
datatype=FloatRange(),
default=300.0,),
'epics_version': Parameter("EPICS version used, v3 or v4",
datatype=EnumType(v3=3, v4=4),),
# 'private' parameters: not remotely accessible
'value_pv': Parameter('EPICS pv_name of value',
datatype=StringType(),
default="unset", export=False),
'status_pv': Parameter('EPICS pv_name of status',
datatype=StringType(),
default="unset", export=False),
}
# parameters
value = Parameter('EPICS generic value',
datatype=FloatRange(),
default=300.0,)
epics_version = Parameter("EPICS version used, v3 or v4",
datatype=EnumType(v3=3, v4=4),)
value_pv = Parameter('EPICS pv_name of value',
datatype=StringType(),
default="unset", export=False)
status_pv = Parameter('EPICS pv_name of status',
datatype=StringType(),
default="unset", export=False)
# Generic read and write functions
def _read_pv(self, pv_name):
@ -118,21 +118,21 @@ class EpicsReadable(Readable):
class EpicsDrivable(Drivable):
"""EpicsDrivable handles a Drivable interfacing to EPICS v4"""
# Commmon parameter for all EPICS devices
parameters = {
'target': Parameter('EPICS generic target', datatype=FloatRange(),
default=300.0, readonly=False),
'value': Parameter('EPICS generic value', datatype=FloatRange(),
default=300.0,),
'epics_version': Parameter("EPICS version used, v3 or v4",
datatype=StringType(),),
# 'private' parameters: not remotely accessible
'target_pv': Parameter('EPICS pv_name of target', datatype=StringType(),
default="unset", export=False),
'value_pv': Parameter('EPICS pv_name of value', datatype=StringType(),
default="unset", export=False),
'status_pv': Parameter('EPICS pv_name of status', datatype=StringType(),
default="unset", export=False),
}
# parameters
target = Parameter('EPICS generic target', datatype=FloatRange(),
default=300.0, readonly=False)
value = Parameter('EPICS generic value', datatype=FloatRange(),
default=300.0,)
epics_version = Parameter("EPICS version used, v3 or v4",
datatype=StringType(),)
target_pv = Parameter('EPICS pv_name of target', datatype=StringType(),
default="unset", export=False)
value_pv = Parameter('EPICS pv_name of value', datatype=StringType(),
default="unset", export=False)
status_pv = Parameter('EPICS pv_name of status', datatype=StringType(),
default="unset", export=False)
# Generic read and write functions
def _read_pv(self, pv_name):
@ -191,17 +191,16 @@ class EpicsDrivable(Drivable):
class EpicsTempCtrl(EpicsDrivable):
parameters = {
# TODO: restrict possible values with oneof datatype
'heaterrange': Parameter('Heater range', datatype=StringType(),
default='Off', readonly=False,),
'tolerance': Parameter('allowed deviation between value and target',
datatype=FloatRange(1e-6, 1e6), default=0.1,
readonly=False,),
# 'private' parameters: not remotely accessible
'heaterrange_pv': Parameter('EPICS pv_name of heater range',
datatype=StringType(), default="unset", export=False,),
}
# parameters
heaterrange = Parameter('Heater range', datatype=StringType(),
default='Off', readonly=False,)
tolerance = Parameter('allowed deviation between value and target',
datatype=FloatRange(1e-6, 1e6), default=0.1,
readonly=False,)
heaterrange_pv = Parameter('EPICS pv_name of heater range',
datatype=StringType(), default="unset", export=False,)
def read_target(self):
return self._read_pv(self.target_pv)