+ def _set_value(self, values):
+ original_length_field = self.length_field
+ if original_length_field is not None:
+ original_values = self._value
+
+ if len(values) != self.length_field:
+ if self.length_field is not None:
+ length_ft = self.length_field.field_type
+ else:
+ length_ft = bt2.IntegerFieldType(size=64, is_signed=False)
+ self.length_field = length_ft(len(values))
+
+ try:
+ for index, value in enumerate(values):
+ if value is not None:
+ self[index].value = value
+ else:
+ self[index].reset()
+ except:
+ if original_length_field is not None:
+ self.length_field = original_length_field
+ self.value = original_values
+ else:
+ self.reset()
+ raise
+
+ value = property(fset=_set_value)