From 0403e7136ff37b2f5bacc24bea4e7c85c22f50c3 Mon Sep 17 00:00:00 2001 From: Ryan Fox Date: Tue, 15 Dec 2015 21:18:20 -0500 Subject: [PATCH 1/2] Pass setval calls through SubstructureField to the contained Structure. If the value is a Structure, then replace the contained one. --- suitcase/fields.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/suitcase/fields.py b/suitcase/fields.py index 3463979..c5bdbf3 100644 --- a/suitcase/fields.py +++ b/suitcase/fields.py @@ -8,6 +8,7 @@ import six from suitcase.exceptions import SuitcaseChecksumException, SuitcaseProgrammingError, \ SuitcaseParseError, SuitcaseException, SuitcasePackStructException +import suitcase from six import BytesIO, StringIO @@ -831,6 +832,12 @@ def unpack(self, data, **kwargs): self._value = self.substructure() return self._value.unpack(data, **kwargs) + def setval(self, value): + if isinstance(value, suitcase.structure.Structure): + BaseField.setval(self, value) + else: + self._value.setval(value) + class FieldArray(BaseField): """Field which contains a list of some other field. From 5421adc97f9828b7853659a95f53e03ca34e76cb Mon Sep 17 00:00:00 2001 From: Ryan Fox Date: Wed, 16 Dec 2015 17:47:44 -0500 Subject: [PATCH 2/2] Handle None as a Structure assignment to align with the original behaviour. --- suitcase/fields.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/suitcase/fields.py b/suitcase/fields.py index c5bdbf3..6727c92 100644 --- a/suitcase/fields.py +++ b/suitcase/fields.py @@ -833,7 +833,7 @@ def unpack(self, data, **kwargs): return self._value.unpack(data, **kwargs) def setval(self, value): - if isinstance(value, suitcase.structure.Structure): + if value is None or isinstance(value, suitcase.structure.Structure): BaseField.setval(self, value) else: self._value.setval(value)