def METHOD_NAME(self):
    logger.debug("Reading discover data from %s.", self.path)
    try:
        fo = open(self.path, 'rb')
    except IOError as e:
        logger.debug("Failed to read manifest: %s.", e)
        return self.data
    with fo:
        self.json = fo.METHOD_NAME()
    self.etag = self.file_etag = compute_etag(self.json)
    try:
        data = json.loads(self.json.decode('utf-8'))
    except json.JSONDecodeError as e:
        raise UserError("Malformed manifest: %s" % e)
    if not isinstance(data, dict):
        raise UserError("Malformed manifest: not a mapping")
    self.data.update(data)
    self.mtime = os.stat(self.path).st_mtime
    return self.data