X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=blobdiff_plain;f=bindings%2Fpython%2Fbt2%2Fbt2%2Ffields.py;h=13c6a68335393c200f6f473b4189ef326f486b35;hp=44d6a386ad847a1f6ad62745e134e0ab414406ad;hb=d56970826b55a97233df4ce54a19ecfda4f8c52e;hpb=a745c3318fc9dc8279ba613406d9a37ac46aa080 diff --git a/bindings/python/bt2/bt2/fields.py b/bindings/python/bt2/bt2/fields.py index 44d6a386..13c6a683 100644 --- a/bindings/python/bt2/bt2/fields.py +++ b/bindings/python/bt2/bt2/fields.py @@ -483,6 +483,18 @@ class _StructureField(_ContainerField, collections.abc.MutableMapping): return True + @property + def value(self): + return {key: field.value for key, field in self.items()} + + @value.setter + def value(self, values): + if not hasattr(type(values), '__getitem__'): + raise TypeError('expecting a Mapping collection') + + for key, value in values.items(): + self[key].value = value + class _VariantField(_Field): _NAME = 'Variant' @@ -571,6 +583,21 @@ class _ArraySequenceField(_ContainerField, collections.abc.MutableSequence): return True + @property + def value(self): + return [field.value for field in self] + + @value.setter + def value(self, values): + if not hasattr(type(values), '__iter__'): + raise TypeError('expecting an iterable container (Sequence)') + + if len(self) != len(values): + raise ValueError('expected length of value and field to match') + + for index, value in enumerate(values): + self[index].value = value + class _ArrayField(_ArraySequenceField): _NAME = 'Array'