def read_hpvm_configs(config_file: PathLike) -> Tuple[(str, List[Config])]:
    ret_configs = []
    with open(config_file) as f:
        text = f.read()
    (header, *configs) = text.split(conf_opening)
    header = header.strip()
    for config_text in configs:
        config_text = config_text.replace(conf_closing, '').strip()
        (config_header, *config_body) = config_text.splitlines()
        (conf_name, *number_fields) = config_header.split(' ')
        (speedup, energy, qos, qos_drop) = [float(s) for s in number_fields]
        ret_configs.append(Config(conf_name, speedup, energy, qos, qos_drop, config_body))
    return (header, ret_configs)
def read_hpvm_configs(config_file: PathLike) -> Tuple[(str, List[Config])]:
    ret_configs = []
    with open(config_file) as f:
        text = f.read()
    (header, *configs) = text.split(conf_opening)
    header = header.strip()
    for config_text in configs:
        config_text = config_text.replace(conf_closing, ).strip()
        (config_header, *config_body) = config_text.splitlines()
        (conf_name, *number_fields) = config_header.split(' ')
        (speedup, energy, qos, qos_drop) = [float(s) for s in number_fields]
        ret_configs.append(Config(conf_name, speedup, energy, qos, qos_drop, config_body))
    return (header, ret_configs)