diff --git a/secop/lib/__init__.py b/secop/lib/__init__.py index 736b304..b1d86fa 100644 --- a/secop/lib/__init__.py +++ b/secop/lib/__init__.py @@ -36,16 +36,16 @@ import unicodedata from os import path -repodir = path.abspath(path.join(path.dirname(__file__), '..', '..')) +repodir = path.abspath(path.join(path.dirname(__file__), u'..', u'..')) CONFIG = { - 'piddir': os.path.join(repodir, 'pid'), - 'logdir': os.path.join(repodir, 'log'), - 'confdir': os.path.join(repodir, 'etc'), -} if os.path.exists(os.path.join(repodir, '.git')) else { - 'piddir': '/var/run/secop', - 'logdir': '/var/log', - 'confdir': '/etc/secop', + u'piddir': os.path.join(repodir, u'pid'), + u'logdir': os.path.join(repodir, u'log'), + u'confdir': os.path.join(repodir, u'etc'), +} if os.path.exists(os.path.join(repodir, u'.git')) else { + u'piddir': u'/var/run/secop', + u'logdir': u'/var/log', + u'confdir': u'/etc/secop', } diff --git a/secop/modules.py b/secop/modules.py index afec2c4..8780558 100644 --- a/secop/modules.py +++ b/secop/modules.py @@ -180,7 +180,9 @@ class Module(object): # (self.name, k, e)) # note: this will call write_* methods which will # write to the hardware, if possible! - setattr(self, k, v) + if k != u'value': + setattr(self, k, v) + cfgdict.pop(k) # Adopt units AFTER applying the cfgdict for k, v in self.accessibles.items(): diff --git a/secop/protocol/dispatcher.py b/secop/protocol/dispatcher.py index 9005968..4ac4d6a 100644 --- a/secop/protocol/dispatcher.py +++ b/secop/protocol/dispatcher.py @@ -73,6 +73,7 @@ class Dispatcher(object): # active (i.e. broadcast-receiving) connections self._active_connections = set() # map eventname -> list of subscribed connections + # eventname is or : self._subscriptions = {} self._lock = threading.RLock() @@ -178,10 +179,9 @@ class Dispatcher(object): mod_desc[propname] = prop result[u'modules'].extend([modulename, mod_desc]) result[u'equipment_id'] = self.equipment_id - result[u'firmware'] = u'The SECoP playground' - result[u'version'] = u'2017.07' + result[u'firmware'] = u'FRAPPY - The Python Framework for SECoP' + result[u'version'] = u'2018.09' result.update(self.nodeopts) - # XXX: what else? return result def _execute_command(self, modulename, command, arguments=None): diff --git a/secop/server.py b/secop/server.py index 66fe208..0d3dfc6 100644 --- a/secop/server.py +++ b/secop/server.py @@ -61,7 +61,7 @@ class Server(object): name.endswith('.cfg'): self._cfgfile = name self._pidfile = os.path.join(cfg[u'piddir'], - name[:-4].replace(os.path.sep, '_') + u'.pid') + name[:-4].replace(os.path.sep, u'_') + u'.pid') name = os.path.basename(name[:-4]) else: self._cfgfile = os.path.join(cfg[u'confdir'], name + u'.cfg') diff --git a/secop_demo/test.py b/secop_demo/test.py index 5d26073..72a0991 100644 --- a/secop_demo/test.py +++ b/secop_demo/test.py @@ -20,6 +20,13 @@ # ***************************************************************************** """testing devices""" +try: + # py2 + unicode +except NameError: + # py3 + unicode = str # pylint: disable=redefined-builtin + import random from secop.modules import Readable, Drivable, Communicator, Parameter @@ -89,4 +96,4 @@ class Temp(Drivable): class Lower(Communicator): """Communicator returning a lowercase version of the request""" def do_communicate(self, request): - return str(request).lower() + return unicode(request).lower()