def getBestLoadRecipeChoices(labelPath, troveTups):
    scores = [ (_scoreLoadRecipeChoice(labelPath, x[1]), x) for x in troveTups ]
    maxScore = max(scores)[0]
    troveTups = [x for x in scores if x[0] == maxScore ]

    if len(troveTups) <= 1:
        return [x[1] for x in troveTups]
    else:
        byBranch = {}
        for score, troveTup in troveTups:
            branch = troveTup[1].branch()
            if branch in byBranch:
                byBranch[branch] = max(byBranch[branch], (score, troveTup))
            else:
                byBranch[branch] = (score, troveTup)
        return [x[1] for x in byBranch.itervalues()]
Parse a line from the final output of this MRJob into
dataset/ETHPy150Open sassoftware/conary/conary/build/loadrecipe.py/getBestLoadRecipeChoices--crossover with--dataset/ETHPy150Open Yelp/mrjob/mrjob/job.py/MRJob.parse_output_line