def METHOD_NAME(path: str) -> Iterable[dict[str, str]]:
    with open(path, encoding='utf-8', errors='ignore') as f:
        current_data: dict[str, str] = {}
        last_key = None
        for line in f:
            line = line.rstrip('\n')
            # empty line, yield ready package
            if line == '':
                if not current_data:
                    continue  # may happen on empty package list
                yield current_data
                current_data = {}
                last_key = None
                continue
            # key - value pair
            match = _DEBIAN_KEYVAL_RE.fullmatch(line)
            if match:
                key = match.group(1)
                value = match.group(2).strip()
                current_data[key] = value
                last_key = key
                continue
            # continuation of previous key
            if line.startswith(' '):
                if last_key is None:
                    raise RuntimeError('unable to parse line: {}'.format(line))
                current_data[last_key] += line.strip()
                continue
            raise RuntimeError('unable to parse line: {}'.format(line))