From 27b43ec21ac0dc6b9d30f7e58f26293a2f598b4c Mon Sep 17 00:00:00 2001 From: Joel Bender Date: Sun, 19 Nov 2017 18:33:15 -0500 Subject: [PATCH] extend arrays with default values for the subtype rather than None --- py25/bacpypes/constructeddata.py | 6 +++++- py25/bacpypes/object.py | 1 + py27/bacpypes/constructeddata.py | 6 +++++- py27/bacpypes/object.py | 1 + py34/bacpypes/constructeddata.py | 6 +++++- py34/bacpypes/object.py | 1 + 6 files changed, 18 insertions(+), 3 deletions(-) diff --git a/py25/bacpypes/constructeddata.py b/py25/bacpypes/constructeddata.py index 8efe58c..f06d2ee 100755 --- a/py25/bacpypes/constructeddata.py +++ b/py25/bacpypes/constructeddata.py @@ -575,7 +575,11 @@ def ArrayOf(klass): self.value = self.value[0:value + 1] elif value > self.value[0]: # extend - self.value.extend( [None] * (value - self.value[0]) ) + if issubclass(self.subtype, Atomic): + self.value.extend( [self.subtype().value] * (value - self.value[0]) ) + else: + for i in range(value - self.value[0]): + self.value.append(self.subtype()) else: return self.value[0] = value diff --git a/py25/bacpypes/object.py b/py25/bacpypes/object.py index 17538ce..1ec58d0 100755 --- a/py25/bacpypes/object.py +++ b/py25/bacpypes/object.py @@ -167,6 +167,7 @@ class Property(Logging): # get the value value = obj._values[self.identifier] + if _debug: Property._debug(" - value: %r", value) # access an array if arrayIndex is not None: diff --git a/py27/bacpypes/constructeddata.py b/py27/bacpypes/constructeddata.py index 823b348..88fe28d 100755 --- a/py27/bacpypes/constructeddata.py +++ b/py27/bacpypes/constructeddata.py @@ -573,7 +573,11 @@ def ArrayOf(klass): self.value = self.value[0:value + 1] elif value > self.value[0]: # extend - self.value.extend( [None] * (value - self.value[0]) ) + if issubclass(self.subtype, Atomic): + self.value.extend( [self.subtype().value] * (value - self.value[0]) ) + else: + for i in range(value - self.value[0]): + self.value.append(self.subtype()) else: return self.value[0] = value diff --git a/py27/bacpypes/object.py b/py27/bacpypes/object.py index 3964367..5d0706e 100755 --- a/py27/bacpypes/object.py +++ b/py27/bacpypes/object.py @@ -168,6 +168,7 @@ class Property: # get the value value = obj._values[self.identifier] + if _debug: Property._debug(" - value: %r", value) # access an array if arrayIndex is not None: diff --git a/py34/bacpypes/constructeddata.py b/py34/bacpypes/constructeddata.py index 263e00c..3890683 100755 --- a/py34/bacpypes/constructeddata.py +++ b/py34/bacpypes/constructeddata.py @@ -573,7 +573,11 @@ def ArrayOf(klass): self.value = self.value[0:value + 1] elif value > self.value[0]: # extend - self.value.extend( [None] * (value - self.value[0]) ) + if issubclass(self.subtype, Atomic): + self.value.extend( [self.subtype().value] * (value - self.value[0]) ) + else: + for i in range(value - self.value[0]): + self.value.append(self.subtype()) else: return self.value[0] = value diff --git a/py34/bacpypes/object.py b/py34/bacpypes/object.py index 8c9aeab..ec41daf 100755 --- a/py34/bacpypes/object.py +++ b/py34/bacpypes/object.py @@ -168,6 +168,7 @@ class Property: # get the value value = obj._values[self.identifier] + if _debug: Property._debug(" - value: %r", value) # access an array if arrayIndex is not None: