class Action:
    def name(self):
        return "markers"

    def workload_type(self):
        return None

    def metric_names(self):
        return ()

    def rule_results_as_dicts(self):
        return ()

    def source_files(self):
        return {}

    def source_markers(self):
        return [
            {"source_address": 1, "message": "first"},
            {"source_address": 2, "message": "second"},
        ]

    def source_info(self, address):
        return {"line": address}

    def sass_by_pc(self, address):
        return {"sass": address}

    def ptx_by_pc(self, address):
        return {"ptx": address}


class Range:
    def num_actions(self):
        return 1

    def action_by_idx(self, index):
        return Action()


class Report:
    def get_version(self):
        return "2099.1"

    def num_ranges(self):
        return 1

    def range_by_idx(self, index):
        return Range()


def load_report(path):
    return Report()
