'Ask the user for a choice about tagging a single item. Returns
either an action constant or a TrackMatch object.'

def choose_item(self, task):

    print_()
    print_(displayable_path(task.item.path))
    (candidates, rec) = (task.candidates, task.rec)
    action = _summary_judgment(task.rec)
    if (action == importer.action.APPLY):
        match = candidates[0]
        show_item_change(task.item, match)
        return match
    elif (action is not None):
        return action
    while True:
        choices = self._get_choices(task)
        choice = choose_candidate(candidates, True, rec, item=task.item, choices=choices)
        if (choice in (importer.action.SKIP, importer.action.ASIS)):
            return choice
        elif (choice in choices):
            post_choice = choice.callback(self, task)
            if isinstance(post_choice, importer.action):
                return post_choice
            elif isinstance(post_choice, autotag.Proposal):
                candidates = post_choice.candidates
                rec = post_choice.recommendation
        else:
            assert isinstance(choice, autotag.TrackMatch)
            return choice
