diff --git a/doc/revpimodio2.device.html b/doc/revpimodio2.device.html index 278215b..5ca0a6f 100644 --- a/doc/revpimodio2.device.html +++ b/doc/revpimodio2.device.html @@ -788,13 +788,16 @@ True, wenn Device vorhanden

DeviceList.__delattr__

-__delattr__(key) +__delattr__(key, delcomplete=True)

Entfernt angegebenes Device.

key
Device zum entfernen +
delcomplete
+
+Wenn True wird Device komplett entfernt

diff --git a/revpimodio2.e4p b/revpimodio2.e4p index 0d6bbb2..69e2cb4 100644 --- a/revpimodio2.e4p +++ b/revpimodio2.e4p @@ -1,7 +1,7 @@ - + en_US @@ -354,7 +354,7 @@ ExcludeFiles - */test/*,*/setup.py + */test/*,*/setup.py,*/test_unit.py diff --git a/revpimodio2/device.py b/revpimodio2/device.py index e039eec..11a0ea1 100644 --- a/revpimodio2/device.py +++ b/revpimodio2/device.py @@ -29,23 +29,35 @@ class DeviceList(object): else: return key in self.__dict_position.values() - def __delattr__(self, key): + def __delattr__(self, key, delcomplete=True): """Entfernt angegebenes Device. - @param key Device zum entfernen""" - dev_del = getattr(self, key) + @param key Device zum entfernen + @param delcomplete Wenn True wird Device komplett entfernt""" + if delcomplete: + # Device finden + if type(key) == int: + dev_del = self.__dict_position[key] + key = dev_del._name + else: + dev_del = getattr(self, key) - # Reinigungsjobs - dev_del.autorefresh(False) - for io in dev_del: - delattr(dev_del._modio.io, io._name) + # Reinigungsjobs + dev_del.autorefresh(False) + for io in dev_del: + delattr(dev_del._modio.io, io._name) - del self.__dict_position[dev_del._position] - object.__delattr__(self, key) + # Device aus dict löschen + del self.__dict_position[dev_del._position] + + if hasattr(self, key): + object.__delattr__(self, key) def __delitem__(self, key): """Entfernt Device an angegebener Position. @param key Deviceposition zum entfernen""" - self.__delattr__(self[key]._name) + if issubclass(type(key), Device): + key = key._position + self.__delattr__(key) def __getitem__(self, key): """Gibt angegebenes Device zurueck. diff --git a/revpimodio2/io.py b/revpimodio2/io.py index 833e9de..c7a6a0f 100644 --- a/revpimodio2/io.py +++ b/revpimodio2/io.py @@ -674,7 +674,19 @@ class IOBase(object): self._parentdevice._position, self._parentdevice._name ) ) - + if not (RISING <= edge <= BOTH): + raise AttributeError( + "parameter 'edge' must be revpimodio2.RISING, " + "revpimodio2.FALLING or revpimodio2.BOTH" + ) + if not (exitevent is None or type(exitevent) == Event): + raise AttributeError( + "parameter 'exitevent' must be " + ) + if type(timeout) != int or timeout < 0: + raise AttributeError( + "parameter 'timeout' must be and greater than 0" + ) if edge != BOTH and self._bitaddress < 0: raise AttributeError( "parameter 'edge' can be used with bit Inputs only" diff --git a/revpimodio2/modio.py b/revpimodio2/modio.py index 8b60ea4..8aba70e 100644 --- a/revpimodio2/modio.py +++ b/revpimodio2/modio.py @@ -172,7 +172,7 @@ class RevPiModIO(object): else: # Device-Type nicht gefunden warnings.warn( - "device type {} unknown", + "device type '{}' unknown".format(device["type"]), Warning ) dev_new = None @@ -193,7 +193,7 @@ class RevPiModIO(object): # Namenszugriff zerstören, wenn doppelte Namen vorhanden sind for errdev in err_names: - delattr(self.device, errdev) + self.device.__delattr__(errdev, False) warnings.warn( "equal device name in pictory configuration. can not " "build device to access by name. you can access all devices " @@ -364,6 +364,7 @@ class RevPiModIO(object): self._imgwriter.refresh = cycletime # Cycleloop starten + self._exit.clear() self._looprunning = True cycleinfo = helpermodule.Cycletools(self._imgwriter.refresh) ec = None