docs: def _read_version(material_description_bytes):
      # type: (io.BytesIO) -> None
      """Read the version from the serialized material description and raise an error if it is unknown.
  
      :param material_description_bytes: serializezd material description
      :type material_description_bytes: io.BytesIO
      :raises InvalidMaterialDescriptionError: if malformed version
      :raises InvalidMaterialDescriptionVersionError: if unknown version is found
      """
      try:
          (version,) = unpack_value(">4s", material_description_bytes)
      except struct.error:
          message = "Malformed material description version"
          _LOGGER.exception(message)
          raise InvalidMaterialDescriptionError(message)
      if version != _MATERIAL_DESCRIPTION_VERSION:
          raise InvalidMaterialDescriptionVersionError("Invalid material description version: {}".format(repr(version)))