msg = ("Collected the following plans for generating {!r} from {!r}:\n\t{}"
.format(product_type.__name__,
subject,
"\n\t".join(str(p.func_or_task_type.value)for p in plans)))
super(ConflictingProducersError, self).__init__(msg)
After Change
def __init__(self, subject, product, matches):
msgs = "\n ".join("{}: {}".format(k, v) for k, v in matches.items())
msg = "More than one source of {} for {}:\n {}".format(product.__name__, subject, msgs)
super(ConflictingProducersError, self).__init__(msg)