diff --git a/segpy/packer.py b/segpy/packer.py index e0bbd93..b266470 100644 --- a/segpy/packer.py +++ b/segpy/packer.py @@ -123,6 +123,8 @@ class HeaderPacker: header_format_class.LENGTH_IN_BYTES, endian) self._struct = Struct(self._format) + self._one_to_one = all(len(fields) == 1 for fields in self._field_name_allocations) + pass @property def header_format_class(self): @@ -151,11 +153,14 @@ class HeaderPacker: """ values = self._struct.unpack(buffer) - kwargs = {name: value - for names, value in zip(self._field_name_allocations, values) - for name in names} + if self._one_to_one: + return self._header_format_class(*values) + else: + kwargs = {name: value + for names, value in zip(self._field_name_allocations, values) + for name in names} - return self._header_format_class(**kwargs) + return self._header_format_class(**kwargs) def __repr__(self): return "{}({})".format(