def _merge_results()

in src/evaluate/module.py [0:0]


    def _merge_results(self, results):
        merged_results = {}
        results_keys = list(itertools.chain.from_iterable([r.keys() for r in results]))
        duplicate_keys = {item for item, count in collections.Counter(results_keys).items() if count > 1}

        duplicate_names = [
            item for item, count in collections.Counter(self.evaluation_module_names).items() if count > 1
        ]
        duplicate_counter = {name: 0 for name in duplicate_names}

        for module_name, result in zip(self.evaluation_module_names, results):
            for k, v in result.items():
                if k not in duplicate_keys and not self.force_prefix:
                    merged_results[f"{k}"] = v
                elif module_name in duplicate_counter:
                    merged_results[f"{module_name}_{duplicate_counter[module_name]}_{k}"] = v
                else:
                    merged_results[f"{module_name}_{k}"] = v

            if module_name in duplicate_counter:
                duplicate_counter[module_name] += 1

        return merged_results