def get_labels()

in bugbug/models/tracking.py [0:0]


    def get_labels(self):
        classes = {}

        for bug_id, category in labels.get_labels("tracking"):
            assert category in ["True", "False"], f"unexpected category {category}"
            classes[int(bug_id)] = 1 if category == "True" else 0

        for bug_data in bugzilla.get_bugs():
            bug_id = int(bug_data["id"])

            flag_found = False
            tracking_flags = [
                flag
                for flag in bug_data.keys()
                if flag.startswith("cf_tracking_firefox")
            ]
            for tracking_flag in tracking_flags:
                if bug_data[tracking_flag] in ["blocking", "+"]:
                    classes[bug_id] = 1
                    flag_found = True
                elif bug_data[tracking_flag] == "-":
                    classes[bug_id] = 0
                    flag_found = True

            if not flag_found:
                for entry in bug_data["history"]:
                    for change in entry["changes"]:
                        if change["field_name"].startswith("cf_tracking_firefox"):
                            if change["added"] in ["blocking", "+"]:
                                classes[bug_id] = 1
                            elif change["added"] == "-":
                                classes[bug_id] = 0

            if bug_data["resolution"] in ["INVALID", "DUPLICATE"]:
                continue

            if bug_id not in classes:
                classes[bug_id] = 0

        return classes, [0, 1]