From 1146fccfe66cd92865d8e7c8a24d12f645de3922 Mon Sep 17 00:00:00 2001 From: Sven Sager Date: Tue, 10 May 2022 11:10:03 +0200 Subject: [PATCH] Object scan in MQTT server uses wrong name source, ignoring export flag The object scan to find IOs on core devices uses the `__slot__` attribute, which include very private objects. That objects are not accessible by `getattr` - Now we are using `dir()`. Missing objects from parent classes. Ignored the export flag from piCtory. closing #9 --- revpipyload/mqttserver.py | 7 +++++-- setup.py | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/revpipyload/mqttserver.py b/revpipyload/mqttserver.py index e91ef5e..4924943 100644 --- a/revpipyload/mqttserver.py +++ b/revpipyload/mqttserver.py @@ -167,9 +167,12 @@ class MqttServer(Thread): # CoreIOs prüfen und zu export hinzufügen lst_coreio = [] if self._rpi.core: - for obj_name in self._rpi.core.__slots__: + for obj_name in dir(self._rpi.core): + # Scan all non-private objects of the core device + if obj_name.find("_") == 0: + continue obj = getattr(self._rpi.core, obj_name) - if isinstance(obj, revpimodio2.io.IOBase): + if isinstance(obj, revpimodio2.io.IOBase) and obj.export: lst_coreio.append(obj) # IOs exportieren und Events anmelden diff --git a/setup.py b/setup.py index e5772b3..49e9028 100644 --- a/setup.py +++ b/setup.py @@ -27,7 +27,7 @@ setup( license="LGPLv3", name="revpipyload", - version="0.9.7", + version="0.9.7a", scripts=[ "data/revpipyload",