Path 1: 21 calls (0.55)

PyLinter (20) _CustomPyLinter (1)

defaultdict (21)

1def _merge_mapreduce_data(
2    linter: PyLinter,
3    all_mapreduce_data: defaultdict[int, list[defaultdict[str, list[Any]]]],
4) -> None:
5    """Merges map/reduce data across workers, invoking relevant APIs on checkers."""
6    # First collate the data and prepare it, so we can send it to the checkers for
7    # validation. The intent here is to collect all the mapreduce data for all checker-
8    # runs across processes - that will then be passed to a static method on the
9    # checkers to be reduced and further processed.
10    collated_map_reduce_data: defaultdict[str, list[Any]] = defaultdict(list)
11    for linter_data in all_mapreduce_data.values():
12        for run_data in linter_data:
13            for checker_name, data in run_data.items():
14                collated_map_reduce_data[checker_name].extend(data)
15
16    # Send the data to checkers that support/require consolidated data
17    original_checkers = linter.get_checkers()
18    for checker in original_checkers:
19        if checker.name in collated_map_reduce_data:
20            # Assume that if the check has returned map/reduce data that it has the
21            # reducer function
22            checker.reduce_map_data(linter, collated_map_reduce_data[checker.name])
            

Path 2: 16 calls (0.42)

PyLinter (16)

defaultdict (16)

1def _merge_mapreduce_data(
2    linter: PyLinter,
3    all_mapreduce_data: defaultdict[int, list[defaultdict[str, list[Any]]]],
4) -> None:
5    """Merges map/reduce data across workers, invoking relevant APIs on checkers."""
6    # First collate the data and prepare it, so we can send it to the checkers for
7    # validation. The intent here is to collect all the mapreduce data for all checker-
8    # runs across processes - that will then be passed to a static method on the
9    # checkers to be reduced and further processed.
10    collated_map_reduce_data: defaultdict[str, list[Any]] = defaultdict(list)
11    for linter_data in all_mapreduce_data.values():
12        for run_data in linter_data:
13            for checker_name, data in run_data.items():
14                collated_map_reduce_data[checker_name].extend(data)
15
16    # Send the data to checkers that support/require consolidated data
17    original_checkers = linter.get_checkers()
18    for checker in original_checkers:
19        if checker.name in collated_map_reduce_data:
20            # Assume that if the check has returned map/reduce data that it has the
21            # reducer function
22            checker.reduce_map_data(linter, collated_map_reduce_data[checker.name])
            

Path 3: 1 calls (0.03)

PyLinter (1)

defaultdict (1)

1def _merge_mapreduce_data(
2    linter: PyLinter,
3    all_mapreduce_data: defaultdict[int, list[defaultdict[str, list[Any]]]],
4) -> None:
5    """Merges map/reduce data across workers, invoking relevant APIs on checkers."""
6    # First collate the data and prepare it, so we can send it to the checkers for
7    # validation. The intent here is to collect all the mapreduce data for all checker-
8    # runs across processes - that will then be passed to a static method on the
9    # checkers to be reduced and further processed.
10    collated_map_reduce_data: defaultdict[str, list[Any]] = defaultdict(list)
11    for linter_data in all_mapreduce_data.values():
12        for run_data in linter_data:
13            for checker_name, data in run_data.items():
14                collated_map_reduce_data[checker_name].extend(data)
15
16    # Send the data to checkers that support/require consolidated data
17    original_checkers = linter.get_checkers()
18    for checker in original_checkers:
19        if checker.name in collated_map_reduce_data:
20            # Assume that if the check has returned map/reduce data that it has the
21            # reducer function
22            checker.reduce_map_data(linter, collated_map_reduce_data[checker.name])