diff options
author | Daniel Friesel <daniel.friesel@uos.de> | 2022-09-23 12:54:59 +0200 |
---|---|---|
committer | Daniel Friesel <daniel.friesel@uos.de> | 2022-09-23 12:54:59 +0200 |
commit | 8d96626746a00eaea7fcf3c45229022910c74470 (patch) | |
tree | e11e52ae364d647fca93f80bd46fbe5e4135aac3 | |
parent | 553bb7d218ffa2b7214423388f3b33c72b469418 (diff) |
ignore_param: work on by_name rather than observations
-rwxr-xr-x | bin/analyze-kconfig.py | 6 | ||||
-rw-r--r-- | lib/utils.py | 28 |
2 files changed, 23 insertions, 11 deletions
diff --git a/bin/analyze-kconfig.py b/bin/analyze-kconfig.py index d13e842..deee110 100755 --- a/bin/analyze-kconfig.py +++ b/bin/analyze-kconfig.py @@ -265,15 +265,15 @@ def main(): if args.boolean_parameters: dfatool.utils.observations_enum_to_bool(observations, kconfig=True) - if args.ignore_param: - dfatool.utils.observations_ignore_param(observations, args.ignore_param) - if args.param_shift: param_shift = dfatool.cli.parse_param_shift(args.param_shift) dfatool.utils.shift_param_in_observations(observations, param_shift) by_name, parameter_names = dfatool.utils.observations_to_by_name(observations) + if args.ignore_param: + dfatool.utils.ignore_param(by_name, parameter_names, args.ignore_param) + # Release memory del observations diff --git a/lib/utils.py b/lib/utils.py index 9914862..f81f8ff 100644 --- a/lib/utils.py +++ b/lib/utils.py @@ -302,14 +302,26 @@ def observations_enum_to_bool(observations: list, kconfig=False): binary_keys.add(binary_key) -def observations_ignore_param(observations: list, ignored_parameters: list) -> list: - unpoppable_params = set() - for observation in observations: - for ignored_parameter in ignored_parameters: - try: - observation["param"].pop(ignored_parameter) - except KeyError: - unpoppable_params.add(ignored_parameter) +def ignore_param(by_name: dict, parameter_names: list, ignored_parameters: list): + ignored_indexes = list() + unpoppable_params = list() + for param_name in sorted(ignored_parameters): + try: + ignored_indexes.append(parameter_names.index(param_name)) + except ValueError: + unpoppable_params.append(param_name) + + assert ignored_indexes == sorted(ignored_indexes) + ignored_indexes = sorted(ignored_indexes, reverse=True) + + for name in by_name: + for param in by_name[name]["param"]: + for ignored_index in ignored_indexes: + param.pop(ignored_index) + + for ignored_index in ignored_indexes: + parameter_names.pop(ignored_index) + if unpoppable_params: logger.info( f"ignore_param: Parameters {unpoppable_params} were not part of the observations to begin with" |