fix some remaining py3 incompatibilites

- None <= 0  is invalid in py3
- restrict BLOBType to bytes (may be changed after migration to py3)
- remove long
- use list(<dict>.items()) when dict is changed within loop
- allow initialization of properties in HasProperties without
  supercall to base class
- <dict>.values() can not be indexed
- adapted/removed various tests. additional tests might be added
  after definitive migration to py3

after this change, all the tests run with py3, also secop-server and
secop-gui were tested with an example, but other code might still contain
py3 incompatibilities

Change-Id: I881c6972aeabb8494a21a6cbc7ffeddfd4f5d4f8
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/21306
Tested-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Bjoern Pedersen <bjoern.pedersen@frm2.tum.de>
This commit is contained in:
2019-09-25 08:45:42 +02:00
committed by Enrico Faulhaber
parent 874faf695f
commit 04032079d7
8 changed files with 42 additions and 45 deletions

View File

@ -48,7 +48,7 @@ class Property(object):
self.description = description
self.default = datatype.default if default is None else datatype(default)
self.datatype = datatype
self.extname = unicode(extname)
self.extname = extname
self.export = export or bool(extname)
self.mandatory = mandatory or (default is None and not isinstance(datatype, ValueType))
self.settable = settable or mandatory # settable means settable from the cfg file
@ -121,8 +121,9 @@ class PropertyMeta(type):
class HasProperties(object):
properties = {}
def __init__(self, *args):
super(HasProperties, self).__init__()
def __init__(self, supercall_init=True):
if supercall_init:
super(HasProperties, self).__init__()
# store property values in the instance, keep descriptors on the class
self.properties = {}
# pre-init with properties default value (if any)