| |
| |
| from typing import List |
|
|
|
|
| def format_args(args: List[str]): |
| clean_args = [] |
| for arg in args: |
| if not (arg.startswith('-') or arg.startswith('--')): |
| clean_args.append(arg) |
| else: |
| arg = arg.lstrip('-').lstrip('-') |
| clean_args.extend(arg.split('=')) |
| return clean_args |
|
|
|
|
| def get_parent_dict(config: dict, key: str): |
| key_each_depth = key.split('.') |
| for k in key_each_depth[:-1]: |
| if k not in config: |
| raise KeyError(f'Path key {key} not in the dict') |
| config = config[k] |
| return config, key_each_depth[-1] |
|
|
|
|
| def overwrite_values(config, args): |
| args = format_args(args) |
| keys, values = args[0::2], args[1::2] |
| for key, value in zip(keys, values): |
| parent, last_key = get_parent_dict(config, key) |
| ori_value = parent[last_key] |
| parent[last_key] = type(ori_value)(value) |
| return config |
|
|