code: def _parse_device_information(device_info_string) -> dict:
      '''
      Parse the mag-deck's device information response.
      Example response from temp-deck: "serial:aa11 model:bb22 version:cc33"
      '''
      error_msg = 'Unexpected argument to _parse_device_information: {}'.format(
          device_info_string)
      if not device_info_string or \
              not isinstance(device_info_string, str):
          raise ParseError(error_msg)
      parsed_values = device_info_string.strip().split(' ')
      if len(parsed_values) < 3:
          log.error(error_msg)
          raise ParseError(error_msg)
      res = {
          _parse_key_from_substring(s): _parse_string_value_from_substring(s)
          for s in parsed_values[:3]
      }
      for key in ['model', 'version', 'serial']:
          if key not in res:
              raise ParseError(error_msg)
      return ref _parse_device_information(device_info_string) -> dict:
      '''
      Parse the mag-deck's device information response.
      Example response from temp-deck: "serial:aa11 model:bb22 version:cc33"
      '''
      error_msg = 'Unexpected argument to _parse_device_information: {}'.format(
          device_info_string)
      if not device_info_string or \
              not isinstance(device_info_string, str):
          raise ParseError(error_msg)
      parsed_values = device_info_string.strip().split(' ')
      if len(parsed_values) < 3:
          log.error(error_msg)
          raise ParseError(error_msg)
      res = {
          _parse_key_from_substring(s): _parse_string_value_from_substring(s)
          for s in parsed_values[:3]
      }
      for key in ['model', 'version', 'serial']:
          if key not in res:
              raise ParseError(error_msg)
      return res
docs: Parse the mag-deck's device information response.
      Example response from temp-deck: "serial:aa11 model:bb22 version:cc33"